Sistemi Operativi 1 Organizzazione e struttura dei sistemi operativi

Politecnico di Torino
CeTeM
Sistemi Operativi
1
Organizzazione e struttura dei sistemi
operativi
Organizzazione e struttura dei Sistemi Operativi
Un sistema operativo è un software con il compito di svolgere le seguenti funzioni:
• assegnazione delle risorse (CPU, memoria, ecc.)
• risoluzione dei conflitti
• scelta dei criteri di assegnazione
• fornire delle system call
• presentare all’utente una macchina estesa (o virtuale).
• nascondere all’utente i dettagli HW legati ad un dispositivo
Nei sistemi monoprogrammati, un solo processo è in memoria e può essere eseguito;
l’utilizzo della risorsa CPU è basso soprattutto per i processi I/O bound. Per contro, nei
sistemi multiprogrammati, più programmi possono risiedere contemporaneamente in
memoria e quando il processo che detiene la CPU si blocca, per esempio in attesa di
un’operazione di I/O, il sistema operativo può mandare in esecuzione un altro programma.
Nei sistemi multiprogrammati l’occupazione teorica della CPU può arrivare al 100%.
I sistemi a divisione di tempo (time sharing) sono un’ulteriore evoluzione dei sistemi
multiprogrammati; un processo può restare in esecuzione solo per un quanto di tempo
prestabilito, dopodiché la CPU è assegnata ad un altro processo in attesa. Con questa
strategia migliorano i tempi di attesa per i programmi corti, ma subentra il problema del
cambio di contesto (context switching) tra processi.
Le componenti essenziali di un sistema operativo sono:
• Gestore dei processi.
• Gestori della memoria principale e secondaria.
• Gestore dei dispositivi di I/O.
• Gestore dei file.
• Sistema di protezione.
• Gestione della comunicazione tra sistemi distribuiti.
• Interprete dei comandi
I programmi comunicano con il S.O. e richiedono ad esso particolari servizi tramite le
chiamate di sistema (system call); ad esempio: gestione dei file, sincronizzazione tra
processi, invio di messaggi, ecc.
Le chiamate di sistema possono essere usate direttamente come istruzioni nei linguaggi
ad alto livello (esempio C) e a ciascuna chiamata di sistema corrisponde una funzione di
libreria.
Esecuzione di una system call:
• memorizzazione dei parametri
• trasferimento del controllo al S.O. (INT).
• ritorno del controllo al programma chiamante, con restituzione di alcuni parametri
(codice di stato).
© Politecnico di Torino
Data ultima revisione 07/04/00
Pagina 1 di 4
Autore: Andrea Sanna
Politecnico di Torino
CeTeM
Sistemi Operativi
1
Organizzazione e struttura dei sistemi
operativi
Possibili organizzazioni dei S.O.:
• Sistemi monolitici
Dos, Unix
• Sistemi a livelli
OS/2
• Macchine virtuali
VM/370
• Modello cliente servitore.
Nei sistemi monolitici il S.O. è scritto come una collezione di procedure.
Ogni procedura può chiamare qualunque altra procedura del sistema (nessun livello di
gerarchia).
Nei sistemi a livelli:
• Le funzioni del sistema sono organizzate a livelli gerarchici.
• Ogni livello definisce un tipo di servizio e le modalità di utilizzo da parte del livello
superiore.
• Ogni livello definisce una macchina virtuale, aggiungendo nuove funzionalità.
• Difficoltà nella realizzazione pratica della gerarchia.
Il VM/370 crea più macchine virtuali; ogni macchina può ospitare un S.O. differente.
© Politecnico di Torino
Data ultima revisione 07/04/00
Pagina 2 di 4
Autore: Andrea Sanna
Politecnico di Torino
CeTeM
Sistemi Operativi
1
Organizzazione e struttura dei sistemi
operativi
Domande
Domanda 1
Illustrare le differenze tra sistemi operativi multiprogrammati e sistemi operativi a divisione
di tempo (time sharing).
Risposta
Nei sistemi multiprogrammati la memoria è divisa in un certo numero di partizioni, che
vengono assegnate, secondo determinate politiche, ai processi. Se un processo è in
attesa del completamento di un’operazione di I/O, può essere eseguito un altro processo
presente in memoria, migliorando così l’utilizzo della CPU.
Nei sistemi a divisione di tempo (time sharing) esiste una vera e propria interazione tra
utente e sistema (i sistemi multiprogrammati sono sostanzialmente dei sistemi batch)
in cui la CPU viene assegnata periodicamente per un quanto di tempo a tutti i processi.
Domanda 2
Si illustrino le principali funzioni di un sistema operativo.
Risposta
Un sistema operativo deve essere in grado di gestire le risorse del sistema di elaborazione
(CPU, memoria, ecc.) assegnandole ai processi che ne facciano richiesta. Al contempo
deve essere in grado di gestire eventuali contese per le risorse risolvendo i problemi di
competizione tra i processi. Inoltre, un sistema operativo deve presentare all’utente una
macchina virtuale (o estesa) in modo da nascondere tutti i dettagli hardware che
sarebbero troppo complicati da gestire per la maggior parte degli utenti. Il sistema
operativo deve quindi mettere a disposizione una serie di funzioni, dette system call, che
permettono all’utente di gestire file, creare e sincronizzare processi, gestire i periferici ecc.
Le system call devono poter essere usate come funzioni di libreria nei programmi ad alto
livello, in modo da essere utilizzabili dai programmatori.
Domanda 3
Descrivere le principali tipologie di sistemi operativi.
Risposta
Possono essere individuate 4 grosse categorie di sistemi operativi:
A. Sistemi monolitici: tutte le procedure del kernel sono unite insieme senza alcuna
gerarchia (una procedura del nucleo ha la completa “visibilità” di tutte le altre procedure).
B. Sistemi a livelli: le funzioni del sistema operativo sono organizzate a livelli gerarchici;
ogni livello definisce i servizi e le modalità di utilizzo dei medesimi da parte del livello
immediatamente superiore. Ogni livello è come se definisse una nuova macchina virtuale
che aggiunge delle funzionalità a quella definita dal livello sottostante.
C. Sistemi basati sul modello cliente servitore: il nucleo del sistema operativo è ridotto al
minimo indispensabile e molte delle funzione del sistema operativo sono realizzate a
livello utente. Quando un processo utente (cliente) invia una richiesta di servizio, il kernel
analizza la richiesta e la “gira” ad un processo utente (servitore) in grado di soddisfarla.
© Politecnico di Torino
Data ultima revisione 07/04/00
Pagina 3 di 4
Autore: Andrea Sanna
Politecnico di Torino
CeTeM
Sistemi Operativi
1
Organizzazione e struttura dei sistemi
operativi
D. Sistemi distribuiti: i sistemi distribuiti sono un’estensione del modello cliente servitore
in cui i vari processi e le vari moduli del sistema possono essere fisicamente allocati su
macchine differenti.
© Politecnico di Torino
Data ultima revisione 07/04/00
Pagina 4 di 4
Autore: Andrea Sanna