CHIARA SALVATORE

Cloud Infrastructure Administrator

Devops Engineer

LinkedIn  Twitter  Delicious  profilo Facebook solo per conoscenti

GNU/Linux: fondamenti di architettura

Il concetto base dell’architettura di ogni sistema Unix come GNU/Linux è quello di una rigida separazione tra il kernel e i processi. Questo si traduce nella definizione di uno User Space e di un Kernel Space.
KERNEL SPACE: E’ l’ambiente in cui viene eseguito il kernel, in modalità privilegiata. Il kernel è l’unico a poter accedere direttamente alle risorse hardware ed ha lo scopo di rendere efficiente l’esecuzione contemporanea di più processi, distribuire tra i processi memoria e tempo di CPU, fornire le interfacce software per l’accesso alle periferiche.
USER SPACE: E’ l’ambiente virtuale in cui vengono eseguiti i normali programmi. Essi si possono interfacciare al kernel attraverso una serie di funzioni di sistema standardizzate dette SYSTEM CALL.
SYSTEM CALL: sono funzioni di sistema raccoltein un’unica libreria che in Linux si chiama GNU C LIBRARY (spesso abbreviata in glibc)

Il kernel può essere suddiviso in tre parti principali:

  • SCHEDULER: gestisce il tempo del processore e decide di volta in volta quale processo deve essere eseguito, è quindi responsabile del multitasking.
  • VIRTUAL MEMORY (VM): gestisce la memoria, facendo in modo che ogni processo veda uno spazio di indirizzi proprio che poi viene rimappato sulla memoria fisica effettivamente presente. Questa gestione evita che un processo possa accedere alla memoria di un altro processo.
    La virtual memory inoltre, nel caso in cui la memoria RAM termini, si prende in carico lo spostamento delle pagine di memoria meno usate su un opportuno spazio disco detto SWAP.
  • DRIVER: è la parte che si occupa della gestione dell’accesso alle periferiche.

Quando avviamo un sistema, il primo programma ad essere eseguito è il BIOS. Esso legge le configurazioni al suo interno e carica quello che viene chiamato un BOOTLOADER. Il bootloader si incarica di recuperare un’immagine del kernel e la esegue. Il controllo quindi passa al kernel, che fa partire la fase di inizializzazione (scansione delle periferiche, lettura tabella delle partizioni, … ) e infine monta il filesystem su cui è situata la directory radice.
Il passo successivo è l’esecuzione del primo processo che darà vita a tutti gli altri: init.
In un sistema GNU/Linux tutti i programmi hanno le stesse caratteristiche: tutti vengono eseguiti dal kernel come processi, tutti usano le system call, e tutti possono richiamare altri processi divenendo “padri” di processi “figli”. Il kernel di per sé non dispone di programmi principali o primitivi, per cui così com’è non risulta troppo utile. Per questo al kernel vengono sempre uniti degli opportuni programmi di gestione e applicativi. L’insieme del kernel (Linux) e dei programmi che vengono selezionati (la maggior parte derivano dal progetto GNU della Free Software Foundation) viene chiamato DISTRIBUZIONE (distro). Si viene a creare quindi una più propriamente detta distribuzione GNU/Linux.

Post correlati

Posted in Computer notes | Tagged , , , , , , , | Leave a comment

Leave a Reply

“Be mindful of the living Force, my young Padawan.”
 Qui-Gon Jinn