Estratto del documento

Messina Antonio Emmanuel

Politecnico di Torino 2021-2022

Sistemi operativi

Capitolo 1: Introduzione

1.1 Sistema operativo

Il sistema operativo può essere definito come un insieme di programmi che cooperano con aspetti connessi all’hardware. Esso fornisce una piattaforma ai programmi applicativi e gli strumenti per fare da intermediario tra utente e hardware. Ci sono varie modalità di funzionamento: Mainframe, Personal Computer, Mobile. L’obiettivo è quello di essere in grado di sfruttare il più possibile l’hardware.

Si inizia con l’analisi del sistema di elaborazione che è composto da quattro componenti: hardware, sistema operativo, programmi applicativi, utenti. Il sistema operativo controlla l’hardware e ne coordina l’utilizzo da parte dei programmi applicativi per gli utenti. L’hardware fornisce al sistema le risorse elaborative fondamentali ed è costituito da:

  • CPU
  • Memoria
  • Dispositivi di I/O

I programmi applicativi sono:

  • Editor di testo
  • Compilatori
  • Browser Web
  • Altri

Un sistema elaborativo si può vedere come l’insieme di hardware, software e dati. Il sistema operativo offre gli strumenti per impiegare nel modo corretto le risorse. Esso è considerato come un assegnatore di risorse in quanto gestisce il tempo e la memoria e si occupa delle comunicazioni con l’esterno I/O. Ciò viene fatto attraverso appositi programmi di controllo e di sfruttamento delle risorse.

1.2 Sistema di elaborazione

È un moderno calcolatore general purpose composto da una o più CPU e da un certo numero di controllori di dispositivi connessi mediante bus. Un controllore dispone di una memoria interna (buffer) e da un insieme di registri. Esso è responsabile del trasferimento dati tra periferiche e memoria interna. Per ogni controllore vi è un driver che gestisce il controllore e fa da interfaccia con il sistema.

L’avviamento del sistema consiste nell’esecuzione da parte del processore della prima istruzione posta in una locazione fissa dello spazio di memoria corrispondente solitamente alla ROM subito dopo la disattivazione del segnale di reset che resta inizialmente attivo dall’hardware finché le tensioni non sono stabili. Questa fase è anche detta bootstrap e ciò a cui si accede alla ROM è il programma di avvio che dirà come accedere al S.O per essere pronto e avviarlo. Viene caricato il kernel che contiene una serie di istruzioni che comporranno mano a mano il S.O.

Nella fase di avvio di un kernel vengono avviati determinati processi che si distinguono anche in demoni nel caso in cui rimangono attivi tutto il tempo e non sono visibili all’utente. Definendo meglio il kernel ovvero il nucleo del sistema operativo, esso interagisce direttamente con l’hardware e il suo scopo principale è quello di gestire i processi corrispondenti ai programmi contemporaneamente attivi. Si occupa della loro esecuzione e della risposta agli eventi esterni delle periferiche. Attua una politica di alternanza nell’accesso alla CPU (scheduling).

La gestione delle interruzioni è una procedura generale per esaminare le informazioni associate ad un evento, viene invocata una specifica procedura per uno specifico evento e tutto ciò è coordinato dal kernel. Se consideriamo una semplice operazione di I/O, il driver del dispositivo scrive negli appropriati registri all’interno del controllore che esamina e capisce quale azione intraprendere. Trasferisce il contenuto nel buffer e quando finisce di fare ciò mediante un interrupt segnala l’esito dell’operazione al driver. Il driver passa quindi il controllo al S.O.

L’hardware può generare un’interruzione inviando un segnale mediante il bus di sistema. Quando la CPU riceve il segnale interrompe l’operazione corrente e la trasferisce in una specifica area di memoria. Quando completa la procedura richiesta ritorna all’operazione precedente. A seconda dei tipi di eventi vengono codificate interruzioni memorizzate poi in un vettore delle interruzioni.

1.3 Struttura della memoria

Un computer general-purpose esegue quasi tutti i programmi accedendo alla memoria principale composta da:

  • RAM
  • ROM

Il programma di avviamento, bootstrap, non può risiedere nella RAM in quanto volatile ma nella ROM dato che dovrà poi caricare il sistema operativo. Abbiamo bisogno di una memoria secondaria in quanto la capacità della memoria principale non è di solito sufficiente. La memoria secondaria estende quella primaria e comprende CD-ROM, nastri magnetici, dischi ottici e SSD. Un sistema operativo deve essere in grado di comunicare con tutti i livelli di gerarchia della memoria. Il trasferimento dei dati è gestito tramite accesso diretto alla memoria DMA.

1.4 Struttura di I/O

Una percentuale importante del codice di un sistema operativo è dedicata alla gestione dell’I/O. Un computer general purpose è costituito da una serie di controllori connessi tramite un bus comune. Ogni controllore ha una propria memoria coordinata al sistema operativo mediante un codice denominato driver.

Non sempre il meccanismo delle interruzioni è efficace, talvolta può causare sovraccarico e quindi si utilizza una tecnica più veloce e che evita di richiamare in continuazione l’attenzione della CPU, ed è l’accesso diretto alla memoria (DMA). In questo caso il controllore trasferisce un intero blocco di dati dal buffer alla memoria centrale o viceversa e la CPU è libera di occuparsi di altro.

1.5 Architettura di un elaboratore

Possiamo classificare due tipi di sistemi: sistemi a monoprocessore e a multiprocessore. I primi sono oggi obsoleti mentre gli ultimi hanno una maggiore capacità di elaborazione e affidabilità. Nei sistemi multiprocessore (paralleli o multicore) si ha una maggiore capacità di elaborazione e un incremento dell’affidabilità. Nella multielaborazione simmetrica tutti i processori sono sullo stesso piano di parità computazionale e hanno una memoria condivisa. Il vantaggio è che i processi sono eseguibili senza calo di prestazioni.

Un sistema multiprocessore è anche in grado di svolgere una multielaborazione asimmetrica ovvero tale per cui un processore controlla il sistema mentre gli altri processori hanno compiti specifici. Definiamo cluster di elaboratori un tipo di sistemi multiprocessore che differiscono dal fatto di essere composti da due o più calcolatori detti nodi collegati tra loro. Anche in questo caso si distinguono in asimmetrici dove mentre un calcolatore rimane in attesa, l’altro esegue e cluster simmetrici dove due o più elaboratori eseguono applicazioni allo stesso tempo e si ha maggior efficienza. Solitamente i cluster sono utilizzati in ambienti di elaborazione ad alte prestazioni.

1.6 Struttura di un sistema operativo

Il sistema operativo costituisce l’ambiente di esecuzione dei programmi. Sono caratterizzati dalla multiprogrammazione.

  • Sono mantenute contemporaneamente diverse attività chiamate job, allocati in un’area definita job pool.
  • Il sistema operativo sceglie un job contenuto in memoria e ne inizia l’esecuzione.
  • Se il job è in attesa il S.O passa ad un altro job.
  • La CPU non rimane mai inattiva fino a quando ci sono job da eseguire.

Un sistema con multiprogrammazione fornisce un ambiente del sistema dove CPU, memoria e dispositivi sono allocati in modo efficiente. Un sistema interattivo permette la comunicazione diretta tra utente e sistema. Un programma caricato in memoria e predisposto per l’esecuzione è un processo, la cui esecuzione occupa un tot tempo prima di richiedere un’operazione I/O attraverso la quale il sistema commuta rapidamente la CPU al programma di un altro utente.

La pianificazione dei job e lo swapping servono a garantire tempi accettabili e quindi maggiore efficienza. Le attività di un sistema operativo sono guidate dalle interruzioni. Definiamo eccezione un’interruzione generata da un programma dovuta a un errore. Un errore non deve arrecare danni ad altri programmi. Il corretto funzionamento è garantito da due modalità:

  • Modalità utente
  • Modalità di sistema

La modalità viene indicata da un bit: kernel(0), user(1). Questa funzionalità protegge il sistema operativo e gli altri utenti da eventuali errori di un utente. Per assicurare che il sistema operativo mantenga il controllo della CPU si usa un timer realizzato con un elemento contatore (registro counter).

1.7 Gestione dei processi

Un programma fa qualcosa solo se la CPU esegue le istruzioni che lo costituiscono. Un programma in esecuzione è un processo. Possiamo limitarci a considerare un processo come lavoro d’elaborazione (job). Possiamo considerare processi: un programma in esecuzione, compilatore, editor di testo, qualsiasi servizio di sistema. Un processo necessita di risorse quali, tempo di CPU, memoria, file, dispositivi I/O. Quando un processo termina il sistema operativo riprende il controllo di tali risorse.

Un processo a singolo thread ha un contatore di programma. L’esecuzione del processo è sequenziale. La CPU esegue passo dopo passo ogni istruzione del processo, finché esso termina. Un processo multithread è quindi chiaramente dotato da più contatori. Il processo è l’unità di lavoro di un sistema. Il sistema operativo è responsabile delle seguenti attività:

  • Schedulazione di processi e thread
  • Creazione e cancellazione di processi
  • Sospensione e ripristino dei processi
  • Fornitura di meccanismi per la sincronizzazione e comunicazione dei processi

1.8 Gestione della memoria

La memoria centrale è fondamentale per il funzionamento di un moderno sistema di elaborazione. È un archivio dati velocemente accessibile e specialmente l’unico a cui la CPU può accedere in modo diretto. Quindi per eseguire un programma esso deve stare nella memoria, quando termina l’esecuzione si avrà spazio per il programma successivo. Il sistema operativo opera su di essa tenendo traccia di quali parti di memoria vengono usate e da chi, decidendo i processi e dati da caricare e assegnando o revocando spazi di memoria.

Il calcolatore deve anche disporre di una memoria secondaria a sostegno della memoria centrale. Ed è per questo motivo che anch’essa deve essere gestita correttamente. Il S.O è responsabile di:

  • Montare-smontare le unità di memoria
  • Gestione dello spazio libero
  • Assegnazione dello spazio
  • Scheduling del disco
  • Partizionamento
  • Protezione

La memoria terziaria ha scarso impatto sulle prestazioni del sistema ma deve essere anch’essa gestita.

1.9 Gestione dei file

Il sistema operativo fornisce un’interfaccia logica per gestire le informazioni. L’unità di archiviazione è il file che presenta un concetto generale dato che può essere un file: sorgente, oggetto, alfabetico, numerico, alfanumerico, binario, mp3… I file possono essere registrati su molti mezzi fisici diversi e sono organizzati in directory che ne facilitano l’uso. Il sistema operativo è responsabile di:

  • Creazione e cancellazione di file o directory
  • Fornitura delle funzioni fondamentali per la loro gestione
  • Associazione dei file a dispositivi di memoria secondaria
  • Creazione di copie di riserva

1.10 Gestione della cache

Il concetto di cache è molto importante per un sistema elaborativo in quanto è un’unità molto più veloce. Quando si accede a una particolare informazione, si controlla se è presente all’interno della cache; se lo è, allora si adopera la copia presente nella cache, altrimenti si accede alla memoria centrale e si copia l’informazione nella cache in modo che essa sia presente la prossima volta e sarà più veloce accedervi. Senza la cache la CPU dovrebbe attendere parecchi cicli prima che un’istruzione sia prelevata dalla memoria. La gestione della cache è quindi molto importante.

1.11 Gestione dei sistemi di I/O

Uno degli scopi del S.O è quello di nascondere le peculiarità dei dispositivi. Essi sono nascosti dal sottosistema I/O che è composto da:

  • Un componente per la gestione della memoria comprendente la gestione dei buffer di I/O
  • Un’interfaccia per i driver
  • I driver

1.12 Protezione e sicurezza

Vi sono meccanismi che assicurano che i file, pezzi di memoria, CPU e altre risorse abbiano l’autorizzazione apposita del S.O. Per protezione si intende un meccanismo di controllo dell’accesso alle risorse possedute da un elaboratore da parte di processi o utenti. È compito invece della sicurezza difendere le risorse da eventuali attacchi provenienti dall’interno o dall’esterno. Nella maggior parte dei sistemi è disponibile un elenco di nomi degli utenti e dei loro identificatori utente (user id). Si tratta di ID numerici che identificano univocamente l’utente. Tale ID è associato a tutti i processi e thread del soggetto in questione.

1.13 Strutture dati del kernel

I sistemi operativi utilizzano un po’ di strutture dati e sono un argomento di cruciale importanza. Quelle più usate sono:

  • Liste, Stack e code
  • Alberi
  • Funzioni e mappe di hash
  • Bitmap

Liste, stack e code
Un array è una struttura dati in cui ogni elemento è accessibile direttamente mediante indice. La memoria è organizzata come un array. Ogni elemento è accessibile utilizzando il suo numero progressivo moltiplicato per la dimensione. Il problema è quando abbiamo dati di dimensione variabile, in questo caso gli array servono a poco. Si introducono quindi le liste i cui elementi sono accessibili solo in un particolare ordine, in poche parole abbiamo gli elementi in una certa sequenza.

Ci sono vari tipi di liste:

  • Lista semplicemente concatenata, ogni elemento punta all’elemento successivo
  • Lista doppiamente concatenata, ogni elemento punta sia al successivo che al precedente
  • Lista circolare, l’ultimo punta al primo elemento

Le liste sono più utili per contenere dati di diversa dimensione e permettono di aggiungere e rimuovere elementi in modo molto semplice. Uno stack è una struttura dati dotata di un ordine sequenziale che utilizza una politica LIFO per l’inserimento o rimozione degli elementi, l’ultimo a essere inserito è il primo a essere rimosso. Le operazioni di inserimento e rimozione sono push e pop. Una coda è una struttura ordinata sequenzialmente che adotta una politica di accesso FIFO, il primo a essere stato inserito è il primo a essere rimosso e così tutti gli altri in ordine.

Alberi
Un albero è una struttura dati utilizzabile per rappresentare i dati in maniera gerarchica. Gli elementi seguono la relazione padre-figlio. In un generico albero un padre può avere infiniti figli ma in un albero binario massimo 2.

Funzioni e mappe di Hash
Una funzione hash riceve dati in input, realizza operazioni sui dati e restituisce un valore numerico che viene usato come indice in una tabella per recuperare il dato. Può accadere che lo stesso valore di output abbia due ingressi differenti. Ciò genera un problema di collisione che si può risolvere con una lista concatenata contenente tutti gli elementi con lo stesso valore di hash. Una mappa di hash è molto più funzionale di una lista in quanto il valore da cercare è più facile da recuperare mediante indice piuttosto che cercare pezzo per pezzo in una lista. La complessità qui infatti è O(1) mentre nella lista analizzando il caso peggiore è O(n).

Bitmap
Una bitmap è una stringa di caratteri di 0 e 1 che ci permette di definire se nell’i-esima posizione della stringa e avendo associato per esempio con 0 disponibile, e con 1 non è disponibile, se la risorsa è disponibile o meno o se può essere collocata in quella posizione per esempio. Sono utili quando si ha un gran numero di risorse.

Capitolo 2: Strutture dei sistemi operativi

2.1 Servizi di un sistema operativo

Un sistema operativo fornisce l’ambiente in cui si eseguono i programmi. Offre i seguenti servizi:

  • Interfaccia con l’utente: Essa può assumere varie forme tra cui l’interfaccia utente grafica (GUI) ossia un sistema a finestre dotato di un dispositivo puntatore, mouse, per comandare le operazioni. Esistono ora come ora anche interfacce touch-screen presenti su tablet e smartphone.
  • Esecuzione di un programma: Il sistema deve poter caricare un programma in memoria ed eseguirlo.
  • Operazioni I/O: Un programma in esecuzione può chiedere un’operazione di I/O che implica uso di file o di un dispositivo.
  • Gestione File System: I programmi richiedono l’esecuzione di operazioni di lettura e scrittura su file. Il file system indica il meccanismo con il quale i file sono posizionati e organizzati sui dispositivi informatici.
  • Comunicazioni: Un processo in molti casi ha bisogno di comunicare per scambiare informazioni con altri processi.
  • Rilevamento degli errori: Il sistema operativo deve essere in grado di rilevare e correggere eventuali errori.

Un secondo gruppo non riguarda invece gli utenti ma assicura il funzionamento del sistema.

Anteprima
Vedrai una selezione di 19 pagine su 86
Sistemi operativi - Appunti Pag. 1 Sistemi operativi - Appunti Pag. 2
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 6
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 11
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 16
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 21
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 26
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 31
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 36
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 41
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 46
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 51
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 56
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 61
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 66
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 71
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 76
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 81
Anteprima di 19 pagg. su 86.
Scarica il documento per vederlo tutto.
Sistemi operativi - Appunti Pag. 86
1 su 86
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher emmanuelmessina00 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à Politecnico di Torino o del prof Sterpone Luca.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community