HACKING 120% {Hacking, programmazione, computer & molto altro}

Schedulazione

« Older   Newer »
  Share  
view post Posted on 7/9/2013, 14:12     +2   +1   -1

Utente

Group:
Utenti UP
Posts:
43
Reputation:
0
Location:
Kernel.

Status:


Schedulazione Dei Processi
Nel sistema a singola CPU, potendo eseguire un solo processo alla volta, gli altri processi devono attendere che la CPU sia libera per poter essere assegnata ad uno di loro.
Lo scheduling è una tecnica di allocazione delle risorse utilizzata dai sistemi operativi, per gestire le richieste derivanti da più processi che concorrono per il loro utilizzo.
Esso mira a rendere il sistema:
 >efficiente
 >produttivo
 >veloce nelle risposte

Gli algoritmi (o politiche) di scheduling della CPU basano le proprie scelte sulle informazioni contenute nei descrittori di processo (PCB) in riferimento
ai seguenti obiettivi:
 1)massimizzare
- il throughput (produttività)
- l’utilizzo della CPU (efficienza)
 minimizzare
- l’overhead (spreco di risorse)
- il tempo di turnaround (completamento)
- il tempo di risposta
- il tempo di attesa
 2)garantire
- fairness (equità)

Ma cosa è un descrittore?
In un sistema multiprogrammato è necessario mantenere memorizzate le informazioni relative ai diversi stati in cui i processi vengono a trovarsi durante il loro ciclo di vita.
Pertanto, ad ogni processo il S. O. associa una struttura dati, detta descrittore di processo o Process Control Block (PCB), nella quale vengono registrate una serie di informazioni utili per la gestione dello stesso processo.
Quindi in poche parole, un descrittore è una "tabella" che contiene delle informazioni riguardanti un processo:
>il nome del processo (PID)
>lo stato del processo
>il contenuto del program counter
>contesto del processo
>informazioni di scheduling
>informazioni sulla gestione della memoria
>utilizzo delle risorse
>informazioni di contabilizzazione

Ma sappiamo cosa è in poche parole un processo?
Un processo è un programma (o una parte di programma) che è caricato (quindi risiede) nella memoria centrale (RAM).
Qualsiasi altra cosa che non è caricata sulla ram, non è un processo!
Un processo per poter lavorare deve essere PERFORZA sulla ram.
(Oppure in alcuni casi su una parte di HD chiamata memoria virtuale che magari spiegherò più avanti).
E' inoltre bene sapere che un processo ha degli "stati" in cui si può trovare:
nuovo: il processo viene creato
pronto: il processo è pronto per l’esecuzione
in esecuzione: il processo è in esecuzione
bloccato: il processo è in attesa di un evento
terminato: il processo rilascia la risorsa processore



Tornando alla schedulazione, ci sono 3 tipi di schedulazione:
-Breve termine - Riguarda i processi nella coda dei pronti.
-Medio termine - Riguarda i processi sulla memoria virtuale.
-Lungo termine - Riguarda tutti i possibili processi che potranno essere eseguiti.

La schedulazione, utilizza diversi tipi di algoritmi per scegliere quale processo mandare al processore.
Vediamone alcuni semplici:

CFFS:First Come First Served: Ovvero il primo processo che arriva, è il primo a entrare (FIFO).
SJF: Shortest Job First: Ovvero il processo che richiede minor tempo di utilizzo della CPU sarà il primo a entrare.
Priorità: A ogni processo viene assegnata una priorità (O dal programmatore o dall'S.O). Quello con priorità più alta sarà il primo ad essere assegnato.
Round Robin: Il primo processo che arriva viene dato alla CPU e gli si da un tempo random in cui lavorare, se in questo tempo non ha finito i suoi compiti, viene tolto dalla CPU e viene assegnato un nuovo processo.

Sulla schedulazione dei processi ci sono altre millemila cose da dire che non metto altrimenti verrebbe un papirone più di quanto non lo sia di già.

Spero che la guida sia stata utile ed esauriente.

Fonti: Me + Mie slide date a scuola + Google Immagini.
Slide usate per alcune definizioni specifiche che non si possono dire a parole proprie.
 
Top
RootkitNeo
view post Posted on 7/9/2013, 21:53     +1   +1   -1




Il processo in Windows è una specie di contenitore, con il programma vero e proprio ed altre informazioni.
 
Top
view post Posted on 8/9/2013, 10:43     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Mi spieghi meglio il round robin? Non ne sapevo niente al riguardo.. :)
 
Web  Top
RootkitNeo
view post Posted on 8/9/2013, 11:02     +1   -1




In pratialterna le attività e le esegue dando un tempo a ciascuna di esse. Puo sfruttare una FIFO oppure concedere l esecuzione in base alle priorità
 
Top
view post Posted on 8/9/2013, 11:11     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


CITAZIONE
Round Robin: Il primo processo che arriva viene dato alla CPU e gli si da un tempo random in cui lavorare, se in questo tempo non ha finito i suoi compiti, viene tolto dalla CPU e viene assegnato un nuovo processo.

E' questo che non capisco.
Pensavo che in un computer oltre alla libreria non ci fosse null'altro di random (e la stessa libreria non è random).
 
Web  Top
view post Posted on 8/9/2013, 11:25     +1   -1

Utente

Group:
Utenti UP
Posts:
43
Reputation:
0
Location:
Kernel.

Status:


CITAZIONE (Wet Water @ 8/9/2013, 12:11) 
CITAZIONE
Round Robin: Il primo processo che arriva viene dato alla CPU e gli si da un tempo random in cui lavorare, se in questo tempo non ha finito i suoi compiti, viene tolto dalla CPU e viene assegnato un nuovo processo.

E' questo che non capisco.
Pensavo che in un computer oltre alla libreria non ci fosse null'altro di random (e la stessa libreria non è random).

Scusa missa' che non mi sono spiegato molto bene io!
Random nel senso che è scelto dal costruttore/programmatore o dal sistema operativo.
Una volta scelto rimane sempre uguale!
Random perché in alcuni sistemi operativi può essere (per esempio) 1secondo (ovviamente esempio impossibile) mentre in altri 2 secondi.
Random non che cambia per ogni singolo processo!

Ps:

Ovviamente per adottare una politica Round Robin è necessaria una schedulazione di tipo Preemptive e necessita un Context switch veloce!
 
Top
RootkitNeo
view post Posted on 8/9/2013, 12:52     +1   +1   -1




CITAZIONE (Wet Water @ 8/9/2013, 12:11) 
E' questo che non capisco.
Pensavo che in un computer oltre alla libreria non ci fosse null'altro di random (e la stessa libreria non è random).

Ti ho spiegato come funziona in due righe li sopra. La CPU switcha tra uno e l'altro quando c'è un singolo processore, in caso di più processori i thread possono essere eseguiti anche su due processori (questo su Windows, in particolare).

Quando c'è un singolo processore le cose sono diverse e viene assegnato un tempo al processore per eseguire i programmi, in questo modo switcha tra un programma ed un altro e si ha la sensazione che i programmi vengono eseguiti parallelamente. Sono state introdotte diverse strutture in passato, come le pipeline. In pratica, detto in due parole, ci sono diversi tempi di attesa e grazie alla pipeline vengono sfruttati quelli che altrimenti sarebbero i "tempi morti" del processore. Ad esempio la fase di caricamento degli operandi e dei dati occupa un determinato tempo ed alcuni circuiti; nel frattempo però può eseguire altre operazioni con altri programmi.

A velocizzare il lavoro c'è anche la cache memori, la L1 in particolare ma anche la L2.
 
Top
6 replies since 7/9/2013, 14:12   98 views
  Share