Lezioni Anno Accademico 2018/19 I semestre
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
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
Lezione del 13 novembre 2018
Segnali affidabili.
python primi esempi.
Lezione del 15 novembre 2018
Python... presentazione del linguaggio con esempi.
Programmazione concorrente: Race condition, prima introduzione ai problemi deadlock/starvation...
Lezione del 20 novembre 2018
Programmazione concorrente: notazione azioni atomiche proprieta' safety e liveness
il problema della mutua esclusione soluzione di Dekker
Lezione del 22 novembre 2018
Dimostrazione dell'algoritmo di Dekker.
Spinlock. Test&set.
Semafori. Mutex con semafori. Produttore/consumatore coi semafori.
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.
Lezione del 29 novembre 2018
Semafori binari, equivalenza. Lettori-Scrittori. Passaggio del testimone (passing le batôn)
Lezione del 4 dicembre 2018
Lezione del 6 dicembre 2018
Lezione del 11 dicembre 2018
Lezione del 13 dicembre 2018
Copia della pagina https://etherpad.wikimedia.org/p/so.cs.unibo.it
Copia di https://etherpad.wikimedia.org/p/so.cs.unibo.it (25 febbraio 2019)