Slide sui sistemi operativi che esplora le loro funzioni generali e le evoluzioni storiche. Il Pdf, utile per studenti universitari di Informatica, tratta i metodi di allocazione dei file e i vari tipi di filesystem, come ext2, ext3, ext4, NTFS e F2FS, offrendo una chiara panoramica sulla gestione delle risorse e l'organizzazione dei dati.
Mostra di più47 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Un SO ha la funzione primaria di gestire le risorse di calcolo, infatti fornisce un'astrazione delle risorse, dando l'illusione all'utente di avere una memoria "infinita", una CPU veloce e dedicata ad ogni utente, forniscono inoltre un accesso uniforme (virtualizzato) a risorse estremamente eterogenee facendo quindi da punto di incontro tra hardware e software. Il Sistema Operativo si pone come interfaccia tra l'utente (o il software) e l'hardware, definisce una macchina virtuale (o estesa) e quindi un insieme di astrazioni che semplificano il sviluppo delle applicazioni (ad es. SO fornisce il concetto di FILE invece di quello di "insieme di byte memorizzati in un disco"), realizza inoltre politiche di gestione delle risorse hardware definendo i criteri con cui assegnare una risorsa a fronte di più richieste concorrenti. La conoscenza della struttura interna e dei principi di funzionamento di SO è indispensabile per la programmazione di sistema e permette di scrivere programmi più efficienti.
interf. utenti utenti interf. di libreria programmi di utilità (shell, compiler, ... ) modo utente interf. system call libreria standard (open, close, read, write, .. ) Sistema Operativo (process management, memory management, file system, I/O, ... ) modo kernel hardware (CPU, memoria, dischi, terminali, ... )
sistemi "single-user": SO formato da loader + librerie di procedure comuni lo svantaggio è una bassa percentuale di utilizzo di risorse hardware; Sistemi Batch: SO formato da loader + sequenziatore+ processore di output, privilegiano lo sfruttamento del sistema a prezzo dell'assenza di interazione da parte dell'utente, che fornisce in via preliminare il suo lavoro, il so gestisce l'avanzamento sequenziale dei singoli lavori, che sono raggruppati in lotti e memorizzati su supporto magnetico, le unità di ingresso/uscita sono virtualizzate (spooling).
Sistemi Multiprogrammati: Con un sistema mono-programmato il processore deve attendere per il completamento delle istruzioni di I/O prima di procedere. I sistemi batch multi-programmati gestiscono diversi job caricati in memoria contemporaneamente e quando un Job deve attendere un'operazione di I/O, la CPU viene assegnata ad un altro job, richiede quindi qualche forma di gestione della memoria e di scheduling della CPU, inoltre l'hardware deve supportare gli interrupt di I/O e il DMA.
Sistemi Time-sharing: Il tempo del Processore è condiviso tra più utenti che accedono al sistema connettendosi simultaneamente da più terminali, utilizza la multiprogrammazione per la gestione di un gruppo di task interattivi con Il tempo del Processore condiviso tra più utenti
Personal Computing: Tipicamente single user, l'utilizzo delle risorse non è un obiettivo di primaria importanza, ma ci si concentra su API e user interface; Inizialmente il SO era un semplice fornitore di servizi (cfr. DOS che era a tutti gli effetti un gestore di interruzioni) attualmente invece abbiamo Sistemi multitasking e multiutente. Distributed Computing: tanti sistemi per utente;
Sistemi Operativi Real-Time: è un sistema la cui correttezza dipende dalla velocità di esecuzione dei Task, tipicamente sono sistemi che gestiscono programmi che interagiscono con l'ambiente esterno attraverso periferiche e che garantiscono ai dati di ingresso risposte in un tempo utile che dipende dall'applicazione e quindi dall'ambiente esterno. Introducono nuovi concetti e nuove problematiche poiché sono sistemi con un doppio concetto di correttezza: Logica (" it does the right thing" ) e Temporale ("it does it on time"). Tipicamente sono sistemi in cui la proprietà di predictability è molto più importante delle performance. Sistemi transazionali: Trattasi di sistemi interattivi destinati ad eseguire transazioni, ossia sequenze di operazioni elementari che richiedono l'esecuzione ciascuna di un programma o di una sua parte. In un sistema transazionale tutti gli utenti interrogano e aggiornano gli stessi archivi e richiedono l'esecuzione delle stesse operazioni elementari, fornendo i propri dati.
La CPU governa l'accesso alla memoria e alle periferiche di I/O, avviata un'operazione di lettura/scrittura, dovrebbe attendere fino a che l'operazione non sia terminata, in realtà i dispositivi di I/O e la CPU possono operare concorrentemente.
Memoria Centrale RAM Disco Video 1 Bus 1 CPU Tastiera Stampante
Ad ogni dispositivo di I/O corrisponde il proprio controllore, dotato di un proprio buffer locale, La CPU sposta i dati tra memoria centrale e i buffer locali, successivamente continua con altre operazioni. L'operazione di I/O ha luogo tra il dispositivo ed il buffer locale del controllore, che informa la CPU del termine di una operazione generando un interrupt, che consente l'interruzione del normale ciclo di esecuzione della CPU. Il ciclo del processore viene modificato per verificare se ci sono interruzioni pendenti (segnale INT). Se INT è alto, viene interrotta l'elaborazione corrente e si esegue una routine di gestione dell'interruzione (ISR). L'ISR gestisce l'interrupt in modo opportuno e restituisce il controllo al processo interrotto (o ad altro processo). Infine, la CPU riprende l'esecuzione.
BOOTSTRAP FETCH OP. ASSEMBLY EXECUTE INT? NO SI INTERRUPT
Interrupt Hardware (o interruzioni esterne), cioè eventi hardware, non causati dal programma in esecuzione e asincroni rispetto all'elaborazione:
Interrupt Software (Trap) cioè causato dal programma quindi eventi sincroni rispetto all'elaborazione:
La CPU esegue un'istruzione di I/O eseguendo un apposito programma di I/O: Prepara l'operazione di I/O scrivendo sui registri del controller del dispositivo che esegue l'azione richiesta e al termine scrive sui registri del controller i risultati (buffer e stato), intanto la CPU attende (busy waiting) il completamento dell'operazione testando periodicamente infine sposta i dati di input dal buffer del controller alla memoria centrale; questa è ormai una tecnica obsoleta.
La CPU esegue un'istruzione di I/O lanciando un apposito programma di I/O che prepara l'operazione scrivendo sui registri del controller del dispositivo. Il sistema operativo sospende l'esecuzione del processo che ha eseguito l'operazione ed esegue un altro processo, Il dispositivo esegue l'azione richiesta e al termine scrive sul buffer del controller il risultato e segnala il termine dell'operazione attraverso interrupt. Al ricevimento dell'interrupt, la CPU copia i dati dal buffer del controller alla memoria centrale, tramite la ISR apposita.
Il processore spreca parte del suo tempo a gestire le interruzioni e trasferire dati dal controller alla memoria, ciò è particolarmente oneroso quando si devono trasferire sequenze di dati. Se il tempo necessario alla CPU per gestire un'interruzione è maggiore del tempo tra due interruzioni, si possono avere perdite di dati. La soluzione è il canale DMA che trasferisce blocchi di dati dal buffer direttamente in memoria centrale, senza l'intervento della CPU. La CPU invia al DMA una richiesta di lettura o scrittura con l'Indirizzo del dispositivo di I/O, la locazione di partenza (IND) della memoria da cui leggere o scrivere e il numero di parole (CONT) da leggere o scrivere; Completato il trasferimento, il DMA invia un interrupt alla CPU.
Memoria Centrale - insieme di registri; è il solo spazio di memorizzazione che può essere acceduto direttamente dalla CPU. Memoria Secondaria -memoria non volatile con un'alta capacità di memorizzazione, di solito dischi magnetici, la superficie del disco è divisa in tracce e settori, Il disk controller costituisce l'interfaccia fra disco e computer. Le memorie possono essere organizzate in una gerarchia in base a velocità, costo e dimensione.
dimensione Registri interni Cache RAM Dischi Nastri Velocità, costo per bit
Tecnica che si basa sul uso di memorie veloci per conservare dati acceduti di recente, un concetto che si applica a vari livelli:
Richiede una politica di gestione della cache, che si occupa della dimensione della cache e dei blocchi, una funzione di mapping del blocco nella cache e algoritmi di sostituzione; Soffre del problema della coerenza, ad ogni accesso in memoria, il processore controlla prima nella cache, se il dato è presente (cache hit), si accede direttamente alla cache, altrimenti (cache miss), si accede alla memoria centrale. Il meccanismo di funzionamento sfrutta il principio di località dei riferimenti, l'accesso alla cache, con verifica della presenza del tag e validità del contenuto, avviene in parallelo (accesso associativo). Ogni elemento di cache è formato da un blocco di locazioni contigue della memoria centrale con associato un bit di validità, che indica se il contenuto è valido, un Tag che identifica il contenuto con la parte comune a tutti gli indirizzi delle locazioni del contenuto.
Nei sistemi multiprogrammati e multiutente, più processi utilizzano contemporaneamente la memoria quindi è necessaria la protezione della memoria per le risorse del SO (ad es. il vettore di interrupt), lo spazio dei processi utente e del sistema operativo. Per proteggere la memoria è possibile aggiungere all'hardware due registri che determinano l'intervallo degli indirizzi validi accessibili da un processo:
memoria fisica MMU registro limite immagine processo 6140 10240 indirizzo logico eccezione CPU VI no x = 4112 si indirizzo fisico + + 14352 y = 14352 - 16380 10240 registro base La memoria esterna a questo intervallo è inaccessibile, questo componente hardware è chiamato MMU. I processori moderni presentano due stati di funzionamento: User mode (o non privilegiato) e Kernel mode (o