Introduzione ai sistemi operativi

Slides:



Advertisements
Presentazioni simili
STRUTTURA DEL SISTEMA OPERATIVO
Advertisements

1 Introduzione ai calcolatori Parte II Software di base.
Il Software.
Linguaggi di programmazione
Introduzione Cosa è un Sistema Operativo? Una breve storia
Gestione della memoria centrale
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
STRUTTURA DEL PERSONAL COMPUTER
TEORIA DEI SISTEMI OPERATIVI
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.
Introduzione ai 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.
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Struttura dei sistemi operativi (panoramica)
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.
Il sistema operativo Vito Perrone
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Il Software Una programmazione diretta della macchina hardware da parte degli utenti è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica.
MODULO 01 Unità didattica 04
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
STRUTTURA GENERALE DI UN ELABORATORE
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)
Il Sistema Operativo: il File System
Il Software Programmare direttamente la macchina hardware è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo.
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
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.
Il Sistema Operativo Il Sistema Operativo è costituito dall’insieme dei programmi necessari per far funzionare tutto l’hardware del calcolatore e per nascondere.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
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 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.
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 è 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.
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l’ambiente e il territorio Il software di base Stefano Cagnoni e Monica Mordonini.
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.
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.
 Negli anni 40 i sistemi operativi non esistevano, i programmatori infatti avevano un accesso diretto alle risorse hardware.  Il primo sviluppo dei.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Introduzione ai sistemi operativi

Sommario Introduzione Storia dei sistemi operativi Scopo del sistema operativo Architettura del sistema operativo Storia dei sistemi operativi Struttura dei sistemi operativi La gestione dei processi La gestione della memoria Il file system La gestione dei dispositivi di I/O L’interfaccia utente Esempi di sistemi operativi

Introduzione

Cos’è un sistema operativo  1 Il software può essere diviso in due grandi classi: i programmi di sistema, che gestiscono le funzionalità del sistema di calcolo i programmi applicativi, che risolvono i problemi degli utenti L’insieme dei programmi di sistema viene comunemente identificato con il nome di Sistema Operativo (SO) Definizione Un sistema operativo è un programma che controlla l’esecuzione di programmi applicativi ed agisce come interfaccia fra le applicazioni e l’hardware del calcolatore

Cos’è un sistema operativo  2 Tutte le piattaforme hardware/software richiedono un sistema operativo Quando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare a lavorare: durante questa pausa il computer carica il SO

Scopo del sistema operativo Gestione EFFICIENTE delle risorse del sistema di elaborazione Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina

Compiti del sistema operativo Gestione dei processi Gestione della memoria principale Gestione della memoria di massa (file system) Realizzazione dell’interfaccia utente Rilevamento e gestione degli errori Accounting Protezione e sicurezza

Esempio: il SO come gestore risorse – 1 Si consideri un ristorante con un capo–cuoco (che dirige la cucina) ed i suoi aiutanti, camerieri e clienti: I clienti scelgono un piatto dal menù Un cameriere prende l’ordine e lo consegna al capo–cuoco Il capo–cuoco riceve l’ordine e assegna uno o più aiutanti alla preparazione del piatto Ogni aiutante si dedicherà alla preparazione di un piatto, il che potrà richiedere più attività diverse Il capo–cuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate) disponibili

Esempio: il SO come gestore risorse – 2 Il capo–cuoco è il sistema operativo! I clienti sono gli utenti Le ricette associate ai piatti sono i programmi Il menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo (grafica e non) Gli aiutanti sono i processi La cucina è il computer; pentole, fornelli, etc. sono le componenti hardware

Esempio: il SO come gestore risorse – 3 Problemi del capo–cuoco: Esecuzione fedele delle ricette Allocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.) Coordinamento efficiente degli aiutanti Licenziamento degli aiutanti che non si comportano secondo le regole Problemi del sistema operativo: Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.) Protezione nell’uso delle risorse Coordinamento dei processi

Il SO come macchina estesa – 1 Visione a strati delle componenti hardware/software che compongo un elaboratore

Il SO come macchina estesa – 2 Il SO può essere inteso come uno strumento che virtualizza le caratteristiche dell’hardware sottostante, offrendo all’utente la visione di una macchina astratta più potente e più semplice da utilizzare di quella fisicamente disponibile In questa visione, un SO… …nasconde a programmatori/utenti i dettagli dell’hardware e fornisce un’interfaccia conveniente e facile da usare …agisce come intermediario tra programmatore/utente e hardware Parole chiave Indipendenza dall’hardware Comodità d’uso Programmabilità

Il SO come macchina estesa – 3 L’utente è in grado di utilizzare la macchina fisica senza conoscere i dettagli della sua struttura interna e del suo funzionamento Hardware — fornisce le risorse fondamentali di calcolo (CPU, memoria, device di I/O) Sistema Operativo — controlla e coordina l’utilizzo delle risorse hardware da parte dei programmi applicativi dell’utente Programmi Applicativi — definiscono le modalità di utilizzo delle risorse del sistema, per risolvere i problemi di calcolo degli utenti (compilatori, database, video game, programmi gestionali) Utenti — persone, altri macchinari, altri elaboratori Visione “a cipolla” del sistema di calcolo

Architettura del sistema operativo I SO sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzione I vari moduli del SO interagiscono tra loro secondo regole precise, al fine di realizzare le funzionalità di base della macchina KERNEL Gestore dei Processi Gestore della Memoria Centrale Gestore dell’I/O Gestore del File System Interfaccia utente L’insieme dei moduli per la gestione della CPU e della memoria centrale è il kernel

Ancora sul sistema operativo Riassumendo: Il sistema operativo fornisce un ambiente per eseguire programmi in modo conveniente ed efficiente, funge infatti da… Allocatore di risorse — controlla, distribuisce ed alloca le risorse (in modo equo ed efficiente) Programma di controllo — controlla l’esecuzione dei programmi utente e le operazioni sui dispositivi di I/O Esempio: il filesystem Si ha a che fare con file, directory, etc., e non ci si deve preoccupare di come i dati sono memorizzati sul disco

Storia dei sistemi operativi

Storia dei sistemi operativi L’evoluzione dei sistemi operativi… …è stata spinta dal progresso tecnologico dell’hardware …ha guidato il progresso tecnologico dell’hardware Esempio: Gestione degli interrupt Protezione della memoria Memoria virtuale ... Perché analizzare la storia dei sistemi operativi? Perché permette di capire l’origine di certe soluzioni presenti nei SO attuali Perché è l’approccio migliore per capire come certe idee si sono sviluppate Perché alcune delle soluzioni più antiche sono ancora utilizzate

Storia dei sistemi di elaborazione Generazione 0: Babbage (1792–1871) Progetta la macchina analitica (programmabile, meccanica) Non aveva sistema operativo La prima programmatrice della storia è Lady Ada Lovelace Generazione 1: 1945–1955 Valvole e tavole di commutazione Generazione 2: 1955–1965 Transistor e sistemi batch Generazione 3: 1965–1980 Circuiti integrati, multiprogrammazione e time–sharing Generazione 4: 1980–oggi Personal computer

Generazione 1: 1945–1955 Come venivano costruiti? Come venivano usati? Calcolatori a valvole e tavole di commutazione Come venivano usati? Solo calcoli numerici (calcolatori non elaboratori) Un singolo gruppo di persone progettava, costruiva, programmava e manuteneva il proprio computer Come venivano programmati? In linguaggio macchina (stringhe di 0 e 1) Programmazione su tavole di commutazione Nessun sistema operativo!

Generazione 1: 1945–1955 Principali problemi: Scarsa affidabilità (guasti frequenti) Rigidità nell’assegnazione dei ruoli Non esiste il concetto di programmatore come entità separata dal costruttore di computer e dall’utente Utilizzazione lenta e complessa; l’operatore doveva… …caricare il programma da eseguire …inserire i dati di input …eseguire il programma …attendere il risultato …in caso di errore, ricominciare dal punto 1) Tutto ciò a causa dell’assenza del SO

Generazione 2: 1955–1965 Come venivano costruiti? Come venivano usati? Introduzione dei transistor Costruzione di macchine più affidabili ed economiche Come venivano usati? Gli elaboratori iniziano ad essere utilizzati per compiti diversi Si crea un mercato, grazie alle dimensioni ed al prezzo ridotti Avviene una separazione tra costruttori, operatori e programmatori Come venivano programmati? Linguaggi di “medio/alto livello”: Assembly, Fortran Tramite schede perforate Sistemi operativi batch

Generazione 2: 1955–1965 Definizione di job: Un programma o un insieme di programmi la cui esecuzione è richiesta da un utente Ciclo di esecuzione di un job Il programmatore… scrive (su carta) un programma in un linguaggio di alto livello perfora una serie di schede con il programma e il suo input consegna le schede ad un operatore L’operatore… inserisce le schede di controllo scritte in linguaggio apposito inserisce le schede del programma attende il risultato e lo consegna al programmatore operatore  programmatore = utente

Generazione 2: 1955–1965 Primi rudimentali esempi di sistema operativo, detti anche monitor residenti o sistemi batch, “a infornata”: Controllo iniziale al monitor Il controllo viene ceduto al job corrente Una volta terminato il job, il controllo ritorna al monitor Il monitor residente è in grado di eseguire una sequenza di job, trasferendo il controllo dall’uno all’altro in successione

Generazione 2: 1955–1965 Principale problema: molte risorse non utilizzate Durante le operazioni di lettura schede/stampa, durante il caricamento di un nuovo job, il processore resta inutilizzato Parte della memoria resta inutilizzata Primo miglioramento… ma non una soluzione Caricamento di numerosi job su nastro (off–line) Elaborazione (output su nastro) Stampa del nastro di output (off–line)

Generazione 3: 1965–1980 Come venivano costruiti? Come venivano usati? Circuiti integrati Come venivano usati? Progressivamente sparisce la figura dell’operatore come “interfaccia” degli utenti verso le macchine utente = operatore Come venivano programmati? Linguaggi di “alto livello”: C, shell scripting Editor testuali, editor grafici, compilatori Accesso al sistema da terminali Sistemi operativi interattivi, con multi–programmazione e time–sharing

Generazione 3: Multi–programmazione Definizione di multi–programmazione: Utilizzo del processore durante i periodi di I/O di un job per eseguire altri job Vantaggi: Il processore non viene lasciato inattivo (idle) durante le operazioni di I/O (molto lunghe) La memoria viene utilizzata al meglio, caricando il maggior numero di job possibili Nota: per gestire la multi–programmazione, il SO deve gestire un pool di job da eseguire, fra cui alternare il processore

Generazione 3: Multi–programmazione Caratteristiche tecniche: Più job contemporaneamente in memoria Una componente del SO, detta scheduler, si preoccupa di alternarli nell’uso della CPU Quando un job richiede un’operazione di I/O, la CPU viene assegnata ad un altro job SO multi–programmati: Routine di I/O fornite dal SO Gestione della memoria: il sistema deve allocare la memoria per i job presenti contemporaneamente CPU scheduling: il sistema deve scegliere tra i diversi job pronti all’esecuzione Allocazione delle risorse di I/O: il SO deve essere in grado di allocare le risorse di I/O fra diversi processi

Generazione 3: Time–sharing Definizione di time–sharing: La risorsa CPU viene suddivisa in quanti temporali; allo scadere di un quanto, il job corrente viene interrotto e l’esecuzione passa ad un altro job, anche in assenza di richieste di I/O I context switch avvengono così frequentemente che più utenti possono interagire con i programmi in esecuzione SO time–sharing: Gestione della memoria: il numero di processi utente può essere molto elevato; si rende necessario l’uso della memoria virtuale CPU scheduling: deve essere di tipo time–sliced, ovvero sospendere periodicamente l’esecuzione di un programma a favore di un altro La presenza di più utenti rende necessari meccanismi di protezione (e.g. protezione del file system, della memoria, etc.)

Generazione 4: 1980–oggi I personal computer sono dedicati ad utenti singoli: L’obiettivo primario per i SO diventa la facilità d’uso; diminuisce l’interesse per la gestione ottima delle risorse I SO per PC sono in generale più semplici; non implementano la protezione (almeno fino all’avvento di Internet) Creazione di interfacce grafiche user–friendly Tuttavia, tecnologie sviluppate per SO più complessi possono comunque essere adottate

La struttura del sistema operativo La gestione dei processi

La gestione dei processi – 1 Un processo è un programma in esecuzione Un processo utilizza le risorse fornite dal sistema di elaborazione per assolvere ai propri compiti La terminazione di un processo prevede il recupero di tutte le risorse riutilizzabili ad esso precedentemente allocate Normalmente, in un sistema vi sono molti processi, di alcuni utenti, e alcuni sistemi operativi, che vengono eseguiti in concorrenza su una o più CPU La concorrenza è ottenuta effettuando il multiplexing delle CPU fra i vari processi

La gestione dei processi – 2 Il sistema operativo è responsabile delle seguenti attività riguardanti la gestione dei processi: creazione e terminazione dei processi sospensione e riattivazione dei processi gestione dei deadlock comunicazione tra processi sincronizzazione tra processi Il gestore dei processi “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione un’unità di elaborazione dedicata

La gestione dei processi – 3 Il gestore dei processi è il modulo che si occupa del controllo, della sincronizzazione, dell’interruzione e della riattivazione dei programmi in esecuzione cui viene assegnato un processore La gestione dei processi viene compiuta secondo modalità diverse, in funzione del tipo di utilizzo cui il sistema è rivolto Il programma che si occupa della distribuzione del tempo di CPU tra i vari processi attivi, decidendone l’avvicendamento, è chiamato scheduler Nel caso di sistemi multiprocessore, lo scheduler si occupa anche di gestire la cooperazione tra le diverse CPU presenti nel sistema

Ciclo di vita dei processi nascita top nella coda di scheduling running ready tempo scaduto evento wait termine attesa evento (es. I/O)

Politiche di scheduling Le politiche di scheduling sono raggruppabili in due grandi categorie: Preemptive: l’uso della CPU da parte di un processo può essere interrotto in un qualsiasi momento, e la risorsa concessa ad altro processo Non preemptive: una volta che un processo ha ottenuto l’uso della CPU, è unico proprietario della risorsa finché non ne decide il rilascio

Sistemi mono–tasking I SO che gestiscono l’esecuzione di un solo programma per volta (un solo processo) sono detti mono–tasking Non è possibile sospendere un processo per assegnare la CPU ad un altro Sono storicamente i primi SO (es. MS–DOS) Tempo di utilizzo della CPU Tempo di attesa di eventi esterni C B A t T

Sistemi multi–tasking I SO che permettono l’esecuzione contemporanea di più programmi sono detti multi–tasking o multi–programmati Un programma può essere interrotto e la CPU passata a un altro programma Tempo di utilizzo della CPU Tempo di attesa di eventi esterni C B A t Tmulti-tasking Tmono-tasking

Sistemi time–sharing Un’evoluzione dei sistemi multi–tasking sono i sistemi time–sharing Ogni processo viene eseguito ciclicamente per piccoli quanti di tempo Se la velocità del processore è sufficientemente elevata si ha l’impressione di un’evoluzione parallela dei processi Esempio Ipotesi: 1 MIPS, 4 processi, 0.25 s/utente Conseguenze: 0.25 MIPS/utente, TELA = 4  TCPU 0.00” D A 0.75” 0.25” C B 0.50”

Time–sharing: diagramma temporale Processo Tempo di CPU A 3 B 2 C 4 D D C B A t

La gestione della memoria

La gestione della memoria principale – 1 …è un “array” di byte indirizzabili singolarmente …è un deposito di dati facilmente accessibile e condiviso tra la CPU ed i dispositivi di I/O Il SO è responsabile delle seguenti attività riguardanti la gestione della memoria principale: Tenere traccia di quali parti della memoria sono usate e da chi Decidere quali processi caricare quando diventa disponibile spazio in memoria Allocare e deallocare lo spazio di memoria quando necessario Il gestore di memoria “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata

La gestione della memoria principale – 2 L’organizzazione e la gestione della memoria centrale è uno degli aspetti più critici nel disegno di un SO Il gestore della memoria è quel modulo del SO incaricato di assegnare la memoria ai task (per eseguire un task è necessario che il suo codice sia caricato in memoria) La complessità del gestore della memoria dipende dal tipo di SO Nei SO multi–tasking, più programmi possono essere caricati contemporaneamente in memoria Problema: come allocare lo spazio in maniera ottimale

Allocazione lineare Memoria 0000x Programma A Programma B Programma C

PROBLEMA !!!! FRAMMENTAZIONE Allocazione lineare Programma A Memoria 0000x Programma A PROBLEMA !!!! FRAMMENTAZIONE Programma D Programma C

Paginazione Memoria 0000x Programma A Programma B Programma D

Paginazione Programma A Programma E Programma D Programma F Memoria 0000x Programma A Programma D Programma E Programma F

La memoria virtuale – 1 Spesso la memoria non è sufficiente per contenere completamente tutto il codice dei processi Si può simulare una memoria più grande tenendo nella memoria di sistema (RAM) solo le parti di codice e dati che servono in quel momento Si usa il concetto di memoria virtuale I dati e le parti di codice relativi a programmi non in esecuzione possono essere tolti dalla memoria centrale e “parcheggiati” su disco nella cosiddetta area di swap I processori moderni sono dotati di meccanismi hardware per facilitare la gestione della memoria virtuale

La memoria virtuale – 2 Programma A-1 Programma B-1 Programma D 0000x Programma A-1 Programma B-1 Programma A-2 Programma A-3 Programma B-2 Swap Programma D

La memoria virtuale – 2 Programma A-2 Programma B-1 Programma D 0000x Programma A-2 Programma B-1 Swap Programma D Programma A-1 Programma A-3 Programma B-2

La gestione della memoria secondaria  1 Poiché la memoria principale è volatile e troppo piccola per contenere tutti i dati e tutti i programmi in modo permanente, un computer è dotato di memoria secondaria In generale, la memoria secondaria è data da hard disk e dischi ottici Il SO garantisce una visione logica uniforme del processo di memorizzazione: Astrae dalle caratteristiche fisiche dei dispositivi per definire un’unità di memorizzazione logica  il file Ciascuna periferica viene controllata dal relativo device driver, che nasconde all’utente le caratteristiche fisiche variabili dell’hardware: modalità e velocità di accesso, capacità, velocità di trasferimento

La gestione della memoria secondaria  2 Il SO è responsabile delle seguenti attività riguardanti la gestione della memoria secondaria: Allocazione dello spazio Gestione dello spazio libero Ordinamento efficiente delle richieste (disk scheduling)

Il file system

La gestione del file system – 1 Un file è l’astrazione informatica di un archivio di dati Il concetto di file è indipendente dal mezzo sul quale viene memorizzato (che ha caratteristiche proprie e propria organizzazione fisica) Un file system è composto da un insieme di file Il SO è responsabile delle seguenti attività riguardanti la gestione del file system: Creazione e cancellazione di file Creazione e cancellazione di directory Manipolazione di file e directory Codifica del file system sulla memoria secondaria

La gestione del file system – 2 Il gestore del file system è il modulo del SO incaricato di gestire le informazioni memorizzate sui dispositivi di memoria di massa Il gestore del file system deve garantire la correttezza e la coerenza delle informazioni Nei sistemi multi–utente, fornisce meccanismi di protezione per consentire agli utenti di proteggere i propri dati dall’accesso di altri utenti non autorizzati Le funzioni tipiche del gestore del file system sono: Fornire un meccanismo per l’identificazione dei file Fornire metodi opportuni di accesso ai dati Rendere trasparente la struttura fisica del supporto di memorizzazione Implementare meccanismi di protezione dei dati

Organizzazione del file system Quasi tutti i SO utilizzano un’organizzazione gerarchica del file system L’elemento utilizzato per raggruppare più file insieme è la directory Directory L’insieme gerarchico delle directory e dei file può essere rappresentato attraverso un grafo (un albero nei SO più datati) delle directory File Grafo delle directory

La gestione dei dispositivi di I/O

La gestione dei dispositivi di I/O La gestione dell’I/O richiede: Un’interfaccia comune per la gestione dei device driver Un insieme di driver per dispositivi hardware specifici Un sistema di gestione di buffer per il caching delle informazioni Il gestore dei dispositivi di I/O è il modulo del SO incaricato di assegnare i dispositivi ai task che ne fanno richiesta e di controllare i dispositivi stessi Da esso dipende la qualità e il tipo di periferiche riconosciute dal sistema Il gestore delle periferiche offre all’utente una versione astratta delle periferiche hardware; l’utente ha a disposizione un insieme di procedure standard di alto livello per leggere/scrivere da/su una periferica che “percepisce” come dedicata

Device driver Il controllo dei dispositivi di I/O avviene attraverso speciali moduli software, detti device driver I device driver sono spesso realizzati dai produttori dei dispositivi stessi che ne conoscono le caratteristiche fisiche in maniera approfondita I device driver implementano le seguenti funzioni: Rendono trasparenti le caratteristiche fisiche tipiche di ogni dispositivo Gestiscono la comunicazione dei segnali verso i dispositivi Gestiscono i conflitti, nel caso in cui due o più task vogliano accedere contemporaneamente allo stesso dispositivo

L’interfaccia utente

L’interfaccia utente – 1 Tutti i SO implementano meccanismi per facilitare l’utilizzo del sistema da parte degli utenti L’insieme di tali meccanismi di accesso al computer prende il nome di interfaccia utente Serve per… …attivare un programma, terminare un programma, etc. …interagire con le componenti del sistema operativo (gestore dei processi, file system, etc.)

L’interfaccia utente – 2 Interfaccia testuale: Interprete dei comandi (shell) Esempio: MS–DOS/UNIX Interfaccia grafica (a finestre): L’output dei vari programmi viene visualizzato in maniera grafica all’interno di finestre L’utilizzo di grafica rende più intuitivo l’uso del calcolatore Esempio: WINDOWS/Linux Differenze: Cambia il “linguaggio” utilizzato, ma il concetto è lo stesso Vi sono però differenze a livello di espressività

L’interfaccia grafica Realizza la metafora della scrivania (desktop) Interazione semplice via mouse Le icone rappresentano file, directory, programmi, azioni, etc. I diversi tasti del mouse, posizionato su oggetti differenti, provocano diversi tipi di azione: forniscono informazioni sull’oggetto in questione, eseguono funzioni tipiche dell’oggetto, aprono directory  folder, o cartelle, nel gergo GUI (Graphical User Interface)

Protezione e sicurezza

Protezione e sicurezza Protezione  è il meccanismo usato per controllare l’accesso da parte di processi o utenti a risorse del sistema di calcolo Sicurezza  è il meccanismo di difesa implementato dal sistema per proteggersi da attacchi interni ed esterni Denialofservice, worm, virus, hacker In prima istanza, il sistema distingue gli utenti, per determinare chi può fare cosa L’identità utente (user ID) include nome dell’utente e numero associato  uno per ciascun utente L’user ID garantisce l’associazione corretta di file e processi all’utente e ne regola la manipolazione L’identificativo di gruppo permette inoltre ad un insieme di utenti di accedere correttamente ad un gruppo di risorse comuni (file e processi)

Esempi di sistemi operativi

Sistemi operativi commerciali In commercio sono presenti una grande quantità di sistemi operativi diversi In passato, la tendenza delle case costruttrici di sistemi di elaborazione era di sviluppare sistemi operativi proprietari per le loro architetture La tendenza attuale è quella dello sviluppo di sistemi operativi portabili su piattaforme diverse

MS–DOS DOS: Disk Operating System CPU Intel 80x86 (16 bit) Monotask Monoutente File system gerarchico Memoria gestibile limitata (1 MB/640 KB) Nessuna protezione

Windows/Vista CPU Intel (da 80386), ma anche per DEC–AXP, MIPS–R4000, etc. Multitask Monoutente/Multiutente NTFS (NT File System) Microkernel, thread Sistema a 32/64 bit

UNIX Nato alla fine degli anni ‘60 (AT&T Bell Labs) Rimasto all’avanguardia perchè sviluppato in ambito universitario (UCB, University of California at Berkeley) Multitask Multiutente Ottima integrazione in rete Portabilità dei programmi

Linux Nato nel ‘91, grazie a Linus Torvalds, uno studente finlandese dell’Università di Helsinki Sviluppato su piattaforma Intel 80386, fu distribuito da subito su Internet (free e open–source) Multitask Multiutente L'architettura del sistema è Unix–like: un kernel molto “piccolo” che contiene solo funzioni fondamentali per la gestione delle risorse del computer (memoria, dischi, rete e altre periferiche) ed una larga collezione di programmi applicativi che l’utente usa per operare sul sistema