Anteprima
Vedrai una selezione di 10 pagine su 53
Sistemi operativi - Appunti Pag. 1 Sistemi operativi - Appunti Pag. 2
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 6
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 11
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 16
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 21
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 26
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 31
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 36
Anteprima di 10 pagg. su 53.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 41
1 su 53
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Gestione Memoria

  • suddividere la memoria per consentire a più processi di essere tenuti in coda ready e schedulati, assegnando un po' di memoria a ciascuno.
  • fare in modo che i processi abbiano memoria separata per sicurezza, evitando che un processo acceda a memoria di un altro.

binding: associazione di indirizzi logici a fisici.

  • indirizzo logico: generato dal programma, cambia col binding.
  • indirizzo fisico: posizione esatta nel vettore della memoria.

compilazione: se il range esatto nel quale risiederà il programma nella memoria fisica è noto, il compilatore può assegnare direttamente le locazioni del suo ulteriore indirizzi. Se range cambia non va più.

caricamento (loadtime): tutti gli indirizzi logici vengono determinati quando il programma viene caricato in memoria, generati indirizzi fisici.

esecuzione (execution time): indirizzi logici vengono determinati quando il processo è eseguito, necessario se il modulo viene spostato tra segmenti.

spazio degli indirizzi logici: tutti gli indirizzi logici di un processo.

mmu (memory management unit): componente hw converte indirizzi logici generati dai programmi con execution time binding (quindi che generano ind logici) a ind fisici mediante la somma con registri come il base register. Consente al programmatore di usare solo ind relativi (logici).

caricamento dinamico: vengono caricati in memoria soltanto alcune parti del processo, lasciando le più pesanti e meno comuni su disco. La gestione è affidata al developer e implementata dal linguaggio che usa C.

collegamento dinamico: si applica il collegamento funzioni ne necessaric (delle librerie). Per librerie comuni (come quelle std del so) si rinvessa collegamenti nell'eseguibile che recuperano le lib dal sistema, che spesso so già in memoria. Tutti i processi eseguono la stessa libreria; si alleggerisce il codice e la dimensione delle eseguibile in memoria, permette il leggermente facile delle librerie.

Swapping

È una tecnica che consiste nello scaricare in memoria secondaria processi che sono in attesa di esecuzione.

Schedulata di breve termine, viene spostato il completo spazio di indirizzo del processo e deve essere riaccolato esattamente nella stesse locazioni se non c'è binding in esecuzione.

Roll in roll out

Processi a bassa priorità vengono swapati per fare spazio a processi a più alta priorità.

Problema: operazione assolutamente troppo lenta.

Allocazione contigua

Lo spazio indirizzi di un processo comprende locazioni fisicamente consengueti, anche se hanno indirizzi logici diversi dai fisici.

  • Partizionamento statico: il sistema operativo assegna al processo uno dei blocchi di dimensione fissata in cui è divisa la memoria.
  • È molto semplice, implementato su sistemi semplici:
  • Frammentazione interna, viene sprecato spazio all'interno dei blocchi.

Partizionamento dinamico: quando un processo entra in coda, decide il suo associo il suo requisito di memoria e gli assegna un blocco della memoria strettamente necessario.

Quando processi lasciano la memoria, si creano buchi (hole) in cui i nuovi processi non entrano esattamente, si spreca così memoria, frammentazione esterna.

Ci sono vari criteri per scegliere il buco più adatto:

  • First fit: la 1^ allocazione libera dall'inizio
  • Best fit: la allocazione più piccola che può contenere il processo
  • Worst fit: la più grande che può contenerlo, si riduce la frammentazione
  • Next fit: come first fit ma non da capo.

Overlay: tecnica storica usata quando la memoria è più piccola dello spazio di indirizzi di un processo, blocchi contenenti diverse sezioni di codice e devono essere spostate dal programmatore

  • *Ciascun processo risiede in una unica porzione contigua di memoria*

copy-on-write

Tecnica che consiste nella condivisione iniziale delle pagine fra processi "genitori e figli". Usata per evitare di duplicare le pagine del padre.

Quando e solo figlio modifica una pagina fra loro condivisa viene duplicata e scritta dedicandola al solo processo che la ha modificata.

vfork non usa copy-on-write, la modifica di pagine condivise non comporta duplicazione della pagina ma modifica la pg condivisa e basta.

È necessario utilizzare page-wise, pulita per evitare di assegnare ad un processo pagine contenenti dati riservati · Must precedentemente da altri.

Memory-mapped I/O

Viene fatto corrispondere un file ad un indirizzo di memoria; quando viene fatto riferimento a tale indirizzo le pagine di memoria relative al file vengono caricate col contenuto del file.

Corrispondenza fra pagina in RAM e blocchi di disco.

  • Pregi: 1) Facilità di gestione del file, non si usano open(), read(), ..
  • 2) Siccome il file è in RAM l'accesso è molto più rapido.

Non necessariamente le scritture devono essere subito sincronizzate col file su disco, tranne quando è chiuso o in caso di vincoli, dipende dal so.

SOSTITUZIONE delle pagine teoria e algoritmi

Problema: non ci sono pagine libere da assegnare, sono tutte occupate e è causato dalla sovralloccazione cioè assegniamo pagine anche se il limite complessivo delle pagine è richiesto dal norma. Eseguiamo alleviare l'esecuzione viene negato.

Esempio: 20 frame totali 2 processi correntemente al massimo ciascuno può occupare to frame ma ora ne occupa 5. Se eseguo un qualsiasi altro processo gli assegno pagine.

Soluzione -> sostituzione di una pagina:

mediante un algoritmo a determina un frame ultima la cui pagina viene posta in disco, e nel frame ultima viene caricata la pagina desiderata.

Nota: sono necessari 2 spostamenti fra disco e memoria.

È necessario aggiornare ogni pagetable ed ogni frame table per indicare che la pagina prima in memoria non è più tale.

dirty bit: La pagina ultima deve essere scritta su disco soltanto se è stata modificata rispetto a quando è stata letta dal disco si use. il bit che vale 1 se la pagina è “dirty”, protetta quando continua il lavoro la sincronizzazione minima sarà trasferita su disco. Lo stesso vale per le pagine in disk lotta.

SISTEMI DI I/O

metodi attraverso i quali il SO si interfaccia con le periferiche.

problema: periferiche possono essere infinitamente diverse e il SO deve riconoscerle tutte.

suddivisione per obiettivo delle periferiche:

  • human readable: consentono all'utente di utilizzare la macchina (keyb.)
  • machine readable: consentono di fornire e ricevere informazioni dalla macchina (disco, nastro)
  • comunicatore: usate per consentire la comunicazione fra computer (schede rete)

controller: dispositivo che astrae la periferica alla quale è associato e consente avere una visione funzionale, nasconde dettagli.

suddivisione per modalità di accesso:

  • disp. a blocchi: strutturati a blocchi di informazioni accessi per coordinate es. dischi —> tempo costante di accesso
  • disp. a carattere: l'informazione viene fornita come un flusso, non è possibile l'accesso selettivo, è solo possibile leggere il flusso (es. tastiera)
  • altro/misti: nostro timer interrupt

bus: linea che connette più periferiche e consente lo scambio di dati va regolato siccome è condiviso.

tecniche per la comunic. della cpu con i dispositivi:

  • busywaiting: attesa attiva, sconsigliato se CPU è molto più veloce della periferica, l'cpu interroga ciclicamente va bene se i dispositivi sono alla stessa velocità della cpu, si evita OS e non si spreca tempo in attesa attiva.
  • interrupt-driven: la cpu effettua una op. i/o tramite un processo questo viene messo in wait. Quando la op di i/o termina il dispositivo invia un interrupt contenente il codice di che ha generato l'interrupt. Questo codice viene confrontato nel vettore degli interrupt ed viene lanciata la routine per gestire tale interrupt. Permettono di riprendere proprio in.
  • direct-memory ACCESS (DMA): trasferimento mediato da DMA controller, una programmata dalla cpu che indica quali dati deve trasferire al dispositivo. Si evitano una sequenza di interrupt dopo.
  • cycle stealing: La cpu deve contenere il bus di memoria con il dma, così dopo che bus di accesso si genera un interrupt quando il trasferimento termina il DMA controller invia un interrupt alla cpu per chiudere il trasferimento.
Dettagli
Publisher
A.A. 2016-2017
53 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher lore9625 di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Udine o del prof Scagnetto Ivan.