Approfondimento del concetto di sistema operativo. Dato che il computer può eseguire solo un programma alla volta, è necessario immaginare un sistema che ci permetta di utilizzare il computer in un modo più versatile. Il vincolo rimane, ma è possibile strutturare le cose in modo più intelligente per aumentare le possibilità di funzionamento.
Quando accendiamo il computer la memoria è completamente vuota. Per potervi inserire qualcosa è nevessario che le istruzioni del programma siano scritte in un luogo che le possa mantenere nel tempo: questo lugo, come sappiamo, è l'hard disk (ma alcuni vecchi computer avevamo dei piccoli programmi scritti in delle memorie non modificabili inserite direttamente sulla ciruciteria, le note ROM: read only memory). Grazie a un sistema di gestione elementare delle periferiche (che fornisce un funzionamento di base per tastiera, schermo e accesso a memorie di massa come gli hard disk), che si chiama BIOS (Basic Input Output System), il copmuter autonomamente trova sul disco il programma "di avvio" del sistema operativo, lo copia nella memoria e lo esegue. Niente di sostanzialmente diverso da quello che abbiamo visto finora.
Il sistema operativo si occupa di gestire l'interazione tra l'utente e i programmi, e di amministrare l'"ecosistema" dove i programmi "vivono". Dato che i programmi, come abbiamo visto, devono avere (e poter disporre liberamente) di una memoria, il primo "potere speciale" che deve avere un sistema operativo è quello di poter creare delle sotto-aree di memoria "ritagliandole" dalla memoria globale del computer. Da un punto di vista del programma che si trova a funzionare in questa sotto-area, quella è la sua memoria, che comincia da 1 ed è di sua esclusiva competenza. Con questa memoria ci può fare quello che vuole. (ma non può uscirne e invadere la memoria globale o altre aree di memoria: se serve un'aggiunta è il sistema operativo che provvede, automaticamente, a ingrandire lo spazio del programma che ne necessita)
Dentro queste aree di memoria è possibile inserire dei programmi (normalmente estratti dall'hard disk, che rispondono a nomi esotici e strani come "Word", "Outlook Express", "Internet Explorer", "Excel"). Questi programmi si comporteranno né più né meno come quelli "astratti" che abbiamo visto a lezione, lavorando sulla propria memoria privata e facendo cose molto diverse da quelle che facevano i "nostri" programmi, ma facendole usando esattamente le stesse modalità.
Ma dato che in ogni momento solo un programma (anzi: una sola istruzione di un solo programma) può essere in esecuzione, bisogna escogitare una struttra che renda possibile la convivenza contemporanea di più programmi. La soluzione è ingegneristica e non logica: si usa un sistema detto di scheduling. Lo scheduling permette il multitasking, cioè permette di eseguire più compiti contemporaneamente. Per dare l'idea che più programmi possano essere eseguiti allo stesso momento (un programma in esecuzione è detto processo) il sistema operativo reindirizza il flusso delle istruzioni a turno verso uno dei processi in esecuzione, permettendogli di avanzare per alcune frazioni di secondo e quindi fermandolo per poi passare il controllo nuovamente a un altro processo. Quando tutti i processi hanno avuto il loro "pezzettino" di tempo, il ciclo si ripete. In questo modo, a turno, tutti i programmi possono procedere in modo apparentemente parallelo. Il passaggio tra un processo e l'altro è talmente veloce che è impercettibile all'utente che "vede" tutti i processi andare avanti in parallelo e contemporaneamente.
Noi comunichiamo col sistema operativo attraverso l'interfaccia. Fondamentalmente quando facciamo "doppio click" sull'icona di Word, stiamo dando istruzione al sistema operativo di cercare il file che contiene le istruzioni del programma Word sull' hard disk, di creargli una sua area di memoria, di copiare le istruzioni dal disco alla memoria e di farne partire l'esecuzione. A quel punto il processo Word andrà avanti per conto suo, a turno con gli altri processi in funzione. (questo è il motivo per cui più programmi sono "aperti", più è lenta l'esecuzione di ognuno)
Il sistema operativo gestisce e coordina anche le risorse comuni alla macchina sulla quale viene eseguito, per esempio l'accesso al disco, alla stampante e così via.
A questo punto però bisogna rendersi conto che al computer si possono collegare periferiche che hanno modelli, funzionalità, marche, caratteristiche anche molto diverse tra loro. Alcune di queste periferiche potrebbeno non essere nemmeno state previste dai creatori del sistema operativo. Anche per limitarsi solo alle stampanti, ne esistono migliaia di marche e modelli, ognuno con modalità di funzionamento e di gestione del tutto diverse. Come può il sistema operativo gestire delle risorse con caratteristiche così varie? Per fare ciò si utilizzano speciali programmi detti driver. Un driver è un tipo speciale di programma che deve essere scritto secondo una struttura rigida e predefinita. Il programma driver deve possedere alcune funzioni standard (sono le sottoprocedure che abbiamo visto in altre lezioni) con dei parametri standard. Per esempio u driver di stampa dovrà avere funzioni come STAMPA, SALTA_PAGINA, INTERROMPI_STAMPA e così via: sono le funzioni che genericamente ci aspettiamo di poter eseguire con quel particolare hardware. Tutti i driver di stampa devono possedere quelle funzioni. (si dice in gergo che devono possedere una "interfaccia standard": interfaccia in questo caso non è quella visuale di windows, ma una particolare strutura fatta i modo da "incastrarsi" con le aspettative del sistema operativo, una inter-faccia appunto, fatta come il pezzo di un puzzle che si deve adattare alle specifiche del sistema). Le istruzioni contenute in queste funzioni sono invece strettamente dipendenti dall'apparecchio che deve essere pilotato (infatti "driver" significa "pilota"!). Se per esempio una stampante richiede il codice A per saltare pagina, il driver all'interno della procedura SALTA_PAGINA dovrà inviare alla stampante il codice "A". Se una stampante richiede il codice B, il suo driver dovrà sempre avere la procedura SALTA_PAGINA ma all'interno di quest'ultima il codice da inviare sarà "B", e così via. Ogni apparecchio collegato al computer (ma anche quelli all'interno del computer, come la scheda video che permette di mostrare le immagini sullo schermo, o la sched aaudio che permette di riprodurre i suoni) richiede un driver specifico. Molto spesso i sistemi operativi possiedono già una certa collezione di driver per i dispositivi più diffusi, ma nel caso questo driver non sia presente è necessario installarlo col CD fornito con l'apparecchio o scaricarlo dal sito del produttore. Ci si può accorgere di questo fatto quando si inserisce una chiavetta di memoria in una porta USB e compare un messaggio "installazione della periferica in corso": il sistema operativo sta cercando se possiede già il driver di quell'apparecchio e in caso positivo fa in modo di utilizzarlo per interagire con quella periferica.
I driver quindi sono programmi molto speciali, perché diversamente dagli altri che "vivono" una vita propria nella memoria e che in caso di errore possono essere interrotti (col task manager che si apre premendo contemporaneamente ctrl-alt-canc), i driver diventano pezzi del sistema operativo, vengono incorporati in esso. Se nei programmi driver ci sono errori o si verificano malfunzionamenti è l'intero sistema a trovarsi a rischio di instabilità, perché il problema viene a manifestarsi nel cuore stesso del sistema pregiudicandone il buon funzionamento. Questo spiega per quale ragione i driver sono gli elementi dell'ecosistema "computer" a introdurre i maggiori problemi di funzionamento.
Egregio Professor Tonti, nonostante questa sia la vostra prima esperienza d'insegnamento devo dire che riuscite a spiegare in maniera abbastanza chiara anche argomenti complessi, ma soprattutto siete molto disponibile con noi studenti, cosa che la rende migliore di tanti vostri colleghi con più esperienza nel campo didattico. Credo di poter parlare a nome di tutti dicendole grazie per la realizzazione di questo blog.
RispondiEliminaP.s. Felpe carine alcune molto belle ma la camicia abbottonata fino al collo è un pugno nell'occhio!!:D
Grazie per il riscontro, lei è davvero gentile! Sono felice che i miei sforzi siano utili. Ora vado a consolare la mia povera camicia, che sta piangendo offesa in un angolino ;)
RispondiEliminaanch'io sono della stessa opinione... nonostante mi sia sempre trovata in difficoltà di fronte ad argomenti simili... la sua semplicità e chiarezza mi è molto d'aiuto!!
RispondiEliminaps. da questo nuovo anno niente + camicie abbottonate fino all'ultimo!!!!;)
Grazie mille per il riscontro. È difficile capire se si stanno affrontando argomenti alla portata degli studenti e se li si sta spiegando in modo appropriato. Per questo feedback (anche critici) sono benvenuti.
RispondiElimina