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

Votes taken by xCrew

view post Posted: 7/9/2013, 14:12     +2Schedulazione - Definizioni
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.
view post Posted: 1/9/2013, 21:35     +1Presentazione - Presentazioni
Ciao a tutti, mi chiamo Marco.
Ho 17 anni e studio informatica.
Ho appena finito il 3 anno di ITIS appunto di informatica e a breve incomincerò il 4°.

Quest'anno ho appreso le basi del C++ e della programmazione orientata agli oggetti.
Ho studiato classi (ereditarietà, polimorfismo), vettori, matrici e una base della ricorsione.
Ho anche appreso alcune basi dell'Assembly 8086 con utilizzo di vettori.

Altri argomenti studiati, (sistemi e tecnologie), sistemi operativi con gestione della memoria (algoritmi e tecniche di divisione della memoria), schedulazione (con i vari algoritmi), basi sull'utilizzo e sulle funzioni dei Thread.
Ho anche studiato il funzionamento generale del computer (bus, temporizzazione, architetture) e ho iniziato a studiare le reti, con un introduzione generale e più specificamente il livello Fisico e Data link del sistema ISO/OSI.

In 4° mi aspetta Java, Php, Html e tutti gli altri livelli del sistema ISO/OSI.

Mi sono iscritto per apprendere il più possibile anche al di fuori della scuola.
Spero di condividere le mie conoscenze e imparare anche qualcosa.

Saluti, Marco.
2 replies since 1/9/2013