Software di base e software applicativo Il computer è praticamente inutilizzabile se non è presente un apposito software che ne gestisca tutti i componenti HardWare. Esistono due tipologie fondamentali di software: • DI BASE: Programmi necessari per il funzionamento del computer: • • • SISTEMA OPERATIVO PROGRAMMI DI UTILITÀ TRADUTTORI DI LINGUAGGIO APPLICATIVO: Programmi che hanno il compito di risolvere specifici problemi • • • • • • • • dell’utente, come nel caso di: PROGRAMMI DI TRATTAMENTO DEI TESTI: consentono di scrivere o lavorare con dati già esistenti per realizzare operazioni di correzione e formattazione di documenti di qualsiasi dimensione o complessità, stampando infine il tutto(è il caso di Microsoft Word, ad esempio). FOGLI ELETTRONICI: consentono di realizzare operazioni matematiche con netta propensione per quelle finanziarie,contabili e commerciali (Excel) PROGRAMMI DI PRESENTAZIONE: servono a creare schermate (dette slide) contenenti testo, immagini, diagrammi, suoni e filmati da usarsi in ambito aziendale per comunicare concetti ed informazioni (Powerpoint) PROGRAMMI DI GRAFICA (Photoshop, Flash) SOFTWARE DI GESTIONE CONTABILE SOFTWARE MULTIMEDIALE per visualizzare immagini, filmati …. BROWSERS per la navigazione in INTERNET Altro …. Sistema Operativo Il sistema operativo rappresenta l'”intelligenza” del computer ed è l’unica porzione di software che non può mancare in nessuna macchina. Il Sistema Operativo si assume il compito di interpretare i comandi (input) provenienti dall'esterno e di tradurli in un linguaggio (macchina) comprensibile al computer (ovvero in ISTRUZIONI PER IL PROCESSORE); allo stesso modo funziona anche al contrario, traducendo gli output della macchina in un linguaggio a noi comprensibile. Il S.O. ha, in sostanza, il compito di gestire tutte le componenti del computer e di consentire la comunicazione tra utente e calcolatore. Il Sistema operativo è un programma, o meglio, un insieme di programmi e di moduli software, scritti allo scopo di rendere disponibili all'uso le risorse di calcolo e i dispositivi collegati al computer; racchiude livelli di organizzazione e rende disponibile il computer per l'esecuzione di azioni complesse. L'organizzazione modulare Il modello "onion skin" (buccia di cipolla) rappresenta il sistema come una successione di strati costruiti sopra la macchina hardware, ciascuno dei quali rappresenta un livello di macchina virtuale. Ogni livello all'interno del modello, viene visto come un oggetto unico, che non corrisponde alla macchina fisica ma che è in grado di svolgere le funzioni richieste indipendentemente dagli altri livelli; come notiamo dall'immagine qui a fianco i livelli più bassi sono vicini all'hardware al contrario quelli più esterni che sono vicini all'utente. Ciascuno strato costituisce un modulo, ovvero una collezione di routine che attiva i meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo. I moduli devono: - Mantenere un alto grado di indipendenza - Comunicare attraverso le primitivo da essi implementati - Far in modo che la sua struttura interna deve poter essere modificata senza che gli altri moduli che se ne accorgano - Essere visibili solo attraverso le proprie primitive Per primitiva si intende ogni procedura standard per mezzo della quale si possono utilizzare i servizi di un modulo. Se un sistema operativo è costruito con criteri di modularità, può essere usato su macchine diverse; l'attitudine di un sistema operativo a essere eseguito su macchine diverse definisce il grado di portabilità. Secondo il suddetto modello, nel sistema operativo si distinguono i seguenti moduli dal livello più basso al più alto: Classificazioni dei sistemi operativi Interfaccia utente del sistema operativo: L’utilizzatore interagisce col sistema operativo attraverso un'interfaccia, che può essere di tre tipi: Grafica ovvero :GUI (GRAPHIC USER INTERFACE) tipica di Windows, Mac OS-X Questi sistemi operativi per comunicare con l’utente utilizzano elementi grafici quali ICONE, Puntatore del mouse, Finestre con pulsanti … Alcuni esempi A menu Sistemi IBM AS400 o alcuni programi di utilità di DOS Questi sistemi operativi per comunicare con l’utente utilizzano delle liste (menù) e l’utente invia i comandi effettuando la sua scelta. Ad esempio A linea di comando CLI (Command Line Interface) o a caratteri, tipica di MS-DOS e dei primi sistemi Unix In questi sistemi operativi per comunicare con l’utente si utilizzano solo i caratteri, l’utente deve conoscere i comandi per poter usare il sistema. Prima dell'avvento di Windows, i computer all'accensione visualizzavano il prompt del DOS (Disk Operating System) cioè l'avviso che la macchina era pronta a ricevere dei comandi (tutto ciò era rappresentato, nel caso dell’MSDOS, dalla scritta C:\> ). Ora la situazione è cambiata grazie alla nascita delle interfacce grafiche che non sono altro che la traduzione in termini grafici della stessa situazione precedente, inserita in un contesto molto più accattivante. L'interfaccia grafica (GUI) è una rappresentazione grafica sullo schermo di file, dati, dispositivi e programmi memorizzati sul computer. L’utente può impartire comandi all’elaboratore interagendo con queste immagini grafiche. I più moderni e importanti Sistemi Operativi sono: OS/2, Unix, Win98/XP, WindowsNT/2000, MacOS, Linux. In base al numero di utenti: • Mono-utente (mono-user): un solo utente alla volta può utilizzare il sistema • Multi-utente (multi-user): più utenti possono interagire contemporaneamente con la macchina. Nel caso di più utenti contemporanei, il Sistema Operativo deve fornire a ciascuno l'astrazione di un sistema “dedicato”. VANTAGGI: L’utente opera come se disponesse di un sistema dedicato. SVANTAGGI Risorse accessorie richieste rispetto a quelle strettamente necessarie (overhead). In base al numero di programmi gestiti dal processore: • Mono-programmato (mono-tasking): si può eseguire un solo programma per volta • Multi-programmato (multi-tasking): il S.O. è in grado di portare avanti contemporaneamente più programmi. Funzionamento MONO-TASKING E MULTI-TASKING I primi sistemi operativi adottavano una modalità mono-tasking che consisteva nel caricare tutti i dati necessari a far eseguire completamente un programma senza interventi dall’esterno ed attendere la sua fine prima di poter preparare il sistema per un nuovo lavoro. Supponiamo di avere 3 programmi (A, B, C) avviati : momento fine dei 3 programmi in esecuzione (E) in attesa di I/O (A) pronto (P) C B A Mentre se il processore, quando il programma in esecuzione attende un input, potesse eseguire un altro programma, avremo: Tempo risparmiato C B A Per ottenere un comportamento simile sono nati i sistemi operativi multitasking che, pur eseguendo un processo per volta, ottimizzano il tempo di utilizzo del processore dando all’utente l’impressione di vedersi dedicate tutte le risorse del sistema per il proprio lavoro. Il risultato è ottenuto eseguendo, a rotazione, piccole porzioni di tutti i processi in attesa di essere eseguiti infatti Il tempo è diviso in unità molto piccole dette TIME SLICE (quanto di tempo). Ciascun processo in esecuzione usa il processore e lo libera in 2 casi: 1. Quando scade il quanto di tempo si salva lo stato e il processo viene posto in coda in stato di pronto (il processo viene “revocato”). 2. Se un lavoro richiede una lunga operazione sui dispositivi periferici si salva lo stato e il processo viene posto in coda in stato di blocco (il processo viene “sospeso”). quando l’operazione di input/output è terminata viene posto in coda in stato di pronto Qaundo il processore si “libera” di un processo si ripristina l’esecuzione del processo in prima posizione nella coda, partendo dallo stato che era stato salvato quando il processo era stato messo in attesa l’ultima volta. (Coda dei processi) (Coda dei processi) In tal modo si crea l’illusione che più processi siano eseguiti simultaneamente e si risparmia il tempo totale di esecuzione come si evince dal grafico. in esecuzione (E) in attesa di I/O (A) pronto (P) C B A