Upload
anastasio-mori
View
212
Download
0
Embed Size (px)
Citation preview
Sistema Operativo (Software di base)
Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei dati attraverso indici
I sistemi operativi sono organizzati a strati
Strato = macchina virtuale che maschera la macchina fisica (hardware)
Funzionalità Possiamo identificare 5 strati tra
macchina fisica e utente Gestore dei processi Gestore della memoria Gestore delle periferiche File system Interprete dei comandi
Gestore dei processi Gestisce l’esecuzione dei programmi Le unità di esecuzione vengono chiamate
processi Per eseguire un programma occorre
mantenere il corrispondente processo attivo nella CPU
In ambiente multi-utente il gestore deve decidere a quale processo assegnare la CPU
Inoltre deve reagire agli eventi esterni (le interruzioni provenienti dalle periferiche)
Cos’e’ un processo? Programma = lista di istruzioni = nozione
statica Processo = programma in esecuzione
= programma + stato corrente variabili
= nozione dinamica Stato corrente=
valori in memoria centrale valori nei registri della CPU
In un PC un solo processo in esecuzione alla volta
Gestore della memoria Il gestore della memoria deve
allocare la memoria partizionarla tra i processi che la richiedono
Grazie al gestore della memoria gli strati superiori hanno l’illusione che ogni processo abbia una memoria dedicata
Gestore delle periferiche Maschera le caratteristiche hardware
delle periferiche Gestisce le operazioni di input e output Fornisce procedure ad alto livello
ad esempio per la lettura, scrittura di dati su memorie secondarie
scrittura su stampanti, ecc
File System Gestisce i dati in memoria di massa Struttura i dati in modo gerarchico
utilizzando file e directory Fornisce operazioni di alto livello per la
gestione di file ad esempio creazione di un nuovo
documento, directory ecc Protegge i dati da accessi esterni Garantisce la condivisione sicura dei
dati
Interprete dei comandi Consente all’utente di attivare i
programmi Sfrutta le funzionalità degli strati
inferiori per cercare in memoria il programma invocato allocare la memoria richiesta dal
programma attivare un processo per eseguire il
programma
Evoluzione dei Sistemi Operativi
Sistemi batch con schede (50’s-60’s)
System/360 IBM compatibili (65-70’s)
Sistemi operativi UNIX e DOS (80’s)
WINDOWS (90’s)
Uno sguardo da vicino
Gestione dei Processi Gestione della Memoria Centrale File System Gestione delle Periferiche
Ciclo di vita dei processi L’esecuzione di un programma può comportare
l’alternarsi di processi utente e di sistema all’interno della CPU
Processo utente deriva da un programma applicativo
Processo di sistema deriva da un programma del sistema operativo
Processi kernel (nucleo) Gestori interruzioni
L’esecuzione di un processo puo’ essere interrotta!
Ricordate sempre che un processo corrisponde ad un programma + stato corrente della memoria centrale e dei registri
Interruzione interna L’esecuzione di un processo attivo si
interrompe ad es. per operazioni di input/output (operazioni costose in termini di tempo)
Lo stato corrente (contenuto registri ecc) del processo interrotto viene salvato in memoria
Il processo passa allo stato in attesa Il controllo passa ad un processo di sistema
che assegna la CPU ad un altro processo (per poter ottimizzare l’utilizzo della CPU)
Interruzioni interne
attivo pronto
attesa
Salvastato
Ripristinastato
Fine
Inizio
Acknowledg. operazione
Interruzioni esterne Una periferica segnala la fine di un operazione L’esecuzione del processo corrente viene interrotta (il processo passa allo stato pronto) e passa al
gestore delle interruzioni Quindi interruzioe esterna perche’ riguarda le operazioni di
un’altro processo! Il gestore delle interruzioni provvede a trasferire
dati in memoria e risvegliare il processo in attesa che passa allo stato pronto
Il controllo passa poi al nucleo che manda in esecuzione uno dei processi in stato pronto
Il gestore lavora con interruzioni disabilitate
Interruzioni esterne
attivo pronto
Salvastato
Ripristinastato
Fine
Inizio
Scheduling dei processi Il sistema operativo può interrompere i processi
per assicurare una politica fair di esecuzione Scheduler = quella parte del sistema operativo
che seleziona il processo da mandare in esecuzione
Due possibili politiche di scheduling: Round robin Con Priorità
Criteri di valutazione: efficienza, tempi di risposta, fairness, ecc
Round Robin Gestione dei processi in attesa tramite
coda Cioe’ FIFO = first-in first-out
Ogni processo ha un quanto di tempo di esecuzione dopo il quale torna in attesa Quanto >> Tempo per salvare/ripristinare
stato (context switching) Quanto << Tempo di esecuzione del
programma (per assicurare fairness)
Priorità Si assegna una priorità ad ogni processo e si
manda in esecuzione il processo con priorità più alta
La priorità può essere assegnata staticamente ed essere ridotta durante
l’esecuzione: se risulta più bassa di un processo in attesa si
effettua la fase di context switching dinamicamente:
a seconda delle operazioni effettuate dal processo (ad es. seleziona subito processi con operazioni I/O)
Gestione Memoria Centrale I processi si alternano durante l’esecuzione
nella CPU Per ragioni di efficienza dobbiamo
mantenere più programmi in memoria centrale
Cio’ comporta il partizionamento della memoria centrale e del suo spazio di indirizzi.
Possibili tecniche: Segmentazione paginazione
Il Problema della Rilocazione Supponiamo che la memoria venga
assegnata dinamicamente (con qualche strategia) ai programmi in esecuzione
Come possiamo trasformare gli indirizzi logici contenuti all’interno del programma (ad es in linguaggio ad alto livello oppure in linguaggio macchina) in indirizzi fisici (cioe’ indirizzi della RAM)?
Questo problema e’ chiamato: rilocazione dei programmi
Compilatore, linker e loader
Compilatore e Linker Traducono programmi scritti in linguaggio ad alto
livello in programmi in linguaggio macchina che accedono dati (variabili ecc) utilizzando indirizzi logici indipendenti dalla posizione in memoria centrale
(Linker: si utilizza per compilare programmi divisi in moduli)
Loader carica il programma compilato in memoria centrale.
Rilocazione Statica
il loader trasforma indirizzi logici in indirizzi assoluti durante il caricamento in memoria centrale
Dinamica il loader carica il programma con indirizzi logici.
Il programma compilato deve pero gestire l’indirizzamento tramite un registro speciale chiamato registro base
Il Registro base mantiene l’indirizzo assoluto della parte di memoria dove si trova il programma
Come opera il loader sulla RAM?
Segmentazione dello spazio di indirizzamento della RAM
Paginazione Memoria virtuale
Segmentazione La memoria centrale viene suddivisa in segmenti
di lunghezza variabile contenenti i programmi Registro base
indirizzo della prima cella del segmento contenente il programma in esecuzione
Registro frontiero ultima cella contenente il programma in esecuzione
Rilocazione:indirizzo assoluto = indirizzo logico + cont. reg. base
Problema = frammentazione della memoria
Paginazione La memoria centrale e i programmi
vengono suddivisi in pagine di lunghezza fissa I programmi vengono caricati in memoria anche
in pagine non contigue La tabella delle pagine mantiene la
corrispondenza tra pagine dei programmi e pagine in memoria centrale
Problema= ridurre il numero di caricamenti di pagine
Paginazione: rilocazione Se il registro indirizzi ha k bit e una pagina ha 2**p
celle, vi sono q=k-p pagine in memoria centrale I primi q bit di indirizzo logico indicano una pagina
(logica) nella tabella (la tabella mappa pag. logiche in pag. fisiche)
Gli ultimi p bit indicano l’indirizzo relativo all’interno della pagina
Rilocazione: tramite i primi q bit si recupera l’indirizzo della pagina
fisica poi lo si concatena con gli ultimi p bitin modo da ottenere
l’indirizzo assoluto su k bit!
Memoria Virtuale Con la suddivisone del programma in pagine
non è necessario mantenere tutto il programma in memoria centrale
Paginazione a richiesta: Se la pagina del programma che contiene la
prossima esecuzione da eseguire non è in memoria si carica da disco (page swapping)
occorre trovare spazio in memoria e nella tabella (dobbiamo uccidere altre pagine)
Indirizzi nei programmi diventano virtuali infatti la tabella può contenere le pagine in ordine sparso
Gestione dei File Memoria di massa server per
gestire grandi quantità di dati Persistentenza Sicurezza Classificazione
Soluzione I dati vengono organizzati
logicamente in file e gestiti dal sistema operativo
File Nome:
Identifica il file spesso con una estensione che indica il tipo di file
es. Tesi.doc oppure somma.exe Struttura:
Sequenza di byte Sequenza di blocchi (record) di byte
Tipo: File di caratteri e binari (eseguibili) Directory
Attributi: nome, diritti di accesso,proprietario
Operazioni su File Il file system consente di effettuare le
seguenti operazioni: creare, cancellare, spostare,
recuperare, modificare documenti in memoria di massa (memoria persistente)
Modificare gli attributi di un file Ridenominare i file
Directory E’ un file di tipo speciale che mantiene
informazioni su altri file permette di strutturare insiemi di file (dati) in
maniera gerarchica contiene la lista dei nomi e attributi dei file e
directory al suo interno Quinid: il file system ha una struttura ad
albero Radice = radice del’intero file system Nodi interni = directory Foglie = documenti/programmi
Path names In un’organizzazione ad albero i nomi devono
contenere informazioni sui cammini sui quali si trovano i corrispondenti file
Nomi relativi: relativi ad una particolare directory
Nomi assoluti: specificano il cammino a partire dalla radice (root) del
file system (mai ambigui)
File System in DOS Disco fisso indicato con C: Dischetto indicato con A: Es Comandi:
‘dir’ = lista file dir corrente ‘cd nome’=si posiziona nella dir nome ‘md nome’=crea dir nome sotto dir.
Corrente ‘rd nome’=rimuove dir nome
Gestione File System File possono venire memorizzati con
Allocazione continua di blocchi di byte Allocazione collegata (un blocco contiene
l’indirizzo del prossimo) Allocazione con indice (si mantiene una
tabella in memoria per recuperare i blocchi) – DOS -
I-node: tabella con puntatori ad altre tabelle (combina le ultime due) – UNIX –
Gestione delle periferiche Driver fisici (hardware)
per trasferire e manipolare Driver logici (software)
parte del sistema operativo che fornisce funzionalità ad alto livello che riguardano le periferiche
Driver fisico Il device controller controlla i meccanismi fisici
dell’apparecchiatura (es. unità di lettura di floppy disk)
Il device controller dialoga con la CPU attraverso registri e attraverso una memoria dedicata alle operazioni I/O chiamata DMA (Memoria ad accesso diretto)
La DMA memorizza informazioni che il device controller puo usare per scrivere in memoria direttamente senza passare attraverso la CPU
Driver logico Software che maschera i device fisici
Gestisce gli errori in lettura/scrittura Gestisce i nomi del device driver Gestisce i demoni per code di attesa per
l’utilizzo di device ad es code di stampa
Memoria di Massa Memoria persistente e di accesso
lento Hard disk = disco fisso Floppy disk = dischetto CD Rom
Disco Fisso Vari piatti sovrapposti, ogni piatto ha 2 superfici
magnetiche sulle quali vengono memorizzati i dati Superfice suddivisa in tracce e settori Cilindro=tracce nella stessa posizione Indirizzo dei dati memorizzati: sup-traccia-settore Driver fisico
piatti+testine (una per sup.) Driver logico
software di sistema che gestisce disco fisso (C: in DOS)
Memoria di Massa: Floppy Unico disco con 2 superfici magnetiche Vanno formattati cioè il sistema
operativo determina numero settori, densità bit sul dischetto
Driver fisico unità di lettura con 2 testine una per ogni
superficie Driver logico
software che gestisce trasferimento dati da floppy (driver A: in DOS)