Concetti Chiave

  • Un sistema operativo è un software essenziale che gestisce le risorse hardware e permette di interfacciarsi con il computer.
  • Il kernel rappresenta il nucleo del sistema operativo, gestendo direttamente l'hardware e richiedendo l'uso di linguaggi di basso livello come Assembler e C.
  • Ogni sistema operativo utilizza un filesystem per organizzare e archiviare i file, il quale deve essere compatibile con il kernel e le preferenze degli sviluppatori.
  • L'OS gestisce la RAM per eseguire programmi, caricandoli nella memoria e scaricandoli al termine del loro utilizzo, ottimizzando le procedure di scrittura e lettura.
  • Le interfacce utente possono essere CLI (comandi testuali) o GUI (interfaccia grafica), consentendo all'utente di interagire con il sistema operativo in modi diversi.

Un sistema operativo (abbreviato anche in OS, cioè operating system, oppure SO, vale a dire sistema operativo) è una componente software fondamentale per interfacciarsi con la propria macchina. L' OS (da ora in poi userò questa abbreviazione) è in grado di gestire autonomamente le risorse hardware messe a disposizione dalla macchina, dalle cose più complesse fino a quelle più banali: le applicazioni non vengono installate "sul computer", ma bensì sul nostro OS.

Dunque, un sistema operativo è l'entità software installata direttamente sulla parte meccanica di un computer al fine di gestire tali risorse.

Indice

  1. Il ruolo del kernel
  2. Filesystem e archiviazione
  3. Programmi e RAM
  4. Gestione della RAM e scheduler
  5. Interfacce utente e sistemi operativi

Il ruolo del kernel

Il kernel è il "cuore" di un OS: è l'interfaccia di livello più basso che si occupa di gestire l'hardware. Per adempiere questo compito, i kernel devono essere realizzati in linguaggi di basso livello (molto basso !), poiché tali linguaggi devono essere interpretati "in loco", senza l'installazione di un interprete esterno (che, ironicamente, andrebbe installato su un sistema operativo, che è quello che vorremmo installare !): dunque, per i "moduli" (le parti) kernel fondamentali si è costretti principalmente ad usare l'Assembler, per poi editare alcune parti di livello più software che hardware in C (che è comunque un linguaggio di programmazione di livello non altissimo).

Esistono due kernel principali: il kernel Windows, usato nel sistema omonimo, e il kernel Unix (editato in C !), in passato usato in ambito aziendale e poi riadattato dallo studente universitario Linux Torvalds come open source (codice libero e visibile a tutti) e più moderno e potente, nel 1991, creando il nuovo sistema operativo noto come Linux.

Filesystem e archiviazione

Come qualsiasi bit, un OS, che in fondo è un insieme di file, ha bisogno di uno spazio di archiviazione e installazione: per fare ciò, ogni sistema adotta un determinato "filesystem" (uno stile di organizzazione di file) per, in linguaggio tecnico, formattare un disco rigido e installarvici l'OS sopra. La compatibilità con un determinato filesystem dipende dal kernel e dal desiderio degli sviluppatori di includerlo in esso.

In questo modo, l' OS ha a disposizione uno spazio per archiviare file in maniera permanente (compreso il kernel !)

Programmi e RAM

I programmi sono una "aggiunta" al kernel di base: per questo sono anche chiamati applicativi o applicazioni. I programmi sono scritti per svolgere determinati compiti, e sfruttano il kernel come mezzo per sfruttare le risorse hardware per svolgere tali compiti.

I programmi si presentano in due forme: la forma "passiva", ossia come file statico salvato sull' disco fisso, e forma "attiva" o "in esecuzione": quando il sistema decide che ha bisogno di un programma per svolgere un compito, esegue il file (ogni sistema ha la propria tipologia di file eseguibile): esso viene caricato nella memoria ad accesso casuale (RAM), occupando in essa un proprio "spazio di esecuzione". Dopo questa fase, può eseguire i compiti che per cui è stato designato, fino a quando il sistema decide di "terminare" il processo: quando un processo viene terminato, il programma viene scaricato RAM e torna allo stato di file statico sul disco (il file eseguibile principale non sparisce mai dal disco mentre un programma è in esecuzione, ma non può essere modificato/spostato/cancellato).

Gestione della RAM e scheduler

Collegandosi al paragrafo precedente, la RAM, al contrario di un disco rigido, ha una capienza minore e non si può parlare di scritture e letture in modo classico, perché tutti i dati nella RAM vengono persi quando essa si spegne. Come abbiamo visto, la RAM è destinata ad ospitare i programmi in esecuzione, che una volta avviati vengono caricati nella RAM. Eventuali dati che un programma deve salvare sono scritti sul disco trasferendoli dalla RAM. Ciò risulta comodo perché prima di scrivere un file sul filesystem vorremmo prima modificarlo, e anziché effettuare molte scritture inutili, possiamo direttamente modificarlo nella memoria ad accesso casuale e solo quando abbiamo finito salvarlo sul disco.

L' OS si occupa della gestione automatica di queste procedure, allocando la RAM necessaria a ogni componente del sistema e caricando e scaricando dati da e sul disco fisso.

Infine, l'ultima componente fondamentale di un OS è lo scheduler. Senza che ve ne accorgiate, il vostro sistema non ha un solo programma in esecuzione, ne ha migliaia ; eppure, le CPU in realtà non possono eseguire più compiti contemporaneamente (multitasking). Lo scheduler ferma temporaneamente un processo per eseguire le attività di un altro, ma ciò avviene in tempi talmente infinitesimali e insignificanti, che ci pare effetitvamente di avere più attività in esecuzione.

Interfacce utente e sistemi operativi

Un sistema operativo ha due modi per comunicare con l'utente: un interfaccia da riga di comando (CLI), dove l'utente da comandi manualmente al sistema, e un' interfaccia grafica (GUI), che ci consente di utilizzare funzionalità come mouse, icone, programmi grafici etc.

Per finire, vediamo quali sono i principali sistemi operativi:

Sistema closed source e a pagamento, con un proprio kernel e sviluppato da Microsoft: è il più utilizzato in ambito domestico.

Open source e gratuito da sempre, Linux è basato su un vecchio kernel aziendale, Unix, modificato dallo studente universitario Linus Torvalds. È molto usato in ambito aziendale, in server e infrastrutture internet.

Utilizzato nelle macchine della Apple, anche MacOS è basato su Unix, ma il suo codice non è open source e non è scaricabile senza comprare un computer ufficiale del produttore.

Domande da interrogazione

  1. Qual è la funzione principale di un sistema operativo?
  2. Un sistema operativo gestisce le risorse hardware di un computer e funge da interfaccia tra l'utente e la macchina, permettendo l'installazione e l'esecuzione delle applicazioni.

  3. Che cos'è il kernel e qual è il suo ruolo?
  4. Il kernel è il "cuore" di un sistema operativo, gestisce l'hardware e deve essere realizzato in linguaggi di basso livello, come l'Assembler e il C, per garantire un'interazione diretta con le risorse hardware.

  5. Come vengono gestiti i programmi in un sistema operativo?
  6. I programmi, o applicazioni, vengono caricati nella RAM per essere eseguiti e, una volta terminato il loro utilizzo, vengono scaricati dalla RAM tornando a uno stato di file statico sul disco.

  7. Qual è la funzione dello scheduler in un sistema operativo?
  8. Lo scheduler gestisce l'esecuzione dei processi, permettendo al sistema di eseguire più attività apparentemente contemporaneamente, fermando temporaneamente un processo per dare spazio a un altro.

  9. Quali sono i principali tipi di interfacce utente in un sistema operativo?
  10. Un sistema operativo può comunicare con l'utente tramite un'interfaccia da riga di comando (CLI) o un'interfaccia grafica (GUI), che facilita l'interazione attraverso elementi visivi come icone e programmi grafici.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community