Introduzione ai sistemi operativi Sommario Introduzione



Scaricare 445 b.
14.11.2018
Dimensione del file445 b.


Introduzione ai sistemi operativi


Sommario



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



Il SO come macchina estesa – 2



Il SO come macchina estesa – 3



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



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




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?

    • 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?

    • 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

  • 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



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 – 1



La gestione dei processi – 2



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



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)



Sistemi multi–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


Time–sharing: diagramma temporale



La gestione della memoria



La gestione della memoria principale – 1

  • La memoria principale…

    • …è 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



Allocazione lineare



Paginazione



Paginazione



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



La memoria virtuale – 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

  • L’insieme gerarchico delle directory e dei file può essere rappresentato attraverso un grafo (un albero nei SO più datati) 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 – 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  è 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)




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







©astratto.info 2017
invia messaggio

    Pagina principale