Prima Lezione: I processi (Due Ore) Processo = Programma in esecuzione Cosa c’è in più? Da cosa è caratterizzato un programma ? Da cosa un processo (Natura dinamica del processo) Per capirlo vediamo un esempio Programma: Solo il codice... SPOSTA ACC1, [101] MOLTIPLICA [110] GO TO 100 MOLTIPLICA [111] STOP Processo 1. Codice 2. Caricato in Memoria Indirizzo Contenuto 000 SPOSTA ACC1, [101] 001 MOLTIPLICA [110] 010 GO TO 100 011 MOLTIPLICA [111] 100 STOP 101 12 110 5 111 7 3. In esecuzione.... COME NELLA VERIFICA DI SISTEMI... sto eseguendo un fetchdecode execute di un'istruzione..... il valore dei registri sta cambiando passo passo.... Che differenza c'è? → Natura dinamica del processo NOTA AD UN PROGRAMMA POSSONO VENI ASSOCIATI PIù PROCESSI.... ogni esecuzione di un programma dà luogo ad un processo che nasce nel momento in cui inizia l'esecuzione e muore nel momento in cui questa termina Il SO deve mantenere memorizzati per ogni processo in esecuzione tutte le informazioni che riguardano l’evoluzione del processPCB PCB: Che cos’è quali info contiene da chi è gestito (SOControllore del traffico) PCB: struttura dati del SO che mantiene memorizzate informazioni sul singolo processo in esecuzione PCB contiene: o Pid del processo o Stato del processo o Registri della CPU Puntatore area codice Puntatore area dati Program Counter Puntatore allo Stack (area Heap) o Registro di stato o Informazioni di scheduling (statistiche sui tempi di I/O e cpu passati, priorità del processo, tempo di attesa accumulato) o Elenco file aperti STATI DI UN PROCESSO E TRANSIZIONI DI STATO (SCHEMA E SPIEGAZIONE → VEDI APPUNTI) Operazione di context switch: ciò che accade quando bisogna assegnare la CPU ad un altro processo o Come avviene o Salvataggio stato processo che abbandona la CPU o Decisione su quale processo andrà ad occupare la CPU ( invocazione schedulatore dei processi) o Caricamento nei registri delle info contenute nel PBB del processo selezionato Queste operazioni fanno si che per un certo lasso di tempo la CPU venga utilizzata dal sistema operativo e non sia disponibile per i processi (OVERHEAD DI SISTEMA) Seconda Lezione: Il nucleo del Sistema operativo Note: far notare la diversa frequenza con cui vengono invocati scheduler a breve e scheduler a lungo termine e il fatto che uno scheduler a lungo termine controlla il grado di multiprogrammazione del sistema e che deve cercare di mantenere un certo equilibrio tra processi CPU bound e I/O bound Elementi del Nucleo Schedulatore dei lavori Schedulatore a medio termine Controllore del traffico Schedulatore della CPU (trattato nella prossima lezione) Quarta Lezione: Lo schedulatore dei processi Obiettivi di uno schedulatore di CPU… ci servono alcune definizioni di base Definizioni di: Tempo di permanenza nello stato di pronto (tempo di attesa), tempo di turnaround, tempo di utilizzo della CPU, overhead di sistema, troughput (proc completati nell’unità di tempo) Obiettivo Irrinunciabile: Tutti coloro la richiedono devono avere accesso alla cpu in un tempo finito Obiettivi auspicabili: Massimizzare: troughput, tempo utilizzo della cpu Minimizzare: tempo di attesa, tempo di turnaround, overhead di sistema (in contrasto politiche più efficienti sono più dispendiose) Schedulatori Preemptive e non preemptive Scheduling FCFS (libro Hoepli) o è non preemptive o La cpu viene assegnata al processo che si trova nello stato di pronto da più tempo o In presenza di un processo con cicli di CPU molto lunghi il tempo medio passato dagli altri processi in stato di pronto cresce notevolmente Round robin o Versione Preemptive del FCFS o La cpu viene assegnata al processo che si trova nello stato di pronto da più tempo al massimo per T unità di tempo (T è detto quanto di tempo) o Oss. Scelta del quanto… se T troppo alto come FCFS se troppo breve aumenta SJF (libro Hoepli) o La CPU viene assegnata al processo con il ciclo di lavoro in CPU più breve (cioè quello che la occuperà per meno tempo → carrello con meno articoli) o Questo schedulatore garantisce il TEMPO DI ATTESA MEDIO MINIMO o Perché, quindi, non è l'unico? DUE PROBLEMI: problema attesa infinita: Un processo con un ciclo di CPU molto lungo può vedersi continuamente passare avanti da altri processi e non venire mai eseguito (se alla cassa ci si ordina in base al numero di articoli e continua ad arrivare gente con pochi articoli quello con il carrello pieno non viene mai servito) problema dei tempi di esecuzione: il SO non è un MAGO non può SAPERE PRIMA X QUANTO TEMPO UN PROCESSO OCCUPERA' LA CPU o SOLUZIONI AI PROBLEMI: Problema attesa indefinita: si introduce un meccanismo di “invecchiamento dei processi” ovvero man mano che aspettano si “fa finta” che il loro ciclo di CPU duri di meno in modo da favorirli nella scelta Problema dei tempi di esecuzione: il sistema operativo fa una stima di quanto il processo occuperà la cpu basandosi si come si era comportato in precedenza (esempio della formula...)