Sistemi Operativi.

Slides:



Advertisements
Presentazioni simili
STRUTTURA DEL SISTEMA OPERATIVO
Advertisements

CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
1 Introduzione ai calcolatori Parte II Software di base.
Introduzione Cosa è un Sistema Operativo? Una breve storia
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Interazione Uomo - Macchina
Sistemi Operativi Menù: 1) Introduzione al sistema operativo
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Il Sistema Operativo.
Strutture dei Sistemi Operativi
Strutture dei Sistemi Operativi
Silberschatz, Galvin and Gagne Operating System ConceptsIntroduzione Che cosè un Sistema Operativo? Sistemi batch semplici Sistemi batch multiprogrammati.
INTRODUZIONE AI SISTEMI OPERATIVI
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Architetture e protocolli CCITTComunicazione: trasferimento di informazioni secondo convenzioni prestabilite La comunicazione richiede cooperazione.
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Sistema Operativo e Compilatore
Struttura dei sistemi operativi (panoramica)
I Thread.
Introduzione.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Linguaggi di programmazione
Laboratorio di Informatica
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Sistemi Operativi GESTIONE DEI PROCESSI.
Introduzione Cosa è un Sistema Operativo ?
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
SISTEMA OPERATIVO..
Silberschatz and Galvin Operating System Concepts CAP. 1 - INTRODUZIONE.
Software e sistema operativo 19-22/5/08 Informatica applicata B Cristina Bosco.
Il sistema operativo.
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
Il Sistema Operativo (1)
Threads.
Sistema Operativo (Software di base)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
I processi.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Gestione del processore (Scheduler)
Introduzione Cos’è un sistema operativo ?. Hardware Sistema Operativo Applicazioni È il livello di SW con cui interagisce l’utente e comprende programmi.
Informatica Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
1.1 Corso di Laboratorio di Informatica: Sistemi Operativi Corso di Laurea in Informatica, Università di Firenze Anno accademico 2008/2009 Prof. Luca Ferrari.
1 Sommario degli argomenti  Sistemi operativi: DOS, Unix/Linux,Windows  Word processors: Word  Fogli elettronici: Excel  Reti: TCP/IP, Internet, ftp,
Il software Componente del computer costituita dai: –programmi di base per la gestione del sistema –programmi applicativi per l’uso del sistema Queste.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Sistemi operativi 2/ed – Ancilotti, Boari, Ciampolini,LipariCopyright © 2008 – The McGraw-Hill Companies srl Capitolo 1 – Concetti introduttivi 1.1Principali.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
Il Sistema Operativo.
Sistema operativo Il sistema operativo è un insieme di programmi che gestiscono tutte le componenti hardware e software di un calcolatore. Spesso si può.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l’ambiente e il territorio Il software di base Stefano Cagnoni e Monica Mordonini.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Informatica Lezione 6 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Cos’è un sistema operativo ?
Informatica Generale Marzia Buscemi
I primi elaboratori Anni ‘50 Rigidamente sequenziali
ISIA Duca degli Abruzzi a.s. 2010/2011 prof. Antonella Schiavon
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
Le basi di dati.
Gestione delle periferiche. Le periferiche sono dispositivi che permettono le operazioni di input/output.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Definizione e obiettivi del Sistema Operativo. DIFFERENZA TRA SISTEMA OPERATIVO – SOFTWARE APPLICATIVO Sistema operativo è un insieme organico di programmi.
Transcript della presentazione:

Sistemi Operativi

Che cosa è un sistema operativo? Un programma che agisce da intermediario fra l’utente e la struttura fisica del calcolatore: gestisce gli elementi fisici di un calcolatore e fornisce all’utente un’interfaccia per poter utilizzare le risorse del sistema di calcolo in modo semplice, efficiente e sicuro Scopi del sistema operativo: Eseguire i programmi utenti e facilitare la soluzione dei problemi degli utenti. Rende il sistema di calcolo un ambiente in cui si può lavorare in modo conveniente e corretto. Utilizzo del calcolatore in maniera efficiente. Interrompetemi pure quando qualcosa non vi è chiaro quel che dico e, se vado troppo veloce, ditemelo. Cominciamo a vedere alcuni concetti di base dei Sistemi Operativi. Possiamo dire che la "molla" che ha guidato tale evoluzione sia da addebitare a problemi di efficenza e di costi. S.O.: insieme di software che gestisce l’hardware del sistema. Alcuni sono progettati per essere “user-friendly” (Windows), altri per essere efficienti (Unix)

Le componenti di un sistema di calcolo Hardware o dispositivi fisici – forniscono le risorse di calcolo fondamentali (CPU o unità centrale di elaborazione, memoria e dispositivi di input/output). Programmi d’applicazione e di sistema – definiscono il modo in cui si usano queste risorse per risolvere i problemi computazionali degli utenti (compilatori, fogli di calcolo, elaboratori di testo e browsers). Utenti (le persone, le macchine e altri computers). Sistema operativo – E’ uno speciale programma di sistema che controlla e coordina l’uso dei dispositivi fisici da parte dei programmi d’applicazione per gli utenti. Per capire cosa siano effettivamente i SO occorre capire prima come sono fatti a grandi linee i computer e quindi quale sia stata l'evoluzione dei Sistemi Operativi in risposta ai problemi nati con i primi computer Un sistema di calcolo si può suddividere in quattro componenti ed il sistema operativo è un suo elemento molto importante. Programmi d’applicazione e di sistema: elaboratori di testo, fogli di calcolo, compilatori o programmi di consultazione del Web.

La Sicurezza La distinzione tra il concetto di Sicurezza e quello di Protezione è lieve, normalmente si definisce Sicurezza la capacità di un SO di: proteggere i propri dati da perdite accidentali dovute a errori umani o malfunzionamenti hardware; proteggere i propri dati da accessi (attacchi) di intrusi che accedono illegalmente al sistema di calcolo. la prima tipologia di problemi viene normalmente affrontata con diverse strategie di backup dei dati: gli attacchi hanno invece portato allo sviluppo di svariate tecnologie di difesa per rispondere alle molteplici tipologie di attacchi: Virus, Cavalli di Troia, Internet Worm, Cracking di password etc.

La Protezione interazioni non desiderate, attacchi La multiprogrammazione e la multiutenza impongono che le risorse utilizzate dai processi e lo stesso SO siano protetti da: interazioni non desiderate, attacchi tentativi di accaparramento. Ogni SO utilizza un certo modello di protezione che può utilizzare meccanismi diversi come ad esempio: dual mode del processore (user/superuser); controllo dei diritti di accesso dei processi ai files; accesso in memoria con l’utilizzo di indirizzi logici e non fisici; operazioni di I/O con chiamate di sistema; gestione a quanti di tempo: evita l’accaparramento della CPU da parte di un solo processo;

Definizioni di un sistema operativo Gestore di risorse – gestisce ed alloca le risorse. Programma di controllo – gestisce l’esecuzione dei programmi utenti e le operazioni dei dispositivi di I/O in modo da impedire che si verifichino errori. Nucleo o Kernel – il solo programma che è sempre attivato nel calcolatore (tutti gli altri sono programmi applicativi). Dato che non si dispone di una definizione completa ed esauriente di sistema operativo ne diamo alcune che dovrebbero aiutare a capire che cosa è: Le differenti definizioni di un sistema operativo. Il s.o. è il programma più strettamente correlato ai suoi elementi fisici. Con risorse si intende risorse fisiche e programmi utili per la risoluzione di un problema: tempo di CPU, spazio di memoria, spazio per la regitrazione di file, dispositivi di Input/Output. Programma di controllo: impedire che si verifichino errori. o che il calcolatore sia usato in modo scorretto. Nucleo: è forse quella più comune.

Quali sono le parti di un SO ? Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore Gestore della memoria Gestore delle periferiche File system Hw

Storia dei sistemi operativi Prima generazione 1945 - 1955 valvole, circuiti stampati Seconda generazione 1955 - 1965 transistors, sistemi operativi di tipo batch Terza generazione 1965 – 1980 Circuiti integrati e sistemi operativi multiprogrammati e time-sharing Quarta generazione 1980 – oggi personal computers, reti, sistemi distribuiti L’informatica commerciale è passata attraverso le cosiddette generazioni caratterizzate dalla tecnologia elettronica dominante e dal prodotto tipico del mercato: Prima generazione: utilizzava come dispositivi di commutazione, tubi a vuoto (il più semplice è il diodo), ovvero “valvole termoioniche”. Le macchine erano mastodontiche, dissipavano molta energia in calore e assai di frequente si guastavano. Le macchine della prima generazione erano programmate in linguaggio macchina o in linguaggio di bassissimo livello e i primi sistemi operativi erano quasi inesistenti. Anche l’immissione e la stampa dei dati erano primitivi, si usavano nastri di carta perforati. La seconda generazione:usa il transistor che fa risparmiare costi, dimensioni e consumi di un fattore 100. Soprattutto il sofware migliora in maniera enorme: nascono linguaggi ad alto livello come COBOL, FORTRAN e ALGOL (i primi due ancora in uso anche se in grande declino), nascono sistemi operativi e gli strumenti per programmare (editor, compilatori, debugger, gestori di librerie). Per la memorizzazione la tecnologia usa schede, nastri magnetici, dischi magnetici e memorie magnetiche. Terza generazione: tecnologia dei circuiti integrati, prima di piccola scala (mille transistor in un chip, anni 70), poi di larga, larghissima scala (fino a una decina di milioni nel 1997) permette di aumentare le prestazioni senza andare a discapito di ingombri e costi. Si determina un notevole miglioramento dei sistemi operativi e delle periferiche. La quarta generazione: la sua caratteristica principale è l’avvento dell’informatica personale, favorita dai costi ridotti e dalle alte prestazioni. L’utilizzo delle telecomunicazioni che permette una comunicazione a livello mondiale.

Sistemi batch (2a generazione) Trasformare le schede in nastro. Primi sistemi a lotti le schede magnetiche relative ad un insieme di programmi vengono lette da un computer specializzato 1401 e trasferite su nastro il nastro viene messo nella macchina 7094 che esegue la computazione e produce un nastro di risultati la macchina 1401 stampa il nastro dei risultati

Sistemi batch L’utente non interagiva direttamente col sistema di calcolo ma preparava un lavoro d’elaborazione (JOB): composto da programma, i dati e le informazioni sul tipo di lavoro; e lo affidava di solito sotto forma di una pila di schede perforate, all’operatore di sistema. Pacco di schede per un sistema batch: struttura di un tipico job

Sistemi batch Spooling Si riduce il tempo di preparazione della macchina raggruppando a lotti i lavori con requisiti simili ed eseguendoli come un unico gruppo. Sequenzializzazione automatica dei lavori d’elaborazione – si trasferisce automaticamente il controllo da un lavoro all’altro. Primi rudimentali sistemi operativi. Batch significa a lotti perché per accelerare l’elaborazione si raggruppavano insieme i lavori con requisiti simili e si facevano eseguire dal calcolatore in un unico blocco. Era l’operatore cheavevca il compito di ordinare i programmi in lotti con requisiti analoghi. L’introduzione dei dischi magnetici ha permesso al sistema operativo di mantenere tutti i lavori in un disco, anziché in un lettore di schede seriale Per eliminare i tempi morti tra un lavoro e un altro si introdusse la tecnica della sequenzializzazione automatica dei lavori attuata dal programma monitor residente. job con requisiti simili vengono raggruppati in lotti sequenzializzazione automatica dei job da elaborare => miglioramento delle prestazioni lentezza dei dispositivi di I/O => utilizzo della CPU ancora basso disco schede CPU Spooling

Sistemi batch multiprogrammati (3a generazione) Il sistema operativo tiene contemporaneamente nella memoria centrale diversi lavori (jobs) e la CPU passa dall’uno all’altro (CPU scheduling) durante le operazioni di I/O senza rimanere mai inattiva. Nei periodi di I/O di un processo si eseguono altri processi. Questi jobs sono un sottoinsieme dei lavori contenuti in un lotto perché non ci stanno tutti nella memoria centrale.

Multiprogrammazione Il sistema operativo: Obiettivo: aumentare l'utilizzo della CPU organizzando i job in modo tale da mantenere la CPU in continua attività Il sistema operativo: mantiene contemporaneamente in memoria centrale un insieme di job (un sottoinsieme di quelli memorizzati su disco) ne sceglie uno e lo esegue fino a che questo non ha bisogno di attendere il verificarsi di un qualche evento (per esempio, il montaggio di un nastro o il completamento di un'operazione di I/O) a questo punto passa ad eseguire un altro job quando un job sospeso ha terminato la sua attesa, viene reinserito nell'insieme dei job da eseguire

Caratteristiche principali di un sistema multiprogrammato Il SO passa continuamente dall'esecuzione di un job all'altro effettuando: uno scheduling dei job da caricare in memoria centrale una gestione della memoria tra i vari job uno scheduling della CPU per scegliere il job da eseguire La presenza di più programmi nella memoria implica una gestione della memoria stessa. Un esempio notevole di questa classe è stato l’IBM OS/360.

Scheduling del processore Scheduling dei job Nei sistemi multiprogrammati diventano critiche due funzioni del SO: la gestione della memoria per ottimizzarne l’utilizzo viste le dimensioni generalmente limitate (prima l’unico problema era che il programma “entrasse” in memoria); la protezione reciproca dei processi utente da eventuali interazioni non desiderate (nei sistemi monoprogrammati esisteva solo il problema della protezione del sistema dai processi utente);

Sistemi Time-Sharing Estensione logica della multiprogrammazione sviluppata per garantire un uso interattivo del sistema di calcolo ad un costo ragionevole L’esecuzione del processore viene suddivisa in un certo numero di quanti temporali. Allo scadere di un quanto, il processo corrente viene interrotto e l’esecuzione passa ad un altro processo. con una frequenza (quanto di tempo predeterminato) tale da permettere agli utenti di interagire con ciascun programma durante la sua esecuzione: L'introduzione di nuovi dispositivi di I/O, quali tastiere e monitor video, di nuovi strumenti software, quali editor di testi e debugger, e del concetto di file system on-line ha esaltato il concetto di sistema di calcolo interattivo che permette la comunicazione on-line tra utente e sistema

Vantaggi Il processore non viene lasciato inattivo durante operazioni I/O molto lunghe. Il sistema dà l’impressione di eseguire più processi contemporaneamente. Il sistema di calcolo interattivo permette la comunicazione diretta tra utente e sistema: l’utente impartisce le istruzioni direttamente al sistema operativo oppure ad un programma, attraverso la tastiera o il mouse.

Caratteristiche necessarie per un sistema Time-Sharing Gestione della memoria Memoria virtuale File system CPU Scheduling Sincronizzazione dei processi Deadlock Memoria virtuale è una tecnica che consente l’esecuzione di lavori d’elaborazione anche non interamente caricati in memoria. Raffinati schemi di scheduling Per assicurare che tale esecuzione sia disciplinata devono fornire meccanismi per la comunicazione e sincronizzazione dei processi Deadlock è una tecnica che evita a due programmi di entrare in conflitto specificando in anticipo le risorse di cui hanno bisogno. Deadlock è una situazione in cui due programmi che condividono la stessa risorse evitano di entrare in conflitto tra di loro specificando in anticipo le risorse di cui hanno bisogno. Programs were required to specify in advance what resources they needed so that they could avoid conflicts with other programs running at the same time A deadlock is a situation in which two computer programs sharing the same resource are effectively preventing each other from accessing the resource, resulting in both programs ceasing to function.

Primi sistemi operativi Time-Sharing CTSS (Compatible Time Sharing System - 1962) MULTICS (MULTIplexed Information and Computing Service - 1965) UNIX (1969) Primi sistemi operativi di questo tipo. Da Multics deriva Unix.

Personal Computer (4a generazione) Personal computers – calcolatori orientati verso un singolo utente. Dispositivi I/O – tastiere, mouse, schermi video, stampanti. Comodità e prontezza d’uso per l’utente (invece che mirare al massimo utilizzo della CPU). Possono utilizzare tecnologie sviluppate originariamente per sistemi di grandi dimensioni Possono eseguire tipologie differenti di sistemi operativi (per esempio, Windows, MacOS, UNIX, Linux) Sono apparsi negli anni 70

Personal Computer MS-DOS (MicroSoft Disk Operating System -1980) Windows (1985) Windows 95, Windows 98, Windows Me Windows NT, Windows 2000, Windows XP, MacOS UNIX Minix (1987) Linux (1994)

Sistemi distribuiti Lo scopo è distribuire la computazione tra parecchi processori fisici o mettere in comunicazione calcolatori fisicamente distribuiti per cooperare nella soluzione dei problemi di calcolo e per fornire agli utenti un ricco insieme di funzioni. Vantaggi dei sistemi distribuiti: condivisione di risorse e del carico della computazione affidabilità

Sistemi distribuiti e reti di calcolatori Si basano sulle reti per realizzare le proprie funzioni. Le reti si classificano secondo le distanze tra i loro nodi Local Area Networks (LAN) Wide Area Networks (WAN) Possono essere sistemi client-server o peer-to-peer.

Struttura di una LAN (Local Area Network) Comprende nodi all’interno della stessa stanza, piano, edificio. Nate nei primi anni 70. Più economico avere molti piccoli calcolatori che uno solo grande. La rete permette di condividere dati e risorse (stampanti, scanner, plotter,…) I nodi sono tutti vicini tra loro, si ha così una maggior velocità e minor frequenza di errori; questo grazie all’uso esclusivo di costosi cavi di elevata qualità (però corti).

Struttura di una WAN (Wide Area Network) Si estende a gruppi di edifici, città o al territorio di una regione o di uno stato. La prima rete progettata è stata ARPANET nel 1968. Nata come unione di 4 siti, adesso è diventata una rete mondiale di reti, INTERNET Si usano linee telefoniche, collegamenti a microonde e canali satellitari. I collegamenti sono lenti e inaffidabili. I PC sono di norma collegati a LAN, a loro volta collegate a reti regionali, collegate alle altre per mezzo di ROUTER. Tutto questo forma la rete mondiale. Alcune Wan sono collegate alla rete per mezzo di connessioni veloci, in cui più servizi telefonici lavorano in parallelo per garantire maggior velocità; altre invece sfruttano normali linee telefoniche, per mezzo dei modem.

Struttura generale di un sistema client-server

Architettura Client-Server e Peer2Peer

Sistemi per Multiprocessori I sistemi paralleli sono utilizzati per incrementare: banda di elaborazione, velocità e affidabilità. I sistemi paralleli più diffusi sono i multiprocessori simmetrici (SMP) dove un pool di processori identici condividono la memoria centrale e l’I/O. Piattaforme commerciali SMP includono: workstation con processori Pentium IV o Pentium Xeon come Netfinity di IBM; server come il Sun Starfire che supporta sino a 64 processori SPARC. Su questi sistemi “girano” sistemi operativi come Windows NT-2000,XP, Solaris o Linux che supportano il multiprocessing.

Funzioni tipiche di un Sistema Operativo

Le Funzioni tipiche di un SO In tutte le classi di SO riusciamo ad individuare (almeno) i seguenti sottosistemi che insieme realizzano la macchina astratta del SO: Gestione dei processi e schedulazione del processore Gestione della memoria Gestione del Filesystem Gestione dei dispositivi di I/O Sicurezza Protezione delle risorse

La Gestione dei Processi In un sistema multiprogrammato ogni programma deve ottenere una sorta di “macchina virtuale” allocando ogni volta che va in esecuzione le risorse di cui ha bisogno. L’entità che alloca le risorse necessarie è detta PROCESSO. Un processo può quindi essere pensato come un programma in esecuzione La differenza tra un programma e un processo è che il primo è un’entità passiva ovvero la codifica di un algoritmo, mentre il secondo è un’entità attiva ovvero l’insieme di risorse utilizzate da un programma durante la sua esecuzione. In un sistema di calcolo sono in esecuzione sia i processi di sistema che realizzano le funzioni del SO, che i processi utenti che eseguono i programmi lanciati dagli utenti.

La Gestione dei Processi (2) Se i processi sono le entità che rappresentano i programmi in esecuzione concorrente, il SO deve mettere a disposizione funzionalità per: La creazione e distruzione di processi; La sospensione e ripristino dell’esecuzione; La sincronizzazione per l’accesso alle risorse; La comunicazione; Il modello concorrente è caratterizzato da un diagramma degli stati che descrive le possibili transizioni di stato consentite ai processi del sistema.

Diagramma degli stati attivazione uscita New terminated interrupt Ready Running attesa evento (es. I/O) verificarsi di un evento o completamento di un I/O dispatch Waiting

La Gestione della Memoria Al momento dell’esecuzione ogni programma deve risiedere, almeno in parte, nella memoria centrale. La multiprogrammazione e il TS provocano frequenti alternanze tra i processi in esecuzione quindi il SO deve gestire efficientemente le seguenti funzioni: tenere traccia dell’occupazione della memoria; scegliere di volta in volta quale processo caricare minimizzando il numero di movimenti (scheduling a medio termine); allocare e deallocare dinamicamente spazi di memoria aumentando il numero di processi che possono risiedere in memoria contemporaneamente.

La Gestione dei File Il SO fornisce all’utente modalità standard per accedere ai dati che necessitano di essere archiviati permanentemente. Tali modalità utilizzano in genere due astrazioni: File (archivio): un file è un tipo di dato astratto sul quale sono definite alcune operazioni indipendenti dal tipo di supporto sul quale il file è memorizzato (disco, nastro, floppy etc). Le operazioni tipiche sono la creazione, l’eliminazione, la lettura/scrittura, la rinominazione etc. Directory (cartella): una collezione (contenitore) di file sulla quale sono possibili operazioni complessive come spostamento, rinominazione, eliminazione etc. Le directory vengono usate per organizzare i file.

La Gestione dell’I/O Il gestore dell’I/O ha la finalità di nascondere all’utente e alle altre componenti del sistema le caratteristiche dei dispositivi di I/O. Il sottosistema di I/O comprende essenzialmente tre elementi: gestione della memoria per le operazioni di caching, buffering e spooling che ottimizzano gli scambi di informazione tra la memoria centrale e i dispositivi. un’interfaccia generica per utilizzare i drivers dei dispositivi in modo uniforme da parte del programmatore. un insieme di drivers associati ai dispositivi del sistema nei quali rimane confinata la parte di sistema dipendente dall’hardware.

La Gestione della Memoria Secondaria Le tecniche di multiprogrammazione e TS richiedono che la memoria principale sia utilizzata in modo intenso, trasferendo continuamente dati e programmi da e verso la memoria secondaria (tipicamente su disco). Il SO deve ottimizzare tali spostamenti fornendo le seguenti funzionalità: tenere traccia dell’occupazione dello spazio disco per poter utilizzare efficientemente le eventuali aree libere; funzioni di allocazione di spazio su disco e gestione delle situazioni speciali come l’area di swap; scheduling del disco rispetto alle richieste provenienti dai processi utente e sistema (in un sistema multiprogrammato la coda di attività su disco può avere una certa lunghezza);

Nucleo: System call Send, Receive, Scheduling Il nucleo del SO Le funzioni del SO che riguardano: la gestione dei processi, la loro cooperazione (sincronizzazione e comunicazione) la gestione del processore sono dette Nucleo (Kernel) del SO. Il firmware del calcolatore e il nucleo costituiscono il supporto a tempo di esecuzione del modello concorrente adottato dal SO. Processo utente Processo sistema Processo sistema Processo utente Nucleo: System call Send, Receive, Scheduling Firmware

Modello monolitico Nel modello monolitico tutte le funzioni, anche quelle per la gestione delle risorse, sono contenute nel nucleo. In un SO monolitico il nucleo tende a coincidere con il SO. In linea di principio in una organizzazione monolitica tutte le funzioni possono chiamarsi senza alcuna gerarchia. Ogni procedura “conosce” l’interfaccia e i parametri con cui utilizzare le altre. La portabilità e la modularità dei SO monolitici è limitata ed è difficile separare i meccanismi dalle politiche di gestione. Un esempio di SO monolitico è MS-DOS che a cause delle limitazioni di spazio privilegia l’efficienza a scapito della struttura e della protezione.

Schema del sistema MS-DOS Non ha l’identificazione dell’utente con login e password; Non ha protezione del file system (ownership, gruppi). Non supporta meccanismi di protezione della memoria. Non esiste la modalità Kernel distinta da quella utente. Non è multiprogrammato: la shell lancia un programma e attende che sia completato. i comandi utente di I/O agiscono direttamente sui dispositivi. PROGRAMMI DI APPLICAZIONE PROGRAMMI DI SISTEMA DRIVER DISPOSITIVI MS-DOS DRIVER DISPOSITIVI ROM BIOS

Modello stratificato Il sistema rimane monolitico perché tutte le funzioni vengono eseguite in modalità kernel ma introduce una “strutturazione” gerarchica delle funzioni. Unix è un modello “classico” di SO stratificato e include tre livelli: un’interfaccia utente per le chiamate di sistema; un insieme di procedure per la gestione delle risorse corrispondenti alle chiamate di sistema; un insieme di procedure di servizio invocate dalle chiamate di sistema (es. per la gestione della concorrenza); La strutturazione in strati migliora la modularità e la portabilità. Esistono SO con una stratificazione più spinta (es. THE o MULTICS) ma i sistemi moderni limitano il numero degli strati per motivi di efficienza.

Uno schema di sistema monolitico stratificato System call Processi utente U1 U2 U3 Um Procedure di gestione Proc 1 Proc 2 Proc N kernel Procedure di servizio (gestione concorrenza) Serv 1 Serv 2 Serv k Interfaccia kernel - firmware

Lo schema di Unix Utenti Programmi di utilità interfaccia utente Utenti interfaccia delle librerie di sistema Programmi di utilità (Shell, compilatori, editors) interfaccia system call user mode Libreria Standard (Open close, read, write, fork) Unix kernel: Gestione Processi, Memoria, File System, I/O kernel mode

Visione astratta delle componenti di un sistema di calcolo

Modelli a microkernel Un passo avanti nella strutturazione dei sistemi si ottiene estraendo dal nucleo del SO le funzioni di gestione e lasciando solo le funzioni necessarie all’implementazione del modello concorrente. Questi sistemi sono detti anche a nucleo minimo o microkernel. Esistono due gruppi di sistemi a microkernel: sistemi orientati alle procedure: in questi sistemi le funzioni di gestione delle risorse vengono eseguite direttamente dai processi utente invocando procedure che vanno a modificare strutture dati condivise. L’assunzione implicita di questo modello è di disporre di una memoria condivisa; sistemi orientati ai processi o client-server: in questo caso le risorse dei sistema sono gestite da un insieme di processi server. I processi utenti effettuare richieste di accesso alle risorse comunicando esplicitamente con i server preposti.

Modello client-server Il modello client-server estrae le funzioni di gestione dal nucleo affidandole a un insieme di processi gestori (server) che controllano l’accesso alle risorse. I processi utente effettueranno comunicazioni esplicite (per esempio per leggere un blocco di un file) al servente della risorsa che svolgerà per “suo conto” l’operazione e gli restituirà il risultato con un’altra comunicazione. La separazione tra i meccanismi (forniti dal nucleo) e le politiche (specificate nei processi) è naturale in questo modello. Il modello client-server ha gli stessi vantaggi di modularità e portabilità del modello a procedure ma non richiede memoria comune ed è quindi utilizzabile anche per i sistemi distribuiti. La protezione utilizza un meccanismo più “robusto” dato che i processi non hanno le risorse nel loro spazio logico.

Modelli a macchine virtuali Multiprogrammazione e TS sono gestiti finora dalla sola astrazione dei processi. Il sistema IBM VM/370 utilizza un approccio totalmente differente, il nucleo implementa infatti una serie di macchine virtuali da associare ad ogni utente che forniscono la visione di una macchina fisica dedicata identica a quella reale. Sulle macchine virtuali dovranno essere eseguiti altri SO visto che il nucleo realizza solo l’astrazione di più macchine fisiche. I SO (monoutente) scelti da utenti diversi possono anche essere distinti!! L’approccio delle macchine virtuali offre una separazione completa tra le attività dei vari utenti perché non esiste nessuna possibilità di interazione tra macchine virtuali distinte. Lo scarso seguito avuto dal VM/370 non diminuisce il fascino di questa soluzione che è stata “riutilizzata” in diversi contesti dove la protezione e’ essenziale (emulatori, ambienti NT o Mach, Java VM).

Sistema a Macchine Virtuali Processo Utente Processo Utente Processo Utente Processo Utente Kernel Kernel Kernel Kernel Macchina Virtuale HARDWARE

Windows NT-2000 un modello ibrido Client Server Macchine virtuali non è microkernel