CHI HA PAURA DELL’INTELLIGENZA ARTIFICIALE?
Un sistema operativo (SO o OS dall’inglese Operating System) è il cuore del computer, il “direttore d’orchestra” che coordina CPU, memoria, dispositivi e programmi. Senza di esso, un computer sarebbe soltanto un insieme di componenti hardware incapaci di dialogare tra loro o con l’utente. Il sistema operativo svolge funzioni fondamentali come la gestione dei processi, della memoria, dei file e delle periferiche, fornendo un ambiente stabile e sicuro in cui i programmi possono funzionare senza interferire l’uno con l’altro.
Immagina di voler scrivere un documento mentre contemporaneamente ascolti musica e navighi sul web. Senza un SO, dovresti gestire manualmente ogni risorsa: dire alla CPU quando passare da un programma all’altro, decidere dove salvare i dati in RAM, comunicare direttamente con ogni dispositivo. Il sistema operativo automatizza tutto questo, orchestrando le risorse e permettendo agli utenti di concentrarsi sui propri compiti.
Il SO si occupa di creare, sospendere e terminare programmi (i processi), assegna memoria e spazio su disco, dialoga con periferiche come stampanti, tastiere e GPU tramite i driver, organizza i dati in file e cartelle, e garantisce sicurezza tramite permessi e gestione utenti. Inoltre, fornisce interfacce diverse: le GUI, cioè le interfacce grafiche con finestre e icone, e le CLI, interfacce testuali precise e automatizzabili tramite comandi.
Un processo è un programma in esecuzione con il suo stato interno: registri della CPU, memoria utilizzata e risorse aperte. All’interno di un processo, i thread rappresentano flussi di esecuzione separati ma condividono la stessa memoria.
Ogni processo passa attraverso vari stati: Nuovo, quando viene creato; Pronto, in attesa della CPU; In esecuzione, quando sta usando la CPU; Attesa I/O, quando aspetta il completamento di un’operazione di input/output; infine Terminato, quando ha completato il lavoro. Tutte queste informazioni sono conservate nel Process Control Block (PCB), mentre il context switch è il passaggio della CPU da un processo all’altro, un’operazione necessaria ma che richiede tempo.
Il sistema operativo deve decidere quale processo eseguire in ogni istante. Esistono diversi metodi:
La memoria è il luogo dove il computer conserva temporaneamente i dati e i programmi in esecuzione. Possiamo immaginarla come una scrivania: più grande e organizzata è, più agevolmente possiamo lavorare. La memoria non è unica: esiste una gerarchia basata su velocità e vicinanza alla CPU:
Ogni processo “vede” uno spazio di memoria continuo e proprio, chiamato spazio di indirizzamento virtuale, anche se in realtà i dati possono essere sparsi tra RAM e disco. Questo permette di far sembrare a ciascun programma di avere più memoria di quella fisica disponibile. Quando un programma accede a una parte della memoria non presente in RAM, si verifica un page fault: il SO carica quella pagina dal disco nella RAM.
Parafrasi: page fault = il computer “si accorge” che il dato richiesto non è in scrivania (RAM), quindi lo va a prendere dall’archivio (disco).
La gestione della memoria avviene con pagine (blocchi di memoria di dimensione fissa, ad esempio 4 KB) e frame (spazi in RAM che accolgono le pagine). Per velocizzare, la CPU usa una cache speciale chiamata TLB (Translation Lookaside Buffer), che ricorda dove si trovano le pagine. La memoria è protetta: ogni processo non può leggere o scrivere in aree di altri processi, evitando crash e violazioni.
Frammentazione: problema comune della memoria. Può essere:
Un file è un insieme di informazioni, di solito sequenze di byte, con associate alcune proprietà chiamate metadati, ad esempio:
Le cartelle (directory) contengono file e altre cartelle, permettendo di organizzare i dati. Il percorso di un file può essere assoluto (dalla radice del file system, es. /home/alex/file.txt) o relativo (rispetto alla cartella corrente, es. ../documenti/file.txt).
In Unix/Linux i permessi determinano chi può leggere, scrivere o eseguire un file: r = read (lettura), w = write (scrittura), x = execute (esecuzione). La sequenza rwxr-x--- significa:
Esistono collegamenti per riferirsi a file senza duplicarli:
File system comuni:
Journaling: sistema che registra le operazioni recenti per prevenire perdita di dati in caso di crash.
Perfetto! Riscrivo dal punto 5 in avanti usando uno stile discorsivo e guidato, con spiegazioni approfondite dei concetti e senza attività operative. Il testo termina con un test di 20 domande, seguito da soluzioni dettagliate e spiegate punto per punto.
Quando parliamo di interfacce del sistema operativo, ci riferiamo al modo con cui l’utente comunica con il computer. Esistono due approcci principali: la GUI (Graphical User Interface) e la CLI (Command Line Interface).
La GUI è l’interfaccia grafica. È quella che vediamo quotidianamente sui nostri desktop: finestre, icone, menu, pulsanti. Il vantaggio principale della GUI è che rende intuitivo l’uso del computer. Possiamo cliccare, trascinare e osservare visivamente cosa succede. È particolarmente utile per chi esegue operazioni occasionali, come aprire un documento o spostare file tra cartelle, perché non richiede di ricordare comandi specifici. Tuttavia, la GUI può diventare lenta per operazioni ripetitive o complesse e non è sempre facilmente automatizzabile.
La CLI, invece, è basata su testo. L’utente scrive comandi che il sistema operativo interpreta. Anche se all’inizio può sembrare più difficile, la CLI è incredibilmente potente. Permette di eseguire operazioni complesse con precisione e di automatizzare attività tramite script. Concetti fondamentali della CLI includono:
|): permette di collegare l’output di un comando all’input di un altro, formando catene di operazioni.>, >>, <): consentono di salvare l’output di un comando su un file o leggere l’input da un file invece che dalla tastiera.La GUI è più immediata e visiva, mentre la CLI richiede una maggiore conoscenza dei comandi ma consente un controllo molto più preciso e ripetibile delle operazioni del sistema operativo.
Il multitasking è la capacità di un sistema operativo di eseguire più programmi contemporaneamente. Questo non significa che la CPU faccia più cose allo stesso istante, ma che alterna rapidamente l’esecuzione dei processi, dando l’impressione di simultaneità.
Esistono due modalità principali di multitasking:
I servizi o daemon sono programmi che girano in background e svolgono attività continue, come gestire la stampa, la rete o i backup. Non hanno un’interfaccia diretta con l’utente, ma sono essenziali per il funzionamento del sistema. L’avvio di un computer segue una sequenza precisa: il bootloader carica il kernel, il kernel avvia i servizi di base e solo alla fine viene presentata l’interfaccia utente per login e lavoro quotidiano.
Un driver è un software che permette al sistema operativo di comunicare correttamente con l’hardware. Senza driver, dispositivi come stampanti, schede video o dischi potrebbero non funzionare o essere utilizzabili solo in modo limitato. Ogni periferica richiede driver specifici che traducono i comandi del sistema operativo in istruzioni comprensibili dall’hardware.
Gli aggiornamenti del sistema operativo includono patch di sicurezza, correzioni di bug e nuove funzionalità. È fondamentale mantenere il sistema aggiornato per proteggersi da vulnerabilità e migliorare la stabilità. Le buone pratiche di sicurezza includono backup regolari e lettura delle note di rilascio prima di applicare aggiornamenti importanti.
La virtualizzazione consente di far girare un intero sistema operativo all’interno di un altro, creando una macchina virtuale (VM). In pratica, il software simula l’hardware del computer, permettendo di eseguire sistemi diversi contemporaneamente senza interferire tra loro.
I container, invece, isolano singole applicazioni sullo stesso kernel del sistema operativo. Sono molto leggeri e veloci da avviare, e vengono utilizzati soprattutto nello sviluppo e nella distribuzione di software moderno, perché permettono di garantire che un’applicazione funzioni nello stesso modo su computer diversi.
1. C – Il context switch salva lo stato del processo attuale e carica quello del successivo, permettendo il multitasking.
2. B – La memoria virtuale crea l’illusione di uno spazio continuo dedicato a ciascun processo, proteggendo la memoria degli altri.
3. B – Il page fault è normale; il SO recupera la pagina dal disco e la carica in RAM.
4. B – La cache L1 è integrata nella CPU e contiene dati e istruzioni frequentemente usati, velocizzando l’esecuzione.
5. A – Blocchi di memoria più grandi dei dati causano spazi inutilizzati all’interno (frammentazione interna).
6. B – La frammentazione esterna si verifica quando piccoli spazi liberi sono sparsi tra blocchi occupati, difficile da riutilizzare.
7. A – Lo symlink punta simbolicamente a un file, l’hard link crea un secondo nome che punta allo stesso file fisico.
8. B – La GUI si basa su elementi grafici come finestre, icone e menu, per facilitare l’uso.
9. B – La CLI permette controllo preciso, automazione e scripting, ideale per operazioni ripetitive.
10. C – Round Robin migliora la reattività, alternando la CPU tra i processi in modo equo.
11. B – FCFS (First Come, First Served) può causare attese lunghe se un processo lungo blocca i successivi.
12. B – Una race condition si verifica quando più processi modificano dati condivisi senza sincronizzazione, creando comportamenti imprevedibili.
13. B – Mutex e semafori servono a sincronizzare i processi e prevenire race condition.
14. B – Deadlock è una situazione di stallo in cui processi attendono risorse occupate reciprocamente.
15. B – I driver traducono le istruzioni del SO in comandi comprensibili dall’hardware.
16. B – Il journaling tiene traccia delle operazioni recenti, permettendo il recupero dei dati dopo un crash.
17. A – Un daemon è un processo che gira in background e svolge attività continue senza interfaccia utente diretta.
18. B – L’exit code indica se un comando è riuscito (0) o fallito (numero diverso da 0).
19. B – La variabile PATH indica al SO dove cercare i programmi da eseguire.
20. A – La virtualizzazione permette di simulare un intero sistema operativo all’interno di un altro, isolandolo e rendendolo indipendente.
Commenti
Posta un commento