In breve, il sistema operativo provvede a rendere l’user program più semplice e ottimizzato l’utilizzo di tutte le risorse della macchina.
L’utente interagisce con il sistema operativo attraverso la shell oppure attraverso una GUI (Graphical User Interface).
Quasi tutti i computer hanno due modalità di operare: kernel mode e user mode.
Le parti più importanti vengono eseguite in kernel mode (anche chiamato supervisor mode). In questa modalità si ha completo accesso all’hardware.
Il resto del software viene eseguito in user mode, dove sono disponibili solo una certa parte di istruzioni macchina.

Il sistema operativo si occupa di 2 cose:
L’obiettivo del sistema operativo è quello di creare una buona astrazione e poi implementarla e gestire gli oggetti astratti creati.
Il sistema operativo deve nascondere l’hardware e presentare programmi con una bella, pulita ed elegante astrazione di ciò che c’è sotto.

Il lavoro del sistema operativo è di provvedere ad un ordinata e controllata allocazione dei processori, memorie, e device di I/O tra i vari programmi che li vogliono.
Sistemi operativi moderni permettono a più programmi di essere in memoria ed essere eseguiti allo stesso tempo.
Gestione di risorse comprende anche multiplexing resources in due modi differenti: in tempo e spazio. Quando una risorsa è time multiplexed, diversi programmi o utenti prendono il turno per utilizzare le risorse ogni tot tempo. Space multiplexing, invece che ogni programma prende il proprio turno, ognuno di essi viene assegnata una parte delle risorse.