Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.



Documenti analoghi
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi operativi e reti A.A Lezione 2

Sistemi Operativi (modulo di Informatica II) I processi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Architettura di un sistema operativo

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Il Sistema Operativo (1)

Sistemi operativi e reti A.A Lezione 2

Approccio stratificato

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Corso di Sistemi di Elaborazione delle informazioni

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Sistemi operativi. Esempi di sistemi operativi

Organizzazione Monolitica

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Pronto Esecuzione Attesa Terminazione

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Il Sistema Operativo

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

SCHEDULATORI DI PROCESSO

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

GESTIONE DEI PROCESSI

Il Software. Il software del PC. Il BIOS

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Processi e Thread. Scheduling (Schedulazione)

Lo scheduling. Tipici schedulatori

Sistemi Operativi. 5 Gestione della memoria

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Sistemi Operativi Kernel

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Le Infrastrutture Software ed il Sistema Operativo

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

STRUTTURE DEI SISTEMI DI CALCOLO

Il memory manager. Gestione della memoria centrale

Gestione della memoria centrale

La Gestione delle risorse Renato Agati

Algoritmi di scheduling

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Protezione. Protezione. Protezione. Obiettivi della protezione

Introduzione ai Sistemi Operativi

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

FONDAMENTI di INFORMATICA L. Mezzalira

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Informatica: il sistema operativo

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

CAPITOLO 1 I SISTEMI OPERATIVI

Capitolo 3: Strutture dei sistemi operativi

Corso di Informatica

Infrastrutture Software

Funzioni del Sistema Operativo

TITLE Sistemi Operativi 1

Lo scheduler di UNIX (1)

INFORMATICA 1 L. Mezzalira

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

SDD System design document

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Scheduling della CPU:

PARTE 4 La Macchina Software

J. Assfalg Appunti di Sistemi Operativi

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Sistemi Operativi SCHEDULING DELLA CPU

CdL in Medicina Veterinaria - STPA AA

Il software. la parte contro cui si può solo imprecare. Il software

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

Sistemi di Elaborazioni delle Informazioni I

Scheduling. Lo scheduler è la parte del SO che si occupa di

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di base. Corso di Fondamenti di Informatica

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

Architettura di un sistema di calcolo

Il File System. Il file system

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Database. Si ringrazia Marco Bertini per le slides

Il sistema operativo

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Transcript:

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1

Struttura ed organizzazione software dei sistemi operativi Un sistema operativo deve svolgere molti compiti complessi. Per tale motivo dovrebbe essere progettato in modo tale che, oltre a funzionare correttamente, il suo codice sia facilmente modificabile. La scelta dell architettura software e della sua organizzazione dipende dagli obiettivi per cui il sistema operativo deve essere progettato. Nella fase di progettazione è molto importante suddividere le operazione che il sistema operativo deve svolgere in meccanismi (tecniche) e criteri (politiche o strategie). I meccanismi stabiliscono in che modo deve essere eseguito qualche compito; i criteri, invece, determinano in che modo utilizzare i meccanismi. 2

Ad esempio, nei sistemi multiprogrammati il sistema operativo, per commutare la CPU a più processi, esegue un insieme di operazioni detto cambio di contesto, che comprende il salvataggio dei registri della CPU del processo che lascia la CPU ed il caricamento dei registri del nuovo processo che andrà in esecuzione Le operazioni di schedulazione della CPU, stabiliscono i criteri con cui assegnare la CPU ad un nuovo processo. Ad esempio la schedulazione potrebbe basarsi su una politica FIFO, su una politica basata sulle priorità che i processi possiedono, o da altri criteri. I meccanismi dovrebbero essere progettati in modo tale che siano separati dai criteri. Questo consente, nel caso si cambino i criteri, di mantenere ancora validi i meccanismi. Se ad esempio si decidesse di modificare la politica di schedulazione da FIFO ad una politica più complessa, sarebbe ancora possibile utilizzare i meccanismi già esistenti, senza modificarli. 3

Una volta progettato il sistema operativo si deve realizzare. La scrittura di un sistema operativo dipende fortemente dall architettura del hardware ed in particolare dal processore o processori utilizzati nel calcolatore. Molti processori sono dotati di istruzioni che possono essere eseguite in modalità privilegiata (supervisor) e in modalità utente. Questa caratteristica consente di realizzare ed organizzare il software in modo tale che solo il codice del sistema operativo possa eseguire le istruzioni privilegiate, proteggendo in tal modo le componenti del sistema operativo stesso da un uso improprio o errato da parte dei programmi applicativi. Ad esempio le istruzioni di I/O, sono istruzioni privilegiate. Generalmente, i sistemi operativi, si scrivono con linguaggi di alto livello, come ad esempio il C ed il C++, con ristrette parti in linguaggio assembly, per poter accedere pienamente ai registri dei dispositivi hardware e realizzare funzioni compatte e veloci. 4

Struttura monolitica Una semplice organizzazione del software, detta struttura monolitica, consiste nel realizzare un insieme di funzioni ciascuna delle quali implementa un determinato servizio, attivabile tramite una o più chiamate di sistema. Spesso queste funzioni si scrivono in linguaggio assembly, per poter avere la massima velocità di esecuzione e una minore dimensione in termini di occupazione di memoria RAM. Questa struttura, piuttosto semplice è stata usata nel sistema operativo Microsoft MS-DOS, un sistema operativo monoutente e monotasking, scritto per microprocessori Intel 8088, 8086 e 80286, privi di modalità supervisor. In assenza di modalità privilegiata, il programmatore può accedere a qualsiasi istruzione del microprocessore e quindi eseguire qualsiasi operazione come, ad esempio, scrivere dati in qualsiasi locazione di memoria, anche se riservata al sistema operativo. E evidente che, in questi sistemi, un semplice errore di programmazione in un applicazione può portare al crash del sistema. 5

Chiamate di sistema kernel HARDWARE Sistemi stratificati Per la progettazione e sviluppo di sistemi più complessi si può ricorrere ai modelli e alle tecniche della programmazione strutturata o meglio ancora alla programmazione ad oggetti. I progettisti organizzano il sistema in un insieme di moduli, strutturandoli in vari livelli. Ciascun modulo di un livello utilizza le funzionalità offerte dai moduli di livello sottostante e fornisce a sua volta servizi ai moduli del livello superiore. Nei sistemi stratificati con il termine nucleo o kernel si indica il livello che è a stretto contatto con l hardware. 6

Moduli di livello N Sistem call Interfaccia MV N API Moduli di livello 2 Moduli di livello 1 (kernel) HARDWARE Interfaccia MV 2 Interfaccia MV 1 Interfaccia Kernel - HW Struttura a livelli gerarchici 7

Il principale vantaggio che offre la tecnica della stratificazione è dato dalla semplicità di progettazione e da una più semplice facilità nell eseguire modifiche e correzioni al codice. Ogni strato può essere modificato, senza apportare cambiamenti ai restanti strati. Tuttavia, è richiesta un attenta e complessa analisi per stabilire quanti strati realizzare e scegliere quale funzionalità implementare in ciascun livello. Inoltre, la stratificazione porta ad un funzionamento meno efficiente in termini di velocità di esecuzione ed occupazione di memoria. Ad esempio per eseguire un operazione, un programma applicativo, potrebbe effettuare una chiamata di sistema al livello sottostante, la quale, a sua volta, ne richiama un'altra, e questa un'altra ancora, e così. In altre parole, il programma applicativo per ottenere un servizio potrebbe attendere l esecuzione di N funzioni di sistema. 8

Bisogna tenere anche presente che nel passaggio da uno strato all altro sono allocate strutture dati e parametri, con conseguente maggiore impegno di memoria. Per tale motivo, attualmente, si progettano sistemi stratificati con un limitato numero di strati. 9

Struttura a microkernel Come già detto, per proteggere le componenti del SO è necessario che il processore sia dotato di istruzioni eseguibili in stato privilegiato per garantire che solo il codice del SO possa girare in stato privilegiato. D altra parte, il fatto che solo il SO possa eseguire istruzioni privilegiate, rende il sistema più difficile da modificare. Per rendere più semplice, in particolare, il cambiamento delle politiche di gestione delle risorse è stata pensata la struttura a microkernel. Per gestire una risorsa vengono definite due tipi di componenti del SO: le tecniche (meccanismi) per consentire la gestione della risorsa; Le strategie di gestione (politiche) realizzate utilizzando i precedenti meccanismi. 10

Nei sistemi a struttura a microkernel l insieme dei meccanismi costituisce il microkernel, che è l unico componente a girare nello stato privilegiato. Tutte le strategie sono implementate in programmi applicativi che girano nella modalità utente (non privilegiata). In tal modo questi programmi sono più facilmente modificabili ed espandibili. Quando un processo applicativo richiede una risorsa, interagisce con il relativo processo server mediante chiamate di sistema, fornite dal microkernel, che consentono la comunicazione tra processi (IPC - Inter Process Comunication). Processo client Processo client File Server Printer server IPC MICROKERNEL 11

La struttura a microkernel produce una perdita di efficienza, per il fatto che ogni chiamata di sistema si traduce in una comunicazione tra processi. 12

Sistemi modulari Attualmente, probabilmente la migliore tecnica per progettare e realizzare i sistemi operativi complessi si basa sulla programmazione orientata agli eventi e agli oggetti. Con tale tecnica si sviluppa il sistema in moduli, ciascuno dei quali svolge un particolare compito. Ogni modulo è implementato da un insieme di funzioni descritte da un interfaccia che descrive le funzionalità svolte dal modulo e da un corpo che consiste nel codice che implementa le funzioni descritte nell interfaccia. Interfaccia Definizione di un insieme di funzioni implementate nel modulo Corpo Implementazione delle funzionalità (nascoste all esterno del modulo) 13

Il codice del corpo di un modulo è nascosto al resto del sistema e si comunica con esso solo attraverso le funzioni della propria interfaccia. Il kernel si realizza in base ad un numero di componenti fondamentali, ai quali, se richiesto, se ne aggiungono altri dinamicamente durante la procedura di avvio o durante l esecuzione. La tecnica di caricare dinamicamente moduli è attualmente usata dai sistemi operativi come ad esempio Windows, Linux, Solaris e Max OS X. 14

Struttura client-server Questa struttura discende da quella a microkernel. E una struttura usata da molti SO distribuiti in rete. In questo caso, ciascun nodo della rete ha il proprio kernel. Su alcuni nodi girano determinati processi server, mentre su altri girano processi client. Anche in questo caso la comunicazione tra processi avviene tramite IPC fornito dal kernel di ciascun nodo. client client Print server File server kernel kernel kernel kernel Modello client-server 15

Struttura dei sistemi operativi Da quanto fino ad ora detto, a grandi linee, possiamo classificare i SO in quattro classi principali, in base al tipo di applicazioni per cui sono stati progettati. Sistemi operativi batch per applicazioni di calcolo intensivo (applicazioni CPU-bound) con l obiettivo di ottimizzare l efficienza d uso delle risorse. Sistemi operativi time-sharing per applicazioni interattive (I/O-bound) con l obiettivo di minimizzare i tempi medi di risposta. Sistemi operativi real-time per applicazioni di controllo, con l obiettivo di rispettare tutti i loro vincoli temporali (deadline). Sistemi operativi distribuiti per applicazioni distribuite con l obiettivo di condividere risorse. Pur avendo strutture ed obiettivi diversi, le suddette classi di SO hanno molte caratteristiche comuni. Vediamo di individuare le componenti fondamentali di un SO. 16

Principali componenti del SO Gestione dei processi (scheduler). Questo componente ha il compito di ripartire l uso della CPU tra più processi in modo che questi possono avanzare nell esecuzione dei propri task. Gestione della memoria. Gestione dell I/O Gestione del file system Sistema di protezione Interfaccia utente, grafica (GUI) o a riga di comando (shell) Comunicazione su rete 17

Gestione dei processi Definizione di processo Stati di un processo Descrittore di un processo Code di processi Cambio di contesto Creazione e terminazione dei processi Interazione tra i processi Nucleo di un sistema a processi Scheduling Threads 18

Definizione di processo Esiste una distinzione concettuale tra programma e processo. Un programma è l implementazione di un algoritmo, il processo è un entità astratta che rappresenta l attività del calcolatore e del SO relativa all esecuzione di un programma. Il programma è un entità statica mentre il processo è un entità dinamica. Quando un programma sorgente viene compilato, genera il programma eseguibile (entità statica). Se il programma, ad esempio un gioco, viene fatto eseguire più volte, con diversi valori di input, è evidente che l esecuzione sarà ogni volta diversa (entità dinamica). Un processo è composto da un descrittore, dal codice del programma che esegue, da un area di memoria contenente i dati inizializzati e le variabili globali da un area per 19

l allocazione dinamica di dati (heap) e dallo stack, un area di memoria di lavoro necessaria per salvare i record di attivazione delle funzioni e le variabili locali. L'insieme di queste componenti è detta immagine del processo. descrittore del processo 0 160 codice Entry point 4096 dati 5632 heap 7168 stack Immagine di un processo 20

Stati di un processo Un processo durante la sua esecuzione, esegue transizioni di stato che sono causate sia dall esecuzione delle istruzioni del processo stesso, come ad esempio quando esso esegue operazioni di I/O, sia da eventi esterni asincroni con la sua esecuzione, come ad esempio la ricezione di segnali. Un processo entra nello stato nuovo quando viene creato, ad esempio quando si avvia un programma. Un processo passa dallo stato nuovo allo stato di pronto quando il SO verifica che esso può essere effettivamente eseguito (ad esempio il processo ha i diritti di esecuzione). Un processo passa dallo stato di pronto allo stato di esecuzione quando ad esso viene assegnato il processore. Un processo è nello stato attivo quando si trova nello stato di pronto o di esecuzione. Un processo passa dallo stato di esecuzione allo stato di bloccato quando è in attesa di qualche evento. Il processo ritorna nello stato di pronto quando l evento atteso si è verificato. La transizione dallo stato di esecuzione a quello di pronto viene chiamato prerilascio (preemption) o revoca. 21

Il prerilascio può avvenire per vari motivi, come ad esempio, quando un processo ha esaurito il suo quanto di tempo (nei sistemi time-sharing), o è presente nella coda di pronto un altro processo con priorità più alta. Il passaggio dallo stato di pronto allo stato di esecuzione avviene per mezzo di un componente del sistema operativo, lo scheduler che seleziona un processo cui assegnare la CPU tra tutti i processi che si trovano nello stato di pronto. Lo scheduler ha il compito di garantire che tutti i processi pronti possano avanzare nella loro esecuzione. Il processo passa nello stato terminato quando ha terminato l esecuzione del suo programma o quando si è verificato un eccezione di vario tipo. 22

Transizioni di stato esecuzione terminazione terminato scheduler Assegnazione cpu sospensione prerilascio bloccato nuovo pronto riattivazione Diagramma di transizione a 5 stati 23

In molti sistemi è previsto che un processo venga spostato dalla memoria principale alla memoria secondaria (disco) in modo che venga creato spazio per altri processi. Tale operazione prende il nome di swapping e lo stato relativo è lo swapped. Vedremo un diagramma di transizione di stato con lo stato swapped quando parleremo della gestione della memoria. 24

terminazione scheduler esecuzione terminato assegnazione cpu sospensione revoca cpu bloccato nuovo creazione pronto riattivazione swap-in swap-out swap-out swapped Diagramma di transizione a 5 stati + stato swapped 25

Descrittore del processo Ogni processo è rappresentato una struttura dati, detta descrittore del processo (PCB Process Control Block). I descrittori dei processi sono memorizzati in una tabella, detta tabella dei processi. I campi presenti nel descrittore di processo dipendono dal particolare sistema operativo e dall architettura dell hardware. Generalmente il descrittore del processo contiene le seguenti informazioni: Identificatore del processo. Spesso si identifica il processo con un numero intero detto PID. Stato del processo. Questo campo identifica lo stato in cui si trova il processo in un determinato istante. Può anche non essere presente nel descrittore ma può essere ottenuto implicitamente dall'appartenenza del descrittore ad una delle code gestite dal kernel. 26

Informazioni sullo scheduling di CPU. La scelta del processo pronto a cui assegnare la CPU può essere effettuata secondo diversi criteri. FIFO. Il criterio più semplice è il FIFO (First-In-First-Out), che prevede di assegnare la CPU al processo pronto in attesa da più tempo. Priorità. Ad ogni processo è assegnata una priorità, fissa o dinamica, che indica la sua importanza relativa nei confronti degli altri processi. Deadline (scadenza). La scelta del prossimo processo può essere basata anche in termini di intervallo di tempo (deadline) in cui l'esecuzione del processo deve essere portata a termine. Nel descrittore del processo, in questo caso, è contenuto un valore che, sommato all'istante della richiesta di servizio da parte del processo, determina il tempo massimo entro il quale la richiesta deve essere soddisfatta (sistemi in tempo reale). Quanto di tempo. Nei sistemi time-sharing, nel descrittore è contenuto un valore che rappresenta l intervallo di tempo (quanto) consecutivo in cui la CPU è assegnata allo stesso processo. 27

Informazioni sulla gestione della memoria. Contiene le informazioni relative all'area di memoria principale nella quale sono caricati il codice, i dati e lo stack del processo. Queste informazioni dipendono dalla particolare tecnica di gestione della memoria usata dal sistema operativo. Contesto del processo. L insieme dei valori dei registri del processore al momento della sospensione dell'esecuzione di un processo viene salvato nel suo descrittore. Questo insieme di valori prende il nome di contesto del processo e dipende dall architettura del processore. Tipici registri presenti in una CPU sono il PS (Program Status word), lo SP (puntatore allo stack - stack pointer), registri indice, accumulatori, registri di uso generale. Il contesto viene recuperato dal descrittore e riportato ai registri quando il processo torna in esecuzione. Utilizzo delle risorse. Queste informazioni comprendono la lista dei dispositivi di I/O allocati al processo, i file aperti, il tempo di uso della CPU ecc. 28

Identificatore del processo successivo. Come si è detto, a seconda del loro stato (pronto o bloccato), i processi vengono inseriti, in apposite code. Ogni descrittore contiene pertanto un puntatore al processo successivo nella stessa coda. Informazioni sulla sicurezza Informazioni sulle variabili di ambiente Informazione utente Per la loro fondamentale importanza i descrittori sono memorizzati in un'area di memoria accessibile solo dal kernel. 29