Sistemi operativi
Capitolo 1: Introduzione
Un s.o. è un insieme di programmi ed agisce da intermediario tra l’utente di un computer e l’hardware. I suoi scopi sono:
- Eseguire i programmi utente e risolverne più facilmente i problemi.
- Rendere il sistema computer conveniente per l’utente.
- Gestire gli elementi fisici del calcolatore, assicurare un funzionamento efficiente, agevolare il lavoro dell’utente.
- Assegnare le risorse a disposizione.
- Controllare l’utilizzo delle risorse a disposizione.
Esso fa operare in maniera efficiente un computer.
Le componenti di un s.o. sono:
- Hardware: fornisce le risorse fisiche di elaborazione (costituito dalla CPU, dalla memoria, e dai dispositivi di ingresso/uscita I/O);
- Programmi applicativi: definiscono le modalità con cui queste risorse fisiche sono utilizzate per risolvere i problemi di elaborazione dei dati dell’utente (elaboratori di testi, fogli elettronici, compilatori, strumenti per la navigazione nel Web);
- Utente: persone, macchine ed altri computer.
L’OS può essere visto da due diverse prospettive:
- Punto di vista utente (Pc → facilità d’uso, prestazioni)
- Mainframe → massimizzazione utilizzo risorse, distribuzione equa risorse tra i vari utenti
- Palmare → velocità, consumo ridotto delle batterie
- Punto di vista sistema (Assegnatore di risorse)
- Controllore del loro utilizzo
Definizione del s.o.:
- Distributore di risorse: gestisce e distribuisce le risorse;
- Programma di controllo: controlla l’esecuzione dei programmi utente e le operazioni dei dispositivi di I/O;
- Kernel: l’unico programma che è sempre in funzione (tutto il resto sono programmi applicativi).
Comodità d’uso ed efficienza sono state a lungo considerate incompatibili tra di loro: l’attenzione era soprattutto rivolta all’efficienza del sistema operativo. Nei sistemi UNIX tramite l’introduzione della GUI (Graphic User Interface) si è trovato un compromesso tra le due.
Servizi offerti dal s.o.:
- User Interface
- CLI – Command Line Interface
- GUI – Graphic User Interface
- Batch – Semplice sistema a lotti
- Esecuzione di un programma (caricare ed eseguire un programma)
- I/O
- Gestione File System (Directory e File)
- Comunicazione tra processi
- Scambio Messaggi
- Memoria Condivisa
- Rilevazione Errori (guasto elettrico, mancanza carta, divisione per 0, accesso ad aree di memoria riservate...)
- Assegnazione delle risorse (tra processi e utenti)
- Contabilizzazione dell'uso delle risorse (tenere traccia di chi usa cosa) per redigere statistiche o addebitare agli utenti il costo dei servizi usati
- Protezione e Sicurezza:
- Interna (protezione della memoria, delle risorse).
- Esterna (protezione dalle intrusioni, identificazione degli utenti)
Sistemi mainframe
I sistemi mainframe sono stati i primi calcolatori impiegati per affrontare molte applicazioni scientifiche e commerciali si dividono in:
- Sistemi a lotti (batch) ad una e una sola applicazione alla volta:
- Riducono i tempi di processo raggruppando i job (processi) in batch (lotti) con necessità:
- Comprendono un ordinamento automatico dei processi: trasferiscono automaticamente il controllo da un job al successivo; s.o. semplice.
- Sono resident monitor:
- Il controllo inizialmente è del sistema;
- Il controllo viene trasferito al job;
- Quando il job viene completato il controllo ritorna al sistema.
- Sistemi multi-programmati:
- Procedure I/O fornite dal sistema
- Job scheduling (analisi di disponibilità delle risorse)
- Gestione della memoria il sistema deve distribuire la memoria tra più processi
- CPU scheduling (schedulazione della CPU) il sistema deve scegliere fra più processi pronti per essere eseguiti
- Gestione della cooperazione tra job
- Gestione della concorrenza tra job
- Sistemi a partizione del tempo d’elaborazione (time sharing o multitasking):
- La CPU è usata a turno da diversi job che sono mantenuti nella memoria o su disco (la CPU è assegnata ad un job solo se il job si trova in memoria)
- Un job viene spostato da disco a memoria principale e viceversa (swapping)
- Viene fornita la comunicazione diretta tra l’utente ed il sistema: Quando il sistema operativo termina l’esecuzione di un job, si aspetta la successiva istruzione di controllo dall’utente.
- Il Sistema Operativo si incarica dello switch tra lotti di job di utenti diversi a ciascuno dei quali è riservato un determinato time slice (quantità di tempo prestabilita o calcolata in cui la CPU è dedicata ad una risorsa in un sistema informatico).
- La suddivisione di tempo è invisibile all’utente
- La CPU esegue più lavori commutando le loro esecuzioni con una frequenza tale da permettere a ciascun utente di interagire col proprio programma. Comunicazione diretta tra utente e sistema. L’utente impartisce le istruzioni e attende una risposta immediata. Con questi tempi brevi il sistema passa rapidamente da un utente ad un altro.
- La CPU non rimane inattiva
- I sistemi operativi gestiscono e proteggono la memoria
- Utilizzo memoria virtuale, (dove i programmi possono avere dimensioni maggiori della memoria fisica)
Sistemi desktop
- Personal computers: computer rivolto ad un singolo utente
- Dispositivi I/O: tastiera, mouse, monitor, stampante
- Convenienza per l’utente e prontezza di risposta
- Possono adottare una tecnologia sviluppata per sistemi operativi complessi: Tuttavia spesso il PC è una macchina dedicata e non sono necessarie tecniche sofisticate di gestione della CPU
- Possono supportare diversi tipi di sistema operativo (Windows, MacOS, UNIX, Linux).
Sistemi paralleli
- Sistemi che possiedono più processori in stretta comunicazione tra loro. Conosciuti anche come sistemi multiprocessore
- Sistemi con processori strettamente accoppiati: i processori condividono la memoria e il clock; la comunicazione di solito passa attraverso la memoria condivisa
- Vantaggi dei sistemi paralleli:
- Maggiore quantità di elaborazione effettuata (tuttavia le primitive di gestione e la competizione per l’accesso alle risorse condivise abbassano il throughput ottimo, cioè il tasso massimo di produzione o il tasso massimo al quale qualcosa può essere elaborato)
- Economia di scala
- Aumento di affidabilità (in alcuni casi)
- Degradazione progressiva (graceful degradation)
- Sistemi tolleranti ai guasti (fault tolerant).
- Sistema multiprocessore asimmetrico:
- Ogni processore è assegnato ad uno specifico lavoro; il processore principale (master) organizza e gestisce il lavoro per i processori slave
- Più comune nei sistemi molto grandi
- Sistema multiprocessore simmetrico (SMP):
- Ogni processore esegue una copia del sistema operativo
- Possono essere eseguiti contemporaneamente molti processi senza che si produca un deterioramento delle prestazioni
- Gran parte dei moderni sistemi operativi forniscono supporto SMP
Sistemi multiprocessore
- Sistema multiprocessore simmetrico (SMP):
- Problema di gestione accurata delle CPU (controllo dei sovraccarichi)
- Condivisione delle risorse (memoria) e delle strutture dati
Sistemi distribuiti
- Il calcolo viene distribuito tra diversi processori fisicamente distinti
- Sistemi debolmente accoppiati: ogni processore possiede una propria memoria locale; i processori comunicano tra loro mediante linee di comunicazione come bus ad alta velocità o linee telefoniche
- Vantaggi dei sistemi distribuiti
- Condivisione delle risorse
- Rapidità di calcolo: distribuzione del carico
- Affidabilità
- Comunicazione
- Necessitano di una infrastruttura di rete:
- Rete locale (Local area networks LAN) o rete geografica (Wide area networks WAN)
- Possono essere sistemi client-server o punto-a-punto (peer-to-peer)
Sistemi cluster
- Il clustering permette a due o più sistemi di condividere periferiche (tipicamente dischi)
- Fornisce un’elevata disponibilità (ridondanza)
- Un failure su di una macchina controllata permette al cluster head di eseguire una preemption sulle sue risorse (memoria di massa).
- Il cluster head è in grado di far ripartire altrove il servizio di una macchina in failure.
- L’utente nota solo una breve interruzione nell’erogazione del servizio.
- Cluster asimmetrico: un server esegue un’applicazione mentre gli altri server sono in hot-standby mode
- Cluster simmetrico: tutti i server eseguono l’applicazione e si controllano a vicenda
- Evoluzione dei cluster: reti di memorie di massa (SAN)
Sistemi in tempo reale
- Adoperati nel caso in cui il vincolo temporale per il completamento di una computazione risulti essere stringente
- Un sistema real-time funziona correttamente solo se produce il risultato corretto nel limite di tempo stabilito
- Spesso usati come dispositivi di controllo nelle applicazioni dedicate
- Sistemi che controllano esperimenti scientifici.
- Sistemi medicali.
- Sistemi di controllo industriale
- Sistemi di difesa militare
- Un s.o. real-time deve assecondare vincoli di tempo ben definiti, pena un fallimento del sistema
- I sistemi in tempo reale possono essere o hard o soft real-time
- Sistema operativo in tempo reale stretto (Hard real-time):
- Vincoli sulla capacità di elaborazione disponibile.
- Memorizzazione in memoria di massa limitata o assente, dati memorizzati in una memoria a breve termine o in una memoria di sola lettura (ROM).
- Incompatibile con i sistemi time-sharing
- Il real-time è non supportato dai sistemi operativi di uso generale (che tendono a separare utente e hardware)
- Sistema operativo in tempo reale lasco (Soft real-time):
- Gestione a priorità delle task (attività) critiche
- Possibilità di essere integrati con sistemi time-sharing
- Assenza di garanzie assolute di rispetto dei vincoli temporali
- Uso limitato nel campo del controllo industriale e della robotica.
- Utili in campi che richiedono funzionalità avanzate del sistema operativo (multimedia, realtà virtuale).
- Sistema operativo in tempo reale stretto (Hard real-time):
Sistemi palmari
- Personal Digital Assistant (PDA)
- Telefoni cellulari
- Limitazioni:
- Memoria limitata
- Processori lenti
- Dimensione ridotta del display
- Ristrette disponibilità di alimentazione
- S.o. progettati per non penalizzare i processori
- S.o. con supporti sempre più spinti a tecnologie di rete senza filo (mobility support)
- S.o. con supporto alla sincronizzazione verso dispositivi wired (in italiano cablato: un sistema nel quale lo scambio di dati e/o informazioni avviene attraverso l'uso di collegamenti fisici (cavi), contrariamente a quanto avviene per il sistema senza fili dove le comunicazioni avvengono mediante l'uso di onde radio.)
Ambienti di elaborazione
- Elaborazione tradizionale:
- PC, server, scarso accesso a distanza
- Elaborazione basata sul Web:
- Client-server e servizi web, comodo accesso a distanza, server senza collocazione
- Elaborazione embedded:
- La maggior parte dei computer (motori delle auto, forni a microonde);
- Caratteristiche del sistema operativo molto limitate
- Limitata o assente interfaccia utente, accesso a distanza
Capitolo 2: Architettura del calcolatore
Struttura calcolatore
Come funziona un calcolatore:
- La CPU e i controller dei dispositivi di I/O possono operare in modo concorrente
- Ogni controller è incaricato di gestire una specifica periferica o un set di periferiche similari
- Ogni controller ha una memoria temporanea locale (buffer)
- La CPU sposta i dati da/per la memoria principale a/per i buffer locali
- L’Input procede dal dispositivo al buffer locale del controller
- L’Output procede dal buffer locale del controller al dispositivo
- Il controller del dispositivo informa la CPU che ha concluso la sua operazione generando una interruzione (interrupt)
Interrupt
- L’interrupt trasferisce il controllo della CPU alla routine di gestione interrupt, generalmente attraverso un “vettore di interrupt”, che contiene gli indirizzi di tutte le routine di servizi
- Il meccanismo di gestione interrupt deve salvare l’indirizzo dell’istruzione interrotta e lo stato del processore
- Gli altri interrupt (relativi alle periferiche) sono disabilitati (mascheramento) mentre un interrupt viene trattato dal sistema, per prevenire la perdita di segnali
- Una trap è un interrupt generato dal software e può essere causato da un errore (p. es. una divisione per zero) o da una richiesta utente (operazioni di I/O).
- I s.o. moderni sono guidati dalle interruzioni (interrupt driven)
Gestione degli interrupt
- Il sistema operativo preserva lo stato della CPU memorizzando i registri ed il program counter (è un registro della CPU la cui funzione è quella di conservare l'indirizzo di memoria della prossima istruzione (in linguaggio macchina) da eseguire. È un registro puntatore cioè punta a un dato che si trova in memoria all'indirizzo corrispondente al valore contenuto nel registro stesso)
- Determina il tipo di interrupt ricevuto
- Polling: la verifica ciclica di tutte le unità o periferiche di input/output da parte del sistema operativo di un personal computer tramite test dei bit di bus associati ad ogni periferica, seguita da un'eventuale interazione (scrittura o lettura). Questa attività impegna molto del tempo di funzionamento del processore (CPU), rallentando di conseguenza l'intero sistema. Il vantaggio principale è quello di riuscire a gestire le periferiche sia come struttura hardware che software (cosa che non fanno le interruzioni), ma presenta degli svantaggi:
- Potenzialmente la CPU potrebbe sprecare preziose risorse di calcolo: se, ad esempio, nessuna periferica fosse pronta al colloquio, la CPU farebbe comunque un controllo a vuoto sui bit di stato di tutte le periferiche;
- L'intervallo tra due interrogazioni del bit di stato non è costante, ma dipende dallo stato delle periferiche;
- Ci si può trovare in una situazione di emergenza oppure che una periferica mandi un segnale alla CPU per continuare il suo lavoro. Tutti questi svantaggi vengono limitati dall'uso delle interruzioni
- Sistema a interrupt vettorizzato: è un indirizzo di memoria del gestore di interrupt, oppure un indice ad un array, chiamato interrupt vector table, il quale può essere implementato tramite una dispatch table (è una tabella di puntatori a funzioni o metodi. L'uso di tale tabella è una tecnica comune quando si implementa l'associazione tardiva nella programmazione orientata agli oggetti). La tabella degli interrupt vector contiene gli indirizzi di memoria dei gestori di interrupt. Quando si genera una interruzione, il processore salva il suo stato di esecuzione con il context switch, ed inizia l'esecuzione del gestore di interruzione all'interrupt vector (questo procedimento avviene quando l'interruzione ha carattere Sincrono). Infatti vi è una wait instruction (istruzione d'attesa) che obbliga la CPU ad effettuare cicli vuoti fino a che non arriva il prossimo interrupt. Nel caso in cui si dovesse verificare una interruzione Asincrona il programma lancia l'interrupt con la richiesta di I/O e nell'attesa del dato continua ad effettuare operazioni logico aritmetiche. Quando arriverà al momento in cui gli servirà il risultato si fermerà e aspetterà. Questo I/O Asincrono serve a far sì che alcuni programmi possano anticipare la richiesta di un dato così quando serve lo possono già utilizzare.
- Polling: la verifica ciclica di tutte le unità o periferiche di input/output da parte del sistema operativo di un personal computer tramite test dei bit di bus associati ad ogni periferica, seguita da un'eventuale interazione (scrittura o lettura). Questa attività impegna molto del tempo di funzionamento del processore (CPU), rallentando di conseguenza l'intero sistema. Il vantaggio principale è quello di riuscire a gestire le periferiche sia come struttura hardware che software (cosa che non fanno le interruzioni), ma presenta degli svantaggi:
- Porzioni di codice separate determinano quali azioni devono essere eseguite per ogni tipo di interrupt
Struttura input/output
- I/O sincrono: la gestione viene iniziata e al suo completamento il controllo viene restituito al processo utente fino all’interrupt successivo (interrupt di ritorno)
- La wait rende la CPU inattiva
- Ciclo di attesa (Wait loop): LOOP: jmp LOOP
- Solo una richiesta di I/O alla volta può essere tenuta in sospeso, non processi di I/O simultanei
- I/O asincrono: la gestione viene iniziata e il controllo viene restituito al processo utente senza attendere il completamento dell’operazione
- Chiamata di sistema (System call) richiesta al S.O. per fare...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.