Lezioni Anno Accademico 2018/19 I semestre

From Sistemi Operativi
Jump to navigation Jump to search

questa pagina serve per scrivere idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.

Lezione del 25 settembre 2018

Presentazione Corso

Introduzione generale sui concetti di:

  • Università
  • Informatica
  • hardware software
  • codice
  • rivoluzione digitale

Risorse del corso:

  • il docente: mailinglist-mail-ricevimento
  • la mailinglist
  • lezioni live (cercate davoli-live con un motore di ricerca e fate click su qui)
  • il sito web www.cs.unibo.it/~renzo/so
  • il wiki so.v2.cs.unibo.it
  • il bot so.cs.unibot
  • la macchina virtuale soho
  • i vostri sistemi BYOD (bring your own device)
  • i lab del dipartimento (ercolani+ranzani)

Cose da fare per gli studenti (compiti a casa):

  • avere account di laboratorio
  • avere un sistema GNU-Linux
  • creare i gruppi di laboratorio
  • iscriversi alla mailing list

Lezione del 27 settembre 2018

prima definizione di sistema operativo (astrazione-unificazione-gestione-controllo)

algoritmo - programma - processo

livelli - linguaggi - servizi - astrazioni

linguaggio = (alfabeto, lessico, sintassi, semantica)

UNIX: storia e principi costruttivi

Motivazioni del linguaggio C

C-toolchain (ed esempi di uso della shell UNIX).

Lezione del 2 ottobre 2018

Principi del linguaggio C.

Assegnati esercizi di lettura di programmi in C.

Esperimenti sulla portabilità dei compilatori.

Lezione del 9 ottobre 2018

Esercizi di lettura su puntatori e vettori e su puntatori a funzione unioni e strutture

mascheramento di bit

Introduzione ai sistemi di versioning (git) e ai sistemi di gestione delle compilazioni (cmake).

Lezione del 11 ottobre 2018

  • installazione di GNU-Linux
  • gruppi lab
  • UNIX: struttura standard del file system (ma cosa e' il file system: 3 definizioni)
  • user/group
  • tipi di file in UNIX

Lezione del 16 ottobre 2018

Programmazione in C:

-Utilizzo delle keyword Static/extern/auto/register
-Preprocessore, compilazione condizionale,inizializzazioni const

parametri a linea comando
link fisici e simbolici
processi: foreground/background
quoting

Lezione del 18 ottobre 2018

Ruoli delle persone in rapporto ai sistemi operativi: utenti, programmatori(applicazioni), programmatori (sistema), amministratori, sviluppatore kernel.

Librerie e System call. librerie statiche e dinamiche Libreria standard C (stdio, errno, string, stdlib-allocazione dinamica).

Lezione del 23 ottobre 2018

Il catalogo delle system call di UNIX...

  • File I/O
  • Device I/O
  • Memoria
  • Process mgmt
  • Networking
  • IPC


Ritorno alla teoria...

  • Breve storia dei sistemi anche operativi.
  • Richiami di architettura: von newmann, interrupt/trap DMA, gerarchia di memoria, cache...

Lezione del 25 ottobre 2018

Architettura

Macchina di von Neumann:

  • dati programma e istruzioni da eseguire sono nello stesso spazio di memoria
  • bus complesso di fili paralleli ai quali sono collegate le unità


Ciclo di CPU

fetch/decode/load operandi/execute/store (+controllo interrupt)

tipi di archihtetture

  • RISC, tutte le istruzioni hanno la stessa lunghezza
  • CISC, istruzione di lunghezza diversa, passate al livello microcodice

RISC più efficiente rispetto a CISC, ma per fare le stesse operazioni ha bisogno di più istruzioni

I modi del processore:

  • modo kernel: accesso completo a memoria e hardware
  • modo user: accesso solo alla sua memoria e a operazioni base

modalità controllata da un bit sulla CPU. nell'architettura intel i livelli di privilegi sono chiamati ring

Comunicazione coi controllori dei device

Interrupt

  • il ciclo di una istruzione ha una fase in più di controllo per gli interrupt ( Non viene mai interrotto il ciclo di una istruzione)
  • interrupt di priorità maggiore vengono eseguiti prima mascheramento degli interrupt (mono e multiprocessore)
  • cpu ha registro che consente di mascherarsi dagli interrupt


Senza interrupt = Polling

  • polling = azione ripetuta

(esempio dalla vita: quello che fanno i bambini in macchina: siamo arrivati? siamo arrivati?)

  • esempio prima degli interrupt: la cpu chiede al processo: hai finito? hai finito? prima o poi risponderà sì


DMA (Direct Memory Access).

  • Operazioni di buffer fatte dal controller
  • Migliora l'efficienza e semplifica la scrittura di SO


Gerarchia di memoria Tipi di memoria:

  • primaria
   (codice e dati delle elaborazioni correnti);
   (nanosecondo);
  • secondaria
   (attivazione esecuzioni e programmi);
   (grosse moli di dati che vengono scambiati con la mem. promaria poco alla volta)
   (millisecondo);
  • terziaria
   (lente e off-line, esempio CD, DVD, chiavette USB);


concetto di Cache: località (se faccio un accesso è probabile che dopo poco accedo al memoria subito vicina)

Concetto generale di Cache (hw o sw)

Protezione di memoria => MMU (Memory Management Unit)

  • alcuni indirizzi accessibili e altri no
  • limita l'accesso a determinati indirizzi e nel caso scaturisce una Trap call
  • fa in modo che in usermode siano visibili solo alcuni indirizzi.

Casi semplici: registri base/limite, cenni di funzionamento MMU moderne

Lezione del 30 ottobre 2018

Fork/wait/getpid/getppid

execve e exec*

Gestione file (open/close/read/write/pread/pwrite)

file aperti: regole relative a fork/exec.

ioctl

File:20181030.tgz

Lezione del 6 novembre 2018

PROGETTO: umps2 prima presentazione dell'emulatore. Compito a casa per i gruppi: installare umps2 e scrivere programmi (eleganti, orinali e professionali) per prvarne le funzionalità.

approfondimento su azioni atomiche dup2, APPEND mode, pread/pwrite

  • System call file system prefissi: L/F
  • System call file system: stat, access, umask, chmod, chown, truncate, link, symlink, unlink, rename, mkdir, rmdir,
  • chdir/fchdir (...at system call)
  • navigazione directory: getdents. (Lib: opendir/readdir/rewinddir/closedir)

esperimenti svolti in aula: File:20181106.tgz

Lezione del 8 novembre 2018

file senza aree dati associate (o parzialmente allocati). mknod, pipe, mkfifo/named pipe.

select/poll kill, signal

File:20181108.tgz

Lezione del 13 novembre 2018

Segnali affidabili.

python primi esempi.

File:20181113.tgz

Lezione del 15 novembre 2018

Python... presentazione del linguaggio con esempi.

Programmazione concorrente: Race condition, prima introduzione ai problemi deadlock/starvation...

File:20181115.tgz

Lezione del 20 novembre 2018

Programmazione concorrente: notazione azioni atomiche proprieta' safety e liveness

il problema della mutua esclusione soluzione di Dekker

File:20181120.tgz

Lezione del 22 novembre 2018

Dimostrazione dell'algoritmo di Dekker.

Spinlock. Test&set.

Semafori. Mutex con semafori. Produttore/consumatore coi semafori.

File:20181122.tgz

Lezione del 27 novembre 2018

Semafori: implementazione

Problema del BUffer limitato e cena dei filosofi coi semafori.

Libreria per speriemntare semafori in C e python.

File:10281127.tgz

Lezione del 29 novembre 2018

Lezione del 4 dicembre 2018

Lezione del 6 dicembre 2018

Lezione del 11 dicembre 2018

Lezione del 13 dicembre 2018