Modulo 1
Modulo 1
1
Avvio del Computer
il programma di avvio è caricato all'accensione o al riavvio
Tipicamente memorizzato in ROM o EPROM, comunemente noto come firmware
Inizializza tutti gli aspetti del sistema
Carica il kernel del sistema operativo e inizia l'esecuzione
2
Figura 1.3 Cronologia degli interruzioni per un singolo processo che esegue un output
Chiamata di sistema– richiesta al sistema operativo per consentire all'utente di attendere il completamento dell'I/O. Stato del dispositivo
La tabella contiene un'entrata per ogni dispositivo I/O che indica il suo tipo, indirizzo e stato del sistema operativo
indici nella tabella dei dispositivi I/O per determinare lo stato del dispositivo e per modificare la voce della tabella per includere l'interruzione
3
Figura 1.4 Gerarchia dei Dispositivi di Memoria
Caching
Principio importante, eseguito a molti livelli in un computer (nell'hardware, nel sistema operativo,
informazioni in uso copiate da memoria più lenta a memoria più veloce temporaneamente
La memorizzazione più rapida (cache) viene controllata per prima per determinare se le informazioni sono lì
Se lo è, informazioni utilizzate direttamente dalla cache (veloce)
Se no, i dati vengono copiati nella cache e utilizzati lì
Cache più piccola dello storage che viene memorizzato
Cache management important design problem
Dimensione della cache e politica di sostituzione
4
Figura 1.5 Come funziona un computer moderno Architettura di multiprocessing simmetrico
Sistemi Clusterizzati
5
Quando deve aspettare (per esempio per I/O), il sistema operativo passa a un altro lavoro
Il timesharing (multitasking) è un'estensione logica in cui la CPU passa da un lavoro all'altro così frequentemente che gli utenti
può interagire con ogni lavoro mentre è in esecuzione, creando computazione interattiva
I tempi di risposta devono essere < 1 secondo
Ogni utente ha almeno un programma in esecuzione in memoria [processo
diversi lavori pronti a essere eseguiti contemporaneamente [pianificazione CPU
Se i processi non si adattano nella memoria, lo scambio li sposta dentro e fuori per eseguirsi.
Fornisce la possibilità di distinguere quando il sistema sta eseguendo codice utente o codice kernel
Al alcune istruzioni designate come privilegiate, eseguibili solo in modalità kernel
La chiamata di sistema cambia la modalità in kernel, il ritorno dalla chiamata la ripristina a utente
Transizione da modalità utente a modalità kernel
Timer per prevenire loop infiniti / utilizzo eccessivo delle risorse
Imposta l'interruzione dopo un periodo specifico
Il sistema operativo decrementa il contatore
Quando il contatore zero genera un'interruzione
Imposta prima del processo di pianificazione per riprendere il controllo o terminare il programma che supera il tempo assegnato
6
Figura 1.8 Transizione da modalità utente a modalità kernel
7
Attività di gestione della memoria
Tenere traccia di quali parti della memoria sono attualmente in uso e da chi
Decidere quali processi (o parti di essi) e dati trasferire dentro e fuori dalla memoria
Allocazione e deallocazione dello spazio di memoria secondo necessità
Di solito i dischi vengono utilizzati per memorizzare dati che non possono essere inseriti nella memoria principale o dati che devono essere conservati per un
lungo periodo di tempo
Una gestione adeguata è di fondamentale importanza
L'intera velocità dell'operazione del computer dipende dal sottosistema del disco e dai suoi algoritmi.
attività di MEMORIA DI MASSA
Gestione dello spazio libero
Assegnazione dello spazio di archiviazione
Pianificazione del disco
Alcuni archivi non devono essere veloci
Lo storage terziario include lo storage ottico e il nastro magnetico
Deve ancora essere gestito
Varia tra WORM (scrivi una volta, leggi molte volte) e RW (leggi-scrivi)
8
Figura 1.9 Prestazioni di Vari Livelli di Archiviazione
Sottosistema I/O
Uno degli scopi del sistema operativo è nascondere le peculiarità dei dispositivi hardware all'utente
Sottosistema I/O responsabile per
Gestione della memoria per l'I/O, compreso il buffering (memorizzare temporaneamente i dati mentre vengono trasferiti),
caching (memorizzare parti di dati in una memoria più veloce per le prestazioni), spooling (la sovrapposizione dell'output di
un lavoro con input di altri lavori)
Interfaccia generale per driver di dispositivo
Driver per dispositivi hardware specifici
9
Protezione e Sicurezza
Protezione – qualsiasi meccanismo per controllare l'accesso di processi o utenti alle risorse definite dal sistema operativo
Sicurezza – difesa del sistema contro attacchi interni ed esterni
Ampia gamma, compresi attacchi DDoS, worm, virus, furto d'identità, furto di servizio
I sistemi in genere prima distinguono tra gli utenti, per determinare chi può fare cosa
Le identità degli utenti (ID utente, ID di sicurezza) includono nome e numero associato, uno per utente
ID utente quindi associato a tutti i file, processi di quell'utente per determinare il controllo degli accessi
L'identificatore di gruppo (ID gruppo) consente di definire e gestire un insieme di utenti, che possono essere anche associati.
con ogni processo, file
L'escalation dei privilegi consente all'utente di cambiare a un'ID efficace con più diritti
SISTEMI DISTRIBUITI
Computing Environments
Computer tradizionale
Sfuocando nel tempo
Ambiente d'ufficio
PC collegati a una rete, terminali collegati a mainframe o minicomputer che forniscono elaborazione in batch
e time sharing
Ora i portali consentono l'accesso a sistemi di rete e remoti allo stesso
risorse Reti domestiche
Era un sistema singolo, poi modem
Ora protetto da firewall, interconnesso
Calcolo Client-Server
Terminali stupidi sostituiti da PC intelligenti
Molti sistemi ora server, che rispondono alle richieste generate dai clienti
Il server di calcolo fornisce un'interfaccia al cliente per richiedere servizi (ovvero database)
Il file server fornisce un'interfaccia per i clienti per memorizzare e recuperare file
11
l'azione appropriata per garantire un'informatica corretta e coerente Le strutture di debug possono migliorare notevolmente
le capacità dell'utente e del programmatore di utilizzare il sistema in modo efficiente
Esiste un altro insieme di funzioni del sistema operativo per garantire il funzionamento efficiente del sistema stesso tramite
condivisione delle risorse
Assegnazione delle risorse - Quando più utenti o più lavori sono in esecuzione contemporaneamente, le risorse devono essere
assegnato a ciascuno di loro
Molti tipi di risorse - Alcune (come i cicli della CPU, la memoria principale e l'archiviazione dei file) possono avere caratteristiche speciali
codice di allocazione, altri (come i dispositivi I/O) possono avere codice di richiesta e rilascio generale
Contabilità - Tenere traccia di quali utenti utilizzano quanti e quali tipi di risorse informatiche.
Protezione e sicurezza - I proprietari delle informazioni archiviate in un computer multiutente o in rete
il sistema potrebbe voler controllare l'uso di tali informazioni, i processi concorrenti non dovrebbero interferire l'uno con l'altro
altro
La protezione implica garantire che tutto l'accesso alle risorse di sistema sia controllato
La sicurezza del sistema dagli estranei richiede l'autenticazione dell'utente e si estende alla difesa esterna
Dispositivi I/O da tentativi di accesso non validi
Se un sistema deve essere protetto e sicuro, devono essere adottate precauzioni in tutto il sistema. Una catena è solo quanto.
forte come il suo anello più debole.
Apple Mac OS X con interfaccia GUI "Aqua" e kernel UNIX sottostante e shell
Solaris disponibile è CLI con interfacce GUI opzionali (Java Desktop, KDE)
Interpretatore di comandi Bourne Shell
12
L'interfaccia grafica di Mac OS X
Chiamate di sistema
13
Esempio di API Standard
Considera la funzione ReadFile() nella
Win32 API—una funzione per leggere da un file
L'interfaccia della chiamata di sistema invoca la chiamata di sistema prevista nel kernel del SO e restituisce lo stato della chiamata di sistema.
e eventuali valori di ritorno
Il chiamante non deve sapere nulla su come viene implementata la chiamata di sistema
Deve solo rispettare l'API e capire cosa farà il sistema operativo come risultato della chiamata.
La maggior parte dei dettagli dell'interfaccia del sistema operativo è nascosta al programmatore dall'API
Gestito dalla libreria di supporto a tempo di esecuzione (insieme di funzioni integrate nelle librerie incluse con
compilatore)API – Chiamata di sistema – Relazione OS
Figura 2.2 La gestione di un'applicazione utente che invoca la chiamata di sistema open()
14
Esempio della libreria standard C
15
Tipi di chiamate di sistema
Controllo di processo
Gestione dei file
Gestione dei dispositivi
Manutenzione delle informazioni
Comunicazioni
Protezione
Figura 2.5 Esecuzione di MS-DOS (a) All'avvio del sistema (b) eseguire un programma
16
Programmi di Sistema
I programmi di sistema forniscono un ambiente conveniente per lo sviluppo e l'esecuzione dei programmi. Possono essere
diviso in:
Manipolazione dei file
Informazioni sullo stato
Modifica del file
Supporto per linguaggi di programmazione
Caricamento ed esecuzione del programma
Comunicazioni
Programmi applicativi
La maggior parte degli utenti percepisce il sistema operativo attraverso i programmi di sistema, non le effettive chiamate di sistema.
Fornire un ambiente conveniente per lo sviluppo e l'esecuzione dei programmi
Alcuni di essi sono semplicemente interfacce utente per le chiamate di sistema; altri sono notevolmente più complessi
Gestione dei file - Creare, eliminare, copiare, rinominare, stampare, scaricare, elencare e manipolare generalmente i file.
directory
Informazioni di stato
Alcuni chiedono al sistema informazioni - data, ora, quantità di memoria disponibile, spazio su disco, numero di utenti
Altri forniscono informazioni dettagliate sulle prestazioni, la registrazione e il debug
Tipicamente, questi programmi formattano e stampano l'output nel terminale o in altri dispositivi di output.
Alcuni sistemi implementano un registro - utilizzato per memorizzare e recuperare informazioni di configurazione
Modifica del file
Editor di testo per creare e modificare file
Comandi speciali per cercare il contenuto dei file o eseguire trasformazioni del testo
Supporto per linguaggi di programmazione - Compilatori, assemblatori, debugger e interpreti
a volte fornito
Caricamento ed esecuzione del programma - Caricamenti assoluti, caricamenti rilocabili, editor di collegamento e sovrapposizione -
loader, sistemi di debug per linguaggi di alto livello e linguaggio macchina
Communications - Provide the mechanism for creating virtual connections among processes, users,
e sistemi informatici
Consentire agli utenti di inviare messaggi agli schermi degli altri, navigare su pagine web, inviare posta elettronica
messaggi, accedere da remoto, trasferire file da un computer all'altro
Progettazione e Implementazione del Sistema Operativo
Progettazione e implementazione di un sistema operativo non "risolvibile", ma alcuni approcci si sono dimostrati efficaci
La struttura interna dei diversi sistemi operativi può variare notevolmente
Inizia definendo obiettivi e specifiche
Influenza dalla scelta dell'hardware, tipo di sistema
Usergoals andSystemgoals
Obiettivi dell'utente - il sistema operativo dovrebbe essere conveniente da usare, facile da imparare, affidabile, sicuro e veloce
Obiettivi del sistema – il sistema operativo dovrebbe essere facile da progettare, implementare e mantenere, così come
flessibile, affidabile, senza errori ed efficiente
Principio importante da separare
Policy:What will be done?
Meccanismo: Come farlo?
I meccanismi determinano come fare qualcosa, le politiche decidono cosa verrà fatto
La separazione della politica dal meccanismo è un principio molto importante, consente la massima flessibilità
se le decisioni politiche devono essere cambiate in seguito
17
Struttura del Sistema Operativo
Struttura Semplice
MS-DOS – scritto per fornire la massima funzionalità nel minor tempo possibile
spazio Non diviso in moduli
Sebbene MS-DOS abbia una certa struttura, le sue interfacce e i livelli di funzionalità non sono ben separati.
Approccio a strati
Il sistema operativo è suddiviso in diversi livelli, ognuno costruito sopra i livelli inferiori.
il livello inferiore (livello 0) è l'hardware; il livello più alto (livello N) è l'interfaccia utente.
Con la modularità, i livelli vengono selezionati in modo tale che ciascuno utilizzi solo funzioni (operazioni) e servizi di
livelli inferiori
18
UNIX
UNIX – limitato dalla funzionalità hardware, il sistema operativo UNIX originale aveva una strutturazione limitata.
Il sistema operativo UNIX è composto da due parti separabili
Programmi di sistema
Il kernel
Consiste in tutto ciò che si trova al di sotto dell'interfaccia di chiamata di sistema e al di sopra dell'hardware fisico
Fornisce il file system, la pianificazione della CPU, la gestione della memoria e altri sistemi operativi
funzioni; un gran numero di funzioni per un livello
Più sicuro
Detriments:
Sovraccarico delle prestazioni nella comunicazione dallo spazio utente allo spazio kernel
19
Moduli
La maggior parte dei moderni sistemi operativi implementa i moduli del kernel
Utilizza un approccio orientato agli oggetti
Ogni componente principale è separato
Ognuno parla agli altri tramite interfacce conosciute
Ognuno è caricabile secondo necessità all'interno del kernel
In generale, simile ai livelli ma con maggiore flessibilità
Macchine Virtuali
Una macchina virtuale porta l'approccio a strati alla sua conclusione logica. Tratta l'hardware e il
nucleo del sistema operativo come se fossero tutti hardware
20
Il "Formato Virtuale della Macchina", formato standard delle macchine virtuali, consente a una VM di funzionare in molti
different virtual machine (host) platforms
Paravirtualizzazione
Presenta all'ospite un sistema simile ma non identico all'hardware
L'ospite deve essere modificato per funzionare su hardware paravirtualizzato
L'ospite può essere un sistema operativo, o nel caso di Solaris 10, applicazioni che girano in contenitori.
Solaris 10 con due contenitori
Architettura VMware
22
Generazione del sistema operativo
I sistemi operativi sono progettati per funzionare su una qualsiasi delle macchine di una certa classe; il sistema deve essere configurato per
ogni sito informatico specifico
Il programma SYSGEN ottiene informazioni riguardanti la configurazione specifica dell'hardware
booting di sistema - avviando un computer caricando il kernel
Programma di avvio – codice memorizzato nella ROM in grado di localizzare il kernel, caricarlo in memoria e avviarlo.
la sua esecuzione
Avvio del sistema
Il sistema operativo deve essere reso disponibile all'hardware affinché l'hardware possa avviarlo.
Piccolo pezzo di codice – bootloader, localizza il kernel, lo carica in memoria e lo avvia
A volte è un processo in due fasi in cui il blocco di avvio in una posizione fissa carica il caricatore di avvio.
Quando l'alimentazione viene attivata sul sistema, l'esecuzione inizia in una posizione di memoria fissa. Il firmware viene utilizzato per contenere.
codice di avvio iniziale
Concetto di Processo
Un sistema operativo esegue una varietà di programmi:
Sistema batch - lavori
Sistemi a tempo condiviso – programmi o attività degli utenti
23
Figura 3.2 Diagramma dello Stato del Processo
24
Code di Pianificazione dei Processi
25
Pianificatori
Pianificatore a lungo termine (o pianificatore di lavoro) – seleziona quali processi devono essere portati nello stato di pronto
coda
Pianificatore a breve termine (o pianificatore CPU) – seleziona quale processo deve essere eseguito per primo e
assegna CPU
Il pianificatore a breve termine viene invocato molto frequentemente (millisecondi) Þ (deve essere veloce)
Il pianificatore a lungo termine viene invocato molto raramente (secondi, minuti) Þ (può essere lento)
Lo schedulatore a lungo termine controlla il grado di multiprogrammazione
I processi possono essere descritti come:
Processo I/O-bound– trascorre più tempo a fare I/O che a effettuare calcoli, molti brevi picchi di CPU
Processo limitato dalla CPU - trascorre più tempo a eseguire calcoli; pochi lunghi picchi di CPU molto.
Cambio di contesto
Quando la CPU passa a un altro processo, il sistema deve salvare lo stato del vecchio processo e caricare il
stato salvato per il nuovo processo tramite uno switch di contesto
Il contesto di un processo rappresentato nel PCB. Il tempo di cambio di contesto è un sovraccarico; il
il sistema non svolge lavoro utile durante lo switching del tempo dipendente dall'hardware
supporto
26
Esempi di UNIX
La chiamata fork crea un nuovo processo
La chiamata execsystem viene utilizzata dopo un fork per sostituire lo spazio di memoria del processo con un nuovo programma.
int main()
{
pid_t pid;
/* forkare un altro processo */
pid = fork();
se (pid < 0) { /* si è verificato un errore */
fprintf(stderr, "Creazione del processo figlio non riuscita");
exit(-1);
}
altrimenti se (pid == 0) { /* processo figli */
execlp("/bin/ls", "ls", NULL);
}
altro { /* processo padre */ }
/* il genitore attenderà che il bambino completi */
attendere (NULL);
printf ("Bambino Completo");
exit(0);
}
}
27
Figura 3.8 Un albero di processi su un tipico Solaris
Terminazione del processo
Il processo esegue l'ultima istruzione e chiede al sistema operativo di eliminarla (uscire)
Output dei dati dal bambino al genitore (viawait)
Le risorse del processo vengono deallocate dal sistema operativo
Il genitore può terminare l'esecuzione dei processi figli (abortire)
Il bambino ha superato le risorse allocate
Il compito assegnato al bambino non è più necessario
Se il genitore sta uscendo, alcuni sistemi operativi non consentono al figlio di continuare se il suo genitore
termina Tutti i bambini terminati -terminazione a cascata
Comunicazione tra processi
I processi all'interno di un sistema possono essere indipendenti o cooperativi
I processi di cooperazione possono influenzare o essere influenzati da altri processi, inclusa la condivisione dei dati
Motivi per i processi di cooperazione:
Condivisione delle informazioni
Velocizzazione dei calcoli
Modularità
Convenienza
I processi cooperativi necessitano di comunicazione tra processi (IPC)
Due modelli di IPC
Shared memory
Trasmissione dei messaggi
Processi di cooperazione
Il processo indipendente non può influenzare né essere influenzato dall'esecuzione di un altro processo.
Cooperatingprocess can affect or be affected by the execution of another process
Vantaggi della cooperazione nei processi
Condivisione delle informazioni
Accelerazione della velocità di calcolo
Modularità
Comodità
28
Problema del Produttore-Consumatore
Paradigma per processi cooperativi, il processo produttore produce informazioni che vengono consumate da un
processo di consumo
unbounded-buffer non pone alcun limite pratico sulla dimensione del
il buffer bounded-buffer presuppone che ci sia una dimensione fissa del buffer
Buffer Limitato - Soluzione di Memoria Condivisa
Dati condivisi
#define BUFFER_SIZE 10
typedef struct {
...
} articolo;
elemento buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
La soluzione è corretta, ma può utilizzare solo BUFFER_SIZE-1 elementi
}
Comunicazione interprocesso – Passaggio di messaggi
Meccanismo per i processi per comunicare e sincronizzare le loro azioni
Sistema di messaggi – i processi comunicano tra loro senza ricorrere a variabili condivise
La struttura IPC fornisce due operazioni:
invia(messaggio) - dimensione del messaggio fissa o variabile
ricevi(messaggio)
Se P e Q desiderano comunicare, devono:
stabilire un collegamento di comunicazione tra di loro
scambiare messaggi tramite invio/ricezione
Implementazione del collegamento di comunicazione
fisico (ad esempio, memoria condivisa, bus hardware)
logico (ad es., proprietà logiche)
29
Comunicazione Diretta
I processi devono nominarsi esplicitamente l'un l'altro:
invia(P,messaggio) – invia un messaggio al processo P
ricevi(Q, messaggio) – ricevi un messaggio dal processo Q
Proprietà del collegamento di comunicazione I collegamenti sono stabiliti
automaticamente
Un collegamento è associato esattamente a una coppia di processi comunicanti.
Tra ogni coppia esiste esattamente un link
Il collegamento può essere unidirezionale, ma di solito è bidirezionale
Comunicazione indiretta
I messaggi sono diretti e ricevuti dalle cassette postali (chiamate anche porte)
Ogni cassetta postale ha un id unico
I processi possono comunicare solo se condividono una
Proprietà della casella di posta del link di comunicazione
Collegamento stabilito solo se i processi condividono una casella di posta comune
Un collegamento può essere associato a molti processi
Ogni coppia di processi può condividere diversi link di comunicazione
Il collegamento può essere unidirezionale o bidirezionale Operazioni
30
Buffering
Coda di messaggi associata al collegamento; implementata in uno dei tre modi
1. Capacità zero - 0 messaggi
31
Chiamate di Procedura Locale in Windows XP
32
Esecuzione di RPC
Parametri di Marshalling
33