• Non ci sono risultati.

Cos’e` un Sistema Operativo ?

N/A
N/A
Protected

Academic year: 2021

Condividi "Cos’e` un Sistema Operativo ?"

Copied!
48
0
0

Testo completo

(1)

Introduzione ai Sistemi Operativi

Cos’e` un Sistema Operativo ?

• È un programma (o un insieme di programmi) che agisce come intermediario tra l’utente e l’hardware del computer:

fornisce un ambiente di sviluppo e di esecuzione per i programmi

fornisce una visione astratta dell’HW

gestisce le risorse del sistema di calcolo

(2)

Sistemi Operativi L-A 3

Il Sistema Operativo e l’Hardware

Il sistema operativo interfaccia i programmi con le risorse HW:

• CPU

• memoria volatile e persistente

• dispositivi di I/O

• Rete

• …

Il S.O. mappa le risorse HW in risorserisorse logiche

logiche, accessibili attraverso interfacce ben definite:

» processi (CPU)

» file (dischi)

» Memoria virtuale (memoria)...

Sistemi Operativi L-A 4

Cos’e` un Sistema Operativo ?

Sistema Operativo Hardware Programmi Applicativi

Utenti

(3)

Sistemi Operativi L-A 5

Cos’è un sistema operativo?

• Un programma che allocaalloca le risorse del sistema di calcolo ai programmi e agli utenti:

» CPU

» Memoria

» dischi

» dispositivi di I/O

» ...

• Un programma che controllacontrolla dispositivi e programmi allo scopo di garantire un funzionamento corretto ed efficiente.

Aspetti importanti di un S.O.

Struttura: come è organizzato un S.O. ?Struttura

Concorrenza: è possibile la contemporanea esecuzioneConcorrenza:

di più programmi ?

Condivisione: quali risorse vengono condivise tra utentiCondivisione:

e/o programmi? In che modo?

Protezione: il S.O. deve impedire interferenze traProtezione:

programmi/utenti. Con quali metodi?

EfficienzaEfficienza

Affidabilità: come reagisce il S.O. a malfunzionamentiAffidabilità:

(HW/SW) ?

Estendibilità:Estendibilità: è possibile aggiungere funzionalità al sistema ?

(4)

Sistemi Operativi L-A 7

Evoluzione dei Sistemi Operativi

Prima generazionePrima generazione (anni ‘50)

• linguaggio macchina

• dati e programmi su schede perforate

• il sistema operativo non è presente

Seconda GenerazioneSeconda Generazione (‘55-’65):

Sistemi Sistemi batchbatch semplici semplici

• linguaggio di alto livello (fortran)

• input mediante schede perforate

• aggregazione di programmi in lotti (batch) con esigenze simili

Sistemi Operativi L-A 8

Sistemi batch semplici

Batch: insieme di programmi (job) da eseguire in modo sequenziale.

JOB begin

$compile

$load

$run JOB end

(5)

Sistemi Operativi L-A 9

Sistemi batch semplici

Compito del Sistema Operativo (monitor):

trasferimento di controllo da un job (appena terminato) al prossimo da eseguire.

Caratteristiche dei sistemi

Caratteristiche dei sistemi batchbatch semplici: semplici:

• sistema operativo residente in memoria (monitor)

• assenza di interazione tra utente e job

• scarsa efficienza:durante l’I/O del job corrente, la CPU rimane inattiva (lentezza dei dispositivi di I/O meccanici)

Attività CPU

I/O I/O t

Sistemi batch semplici

In memoria centrale, ad ogni

istante, è caricato (al più) un solo

job: Sistema

operativo

Job di utente

Configurazione della memoria centrale in

sistemi batch semplici

(6)

Sistemi Operativi L-A 11

Spooling

(Simultaneous Peripheral Operation On Line) Obiettivo

Obiettivo: aumentare l’efficienza del sistema.

Avvento dei dischi + DMA: ⇒I/O in paralleloin parallelo con l’attività della CPU:

Sistemi batch semplici

cpu output

input

disco

Sistemi Operativi L-A 12

Spooling : contemporaneità di I/O e computazione

• il disco viene impiegato come un buffer molto ampio, dove:

leggere in anticipo i dati

memorizzare temporaneamente i risultati (in attesa che il dispositivo di output sia pronto)

caricare codice e dati del job successivo: -> possibilità di sovrapporre I/O di un job con elaborazione di un altro job

Sistemi batch semplici

cpu output

input

disco

(7)

Sistemi Operativi L-A 13

Sistemi Batch semplici

Problemi:

finché il job corrente non è terminato, il successivo non può iniziare l’esecuzione

se un job si sospende in attesa di un evento, la CPU rimane inattivainattiva

non c’è interazione con l’utente.

Sistemi Batch multiprogrammati

•• Sistemi batchSistemi batch semplici semplici: l’attesa di un evento causa l’inattività della CPU.

⇒ ⇒ MultiprogrammazioneMultiprogrammazione:: Pool di job

Pool di job contemporaneamente presenti su disco:

• il S.O. seleziona un sottoinsieme dei job appartenenti al pool da caricare in memoria centrale:

più job in memoria centrale più job in memoria centrale

• mentre un job è in attesa di un eventoattesa di un evento, il sistema operativo assegna la CPU a un altro job

(8)

Sistemi Operativi L-A 15

Sistemi Batch multiprogrammati

Il sistema operativo è in grado di portare avanti l’esecuzione di più job contemporaneamente:

Ad ogni istante:

un solo job utilizza la CPUun solo job

più job (in memoria centrale) attendono di acquisire lapiù job CPU.

Quando il job che sta utilizzando la CPU si sospende in attesa di un evento:

• il S.O. decide a quale job assegnare la CPU ed effettua lo scambio (schedulingscheduling)

Sistemi Operativi L-A 16

Sistemi Batch multiprogrammati

Scheduling Scheduling

Il S.O. effettua delle scelteS.O. effettua delle scelte tra tutti i job:

quali job caricare in memoria centrale:

scheduling

scheduling dei job dei job (long term scheduling)

a quale job assegnare la CPU: schedulingscheduling della CPU

della CPU o (short term scheduling)

(9)

Sistemi Operativi L-A 17

Sistemi Batch multiprogrammati

Scheduling Scheduling

Memoria

centrale CPU

disco

Scheduling

dei job Scheduling

della CPU

Sistemi Batch Multiprogrammati

tt22 t

t11 t

job1 job2 job3

t0

Attesa di eventi

(10)

Sistemi Operativi L-A 19

Sistemi batch multiprogrammati

In memoria centrale, ad ogni istante, possono essere caricati più job:

Configurazione della memoria centrale in

sistemi batch multiprogrammati

Necessità di Necessità di protezione ! protezione ! Sistema

operativo Job 1 Job 2

Job 3

Sistemi Operativi L-A 20

Sistemi Time-Sharing (

Multics, 1965

)

• Nascono dalla necessità di:

interattivitàinterattività con l’utente

multi-utenza: multi-utenza: più utenti interagiscono contemporaneamente con il sistema.

Sistema Operativo Hardware

Utente

1 Utente

Utente n 2

(11)

Sistemi Operativi L-A 21

Sistemi Time-Sharing

MultiutenzaMultiutenza: il sistema presenta ad ogni utente una macchina virtuale completamente dedicata a lui, per:

• l’utilizzo della CPU

• l’utilizzo di altre risorse (ad es., file system)

InterattivitàInterattività:per garantire un’accettabile velocità di

“reazione” alle richieste dei singoli utenti, il S.O.

interrompe

interrompe l’esecuzione di ogni job dopo un intervallo di tempo prefissato (quanto di tempo, o time slice), ed assegna la CPU ad un altro job.

Sistemi Time Sharing

(oppure, a divisione di tempo)

Sono sistemi in cui:

Sono sistemi in cui:

• L’attività della CPU è dedicata a job diversi che si alternano ciclicamente nell’uso della risorsa

• La frequenza di commutazione della CPU è tale da fornire l’illusione ai vari utenti di una macchina completamente dedicata (macchina virtuale).

Cambio di contesto

Cambio di contesto (context switch):

operazione di trasferimento del controllo da un job al successivo ð costo aggiuntivo (overhead).

(12)

Sistemi Operativi L-A 23

Sistemi Time Sharing

Estensione dei sistemi multiprogrammati:

Un job può sospendersi:

• perchè in attesa di un evento

• perchè è terminato il quanto di tempo.

Sistemi Operativi L-A 24

Sistemi Time Sharing

job2 job1

job3 CPU

t job1

job2 job3

t0 tt11 Δt tt22 tt33 Δt tt44 tt55

Attesa di eventi fine del quanto di tempo

(13)

Sistemi Operativi L-A 25

Time Sharing: requisiti

Gestione/Protezione della memoria:Gestione/Protezione

trasferimenti memoria-disco

separazione degli spazi assegnati ai diversi job

molteplicità job + limitatezza della memoria:

memoria virtualememoria virtuale

Scheduling della CPUScheduling

Sincronizzazione/comunicazioneSincronizzazione comunicazione tra Job:

• interazione

• prevenzione/trattamento di blocchi critici (deadlock)

Interattività: file system on line per permettere agliInterattività utenti di accedere semplicemente a codice e dati

Sistemi Operativi Attuali

MSDOS: monoprogrammato, monoutenteMSDOS

Windows 95, 98: multiprogrammatoWindows 95, 98 (time sharing), monoutente

Windows NT, 2000,2000,XPXP, Vista..:, Vista..

multiprogrammato, “multiutente”

MacOS: multiprogrammato, multiutenteMacOS

Unix/Unix/LinuxLinux:

Multiprogrammato/multiutente

(14)

Richiami sul funzionamento di un sistema di elaborazione

Sistemi Operativi L-A 28

Architettura di un sistema di calcolo

Controller: interfaccia HW delle perifericheController verso il bus di sistema

CPU

Controller dischi

Controller memoria

Controller video

Controller stampante

Memoria

bus

(15)

Sistemi Operativi L-A 29

Funzionamento di un sistema di calcolo

Funzionamento a interruzioni:

Funzionamento a interruzioni:

le varie componenti (HW e SW) del sistema interagiscono con il S.O. mediante interruzioni asincrone (interrupt)

ogni interruzione è causata da un eventoevento; ad esempio:

» richiesta di servizi al S.O.

» completamento di I/O

» accesso non consentito alla memoria

» etc.

ad ogni interruzione è associata una routine diroutine di servizio

servizio (handler), per la gestione dell’evento

Funzionamento di un sistema di calcolo

•• Interruzioni hardware: i dispositiviInterruzioni hardware inviano segnali alla CPU.

Per richiedere l’esecuzione di servizi al S.O.

Sistema Operativo

dispositivo

Segnale di interruzione

(16)

Sistemi Operativi L-A 31

Funzionamento di un sistema di calcolo

Interruzioni software: Interruzioni software: i programmi in esecuzione nel sistema possono generare interruzioni SW:

quando i programmi tentano l’esecuzione di operazioni non lecite (ad es., divisione per 0): trap

system call: richiedono l’esecuzione di servizi al S.O.

Sistema Operativo

programma

Interruzione SW (system call)

Sistemi Operativi L-A 32

Gestione delle interruzioni

Alla ricezione di un’interruzione, il S.O.:

1] interrompe l'esecuzione del programma corrente =>

salvataggio dello stato in memoria (locazione fissa, stack di sistema..)

2] attiva la routine di servizio all’interruzione (handler) 3] ripristina lo stato salvato

Per individuare la routine di servizio il S.O. può utilizzare un vettore delle interruzioni :

Routine di servizio

i

Vettore delle interruzioni

(17)

Sistemi Operativi L-A 33

Protezione

• Nei sistemi che prevedono

multiprogrammazione e multiutenza sono necessari alcuni meccanismi HW per esercitare protezione.protezione.

• Le risorse allocate a programmi/utenti devono essere protette nei confronti di accessi illeciti

accessi illeciti di altri programmi/utenti:

» dispositivi di I/O

» memoria

» CPU

Ad esempio

Ad esempio: accesso a locazioni esterne allo spazio di indirizzi del programma.

Protezione della memoria

In un sistema multiprogrammatomultiprogrammato o time time sharingsharing:

ogni job ha un suo spazio di indirizzi:

è necessario impedire al programma in esecuzione di accedere ad aree di memoria esterne al proprio spazio (ad es., del S.O. oppure di altri Job).

Sistema operativo

Job 1 Job 2 Job 3

Se fosse consentito: un

programma potrebbe modificare codice e dati di altri programmi o del S.O. !

(18)

Sistemi Operativi L-A 35

Protezione

Per garantire protezione, molte Per garantire protezione, molte

architetture prevedono un duplice modo di architetture prevedono un duplice modo di funzionamento (

funzionamento (dualdual mode): mode):

user modeuser

kernel mode (supervisorkernel supervisor, monitor mode)

Realizzazione:

Realizzazione: l’architettura prevede un bit di modo

• kernel: 0

• user: 1

Sistemi Operativi L-A 36

Dual mode

Istruzioni privilegiate:

Istruzioni privilegiate: sono quelle più pericolose e possono essere eseguite soltanto se il sistema si trova in

kernel mode:

» accesso a dispositivi di I/O (dischi, stampanti, schede di rete, etc.)

» gestione della memoria (accesso a strutture dati di sistema per la gestione della memoria)

» istruzione di shutdownshutdown (arresto del sistema)

» etc.

(19)

Sistemi Operativi L-A 37

Dual mode

Il S.O. esegue in modo kernel.

Ogni programma utente esegue in user mode:

• Quando un programma utente tenta l’esecuzione di una istruzione privilegiata, viene generato un trap.

• se necessita di operazioni privilegiate:

chiamata a system system callcall

System Call

Per ottenere l’esecuzione di istruzioni privilegiate, un programma di utente deve chiamare una System Call:

» invio di un’interruzione software al S.O.

» Salvataggio dello stato (PC, registri, bit di modo, etc.) del programma chiamante e trasferimento del controllo al S.O.

» Il S.O. esegue in modo kernelkernel l’operazione richiesta

» al termine dell’operazione, il controllo ritorna al programma chiamante (ritorno al modo useruser)

(20)

Sistemi Operativi L-A 39

System Call

User User mode mode Kernel Kernel mode mode

system call: read( )

Interrupt SW

(salvataggio dello stato del programma utente)

Routine di gestione dell’interruzione

Esecuzione dell’operazione read

ripristino dello stato del programma utente

Programma utente

Sistemi Operativi L-A 40

System Call

La comunicazione tra il programma

chiamante ed il sistema operativo avviene mediante i parametri della system call:

come vengono trasferiti?

• mediante registri (problema: dimensione limitata)

• mediante blocchi di memoria indirizzati da registri

• mediante stack di sistema

(21)

Sistemi Operativi L-A 41

Protezione della memoria

Il Sistema Operativo deve fornire gli strumenti per separare e proteggere gli spazi di indirizzi dei programmi:

Registri base e limite

memorizzano, per il programma in esecuzione (se viene allocato su parole contigue tra loro):

• l’indirizzo della prima parola (RB)

• la dimensione (RL)

dello spazio degli indirizzi associato al programma.

l’Hardware può controllare ogni indirizzo, per verificare se appartiene all’intervallo [RB, RB+RL]

Protezione della memoria

Registri base e limite

RB RL

RL

(22)

Sistemi Operativi L-A 43

Protezione della CPU

Il S.O. deve evitare che un

programma utente non monopolizzi la CPU (ad es., loop):

• uso di timer, per interrompere il programma dopo un intervallo di tempo prefissato (time sharing)

• allo scadere dell’intervallo:

interrupt ð cambio di contesto

Organizzazione dei Sistemi

Operativi

(23)

Sistemi Operativi L-A 45

Struttura dei S.O.

Quali sono le componenticomponenti di un S.O. ? Quali sono le relazionirelazioni mutue tra le

componenti ?

Struttura del Sistema Operativo

Sistema operativo = insieme di componenti

gestione dei processi

gestione della memoria centrale

gestione dei file

gestione dell’I/O

meccanismi di protezione e sicurezza

interfaccia utente/programmatore

(24)

Sistemi Operativi L-A 47

Processo

Processo = programma in esecuzione

• il programma è un’entità passiva: un insieme di byte contenente la codifica binaria delle istruzioni da eseguire.

• il processo è un’entità attiva:

• è l’istanza di un programma in esecuzione

• è l’unità di lavoro all’interno del sistema: ogni attività all’interno del S.O. è rappresentata da un processo

Sistemi Operativi L-A 48

Gestione dei Processi

In un sistema multiprogrammato:

più processi possono esistere contemporaneamente

Compiti del Sistema Operativo:

creazione/terminazione dei processi

sospensione/ripristino dei processi

sincronizzazione/comunicazione dei processi

gestione del blocco critico (deadlock) di processi

(25)

Sistemi Operativi L-A 49

Gestione della Memoria Centrale

L’HW di un sistema di elaborazione è

equipaggiato con un’unico spazio di memoria accessibile direttamente da CPU e dispositivi.

Compiti del Sistema Operativo:

separare gli spazi di indirizzi associati ai processi

allocare/deallocare memoria ai processi

memoria virtuale: offrire spazi logici di indirizzi di dimensioni indipendenti dalla dimensione effettiva della memoria

Gestione dei File

Il sistema operativo fornisce una visione logica uniforme della memoria secondaria, indipendente dal tipo e dal numero dei dispositivi effettivamente disponibili:

realizza il concetto astratto di file, come unità di memorizzazione logica

fornisce opportune astrazioni per

l’organizzazione dei file (direttori, partizioni)

realizza i meccanismi per la gestione di file, direttori e partizioni:

creazione/cancellazione di file e direttori

manipolazione di file/direttori

associazione tra file e dispositivi di memorizzazione secondaria

(26)

Sistemi Operativi L-A 51

Gestione dell’I/O

Il Sistema Operativo si occupa della gestione delle periferiche di I/O:

interfaccia tra programmi e dispositivi

per ogni dispositivo: device driver

• routine per l’interazione con un particolare dispositivo

• contiene conoscenza specifica sul dispositivo (routine di gestione delle interruzioni)

Sistemi Operativi L-A 52

Protezione e Sicurezza

Processi e utenti possono accedere alle risorse del sistema contemporaneamente.

Protezione delle risorse

Protezione delle risorse:: controllo

dell’accesso alle risorse del sistema da parte di processi (e utenti), mediante:

autorizzazioni

modalità di accesso

Risorse da proteggere

Risorse da proteggere: file, memoria, processi dispositivi, ecc.

(27)

Sistemi Operativi L-A 53

Protezione e Sicurezza

Sicurezza:

Le tecnologie di sicurezza hanno come scopo la regolamentazione degli accessi al sistema da parte di utenti esterni, mediante meccanismi di

autenticazione.

La sicurezza misura l’affidabilità del sistema nei confronti di accessi malevoli (attacchi) dal modo esterno.

Interfaccia Utente

Il S.O. presenta un’interfaccia che consente l’interazione con l’utente:

interprete comandi (interprete comandi shellshell): l’interazione avviene mediante una linea di comando

interfaccia grafica (graphical userinterfaccia grafica interface, GUIGUI): l’interazione avviene mediante click del mouse su elementi grafici; di solito organizzata a finestre.

(28)

Sistemi Operativi L-A 55

Interfaccia Programmatore

L’interfaccia del SO verso i programmi (API) è rappresentato dalle system call:

• mediante la system call il processo richiede al sistema operativo l’esecuzione di un servizio (in modo kernel)

Classi di system Classi di system callcall::

» gestione dei processi

» gestione di file e di dispositivi (spesso trattati in modo omogeneo)

» gestione informazioni di sistema

» comunicazione/sincronizzazione tra processi

» ...

Programma di sistema

Programma di sistema = programma che usa system calls

Sistemi Operativi L-A 56

Struttura del Sistema Operativo

Sistema operativo = insieme di componenti

gestione dei processi

gestione della memoria centrale

gestione dei file

gestione dell’I/O

protezione e sicurezza

interfaccia utente/programmatore

Le componenti non sono indipendenti tra loro, ma interagiscono.

(29)

Sistemi Operativi L-A 57

Struttura del Sistema Operativo

Come sono organizzate le varie componenti all’interno del sistema

operativo?

Varie soluzioni:

Varie soluzioni:

struttura monolitica

struttura modulare

microkernel

macchine vituali

Struttura Monolitica

Il sistema operativo è costituito da un unico modulo contenente un insieme diinsieme di procedure

procedure, che realizzano le varie componenti:

l’interazione tra le diverse componenti avviene mediante il meccanismo di chiamata a procedura.

Esempi: MS-DOS,UNIX, GNU/Linux

(30)

Sistemi Operativi L-A 59

Sistemi Operativi Monolitici

Principale Vantaggio: : basso costo di interazione tra le componenti.

Svantaggio: : Il SO è un sistema complesso e presenta gli stessi requisiti delle applicazioni in- the-large::

• estendibilità

• manutenibilità

• riutilizzo

• portabilità

• affidabilità

• ...

Soluzione

Soluzione: : organizzazione modulare

Sistemi Operativi L-A 60

Struttura modulare

Le varie componenti del SO vengono organizzate in moduli caratterizzati da interfacce ben definite.

Sistemi Stratificati (a livelli) (THE, Dijkstra1968)

il sistema operativo è costituito da livelli sovrapposti, ognuno dei quali realizza un insieme di funzionalità:

• ogni livello realizza un’insieme di funzionalità che vengono offerte al livello superiore mediante un’interfaccia

• ogni livello utilizza le funzionalità offerte dal livello sottostante, per realizzare altre funzionalità

(31)

Sistemi Operativi L-A 61

Esempio: THE (5 livelli)

livello 5: programmi di utente

livello 4: buffering dei dispositivi di I/O livello 3: driver della console

livello 2: gestione della memoria livello 1: scheduling CPU

livello 0: hardware

Struttura a livelli

Struttura Stratificata Vantaggi:

• Astrazione: ogni livello è un oggetto astratto, che fornisce ai livelli superiori una visione astratta del sistema (Macchina Virtuale), limitata alle astrazioni presentate

nell’interfaccia.

• Modularità: le relazioni tra i livelli sono chiaramente esplicitate dalle interfacce ð

possibilità di sviluppo, verifica, modifica in modo indipendente dagli altri livelli.

(32)

Sistemi Operativi L-A 63

Struttura Stratificata

Svantaggi:

Organizzazione gerarchica tra le componenti: non sempre è possibile -> difficoltà di realizzazione.

Scarsa efficienza: : costo di attraversamento dei livelli

Soluzione: limitare il numero dei livelli.

Sistemi Operativi L-A 64

Nucleo del Sistema Operativo (kernel)

“E` la parte del sistema operativo che esegue in modo kernel”

• È la parte più interna del sistema operativo, che si interfaccia direttamente con

l’hardware della macchina.

• Le funzioni realizzate all’interno del nucleo variano a seconda del Sistema Operativo.

(33)

Sistemi Operativi L-A 65

Nucleo del Sistema Operativo (kernel)

• Tipicamente, le funzioni del nucleo sono:

• Creazione/terminazione dei processi

• scheduling della Cpu

• gestire il cambio di contesti

• Sincronizzazione/comunicazione tra processi

• Gestione della memoria

• Gestione dell’I/O

• Gestione delle interruzioni

• realizzare le system call.

Sistemi Operativi a Microkernel

• La struttura del nucleo è ridotta a poche funzionalità di base.

• il resto del SO è rappresentato da processi di utente

Caratteristiche:

affidabilità (separazione tra componenti)

possibilità di estensioni e personalizzazioni

scarsa efficienza (molte chiamate a system call) ESEMPI: L4, Mach, Hurd, Windows NT

(34)

Sistemi Operativi L-A 67

proc proc.. cliente

cliente procproc.. cliente

cliente terminalterminal server

server printprint server

server filefile system system

microkernel microkernel

Organizzazione a Microkernel

Sistemi Operativi L-A 68

utentemodo

kernelmodo ManagerI/O Object

Manager Process

Manager Applicazioni

Sottosistemi protetti

Hardware Microkernel

Windows NT

(35)

Sistemi Operativi L-A 69

L4 µkernel

http://os.inf.tu-dresden.de

• gestione dei thread

• allocazione della memoria (pager esterni)

• Inter Process Communication

Comunicazione Threads

Memoria

Hardware IRQ

IPC

External

pagers Unmap

Mapping

GNU/Hurd

processi utente

µkernel MACH

Server di Hurd

spazio kernel spazio utente

auth

server process

server

filesystem server

(36)

Sistemi Operativi L-A 71

Macchine virtuali

• l'Hardware e` gestito da un componente software, chiamato Virtual Machine Monitor (VMM) o hypervisor il cui compito è consentire la condivisione da parte di più macchine virtuali, ognuna con il suo sistema operativo, di una singola piattaforma hardware.

• Ogni macchina virtuale definisce un ambiente di esecuzione distinto e isolato dalle altre.

• Il VMM si pone come mediatore unico nelle interazioni tra le macchine virtuali e l’hardware sottostante, garantendo sia un forte isolamento tra esse, sia la stabilità complessiva del sistema .

Sistemi Operativi L-A 72

virtual machine monitor kernel kernel kernel

HW

(37)

Sistemi Operativi L-A 73

Vantaggi della virtualizzazione

• Uso di piu` S.O. sulla stessa macchina fisica: più ambienti di esecuzione (eterogenei) per lo stesso utente:

Legacy systems

Possibilità di esecuzione di applicazioni concepite per un particolare s.o.

• Isolamento degli ambienti di esecuzione: ogni macchina virtuale definisce un ambiente di esecuzione separato (sandbox) da quelli delle altre:

possibilita` di effettuare testing di applicazioni preservando l'integrita` degli altri ambienti e del VMM.

Sicurezza: eventuali attacchi da parte di malware o spyware sono confinati alla singola macchina virtuale

VIRTUAL MACHINE MONITOR HARDWARE applicazioni

Windows xp

applicazioni applicazioni Suse Linux Ubuntu linux

VM1 VM2 VM3

Vantaggi della virtualizzazione

• Consolidamento HW: possibilita` di concentrare piu`

macchine (ad es. server) su un'unica architettura HW per un utilizzo efficiente dell'hardware (es. server farm):

Abbattimento costi hw

Abbattimento costi amministrazione

• Gestione facilitata delle macchine: e` possibile effettuare in modo semplice:

la creazione di macchine virtuali (virtual appliances)

l'amministrazione di macchine virtuali (reboot, ricompilazione kernel, etc.)

migrazione a caldo di macchine virtuali tra macchine fisiche:

• possibilita` di manutenzione hw senza interrompere i servizi forniti dalle macchine virtuali

• disaster recovery

• workload balancing: alcuni prodotti prevedono anche meccanismi di migrazione automatica per far fronte in modo

“autonomico” a situazioni di sbilanciamento

(38)

Sistemi Operativi L-A 75

Vantaggi della virtualizzazione

• In ambito didattico: invece di assegnare ad ogni studente un account su una macchina fisica, si assegna una macchina virtuale.

DEIS Virtual Lab. La Facoltà di Ingegneria (DEIS) sta realizzando un laboratorio di macchine virtuali che offrirà ad ogni studente una macchina virtuale personale da amministrare autonomamente:

possibilita` di esercitarsi senza limitazioni nelle tecniche di amministrazione e configurazione del sistema;

possibilita` di installazione e testing di nuovi sistemi operativi, anche prototipali, senza il rischio di compromettere la funzionalita` del sistema.

possibilita` di testing di applicazioni potenzialmente pericolose senza il rischio di interferire con altri utenti/macchine;

possibilita` di trasferire le proprie macchine virtuali in supporti mobili (es: penne USB, per continuare le esercitazioni sul computer di casa).

Dotazione hw: 4 server Intel-VT xeon (2 processori quadcore), storage unit CORAID 12TB

Software: Vmware o VirtualIron ? Siamo in fase di valutazione..

Sistemi Operativi L-A 76

Host: piattaforma di base sulla quale si realizzano macchine virtuali.

Comprende la macchina fisica, l’eventuale sistema operativo ed il VMM.

Guest: la macchina virtuale. Comprende applicazioni e sistema operativo

VIRTUAL MACHINE MONITOR HARDWARE applicazioni

sistema operativo

applicazioni applicazioni sistema operativo sistema operativo

VM1 VM2 VM3

guest

host

VMM di Sistema

(39)

Sistemi Operativi L-A 77

L'Architettura della CPU prevede, in generale, almeno due livelli di protezione (ring):supervisore e utente.

solo il VMM opera nello stato supervisore, mentre il sistema operativo e le applicazioni (la macchina virtuale) operano nello stato utente.

Problemi:

ring deprivileging: il s.o. della macchina virtuale esegue in uno stato che non gli e` proprio (esecuzione di system call ?)

ring compression: applicazioni e s.o. della macchina virtuale eseguono allo stesso livello: necessita` di protezione tra spazio del s.o. e delle applicazioni.

VMM di sistema: realizzazione

Ring deprivileging:

Le istruzioni privilegiate richieste dal sistema operativo nell’ambiente guest non possono essere eseguite (richiederebbero lo stato supervisore).

Possibile Soluzione:

• Se il guest tenta di eseguire un’istruzione privilegiata, la CPU notifica un’eccezione al VMM e gli trasferisce il controllo (trap): il VMM controlla la correttezza della operazione richiesta e ne emula il comportamento.

Le istruzioni non privilegiate possono essere eseguite direttamente dall’hardware senza alcun intervento da parte della CPU (esecuzione diretta).

(40)

Sistemi Operativi L-A 79

Esempio: tentativo di esecuzione dell’istruzione privilegiata che disabilita le interruzioni da parte del S.O. guest.

Il VMM riceve la notifica di tale richiesta e ne emula il

comportamento atteso sospendendo la consegna degli interrupt solamente per la macchina virtuale (emulazione).

• Se la richiesta della macchina virtuale fosse eseguita direttamente sul processore sarebbero disabilitati gli interrupt per tutti i sistemi ed il VMM non potrebbe riguadagnare il controllo della CPU.

• Le istruzioni non privilegiate sono eseguite direttamente

dall’hardware senza alcun intervento da parte della CPU (esecuzione diretta).

Un’architettura CPU si dice naturalmente virtualizzabile se prevede l’invio di notifica allo stato supervisore per ogni istruzione

privilegiata eseguita dallo stato utente.

Sistemi Operativi L-A 80

Se l'architettura della CPU e` naturalmente virtualizzabile:

• la realizzazione del VMM e` semplificata: per ogni trap generato dal tentativo di esecuzione di istruzione privilegiata dal guest viene eseguita una routine di emulazione

• supporto nativo all'esecuzione diretta.

Non tutte le architetture sono naturalmente virtualizzabili ! IA32:

• Alcune istruzioni privilegiate di questa architettura eseguite in stato utente non provocano una trap, ma vengono ignorate non consentendo quindi l’ intervento trasparente del VMM, o in alcun casi provocano il crash del sistema.

Ring Aliasing: Alcune istruzioni non privilegiate, eseguite in stato utente, permettono di accedere in lettura alcuni registri del sistema la cui gestione dovrebbe essere riservata al VMM: possibilità di rilevare il proprio livello di protezione-> possibili inconsistenze.

(41)

Sistemi Operativi L-A 81

Architetture non virtualizzabili

Soluzioni:

Virtualizzazione pura: fast binary translation

Paravirtualizzazione

Fast binary translation. (es.Vmware): il VMM scansiona dinamicamente il codice prima della sua esecuzione per sostituire a run time blocchi contenenti istruzioni problematiche in blocchi equivalenti dal punto di vista funzionale e contenenti istruzioni per la notifica di eccezioni al VMM.

• I blocchi tradotti sono eseguiti direttamente sull’hw e conservati in una cache apposita per riusi futuri

applicazioni applicazioni applicazioni

S.O. S.O. S.O.

hardware virtuale binary translation

VMM

Hardware

Virtualizzazione pura mediante Fast Binary Translation (architettura non virtualizzabile)

Pro:ogni macchina virtuale è una esatta replica della macchina fisica - -> possibilità di installare gli stessi s.o. di architetture non virtualizzate Contro: la traduzione dinamica è costosa

(42)

Sistemi Operativi L-A 83

Paravirtualizzazione (es. xen): il VMM (hypervisor) offre al sistema operativo guest un’interfaccia virtuale (hypercall API) alla quale i S.O. guest devono riferirsi per aver accesso alle risorse:

• i kernel dei S.O. guest devono quindi essere modificati per aver accesso all'interfaccia del particolare VMM.

• la struttura del VMM è semplificata perché non deve più preoccuparsi di tradurre dinamicamente i tentativi di operazioni privilegiate dei S.O. guest.

• per ottenere un servizio che richiede l’esecuzione di istruzioni privilegiate (es. accesso a dispositivi) non vengono generate interruzioni al VMM, ma viene invocata la hypercall

corrispondente.

Sistemi Operativi L-A 84

applicazioni applicazioni applicazioni

S.O. S.O. S.O.

Hardware

Paravirtualizzazione

Pro: prestazioni migliori rispetto a fast binary translation Contro: necessità di porting dei S.O. guest (le applicazioni rimangono invariate): soluzione preclusa a molti sistemi operativi commerciali non open source.

hypercall API VMM

(43)

Sistemi Operativi L-A 85

Architetture Virtualizzabili

• La recente uscita sul mercato di processori con supporto nativo alla virtualizzazione (Intel VT, AMD-V) ha dato l’impulso allo sviluppo di VMM semplificati, basati su virtualizzazione pura:

Ring Deprivileging: ogni istruzione privilegiata richiesta dal s.o.

guest genera un trap gestito dal VMM.

No Ring Compression/Aliasing: il s.o. guest esegue in un ring separato (livello di protezione intermedio) da quello delle applicazioni

Pro:

Efficienza: non c’è bisogno di bynary translation;

Trasparenza: l’API presentata dall’hypervisor è la stessa offerta dal processore.

Contro:

Meno efficienti della paravirtualizzazione.

Architetture Virtualizzabili

Prodotti:

Xen e Vmware: hanno già rilasciato nuove versioni compatibili con architetture virtualizzabili.

VirtualIron: prodotto derivato da xen, esplicitamente sviluppato per architetture Intel VT & AMD-V.

(44)

Unix & Linux

Sistemi Operativi L-A 88

Storia di Unix

• 1969: AT&T, sviluppo di un ambiente di calcolo multiprogrammato e portabile per macchine di medie dimensioni.

• 1970: prima versione di UNIX (multiprogrammata e monoutente) interamente sviluppata nel linguaggio assembler del calcolatore PDP-7.

• Anni 1970: nuove versioni, arricchite con altre caratteristiche e funzionalità.

Introduzione del supporto alla multiutenza.

(45)

Sistemi Operativi L-A 89

Unix e il linguaggio C

• 1973: Unix viene realizzato nel linguaggio di programmazione C:

Elevata portabilità

Leggibilità

Diffusione presso la comunità scientifica e accademica.

• Anni 80: la grande popolarità di Unix ha determinato il proliferare di versioni diverse. Due famiglie:

Unix System V (AT&T Laboratories)

Unix Berkeley Software Distributions, o BSD (University of California at Berkeley)

Organizzazione di Unix

hardware

Kernel del Sistema Operativo:

gestione processi, memoria, file sytem, I/O, etc Libreria standard di sistema

(open, close, fork, exec...) Utilità di sistema (shell, editor, compilatori,..)

utenti

System call

Funzioni di libreria standard

Modo kernel

Modo user

(46)

Sistemi Operativi L-A 91

Caratteristiche di Unix

multi-utente

time sharing

kernel monolitico

Ambiente di sviluppo per programmi in linguaggio C

Programmazione mediante linguaggi comandi

portabilità

Sistemi Operativi L-A 92

POSIX

• 1988: POSIX (Portable Operating Systems Interface) è lo standard definito dall’IEEE.

Definisce le caratteristiche relative alle modalità di utilizzo del sistema operativo.

• 1990: POSIX viene anche riconosciuto dall' International Standards Organization (ISO).

• Anni 90: Negli anni seguenti, le versioni successive di Unix SystemV e BSD

(versione 4.3), si uniformano a POSIX.

(47)

Sistemi Operativi L-A 93

Introduzione a GNU/Linux

• GNU project:

1984: Richard Stallman avvia un progetto di sviluppo di un sistema operativo libero compatibile con Unix:

"GNU is Not Unix"

Furono sviluppate velocemente molte utilita` di sistema:

• editor Emacs,

• Compilatori: gcc,

• shell: bash,

• ...

lo sviluppo del kernel (Hurd), invece, subi` molte vicissitudini e vide la luce molto piu` tardi (1996)

GNU/Linux

• 1991: Linus Tornvalds realizza un kernel Unix- compatibile (Minix) e pubblica su web i sorgenti

• In breve tempo, grazie a una comunita` di hacker in rapidissima espansione, Linux acquista le

caratteristiche di un prodotto affidabile e in continuo miglioramento.

• 1994: Linux viene integrato nel progetto GNU come kernel del sistema operativo: nasce il sistema operativo GNU/Linux

(48)

Sistemi Operativi L-A 95

GNU/Linux

Caratteristiche:

Open Source / Free software

multi-utente, multiprogrammato e multithreaded

Kernel monolitico con possibilita` di caricamento dinamico di moduli

estendibilita`

affidabilita`: testing in tempi brevissimi da parte di migliaia di utenti/sviluppatori

portabilità

Riferimenti

Documenti correlati

Manipolando i risultati è possibile far eseguire al sistema reale (detto anche sistema host) le operazioni, mostrando poi ai processi interni della macchina virtuale (guest) effetti

Operation Loads on the operand stack a reference from the variable table associated to the code frame being executed by the thread Format ASP VT LOAD table id index byte1 index

Marco Lapegna – Laboratorio di Programmazione 2 introd ai Sist Op?. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea

• Il suo compito principale è quello di gestire le istruzioni protette delle macchine virtuali.. Hypervisor

993981 è stata avviata una trattativa diretta sul portale della pubblica amministrazione (MEPA) per la fornitura ed installazione di tre terminali presenze come da servizio

•  Gestione e accesso alle informazioni su memoria secondaria

Sistema real-time: sistema che deve reagire agli input in un tempo predefinito, garantendo una corretta elaborazione dei dati principalmente dal punto di vista temporale. E 2

 una macchina virtuale espone la stessa interfaccia di un computer reale – ovvero, un insieme di risorse hardware (virtuali), come uno o più processori, una memoria, dei