Sistemi Operativi (introduzione)
Cos’è un Sistema Operativo?
- Un programma che agisce come tramite tra l’utente e gli elementi fisici del calcolatore.
- E’ un insieme di programmi (software) che:
– gestisce gli elementi fisici di un calcolatore (hardware),
– fornisce una piattaforma ai programmi di applicazione
– agisce da intermediario tra l’utente e la struttura fisica del calcolatore
Scopi di un sistema operativo:
– Eseguire programmi utente e rendere più semplice la soluzione dei problemi dell’utente.
– Rendere conveniente ed efficiente l’utilizzo del sistema di calcolo.
- Un sistema operativo deve assicurare il corretto funzionamento di un calcolatore.
- Funzioni del Sistema Operativo
– Estendere e astrarre l’hardware (per semplificare la programmazione, per rendere i programmi portabili, etc..).
- (ad es. un “file” è un astrazione)
– Gestire le risorse
- (ad es. suddividere stampanti, dischi, tempo di CPU fra più programmi)
Ruolo del Sistema Operativo
- I sistemi operativi (S.O. abbreviato) esistono perché forniscono agli utenti uno strumento conveniente per l’uso di un sistema di calcolo
- Convenienza: – faciltà d’uso, efficienza uso risorse.
- Gran parte della teoria dei S.O. si è concentrata sull’efficienza.
- Inoltre, hardware e S.O. si sono influenzati vicendevolmente.
Ruolo del Sistema Operativo: punto di vista dell’utente
PC: Il sistema operativo è progettato principalmente per facilitare l’uso del computer.
Mainframe e Minicomputer: Occorre massimizzare l’uso delle risorse.
Workstation: Compromesso ottimale tra l’uso delle risorse individuali e risorse condivise.
Palmari e simili: Progettati per l’uso individuale prestando attenzione alle prestazioni della batteria
Sistemi Embedded: Concepiti per funzionare senza l’intervento dell’utente
Ruolo del Sistema Operativo: punto di vista del sistema
- Il sistema operativo è il programma più strettamente connesso con l’hardware.
- Quindi, è:
– allocatore di risorse: di fronte a richieste conflittuali decide come assegnare equamente ed efficientemente le risorse ai programmi,
– programma di controllo: garantisce l’esecuzione dei programmi senza errori e usi impropri del computer,
– esecutore di funzioni comuni: esegue funzioni di utilità generale comuni ai diversi programmi (ad es. routine di I/O),
– nucleo (Kernel): l’unico programma sempre in esecuzione (tutti gli altri sono “programmi applicativi”).
Servizi di un sistema operativo
- Un S.O. offre un ambiente in cui eseguire i programmi e fornire servizi ai programmi e ai loro utenti.
- Ecco una lista di alcune classi di servizi comuni offerti dal S.O. per rendere più agevole la programmazione:
– Interfaccia con l’utente:
- interfaccia a riga di comando (CLI) - basata su stringhe che codificano i comandi, insieme ad un metodo per inserirli e modificarli,
- interfaccia a lotti - comandi e relative direttive sono codificati nei file ed eseguiti successivamente a lotti,
- interfaccia grafica con l’utente (GUI) - sistema grafico a finestre dotato di un dispositivo puntatore (ad es. il mouse).
– Esecuzione di un programma – il sistema deve poter caricare un programma in memoria ed eseguirlo.
– Operazioni di I/O - i programmi utenti non possono eseguire direttamente operazioni di I/O:
- S.O. deve fornire strumenti per permettere l’esecuzione di operazioni di I/O.
– Gestione del file system – esecuzione di operazioni di lettura, scrittura, creazione e cancellazione file.
– Comunicazioni– scambi di informazioni tra processi in esecuzione sullo stesso calcolatore o collegati tra loro per mezzo di una rete.
- Realizzate tramite memoria condivisa o scambio di messaggi.
– Rilevamento di errori – assicurare la correttezza della computazione rilevando eventuali errori di CPU, di memoria, di I/O o in programmi utenti.
Esiste un’altra serie di funzioni del S.O. che non riguarda direttamente l’utente ma assicura il funzionamento efficiente del sistema stesso:
– Assegnazione delle risorse – allocare risorse a più utenti o processi che sono concorrentemente in esecuzione.
– Contabilizzazione dell’uso delle risorse – registrare quali utenti usino il calcolatore, segnalando quali e quante risorse impieghino.
– Protezione e sicurezza – assicurare il controllo dell’accesso a tutte le risorse condivise di sistema identificando l’utente ad ogni suo accesso.
Struttura del sistema operativo
Concetto chiave è quello della multiprogrammazione:
– necessaria per aumentare l’efficienza.
- Un solo utente non può tenere CPU e dispositivi I/O occupati per tutto il tempo.
- La multiprogrammazione consente di aumentare la percentuale di utilizzo della CPU organizzando i lavori in modo tale da mantenerla in continua attività.
- Un sottoinsieme dei job si trova in memoria centrale (job pool).
- Un job viene selezionato (job scheduling) ed eseguito.
- Quando il job è in attesa (ad es. di un’ operazione di I/O), il S.O. esegue un altro job.
- Altro concetto chiave: timesharing (multitasking):
- – estensione logica della multiprogrammazione,
- – la CPU commuta tra i job così frequentemente che gli utenti possono interagire con ciascun job mentre è in esecuzione, realizzando una computazione interattiva.
- Tempo di Risposta < 1 secondo.
- ciascun utente ha almeno un processo in esecuzione in memoria.
- Se diversi processi sono pronti per essere eseguiti sarà necessaria la schedulazione della CPU.
- Se lo spazio di memoria non è sufficiente per contenere tutti i processi,
– tramite lo swapping alcuni processi verranno spostati temporaneamente su memoria di massa e poi riportati in memoria centrale per essere eseguiti.
La memoria virtuale permette l’esecuzione di processi che non sono completamente in memoria e separa la memoria fisica da quella logica.
Attività del S.O.: gestione delle interruzioni
- I sistemi operativi moderni sono caratterizzati dal fatto di essere guidati dalle interruzioni (interrupt driven).
– se non ci sono processi da eseguire, dispositivi di I/O da servire o utenti con cui interagire, il S.O. resta inattivo nell’attesa che accada qualcosa.
- In presenza di una interruzione:
– il sistema operativo preserva lo stato della CPU salvando lo stato dei registri e del contatore di programma prima di servire l’interruzione.
– Determina di che tipo sia l’interruzione.
– Segmenti diversi di codice determinano quale azione debba essere presa per ciascun tipo di interrupt.
– Dopo aver servito l’interruzione il S.O. ripristina lo stato della CPU (ad es. i registri) e del contatore di programma originali.
Duplice modo di funzionamento (dual mode)
- La protezione deve essere garantita per qualsiasi risorsa condivisibile del sistema.
- L’architettura del sistema deve supportare almeno due distinti modi di funzionamento:
- 1. Modo d’utente (User mode) in cui avviene l’esecuzione dei programmi utente
- 2. Modo di sistema (Monitor mode o kernel mode o system mode) in cui avviene l’esecuzione delle chiamate e dei programmi di sistema.
- Un bit di modo (mode bit) di cui deve essere dotata l’architettura (hardware) della CPU indica il modo corrente: sistema (0), utente (1).
- In presenza di un’interruzione o eccezione l’hardware commuta il modo di sistema.
- Le istruzioni privilegiate possono essere date solo in modo di sistema
- L’utente, per richiedere un servizio al Sistema Operativo, utilizza una chiamata di funzione del sistema operativo, detta anche chiamata del sistema (system call), gestita dal sistema tramite interrupt.