Livelli di astrazione e strati di un calcolatore

La suddivisione in livelli di un sistema per l’elaborazione delle informazioni (più comuinimente detto pc) può avvenire in funzione dell’utilizzatore o del progettista; Nella tab. 1 è mostrata la tipica suddivisione che si sviluppa dalla visione che ha l’utente finale del sistema fino a includere quella propria del progettista.

tab. 1

Utenti Gestione aziendale, progettazione, Pacchetti applicativi, Programmi, Virus, Giochi vari
Software Sistema operativo (gestione lavori, sistema di archiviazione)
Processori del sistema operativo (traduttori, editor, …)
Sistema operativo (gestione sistema): routine di servizio delle interruzioni, drivers, etc.
Hardware Componenti hardware: processore, unità logico-aritmetica, input-output, memorie, usb drive
Unità hardware Macchine elementari: addizionatori, codificatori, decodificatori, reti di controllo, registri, flipflop, porte, etc.
Circuiti integrati e apparati elettromeccanici, componenti elettronici ed elettromeccanici

L’utente finale percepisce il sistema come un oggetto ( misterioso, incomprensibile ) unico che gli consente la soluzione (anche se troppo spesso mi sento dire che l’informatica complica la vita ovviamente non si riferiscono a facebook o simili….) di una problematica virtuale (ad es. gestione aziendale, progettazione di impianti, di strutture, etc.) che si integra con un aspetto reale della propria attività lavorativa e non solo (ad es. struttura aziendale, centro di progetto e ricerca, lista della spesa, prenotazione delle vacanze, etc.). I componenti del sistema, oltre a componenti «esterni» all’elaboratore (ad es. reparto amministrativo dell’azienda, metodi di simulazione per la progettazione di impianti, etc.), sono i pacchetti applicativi, spesso fra loro collegati, che affrontano una singola problematica dell’utente.

Il progettista di pacchetti applicativi è anch’esso un utente del sistema, ma di tipo diverso: esso tiene conto delle esigenze dell’utente finale, ma è concentrato soprattutto sulla singola problematica che un pacchetto applicativo deve risolvere. Esso quindi è interessato in particolare a come articolare ciascun pacchetto in programmi che possono essere collegati o inglobati nei pacchetti stessi (programmi di sort, merge, etc.). Un ottimo paragone è il cuoco che avendo gli ingrerdienti già pronti li mette insieme per preparare la propria portata.

Il personale di gestione del sistema interagisce con i pacchetti applicativi e quindi con i singoli programmi utilizzando il s.o. che coordina e disciplina (quello che ogni sistemista spera che il s.o. faccia anche se le aspettative ogni tanto sono deluse) la loro esecuzione nella sezione gestione lavori.

Il progettista del s.o. è ovviamente interessato a tutti gli strati del sistema software, ma deve anche conoscere a vari livelli di dettaglio tutti gli strati superiori del sistema per venire incontro alle esigenze dell’utenza (anche qui ci sarebbe da fare una lunga digressione su come stanno progettando gli ultimi s.o. presentati). Peraltro, deve conoscere bene l’hardware (architettura e componenti) per poter progettare la sezione «gestione del sistema» del s.o.. Tale sezione infatti «vede» l’hardware in quanto interviene ripetutamente durante l’esecuzione di un qualsiasi programma, sia per controllarne l’avanzamento, con l’allocazione delle risorse necessarie, sia per sovraintendere alle operazioni di in-out e alla loro sincronizzazione.