cerca
Sistemi Operativi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sistemi Operativi

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 3 Sospensione e riattivazione dei processi

Pag 1

Sommario

...

Pag 2

Classificazione dei processi rispetto all'uso delle risorse fisiche cioè figa un po' più lungo ancora e suppa tipo pawwa cazzo

Nel codice di un processo I/O-bound abbiamo molte operazioni di input/output intervallate da poche istruzioni legate al processore; viceversa nei processi CPU-bound (in un caso limite potrei anche non avere mai un'operazione di I/O).

Sono ovviamente delle casistiche estreme, poi esistono le vie di mezzo.

Realizzazione del multi-tasking (1)

L'obiettivo è ovviamente consentire la turnazione dei processi sul processore, massimizzandone lo sfruttamento.

Se ho un processo CPU-bound dovrò effettuare meno turnazioni, in quanto per sua stessa natura darà tanto da fare al processore. Per garantirne invece un discreto utilizzo anche con processi I/O-bound, dovrei eseguirne più di uno. Tutto sta quindi nel "dosaggio" dei processi lanciati, data la loro incidenza sull'omogeneità della loro evoluzione parallela.

Metodologia:

  • sospensione del processo in esecuzione, salvando in modo sicuro lo stato di evoluzione della computazione in modo tale da poter tornare ad eseguire il processo dallo stesso punto in cui l'avevo lasciato
  • ordinamento dei processi in stato di pronto per vedere quale deve essere eseguito per primo (scheduling dei processi) (importantissimo: se sei in inghilterra devi pronunciarlo "sceduling"! se no sono guai grossi :| )
  • selezione del processo in stato di pronto da mettere in esecuzione (dispatching), generalmente il primo della lista dopo l'ordinamento fatto prima
  • riattivazione del processo selezionato

Pag 3

Realizzazione del multi-tasking (2)

Bisogna operare una distinzione tra:

  • politiche, le regole. Non dipendono da come sarà realizzata la turnazione, ma permette di fare delle scelte su come dovrà essere
  • meccanismi, ovvero le operazioni per realizzare le politiche, la cui scelta non sarà fatta a seconda dei casi, ma sempre allo stesso modo. Saranno dunque caratterizzati esclusivamente dal processore e dalla struttura dati utilizzata

Politiche di sospensione dei processi nel multi-tasking

Il processo in esecuzione può essere sospeso in modo implicito (effettuato automaticamente dall'ambiente operativo) o esplicito (è il processo che richiama volontariamente l'operazione di rilascio del processore).

Modo implicito:

  • dopo aver effettuato una richiesta di I/O, tipica di tutti i sistemi operativi. E' cosa saggia perché tiene conto del fatto che generalmente a una chiamata I/O segue un tempo di attesa legato ai tempi elettro-meccanici di esecuzione dell'operazione richiesta
  • dopo aver creato un sottoprocesso attendendone la terminazione

Modo esplicito:

  • quando rilascia volontariamente il processore

Tutte le volte che avverranno uno di questi tre casi, il processore verrà SEMPRE rilasciato su quel punto del processo (che viene dunque sospeso).

La sospensione in questi casi è sincrona con l'evoluzione della computazione in procedure del sistema operativo; avviene infatti sempre su una funzione del sistema operativo (non dell'applicazione), quindi con il processo in esecuzione nella modalità supervisor, non utente.

Pag 4

Time Sharing (1)

La tecnica del Time Sharing è stata introdotta per dare l'illusione al processo di di possedere il processore tutto per se. Quest'illusione è creta tramite la turnazione dei processi sul processore facendo credere quindi di far evolvere contemporaneamente le computazioni desiderate. Il problema sorge sui processi CPU-bound i quali non rilasciano di frequente il processore, facendo perdere di conseguenza tale illusione. Una soluzione valida è di forzare il rilascio del processore (pre-emption).

Time Sharing (2)

...

Pag 5

Time Sharing (3)

Il realtime clock è il dispositivo fisico che scandisce il tempo generando periodicamente una interruzione che segnala che è passato un certo intervallo di tempo. E' sostanzialmente un chip sulla scheda madre, contenente un cristallo che viene fatto oscillare in modo estremamente stabile con segnali elettrici.

Il periodo di oscillazione è segnalato nel manuale del calcolatore, e in qualche caso è anche programmabile.

Se il periodo RTC è troppo breve vado incontro a un sovraccarico di gestione dell'interruzione, perché avrei richieste di rilascio incredibilmente frequenti. Quindi moltiplico tale periodo per un fattore k, in modo che solo un'interruzione ogni k viene considerata come termine del quanto di tempo, e quindi solo questa scatenerà la rimozione del processo in esecuzione (con una pre-emption)

Politiche di sospensione dei processi nel time-sharing

In sistemi time-sharing, oltre alle politiche di sospensione dei processi viste prima se ne aggiunge una quarta, ovvero sospensione quando scade il quanto di tempo. E' anch'essa implicita, è asincrona (perché è fuori dal controllo del programmatore) e garantisce che ci sia un'equa distribuzione dei tempi di calcolo.

Pag 6

Sospensione del processo in esecuzione

...

Riattivazione del processo

...

Pag 7

Cambiamento del processo in esecuzione (1)

...

Cambiamento del processo in esecuzione (2)

...

Pag 8

Dispatching del processo per esecuzione

...


Torna alla pagina di Sistemi Operativi