Estratto del documento

Sistemi Operativi

Cos’è un sistema operativo e cosa deve fare?

Il Sistema Operativo possiamo definirlo come un:

Interfaccia, cioè un programma che agisce da intermediario tra noi

 utenti e l’hardware di un computer (all’inizio senza il SO era difficile

interagire con il dispositivo).

Allocatore di Risorse, gestisce e assegna le risorse così da non avere

 conflitti tra i vari programmi che le richiedono.

Controllore, controlla l’esecuzione dei programmi in modo da prevenire

 errori e proteggere hardware e software.

Non sempre sui pc è in esecuzione tutto il codice del Sistema Operativo, molte

volte viene caricata solo una parte che viene chiamata Kernel (tutto il resto è

un insieme di programmi di sistema e\o applicativi)

All’accensione o al riavvio del nostro pc viene caricato un primo programma

che carica il programma di bootstrap, un programma (memorizzato in una

ROM o in una EPROM) che inizializza lo stato del sistema, spostando il codice

del Kernel del SO (se serve altro viene caricato) da un certo indirizzo del disco

alla RAM (infatti il SO è conservato sul disco, quando viene eseguito viene

caricato in RAM), e ne avvia l’esecuzione. Il SO viene caricato nella RAM perché

è molto veloce.

Nascita dei Sistemi Operativi

Sistemi Mainframe: Computer di grandi dimensioni che inizialmente non

avevano Sistemi Operativi, venivano programmati tramite spinotti. Su questi

computer si caricava un programma alla volta, e operavano in sequenza.

Il problema di questi pc era il tempo che intercorreva tra la fine di un

programma (Job), e l’altro. Si implementò quindi l’Automatic job sequencing,

cioè il trasferimento automatico del controllo da un job all’altro.

Nasce così il primo SO chiamato Monitor Residente

Monitor = controllo

Residente = sempre in esecuzione

In un sistema Batch Semplice, in memoria centrale sono presenti solo il SO e

il programma.

In un sistema Batch Multi programmato, in memoria centrale abbiamo il SO

e diversi job. Ogni programma viene eseguito a pezzi e la CPU passa da

programma a programma. In questo tipo di sistema se un programma richiede

un’operazione di input o output, il SO aspetta fino ad un certo tempo dopodiché

esegue un altro programma.

Come fa a riconoscere le operazioni di I/O il SO?

Per eseguire le operazioni di I/O, vengono inviate delle richieste al SO .

Per la multiprogrammazione un SO deve:

Routine di I/O -> fornite dal sistema

 Memory management -> il sistema deve allocare la memoria ai job

 CPU scheduling -> il sistema deve scegliere tra più job pronti ad essere

 eseguiti attraverso delle strategie.

Allocazione dei devices ai job, quando si esegue un programma e gli

 viene assegnato un dispositivo di I/O questa assegnazione deve essere

esclusiva.

Sistemi Time-Sharing

Sistemi multiprogrammati, la CPU è assegnata di volta in volta ai diversi

programmi che sono tenuti in programma. Un programma caricato (dal disco

alla memoria e viceversa) e in esecuzione è detto processo.

In questi tipi di sistemi accade che un programma può essere interrotto perché

finisce la sua quantità di tempo, anche se dobbiamo fare altre operazioni.

I moderni sistemi di calcolo sono costituiti da:

Controllori = piccole CPU che gestiscono i dispositivi del computer a

 livello hardware

Driver = Delle interfacce del sistema operativo, i driver sono dei

 componenti software e fanno parte del SO

Nei sistemi moderni i dispositivi di I/O e CPU lavorano insieme, perché tutti i

controller sono delle piccole CPU e possiedono delle piccole memorie RAM.

Quando un processo deve fare un’operazione di I/O, viene messo in sleeping e

abbiamo la CPU libera per poter “accogliere” un nuovo processo. I controller e

la CPU possono eseguire operazioni in parallelo.

In un’operazione di output —> il dato si muove da una memoria centrale (RAM)

al buffer locale. In uni operazione di input —> il dato si muove dal buffer locale

alla RAM.

Il controller di ogni dispositivo deve informare la CPU che ha completato le

operazioni con un segnale asincrono chiamato Interrupt.

I sistemi operativi sono guidati dagli interrupt, perché tutti le interazioni tra le

diverse componenti sono guidati da questi. Quando arriva il segnale, il controllo

passa alla routine di servizio, che può essere hardware o software. Questo

avviene perché al vettore degli interrupt è associato un indirizzo, cioè ad ogni

interrupt è associato l’indirizzo della routine. Ogni produttore di CPU

programma gli interrupt e ne lascia alcuni liberi che possono essere

programmati da chi implementa il SO. Ogni dispositivo continua a lavorare

normalmente, quando arriva l’interrupt viene completata l’operazione e va a

servire l’interrupt. Ricordiamo che gli interrupt vengono serviti uno alla volta.

Trap = un interrupt che segnala l’errore avvenuto in un programma.

Signal = anche in questo caso facciamo riferimento agli interrupt software.

Ci sono due modi per gestire l’I\O:

Sincrono: Dopo che è stata avviata un’operazione di I\O, il controllo

 ritorna al programma utente soltanto dopo il completamento

dell’operazione di I\O.

In questa modalità abbiamo l’istruzione wait che sospende il processo

fino a quando non arriva un interrupt che dice che l’operazione di I/O è

stata completata.

Asincrono: Dopo che è stata avviata l’operazione di I\O, il controllo torna

 al programma utente senza attendere il completamento delle operazioni

di I\O. In questo caso abbiamo bisogno:

System Call, richiesta al sistema operativo per attendere il

 completamento dell’operazione di I\O;

Tabella di stato dei dispositivi, contiene elementi per ogni

 dispositivo di I\O che indica il suo tipo, indirizzo della routine

e lo stato del dispositivo, il sistema operativo accede alla

tabella per determinare lo stato del dispositivo e modificare

la sua descrizione.

Per ottimizzare e velocizzare il PC si è introdotto sulla scheda madre un

componente hardware che è il DMA, un componente che gestisce gli interrupt

meno importanti.

Il DMA:

Trasferisce file con una velocità simile a quelle della memoria

 Riceve degli interrupt intermedi dovuti all’invio di dati a blocco.

 La CPU gestisce solo gli interrupt di fine blocco.

In un PC ci sono:

Memoria centrale (RAM), celle di memoria accessibili direttamente

 dalla CPU

Memoria secondaria, in grado di memorizzare grandi quantità di dati.

 Questo tipo di memoria è persistente. In passato realizzata tramite dei

dischi magnetici, la superficie dei dischi è diviso in tracce, a loro volte

suddiviso in settori. In ogni disco abbiamo un controller per determinare

l’interazione tra il dispositivo e il computer. Oggi si usano le SSD, che

sono dei banchi di memoria, che hanno una serie di vantaggi

Per questo abbiamo una struttura di questo tipo:

registri: memoria più veloce e più piccola in un computer, si trovano

 dentro la CPU e servono ad eseguire le operazioni

cache: è una memoria più piccola della RAM e più veloce e serve a

 velocizzare l’esecuzione

memoria centrale RAM

 disco RAM: integra dispositivi hardware, si copia tutto quello che si

 trova in RAM anche nel disco, per rendere affidabili i dati in caso di

guasti

dischi magnetici: dispositivo fisico

 dischi ottici: nastri magnetici: dispositivo fisico utilizzato per il

 backup. Sono nastri a tutti gli effetti

Catching: copia dei dati in memorie più veloci, la memoria centrale può essere

vista come una cache per la memoria secondaria.

Principio importante realizzato a diversi livelli di un computer

 L’informazione in uso è copiata temporaneamente da memoria più lente

 a memorie più veloci (cache).

La cache viene interrogata per verificare se contiene l’informazione di

 interesse:

In caso positivo, l’informazione è acceduta direttamente dalla

o cache

Altrimenti, i dati vengono copiati nella cache e acceduti da lì

o

La cache è più piccola della memoria principale

 La gestione delle cache è un importante problema progettuale nei

o SO.

Dimensione della cache e politiche di sostituzione.

o

Protezione Hardware

Per proteggere l’hardware:

Funzionamento Dual-Mode

 Protezione dell’I\O

 Protezione della Memoria

 Protezione della CPU

Protezione Dual-Mode

Quando si esegue un programma, questo si può trovare “in uno dei due modi

possibili”:

modalità utente —> può eseguire certe istruzioni, accedere a certe

risorse, ma non può eseguirle o accedere a tutte. Quindi restringe le

libertà dei programmi per evitare che queste facciano danni al SO o

all’hardware.

• modalità monitor —> sta eseguendo delle operazioni privilegiate, può

accedere a quasi tutte le risorse. Il SO ha dunque maggiore libertà.

Per indicare il modo corrente si usa un Bit di modo:

0 -> monitor (si richiedono delle operazioni nel sistema)

 1 -> utente

Si passa dalla modalità utente alla modalità monitor solo quando esegue delle

routine del S.O.

Attenzione: Le istruzioni privilegiate possono essere eseguite soltanto

nel modo monitor.

Protezione dell’I/O

Tutte le operazioni di I/O sono privilegiate.

Se le operazioni di I/O venissero eseguite in modalità utente, un programma

utente potrebbe ottenere il controllo del computer in modo monitor. Per questo

usiamo le System Call, che sono come dei metodi di sistema che nel mio

programma posso richiamare quando voglio.

Protezione della memoria

Se è presente un solo programma quello che succede è che si può prende tutta

la memoria che rimane libera dal sistema operativo. Con più programmi,

bisogna avere varie aree di memoria per i molteplici programmi e ogni

programma deve modificare o leggere dalla sua area di memoria, perché se va

nelle altre aree di memoria sorgono dei problemi.

Per evitare questi problemi si usano due registri:

• base —> mi dice dove inizia la memoria di un programma e dove

finisce, quindi l’area della RAM associata al programma.

• limite —> mi dice quanto è grande la memoria - all’infuori

dell’intervallo l’area di memoria deve essere protetta.

I due registrano controllano che quando si accede all’area di memoria si possa

effettivamente accedere all’interno dello spazio. Questo oggi lo fa direttamente

l’hardware.

Usare quei due registri, vuol dire seguire un algoritmo. Quando dalla CPU parte

l’indirizzo per andare a prendere una variabile in memoria bisogna controllare:

• l’indirizzo del dato

• se si trova nella base

• se rispetta il limite

• solo se rispetta queste condizioni può accedere alla memoria

Protezione Hardware

Quando il sistema operativo è in esecuzione in modo monitor può accedere a

tutte le celle di memoria. Per evitare che un programma possa cambiare i valori

dei registri base e limite, queste operazioni vengono eseguite solo dal sistema

operativo in modalità monitor

Protezione CPU

È fondamentale che un processo non occupi tutto il tempo della CPU, perciò si

setta un Timer. Ad ogni processo viene associato un tempo massimo, quando il

tempo finisce, verrà inviato un interrupt per sospendere il processo. Il Timer

viene decrementato ad ogni tick di clock.

Il caricamento del Timer è un’istruzione privilegiata, quindi, è il SO che decide il

valore del timer.

Anni fa, studiando i processori hanno rilevato delle anomalie nella protezione,

infatti sono sorti due problemi:

Meltdown -> Durante l’esecuzione di un programma, per velocizzare il

 processo, la CPU mentre controllava i privilegi di memoria, leggeva e

salvava i dati in memoria. Se l’istruzione non aveva i privilegi corretti, i

dati finivano comunque nelle cache e potevano essere estratti attraverso

degli attacchi al sistema.

Spectre -> Per velocizzare i processi, gli sviluppatori caricavano

 entrambi i rami (if ed else) in memoria. Solo dopo aver verificato la

condizione si sceglieva se prendere l’if o l’else, ma i dati rimanevano

comunque nella cache. Venivano creati dei programmi in grado di

estrarre questi dati.

Struttura dei Sistemi Operativi

Gestione dei processi

 Gestione della memoria principale

 Gestione file

 Gestione I/O

 Gestione memoria secondaria

 Accesso alla Rete

 Sistema di protezione

 Interprete dei comandi

1. Gestione dei processi

Un processo di elaborazione è un programma dell’utente o del SO in

esecuzione.

Un processo ha bisogno di un certo numero di risorse per svolgere il suo

compito.

Il Kernel del SO è responsabile della:

Creazione e terminazione il processo

 Sospensione e ripristino il processo

 Sincronizzazione e Comunicazione tra i vari processi

 Gestione dello stallo, più processi in esecuzione possono andare in stallo

 in attesa di un qualcosa che non arriva

2. Gestione della memoria centrale

La memoria centrale è costituita da una matrice di word (dati o istruzioni). Ogni

programma per essere eseguito deve essere caricato sulla RAM, perché il disco

è molto più lento.

Il SO che si occupa della gestione della memoria principale è responsabile di:

Tenere traccia di quali parti della memoria sono correntemente utilizzate

 e da chi

Decidere quali processi caricare quando la memoria si rende disponibile

 Allocare e deallocare lo spazio in memoria

3. Gestione dei File (File System)

Il file è un’unità logica di informazione (che può avere tante o poche

informazioni) conservato sul disco. Per aprire un file il SO prima lo cerca nel

disco, e poi lo carica in memoria.

Il SO è responsabile della creazione e cancellazione file o directory (insieme di

file)

4. Gestione dell’I/O

Il sistema I/O che fa parte del SO, gestisce tutte le operazioni tra la CPU e le

periferiche.

I tre elementi fondamentali sono:

sistema buffer-caching: ogni dispositivo di I/O deve avere una sua

 cache, perché i dati devono essere salvati nella memoria (tipo la tastiera

quando clicchiamo invio).

driver: componente software dei dispositivi I/O. Possono essere aggiunti

 dopo la creazione del sistema operativo. I driver vengono collegati al SO

SO: usato come interfaccia per i driver esistenti o quelli che saranno

 aggiunti in seguito, è l’unica parte che si può aggiungere dopo

l’installazione del s.o.

5. Gestione della memoria secondaria

Oggi la memoria secondaria è fatta principalmente da dischi (l’altra

tecnologia sono i nastri, che si usano in casi particolari di backup)

Il SO si occupa di:

Allocazione della memoria

 Gestione della memoria libera

 Scheduling del disco: Quando più programmi in esecuzione

 effettuano richiesta di accesso al disco contemporaneamente, il disco

accoda le richieste e vengono servite una per volta.

6. Accesso alla Rete

7. Sistema di protezione: Oltre alla protezione hardware, il SO aggiunge

altre protezioni software, come la protezione sui file. Oggi questa

sicurezza riguarda più la rete

8. Interprete dei comandi: Il SO cattura il comando (per esempio un

click), controlla la correttezza ed esegue l’operazione.

System Call (Chiamate al sistema)

Chiamata = invocazione di un metodo offerto dal SO in un qualsiasi linguaggio

Servono al programmatore per utilizzare le funzioni del SO all’interno di un

programma, come delle librerie esterne (per esempio la creazione di un file,

operazioni in memoria e.c.c.).

Vengono chiamate API tutte le System Call messe a disposizioni da Windows.

Le system call vengono invocate da un programma utente (programma scritto

da un programmatore), in seguito si passa ad una fase di controllo dove il mio

programma viene interrotto e cambia il bit di modo.

I parametri tra il programma utente e il SO vengono passati tramite:

1. Passaggio dei parametri in registri -> il nome del file che voglio

creare viene messo in un registro specifico dal quale la system call lo

deve prelevare

2. Tabella memoria centrale -> area riservata nella RAM dove avvengono

passaggi dei parametri

3. Push/Pop -> si basa sullo stack, che è riservato al passaggio dei

parametri tra SO e programmi

Le system call del SO riguardano le diverse funzionalità del sistema, come:

Controllo dei processi;

 Gestione dei file;

 Gestione dei dispositivi di I\O,

 Informazioni sul sistema

 Comunicazioni

Tutte le routine di sistema sono basate sulle System Call.

Progettazione dei Sistema Operativi

Per gli utenti, il SO dovrebbe essere conveniente da usare, facile da

apprendere, affidabile, sicuro e veloce.

Per chi sviluppa il sistema, il SO deve essere facile da progettare e manutenere,

flessibile, affidabile, libero di errori ed efficiente.

Per questo prima della progettazione vengono definiti prima le politiche e poi i

meccanismi (cioè come implementarlo)

All’inizio i SO erano sviluppati in assembler, oggi l’approccio è cambiato, la

parte che interagisce con l’hardware è scritta in assembler mentre la parte più

alta sono sviluppati con linguaggi ad alto livello, aumentando così la portabilità

del SO.

Esempi di SO

MS-DOS

è un s.o. utilizzato all’inizio degli anni 80 di tipo mono programmato.

I programmi che girano sul DOS:

girano su programmi offerti da MS-DOS

 o fanno invocazioni

Anteprima
Vedrai una selezione di 14 pagine su 61
Sistemi operativi - Teoria Pag. 1 Sistemi operativi - Teoria Pag. 2
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 6
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 11
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 16
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 21
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 26
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 31
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 36
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 41
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 46
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 51
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 56
Anteprima di 14 pagg. su 61.
Scarica il documento per vederlo tutto.
Sistemi operativi - Teoria Pag. 61
1 su 61
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher stefano-brusco2001 di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università della Calabria o del prof Talia Domenico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community