I Processi

Secondo la 'visione del mondo' di Unix, vi sono due componenti del sistema operativo: i processi e i file

Processo

E' l'esecuzione di un programma eseguibile. E' attivo, ha uno stato di esecuzione, consuma risorse come CPU, RAM, disco, rete. Un processo è un gestore di risorse. Il processo non è il programma. Puù processi possono essere instanziati dallo stesso programma e in esecuzione simultanea.

Il sistema Unix/Linux è:

  • Multiuser - naturalmente più utenti possono essere simultaneamente connessi al sistema ed avere attività in corso
  • Multiprocesso - più processi sono in esecuzione simultanea, ciascuno con la propria identità
  • Multitasking - ogni processo è schedulato su più CPU, ed e composto da sottounità, dette task o threads, eseguite indipendentemente e simultaneamente

I processi non devono essere totalmente isolati, è previsto che i processi comunichino tra loro, tramite più dispositivi di sistema, collettivamente noti come Inter Process Communication.

Nei Linux moderni, i servizi sono costituiti da Cgroups, gruppi di processi in cooperazione tra loro.

File

E' qualsiasi elemento venga gestito da un processo, in due modi: lettura o scrittura.

Non vengono coperti solo i file tradizionali, ma anche i dispositivi periferici, le reti, i terminali, ecc.

Tutto quello che non è un processo è un file. Tutto quello che viene gestito con le funzioni primitive di sistema dei file, è un file.

Ciò significa che vi possono essere anche file, cosiddetti esotici, che non occupano spazio disco, ma sono comunque gestiti come file.

I file sono mantenuti in un File System, che può corrispondere ad una partizione disco, più partizioni, essere remoto in rete, essere anch'esso esotico.

Si è ottenuta col tempo una notevole virtualizzazione dei file e file system, con svariati livelli di indirezione prima di arrivare ai very bytes.