1 / 40

Introduzione ai sistemi operativi Prof. Michele Amoretti Fondamenti di Informatica

Introduzione ai sistemi operativi Prof. Michele Amoretti Fondamenti di Informatica a.a. 2008/2009. Sommario Caratteristiche generali Struttura dei sistemi operativi Evoluzione dei sistemi operativi Gestione batch Monoprogrammazione Monitor Multiprogrammazione Schedulazione

Download Presentation

Introduzione ai sistemi operativi Prof. Michele Amoretti Fondamenti di Informatica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduzione ai sistemi operativi Prof. Michele Amoretti Fondamenti di Informatica a.a. 2008/2009

  2. Sommario • Caratteristiche generali • Struttura dei sistemi operativi • Evoluzione dei sistemi operativi • Gestione batch • Monoprogrammazione • Monitor • Multiprogrammazione • Schedulazione • Spooling • Time sharing • Processi • Sistema di protezione • System call

  3. Caratteristiche generali • Un sistema di elaborazione può essere visto come un insieme di risorse hardware e software utilizzate per lo sviluppo e l’esecuzione dei programmi utente. • Tali risorse devono essere: • utilizzate secondo un determinato ordine • eventualmente rese disponibili a più utenti anche simultaneamente • protette contro accessi non autorizzati • organizzate in modo da garantire la sopravvivenza del sistema in caso di guasti • gestite in modo che risulti semplificato ed efficiente il loro uso, ecc.

  4. Caratteristiche generali Con il termine sistema operativo si intende quell'insieme di programmi che provvedono alla gestione delle risorse di un sistema di calcolo. Una definizione alternativa (Tanenbaum): un sistema operativo è un programma che controlla le risorse di un calcolatore e fornisce ai suoi utenti un'interfaccia o macchina virtuale più agevole da utilizzare della macchina "nuda". Il sistema operativo è un meccanismo di controllo inusuale perché • è un programma come gli altri • spesso rinuncia al controllo e deve dipendere dal processore per tornarne in possesso

  5. Caratteristiche generali Il sistema operativo può essere visto come: - allocatore di risorse: tempo di CPU, spazio di memoria, dispositivi di I/O, compilatori, ecc. Le risorse devono essere assegnate a programmi specifici secondo determinate politiche. - programma di controllo: controlla l'esecuzione dei programmi per prevenire errori ed usi impropri del calcolatore (in particolare per il controllo dei dispositivi di I/O). Obiettivi del sistema operativo: - rendere più semplice l'uso di un sistema di calcolo - rendere più efficiente l'uso delle risorse del sistema di calcolo

  6. Caratteristiche generali Gestione delle risorse significa: - tenere traccia delle risorse - adottare strategie di assegnazione - allocare le risorse - recuperare le risorse inutilizzate - rilevare eventuali usi impropri Funzioni specifiche: - gestione della memoria principale e di quella secondaria, in base a regole gerarchiche, realizzando il meccanismo della memoria virtuale - gestione del/i processore/i - gestione dei dispositivi periferici di I/O

  7. Caratteristiche generali Gestione della memoria centrale • caricare in memoria programmi e dati • evitare interferenze fra programmi diversi • assegnare la memoria in base a criteri di efficienza • minimizzare i trasferimenti tra memoria centrale e memoria secondaria. Gestione della memoria secondaria • consentire l'accesso all'informazione in base alla sua organizzazione logica (File System) anzichè fisica (ad es. dischi, tracce, settori) • controllare i diritti di accesso ai file da parte degli utenti • consentire creazione, modifica e cancellazione dei file, ...

  8. Caratteristiche generali Gestione dei processori • decidere quale programma userà il processore (scheduling) in base a criteri di corretto funzionamento e di efficienza • verificare che i programmi rilascino il processore entro il tempo stabilito. Gestione dei dispositivi periferici di I/O • mascherare al programmatore la complessità delle operazioni di I/O • effettuare controlli sul corretto funzionamento delle operazioni • risolvere conflitti nell'utilizzo di una stessa periferica da parte di più programmi • consentire il massimo sfruttamento delle periferiche.

  9. Caratteristiche generali Utenti del sistema operativo: • utenti finali del sistema per essi il sistema operativo è trasparente • programmatori applicativi utilizzano i servizi del s.o. per la realizzazione e l'esecuzione dei loro programmi • programmatori di sistema aggiornano e modificano i programmi del s.o. per adeguarli a nuove necessità del sistema o degli utenti applicativi • operatori controllano il funzionamento e rispondono alle richieste di intervento da parte del sistema • amministratore del sistema stabilisce le politiche di gestione del sistema e ne cura l'osservanza

  10. Caratteristiche generali Tipi di sistemi operativi: Sistemi proprietari • progettati dai costruttori al fine di sfruttare in modo ottimale le risorse di ciascun tipo di macchina • l'interfaccia con l'utente varia tra le diverse famiglie di sistemi • esempi: - IBM: OS/360 - 370, VM, MVS - DEC: RT-11, VMS Sistemi standard • progettati da case di software o da comunità di sviluppatori, sono portabili su macchine di tipo diverso • l'interfaccia con l'utente rimane costante nelle diverse versioni • esempi: - UNIX, MS-DOS, Windows

  11. Struttura dei sistemi operativi • Necessità di modularizzazione, date le dimensioni. • Sistema a livelli. • Affinché il livello Li possa richiedere i servizi offerti dal livello Li-1 deve conoscerlo precisamente, tuttavia l'implementazione di tali servizi deve risultare totalmente nascosta. • La stratificazione più opportuna può risultare non evidente; è dipendente dall'evoluzione tecnologica dell’hardware.

  12. Struttura dei sistemi operativi Modello “a cipolla”: Programmi utente Interprete comandi Programmi di utilità Periferiche virtuali File System Gestore memoria virtuale Nucleo del sistema operativo Macchina hardware

  13. Struttura dei sistemi operativi Nucleo o kernel: parte di s.o. sempre residente nella memoria principale, mette a disposizione le system call ai programmi di sistema ed applicativi. • Fornisce un meccanismo per la creazione e la distruzione dei processi • Provvede allo scheduling della CPU, alla gestione della memoria e dei dispositivi di I/O • Fornisce strumenti per la sincronizzazione dei processi • Fornisce strumenti per la comunicazione tra processi

  14. Evoluzione dei sistemi operativi I primi calcolatori: - Erano privi di s.o. e monoprogrammati - Il programmatore era anche operatore interattivo ed aveva visione diretta della macchina e disponibilità di tutte le sue risorse - L'accesso da parte di più utenti era ottenuto mediante meccanismi di prenotazione - problemi: complessità operazioni, inefficienza e rigidità della prenotazione

  15. Evoluzione dei sistemi operativi Prima generazione ('50-'60): - virtualizzazione dell'I/O, librerie di controllo dei device - separazione del programmatore dalla macchina tramite l'operatore - problemi: debug, set-up dei job - riduzione dei tempi di set-up tramite s.o. batch dotati di: - monitor - multiprogrammazione - gestione periferiche con tecniche di spooling  nasce il s.o. come stratificazione successiva di funzioni volte ad aumentare l'efficienza e la semplicità d'uso della macchina

  16. Evoluzione dei sistemi operativi Seconda generazione (‘60-'65): - indipendenza tra programmi e dispositivi usati (logical I/O) - parallelizzazione degli utenti tramite multiprogrammazione a condivisione di tempo (time-sharing). Terza generazione ('65-'75): - s.o. unico per una famiglia di elaboratori - gestione della memoria virtuale - sistemi multifunzione (scientifico, gestionale) - linguaggi di comando complessi

  17. Evoluzione dei sistemi operativi Quarta generazione (’75 - …): - sistemi a macchine virtuali - sistemi multiprocessore e distribuiti - interfacce amichevoli per l'utente

  18. Gestione batch Significa raggruppare i lavori o i programmi in lotti per conseguire una maggiore utilizzazione delle risorse, cioè un throughput (= numero di programmi eseguiti per unità di tempo) più elevato. Un concetto che si è evoluto nel tempo: • l'operatore raggruppa i programmi in lotti e li immette in tale forma nel sistema per un più razionale utilizzo delle risorse • i programmi sono inseriti nella memoria di massa e poi elaborati • La gestione batch può essere locale (unità centrale direttamente • collegata ai dispositivi di I/O) o remota (è presente una • trasmissione dei job e dei risultati ed eventualmente una • memorizzazione intermedia).

  19. Gestione batch • Operazioni di I/O fuori-linea: • il calcolatore principale non è più rallentato da periferiche lente • trasparente ai programmi applicativi Calcolatori satellite: • con il compito di scrivere e leggere nastri • di potenza ridotta rispetto a quello centrale • primo esempio di sistema multi-computer

  20. Gestione batch Vantaggio ulteriore delle operazioni fuori-linea è la possibilità di utilizzare più lettori di scheda collegati con una stessa unità nastro in ingresso e più stampanti collegate con una stessa unità nastro in uscita. Non ci può essere accesso contemporaneo da parte della CPU e del lettore di schede o della stampante allo stesso nastro. I primi sistemi batch erano monoprogrammati. Successivamente vennero sviluppati sistemi batch in grado di supportare la multiprogrammazione (multitasking).

  21. Monoprogrammazione - Gestione in modo sequenziale nel tempo dei diversi programmi: l’inizio dell’esecuzione di un programma avviene solamente dopo il completamento del programma precedente. - Tutte le risorse sistema sono dedicate all’esecuzione di un solo programma. - Bassa utilizzazione delle risorse: Tp utilizzazione CPU = ------- Tt Tp = tempo dedicato dalla CPU all’esecuzione del programma Tt = tempo totale di permanenza nel sistema del programma

  22. Monitor Il monitor controlla la sequenza degli eventi. La maggior parte del monitor, detta monitor residente, deve sempre essere nella memoria principale e disponibile per l’esecuzione. Nei primi sistemi batch i programmatori sottoponevano i job su schede o su nastri, e l’operatore organizzava una sequenza di job e poneva l’intero “lotto” su un dispositivo di input per l’uso tramite monitor. Il monitor legge un job alla volta e lo pone nell’area dei programmi utente, e gli cede il controllo. Quando viene completato, il job restituisce il controllo al monitor, che immediatamente legge il job successivo.

  23. Multiprogrammazione (multitasking) - Gestione simultanea di più programmi indipendenti. Ciascuno di essi può iniziare o proseguire l'elaborazione prima che un altro sia terminato. - Le risorse risultano meglio utilizzate in quanto si riducono i tempi morti. - Cresce la complessità del sistema operativo: occorrono algoritmi per la gestione delle risorse (CPU, memoria, I/O), nascono problemi di protezione, etc.

  24. Multiprogrammazione (multitasking) Più programmi sono presenti contemporaneamente in memoria principale. Quando uno di essi attende per il completamento di una operazione di I/O, il controllo della CPU viene assegnato ad un altro:

  25. Schedulazione Lo schedulatore a lungo termine (scheduler) determina quali programmi siano disponibili per l’elaborazione. Ogni programma pronto per l’elaborazione diventa un processo e viene immesso in una coda dallo schedulatore a breve termine (dispatcher), che viene eseguito di frequente e determina quale sia il successivo job da eseguire. La schedulazione a medio termine riguarda le funzioni di gestione della memoria virtuale (swapping = quando la memoria RAM libera non è più sufficiente per contenere tutte le informazioni che servono ai programmi, il sistema operativo si fa carico di spostare una certa quantità di dati - quelli meno recentemente utilizzati - dalla memoria volatile a quella di massa).

  26. Spooling SPOOL: acronimo da Simultaneous Peripheral Operation On Line. L'applicazione più comune dello spool è con lo spool di stampa. Con questo sistema, i documenti da stampare vengono caricati in un buffer (generalmente un'area del disco), da dove vengono inviati alla stampante ed eliminati via via che questa riesce a gestirli, di solito con tempi relativamente lunghi. Dal momento che la versione in stampa dei documenti è stata allocata in un buffer dove rimane a disposizione della stampante e dei relativi processi di controllo, l'utilizzatore è libero di svolgere altre operazioni con il computer mentre la stampa procede in background. Lo spooling permette inoltre di avere una coda di stampa con molti lavori, invece di dover attendere che il dispositivo sia libero prima di lanciare la stampa successiva.

  27. Time Sharing L'elaboratore serve "simultaneamente" una pluralità di utenti, dotati di terminali, dedicando a ciascuno di essi tutte le risorse del sistema per quanti fissati di tempo. Migliora i tempi di risposta (turn-around time) ma peggiora l'utilizzazione delle risorse. Può essere presente sia in sistemi monoprogrammati che multiprogrammati. Normalmente una modalità di gestione time-sharing è adottata nei sistemi conversazionali, in cui più utenti contemporaneamente "colloquiano" con il sistema.

  28. Processi • L'evoluzione dei s.o., guidata da esigenze di efficienza, ha portato alla • presenza in memoria centrale di più programmi in esecuzione. • Emergono nuove funzionalità richieste al s.o., quali la gestione dei • programmi stessi e la protezione dalla mutua interferenza. • Un nuovo punto di vista concettuale : • I programmi di controllo, analogamente ai dispositivi hardware, sono largamente indipendenti l'uno dall'altro, ed interagiscono con altre attività di rado ed in punti ben definiti; • La CPU viene "trasferita" da un job all'altro (anzichè "ricevere" programmi in ingresso); • La specifica sequenza di stati della CPU è scarsamente significativa ed impredicibile a causa degli interrupt.

  29. Processi Processo= attività controllata da un programma che si svolge su un processore. • (es. job batch, programma utente time-shared, task di sistema, etc.) Alcuni processi dispongono di un processore privato e pertanto sono permanentemente in esecuzione (ad esempio i controllori delle periferiche). Altri processi condividono un processore comune (la CPU). Distinguiamo: • processi del s.o. che eseguono il codice del sistema • processi utenti che eseguono il codice utente.

  30. esecuzione Scheduling Richiesta I/O pronto bloccato Interrupt/Timer Completamento I/O Processi Funzioni del s.o. (riferite ai processi): - creazione e cancellazione di processi - sospensione e ripresa di processi - strumenti per la sincronizzazione e comunicazione - strumenti per il trattamento di condizioni di deadlock Stato di un processo: - in esecuzione (running) - bloccato (idle, waiting) - pronto (ready)

  31. esecuzione blocco pronto esecuzione blocco esecuzione P1 t2 t3 t4 t0 t1 CPU libera blocco pronto esecuzione blocco pronto P2 Processi Nei sistemi multiprogrammati più processi possono essere in esecuzione concorrentemente.

  32. Processi Algoritmo: Procedimento logico che deve essere seguito per risolvere il problema in esame Programma: Descrizione dell'algoritmo tramite un opportuno formalismo (linguaggio di programmazione) che rende possibile l'esecuzione dell'algoritmo da parte di un particolare elaboratore Processo (sequenziale): La sequenza di eventi che genera un elaboratore quando opera sotto il controllo di un particolare programma (evento = esecuzione di una operazione)

  33. Sistema di protezione Un processo potrebbe tentare di modificare il programma o i dati di un altro processo o di parte del s.o. stesso. Protezione: politiche (cosa) e meccanismi (come) per controllare l'accesso di processi alle risorse del sistema di elaborazione. All'hardware è affidato il compito di rilevazione di errori, come opcode illegali o riferimenti in memoria illegali, possibili effetti di errori di programmazione o di comportamenti deliberatamente intrusivi. Questi errori vengono segnalati e affidati alla gestione del s.o. tramite il meccanismo delle trap. In presenza di errore o di violazione della protezione il s.o. provvede a: • terminare il processo, • segnalare la terminazione anomala ed • effettuare un dump della memoria.

  34. Sistema di protezione Ciascun processo opera in un dominio di protezione che specifica le risorse a cui il processo può accedere e le operazioni consentite. Diritto di accesso (coppia ordinata <risorsa, diritti>): abilitazione all’esecuzione di un’operazione sulla risorsa; un dominio di protezione è una collezione di diritti di accesso. Il sistema di protezione richiede l'esistenza di più modidi funzionamento della CPU: • supervisor mode (system mode, monitor mode) • user mode Il passaggio dal modo user al modo supervisor avviene tramite interruzione : • esterna (asincrona) • interna (sincrona, trap), generata da una SVC (SuperVisor Call o System Call).

  35. Sistema di protezione Esistono delle istruzioni privilegiate che possono essere eseguite solo in supervisor mode. Istruzioni privilegiate: • I/O • modifica dei registri che delimitano le partizioni di memoria • manipolazione del sistema di interruzione • cambiamento di modo • halt

  36. Sistema di protezione Prima di mettere un processo in esecuzione il s.o. ne confina lo spazio logico di memoria mediante registri limite.

  37. Sistema di protezione

  38. Sistema di protezione Le istruzioni di I/O sono privilegiate. Il programma utente richiede al s.o., tramite una system call, di eseguire l'operazione di I/O.

  39. System call Tipicamente l'operando dell’istruzione di system call ne specifica il tipo (INT n), mentre il passaggio degli eventuali parametri avviene tramite registri o per indirizzo. Passaggio dei parametri mediante tabella:

  40. System call Costituiscono l'interfaccia tra un programma in esecuzione ed il s.o. Istruzioni assembly, procedure chiamabili da linguaggi high-level. Nei linguaggi di alto livello sono tipicamente mascherate (“wrappate”) da procedure dette di supporto a tempo di esecuzione. Categorie principali di system call: • controllo dei processi e dei job • manipolazione dei file e dei dispositivi • gestione delle informazioni • comunicazione

More Related