Estratto del documento

appuntiDiIngegneria

Sistemi Operativi

Sommario

1.0. Sistemi Operativi .............................................................................................................................. 3

1.1. Sistemi Operativi più Famosi ............................................................................................................ 7

1.2. Storia dei Sistemi Operativi .............................................................................................................11

1.3. Virtualizzazione ...............................................................................................................................14

1.4. System Call ......................................................................................................................................18

1.4.1. Primitive di Gestione di File e Directory in UNIX ...........................................................................20

1.4.2. Primitive di Gestione dei Processi in UNIX....................................................................................23

1.4.3. Primitive di Comunicazione tra Processi in UNIX ..........................................................................26

1.5. Shell UNIX .......................................................................................................................................28

1.6. Sistemi Real Time ............................................................................................................................31

1.7. Gestione dei Processi ......................................................................................................................35

1.7.1. Creazione di un Processo .............................................................................................................36

1.7.2. Bootstrap ....................................................................................................................................39

1.7.3. Ciclo di Vita di un Processo ..........................................................................................................40

1.7.4. Algoritmi di Schedulazione dei Processi .......................................................................................44

1.7.4.1. Schedulazione nei Sistemi Batch ..............................................................................................45

1.7.4.2. Schedulazione nei Sistemi Interattivi........................................................................................46

1.7.4.3. Schedulazione nei Sistemi Real Time ........................................................................................48

1.7.4.4. Schedulazione in UNIX .............................................................................................................48

1

1.7.4.5. Schedulazione in Linux .............................................................................................................50

1.7.4.6. Schedulazione in Windows 2000 ..............................................................................................50

1.7.5. Modello a Thread .......................................................................................................................51

1.7.5.1. Multithreading in Java .............................................................................................................54

1.7.5.2. Programmazione Concorrente .................................................................................................56

1.7.5.2.1. Semafori ..................................................................................................................................60

1.7.5.2.2. Monitor ...................................................................................................................................62

1.7.5.2.3. Problema dei 5 Filosofi a Cena .................................................................................................63

1.8. Gestione della Memoria ..................................................................................................................65

1.8.1. Monoprogrammazione ................................................................................................................65

1.8.2. Multiprogrammazione a Partizioni Fisse ......................................................................................66

1.8.3. Swapping .....................................................................................................................................67

1.8.4. Memoria Virtuale ........................................................................................................................69

1.8.4.1. Memoria Virtuale con Paginazione ..........................................................................................69

1.8.4.2. Algoritmi di Sostituzione dei Blocchi ........................................................................................74

1.8.4.3. Memoria Virtuale con Segmentazione .....................................................................................80

1.8.4.4. Segmentazione con Paginazione ..............................................................................................81

1.9. File System ......................................................................................................................................82

1.9.1. Gestione delle Directory ..............................................................................................................86

1.9.2. Implementazione di un File System .............................................................................................87

1.9.3. Implementazione delle Directory .................................................................................................91

1.9.4. File System più Famosi.................................................................................................................93

1.9.5. Dimensionamento dei Blocchi di un Disco....................................................................................96

1.9.6. Affidabilità e Consistenza dei File System.....................................................................................96

1.9.7. File System UNIX .........................................................................................................................98

1.9.8. File System MS-DOS ..................................................................................................................102

1.9.9. File System di Windows 98 ........................................................................................................103

1.9.10. File System di NT .......................................................................................................................104

1.10. Gestione delle Periferiche ..........................................................................................................105

2

1.0. Sistemi Operativi

Un Sistema Operativo SO (oppure OS dall’inglese) è il software fondamentale presente su un

calcolatore che agisce da intermediario fra le applicazioni e l’hardware sottostante, e poiché agisce

direttamente con l’hardware esso rende possibile un uso semplice, efficiente, corretto e sicuro

delle risorse fisiche (Processore, Memoria, Periferiche):

 Semplice perché il SO semplifica l’utilizzo dell’hardware offrendo all’utente un’astrazione

più semplice e potente della semplice macchina fisica, ovvero una Macchina Virtuale MV

che gli offre molti più servizi e consente di fare più cose. Il prezzo da pagare per avere

questa “semplicità” è un po’ di tempo di elaborazione in più in quanto si sta aggiungendo

uno strato software aggiuntivo tra hardware e software;

 Efficiente perché il SO gestisce le risorse hardware in maniera efficiente ottimizzando

l’intero sistema di elaborazione;

 Corretto e Sicuro perché il SO deve gestire i malfunzionamenti del sistema facendo in

modo che un Processo non apporti danni al sistema, che non ci siano interazioni pericolose

tra processi diversi ed utenti diversi, e che tutte le eccezioni e le interruzioni siano gestite

correttamente al fine di impedire all’utente di compiere operazioni dannose per

l’hardware.

Riassumendo all’osso si può dire che il SO svolge 2 compiti fondamentali: è il gestore delle risorse

hardware , ed offre agli utenti una macchina virtuale che astrae la complessità della macchina

fisica. I Sistemi operativi vengono analizzati da 2 punti di vista differenti:

 Dal lato del Programmatore: chi scrive applicazioni ha bisogno di interagire con il SO

sfruttando i servizi (API) che esso mette a disposizione. Si tratta di conoscere delle

istruzioni speciali che prendono il nome di System Calls (chiamate a servizi).

 Dal lato del Sistema: chi deve utilizzare “parti” del sistema di elaborazione deve

comprendere come il SO funziona ed offre determinati servizi. 3

Il S.O. è formato da un insieme di programmi organizzati tra loro in modo tale che ciascuno di essi

si occupi di un compito specifico, secondo uno schema detto a buccia di cipolla (onion skin in

inglese) cioè a strati. I programmi che occupano una posizione più interna interagiscono

maggiormente con l'hardware, mentre i programmi collocati più all'esterno interagiscono

maggiormente con l'utente. In generale gli strati più esterni si servono degli strati sottostanti ma

non capita mai il contrario.

In genere ognuno di questi strati costituisce una sorta di MV che astrae la complessità di una

determinata risorsa hardware. Vengono descritti gli strati a partire da quello più esterno:

 Interprete dei comandi: meglio noto come Shell, è la parte più esterna del SO dalla quale

l’utente può interagire con quest’ultimo inserendo opportune funzioni per cancellare e

creare Processi, gestire la memoria primaria e secondaria, utilizzare la rete oppure

accedere e gestire il File System. Spesso i sistemi operativi si differenziano proprio dal

punto di vista dell’interprete dei comandi: esistono interpreti amichevoli basati sull’utilizzo

del mouse per esempio Windows, in tal caso si parla di GUI (Graphical User Interface), ed

interpreti basati su righe di comando per esempio MS-DOS, in tal caso si parla di una

CUI (Command User Interface).

 File System: anche noto come Gestore dei File, è la parte di SO responsabile

dell’archiviazione dei dati sulle memorie di massa strutturandoli mediante contenitori

logici (file) identificati da un nome logico (filename) ed organizzando i file in modo

gerarchico tramite cartelle (directory). In particolare il File System deve gestire in modo

ottimale lo spazio disponibile della memoria di massa, garantire agli utenti l'accesso ai dati

contenuti nei file in modo molto veloce, anche in presenza di richieste di accesso

contemporaneo allo stesso file da parte di più processi, fornire agli utenti meccanismi di

protezione dei file (controllo degli accessi), ed infine rendere disponibile in modo semplice

operazioni di uso comune come copia, cancellazione, cambio di nome, elencazione,

organizzazione gerarchica tramite la creazione di cartelle. Esistono implementazioni

diverse per i file system e di conseguenza l'organizzazione dei dati sulle memorie di massa

4

cambia di conseguenza, è infatti usuale riferirsi ad una memoria di massa indicando quale

file system la gestisce. Per i sistemi Windows sono disponibili i files system: FAT, FAT32 e

NTFS.

 Gestore delle Periferiche: è la parte di SO che facilita le operazioni di I/O delle periferiche

mascherandone tutte le caratteristiche fisiche, mettendo a disposizione delle primitive per

le operazioni di lettura/scrittura di più alto livello, che quindi possono essere utilizzate

nascondendo all’utente ed al programma i dettagli tecnici del dispositivo. Il S.O. ha inoltre

il compito di regolare l'accesso a tali risorse da parte dei Processi che ne fanno richiesta. In

alcuni casi è implementato un meccanismo di virtualizzazione della risorsa stessa per

dare l'impressione al processo di avere accesso ad una risorsa che in realtà è già assegnata

e impegnata da un altro processo. È questo il caso della stampante, sulla quale è

implementata la coda di stampa, che consente ad un processo di mandare in stampa un

documento anche se in quel momento la stampante è già occupata in un altro lavoro.

 Gestore della Memoria: Per poter essere eseguiti i programmi devono essere caricati

nella RAM, ma poiché essa possiede una dimensione limitata normalmente non è in grado

di contenere tutti i programmi contemporaneamente in esecuzione. Allora il SO

implementa un meccanismo detto di Virtualizzazione della Memoria (Memoria Virtuale

MV) in base al quale ogni Processo ha l’impressione di disporre di una Memoria Centrale

molto più grande di quella fisicamente presente nel computer (grande quanto l’intero

spazio di indirizzamento del programma). Questo meccanismo sfrutta parte della memoria

secondaria (ad esempio di un hard disk) per creare dei file di paging sui quali spostare le

pagine che dovrebbero risiedere in RAM ma che non trovano spazio in quel momento.

Questa operazione di spostamento dalla RAM al file di paging e viceversa si

chiama swapping. Se lo swapping è molto frequente le prestazioni del computer si

riducono. In tal modo vengono anche mascherati i dettagli sulla collocazione fisica dei dati.

 Gestore dei Processi: anche noto come Scheduler, è il cuore del SO (Kernel), in quanto è la

parte che si occupa di gestire i Processi, ovvero i programmi in esecuzione sull’elaboratore

pronti a sfruttare le risorse hardware che quest’ultimo mette a disposizione. Questo strato

comunica direttamente con l’hardware ed è strettamente dipendente da esso, per tale

motivo i microprogrammi che lo compongono vengono chiamati Primitive del Nucleo. Il

kernel deve quindi assegnare ciclicamente e per un tempo molto limitato la CPU ai Processi

che le richiedono, comportandosi come un semaforo che regola il traffico ad un incrocio

dando il verde un po' a tutti ma per un tempo limitato. Per effettuare tale gestione il Kernel

deve implementare un opportuno Algoritmo di Scheduling dei Processi.

Quando si acquista un computer, specialmente un portatile o un desktop di marca, il SO

solitamente è già installato. Se invece si acquista un computer assemblato, cioè si acquistano

separatamente i singoli pezzi e si assemblano in proprio (o con l'aiuto di un tecnico), è necessario

acquistare separatamente il SO ed installarlo successivamente nel computer. Quando il computer

5

è spento il S.O. è presente su una memoria di massa, solitamente una ROM. All'accensione della

macchina ha luogo una fase detta di boot (o bootstrap), durante il quale viene eseguito un

programma presente in ROM detto BIOS il quale, sostanzialmente, carica il SO nella RAM per

avviarlo. I dettagli saranno decritti nelle prossime sezioni. Oltre ai compiti “tradizionali” un SO

deve fornire al programmatore delle API per sfruttare i servizi di rete. In genere il SO è uno strato

software organizzato secondo un Modello Monolitico, nella quale tutto è messo insieme senza

alcuna strutturazione ben precisa:

Il vantaggio del Modello Analitico è l’efficienza raggiunta dal SO dal punto di vista prestazionale,

che è l’obiettivo fondamentale da raggiungere; lo svantaggio è la difficoltà nell’aggiornamento del

codice, in quanto questi 4 pezzi del SO costituiranno un unico codice software nel quale è difficile

isolare una funzionalità ricercata. Il SO viene suddiviso in 4 pezzi fondamentali responsabili della

stretta interazione con l’hardware sottostante, ed essi devono essere eseguiti necessariamente in

Modalità Supervisore (o Modalità Kernel), cioè in una modalità privilegiata che consenta ai

programmi di accedere e gestire direttamente l’hardware sottostante. La Shell del SO e tutto il

software applicativo viene invece eseguito in Modalità Utente, nella quale le funzioni a

disposizione sono molto limitate al fine di impedire ad utenti inesperti mediante i loro programmi

di danneggiare le risorse hardware; in tale modalità i programmi hanno a disposizione solo un

sottoinsieme delle istruzioni assembler, solo una parte della RAM e solo alcuni registri di sistema.

Altri SO adottano una diversa organizzazione con il Modello Client-Server che cerca di ridurre al

minimo i pezzi di SO che lavorano in modalità supervisore (le system calls) e si basano quindi su un

Micro Kernel detto anche nucleo minimo. 6

Molte funzioni sono realizzate da processi server che sono in esecuzione nella modalità utente,

quindi il Micro Kernel si compone essenzialmente di funzioni di base per la gestione dei processi

come lo schedulatore ed i meccanismi di comunicazione fra Processi, ovvero le primitive di

comunicazione di base send() e receive(). Questo modello è più sicuro rispetto quello Monolitico,

adatta bene a SO di rete, ma risulta meno efficiente DEL Monolitico in quanto aggiunge un

ulteriore strato software aggiuntivo che è il Micro Kernel. Il mercato attuale privilegia il modello

Monolitico. 1.1. Sistemi Operativi più Famosi

Proprio perché si tratta del primo software da caricare su una macchina nuova, bisogna avere ben

presente quali e quanti sono SO in commercio. I SO più diffusi sono i Windows di Microsoft (che

hanno soppiantato l’MS-DOS), il MacOs di Macintosh, Linux e Unix utilizzati soprattutto per i

server o in ambito di ricerca. Viene mostrata una descrizione più accurati di questi:

 Windows: è il SO più diffuso della Microsoft, attualmente disponibile sul mercato nella

versione Windows 10. I vantaggi principali di un sistema operativo Windows sono

riconducibili al fatto che è facile sia da imparare che da usare ma soprattutto che si tratta

di un SO universalmente supportato. Utilizzando infatti un SO Windows, non ci dovrebbero

mai essere problemi di compatibilità con la quasi totalità delle periferiche e dei software

presenti in commercio. Tutti gli applicativi standard girano su

Windows, compatibile con quasi tutto l’hardware sul mercato,

ad oggi la stragrande maggioranza delle applicazioni è

concepita per Win

Anteprima
Vedrai una selezione di 20 pagine su 106
Sistemi Operativi (Corso Completo in Digitale) Pag. 1 Sistemi Operativi (Corso Completo in Digitale) Pag. 2
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 6
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 11
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 16
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 21
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 26
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 31
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 36
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 41
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 46
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 51
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 56
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 61
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 66
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 71
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 76
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 81
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 86
Anteprima di 20 pagg. su 106.
Scarica il documento per vederlo tutto.
Sistemi Operativi (Corso Completo in Digitale) Pag. 91
1 su 106
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 appuntiDiIngegneria94 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 della Campania "Luigi Vanvitelli" o del prof Aversa Rocco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community