Appunti di sistemi operativi Cos'è un sistema operativo Per sistema operativo si intende quell'insieme di procedure e programmi che permettono di gestire in modo corretto, efficiente e totalmente trasparente al programmatore l'hardware nudo e crudo. Una delle funzioni principali che deve svolgere il sistema operativo è quindi quella di fornire una serie di procedure che permettano di accedere in modo semplice all'hardware dando al programmatore un'idea astratta delle periferiche su cui lavora. Per fasi un'idea di cosa si intende si consideri un disco fisso, un supporto di massa su cui è possibile scrivere file di dati all'interno di un'organizzazione ad albero formata da cartelle e file (detta file-system) in cui si ha una cartella radice contenente file e cartelle che a loro volta possono contenere file e cartelle. Questo in realtà è quello che noi vediamo dell'organizzazione di un disco fisso, ovvero l'interfaccia astratta che l'utente ha per la gestione delle informazioni sul supporto di massa, il programmatore inoltre ha un'ulteriore interfaccia astratta formata da una serie di possibili chiamate di sistema (ovvero appelli alle procedure del sistema operativo di cui si accennava prima) che permettono di creare, leggere e scrivere file; il programmatore sa solamente che esistono dei file organizzati in un file-system, che essi possono essere aperti in lettura, scrittura, append, ecc., che è possibile leggere, scrivere o muoversi all'interno del file e che infine è possibile chiuderlo. Tutto questo però fa riferimento ad un approccio astratto (e sicuramente più comodo) offerto dal SO per l'utilizzo del disco fisso. Se dovessimo analizzare cosa realmente avviene e magari controllare le reali operazioni relative all'hardware dovremmo spedire i dati di controllo della testina all'interfaccia (hardware s'intende) del disco indicando al disco di ruotare, posizionarci sulla traccia contenente la FAT e cercare l'indirizzo del primo blocco del file (ovvero il numero di traccia, settore e faccia) eccetera eccetera; logicamente se un programmatore dovesse prendere in considerazione sempre tutte queste problematiche (per non aggiungere il fatto che qualcosa potrebbe andare storto) probabilmente perderebbe moltissimo tempo e rischierebbe anche di errare e rovinare l'hardware stesso! Risulta ora ovvia l'utilità del sistema operativo, in realtà però questa mansione non è l'unica ma risulta solamente una parte (anche molto piccola) delle problematiche che il sistema risolve: con lo sviluppo ed il diffondersi dei sistemi multiprogrammati e multiutente oggigiorno la gestione della concorrenza fra processi è diventata infatti una delle mansioni principali che il sistema operativo svolge, esso infatti dovrà predisporre dei moduli particolari fatti apposta per gestire l'esecuzione e la concorrenza fra processi su di una macchina considerata monoprocessore (la presenza o meno di più processori non fa differenza perchè viene gestita direttamente via hardware). Vedre Continua »