PARTE DI SISTEMI OPERATIVI
CAPITOLO 1 – INTRODUZIONE
Le 4 componenti di un sistema di calcolo:
1) Hardware
2) Sistema operativo
3) Software applicativo
4) Utente
Schema a cipolla del SISTEMA DI CALCOLO:
1) HARDWARE
2) KERNEL ( nucleo del S.O.)
3) SHELL ( interfaccia per i programmi) l’utente interagisce per mezzo di una shell
Schema a cipolla del SISTEMA OPERATIVO
1) KERNEL ( nucleo) è il NUCLEO del Sistema Operativo in CONTATTO DIRETTO con L’HARDWARE.
La gestione di quest’ultimo avviene per via di FUNZIONI elementari contenute dal kernel stesso. E’
SEMPRE IN ESECUZIONE durante il funzionamento del COMPUTER.
2) Gestione della MEMORIA PRINCIPALE
3) Gestione delle PERIFERICHE
4) Gestione del FILE SYSTEM
5) Interprete dei comandi
6) Sw Applicativo
Com’è è fatto il Sistema Operativo per Dispositivi MOBILI ? è costituito da 2 parti:
1) KERNEL
2) MIDDLEWARE ( o software di infrastruttura) permette l’interfacciamento tra componenti sw e
hardware ( collezione di ambienti SW per gli sviluppatori)
Schema del SISTEMA DI CALCOLO CPU / controller collegati ad un unico bus con MEMORIA CONDIVISA
in COMUNE
Come avviene la fase di AVVIAMENTO ?
Accendendo il PC : il Bios (memorizzato sulla ROM) carica una parte di codice chiamato
PROGRAMMA DI BOOTSTRAP presente sull’ Hard Disk in una partizione denominata MASTER
BOOT RECORD. Questo codice contiene le istruzioni necessarie per “mettere in sesto da solo il
computer” . Successivamente avverrà il caricamento del KERNEL del sistema operativo (
quest’ultimo prenderà il controllo di tutto)
GESTIONE DELLE INTERRUPTS:
1) Il processore sta elaborando qualcosa
2) Arriva un INTERRUPT
3) Viene salvato il PC e relative informazioni necessarie
4) L’interrupt avrà un codice ID che sarà corrispondente con una ISR ( presente sulla memoria DRAM
a indirizzi bassi e disposta in un VETTORE DI INDIRIZZI DI INTERRUPTS [interrupts vettorizzato])
5) Una volta gestita la situazione si riparte dall’elaborazione del punto 1 , dopo aver ripristinato tutto
Si possono avere INTERRUPTS durante la gestione di una INTERRUPT da parte di una ISR? NO! Durante
la gestione di una interrupt , gli altri interrupts sono MOMENTANEAMENTE DISABILITATI
Che cos’è una TRAP ? La TRAP è un’eccezione di tipo SOFTWARE derivante da un ERRORE o da una
RICHIESTA UTENTE. Le TRAP sono effettuate mediante le SYSTEM CALLS
Perché un S.O. è detto INTERRUPT DRIVER? perché deve gestire continuamente le interruzioni
Perché un S.O. è detto DEVICE DRIVEN ? Esistono controllori di DEVICE (periferica) per ognuna di esse
per guidare le operazioni di I/O
Che cos’è il DEVICE DRIVER? Il Kernel può interagire con i CONTROLLORI DI DEVICES solo ed
esclusivamente mediante un DEVICE DRIVER.
Come può essere gestita l’I/O? come ben sappiamo l’I/O è gestita mediante INTERRUPTS :
1) Un programma richiede di usare una periferica
2) Arriva quindi un INTERRUPT alla CPU
3) La gestione può avvenire secondo 2 Modalità:
Si
a) I/O SINCRONO restituisce il controllo al processo utente solo al termine della gestione
dell’INTERRUPT per l’I/O (le risorse rimangono inattive e quindi la CPU non fa null’altro)
Durante
b) I/O A-SINCRONO la gestione di I/O le risorse vengono usate da altri processi ( la
CPU elabora dati e istruzioni di altri processi)
Il DIRECT MEMORY ACCESS (già incontrato)
ARCHITETTURA DI VON NEUMANN con DMA ( SCHEMA)
Che tipi di ELABORAZIONI possono essere fatte con i MULTIPROCESSORI ? I multiprocessori sono più
PROCESSORI che funzionano come se fossero UNO sincronizzati e comunicanti. Esistono 2 elaborazioni
possibili:
1) MULTIELABORAZIONE SIMMETRICA Ogni processore ha la stessa priorità e può operare
indipendentemente SIMMETRICA
2) MULTIELABORAZIONE A-SIMMETRICA C’è un processore che sovraintende ( svolge il ruolo di
controllore) e gli altri processori che operano. (“AMP” : A-simmetric MultiProcessing)
Che cos’è un MULTICORE? è un tipo di MULTIPROCESSORE : abbiamo più core in un’unica piastrina.
Qual è più efficiente tra MULTICORE e MULTIPROCESSORE STANDARD? sicuramente il MULTICORE: la
comunicazione e sincronizzazione dei core presenti su UN UNICO CHIP velocizza le cose. INOLTRE un
unico chip in termini di consumo è migliore.
SISTEMI DI TIPO CLUSTER sono interi CALCOLATORI COMPLETI collegati tra loro ( per questo sono detti
“NODI”) collegati ad un’ UNICA MEMORIA SECONDARIA CONDIVISA ( chiamata SAN [STORAGE AREA
NETWORK])
Un Sistema di tipo cluster può essere di 2 tipi:
1) SIMMETRICO tutti i nodi hanno uguale priorità
2) A-SIMMETRICO un NODO è un SUPERVISORE di tutti gli altri ( che operano)
CLUSTERING SIMMETRICO
Quali sono i vantaggi della multiprogrammazione? più task ( JOB ) sono memorizzati in memoria
contemporaneamente : questo implica un utilizzo migliore delle risorse ( la CPU è sempre occupata ).
Avendo più JOB in memoria , la CPU dovrà scegliere quale elaborare attraverso uno SCHEDULING
Che cos’è il MULTITASKING (detto anche TIMESHARING)? La cpu passa velocemente dall’esecuzione di
uno JOB ad un altro in maniera da dare l’impressione che l’elaborazione di tutti gli JOB sia contemporanea
. E’ il passaggio dall’esecuzione di un TASK ad un ALTRO in maniera talmente veloce da dare
impressione che siano eseguiti contemporaneamente
Cosa succede se non ho spazio nella memoria per inserire un TASK ? viene fatto uno SWAPPING in base
alla priorità appoggiandosi ad una MEMORIA VIRTUALE sulla memoria SECONDARIA che conterrà quelli
meno importanti e che poi saranno ripresi.
Che cos’è il SISTEMA del S.O. chiamato DUAL MODE? Esistono due modalità operative:
1) MODALITA’ UTENTE (BIT-MODE a ZERO)
2) MODALITA’ KERNEL (BIT-MODE a UNO)
Per il passaggio da una modalità ad un’altra viene settato un BIT-MODE appositamente per capire in quale
modalità elaborare.
Cosa succede se un processo rimane bloccato in KERNEL MODE? entra in gioco un TIMER ( clock +
contatore) che dopo un tempo prefissato emette un INTERRUPT che fa uscire il processo dalla modalità.
Due tipi di processi:
1) I Processi a Singolo Thread un processo unico senza altri sottoprocessi con un unico PC che ci
da l’istruzione successiva da eseguire
2) I Processi a MULTI-THREAD un processo composto da più sottoprocessi (threads) . Ognuno di
questi threads avrà un PC pertinente.
Che sono i DEADLOCK ? un deadlock avviene quando l’esecuzione di uno o più processi si ARRESTA
perché uno aspetta una risorsa che deve dargli l’altro(che ancora non arriva) e/o viceversa
Che cos’è la memoria TERZIARIA ? identifica (in chiave moderna) le memorie estraibili
Che cos’è la COERENZA DELLE CACHE? Se un dato deve essere modificato ad un particolare livello di
cache allora dovrà necessariamente subire la stessa modifica in tutti gli altri livelli.
Cos’è il SOTTOSISTEMA DI I/O? un sottosistema comprendente 3 parti:
1) Buffer di periferica
2) Cache di periferica
3) Spool di periferica ( per la gestione asincrona dell’I/O)
Quali sono le possibili violazioni di SICUREZZA?
1) DENIAL OF SERVICE malfunzionamento per attacco informatico
2) WORM malware auto-replicante
3) TROJAN programmi con all’interno funzionalità nascoste pericolose
4) VIRUS porzioni di codice dannoso che si ATTACCA a programmi preesistenti
HACKER viola la protezione del sistema prelevando solo informazioni
CRACKER viola la protezione e causa danni voluti al sistema
Che strutture dati usa il KERNEL? poiché il kernel ha elementi che possono avere dimensione variabile,
usa tipicamente le strutture DINAMICHE : le LINKED LIST
1) LINKED LIST SEMPLICI l’elemento i-esimo contiene un riferimento al prossimo elemento (oltre
che a un campo dati)
2) LINKED LIST DOPPIAMENTE CONCATENATE l’elemento i-esimo contiene un riferimento
all’elemento successivo e un riferimento all’elemento precedente (oltre che a un campo dati)
Il Kernel utilizza anche lo STACK (PILA LIFO) usato per gestire le chiamate alle funzioni
Il Kernel utilizza anche le CODE ( sono FIFO) come ad esempio la lista per l’attesa dei documenti da
stampare
Il Kernel usa anche ALBERI BINARI DI RICERCA
Cos’è un HASH? è una STRINGA a dimensione fissa ricavata da un input di una qualsiasi dimensione ( la
trasformazione non è reversibile). Viene tipicamente utilizzata per le credenziali di accesso.
Cosa sono gli STANDAL-ONE? sono macchine in grado di funzionare in maniera indipendente
Che cos’è la VIRTUALIZZAZIONE ? è una tecnica ideata da IBM negli anni 60 che permette
l’ESECUZIONE di un S.O. come applicazione all’interno di un altro S.O.
La virtualizzazione si appoggia a del SW di EMULAZIONE ( che deve ricreare l’HW “virtualmente”)
Macchina Virtuale ( o virtual machine) è un programma che ricrea l’HW ideale per eseguire del SW
compatibile con una macchina fisica che non è quella della macchina di riferimento. La virtual machine
prende parte delle risorse reali per garantire l’HW IDEALE. Questo compito spetta ad un HYPERVISOR (
Virtual Machine Manager)
Il CLOUD COMPUTING sfrutta la VIRTUALIZZAZIONE .
Che cosa sono gli ASIC? sono dei SISTEMI di tipo EMBEDDED ( Application Software Integrate Circuit ) .
Sono sprovvisti di S.O.
CAPITOLO 2 – STRUTTURA del SISTEMA OPERATIVO
Qual è la differenza tra CLI e GUI ? CLI : command line interface / GUI Graphic User Interface
Che cos’è una SHELL ? è un interprete di comando ( permette l’interfacciamento con l’USER)
sono
Che cosa sono le SYSTEM CALLS? semplici istruzioni che permettono l’interfaccia tra USER
PROCESSES e SERVIZI DEL S.O.
Quanti tipi di System Calls abbiamo? 6 TIPI
1) Syscall di Controllo Processi
2) Syscall di Gestione FILE
3) Syscall di Gestione I/O
4) Syscall di Gestione delle Informazioni
5) Syscall di Comunicazione
6) Syscall di PROTEZIONE
Cosa sono i PROGRAMMI DI SISTEMA? sono programmi appartenenti al S.O. che vanno a supporta
degli USER PROCESSES
Che cos’è il REGISTRY? È un FILE dei sistemi operativi WINDOWS che contiene INFORMAZIONI DI STATO
relative ai programmi installati.Più programmi installeremo , più si ingrandirà.
Che cosa sono i DAEMON ? sono servizi che vengono eseguiti in BACKGROUND
In che linguaggi è scritto un S.O.? Tipicamente con un MIX di linguaggi: Assembly , C ( il Kernel è scritto
in C), e vari altri linguaggi per i programmi di sistema.
SISTEMI A MICROKERNEL ? sono dei sistemi tipicamente implementati su macchine con HW
abbastanza potente. Il s.o. contiene un KERNEL ridotto al minimo ( solo l’indispensabile per GESTIONE
PROCESSI, GESTIONE MEMORIA , GESTIONE COMUNICAZIONE).
Tutto il resto funziona in modalità UTENTE.
Un KERNEL MONOLITICO che cos’è? è un kernel che contiene in un unico file tutte le FUNZIONI
PRIMARIE DEL S.O. compresi i DRIVER delle varie PERIFERICHE.
Linus ad esempio (come windows) è un sistema con KERNEL MONOLITICO composto anche da MODULI
sono dei PEZZI che si aggiungono al KERNEL MONOLITICO per offrire ulteriori funzionalità ( presenti in una
cartella denominata MODULES)
CAPITOLO 3 – I PROCESSI
Che cos’è un PROCESSO ? è un programma in esecuzione nella CPU
Esistono 5 STADI di vita per un PROCESSO:
1) NEW IL PROCESSO VIENE CREATO
2) RUNNING IL PROCESSO VIENE ESEGUITO
3) WAITING il processo è in ATTESA
4) READY IL PROCESSO è in attesa di essere affidato ad un PROCESSORE
5) TERMINATED IL PROCESSO termina la propria esecuzione
Che cos’è il PROCESS CONTROL BLOCK ? è un “BLOCCO” contenente informazioni su un PROCESSO (
ogni processo avrà il suo PCB) e accessibile solo dal KERNEL ( risiede in memoria). IL PMB è composto da:
1) STATO DEL PROCESSO
2) NOME DEL PROCESSO (identificato da un numero)
3) CONTESTO DEL PROCESSO (pc e registri della cpu)
4) INFORMAZIONI DI SCHEDULING
5) INFORMAZIONI sulla gestione della memoria
6) Informazioni di contabilizzazione delle risorse
7) Informazioni sull’I/O
Che cos’è il CONTEXT SWITCH? è lo scambio dei processi nella CPU . Come avviene? “SCHEMA PCB0
e PCB1”
JOB QUEUE la coda dei processi del sistema
READY QUEUE la coda dei processi in fase di “READY” ( e quindi pronti per essere schedulati)
Devices QUEUE ( o coda dei dispositivi) è la coda dei processi inerenti ai dispositivi di I/O
Esistono 2 tipi di SCHEDULER:
1) Lo scheduler a LUNGO TERMINE è più lento ma efficiente : entra in gioco ogni GROSSO LASSO
DI TEMPO ( fa parte dei SISTEMI BATCH)
2) Lo scheduler a BREVE TERMINE è quello presente nei nostri sistemi operativi (entra in gioco
spesso … è il cosiddetto SCHEDULER DELLA CPU)
2 tipi di PROCESSI:
1) I/O BOUND sono orientati all’INPUT/OUTPUT
utilizzano
2) CPU-BOUND molta CPU e poco I/O ( orientati alla CPU)
Il Sistema operativo deve mescolare in maniera efficiente PROCESSI I/O Bound e CPU Bound
I processi nei dispositivi mobili sono 2:
1) PROCESSO PRINCIPALE maggior dispendio di risorse ( è quello che l’utente visualizza a schermo
nello stato corrente)
2) PROCESSI IN BACKGROUND i processi che pur non essendo visualizzati , sono in esecuzione (
minor dispendio di risorse rispetto al processo principale)
Come vengono creati i PROCESSI ? sono creati talvolta a catena da altri processi ( costituendo un vero e
proprio albero di processi) in legami PADRE E FIGLIO
I processi padre creano dei processi figli . VI E’ un’identificazione per ogni processo tramite un “PI” (
Process Identifier)
Come avviene la condivisione delle risorse tra PADRE e FIGLIO ? può avvenire in 3 modalità:
1) Padre-Figlio condividono le stesse risorse
2) Figli condividono una parte delle risorse del PADRE
3) Padre-Figlio non condividono risorse secondo
Come avviene l’esecuzione dei processi PADRE-FIGLI? 2 modalità possibili:
1) Il padre e i figli vengono eseguiti in maniera CONCORRENTE
2) I Figli vengono eseguiti PRIMA DEL PADRE. IL PADRE ATTENDE PRIMA DI ESSERE ESEGUITO
Come avviene la gestione dello spazio indirizzi per PADRE-FIGLI? secondo 2 modalità:
1) Il figlio è un DUPLICATO DEL PADRE
2) Nel figlio è stato caricato un diverso programma
Qual è il PROCESSO PADRE a capo dell’albero dei processi in UNIX ? IL PROCESSO “INIT”. Esso ha codice
identificativo “PI” pari a 1.
PROCESSI PADRE-FIGLIO in UNIX
fork() permette di DUPLICARE UN PROCESSO. In questo caso viene duplicato un PROCESSO PADRE in UN
PROCESSO FIGLIO.
Se la FORK mi restituisce ZERO Procedo verso il PROCESSO FIGLIO
Se la FORK mi restituisce un VALORE MAGGIORE di ZERO Procedo verso il PROCESSO PADRE
Se la FORK mi restituisce un valore negativo C’è stato un ERRORE
exec() manda in esecuzione il processo figlio. Durante l’esecuzione il PADRE è il “wait()” attende la
morte del figlio per essere eseguito.
exit() è una syscall mandata da un PROCESSO AL SISTEMA OPERATIVO per avvertirlo della sua
TERMINAZIONE
Che cos’è la SYSCALL abort()? è una system call che permette ad un PROCESSO PADRE di UCCIDERE UN
PROCESSO FIGLIO ( o per lo meno permette di terminare in maniera forzata un processo)
Cos’è un Processo ZOMBIE? è un processo che pur avendo terminato la sua ESECUZIONE , serve ancora
al PADRE ( per cui possiede ancora un PI e un PCB di riferimento).
Il Padre ottiene un RISULTATO da un processo figlio al termine della WAIT().
Che cosa succede se un processo padre muore prima del processo figlio ? il processo figlio diventa un
PROCESSO ORFANO.
Che cos’è l’INTER PROCESS COMMUNICATION o IPC ? è la parte del SISTEMA OPERATIVO che
GARANTISCE LA COMUNICAZIONE TRA I PROCESSI
In che modo può avvenire la comunicazione tra processi? IN DUE MODALITA’:
1) SCAMBIO MESSAGGI (MESSAGE PASSING) i processi si scambiano messaggi di tipo mittente-
destinatario ( usato ed efficiente nei sistemi MULTICORE). AVVIENE IN 2 STEPS:
a) SEND MESSAGE ( viene inviato un messaggio con dimensione FISSA o VARIABILE)
b) RECEIVE MESSAGE ( viene ricevuto il messaggio inviato)
I due passi possono avvenire secondo 2 modalità:
COMUNICAZIONE DIRETTA NAMING ESPLICITO I PROCESSI NOMINANO ESPLICITAMENTE
con chi devono scambiare messaggi. I processi devono CONOSCERSI NECESSARIAMENTE.
COMUNICAZIONE NON DIRETTA c’è una MAILBOX dopo vengono messi i messaggi . I due
processi non devono necessariamente “CONOSCERSI” per comunicare
2) SHARED MEMORY ( o MEMORIA CONDIVISA) è il sistema di COMUNICAZIONE TRA PROCESSI
più UTILIZZATO IN ASSOLUTO. Viene utilizzato quando la memoria principale ( a livello fisico) è
EFFETTIVAMENTE CONDIVISA)
MEMORIA con SCAMBIO MESSAGGI: MEMORIA CON SHARED MEMORY:
Quando due processi si dicono COOPERANTI ? quando si scambiano dati e sono INFLUENZATI l’uno
dall’altro.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti completi di Architettura dei calcolatori e sistemi operativi
-
Appunti Sistemi operativi
-
Sistemi operativi - Appunti
-
Sistemi operativi - Appunti