Difference between revisions of "Lezioni Anno Accademico 2018/19 I semestre"

From Sistemi Operativi
Jump to navigation Jump to search
 
(14 intermediate revisions by 2 users not shown)
Line 73: Line 73:
 
== Lezione del 16 ottobre 2018 ==
 
== Lezione del 16 ottobre 2018 ==
  
Static/extern/auto/register
+
Programmazione in C:<br>
preprocessore, compilazione condizionale
+
:-Utilizzo delle keyword Static/extern/auto/register
inizializzazioni
+
:-Preprocessore, compilazione condizionale,inizializzazioni const
const
 
  
parametri a linea comando
+
parametri a linea comando<br>
 
+
link fisici e simbolici <br>
link fisici e simbolici
+
processi: foreground/background <br>
processi: foreground/background
 
 
quoting
 
quoting
  
Line 107: Line 105:
  
 
== Lezione del 25 ottobre 2018 ==
 
== 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 ==
 
== 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| esempi visti a lezione]]
 +
 
== Lezione del 6 novembre 2018 ==
 
== 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 ==
 
== 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 ==
 
== Lezione del 13 novembre 2018 ==
 +
 +
Segnali affidabili.
 +
 +
python primi esempi.
 +
 +
[[File:20181113.tgz]]
 +
 
== Lezione del 15 novembre 2018 ==
 
== 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 ==
 
== 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 ==
 
== 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 ==
 
== 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:20181127.tgz]]
 +
 
== Lezione del 29 novembre 2018 ==
 
== Lezione del 29 novembre 2018 ==
 +
 +
Semafori binari, equivalenza. Lettori-Scrittori. Passaggio del testimone (passing le batôn)
 +
 +
[[File:20181129.tgz]]
 +
 
== Lezione del 4 dicembre 2018 ==
 
== Lezione del 4 dicembre 2018 ==
 
== Lezione del 6 dicembre 2018 ==
 
== Lezione del 6 dicembre 2018 ==
 
== Lezione del 11 dicembre 2018 ==
 
== Lezione del 11 dicembre 2018 ==
 
== Lezione del 13 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)]]

Latest revision as of 11:10, 25 February 2019

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:20181127.tgz

Lezione del 29 novembre 2018

Semafori binari, equivalenza. Lettori-Scrittori. Passaggio del testimone (passing le batôn)

File:20181129.tgz

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)