cerca
Sistemi Operativi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Return to Sistemi Operativi  (Edit)

Uni.SO-Mod3-Lez3 History

Hide minor edits - Show changes to output

Added lines 53-55:
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)
Deleted lines 57-59:
!!!!Time Sharing (2)
...
Changed lines 38-39 from:
Il processo in esecuzione può essere sospeso in modo implicito (effettuato automaticamente dal sistema operativo) o esplicito (è il processo che richiama volontariamente l'operazione di rilascio del processore).
to:
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).
Added lines 67-70:
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
Changed lines 73-74 from:
!!Pag 6
!!!!Sospensione del processo in esecuzione
to:
!!!!Riattivazione del processo
Deleted lines 75-77:
!!!!Riattivazione del processo
...
Added lines 60-66:
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
Deleted lines 68-70:
!!!!Politiche di sospensione dei processi nel time-sharing
...
Added lines 58-82:
!!Pag 5
!!!!Time Sharing (3)
...

!!!!Politiche di sospensione dei processi nel time-sharing
...

!!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
...
Added lines 1-59:
(:title Sistemi Operativi:)
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
----

%titolo%''':: Appunti caotici ::'''

%center%%sottotitolo%Lezione 3
%center%%sottotitolo%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 dal sistema 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)
...

!!!!Time Sharing (2)
...

----
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]