Estratto del documento

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

Sistemi operativi

Riassunto

Andrea Mansi 2018-2019 - UNIUD

Bibliografia:

  • Slides Prof. Marina Lenisa UNIUD
  • Slides Prof. Ivan Scagnetto UNIUD

1

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

Sommario

  • 1. Introduzione ............................................................................................................................................. 3
  • 2. Richiami di Hardware ................................................................................................................................ 6
  • 3. Struttura dei Sistemi Operativi .................................................................................................................. 7
  • 4. Processi & Threads.................................................................................................................................. 11
  • 5. Scheduling dei Processi ........................................................................................................................... 18
  • 6. Cooperazione tra Processi ....................................................................................................................... 25
  • 7. Deadlock ................................................................................................................................................. 34
  • 8. Memory Management ............................................................................................................................ 38
  • 9. Virtual Memory....................................................................................................................................... 45
  • 10. Input / Output....................................................................................................................................... 52
  • 11. Dischi .................................................................................................................................................... 58
  • 12. File System ............................................................................................................................................ 65
  • 13. Implementazione del File System .......................................................................................................... 69

2

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

1. Introduzione

Sistema operativo: Un sistema operativo, abbreviato S.O. è un software di sistema che agisce come intermediario tra l’utente e l’hardware del calcolatore. Un S.O. ha il compito di gestire le risorse hardware e software di quest’ultimo e di fornire servizi di base ai software applicativi installati.

Inoltre, si pone l’obiettivo di nascondere tutti i dettagli tecnici legati allo specifico hardware e architettura su cui è installato, rappresentando le informazioni ad un alto livello, meglio comprensibile dall'uomo. Un sistema operativo fornisce all'utente una serie di comandi e servizi per usufruire al meglio della potenza di calcolo di un qualsivoglia elaboratore elettronico.

Esso garantisce l'operatività di base di un calcolatore, coordinando e gestendo le risorse hardware di processamento, memorizzazione, input/output, le risorse/attività software (processi) e facendo da interfaccia con l'utente, senza il quale non sarebbe possibile l'utilizzo del calcolatore stesso.

Riassumendo, un S.O. si pone principalmente l’obiettivo di creare una macchina astratta, realizzando funzionalità di alto livello, nascondendo i dettagli di basso livello; un S.O. mira quindi a soddisfare principalmente i seguenti criteri:

  • Eseguire i programmi utente e semplificargli l’utilizzo del calcolatore.
  • Gestire le risorse del calcolatore in modo sicuro ed efficiente.

Schema di un S.O.

Questi obiettivi sono in contrapposizione (avere un sistema più efficace ed efficiente possibile). A quale obiettivo dare priorità dipende dal contesto e dalle politiche introdotte dal sistema operativo.

Kernel

Kernel: Nucleo di un sistema operativo: Il kernel è un gruppo di funzioni fondamentali, strettamente interconnesse fra loro, e con l'hardware, che vengono eseguite con il privilegio massimo disponibile sulla macchina (la modalità kernel designa proprio questo tipo di interazione).

Un kernel non è altro che un software che ha il compito di fornire ai moduli che compongono il sistema operativo e ai programmi in esecuzione sul calcolatore le funzioni fondamentali, inoltre fornisce egli un accesso controllato all'hardware, sollevandoli dai dettagli della sua gestione.

Il kernel fornisce dunque le funzionalità di base per tutte le altre componenti del sistema operativo, che assolvono le loro funzioni servendosi dei servizi che esso offre, è dunque la colonna portante di un S.O..

Schema di un Kernel Monolitico

A seconda del tipo di sistema operativo il kernel può inglobare altre parti (kernel classico, monolitico o modulare) o fornire solo funzioni base delegando più funzioni possibili a “servers” (moduli) esterni (microkernel).

Un kernel tradizionale, ovvero monolitico, integra invece dentro di sé la gestione della memoria virtuale e della CPU, lo scheduler e i gestori del file system, nonché i driver necessari per il controllo di tutte le periferiche collegate. Quali funzioni sia opportuno che il kernel debba fornire e quali possano essere demandate a moduli esterni è oggetto di opinioni divergenti (che danno appunto vita alle diverse tipologie di kernel sopracitate).

Schema di un Microkernel

Il vantaggio di un sistema operativo con microkernel è la maggiore semplicità del suo kernel, del suo sviluppo, della possibilità di cambiare facilmente i moduli e di una certa tolleranza ai guasti in quanto se un modulo "crolla" (crash), solo la funzionalità del modulo in questione si interrompe, ed il sistema rimane funzionale e gestibile dall'amministratore (che può ad esempio ripristinare la funzionalità del modulo stesso); lo svantaggio è invece l'interazione più complessa e costosa fra kernel e le altre componenti del S.O. stesso, che spesso rallenta il sistema e/o lo rende meno stabile.

3

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

Alcuni concetti e tipologie base di sistemi operativi

Multiprogrammazione: In generale un singolo utente quando utilizza un calcolatore non può tenere costantemente occupati la CPU e i dispositivi di I/O. La multiprogrammazione consente di aumentare l’utilizzo della CPU organizzando il lavoro in modo tale da mantenerla in continua attività.

L’idea su cui si fonda questo concetto è la seguente: il sistema operativo tiene nella memoria centrale diversi processi. Il S.O. sceglie uno tra quelli contenuti nella memoria e inizia ad eseguirlo. Esso a qualche punto potrebbe trovarsi in attesa di qualche evento, come il completamento di un’operazione di input output.

In questo caso nei sistemi non multiprogrammati la CPU rimarrebbe inattiva, ma in questo caso, invece, il S.O. passa a un altro processo e lo esegue. Quando il primo processo ha terminato l’attesa, la CPU ne riprende l’esecuzione. Finché c’è almeno un lavoro da eseguire la CPU non rimarrà mai inattiva.

Multitasking: In informatica, un sistema operativo con supporto per il multitasking (multiprocessualità) permette di eseguire più programmi contemporaneamente. Se ad esempio viene chiesto al sistema di eseguire in contemporanea due processi A e B, la CPU eseguirà per qualche istante di tempo il processo A, poi per qualche istante successivo il processo B, poi tornerà a eseguire il processo A e così via.

Il passaggio dal processo A al processo B e viceversa viene definito "commutazione di contesto" (context switch). Le decisioni riguardanti l'esecuzione di un cambio di contesto tra due programmi vengono intraprese da un componente del sistema operativo, lo scheduler processi, il quale invierà le proprie decisioni a un altro modulo del sistema operativo, il dispatcher, che eseguirà effettivamente il cambio di contesto.

A seconda di quale strategia (algoritmo di scheduling) venga seguita, lo scheduler controlla la ripartizione del tempo di CPU tra tutti i processi attivi.

Sistemi Time-Sharing: Letteralmente "condivisione di tempo", è un approccio all'uso interattivo dei calcolatori in cui un singolo calcolatore viene utilizzato contemporaneamente da più utenti, ciascuno con un proprio terminale. Più nello specifico, l'esecuzione dell'attività della CPU viene suddivisa in quanti o intervalli temporali (come nel multitasking).

Ogni quanto è assegnato sequenzialmente a vari processi di uno stesso utente o a processi di più utenti. La CPU del calcolatore viene quindi utilizzata per rispondere alle richieste dei singoli utenti, passando rapidamente da uno all'altro e dando l'impressione che ognuno abbia a disposizione il calcolatore centrale interamente per sé.

Il time-sharing è correlato al multitasking nel senso che in ambedue i sistemi un singolo computer esegue più processi in modo che appare simultaneo. Tuttavia, il time-sharing fa riferimento ad un calcolatore che supporta più utenti simultaneamente, mentre il multitasking, come definito precedentemente è un termine più ampio che implica l'esecuzione di più processi “contemporaneamente”.

Nei sistemi time-sharing è più importante garantire un basso tempo di risposta rispetto al minimizzare il tempo di turnaround dei processi. Due persone che utilizzano lo stesso sistema time-sharing allo stesso momento potrebbero ricevere tempi di risposta molto differenti, infatti, il tempo di risposta dipende molto dal tipo di processo in esecuzione: un processo CPU-bound potrebbe avere un tempo di risposta molto più lungo di un processo interattivo (processo I/O-bound).

Sistemi Real Time: Un sistema operativo real-time è un sistema operativo specializzato per il supporto di applicazioni software real-time. Questi sistemi vengono utilizzati tipicamente in ambito industriale (controllo di processo, pilotaggio di robot, trasferimento dati nelle telecomunicazioni) o comunque dove sia necessario ottenere una risposta dal sistema entro un tempo prefissato.

Un sistema operativo real-time non deve essere necessariamente veloce: non è importante l'intervallo di tempo in cui il sistema operativo/applicativo deve reagire; l'importante è che risponda entro un tempo massimo prefissato. In altre parole, il sistema deve essere prevedibile, nel senso che nel sistema si possa conoscere il tempismo reale (nei migliori o peggiori dei casi) di un determinato processo o elaborazione.

Quindi un sistema real-time deve garantire che una elaborazione (o job/task) termini entro un dato vincolo temporale o scadenza (detta in gergo “deadline”). Per garantire questo è richiesto che la schedulazione delle operazioni sia fattibile. Il concetto di fattibilità di schedulazione è alla base della teoria dei sistemi real-time.

Sistemi Operativi di Rete: Sono quei sistemi operativi utilizzati quando è necessaria la distribuzione della computazione tra più processi in cui sono presenti più calcolatori che comunicano tra loro attraverso linee di comunicazione.

4

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

Sistemi Operativi Distribuiti: I sistemi operativi distribuiti vengono utilizzati quando più calcolatori sono collegati tra loro e si hanno più processi che comunicano mediante l’invio di messaggi. In questo caso si vuole ottimizzare l'utilizzo delle risorse evitando che esse risiedano in una macchina sola.

Questo tipo di architettura di un sistema di elaborazione si chiama "network" ed è costituito da un insieme di calcolatori che, anche se a prima vista possono apparire come simili, possono essere dedicati a scopi diversi. L’utente ha una visione unitaria del sistema di calcolo.

Kernel Prelazionabile: Un kernel si dice prelazionabile quando consente la prelazione di un processo anche quando opera in kernel-mode (ad esempio quando esegue il codice di una chiamata di sistema). I punti di prelazionabilità individuano delle posizioni nel codice delle chiamate di sistema in cui è possibile che il processo venga prelazionato, solitamente i punti di prelazionabilità vengono individuati in posizioni sicure del kernel, ovvero, laddove non vi siano in corso operazioni di modifica delle strutture dati di quest’ultimo (per non rischiare di creare delle inconsistenze).

Tipicamente nei sistemi operativi per applicazioni tradizionali il kernel è prelazionabile in quanto non vi sono esigenze di risposte in tempi così rapidi come quelli tipici di questi sistemi. Invece nei sistemi real-time avere un kernel prelazionabile è fondamentale per evitare che una chiamata di sistema troppo lunga porti al fallimento dei vincoli temporali dei vari processi.

I vantaggi di un kernel prelazionabile consistono nell’avere dei tempi di risposta molto più rapidi, raggiungendo un grado di parallelismo molto più alto rispetto ai kernel tradizionali. Gli svantaggi sono rappresentati dalla maggior complessità del kernel stesso e dal rischio di deadlock/inconsistenze in caso di errori di progettazione dei punti di prelazione o dell’utilizzo delle primitive di sincronizzazione.

5

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

2. Richiami di Hardware

Segue un riassunto delle principali nozioni richieste in ambito hardware per lo studio dei sistemi operativi. Alcune di queste nozioni verranno riprese e approfondite nei capitoli successivi.

  • Struttura dei sistemi di calcolo
  • Struttura dell’input/output
  • Struttura della memoria
  • Protezione hardware

Architettura dei calcolatori

Architettura dei calcolatori: Un sistema operativo (S.O.) è fortemente legato all’hardware del calcolatore su cui è installato. Infatti un S.O. estende l’insieme di istruzioni del calcolatore e inoltre gestisce le sue risorse hardware. Ne consegue che un S.O. deve avere un’ottima conoscenza interna dell’hardware, o almeno, di come quest’ultimo appaia ad alto livello.

Questa è la ragione per cui tipicamente un S.O. è scritto in un linguaggio “vicino” alla macchina (assembly, C). Segue un’illustrazione di un modello astratto del calcolatore.

Struttura della memoria

Struttura della memoria: Idealmente si vorrebbe che la memoria fosse estremamente veloce (più veloce del tempo richiesto per l’esecuzione di un’istruzione), molto capiente ed economica. In realtà la memoria si distingue in almeno due categorie: memoria principale ovvero la memoria a cui la CPU può accedere direttamente e la memoria secondaria, un’estensione della memoria principale che fornisce una memoria non volatile (e solitamente più grande).

Dischi magnetici

Dischi magnetici: Sono il principale dispositivo di archiviazione (memoria secondaria) utilizzato ai giorni nostri. Sono sostanzialmente dei piatti di metallo rigido in rotazione, ricoperti di materiale ferromagnetico. La superficie del disco è logicamente divisa in tracce, che sono suddivise in settori; Il controller del disco determina l’interazione logica tra il dispositivo ed il calcolatore.

Input/Output

Input/Output: Con input output si indicano le fasi di scambio informazioni tra i dispositivi collegati al calcolatore e il calcolatore stesso. I dispositivi di I/O possono funzionare concorrentemente alla CPU, ciascuno di essi possiede un controller che permette l’interfacciamento con la CPU.

Queste operazioni possono essere eseguite in modo sincrono, asincrono e DMA (Direct Memory Access). Tutto questo verrà spiegato in modo molto più dettagliato nei capitoli successivi.

Protezione hardware

Protezione Hardware: La condivisione di risorse di sistema richiede che il S.O. assicuri che un programma scorretto non possa portare altri programmi (corretti) a funzionare non correttamente. L’hardware deve fornire un supporto per differenziare almeno tra due modi di funzionamento:

Schematizzazione di un disco

  • User mode: La CPU esegue codice utente
  • Kernel mode (o supervisor/system/monitor mode): la CPU sta eseguendo codice del sistema operativo.

Questa funzionalità richiede supporto a livello hardware: la CPU ha un mode bit che indica in quale modalità si trova. Mentre nella modalità user la CPU esegue il codice di un processo utente, nella modalità kernel essa esegue il codice del sistema operativo.

L’utilità nel disporre di due modalità consiste nel fatto che tutte le operazioni potenzialmente pericolose per il sistema possono essere marcate come eseguibili soltanto in kernel mode, evitando che possano essere richiamate in modo erroneo dai processi degli utenti. Quindi soltanto il codice del sistema operativo (che si suppone essere stato scritto in modo da sfruttare correttamente l’hardware della macchina) può eseguire queste istruzioni privilegiate.

I processi degli utenti potranno invocare i servizi oggetto delle istruzioni privilegiate attraverso il meccanismo delle chiamate di sistema che provocano il passaggio da user mode a kernel mode e viceversa.

6

Andrea Mansi - UNIUD - Riassunto teoria sistemi operativi

3. Struttura dei sistemi operativi

➢ Componenti comuni dei sistemi operativi:

  • Gestione dei processi
  • Gestione della memoria principale
  • Gestione della memoria secondaria
  • Gestione dell’I/O (input & output)
  • Gestione dei file (Filesystem)
  • Sistemi di protezione (Sicurezza)
  • Networking (connessioni di rete)
  • Sistema di interpretazione dei comandi

Segue una breve descrizione di ogni componente: (Gli argomenti vengono approfonditi nei cap. successivi).

  • Gestione dei Processi:

Un processo è un programma in esecuzione che necessita di certe risorse per assolvere il suo compito, ad esempio: tempo di CPU, memoria, file, dispositivi di I/O.

Il sistema operativo, in ambito della gestione dei processi è responsabile delle seguenti attività:

  • Creazione e cancellazione dei processi
  • Sospensione e resume dei processi
  • Fornire meccanismi per:
  • Sincronizzazione dei processi
Anteprima
Vedrai una selezione di 10 pagine su 73
Sistemi Operativi Pag. 1 Sistemi Operativi Pag. 2
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 6
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 11
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 16
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 21
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 26
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 31
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 36
Anteprima di 10 pagg. su 73.
Scarica il documento per vederlo tutto.
Sistemi Operativi Pag. 41
1 su 73
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 Mansitos 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.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community