L'ultimo aspetto riguarda le diverse tipologie di dispositivi di I/O: ognuno di essi necessita di software specifico per funzionare e implementa una interfaccia diversa fra utente e macchina. Ciascuno dei dispositivi deve lavorare in maniera indipendente dagli altri e problematica molto importante, è possibile che più processi cerchino di avere accesso allo stesso dispositivo contemporaneamente.
Unix astrae tali dispositivi in files differenti. Alla creazione di un processo in Unix vegono aperti di default 3 files:
- stdin: (standard input), la tastiera
- stout: (standard output), lo schermo
- sterr: (standard error), può essere lo schermo oppure un file residente su disco fisso.
Gestione delle risorse
Approciamoci ora al Sistema Operativo dal punto di vista della macchina.
Visto dal calcolatore il Sistema Operativo è il software a lui più vicino, più strettamente correlato ai dispositivi che lo compongono; in tale contesto possiamo quindi considerarlo come un assegnatore di risorse.
Ogni componente della macchina può infatti essere visto come una risorsa da assegnare ai vari task in esecuzione; abbiamo quindi la risorsa "tempo processore", la risorsa "memoria centrale", più risorse "memoria di massa" e via discorrendo.
È compito del Sistema Operativo gestire nel migliore dei modi tali risorse, cercando di massimizzare le operazioni eseguibili in parallelo minimizzandone nel contempo la durata. Questo è chiaramente l'aspetto più complesso e interessante della progettazione di un Sistema Operativo. È richiesta una profonda conoscenza dell'architettura su cui ci si va ad appoggiare oltre che una certa dimestichezza con la programmazione.
Vediamo insieme quali strumenti ci offrono le moderne architetture hardware.
La CPU oltre a svolgere il compito di elaboratore generico ricopre un ruolo essenziale all'interno del calcolatore. Grazie alla teoria nota come Sistema a Transizione degli Stati (a volte definita Macchina a Stati) il processore è in grado di prendere decisioni basandosi sulle informazioni di cui è in possesso e di quelle che gli pervengono dall'esterno. Tutto ciò si traduce nel meccanismo di interrupt. Una interrupt (dall'inglese interruzione) è un segnale software o hardware diretto alla CPU.
I moderni Sistemi Operativi fanno ampio uso delle interrupt: a ogni pressione del tasto invio su terminale viene generata un' interrupt software, quando scollegate il cavo d'alimentazione del vostro portatile il relativo dispositivo genera un' interrupt hardware, tutte le procedure di I/O sono regolate interamente da interrupt.