Ogni macchina dotata di software funziona grazie a quello che si definisce sistema operativo. Questo è la colonna portante di qualsiasi hardware configurato, quello che sorregge le varie applicazioni e il loro utilizzo, dotandolo anche di una UI (User Interface), che lo rende riconoscibile.
Bisogna pensare al computer come a un complesso calcolatore, un insieme di numeri e operazioni avanzate a cui l’utente affida dei compiti da svolgere. Il sistema operativo è una semplice interfaccia utente-macchina che permette il suo utilizzo anche da parte dei soggetti meno esperti in materia.
La struttura dei SO: kernel e scheduler
Ogni sistema operativo ha come nucleo il kernel, che contiene le funzioni fondamentali come l’avvio, la prima configurazione e lo spegnimento, e favorisce l’accesso a tutte le altre funzioni dell’hardware. Esistono vari tipi di kernel, più semplici e più complessi, che devono essere costantemente aggiornati e mantenuti onde evitare errori e vulnerabilità.
Un altro componente fondamentale è lo scheduler, particolarmente importante sui sistemi multitasking, ossia quelli capaci di avviare più applicazioni contemporaneamente. Per fare un esempio pratico, un qualsiasi computer Windows configurato per le operazioni di lavoro ha sia un kernel che uno scheduler. Quest’ultimo si occupa anche di monitorare le risorse utilizzate dalle applicazioni, mettendo in background quelle inutilizzate.
Nella parte più “esterna” si trovano i componenti dedicati alla memoria di massa, al gestore di memoria e la stessa UI a cui accennavamo prima, che permettono al computer operazioni di calcolo in modo che possa avviarsi, utilizzare risorse e comunicare con l’utilizzatore.
Il linguaggio dei sistemi operativi
Come abbiamo detto, non tutti i sistemi operativi sono uguali. Al contrario, esistono tanti tipi di SO con ulteriori sotto-varianti di se stessi, studiate per svolgere compiti diversi. Ogni SO è costruito con un linguaggio di programmazione vero e proprio e può funzionare solo in quel linguaggio.
Il più comune è quello conosciuto come C. Si tratta di un linguaggio procedurale, fondamentalmente basato su una lunghissima serie di espressioni matematiche e operazioni logiche svolte in sequenza. È quello che si definisce un “linguaggio strutturato”, cioè che vincola il programmatore a usare canoni e teoremi predefiniti. Tutti i sistemi più usati (in particolare Microsoft) sono costruiti con C e con C++.
Contemporaneamente a C, negli anni Sessanta nacque UNIX. A differenza del suo coetaneo, si tratta di un “linguaggio di scripting”, cioè studiato per automatizzare processi lunghi e ripetitivi. La portabilità di UNIX e la creazione di GNU (sostanzialmente un clone, ma senza alcun tipo di limitazione), lo hanno reso uno dei linguaggi più apprezzati in ambito di programmazione. I sistemi operativi come Linux lavorano essenzialmente in UNIX.
Infine, tra i linguaggi più noti sorge inevitabilmente Python. Trattasi di un linguaggio relativamente giovane e particolarmente rivoluzionario, in quanto “orientato agli oggetti”. In sintesi, qualsiasi parola, elemento o concetto può essere trasformato in variabile e inserito in un’operazione matematica/logica, dando totale libertà al programmatore. A differenza di C e UNIX, Python ha diversi punti di forza: è gratuito, è dinamico, può essere integrabile con altri linguaggi e può essere applicato a più campi.
Python è utile per programmare interfacce grafiche e creare siti.
I sistemi operativi più utilizzati
Chiunque tra noi abbia un computer o un tablet, sa che ognuno di essi corre su un sistema operativo specifico. Mediamente, un desktop domestico moderno utilizza Windows 8/10, mentre i portatili più avanzati utilizzano macOS (variante di UNIX); l’utilizzo di questi sistemi permette all’utente di svolgere numerosissime attività e, sebbene le loro UI siano totalmente diverse, il principio rimane immutato.
Che si tratti di lavoro, svago, creazione di contenuti multimediali o semplicemente web-surfing, i nostri dispositivi riescono a soddisfare tutte le nostre esigenze. Ci sono però sistemi operativi specifici creati unicamente per uno scopo. È il caso, come abbiamo già analizzato, di Linux, Debian e dei loro derivati.
A differenza degli altri sistemi, le “distro” del gruppo UNIX hanno una differenza fondamentale: sono più interattive e sono configurabili da cima a fondo. Se qualcuno volesse cimentarsi nel mondo del penetration testing, questo sarebbe sicuramente un ottimo punto di partenza.
A cura di
Francesco Antoniozzi
FONTI:
CREDITS: