Un sistema operativo (OS) è il software principale che gestisce l’hardware di un computer e fornisce servizi essenziali per eseguire applicazioni software. È il componente fondamentale che consente agli utenti e ai programmi di interagire con il computer in modo efficiente e sicuro. I sistemi operativi si trovano in una vasta gamma di dispositivi, dai personal computer e server ai telefoni cellulari, dispositivi embedded e supercomputer.
1. Funzioni Principali di un Sistema Operativo
Il sistema operativo svolge diverse funzioni critiche, che possono essere suddivise nelle seguenti categorie:
a. Gestione dei Processi
- Cos’è: Il sistema operativo gestisce la creazione, l’esecuzione e la terminazione dei processi (programmi in esecuzione).
- Funzioni:
- Pianificazione della CPU per determinare l’ordine e l’allocazione del tempo di elaborazione tra i vari processi.
- Sincronizzazione dei processi per garantire che condividano correttamente le risorse senza conflitti.
- Comunicazione tra processi (IPC) per permettere ai processi di scambiarsi dati e messaggi.
- Gestione dei deadlock per evitare situazioni in cui due o più processi sono bloccati in attesa di risorse possedute da altri.
b. Gestione della Memoria
- Cos’è: Il sistema operativo gestisce la memoria primaria (RAM) per garantire un utilizzo efficiente e sicuro.
- Funzioni:
- Allocazione della memoria ai processi e deallocazione quando non è più necessaria.
- Gestione della memoria virtuale per estendere la memoria fisica utilizzando lo spazio su disco.
- Protezione e isolamento della memoria per garantire che un processo non acceda alla memoria di un altro processo senza autorizzazione.
c. Gestione del File System
- Cos’è: Il sistema operativo gestisce l’archiviazione, l’organizzazione e l’accesso ai dati su dispositivi di memorizzazione come dischi rigidi e SSD.
- Funzioni:
- Fornire un’interfaccia per la creazione, eliminazione, lettura e scrittura di file e directory.
- Gestire i permessi di accesso per garantire la sicurezza dei dati.
- Ottimizzare le prestazioni di lettura e scrittura dei dati.
d. Gestione dei Dispositivi di Input/Output (I/O)
- Cos’è: Il sistema operativo gestisce l’interazione con dispositivi di input (tastiere, mouse, scanner) e output (monitor, stampanti).
- Funzioni:
- Fornire driver che fungono da intermediari tra il sistema operativo e i dispositivi hardware.
- Gestire le operazioni di I/O per ottimizzare il trasferimento di dati e minimizzare i tempi di attesa.
- Garantire che più processi possano utilizzare dispositivi I/O in modo coordinato e senza conflitti.
e. Gestione della Sicurezza e Protezione
- Cos’è: Il sistema operativo protegge i dati e le risorse del sistema da accessi non autorizzati e minacce.
- Funzioni:
- Autenticazione e autorizzazione degli utenti.
- Implementazione di controlli di accesso per file, directory e altre risorse di sistema.
- Protezione contro malware e attacchi esterni tramite firewall e meccanismi di sicurezza.
f. Interfaccia Utente
- Cos’è: Il sistema operativo fornisce un’interfaccia attraverso la quale l’utente può interagire con il sistema.
- Tipi:
- Interfaccia a linea di comando (CLI): Interfaccia testuale che consente agli utenti di digitare comandi (es.
bash
in Linux). - Interfaccia grafica utente (GUI): Interfaccia visiva che permette agli utenti di interagire con il sistema tramite icone, finestre e menu (es. Windows, macOS).
- Interfaccia a linea di comando (CLI): Interfaccia testuale che consente agli utenti di digitare comandi (es.
2. Tipi di Sistemi Operativi
I sistemi operativi possono essere classificati in base all’ambiente in cui operano e al tipo di applicazioni per cui sono progettati:
a. Sistemi Operativi Monoutente e Multiutente
- Monoutente: Supportano un solo utente alla volta. Esempi: DOS, alcune versioni di Windows.
- Multiutente: Permettono a più utenti di utilizzare il sistema contemporaneamente. Esempi: Unix, Linux, Windows Server.
b. Sistemi Operativi Monotasking e Multitasking
- Monotasking: Permettono l’esecuzione di un solo processo alla volta. Esempi: primi sistemi operativi come MS-DOS.
- Multitasking: Consentono l’esecuzione simultanea di più processi. Possono essere:
- Preemptive: L’OS decide quando un processo deve cedere la CPU (es. Windows, Unix).
- Cooperative: Il processo decide autonomamente quando cedere la CPU (es. primi Mac OS).
c. Sistemi Operativi in Tempo Reale (RTOS)
- Cos’è: Progettati per eseguire applicazioni con requisiti di tempo reali, dove il rispetto dei tempi di risposta è critico.
- Utilizzi: Sistemi di controllo industriale, automazione, dispositivi medicali, applicazioni militari.
- Caratteristiche: Tempi di risposta deterministici, alta affidabilità, gestione delle priorità.
d. Sistemi Operativi Distribuiti
- Cos’è: Consentono la gestione di risorse distribuite su più macchine come se fossero un unico sistema coeso.
- Utilizzi: Cluster di server, grid computing, ambienti di calcolo distribuito.
- Caratteristiche: Trasparenza nell’accesso alle risorse, tolleranza ai guasti, scalabilità.
e. Sistemi Operativi per Dispositivi Mobili
- Cos’è: Progettati per dispositivi mobili come smartphone e tablet.
- Esempi: Android, iOS.
- Caratteristiche: Gestione efficiente delle risorse limitate (batteria, memoria), supporto per touch screen, gestione delle connessioni di rete mobili.
3. Componenti di un Sistema Operativo
Un sistema operativo è composto da vari componenti, ciascuno con un ruolo specifico:
a. Kernel
- Cos’è: Il nucleo centrale del sistema operativo che gestisce le operazioni fondamentali come la gestione della memoria, dei processi e dei dispositivi.
- Tipi di Kernel:
- Monolitico: Tutti i servizi del sistema operativo risiedono in un unico spazio di memoria (es. Linux).
- Microkernel: Solo i servizi essenziali sono inclusi nel kernel, mentre altri servizi operano in user space (es. Minix, QNX).
- Hybrid Kernel: Combina caratteristiche dei kernel monolitici e microkernel (es. Windows NT, macOS).
b. Shell
- Cos’è: L’interfaccia che permette agli utenti di interagire con il sistema operativo. Può essere una CLI (Command Line Interface) o una GUI (Graphical User Interface).
- Funzioni: Interpretare i comandi dell’utente e inviarli al kernel per l’esecuzione.
c. Gestore della Memoria
- Cos’è: Parte del kernel responsabile della gestione della memoria.
- Funzioni: Allocazione della memoria a processi, gestione della memoria virtuale, swap di pagine tra RAM e disco.
d. Gestore dei File
- Cos’è: Modulo del sistema operativo che gestisce il file system.
- Funzioni: Creazione, eliminazione, lettura, scrittura, protezione e organizzazione dei file.
e. Gestore dei Dispositivi (Device Manager)
- Cos’è: Parte del sistema operativo che gestisce i dispositivi hardware.
- Funzioni: Interfacciarsi con i driver per garantire il corretto funzionamento di dispositivi come stampanti, dischi rigidi e schede grafiche.
f. Gestore dei Processi (Process Manager)
- Cos’è: Modulo che si occupa della gestione dei processi in esecuzione.
- Funzioni: Creazione, schedulazione, sincronizzazione, e terminazione dei processi.