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’obbiettivo 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’obbiettivo di creare una macchina astratta, realizzando funzionalità di alto Schema di un S.O.

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.

Questi obbiettivi sono in contrapposizione (avere un sistema più efficace ed efficiente possibile). A quale obbiettivo

dare priorità dipende dal contesto e dalle politiche introdotte dal sistema operativo.

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 Schema di un Kernel Monolitico

servendosi dei servizi che esso offre, è dunque la colonna portante di un S.O..

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). Il vantaggio di un sistema operativo con

Schema di un Microkernel 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: 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 (assemply, C). Segue

un’illustrazione di un modello astratto del calcolatore.

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: 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 sotto divise in settori; Il controller del disco determina l’interazione logica tra

il dispositivo ed il calcolatore.

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: 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:

o Sincronizzazione dei process

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