2010-05-01 15 views

risposta

12

La distinzione tra processo e thread è abbastanza universale per tutti i sistemi operativi. Un processo solitamente rappresenta un'unità di esecuzione indipendente con la propria area di memoria, risorse di sistema e slot di programmazione.

Un thread è in genere una "divisione" all'interno del processo - i thread di solito condividono la stessa memoria e le risorse del sistema operativo e condividono il tempo assegnato a tale processo. Ad esempio, quando apri il tuo browser e Microsoft Word, ognuno è un processo diverso, ma le cose che accadono in background (come animazioni, aggiornamenti o backup) possono essere thread.

Un lavoro è in genere un'unità di lavoro a esecuzione prolungata eseguita da un utente. Il lavoro può essere "gestito" da uno o più processi. Potrebbe non essere interattivo. Ad esempio, istruire la macchina per comprimere un file di grandi dimensioni o eseguire uno script di elaborazione su un file di input di grandi dimensioni in genere è un lavoro. La denominazione è relativamente storica: i mainframe utilizzati per elaborare i lavori. Nei sistemi UNIX, molti lavori vengono avviati automaticamente a orari prestabiliti usando cron, quindi si ha la nozione di "cron jobs".

4

Quindi, un processo è un singolo programma. Ha almeno un thread, forse di più. Ogni thread occupa uno slot del programma di pianificazione, ma gli scheduler differiscono nel modo in cui allocano la CPU ai thread; in ogni caso, il punto delle discussioni è lasciare che un processo faccia più cose in parallelo. I thread condividono risorse di sistema di vario tipo, in particolare memoria, file e socket.

Lavori e attività sono concetti shell unix; un lavoro è un processo avviato da una shell ancora in esecuzione, in pausa o in esecuzione in background. Nel manuale bash è presente una sezione lunga sul "controllo dei lavori". Lavoro e compito sono concetti approssimativamente equivalenti.

Problemi correlati