Umberto

Tecnico applicazioni web

Linux Shell e Kernel

Riprendiamo gli articoli sul sistema operativo del “pinguino

Linux Shell e Kernel

Domanda: l’aspetto di un sistema operativo quale è?

In Windows 10 risponderemo che ci sono le App, la barra delle applicazioni, il tasto start, la scrivania (desktop) eccetera.. e Linux? Beh, possiamo dire che è “invisibile”!

Questa affermazione è corretta in quanto Linux non è un sistema operativo vero e proprio, ma un kernel (Kernel = nocciolo, parte centrale di un sistema operativo) che coordina tutte le altre parti, e le mette in comunicazione con l’hardware della macchina. Anche Windows ovviamente ha un Kernel.

Diciamo, semplificando, che il compito del Kernel sia quello di “manovrare” l’hardware della macchina (processore, memoria, scheda video, dischi rigidi, mouse, tastiera ecc…), a seconda delle esigenze del software (i programmi che girano sul computer). Bisogna specificare che: il kernel non comunica direttamente con l’utente!

Il kernel non sceglie cosa disegnare sullo schermo, nemmeno interpretare ciò che scrive l’utente, o andare a vedere dove ha fatto clic con il mouse. Per svolgere questi compiti (che sono indispensabili) è necessario che un’apposita componente del sistema “usi” il kernel per manovrare la scheda video, ad esempio, per far comparire sullo schermo lo sfondo con le icone e tutto il resto; o ancora, questo programma dovrà chiedere al kernel la posizione del mouse ogni millisecondo, in modo da poter raffigurare sullo schermo il cursore, o i tasti premuti dall’utente sulla tastiera per scrivere sul monitor quanto è stato digitato.

schema-shell

Questo tipo di programma si chiama shell (che in inglese significa “conchiglia”, per indicare come questo componente stia all’esterno del sistema). La shell è quella parte del sistema operativo che riceve i comandi direttamente dall’utente, e li trasforma in istruzioni per il kernel (che a sua volta attiverà correttamente l’hardware per eseguire i comandi ricevuti).

Ecco alcune shell

hell-windows10

Shell Windows 10

Su Windows kernel e shell sono come un unico oggetto; in linea di massima, infatti, possiamo dire che l’interfaccia grafica di Windows è un tutt’uno con il nocciolo del sistema operativo.

In Linux le cose sono un po’ diverse: kernel e shell sono nettamente separati, tant’è che ne troviamo di diversi tipi ed ognuno può scegliere il proprio ambiente grafico, ognuno con le sue caratteristiche:

Nell’ordine, sopra:

  1. Shell Ubuntu, 
  2. shell-linux-mandriva, 
  3. shell-lxde

Gli utenti più esperti di Linux generalmente hanno una singolare predilezione per le shell testuali “alla vecchia maniera“.

All’epoca di Unix, infatti, chi usava il computer generalmente non lo faceva attraverso un ambiente grafico (la maggior parte dei computer non aveva neppure il mouse), ma lo faceva impartendo dei comandi testuali. Ad esempio, per creare nel proprio spazio una cartella di nome “pluto”, l’utente avrebbe scritto il comando mkdir pluto (mkdir sta per make directory, che in inglese significa “crea cartella”); dopo aver premuto il tasto invio (il nome si riferisce proprio all’invio del comando al sistema) la cartella sarebbe stata creata.

comando-crea-cartella

Comando crea cartella mkdir

La shell testuale di Unix si chiamava sh (intuitivamente il nome sh sta per shell); sh fu riprodotta fedelmente da Stallman e soci, per essere usata nel sistema operativo GNU. Questa riproduzione si chiama GNU Bash, fu usata da Linus Torvalds assieme alle prime versioni di Linux, ed ancora oggi ne è una componente fondamentale.

Il modo più veloce di usare una shell testuale è aprire uno dei tanti emulatori di terminale presenti su Linux. Un emulatore di terminale, come dice il nome, è un programma che simula in una finestra il collegamento di un terminale al sistema Linux; questo collegamento avviene naturalmente utilizzando la shell testuale GNU Bash (per uscire è sufficiente digitare il comando “exit”).

Non pensate che sia uno strumento inutile, ma al contrario, come molti strumenti di Unix, è potente e veloce nell’eseguire le operazioni richieste permettendo la gestione completa del sistema utilizzando solo comandi testuali.

comandi-shell-terminale

 

Crediti: REPNI

Alla prossima

UmMawebdesign