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 un’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é tutte le interazioni tra le diverse componenti sono guidate 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.

Gestione dell’I\O

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.

Memorie in un PC

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 è divisa in tracce, a loro volta suddivise 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.

Caching: 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 memorie 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 cache.
    • Altrimenti, i dati vengono copiati nella cache e acceduti da lì.
  • La cache è più piccola della memoria principale.
  • La gestione delle cache è un importante problema progettuale nei SO.
  • Dimensione della cache e politiche di sostituzione.

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ò prendere 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 registri 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 del processo.
  • Sospensione e ripristino del 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 ecc.).

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 sistemi 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