Modulo
Modulo
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:
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
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.
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.
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
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:
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:
Mounting e Unmounting;
Scheduling;
Partizionamento;
Assegnazione;
Protezione;
Processi
Struttura
La struttura di un processo in memoria è suddivisa nelle seguenti sezioni:
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 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.
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:
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.
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;
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:
Vantaggi:
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:
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).
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
Nome;
Identificatore;
Tipo;
Locazione;
Dimensione;
Proiezione;
Ora, data e utente;
Operazioni
Tipi
I file hanno vari tipi, indicati da un'estensione, che indicano come gestirli:
Accesso ai file
Accesso sequenziale
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
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:
Directory o file si possono trovare in più posizioni, permettendo la condivisione di sottodirectory e file.
Protezione
Protezione necessaria dai:
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
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
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:
Schema combinato
Linux.
Ogni file ha una tabella nota come inode che contiene:
Link
Link hard
Link simbolico
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
Contenitore di applicazione
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.
Hypervisor tipo 2
Applicazioni ignari della virtualizzazione e che non hanno supporto dell'HW o di un host.