Please enable JavaScript.
Coggle requires JavaScript to display documents.
la gestione del processore - Coggle Diagram
la gestione del processore
il multitasking
Tra i componenti del sistema operativo il primo a essere analizzato è il gestore del processore
Tutti i moderni SO cercano di sfruttare al massimo le potenzialità di parallelismo fisico dell’hardware per minimizzare i tempi di risposta e aumentare il throughput del sistema, ossia il numero di programmi eseguiti per unità di tempo.
l’ottimizzazione del tempo di CPU avviene grazie alla multiprogrammazione
come migliorare la gestione
scheduling dei job: insieme di strategie nella scelta dei programmi da caricare in RAM
scheduling della CPU: insieme di strategie e meccanismi che permettono di assegnare o sospendere utilizzo della CPU
cos'è un processo
Un processo è costituito da una successione di fasi di elaborazione sulla CPU e fasi di attesa per l’esecuzione di operazioni su altre risorse del sistema (operazioni di I/O, di caricamento dati, colloquio con periferiche ecc.) che di fatto lasciano inattiva la CPU
Un processo è un’entità logica in evoluzione
diviso in due parti
il codice (composto dalle istruzioni)
i dati del programma, a loro volta suddivisi in:
diverse variabili
• variabili globali
• variabili locali e non locali delle procedure del
programma, memorizzate in uno stack;
• variabili temporanee introdotte dal compilatore caricate nei registri del processore;
• variabili allocate dinamicamente durante l’esecuzione, memorizzate in un heap
possono cooperare e o essere indipendenti
I sistemi operativi multitasking durante le fasi di attesa mandano in esecuzione sulla CPU altri programmi tra quelli caricati in memoria
portano avanti in parallelo più processi, riducendo al minimo l’inattività della CPU e migliorando così l’efficienza del sistema (nr.o di programmi eseguiti per unità di tempo).
Il parallelismo che si ottiene è virtuale (e non fisico) dato che il processore è uno solo
parallelismo
Possiamo fare quindi una distinzione di parallelismo in:
multitasking: esecuzione di programmi indipendenti sulla CPU e sul processore di I/O
multiprocessing: multiprogrammazione estesa a elaboratori dotati di più CPU e processori di I/O
l'insieme di tutti i dati si chiama: contesto del processo
varia istante per istante a partire dal valore del program counter
un registro che contiene l'istruzione succesiva della cpu che deve eseguire
il program counter è unico nel processo e contiene l'indirizzo di un istruzione del processo che in quel momento è in esecuzione
stato di un processo
può essere nuovo o terminato solo una volta
5 stati
nuovo
esecuzione
attessa
pronto
finito
scheduling
Tra le operazioni che il sistema operativo deve effettuare rientra l’assegnazione della CPU ai processi che sono nella ready list, cioè nella lista dei processi pronti
I meccanismi con i quali i processi vengono scelti prendono il nome di politiche di gestione o di schedulazione (scheduling) e il componente del SO che si occupa di questa gestione si chiama job scheduler.
In un SO con partizione del tempo un solo processo è in esecuzione e tutti gli altri sono posizionati in code, delle quali le due principali:
• la coda dei processi pronti (RL), in cui risiedono i processi caricati in memoria centrale che si trovano nello stato ready;
• la coda di attesa di un evento (WL), dove vengono inseriti i processi in attesa di una particolare risorsa.
con priorità
serve a dare priorità ai programmi più importanti anche se sono più pesanti vengono messi prima di quelli leggeri
FCFS
first come first served, letteralmente "primo arrivato, primo servito"
ha un problema, se un processo si blocca, tutti gli altri si bloccano
algoritmo SJF
shorest job first
ordina i programmi in ordine di tempo
starvation
è un problema dello scheduling con priorità,alcuni processi rimango non svolte
algoritmo RR
round robin, mette in memoria dov'è arrivato con un unità di tempo , mette in coda e svolge piano piano
MLFQ
multiple level feedback queques
FCFS + priorità
ci sono più code che vengono gestite in base alla priorità, non sovraccarica il sistema operativo, le varie code sono divise in livelli e i processi si suddividono in queste , ogni livello equivale a una priorità questo consente la velocizzazione