Dr. Francesco Fabozzi Corso di Informatica Software Dr. Francesco Fabozzi Corso di Informatica
Tipologie del software Un programma è una sequenza di istruzioni elementari eseguite dall’elaboratore Un programma in esecuzione si chiama processo (job) Il software è l’insieme dei programmi che possono essere eseguiti su un elaboratore Software di base Gestisce le funzioni elementari dell’elaboratore Lavora direttamente sul livello hardware Software applicativo Software dedicato per particolari esigenze Agisce sull’elaboratore mediante il software di base
Software di base e applicativo Software applicativo Software di base (S.O. / Firmware) Hardware
Firmware Programma residente nella ROM Ex.: BIOS Esegue l’avvio della macchina (bootstrap) Carica in memoria il Sistema Operativo Verifica integrità componenti interne Verifica collegamenti con periferiche esterne
Sistema operativo Il sistema operativo è il componente principale del software di base Gestisce le risorse del sistema CPU, memoria, periferiche Fornisce l’interfaccia uomo-macchina Costituisce il supporto per il software applicativo Gestisce errori del sistema
Processi Si definisce processo un programma in esecuzione Un processo possiede: Parte statica Istruzioni del programma Parte dinamica Dati e stato di avanzamento del programma Uno stesso programma può essere diviso in più porzioni eseguibili separatamente; ogni porzione costituisce un processo
Stati di un processo In esecuzione Pronto (Ready) In attesa Il processo occupa la risorsa processore Solo un processo per volta può essere in questo stato Può essere sospeso da un evento (interruzione) e andare in un altro stato Pronto (Ready) Il processo è pronto per andare in esecuzione ma la CPU non è ancora libera In attesa Il processo è sospeso perché ha richiesto un’operazione di I/O
Interruzioni di un processo Un processo viene interrotto per cause interne o esterne al processo stesso Quindi distinguiamo due tipi di interruzioni (interrupt) Interrupt interni Quando il programma richiede un’operazione di I/O Interrupt esterni Quando finisce la slice temporale assegnata al processo (nei sistemi multitasking) Quando c’e’ un processo con priorità più alta
Sistemi operativi monotasking In un sistema monotasking il processore esegue un solo processo per volta Ex.: sistema operativo DOS Un sistema monotasking è poco efficiente quando ci sono operazioni di I/O Un’operazione di I/O non coinvolge la CPU che rimane ferma durante input/output dei dati Ricorda: tempi di I/O >> tempi di elaborazione
Sistemi operativi multitasking In un sistema multitasking il processore esegue più processi contemporaneamente Ex.: sistema operativo Windows, Linux In realtà sono eseguiti a rotazione pezzi di processi “Timesharing” dei processi Il tempo di lavoro della CPU è suddiviso tra i vari processi Poiché gli intervalli di tempo (time-slice) dedicati a un processo sono molto piccoli (circa msec) l’utente ha l’impressione che i processi sono eseguiti contemporanemente In uno stesso istante coesistono un processo attivo e più processi sospesi
Sistemi mono e multitasking Esecuzione di processi in un sistema monotasking input output S.O. input output S.O. Job 1 Job 2 Esecuzione di processi in time sharing Processo P1 ready time slice t Processo P2 ready time slice t Processo P3 ready I/O t1 t2 t1+t2 = t
Interfacce utente L’interfaccia utente di un sistema operativo è ciò che permette all’utente di interagire con la macchina Interfaccia testuale I comandi sono forniti tramite stringhe di caratteri In pratica delle parole chiave S.O. con interfaccia testuale: MS-DOS, Unix, Linux Di elevata velocità Necessita di poca memoria Difficoltà per l’utente di ricordare i comandi
Interfacce utente Interfaccia grafica (Graphical User Interface, GUI) I comandi sono forniti selezionando un’apposita immagine (“icona”) S.O. con interfaccia grafica: Windows “User-friendly” (facilità d’uso) E’ meno veloce e necessita di più memoria Un comando complesso deve essere eseguito con più passaggi
Interfacce utente Interfaccia fisica I comandi sono forniti tramite movimenti di componenti fisiche del sistema Sono usate in elaboratori interni a macchine più complesse (embedded computer) Ex.: robot impiegati nelle fabbriche Svantaggio: l’interfaccia non è standard
Software applicativo Il software applicativo è l’insieme dei programmi necessari a risolvere specifici problemi degli utenti Linguaggi di programmazione Software personale Strumenti di produttività Programmi verticali
Software applicativo Linguaggi di programmazione (ambienti di sviluppo dei linguaggi) L’insieme degli strumenti per lo sviluppo di programmi e per la verifica della loro correttezza (debugging) Scarsa dipendenza dall’hardware della macchina Portabilità da un sistema a un altro Software personale Programmi di uso semplice e quotidiano Videoscrittura, agende elettroniche, gestione posta elettronica
Software applicativo Strumenti di produttività Programmi verticali Programmi che svolgono in maniera semplice ed efficiente compiti di calcolo o di elaborazione Fogli elettronici (spreadsheet) Gestione di database Programmi verticali Risolvono problematriche altamente specialistiche Gestione biblioteca o controllo di un impianto
Macchine virtuali Il software crea una struttura a più livelli che si innestano sul livello base costituito dall’hardware Ogni livello costituisce una macchina virtuale Gli utenti del sistema si collocano in diversi livelli Un utente può utilizzare solo le risorse della macchina virtuale sottostante al livello in cui si trova
Gerarchie di macchine virtuali L’utente finale non interagisce direttamente con l’hardware Il sistema appare come un insieme di comandi messi a disposizione del programma applicativo L’implementazione concreta dei comandi è delegata al livello inferiore Utenti finali Software applicativo S.O. Hardware
Funzionalità del sistema operativo Anche il sistema operativo è organizzato secondo una gerarchia di macchine virtuali Programmi applicativi Interprete dei comandi File system Gestore delle periferiche Gestore della memoria Gestore dei processi (kernel) Macchina fisica
Gestore dei processi Il gestore dei processi sovrintende all’esecuzione dei vari programmi residenti in memoria centrale per ottimizzare la risorsa processore E’ il gestore della CPU Gestisce anche sincronizzazione di più processi concorrenti risoluzione contese tra processi
Gestore della memoria centrale Gestisce la suddivisione della risorsa memoria centrale tra i vari programmi Solo una parte di ogni programma viene caricata di volta in volta in memoria centrale L’utente ha l’impressione di vedere una memoria centrale più grande di quella reale (memoria virtuale)
Gestore della memoria centrale Modalità di suddivisione della memoria Segmentazione assegnazione di un segmento di memoria pari alla parte di programma da caricare Ogni segmento di memoria ha dimensioni variabili (fino a 64 KB) Problema: frammentazione della memoria Paginazione assegnazione di una pagina di dimensione fissa (4KB) alla parte di programma da caricare Problema: non efficiente utilizzo della memoria
Segmentazione e paginazione memoria libera P4 frammento Paginazione P1 P1 pagina P2 P4 P3 P3
Gestione della memoria secondaria L’unità astratta di memorizzazione prende il nome di file Un file è un insieme di byte associati ad un’unica entità logica Ex.: istruzioni di programma; testo di una lettera L’insieme dei programmi per la gestione logica e fisica della memoria secondaria prende il nome di file system
Gestione della memoria secondaria Il file system Gestisce l’associazione di un file al suo nome logico Gestisce l’associazione del nome logico di un file alla sua posizione fisica nella memoria di massa Infatti un file viene memorizzato su disco in posti non necessariamente contigui Trasforma operazioni logiche su file in operazioni fisiche su blocchi di memoria di massa Gestisce la protezione dei dati Gestisce lo spazio libero conseguente alla cancellazione di un file
Organizzazione della memoria La memoria può essere organizzata in contenitori di files (directory) secondo una dipendenza gerarchica
Organizzazione della memoria Struttura ad albero root Directory principale (“radice”) lettere ricette foto laurea battesimo Foto1.jpg Foto2.jpg files
Identificazione di un file Il nome completo di un file è dato dal path name Nome del file + percorso (path) per raggiungerlo a partire dalla directory radice (che si indica con / ) Il nome del file è seguito da un’estensione Gruppo di caratteri preceduti da un punto che specificano il tipo di file Ex.: /foto/laurea/foto1.jpg
Identificazione di un file Estensione Tipo di file .exe, .com programmi eseguibili .doc Documenti Word .ppt Presentazioni PowerPoint .html, .htm Pagina web .jpg, .gif, .bmp immagini .mp3, .wav audio
Gestione delle periferiche Le operazioni sulle periferiche sono gestite tramite programmi detti device driver Il driver è diverso per ogni dispositivo ed è fornito dalla casa costruttrice (driver per la tastiera, driver per il mouse, driver per la stampante, ecc.) I driver Gestiscono la comunicazione da/verso la periferica Coordinano le richieste contemporanee di accesso alla risorsa Gestiscono le condizioni di errore Ex.: Fine carta nella stampante
Interprete dei comandi Riceve e interpreta i comandi formulati dall’utente e li traduce in richieste ai moduli sottostanti Fornisce l’interfaccia utente Sistemi a interfaccia grafica Seleziono comandi da menù a tendina Seleziono comandi tramite icone Sistemi a interfaccia testuale Utilizzo di apposito linguaggio per dare comandi Gestione di eventuali errori sintattici nella digitazione dei comandi
Il sistema operativo DOS All’inizio degli anni ’80 l’IBM (produttrice di grossi calcolatori) entra nel mercato dei Personal Computer La scelta di IBM fu di produrre solo l’hardware e far sviluppare il sistema operativo a un esterno: Bill Gates Nacque così il DOS e la Microsoft (e la fortuna di Bill Gates) La Microsoft è attualmente la più grande azienda produttrice di software
Il sistema operativo DOS MS-DOS MicroSoft Disk Operating System Il successo del DOS Sistema relativamente semplice nella gestione dei dati e della memoria Progenitore di Windows Sistema a interfaccia testuale I comandi sono una sequenza di lettere e numeri e sono inviati tramite la console La console di DOS può essere lanciata da Windows
Il sistema operativo DOS Un programma viene lanciato scrivendo il suo nome e premendo il tasto INVIO Il sistema operativo cerca il programma sul disco, lo carica nella RAM e viene eseguito dalla CPU Il nome di un file è costituito da un nome di max 8 caratteri più l’estensione di 3 lettere separata da un punto Ex.: tesi.doc
Il sistema operativo DOS La memoria può essere organizzata in cartelle (directory) secondo una gerarchia ad albero Esempio di pathname C:\TESTI\LAUREA\CAP1.DOC C: Indica l’unità hard disk A: Indica l’unità floppy disk
Il sistema operativo DOS Qualche esempio di comando Per “formattare” il floppy-disk FORMAT A: NOTA: l’operazione di formattazione re-inizializza la memoria del dischetto (e cancella tutti i dati) Per mostrare i file nella directory LAUREA: DIR C:\TESTI\LAUREA Per copiare un file in un altro: COPY CAP1.DOC CAP1_NEW.DOC
Il sistema operativo Windows Per rendere il sistema operativo più “user-friendly” (e allargare quindi il mercato dei PC) le case produttrici cominciarono a sviluppare interfacce grafiche La APPLE nel 1984 lancia il Macintosh Microsoft l’anno successivo lancia Windows 3.1 Inizialmente Windows si presentava come un programma lanciato da DOS A partire da Windows 95 esso appare come un sistema operativo autonomo (anche se la gestione della memoria è basata sempre su DOS) Versione ultima: Windows XP
Il sistema operativo Unix Unix è uno dei sistemi operativi più antichi Sviluppato dall’AT&T nel 1969 Nato per dare la possibilità al personale dell’azienda di lavorare contemporaneamente sugli stessi dati e sullo stesso progetto Diffuso soprattutto nel mondo universitario E’ il sistema operativo delle workstation e dei computer di medie e grandi dimensioni Lo crescita delle performance dei PC e l’avvento di Linux lo sta soppiantando
Il sistema operativo Unix Unix è un sistema a interfaccia testuale multitasking e multiutente Il multitasking non è solo tra programmi diversi ma anche all’interno dello stesso file Più utenti possono modificare/consultare i dati di un archivio nello stesso istante Questo permette a più persone di lavorare su uno stesso progetto A scopo di protezione dei dati un utente può accedere al sistema specificando un nome identificativo (username) e una parola segreta (password)
Il sistema operativo Linux Nel 1990 Linus Torvalds, uno studente dell’università di Helsinki che si diletta a scrivere programmi per calcolatori, compra un PC con processore Intel 386 e sistema operativo DOS Il sistema DOS non gli permette però di sviluppare i suoi sofisticati programmi D’altra parte il costo di una workstation con Unix (circa 5000 $) è proibitivo Linus decide allora di scrivere un clone di Unix per PC Nel 1991 nasce la prima versione di Linux
Il sistema operativo Linux Il file system è simile a quello di Unix e i comandi sono praticamente gli stessi Contiene inoltre una serie di driver per pilotare le periferiche tipiche di un PC La scelta vincente è stata quella di diffondere Linux su Internet gratuitamente Linux e’ a disposizione di tutti e tutti possono partecipare all’evoluzione del sistema
Il sistema operativo Linux Linux è diffusissimo nel mondo universitario e della ricerca e si sta diffondendo anche in altri ambiti grazie allo sviluppo di interfacce grafiche Gran parte dei Web Server è basato su Linux Le distribuzioni più diffuse del sistema operativo sono la Red Hat e Mandrake