Crea sito

Linux Cap 1: Panoramica Generale

12 / 100

L’architettura di base.

Contrariamente ad altri sistemi operativi, GNU/Linux nasce, come tutti gli Unix, come sistema multitasking e multiutente.

Questo significa che GNU/Linux ha un’architettura di sistema che e stata pensata n dall’inizio per l’uso contemporaneo da parte di piu utenti. Questo comporta conseguenze non del tutto intuitive nel caso in cui, come oggi accade sempre piu spesso, esso venga usato come stazione di lavoro da un utente singolo.

Il concetto base dell’architettura di ogni sistema Unix come GNU/Linux è quello di una rigida separazione fra il kernel (il nucleo del sistema), cui si demanda la gestione delle risorse hardware (come la CPU, la memoria, le periferiche) ed i processi, (le unita di esecuzione dei programmi), che nel caso vanno dai comandi base di sistema, agli applicativi, alle interfacce per l’interazione con gli utenti.

Lo scopo del kernel infatti è solo quello di essere in grado di eseguire contemporaneamente molti processi in maniera efficiente, garantendo una corretta distribuzione fra gli stessi della memoria e del tempo di CPU, e quello inoltre di fornire le adeguate interfacce software per l’accesso alle periferiche della macchina e le infrastrutture di base necessarie per costruire i servizi.

Tutto il resto, dall’autenticazione all’interfaccia utente, viene realizzato usando processi che eseguono gli opportuni programmi.

Questo si traduce in una delle caratteristiche essenziali su cui si basa l’architettura dei sistemi Unix: la distinzione fra il cosiddetto user space, che è l’ambiente a disposizione degli utenti, in cui vengono eseguiti i processi, e il kernel space, che e l’ambiente in cui viene eseguito il kernel.

I due ambienti comunicano attraverso un insieme di interfacce ben definite e standardizzate; secondo una struttura come quella mostrata in figura

Questa architettura prevede che solo il kernel viene eseguito in modalità privilegiata, ed e l’unico a poter accedere direttamente alle risorse dell’hardware.

I normali programmi invece vengono eseguiti in modalità protetta, in un ambiente virtuale, l’user space, in cui essi vedono se stessi come se avessero piena disponibilità della CPU e della memoria, ma in cui possono accedere alle periferiche e alle altre funzionalità messe a disposizione del kernel solo attraverso una serie di funzioni di sistema standardizzate, dette system call.

Lo standard in questo caso si chiama POSIX.1; ma oltre a quelle dello standard Linux supporta ulteriori system call, relative a sue estensioni specifiche.

Le system call e tutta una serie di ulteriori funzioni di base sono tradizionalmente raccolte in un’unica libreria che pertanto diventa essenziale per il funzionamento di qualunque programma è la GNU C library (chiamata in breve glibc), che costituisce una delle parti fondamentali del sistema.

In sostanza quello che succede è che l’unico vero programma che viene eseguito e’ il kernel, che si incarica di costruire questo ambiente virtuale in cui far girare gli altri programmi.

Una parte del kernel, come lo scheduler, deputato della gestione del tempo di processore, provvederà a decidere volta per volta qual e il processo che deve essere eseguito in un determinato momento (realizzando cos il multitasking).

Una seconda parte,come la VM (sigla che sta per Virtual Memory), si occupa invece di gestire l’uso della memoria disponibile.

La memoria virtuale e uno dei sottosistemi più importanti del kernel, oggetto di continui miglioramenti in quanto critico per tutte le prestazioni del sistema, perchè e quella che fa in modo che ogni processo veda uno spazio di indirizzi proprio che poi viene rimappato nella memoria fisica e effettivamente presente, così che sia impossibile che un processo possa accedere alla memoria di un altro processo.

La memoria virtuale si incarica anche di gestire, in caso di esaurimento della RAM, l’eventuale spostamento delle pagine di memoria meno usate su uno opportuno spazio disco (lo swap,) evitando di fermare l’esecuzione di un processo per una temporanea mancanza di memoria.

Infine c’e un’ultima parte del kernel,con l’indicazione generica driver anche se in realtà non e un unico sottosistema come le precedenti ma, un insieme di n\moduli” che consentono la gestione delle varie periferiche, fornendo un accesso alle stesse per conto dei programmi.

Questa parte, permette di definire una interfaccia di accesso generica per i dispositivi, cui spesso si fa riferimento dicendo che in un sistema unix-like \tutto e un file”.

La conseguenza piu importante di questa separazione fra user space e kernel space e’ che in questo modo non e possibile che un singolo programma possa disturbare l’azione di un altro programma o del kernel stesso, e questo è il principale motivo della stabilità di un sistema Unix nei confronti di altri sistemi in cui i processi non hanno di questi limiti, o vengono, per vari motivi, eseguiti all’interno del kernel.

Translate »