Estratto del documento

I SISTEMI OPERATIVI

I SISTEMI OPERATIVI → insieme di API (Application Programming Interface) che agisce da intermediario

tra l’utente del computer e l’hardware:

●​distribuzione risorse;

●​controllo esecuzione programmi utente e operazioni su dispositivi di I/O;

●​kernel (unico programma sempre attivo). ●​ UTENTE → persone/ altri computer

●​ PROGRAMMI APPLICATIVI → definizione

modalità di utilizzo delle risorse fisiche

●​ SISTEMA OPERATIVO → controllo e

coordinazione dell’uso dell’hardware da

parte dei programmi attuati dall’utente

●​ HARDWARE → fornitura risorse fisiche

(CPU, memoria, dispositivi I/O)

●​ SISTEMI A LOTTI → grandi macchine controllate da console che leggono e scrivono schede perforate

●​ I SISTEMI MAINFRAME → sistemi più veloci perché raggruppano job (processi) similari in batch (lotti) e

cedono loro il controllo in modo ordinato

●​ SISTEMI MULTIPROGRAMMATI → si mantengono più job in memoria in modo da tenere la CPU in

continua attività. Bisogna sapere quali e quanti job caricare in memoria (job scheduling) e quale tra

quelli caricati far eseguire dalla CPU (CPU scheduling);

●​ SISTEMI TIME-SHARING → ogni processo utente in memoria dispone di una porzione di tempo e

allo scadere della quale la CPU viene allocata al successivo (S.O. interattivo e aperto a più utenti)

●​ I SISTEMI DESKTOP → PC comodo e veloce per singolo utente che supporta diversi tipi di S.O.

●​ I SISTEMI MULTIPROCESSORE (paralleli) → processori accoppiati che condividono memoria e clock.

I vantaggi sono: maggiore quantità di elaborazione effettuata, economia (dischi condivisi), aumento

dell’affidabilità (degradazione progressiva e tolleranza a i guasti).

Si dividono in: AMP(asimmetrico) → il processore master organizza gli altri a cui sono assegnati specifici

lavori e SMP(simmetrico) → ogni processore esegue una copia del S.O. (più job contemporaneamente →

problemi: sovraccarico CPU e condivisione risorse)

●​ I SISTEMI DISTRIBUITI (debolmente accoppiati) → elaborazione distribuita tra processori distinti

collegati da reti. Possono essere sistemi client-server o peer-to-peer. Vantaggi: condivisione risorse,

rapidità di calcolo, affidabilità e comunicazione. Svantaggi: connessione costante alla rete LAN o WAN)

●​ I SISTEMI CLUSTER → più sistemi che condividono le periferiche (a seguito di un guasto in una

macchina il cluster head assegna la task ad un’altra così che l’utente nota solo una pausa nell’erogazione

del servizio). Si dividono in: asimmetrico → agisce un solo server per volta (hot-standby-mode) e

simmetrico → tutti i server eseguono e si controllano a vicenda (macchine ugualmente performanti).

●​ I SISTEMI REAL-TIME → adoperati in caso di vincolo temporale sull’operazione (di solito eseguono

controlli). Si dividono in: hard real-time → rispetto dei tempi, uso delle memorie volatili, non compatibili

con sistemi time-sharing e general purpose e soft real-time→ priorità ai processi critici, tolleranza tempi.

●​ I SISTEMI PALMARI (Personal Digital Assistant) → telefoni, tablet… con memoria (sol: cloud), processori

e alimentazione limitati.

GLI AMBIENTI DI ELABORAZIONE

●​ Elaborazione tradizionale → PC, server con accesso a distanza

●​ Elaborazione basata sul web → client-server senza collocazione a cui si può accedere a distanza

●​ ELaborazione embedded → mobile computing con caratteristiche del S.O. limitate e accesso a distanza

L’ARCHITETTURA DEL CALCOLATORE

IL FUNZIONAMENTO DI UN CALCOLATORE GENERAL PURPOSE

CPU e controller dei dispositivi di I/O (dotati di buffer

= memoria tampone) concorrono per l’accesso alla

memoria utilizzando word da 64 bit e segnali di

interrupt. Programma di bootstrap, salvato in una

ROM, avvia e inizializza le funzioni del sistema.

Carica il kernel del S.O. che esegue il primo

processo e attende eventi.

Nei moderni S.O. gli eventi sono segnalati da un interrupt hardware (segnale alla CPU generabile in

qualsiasi momento) o software (generabile eseguendo una chiamata di sistema). Il vettore degli interrupt

contiene gli indirizzi di partenza di tutte le routine di gestione dell’interrupt (interrupt handler) in cui sono

definite le azioni da eseguire per gestire ogni tipo di interrupt verificabile. Prima di lanciare la routine, vanno

salvati l’indirizzo che ha chiamato l’interrupt e lo stato della CPU, in modo da poter riprendere l’operazione in

corso una volta terminata la routine. Un processo chiede l’intervento del S.O. eseguendo una chiamata di

sistema. Polling (scansione degli interrupt): si effettua una scansione dei dispositivi, interrogando ognuno e

cercando una conferma su una eventuale richiesta di interrupt inviata. Quando un dispositivo che ha

generato un interrupt viene interrogato, invierà una conferma al processore che avvierà la routine di gestione

dell’interrupt relativa a tale dispositivo. Definendo la sequenza di scansione, si definisce anche la priorità di

ogni dispositivo. Questa attività richiede molto tempo (CPU in busy waiting: attende controllando

periodicamente il verificarsi di una certa condizione).

LA STRUTTURA DI INPUT/OUTPUT

●​ I/O SINCRONO → interrupt software che restituisce il controllo al processo solo al termine

dell’operazione. Si esegue un processo per volta: l’attesa è gestita dal comando di wait che aspetta

l’interrupt di ritorno oppure dal wait loop con una jump che varia stato solo al verificarsi di un interrupt.

●​ I/O ASINCRONO → interrupt hardware che restituisce il controllo al processo senza aspettare il

completamento dell’operazione. Si possono eseguire più processi contemporaneamente, quindi si tiene

traccia dello stato sulla Device Status Table (con tipo e indirizzo del dispositivo), mentre se il dispositivo è

occupato, si inserisce la richiesta nella coda d’attesa dello stesso.

Alle operazioni di I/O è data una bassa priorità in quanto la maggior parte di questi richiede poco tempo di

CPU e tanto per il trasferimento dati. Invece, per quelli ad alta velocità si usa il DMA (Direct Memory Access)

che sposta blocchi di dati senza l’intervento della CPU (interrupt a blocco, non a byte). La memoria può

trasferire una sola parola per volta quindi il DMA ruba cicli di memoria alla CPU rallentandone l’esecuzione.

LA STRUTTURA DELLA MEMORIA

●​ memoria centrale RAM, collegata direttamente alla CPU che la vede come un vettore di words e la

controlla tramite i comandi load e store.

I dispositivi di I/O possono trasferire dati dai propri registri alla memoria centrale con strutture:

○​ I/O mappato in memoria → Quando la CPU quando vuole inviare dei byte, ne scrive uno nel registro

dei dati e setta il bit nel registro di controllo per avvisare che il byte è disponibile, il dispositivo prende il

byte, azzera il bit di controllo segnalando alla CPU che è pronto per il prossimo byte

○​ I/O programmato → la CPU interroga ciclicamente il bit di controllo

○​ I/O interrupt driven → la CPU riceve un interrupt quando il dispositivo è disponibile

●​ memoria secondaria in grado di mantenere permanentemente dati e programmi

●​ disco magnetico → piatto sottile di metallo o vetro ricoperto di materiale ferromagnetico e diviso in tracce

e settori che gira su se stesso. Le testine del pettine eseguono le operazioni su (C,T, S) dopo aver trovato

i giusti cilindro (search time), traccia e settore (latenza rotazionale) + transfer rate.

Gerarchia: registri, cache, RAM, disco elettronico, disco magnetico, disco ottico, nastro magnetico (caching).

LA PROTEZIONE HARDWARE → multiutenza e condivisione delle risorse implicano più possibilità di bug

che non devono compromettere altri programmi: si distingue la modalità supervisor (0) da user (1) e in caso

di anomalie si passa dal secondo al primo (masking).

●​ I/O → un programma utente non deve mai poter ottenere il controllo della macchina in modalità

supervisore in quanto potrebbe modificare le routine contenute nel vettore degli interrupt;

●​ MEMORIA → si definiscono un registro base con il più piccolo indirizzo legale (ammissibile) della

memoria fisica e un registro limite con la dimensione della gamma degli indirizzi (massima estensione),

modificabili solo con istruzioni privilegiate

●​ CPU → si evita il caso in cui un processo monopolizzi la CPU utilizzando un timer decrementato ad ogni

colpo di clock: a 0 si genera un interrupt e il controllo passa al S.O. (genera errore o assegna più tempo).

Questo time slice è utilizzato anche per i sistemi time-sharing o multiutente oppure per calcolare il tempo

rispetto ad un dato istante iniziale.

LA STRUTTURA DEI SISTEMI OPERATIVI

LE COMPONENTI DEL SISTEMA OPERATIVO

●​ GESTIONE DEI PROCESSI → il process manager gestisce l’esecuzione (generazione, sospensione…)

di ogni prompt → programma → processo e la sincronizzazione e la comunicazione fra questi. Ogni

processo necessita dell’accesso alle risorse (CPU, file, I/O…) per essere portato a termine.

●​ GESTIONE DELLA MEMORIA CENTRALE → la RAM è un vettore volatile di byte,ciascuno dei quali

caratterizzato da un proprio indirizzo accessibile direttamente da CPU e dispositivi di I/O. Il S.O. deve

tenere traccia delle memorie utilizzate e da chi, decidere quali processi caricare nella memoria disponibile

e allocare/deallocare lo spazio di memoria a seguito delle richieste delle app.

●​ GESTIONE DEI FILE → un file è un sistema di informazioni (programmi o dati)

sorgente o oggetti

semanticamente collegati secondo una caratteristica definita dal proprietario. Il S.O. può creare e

cancellare file e directory, supportare le primitive relative alla manipolazione di file e directory e

copiare/salvare file su unità di memoria secondarie (non volatili).

●​ GESTIONE DELL’I/O → si compone di: componente per la gestione della memoria con buffer e cache,

componente per la gestione del processo di stampa, interfaccia generale del driver e un driver per

ciascun dispositivo

●​ SISTEMA DI PROTEZIONE → insieme di meccanismi che controllano l’accesso alle risorse da parte

degli utenti del computer che: distingue uso autorizzato e non, specifica i controlli da effettuare e fornisce

un metodo per imporre i criteri stabiliti

●​ GESTIONE MEMORIA DI MASSA → il S.O. gestisce lo spazio libero, alloca le unità disco e schedula i

dischi utilizzati per memorizzare i dati della RAM (volatile).

●​ RETI INFORMATICHE → i processori che condividono memoria e clock ma lavorano sulla propria

memoria locale, comunicano tramite reti che rispettano il protocollo (sistemi distribuiti↑)

●​ INTERPRETE DEI COMANDI → l’utente impartisce ordini tramite istruzioni di controllo (creazione

processi, gestione di I/O, memorie sec. e RAM, accesso a file-system, protezioni e rete) alla shell (a

caratteri o grafica) che riceve comandi interattivi come oggetti eseguibili o comandi built-in (funzioni

semplici eseguiti dalla stessa shell) oppure script (programmi in linguaggio di shell). Per i comandi non

built-in crea (fork) dei processi per eseguire il comando.

I SERVIZI DEL SISTEMA OPERATIVO

●​ Esecuzione programma → rendere possibile

●​ Operazioni di I/O → mediazione utente-dispositivo

●​ Manipolazione file-system → lettura, scrittura, creazione ed eliminazione dei file da parte dei programmi

●​ Comunicazioni → memoria condivisa o invio messaggi tra processi

●​ Rilevamento errori → assicurare efficienza

●​ Allocazione risorse → garantire le giuste risorse a tutti gli utenti e processi

●​ Contabilità → tenere traccia dell’uso delle risorse

●​ Protezione e sicurezza → controllo degli accessi alle risorse

LE CHIAMATE DI SISTEMA → interfaccia tra processo in esecuzione e S.O. disponibili in linguaggio

assembler/C/C++/Java che passa i parametri tramite memorizzazione in registri o tabelle di memoria con

rispettivi indirizzi oppure push e pop da pila.

I PROGRAMMI DI SISTEMA → ambiente per sviluppo ed esecuzione programmi quali gestione e modifica

dei file, informazioni di stato, supporto ai linguaggi di programmazione e caricamento, esecuzione e

comunicazione tra programmi (+ applicativi).

LA STRUTTURA DEL SISTEMA

●​ struttura semplice: (MS-DOS) non ben divisa in moduli per garantire massima funzionalità nel minor

spazio, ma più vulnerabile a programmi errati

●​ monolitica → (UNIX) grande quantità di funzioni in un solo livello per le richieste dei programmi-utente

●​ struttura stratificata → diversi livelli tra hardware (0) e utente (N) abilitati all’utilizzo delle funzioni degli

strati inferiori (sventa errori ma è più difficile da progettare ed è più facile il sovraccarico delle system call)

●​ struttura a microkernel → (Mach) i kernel si occupano solo di processi, memoria e comunicazione

lasciando allo spazio utente le altre funzionalità

●​ struttura ibrida → (Apple Macintosh OSX) suddivisione con un microkernel tra gli strati: kernel

environment (Mach per gestione memoria, supporto RPC e IPC e schedulazione thread + BSD con

interfaccia a riga di comando, supporto per gestione file e rete e implementazione API POSIX + supporto

driver I/O + estensioni) + application environment + system services + Mach e BSD

●​ struttura modulare → (Solaris, Linux, Mac OS X, UNIX) comunicazione diretta tra moduli. Usa

programmazione orientata ad oggetti.

LE MACCHINE VIRTUALI

Dal modello a strati, hardware e kernel sono trattati come un blocco hardware puro.

Il computer fisico condivide le risorse per generare macchine virtuali: con CPU scheduling e memoria virtuale

crea l’illusione che ogni processo ha propri processore e memoria; con spooling (gestione asincrona delle

operazioni di I/O e dei processi) e file system fornisce lettori di schede e stampanti virtuali; con terminale

time-sharing fornisce la funzione di console.

Il disco fisico viene diviso in minidisk, spazi logici di dimensione variabile in base alle esigenze delle VM.

(S)vantaggi: supporto della modalità di controllo, ma funzionameto nella sola modalità utente; protezione

risorse in quanto le varie macchine virtuali comunicano solo tramite minidisk o reti VM; sviluppo S.O..

LA PROGETTAZIONE, L’IMPLEMENTAZIONE E LA GENERAZIONE DI UN SISTEMA OPERATIVO

Il progetto di un S.O. prevede ad alti livelli la scelta dell’HW e del tipo di sistema, mentre ai bassi livelli si

devono soddisfare obiettivi-utente (comodità, facilità, velocità, sicurezza) e obiettivi-sistema (facilità di

progettazione, implementazione e manutenzione, affidabilità ed efficienza).

LINEE GUIDA → distinzione tra meccanismi (come fare), più rigidi e politiche (cosa fare), più variabili.

IMPLEMENTAZIONE → passaggio dal linguaggio assembler ad alto livello (C e C++), più veloce, compatto,

leggibile (facile debugging) e portabile. Questo però porta ridotta velocità e maggiori esigenze di memoria.

GENERAZIONE → la selezione dei moduli può avvenire a runtime. Il boot (procedura di start-up di una

macchina) prevede due fasi: bootstrap program in cui viene eseguito il codice a sola lettura sulla ROM che

individua il kernel, lo carica in memoria centrale e ne inizia l’esecuzione e boot loader in cui un caricatore

d’avvio, installato nel MBR (Master Boot Record), recupera dal disco il bootstrap program del S.O. che a sua

volta carica il kernel. I PROCESSI

Un processo è un programma in esecuzione in modo

sequenziale e che comprende una sezione di codice e

un’attività corrente data da program counter, registri di

CPU, stack, sezione dati e heap.

Più processi possono essere associati al medesimo

programma (sezione di codice), ma saranno

considerati come due differenti istanze di questo

(attività corrente).

L’evoluzione di un processo segue gli stati: new

(submit: identificazione risorse + hold: ordinamento per

priorità), running, waiting, ready e terminated.

Il Process Control Block è una struttura dati che mantiene tutte le informazioni relative ad ogni processo.

Per passare la CPU tra processi si salva lo stato di esecuzione del precedente e si carica quello del nuovo.

Il Process Scheduler gestisce la coda di ready,usando criteri di priorità,eseguendo l’operazione di

microscheduling (si definisce l’ordine con cui i processi saranno eseguiti). Una volta che la CPU si libera si

effettua il context switching che passa il processo dallo stato di ready e poi di run, passando per la coda di

wait se deve attendere un evento o la disponibilità di una risorsa. Infine si trova in stato complete. Ogni PCB

nella coda ha un campo puntatore al prossimo PCB nella lista

LA SCHEDULAZIONE

●​ a lungo termine: seleziona il processo da inserire in memoria (minuti) bilanciando I/O e CPU bound.

●​ a breve termine: sceglie quale processo eseguire e gli alloca la CPU (100ms)

●​ a medio termine: swapping dei processi tra memoria centrale e memoria di massa

LE OPERAZIONI

Un processo, tramite fork, può crearne un altro (padre-figlio) con cui può condividere (in parte o interamente)

le risorse o meno e può essere eseguito in modo concorrente o meno ai figli.

Terminata l’istruzione, il processo chiede al S.O. di essere rimosso tramite exit (deallocazione delle risorse e

restituzione valore di stato al padre). Un padre può terminare l’esecuzione di un figlio perché ha ecceduto

nell’uso di una risorse/ non serve più l’operazione/ il padre sta terminando.

LA COOPERAZIONE

I processi possono essere indipendenti o cooperanti (Vantaggi: condivisione info; velocizzazione

computazione; modularità; molte attività per utente).

Un processo produttore genera info utilizzate dal consumatore (es: compilator

Anteprima
Vedrai una selezione di 7 pagine su 28
Appunti Sistemi operativi  Pag. 1 Appunti Sistemi operativi  Pag. 2
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Appunti Sistemi operativi  Pag. 6
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Appunti Sistemi operativi  Pag. 11
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Appunti Sistemi operativi  Pag. 16
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Appunti Sistemi operativi  Pag. 21
Anteprima di 7 pagg. su 28.
Scarica il documento per vederlo tutto.
Appunti Sistemi operativi  Pag. 26
1 su 28
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 vale_ch_ 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à Politecnico di Bari o del prof Ruta Michele.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community