L’abc dell’informatica, il sistema operativo (SO).

L’abc dell’informatica, il sistema operativo (SO).

Il sistema operativo (SO) è un software che agisce da tramite tra i componenti (hardware) del computer e l’utente, determinandone il comportamento e fornendo applicativi base per la gestione. I SO nascondono i dettagli tecnici legati allo specifico hardware, rappresentando le informazioni ad un livello meglio comprensibile dall’uomo. Esistono vari tipi di sistemi operativi, i più conosciuti sono: Windows, Linux, Osx, Android.
Personalmente utilizzo Linux per tanti motivi, principalmente è quello di essere Opensource quindi gratuito, comodo se devo operare a livello di sistema, avendo a mia disposizione una shell che fornisce out-of-the-box tanti programmi. I sistemi Unix like, pubblicati sotto varie possibili distribuzioni, hanno la caratteristica comune di utilizzare come nucleo il kernel Linux.

Il Kernel

Il kernel è il cuore del sistema operativo, è quello che ha l’accesso diretto all’hardware. Esso implementa diversi tipi di astrazione per comunicare con l’hardware. L’accesso diretto al kernel da parte dell’utente si ha attraverso la shell dei comandi, sui sistemi Linux digitando all’interno del terminale il comando uname -a si noterà un ouput simile (dipende dal sistema in uso):

kinetic@anemone ~ $ uname -a
Linux anemone 5.5.4-148.current #1 SMP PREEMPT Wed Feb 19 14:18:17 UTC 2020 x86_64 GNU/Linux

La Shell

La shell è un interprete di comandi.
Molto più che una semplice interfaccia tra il kernel e utente, è anche un vero e proprio potente linguaggio di programmazione. Questo perchè è possibile creare dei programmi detti script che al loro interno contengono determinate istruzioni che possono essere chiamate di sistema, la pratica in questione si chiama shell scripting. Uno script di shell può utilizzare virtualmente i comandi, le utility e gli strumenti unix. I costrutti di verifica ed i cicli forniscono ulteriore potenza e flessibilità agli script. Un esempio:

#!/bin/bash

DIR_LOG=/var/log
ROOT_UID=0
LINEE=50
E_XCD=66
E_NONROOT=67

if [ "$UID" -ne "$ROOT_UID" ]
then
    echo "Devi essere root per eseguire questo script."
    exit $E_NONROOT
fi
if [ -n "$1" ]

then
    linee=$1
else
    linee=$LINEE 
fi