JonixLUG Forum

Tecnicherie Generali => GNU-Linux => Topic started by: CrashTest on November 18, 2016, 07:54:43 PM

Title: Gestione dei processi in Linux - Pt. 1
Post by: CrashTest on November 18, 2016, 07:54:43 PM
Gestione dei processi in Linux

1. Cosa è un processo

Un processo è un programma in esecuzione, viene elaborato da un processore sotto la supervisione del Sistema Operativo. La loro gestione è affidata allo scheduler che tramite algoritmi di scheduling ne pianifica l'esecuzione stabilendo un ordine temporale e privilegiando alcune richieste (che rispettano determinati criteri) stabilendo code di priorità. Questa pratica si chiama politica di scheduling. Non scriverò ulteriormente su questo, magari farò un altro thread parlando dei processi in generale :)


1.2. Creazione di un processo

Ora che abbiamo rivisto cosa è un processo vediamo come questo viene creato.
Gli eventi più comuni,a seconda di quello che sceglie il programmatore o scelte fatte dal sistema operativo, che possono dar luogo ad un processo sono:
Condivisione delle risorse:
Esecuzione/sincronizzazione:
1.3. Processi in Linux

Ora che conosciamo le varie modalità di creazione di un processo vediamo come questi funzionano su sistemi Unix/Linux.
Iniziamo col dire che un processo su Linux è caratterizzato dalla sua immagine.

L'immagine di un processo consiste di:

Quando un processo viene creato a questo e? assegnato uno spazio virtuale degli indirizzi (virtual address space). Questo spazio è usato dal processo durante tutta la sua esecuzione.
Le informazioni di sistema relative ad un processo sono invece mantenute in due aree: l' user space e la process table.
L' user space di un processo e? localizzato al termine della parte superiore dell’address space del processo ma, tranne in alcune eccezioni (monitor mode) questo non è accessibile. Contiene:

Ci tengo inoltre a sottolineare che questa area può essere sottoposta a swap.

La process table contiene le principali informazioni mantenute dal sistema operativo rispetto ad ogni processo. È situata nella memoria del kernel del sistema operativo e non puo? essere sottoposta a swap. Ogni ingresso (entry) della tabella contiene:

Nei sistemi Unix/Linux per vedere le informazioni contenute nella process table e nell' user space è possibile usare il comando: ps.

1.4. Struttura della memoria

Lo spazio di indirizzi virtuale di un processo e? diviso in segmenti, cioe? un insieme di indirizzi virtuali ai quali il processo puo? accedere. Se tenta di accedere in zone di memoria che non gli competono questo processo vai in SegFaul (Segmentation Fault). Solitamente un programma (parlerò di quelli scritti in linguaggio C) viene suddiviso nei seguenti segmenti:
Su questo ci sarebbe molto molto altro da dire in quanto al di là di spazi di memoria sono anche strutture dati, magari potremmo discuterne

P.S.: Mi scuso per eventuali errori e differenze tra i caratteri ma con questo editor è molto difficile scrivere un testo formattato. Sto riportando il tutto in un documento LaTex, magari se vi interessa, al termine pubblicherò un pdf.
P.P.S.:Nella prossima parte vedremo le syscall utilizzate per gestire i processi. Attendo commenti per capire se un argomento del genere possa interessare al forum
Title: Re:Gestione dei processi in Linux - Pt. 1
Post by: davenull on November 19, 2016, 12:02:07 AM
sisi sono tutti argomenti interessanti per chi non li conosce, popoliamo il forum di contenuti utili come questo, complimenti :)
Title: Re:Gestione dei processi in Linux - Pt. 1
Post by: NebulasIT on November 19, 2016, 08:48:25 AM
Si interessa, complimenti  ;D
Title: Re:Gestione dei processi in Linux - Pt. 1
Post by: lynx on November 19, 2016, 11:59:36 AM
Interessa,
se vuoi finalizzarla su un pdf o simili fai bene a farla controllare anche ad altri.. se no ti tocca fare le release :)
Title: Re:Gestione dei processi in Linux - Pt. 1
Post by: CrashTest on November 19, 2016, 05:17:54 PM
You are not allowed to view links. Register or Login
Interessa,
se vuoi finalizzarla su un pdf o simili fai bene a farla controllare anche ad altri.. se no ti tocca fare le release :)
Certo che la farò controllare xD Penso di postarla anche qui non appena arriverà ad un buon punto :D Grazie a tutti