Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni

Modulo

Modulo Modulo Modulo Modulo

Caricato da

wedacof597
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni

Modulo

Modulo Modulo Modulo Modulo

Caricato da

wedacof597
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 15

Modulo Sistemi Operativi

Esercizi Sistemi Operativi

Architetture e Concetti base


///

Sistemi di numerazione
Codifica Binaria
Tramite bit 0-1
Bit - Byte - Kilobyte - Megabyte etc.

Sequenze univoche

Codifica caratteri
ASCII
128 caratteri
7 bit per caratteri
1 bit per errore

Extend Ashii
UTF-8

Codifica numeri
Numerazione posizionale in base X (10,16).
Base 2 utilizzato
2 / Overflow
k

Conversione

Operazioni binarie

Addizione:
Sottrazione:

Moltiplicazione:

Divisione:

Codifica numeri negativi

Modulo a segno
No iniettività, sequenza sprecata (+0, -0)
Complemento a 2
+ normali
-2 −N
k

Codifica immagini
Insieme di pixels su una griglia bidimensionale

Ogni pixel associati bit per colore, tonalità etc

Risoluzione: pixel x pixel

gif, jpeg, png

Video come sequenze di immagini

Immagini (bitmap)

Monocromatiche
A scala di grigi
A colori
Spesso grandi dimensioni
Compressione -> Algoritmi -> Codifiche

Immagini (oggetti)

Software grafici
Linee
Descrizione geometrica / formule matematiche
Meno spazio di memorizzazione

RGB
Red Green Blue
Ogni parametro definisce l'intensità del colore da 0 a 255, 8 bit.

Sistema Operativo
Base del Sistema Operativo
Il sistema di elaborazione si suddivide in:

1. Hardware (HW)
2. Software (SW)
3. Programmi Applicativi (PA)
4. Utente

Il Sistema Operativo (SO) si occupa di controllare e coordinare l'HW per l'utilizzo da parte dei PA e delle risorse a
destinazione dell'utente.

Un sistema operativo è tipicamente composto da:

1. Kernel (nucleo)
Programma sempre in esecuzione, caricato nella memoria RAM e che interagisce direttamente con l'HW.
2. Programmi di sistema
Associati al SO.
3. Programmi applicativi
Non correlati al SO.
Un SO possiede per ogni dispositivo un driver, ossia un software che lo gestisce e lo interfaccia; esso è correlato con
il controllore del dispositivo e comunica tramite i BUS. Un esempio è la GPU.

Un esempio di funzionamento è il seguente, considerando un dispositivo I/O:

Il driver del dispositivo scrive all'interno dei registri del controllore.

Il controllore esamina il contenuto per determinare l'azione da svolgere.

Il C. trasferisce i dati nel proprio buffer e informa il completamento al driver tramite un interrupt.

Il driver trasferisce il controllo del C. ad altre parti del sistema, restituendo i dati dell'operazione.

L'interrupt è generato dall'HW tramite un'interrupt request line che viene controllata dalla CPU ad ogni istruzione.
Esistono, solitamente, 2 tipi di line:

nonmaskable interrupt
errori gravi
maskable interrupt
utilizzata dai controllori dei dispositivi

ved memorie, core etc.

Attività del Sistema Operativo


Il SO svolge varie funzioni e attività, le fondamentali e caratteristiche sono:

1. Bootstrap program (programma di avviamento)


Memorizzato nel firmware.
Serve ad inizializzare le varie componenti, caricare il SO etc.
2. Kernel
Sempre attivo perché caricato dal bootstrap.
Inizia ad offrire servizi al sistema e agli utenti.
3. Interrupts e Traps/Exceptions
Le exceptions sono interruzioni generate dal sistema causata da errori di base come: accesso illegale in memoria,
divisione per 0, etc.
4. System call (chiamata di sistema)
Richiesta, da parte di un programma, dei servizi disponibili del SO.
5. Multiprogrammazione Multitasking
Il SO mantiene in memoria vari processi (programmi in esecuzione) dai quali sceglie chi eseguire tramite lo
scheduling.
Quando il processo entra in uno stato di attesa, la CPU, anziché aspettare inattiva, esegue un processo differente,
riprendendolo quando possibie.
Il Multitasking è l'estensione logica della multiprogrammazione, scambiando i processi con una certa frequenza.

Gestione
Il SO si occupa di gestire:

dei processi
Un programma per funzionare deve essere eseguito, ossia le sue istruzione devono essere svolte dalla CPU.
Il SO è responsabile della:

Creazione e Cancellazione;
Scheduling e Thread;
Sospensione e Ripristino;
Sincronizzazione e Comunicazione;

della memoria
Il SO è responsabile di:

Parti di memoria in uso e da chi;


Assegnamento e Revoca dello spazio;
Caricamento e Trasferimento processi e dati;

dei file
Il SO fornisce un'interfaccia logica per la memorizzazione delle informazioni. L'unica logica di archiviazione è chiamata
file, ossia una raccolta di informazioni correlate e definite.

Il SO è responsabile di:

Creazione e Cancellazione di file e directory;


Backup;
Associazioni a memorie secondarie;

della memoria di massa


Il SO è responsabile di:

Mounting e Unmounting;
Scheduling;
Partizionamento;
Assegnazione;
Protezione;

della sicurezza e protezione


Il SO deve assicurarsi che un programma errato (o volutamente dannoso) non possa causare danni o il non
funzionamento del SO stesso.

Modalità Utente e modalità di sistema:


per indicare la modalità attiva viene utilizzato un bit di modalità: 0 - di sistema; 1 - user.
Questa modalità, detta dual mode, consente la protezione del sistema operativo e degli altri utenti dagli errori di un
utente.
TImer:
invia un segnale d’interruzione alla CPU a intervalli di tempo specificati e assicura che il sistema operativo
mantenga il controllo della CPU evitando che un programma utente tenga la CPU per un tempo infinito.
System Call:
Permette al SO di svolgere operazione riservate per conto del programma.
User ID (identificatori utente):
Identificano univocamente l’utente.
Virtualizzazione:
Tecnica che permette di astrarre l’hardware, creando ambienti di esecuzioni che permettono ai SO di funzionare
come applicazioni all'interno di altri SO.

Sistemi operativi liberi, open-source e proprietari.

Processi
Struttura
La struttura di un processo in memoria è suddivisa nelle seguenti sezioni:

Testo (codice eseguibile)


Dati (variabili globali)
Heap (memoria allocata dinamicamente durante esecuzione)
Stack (memoria temporaneamente utilizzata durante chiamate di funzione)

Stati
Gli stati di un processo sono:

Nuovo (creazione)
Running (esecuzione delle istruzioni)
Waiting (attesa)
Ready (pronto per essere assegnato)
Terminato

Le informazioni di un processo sono contenute nel SO in un Process Control Block (PCB) (blocco di controllo):

Stato
Contatore (indirizzo di memoria successiva per istruzione)
Registri CPU
Informazioni sullo scheduling, gestione della memoria, accounting e I/O
Scheduling
ved. Multiprogrammazione in Sistema Operativo
L'obiettivo del Time Sharing è di avere sempre almeno un processo in esecuzione.
Lo scheduler seleziona un processo da eseguire, 1 core = 1 processo.
Ci sono 2 tipi di processi:

I/O bound, impiega la maggior parte del tempio in I/O


CPU bound impiega la maggior parte del tempo in elaborazione

I processi pronti per essere eseguiti vengono inseriti nella ready queue, quelli in attesa invece nella wait queue.

Nel caso di una interrupt lo stato del processo viene salvato nel PCB, per poi essere ripristinato in seguito; questa
operazione è nota come cambio di contesto.

Comunicazione
Un ambiente Interprocess Comunication (IPC) gode dei vantaggi come una condivisione di informazioni per più utenti
e un calcolo più veloce, suddividendo un'attività in diverse sottoattività.
Essa pu avvenire a memoria condivisa in cui i processi scrivono e leggono dalla stessa zona di memoria o a scambio di
messaggi diretti tra i processi.

La comunicazione tra processi avviene attraverso chiamate delle primitive


send() (cioè invia il messaggio) e receive() (ricevi il messaggio).

Lo scambio di messaggi può essere sincrono (o bloccante) oppure asincrono (o non bloccante).

Thread
Un thread è l’unità di base d’uso della CPU e comprende:

un identificatore di thread (ID),


un contatore di programma,
un insieme di registri,
una pila (stack).

È eseguito in maniera indipendente e concorrente a un processo.

Multithread
Essendo che un processo ha bisogno di svolgere più funzioni contemporaneamente, si fa uso di più thread simultanei,
anche noto come multithreading, permettendo di eseguire più porzioni di codice in contemporanea.

Tempo di risposta; Applicazioni Client-Server;


Condivisione delle risorse di default;
Convenenienza data la condivisione dello stesso spazio di memoria;
Scalabilità e Parallelismo, in particolare nel caso di più multiprocessori o multicore.

I principali problemi o sfide sono:

Identificazione dei task separabili;


Bilanciamento dei task e della loro utilità;
Suddivisione e Affidabilità dei dati;
Test e debugging.

Memorie di massa (Storage)


La capacità di memorizzazione è solitamente indicata in GB/TB.
Si dividono in:

Dischi magnetici
I Dischi rigidi sono dispositivi magnetici composti da:

Piatti;
Superfici ricoperte da materiale magnetico;
Registrazione delle informazioni magneticamente sui piatti;
Testina di scrittura/lettura per ogni superficie del piatto;

La superficie di un piatto è composta da:

Traccia (A)
Anelli concentrici numerati univocamente;
Settori (B)
Spicchi uguali numerati univocamente;
Il settore di una traccia (C) è tipicamente 0.5 - 4KB.
Cluster (D)
Insieme di settori di tracci contigui;
Un disco è caratterizzato da:

Seek time (tempo di ricerca)


Tempo necessario per l'unità braccio per spostare le testine fino al settore voluto.
Rotational latency (latenza di rotazione)
Tempo aggiuntivo in cui il disco ruota per posizionare il settore al di sotto della testina.
Bandwith (ampiezza di banda)
Numero totale di byte trasferiti nell'intervallo di tempo tra richiesta e completamento dell'operazione.
Dipende da Seek time e Rotational latency.

Dispositivi NVM (Non-Volatile Memory)


Dispositivi elettronici come: SSD, chiave USB e memory card.

Vantaggi:

Affidabilità maggiore - no elementi mobili;


Velocità maggiore;
Consumano meno energia;
Svantaggi:
Più costosi;
Capacità inferiore;

Formattazione
La formattazione di basso livello/fisica effettua uno strutturamento dati delle locazioni di memorizazzione (ex. settori
dischi rigidi).
Il SO, inoltre, registra le proprie strutture dati:

1. Suddivide il dispositivo in partizioni (parti/blocchi)


Una partizione è una unità indipendente che può contenere il SO e i driver, partizione d'avviamento, i file utente...;
2. Crea e gestisce il volume;
3. Formattazione logica, crea il file system, costituito dall'insieme dei volumi.
Registra informazioni come lo spazio libero, allocato, le directory;

Bootstrap è il programma d'avviamento eseguito all'avvio del calcolatore, memorizzato nel firmware e caricato dal
bootstrap loader. (Ex. Windows e il MBR, Master Boot Record, collocato nella parte iniziale della memoria).

Accesso alle mdm


Avviene tramite:

Collegamento fisico
Le porte di a disposizione come sata, USB, fc...
Network
In una LAN i dispositivi nas.
In una san più dispositivi condividono lo stesso storage. Uno storage array può contenere più san.
Cloud

Strutture RAID
Redundant Array of Independent Disks.
La struttura RAID consiste nell'organizzare più dischi per migliorare le prestazioni e l'affidabilità.

Affidabilità
I dati vengono memorizzati in modo ridondante attraverso il mirroring, ossia la duplicazione di un disco/dati.
Nel caso si rompa un disco, è possibilire recuperare i dati a costo di investire di più.
Prestazioni
Con il mirroring aumenta anche la frequenza di lettura, permettendo di leggere da due dischi in parallelo.
Il data striping è una tecnica in cui i dati vengono distribuiti in più parti su più dischi.
Il data striping non migliora l'affidabilità, anzi.

I vari livelli del RAID si pongono quindi compromessi tra affidabilità e prestazioni:

RAID 0
Capacità: C x N;
Costo: basso;
Prestazioni: alte -> parallelismo di I/O;
Affidabilità: minima -> non sono consentiti dischi difettosi;

RAID 1
Capacità: N;
Costo: dipende dal numero di copie dischi;
Prestazioni: ridotte;
Affidabilità: lineare -> scala con copie dischi;

RAID 2
RAID 3
RAID 4
RAID 5
RAID 6

File system
Il file system è l'elemento più visibile ed interagibile di tutto il sistema operativo, permettendo la memorizzazione dei dati
e dei programmi sia dell'SO che dell'utente.
È composto da:
File, contente dati
Directory, organizza i file e fornisce informazioni

File
Un insieme di informazioni correlate, registrate in una memoria secondaria, a cui è assegnato un nome. Contengono
sia dati che programmi in forma sorgente.

Attributi

È composto da attributi che lo caratterizzano:

Nome;
Identificatore;
Tipo;
Locazione;
Dimensione;
Proiezione;
Ora, data e utente;

Operazioni

Operazioni effettuabili su un file:

Creazione, allocazione di memoria e in directory;


Scrittura/Lettura;
Riposizionamento;
Cancellazione;
Troncamento, cancellazione del contenuto;
E altre operazioni come copia, rinominazione...

Tipi

I file hanno vari tipi, indicati da un'estensione, che indicano come gestirli:

Eseguibile, ex: exe, bin;


Oggetto, ex: obj;
Codice sorgente, ex: cc, java;
Batch;
Markup, ex: html, xml;
Libreria
Archivio, ex: zip, rar;
Multimediali, ex: mp3, mp4, avi;
Visualizzazione, ex: pdf, jpg, gif;
Word processor, ex: docx;

Accesso ai file

Accesso sequenziale

Il metodo più semplice.


Le informazioni del file si elaborano ordinatamente, un record dopo l’altro.
Utilizzato ad esempio quando c'è bisogno di accedere a tutto il contenuto.

Accesso diretto

Le informazioni, suddivise in record di lunghezza fissa, vengono lette o scritte rapidamente senza ordine.
Utilizzato ad esempio nel caso di grandi quantità di informazioni.

Directory
È una struttura contenente il nome del file e le informazioni di accesso al contenuto.
È possibile eseguire Operazioni dei file.

A un livello

Tutti i file sono contenuti nella stessa directory. È la struttura più semplice ma ha molte limitazioni.

A due livelli

Ogni utente ha una directory. È presente una sintassi/struttura.

Struttura ad albero

Una directory può contenere sia file che altre directory, premettendo la creazione di sottodirectory.
L'albero ha una radice nota come root directory e ogni file ha un nome di percorso:

Percorso assoluto: completo, parte dalla radice.


Percorso relativo: parte dalla directory "corrente".

Struttura a grafo aciclico

Directory o file si possono trovare in più posizioni, permettendo la condivisione di sottodirectory e file.

Struttura a grafo generale

Flessibile, ma difficile da gestire.


Evitare cicli.

Protezione
Protezione necessaria dai:

Danni fisici, affidabilità;


Accessi impropri, protezione;

Per evitare e limitare gli accessi impropri si ha l'accesso controllato sulle diverse Operazioni.
Avviene tramite: access-control list, ACL che contiene:

nome utenti;
tipi d'accesso consentiti;

File system
Il file system è diviso in una struttura a più livelli.

Durante la comunicazione i file sono suddivisi in blocchi logici e i trasferimenti in blocchi (fisici), a loro volta in settori,
quali bisogna far corrispondere.
Metodo di allocazione
Dello spazio nel disco.

Le directory possono contenere anche informazioni su dove si trovano i blocchi dei dati, in base al metodo di allocazione.

Allocazione contigua

Ogni file viene memorizzato in blocchi contigui, ossia successivi.


È necessario conoscere il numero del primo blocco e il numero di blocchi utilizzati.

Problemi:

Frammentazione esterna
Non c'è abbastanza spazio per contenere un file contiguamente. (Visto che i dischi vengono frammentati.)
Crescita del file
Stesso problema.

Allocazione concatenata

Ogni file può essere composto da una lista di blocchi sparsi.


È necessario conoscere il primo e l'ultimo blocco; ogni blocco contiene informazioni sul successivo.

Risolve i problemi dell'allocazione concatenata ma rende inefficiente l'Accesso diretto.

File allocation table

In acronimo FAT.
Utilizzata nelle USB.
Anzichè salvare le informazioni nei singoli blocchi vengono salvate all'interno di questa tabella, la directory contiene solo
il numero del blocco iniziale.

Svantaggi:

Collo di bottiglia
Per accedere ad un file bisogna prima accedere alla FAT.
Numerosi accessi

Allocazione indicizzata

Ragruppa tutte le informazioni di un singolo file in una sola tabella, chiamata blocco indice.
Il blocco indice contiene l'elenco di tutti i blocchi di un file. La directory contiene solo il numero del blocco indice.

Problemi:

Dimensione del blocco indice


Dovrebbe essere il più piccolo possibile visto che è ogni file ne ha uno.
Ma non troppo altrimenti non riuscirebbe a contenere alcuni elenchi di grandi dimensioni.

Schema combinato

Linux.
Ogni file ha una tabella nota come inode che contiene:

Tabella di blocchi indiretti


I primi 12 blocchi del file.
Blocchi indiretti singoli
Contiene il numero di un blocco indice.
Blocchi indiretti a due livelli
Contiene il numero di un blocco indice, che a sua volta contiene il numero di un blocco indice.
Blocchi indiretti a tre livelli
Contiene il numero di un blocco indice, che a sua volta contiene il numero di un blocco indice, che contengono
elenchi di blocchi indice.

Link

Link hard

Due file con lo stesso numero di blocco indice.

Link simbolico

Un file è collegato al nome di un altro file.

Macchine virtuali
La virtualizzazione è un metodo che può al guest un duplicato di HW (cpu, memoria...) o SW (SO, file), gestito dal
sistema HW sottostante: l'host.

Virtualizzazione
I requisiti della virtualizzazione sono:

Fedeltà
Prestazioni
Sicurezza

Paravirtualizzazione

Sistema simile. Il guest dev'essere modificato. Dispositivi virtuali.

Contenitore di applicazione

Separa le applicazioni e contralla prestazioni e risorse.

Emulazione
Architettura di sistema diversa da quello host.
Le istruzioni devono essere tradotte.

Hypervisor
A creare ed eseguire le macchine virtuali (identiche all'host), nonché a gestirle, è Virtual Machine Manager, VMM, anche
noto come hypervisor.
Esistono:

Hypervisor tipo 1
Forniscono l'ambiente e le caratteristiche per creare, realizzare e distruggere le macchine virtuali guest.

Include tutto il SW: SO, drivers, applicazioni...

La live migration permette di spostare un guest in esecuzione da un sistema all'altro.

Hypervisor tipo 2

Applicazioni ignari della virtualizzazione e che non hanno supporto dell'HW o di un host.

Potrebbero piacerti anche