I Sistemi Operativi Definizione • Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi con compiti diversi, che provvedono alla gestione di un dispositivo o calcolatore elettronico, ad interfacciarsi con l’utente consentendogli di impartire comandi alla macchina e controllarla. SO proprietari • I produttori di alcuni elaboratori informatici, hanno provveduto autonomamente a realizzare SO che consentissero alle loro macchine di funzionare, adattati all’hardware di cui esse erano costituite, ma hanno creato SO proprietari, non trasportabili su altre macchine, ottimizzati solo per un tipo di hardware. • Questo tipo di soluzione ha impedito la diffusione delle tecnologie software su altre piattaforme costituendo anche un freno per l’evoluzione dei SO. • Unix, Windows e Mac OS X sono esempi di soluzioni proprietarie. SO aperti • In contrapposizione ai SO proprietari abbiamo i SO aperti cioè trasportabili su hardware diverso, su calcolatori diversi. • Tal SO spesso mettono a disposizione delle primitive (API) Application Program Interface con cui i programmatori possono pilotare funzioni del SO. Compiti del SO • Tra i compiti del SO ci sono: 1. Leggere dalla memoria di massa dei programmi o dei dati o file. 2. Caricare in memoria centrale un programma da eseguire. 3. Attivare la CPU per farle eseguire un programma. 4. Effettuare stampe. 5. Controllare l’uso di tastiera e mouse e seguirne le richieste. Schema di base di un SO • Il SO è interposto tra Hardware e programmi applicativi in uno schema come il seguente: Programmi Sistema Hard ware user Operativo applicativi Software del calcolatore Programmi applicativi Utente Hardware E Firmaware Programmi di sistema (compilatori, interpreti di comandi) Programmi di sistema Sistema Operativo lato gestibile Programmi di sistema Sistema Operativo lato kernel Microprogrammi in linguaggio macchina Software operativo lato utente • Non sempre l’utente conosce l’hardware specifico della stampante (per esempio per le stampanti di rete) o può non conoscere se è inkjet o laser ma sicuramente sa quale è il comando per avviare la stampa • Msdos : PRINT • Windows: Menù File > stampa. Gestore delle risorse • Sicuramente tra i compiti di un SO ci sono le funzioni di gestore delle risorse di sistema: • • • • Microprocessore Memoria centrale (RAM) Memorie di massa (HDD) Periferiche Sistema operativo Gestore della cpu Gestore della memoria centrale Gestore della memoria di massa Hardware Gestore delle periferiche Le interfacce • Le interfacce sono ciò che è mostrato all’utente dal sistema operativo cioè è come l’utente percepisce la macchina grazie al sistema operativo. • In moderni SO sono in grado di lavorare su centinaia di hardware diversi ma appaiono all’utente sempre con il solito desktop, finestre con menù, barra delle applicazioni ed icone. • L’interfaccia è quella parte del sistema operativo che consente all’utente di dare comandi al computer. Le interfacce a linea di comando • Sono le prime nate in ordine di tempo. • Presentano uno schermo scuro su cui è possibile digitare dei comandi testuali che hanno una loro sintassi precisa. • Sono difficili da usare ma anche molto potenti. Interfacce CLI • CLI sta per command line interface (interfacce a linea di comando). • Le più usate oggi sono le shell di Linux e il Prompt di comandi di Windows Interfacce CLI • Ogni comando digitato ha una sua specifica sintassi: per esempio il comndo per copiare i file: Copy nomefile.estensione path_di_destinazione • I comandi digitati vengono interpretati da un software detto «interprete dei comandi» che in tempo reale esegue il comando se la sua sintassi è corretta. Interfacce GUI • GUI sta per Graphic User Interface che vuol dire interfacce grafiche per l’utente. • Queste interfacce prevedono l’uso di menù ed icone per cui non bisogna conoscere la sintassi del comando. • Il loro uso è basato sulla metafora della scrivania e quindi lo schermo sembra una scrivania su cui mettiamo gli oggetti da utilizzare: documenti, video ecc.. Interfacce GUI • Cronologia SO con interfaccia GUI: 1. Apple Machintosh OS 1984 2. Microsoft Windows 1.0 1985 3. Commodore Amiga OS 1985 Le macchine virtuali • La presenza del SO rende più semplice l’uso del calcolatore da parte dell’utente. • Infatti, grazie a menù, icone e finestre, l’utente impartisce comandi attraverso il mouse in modo semplice ed intuitivo • Quindi quella che usa l’utente non è la macchina reale, fatta di bit 1 e 0, di hardware e comandi complicati, ma è una macchina «gradevole» definita «virtuale» perché non reale. Le macchine virtuali • Il SO è costituito da diversi gruppi di programmi. • Ogni gruppo di programmi ha uno specifico compito. • I gruppi di programmi sono organizzati gerarchicamente perché quello che governa direttamente la macchina è il primo in gerarchia mentre quello più lontano governa tutti i programmi sottostanti. • Ogni gruppo di programmi è una macchina virtuale più evoluta della sottostante. Le macchine virtuali Le macchine virtuali • In questo modo solo gli strati vicini al hardware sono specifici di esso e, per poter adattare il SO ad un nuovo hardware, bisogna cambiare solo questi software. • Questo concetto è noto come il principio della modularità. • I costi di adattamento sono i costi di riscrittura del codice più interno che pilota direttamente l’hardware. • Gli altri programmi sono esterni e non devono essere adattati. Le macchine virtuali 1. Kernel: Questo strato più interno è detto «Kernel» o nucleo ed è il codice più delicato di un sistema operativo. 2. Memory manager (Gestore della memoria centrale): questo strato software si occupa di gestire il posizionamento dei programmi in memoria centrale e la protezione degli stessi da sovrascritture. 3. Device manager: questo gruppo di programmi gestisce le periferiche e il trasferimento di dati verso di esse. 4. Information manager: questo strato si occupa della gestione dei dati sui dispositivi di massa. 5. Interfaccia: questo è il codice che riproduice l’interfaccia verso gli utenti.