back
Meccanismi di base

Vediamo per cominciare quali sono gli strumenti essenziali che accomunano i kernel moderni, se l'intenzione fosse quella di creare un supporto minimale dovremmo identificare un numero esiguo di meccanismi da includere in esso.
Gli obiettivi principali di un Sistema Operativo generico sono due: amministrare le risorse del calcolatore e fornire una piattaforma di supporto per i compiti che l'utente intende svolgere. Tutto ciò si traduce in un primitivo meccanismo che permetta l'esistenza di una "istanza di lavoro" e in uno strumento che permetta la corretta gestione dei dispositivi presenti all'interno del calcolatore.

Il processo

Ciascun moderno Sistema Operativo esporta un concetto fondamentale: il processo. Tramite tale nozione si implementano caratteristiche molto importanti, prima fra tutte la multiprogrammazione; ovvero la possibilità di eseguire più compiti in parallelo dando l'illusione all'utente che il tutto stia avvenendo contemporaneamente, pur avendo a disposizione un solo processore.

Il processo è la trasposizione del concetto di lavoro o task in ambito informatico, esso rappresenta un compito da portare a termine nella sua interezza. Tale entità sarà perciò composta dal suo codice (l'insieme di istruzioni da eseguire), dai suoi dati e dalle informazioni aggiuntive utili al suo impiego; esse riguardano principalmente i file aperti (ovvero i dispositivi in uso dal programma) e le indicazioni relative alla schedulazione del processo stesso.

Sarà compito del kernel fornire il supporto più completo possibile al processo, le implicazioni principali sono le seguenti:

Per la CPU

  • creazione e terminazione;
  • cambio di contesto (cambio del processo in esecuzione sulla CPU);
  • schedulazione;
  • comunicazione interprocesso (tramite IPC o memoria condivisa).

Per la memoria

  • allocazione (creazione) degli spazi necessari ai processi;
  • deallocazione degli spazi relativi ai processi esauriti;
  • gestione degli spazi associati e liberi.

Unix rappresenta il processo come una struttura, definita PCB (Process Control Block), realizzata tramite il linguaggio C; in essa sono contenuti i puntatori agli spazi di memoria in cui alloggiano tutte le informazioni appartenenti al processo stesso. In questo modo ciascun processo appare come una entità autonoma e completa, una scatola chiusa nel cui interno vi è tutto il necessario.

back