1 L’ambiente SOFTWARE Matjaž Hmeljak software - presentazione 2 per definizione un calcolatore sa eseguire alcune istruzioni dell'insieme di istruzioni detto linguaggio macchina qualunque cosa si voglia far fare al calcolatore per funzionare il calcolatore elettronico deve avere un programma = una sequenza di istruzioni che gli dice cosa fare; l’insieme dei programmi preparati per un calcolatore = software software - presentazione 3 il calcolatore - pur con un repertorio di istruzioni abbastanza limitato (un centinaio di istruzioni) e' una macchina in grado di risolvere una gran quantita' di problemi appartenenti a categorie molto diverse, e' una macchina a uso generico un calcolatore puo’ essere programmato per fare molte cose in campi applicativi diversi vediamo alcuni tipi di software piu’ noto: elenco incompleto di software applicativo - 1 alcuni tipi di software piu’ noto: programmi/ 4 per gestire archivi dati (consultazione,aggiornamento.. per contabilita’, calcolo paghe, gestione magazzino, ... per scrivere testi (text editor) per scrivere e impaginare testi (word processor) per scrivere / impaginare libri o giornali (stampa) per disegnare: disegno tecnico (disegno a 2 dimensioni, a 3 dimensioni ), disegno a mano libera, per risolvere problemi di matematica, fisica, chimica... per preparare e gestire tabelle, statistiche, grafici, per progettare macchine, navi, calcolatori,... elenco incompleto di software applicativo - 2 5 per giocare (abilita’, strategia, riflessi, in gruppo,...) per modificare immagini esistenti (ritocco, colore, ..) per scrivere, modificare, suonare musica ... per scrivere / smistare posta elettronica per cercare dati disponibili in rete “internet” per creare, modificare, gestire dati in rete per comunicare direttamente con piu’ persone lontane per simulare ambienti virtuali per inviare su richiesta un film all’utente... per editare filmati video elenco incompleto di software applicativo - 3 6 per creare filmati di animazione 2D / 3D per codificare e crittare e poi trasmettere, decodificare e decrittare testi, suoni, immagini, filmati per gestire ... una fabbrica, lavatrice, frigo, cellulare, impianto di riscaldamento, serra, allevamento di pesci, semafori, impianti di casa, un'auto, un aereo, una nave, razzo con bomba preventiva, per aiutare le decisioni di un manager, di un medico, di un generale ... per gestire una comunicazione tra due o piu' utenti della rete: chiacchierata audio tra due o piu', video conferenza a piu' utenti in spazio virtuale 3D ... una spia software su un canale telefonico skype, ... un elenco completo solo dei tipi o categorie di sw un elenco completo solo dei tipi o categorie di sw ... non e' possibile ! 7 software: fisso e attivabile su richiesta 8 l’insieme dei programmi = software Quasi sempre un calcolatore ha una minima parte di programmi “fissi” (in memoria indelebile ROM) e la maggior parte di programmi residenti su una memoria “periferica” - un disco fisso (Hard Disk) - da dove sono richiamati (su richiesta) in memoria RAM software : base/programmazione/applicativi 9 Il software rappresenta la componente funzionale che permette la flessibilita' di un sistema di elaborazione. Le varie componenti logico - funzionali (programmi, moduli, librerie) del software possono essere classificate in modi diversi, spesso si raggruppano in tre grandi categorie, diverse tra loro per compiti e finalità: 1. software di base 2. linguaggi di programmazione e ambienti di sviluppo software 3. software applicativo. software : base/programmazione/applicativi 10 classificazione del software 1. software di base (sistema operativo, gestisce le risorse del calcolatore anche per conto degli utenti) 2. linguaggi di programmazione (traduttori) e ambienti di sviluppo software (debugger) e di utilita’ (gestione periferiche, “disk doctor”,..) permettono lo sviluppo di nuovi programmi 3. software applicativo: il calcolatore diventa una particolare macchina per risolvere un problema Attenzione: la distinzione non è rigida, poiché a volte si hanno sovrapposizioni ed intersezioni tra i compiti e le finalità storicamente assegnate alle diverse categorie. software base: sistema operativo = ambiente di lavoro il SISTEMA OPERATIVO e' il SOFTWARE DI BASE, e' una parte importante dei programmi, e definisce l’ambiente di lavoro del calcolatore (compresa l' interfaccia uomo-macchina) calcolatori diversi ma con lo stesso sistema operativo sono utilizzabili allo stesso modo. 11 sistema operativo = gestore di risorse 12 SOFTWARE DI BASE = SISTEMA OPERATIVO ll software di base è costituito da tutto un insieme di programmi che gestiscono (sovrintendono al corretto funzionamento di) tutte le unità logiche o risorse (HW e SW) componenti il sistema di elaborazione. le singole parti del SO gestiscono le “risorse” del calcolatore (HW e anche SW) e sono dette manager ... Ad esempio la parte che si occupa della memoria centrale e’ il “memory manager”, la parte che si occupa degli archivi su disco [una struttura HW e SW] e’ il “file manager” ... sistemi operativi ... un elenco Alcuni nomi di sistemi operativi: 13 CTSS (1962, IBM709, Time Sharing, 10 utenti) MULTICS (1965-69, GE-645, iniz.30 utenti, fino al 2000) uno dei primi file system multi-utente OS/360 (1968, IBM 360), casi particolari il TOS e il DOS [crisi del software, "the mythical month-man"] Unix (1969, nasce su macchine Digital PDP 11/xx) (vedere http://www.bell-labs.com/history/unix/ ) CP/M (1975, macchine con Z80 e Intel 8080) UCSD/Pascal (1977, Apple II, Rockwell 6502) [stava su due floppy da 110k !] OS9 (1979, Motorola 68000) sistemi operativi ... un elenco 14 Alcuni nomi di sistemi operativi: CTSS (1961, IBM709, Time Sharing, 10 utenti) MULTICS (1965-69, GE-645, iniz.30 utenti, fino al 2000) DOS/360 (1968, IBM 360) Unix (1969, nasce su macchine Digital PDP 11/xx) (vedere http://www.bell-labs.com/history/unix/ ) CP/M (1975, macchine con Z80 e Intel 8080) UCSD/Pascal (1977, Apple II, Rockwell 6502) OS9 (1979, Motorola 68000) MS.DOS (1981, macchine basate su Intel8088) Workbench (Amiga 1988) Windows95 (1995, macchine Intel 486 e Pentium) Linux (varie versioni, vari processori) Windows XYZ OS X.k Macintosh ecc (vedi su internet Altavista/Yahoo/Google ecc ... ) sistemi operativi 15 ** calcolatori diversi ma con lo stesso sistema operativo sono utilizzabili allo stesso modo: le macchine si presentano allo stesso modo e offrono lo stesso ambiente: es. Unix ** sulla stessa macchina possiamo installare diversi sistemi operativi: per ogni sistema X la stessa macchina si presenta come “la macchina X” un sistema operativo per piu' macchine 16 ** calcolatori diversi con diversa unita' centrale ma con lo stesso sistema operativo ==>> sono utilizzabili allo stesso modo – ad es. se si installa il sistema operativo Linux su un PC con processore Intel e su un Apple con processore Power PC allora entrambe le macchine si presentano allo stesso modo e offrono lo stesso ambiente. MA: La maggior parte dei SO sono legati a una particolare macchina (ad es. OS Apple) piu' sistemi operativi su una macchina 17 ** Viceversa, sulla stessa macchina possiamo installare diversi sistemi operativi: ad es. su un Pentium possiamo installare il sistema MSDOS, il sistema Windows YZ, il sistema OS/2, il sistema Linux, il sistema Oberon, e altri Per ogni sistema operativo X la macchina si presenta come “la macchina X” software base 18 Nota: il software di base è un insieme di programmi che gestisce (per conto nostro) tutte le unità logiche diremo in generale tutte le risorse - componenti il sistema di elaborazione. In questa ottica, il sistema operativo è senza dubbio il software di base essenziale al funzionamento corretto del calcolatore, e per l'uso agevole da parte dell'utente puo' esserci un livello di programmi sottostante al software di base: la parte di software di basso livello, a metà strada tra l’hardware vero e proprio e il software utente, viene chiamata firmware. firmware 19 firmware = parte di software permanentemente registrata all'interno del calcolatore, (indelebile) nelle ROM (e questo “congela” una macchina per un dato S.O.) e addiritura nella UC stessa, tipicamente sotto forma di microcodice (programma fatto di microistruzioni = microprogramma o µ - programma) bootstrap 20 firmware (ROM) è la parte del SO che si occupa della fase di partenza (all' accen-sione) del calcolatore, detta bootstrap(*), e della manutenzione di basso livello del sistema: sicuramente almeno la parte di avvio del sistema (programma che viene eseguito all’accensione) DEVE essere memoriz-zata in una ROM (in memoria permanente, non volatile). Il programma di boot esegue dei controlli sul sistema e poi legge la parte principale del sistema operativo da disco (floppy o HD) --------------------------------------- dal dizionario: bootstrap, noun: 1 a loop at the back of a boot, used to pull it on; 2 the technique of starting with existing resources to create something more complex and effective; 3 a technique of loading a program into a computer by means of a few initial instructions that enable the introduction of the rest of the program from an input device. s.o.: gestione risorse 21 Il sistema operativo (S.O.) di un elaboratore elettronico è il programma di gestione del calcolatore e di tutte le risorse (componenti HW e SW) ad esso associate un elenco incompleto di "risorse": x x x x x x x x x x unita’ centrale [provare ad associare processi (*) ad ogni risorsa in tabella memoria, la qualifica HW oppure SW] file system, dischi, (*)processo=un programma in sistema utenti esecuzione assieme alle risorse stampanti, hw (memoria centrale, periferiche) interfaccia utente, e sw (descrittori di stato, tabelle..) schermo, tastiera, rete, ecc s.o.: kernel e shell Il sistema operativo (S.O.) = i programmi di gestione del calcolatore, * si divide in moduli (subsystems) responsabili di una specifica parte da gestire: user management, user interface management, file system management, I/O management, (drivers per dischi, stampanti,..) memory management, (kernel) process management, (kernel) ... La parte centrale (che gestisce l'uso della U.C. e della M.C.) viene detta kernel (o core o nucleo), mentre l'interfaccia verso l'utente viene chiamata shell (o guscio esterno) 22 s.o.: driver 23 nota: ogni risorsa fisica e' gestita a basso livello da un programma detto "driver" della risorsa, (pero': memory manager, cpu scheduler...) il driver rende l'uso della risorsa piu' agevole ed evita di riscrivere le stesse procedure di uso (chiedi la risorsa, "apri" la risorsa, controlla stato della risorsa, trasmetti dati da/alla risorsa, rilascia la risorsa ecc) (es.: driver di stampante, driver del disco, driver della tastiera ecc) s.o.: modello a strati Lo schema logico sottostante, detto comunemente “a cipolla”, fa vedere come i vari sottosistemi che compongono il sistema operativo interagiscono tra di loro e con gli utenti del calcolatore. Schema SW di base Sistema operativo concettuale di Shell Database un sistema Programmi utente HW operativo: Fogli Kernel ogni strato usa Elettronici lo strato ecc Applicativi ... di rete sottostante, non altri... 24 gestione di una risorsa 25 per ogni risorsa del sistema il suo manager mantiene: ** per ogni risorsa del calcolatore (HW e SW) una tabella di stato (un “descrittore”) in cui memorizza lo stato della risorsa, (tipo, quantita’, libera/occupata, usata da chi, richiesta da chi (coda di attesa per la risorsa), limiti di quantita', limiti di tempo, ...) ** per ogni processo (programma in esecuzione) il SO ricorda che risorse ha, quali risorse chiede, quali limiti di uso ha (ad es.di tempo di u.c., o di spazio disco - un utente puo’ occupare al massimo N settori di disco) a che utente fa capo, che privilegi di accesso ha, se e’ attivo o in attesa di qualcosa, se e’ in esecuzione (usa l’ UC o e’ in attesa di essa) ecc nucleo o kernel del s.o. il nucleo del SO gestisce 26 l’ UC la MC i processi l’ UC - l’unita’ centrale e’ assegnata al programma in esecuzione (per definizione) per un tempo limitato, e poi passata ad altri programmi, a turni di tempo dT molto brevi (millesimo di secondo): effetto: come se ci fossero piu’ unita’ centrali (virtuali) a disposizione dei programmi in esecuzione (e quindi la multiprogrammazione) esecuzione in time-sharing P2 in attesa di u.c. processo 1 processo 2 processo 3 dT P2 in esecuzione tempo nucleo o kernel del s.o. il nucleo del SO gestisce 27 l’ UC la MC i processi la MC - un programma per essere eseguito deve stare in memoria centrale: il gestore dei processi per far partire un programma chiede al memory manager una parte della memoria centrale, che (se disponibile) e' assegnata al programma (spesso solo per la parte in uso corrente, e la parte del programma non attiva al momento viene lasciata su disco) problema: protezione dei programmi tra loro: in ogni caso solo una parte della MC viene usata da ogni programma; vi sono sempre piu' programmi in esecuzione ciascuno in una parte della memoria centrale; ogni programma non deve invadere zone di memoria assegnate ad altri programmi (e al s.o.); se lo fa, sara' l'HW a bloccarlo il S.O. come gestore risorse il nucleo del SO gestisce 28 l’ UC la MC i processi processo = programma (istruzioni+dati) + le risorse fisiche per eseguirlo (MC,periferiche..) + lo stato del programma (cioe’ dei suoi dati e dell’istruzione in corso) il SO deve assicurare il funzionamento corretto e sicuro di ogni processo - sia utente sia i processi di lui stesso (l'attivita' del SO implica l'esecuzione di piu'processi) processo = ... 29 ricorda: processo = programma + le risorse fisiche per eseguirlo + lo stato del programma (valori dei suoi dati e indirizzo istruzione in corso) OGNI programma in esecuzione DEVE avere una zona di memoria centrale (dove stanno le sue istruzioni e i suoi dati ) e il processore centrale (reale o virtuale) – in piu’ il S.O. deve sapere quali altre risorse ha chiesto / ottenuto e in che stato e’ in ogni istante (se e’ in esecuzione reale (ha il processore) o se sta aspettando il turno per il processore (ha solo un processore virtuale) o se sta aspettando qualche altra risorsa (ad es piu’ Mem Centrale, un accesso al disco, la risposta di una periferica ecc) le informazioni sono concentrate in una zona “descrittore” del processo ... e cosi’ per ogni risorsa del sistema (desrittore di risorsa)... il S.O. come gestore risorse: mutua esclusione 30 SO gestisce le risorse: risorse fisiche : U.C. , memoria, periferiche, … risorse logiche: file system, archivi, processi, … Tutte queste risorse sono "preziose", nel senso che spesso vi sono piu' richieste da parte di piu' processi per le stesse risorse - si crea una coda di attesa perche' in genere le risorse non sono condivisibili [utilizzabili] tra più programmi contemporaneamente, il S.O. come gestore risorse - mutua esclusione 31 Gestione delle risorse: in genere non condivisibili / non utilizzabili da più programmi contemporaneamente: * si pensi ad es. alla risorsa stampante: se due programmi si mettessero a stampare contemporaneamente, potremmo avere una pagina stampata a meta’ da uno e a meta’ dall’altro, magari ogni seconda riga (o ogni secondo carattere) appartiene ad uno dei due programmi... * peggio ancora se due programmi usano la stessa zona di memoria, cancellandosi i dati o le istruzioni a vicenda... Il SO (i vari manager del SO) risolve questi problemi della corretta assegnazione e della mutua esclusione nell'uso delle risorse ... il S.O. come gestore risorse - code di attesa 32 SO gestisce risorse - è compito del SO controllare la corretta utilizzazione delle risorse al fine di evitare conflitti tra diversi programmi e/o utenti. spesso vi sono piu’ richieste che non le risorse a disposizione - si ha allora un conflitto di richieste e quindi si creano code di attesa: se ci sono piu’ richieste (di uso di una risorsa) il SO deve gestire una coda di attesa per l’uso della risorsa, con criteri di equita’ e con varie priorita’ (ogni processo in attesa di una risorsa deve ottenere la risorsa entro tempi ragionevoli) il S.O. come gestore risorse 33 Per gestire le risorse del sistema il S.O. 1. mantiene lo stato globale del sistema (elenco e stato di ogni risorsa) in ogni istante mediante tabelle interne, 2. decide l'allocazione delle risorse mediante delle politiche di allocazione/deallocazione stabilite a priori, oppure cambiate dinamicamente sulla base del monitoraggio del carico di lavoro del computer stesso (politiche di scheduling) – gestione code di attesa 3. controlla l’uso delle risorse da parte dei processi (programmi, utenti) (risorse assegnate ai processi) 4. riprende in carico le risorse al rilascio il SO come interfaccia 34 SPORTELLO CHIUSO UTENTE INTERFACCIA CALCOLATORE il SO come interfaccia tra calcolatore e utente 35 Un altro importante compito del sistema operativo è quello di svolgere il servizio di intermediario -->> interfaccia tra l'hardware del calcolatore e l'utente dello stesso. Questo importante compito viene svolto dalla shell (guscio), parte del SO sempre attiva, che si occupa principalmente di ricevere e di interpretare le richieste di utilizzo del sistema (dell'hardware, ad esempio per registrare su disco una certa informazione) per poi inoltrarle correttamente (tramite chiamate al sistema operativo, system calls) ai vari moduli del nucleo specializzati in singole funzioni. interfaccia a riga comandi 36 come comunica l’utente al sistema che cosa vuole fare? “vecchio stile” : (MSDOS, UNIX) utilizzando uno schermo a testo (terminale "alfanumerico", non grafico) e una tastiera l'utente scrive i comandi per il sistema operativo (in un "command language" o "job control language"), una volta premuto l'invio questo comando viene interpretato e (se corretto) eseguito; il s.o. "a riposo" aspetta da tastiera un comando; es: ? copia file1.txt, file2.txt ? (si sottintende che l'esito del copia era ok) ?... interfaccia a riga comandi 37 interfaccia a righe di comandi: il sistema segnala che e’ in attesa di un comando (scrivendo sullo schermo una scritta di “pronto”, o “prompt”, che potrebbe essere ad es. un carattere solo, come il ? oppure il > , e poi l'utente inserisce il suo comando, ad es "time" e il tasto di invio: > time oppure il sistema scrive come "prompt" o segno di attenzione qualcosa di piu’ lungo, ad es.: ... 29/02/99 07:45:56 sh-2.05a root > interfaccia a riga comandi 38 Dopo il segnale di attenzione (prompt) l’utente scrive il suo comando (richiesta al SO) sulla stessa riga: ( in corsivo e rosso quanto scritto dall’utente ) 29/02/99 07:45:56 root > man time (richiesta di spiegazione del comando time, man sta per manual), al che il SO risponde visualizzando il testo relativo ... riportato nella prossima immagine: man time dell'unix: TIME(1) BSD General Commands Manual TIME(1) NAME time -- time command execution SYNOPSIS time [-lp] utility DESCRIPTION The time utility executes the times utility. After the utility finishes, time writes the total time elapsed, time consumed by system overhead, and the time used to execute utility to the standard error stream. Times are reported in seconds. Available options: -l The contents of the usage structure are printed. -p The output is formatted as specified by IEEE Std 1003.2-1992 (``POSIX.2''). DIAGNOSTICS The time utility shall exit with one of the following values: 1-125 An error occurred in the time utility. 126 The utility was found but could not be invoked. 127 The utility could not be found. Otherwise, the exit status of time shall be that of utility. 39 interfaccia a riga comandi 40 Dopo il segnale di attenzione (prompt) l’utente scrive il suo comando (richiesta al SO) sulla stessa riga: ( in corsivo e rosso quanto scritto dall’utente ) 29/02/99 07:45:56 C:> time 19:00:00 29/02/99 19:00:00 C:> l’utente ha modificato il tempo corrente (orologio del sistema) e il sistema e’ di nuovo pronto ad eseguire un comando - operazione spesso vincolata al livello di autorizzazione dell'utente ((se amministratore o no)) interfaccia a riga comandi - e se sbaglio? 41 l' interazione con il sistema a riga di testo presenta il problema che il comando = stringa di caratteri viene riconosciuto confrontando la stringa inserita dall'utente con una tabella di stringhe previste ==>> ogni comando DEVE essere inserito esattamente come previsto. Se inserisco ad es. il comando data (in inglese date) il sistema risponde: ... 29/02/99 07:45:56 C:> data invalid command e poi si rimette in ascolto … 29/02/99 07:45:56 C:> oppure: 29/02/99 07:45:56 bash: data: command not found o altri messaggi di poco aiuto, e non dice altro... interfaccia a riga comandi - date, time 42 Oppure (unix, prompt e’ uts $ ): inserisco ad es. il comando data (date dizione inglese) il sistema risponde: uts_130_k$ data ksh: data: not found [il sistema cerca tra i comandi uts_131_k$ che conosce, ma non trova...] mentre con i comandi date e time ottengo: uts_131_k$ date Fri Sep 25 18:38:55 MET DST 1998 uts_132_k$ time [quanto tempo macchina real 0m0.00s e’ stato usato finora] user 0m0.00s sys 0m0.00s interfaccia a riga comandi - e se sbaglio? 43 interfaccia con comandi su riga: dialogo veloce (l'UNIX ha 300 comandi di poche lettere, da 1 a 3 ...) consente di fare cose che con l'interfaccia grafica e' quasi impossibile ... MA ... va bene per "professionisti": e' necessario ricordare i comandi con le loro sintassi (manuale di aiuto per ogni comando...) NON va bene per "dilettanti" come noi ;-) > coppy mio.txt mio_copia.txt > ? not found [errore di battitura del comando] > copy mio.text mio_copia.txt > ? not found [errore di battitura del nome del file] > copy mio.text, mio1.txt > ? not found [err nome file ... ] … al che uno desiste e va a bere una camomilla ... meglio : dialogo "pilotato" con interfaccia grafica interfaccia a menu' 44 il sistema operativo fornisce un menu' : scegli cosa fare: scegli cosa fare: controllo file sospendi programmi logout documenti spegni risorse cambia utente altro l'utente puo' solo scegliere una delle opzioni presentate (ad es con i tasti di direzione su' e giu') ... in genere il comando selezionato da' a sua volta altri menu' ... l'interazione con menu' risale agli anni 80 (sistema Star della Xerox a Palo Alto, California) menu' e mouse 45 l'interfaccia "guidata" a menu' (per usare il sistema ) e' resa piu' facile con l'uso di un "puntatore" : un “mouse” (o sistema equivalente) con cui si muove un cursore [la posizione corrente] sullo schermo. il sistema mostra sullo schermo tutto quello che si puo’ fare (funzioni principali) con un menu' grafico; l’utente sceglie (seleziona il programma che vuole attivare) con lo spostamento del cursore e poi conferma la scelta con un tasto sul mouse in tal modo si evita il dialogo: > coppy mio.txt mio_copia.txt > ? not found [errore di battitura del comando] > copy mio.text mio_copia.txt > ? not found [errore di battitura del nome del file] interfaccia a riga comando - a menu' 46 qui a fianco sopra: videata di un sistema unix, sono mostrati: il comando cd (change directory) cambia cartella e il comando ls (lista) file o cartelle contenuti in una cartella; si noti che l'invito del sistema da' la posizione corrente della cartella "di lavoro" o cartella corrente; sotto l'equivalente del comando ls in forma grafica: cliccando su una cartella il sistema mostra una finestra con i file e le sottocartelle contenute (qui la cartella "prova" contiene 4 oggetti); selezionando e attivando uno dei 4 oggetti equivale al cd (cambia cartella corrente) o alla richiesta di esecuzione dell'oggetto.... interfaccia a menu' 47 videata iniziale di Xcode, sistema di sviluppo program mi del S.O. 10.4 della Apple; il sistema "chiede" cosa si vuole fare, offrendo un menu di scelte in alternativa (File, Edit, View, ...) interfaccia grafica: con il mouse muovo il cursore e seleziono un'opzione principale (File) e in risposta il sistema mi da' un menu' di opzioni secondarie (qui: New Project, New File, New Empty File, Open...) menu e mouse ... storia 48 Sistemi dove l’utente interagisce con il SO mediante un cursore sono detti sistemi a finestre con menu'a tendina tra i primi sistemi a finestre realizzati nel 1981 alla Xerox e’ il sistema Star, con mouse, ikone, finestre, con linguaggio SmallTalk-80 ("zio" del C++) e mesa ("zia" del linguaggio Modula/2) (... nel 1981 l’IBM realizza il PC con MSDOS e 8088) a tale sistema si "ispiro’ " la Apple per il sistema Lisa (gia' nel 82) doveva essere il successore del Apple II, ma fu un fiasco commerciale), e poi per il Mac (gennaio 84) (l’IBM esce con il PC/AT con il 286) ... e poi (dopo...) si ispirarono l'Amiga, l'Atari, la MS, "last but not least" con il sistema Windows 3.0, l'IBM con OS/2,... (ci fu una lite giudiziaria sull'uso del sistema a menu', finestre e icone tra Apple e MS...) ritorneremo su entrambe le modalita’ di “comandare” un sistema SO - riassunto 49 Riassumendo, il S.O. è il gestore delle risorse di cui è composto il sistema di elaborazione: risorse fisiche : memoria, periferiche, CPU. risorse logiche: file system, archivi, processi, task, risorse su rete (server, stampanti, ...) -> gestione per conto di uno o piu’ utenti [multiuser] e per conto di uno o piu’ programmi [multitasking] in esecuzione in un dato istante di tempo. SO - rissunto 50 il S.O. gestisce le risorse di cui è composto il sistema di elaborazione (fisiche : memoria, periferiche, CPU, e logiche: file system, archivi, processi, task) * per conto di uno o piu’ utenti [multiuser] e per conto di uno o piu’ programmi [multitasking] mediante opportune "interfaccie" o convenzioni: per l'utente, sono disponibili un certo numero di comandi ("per eseguire un programma cerca la sua ikona e clicca su essa", "per copiare un file seleziona e trascina", "panello di controllo", ecc ...) per un programma, con una libreria di sottoprogrammi disponibili al programma (system call) ... Software: MSDOS UN SISTEMA OPERATIVO ... 51 PICCOLO, vecchio e brutto : “il” DOS della MS DOS = Disk Operating System la parola DOS significa letteralmente “Sistema operativo per sistemi a dischi”. Nota Bene : Il termine DOS risale agli anni 66-68, quando entrano in uso i primi sistemi gestiti da programmi memorizzati su disco (e non piu’ su nastro magnetico, come erano i precedenti TOS (tape operating system), di accesso molto piu’ lento!) es.: DOS/360 della IBM (1967-68) Software: MSDOS 52 Oggi per “ il “ DOS si intende il MS/DOS Nel 1980 l' IBM si apprestava a lanciare il primo PC, e scelse il microprocessore Intel 8086 (a 8/16 bit) e commissiono' a una piccola ditta software la realizzazione di un semplice sistema operativo, destinato a soppiantare l’imperante CP/M (controlprogram-monitor) basato sul microprocessore Z80 e/o l' Intel 8080; all'epoca la Apple aveva 4 anni, continuava a vendere l'Apple II (con R6502) e aveva "quasi finito" il progetto Lisa, Sinclair progettava lo Spectrum (Z80), c'era il Commodore 64, ... primi home computer con videogiochi). Software: MSDOS 53 MS-DOS eredito’ molti concetti gia’ presenti in SO del tempo (es. CP/M, o UNIX) in versione ridotta. La ditta in questione (Microsoft) era gestita da un “giovane bravo e ambizioso”, Bill Gates, il quale capì subito l’importanza di realizzare un sistema operativo molto compatto, (erano i vincoli del tempo per un personal), ma facilmente espandibile. MS-DOS, la versione Microsoft del DOS divenuta lo standard mondiale per i PC (1981-1998), era infatti composto da pochi programmi residenti in rom e una serie di programmi residenti su disco (con le funzionalità di un sistema operativo per sistemi con memorie di massa a dischi magnetici) Software: MSDOS 54 Si noti che il DOS 1.0 aveva un file system a un solo indice, per floppy da 350kbyte... nel DOS 2. fu aggiunto un file system a piu' livelli, con piu' cartelle... il DOS ha avuto successo perche' permetteva agli sviluppatori del sw a scrivere programmi per un mercato molto vasto e abbastanza standardizzato, ma.. non ha mai risolto vari problemi: * problema di protezione della memoria * multi utente - file system multi utente * interfaccia piu' amichevole Fondamenti di informatica - Software 55 Anche se il DOS ha terminato il suo ciclo di vita, soppiantato dai sistemi a finestre (ambienti di lavoro visuali, windows systems, di cui parleremo tra breve), (la MS ha cominciato a vendere Windows agli inizi delgli anni 90, circa dopo 10 anni di vita del MSDOS) un minimo di nozioni DOS e' opportuno avere ... L’interfaccia dell’utente nel DOS e’ l’interprete dei comandi (inseriti da tastiera); L'interprete comandi e' poco intelligente (i comandi devono essere scritti esattamente secondo le sue regole) ma in compenso molto compatto (e’ il file command) – doveva stare in memorie molto piccole (sotto 30k byte)! software – il DOS 56 nota: il dos si puo' "raggiungere" (scavalcando windows) in vari modi, ad es. alla fine di una sessione [ma nelle nuove versioni di Windows non c'e' piu' ] (cosa vuoi fare: riavvia il computer spegni standby riavvia il sistema in modalita' DOS ...) oppure nel menu' dei programmi vedere ! Dos - comandi DOS 57 Un comando è il modo per far eseguire al computer un compito / un lavoro, come ad esempio, la copia di un file. I comandi sono istruzioni per il SO: alcuni comandi sono molto semplici: ad es. c: > date [c:> e’ la scritta di “invito” o di “prompt”, con cui il sistema dice: sto aspettando un tuo comando; dice anche che l'unita' disco corrente e' l' HD di nome "c:" (*) ] produce la scritta con la data corrente (quella che c’e’) anche c:> delete *.* e’ molto semplice - ma anche molto pericoloso ;-) .... --------------------- (*) storicamente i primi due dischi erani i floppy A: e B: DOS: riga comando 58 La riga di comando, battuta sulla tastiera e visualizzata sul display, permette di lanciare un comando (cioe’ di far caricare in memoria da disco e poi eseguire un programma) il comando e’ seguito eventualmente da altre informazioni (dette opzioni, sono "operandi" del comando), fornite al computer per fare in modo che esso possa eseguire la funzione richiesta in modo voluto. La riga di comando termina quando viene premuto il tasto <Enter> e puo’ essere modificata (finche’ non si batte enter) cancellando quanto gia’ scritto e poi riscrivendo. DOS: il file system dos 59 FILE SYSTEM DOS (e così anche la totalità dei sistemi operativi attuali) organizza logicamente le informazioni memorizzate nel disco in un “archivio generale virtuale” detto FILE SYSTEM, costituito da una struttura composta da due entità principali: i file (archivio, insieme di registrazioni o record) i directory (cartella, indice) – non c'erano nel DOS 1 il file system e' la struttura logica della memoria di massa (la struttura fisica sono settori,tracce...) un sistema puo' avere piu' dischi, o volumi, ogni volume e' identificato da un nome, es. c: e’ un volume (di solito e’ il primo disco fisso) DOS: il file system dos 60 FILE (archivio) e' l' entità logica principale per l'archiviazione di dati sul calcolatore, e'un complesso di dati considerato come un oggetto unico all’interno del file system (con attributi: un nome, una posizione su disco, una data di creazione, una lunghezza (in byte) e altre informazioni Per il file system del DOS un file e' una serie di informazioni distinta da un'altra. Ogni file e'marcato anche come "tipo" di dati, ad es. un file testo potrebbe avere il nome Pollicina.txt dove Pollicina e' detto nome del file, e .txt e' detta l'estensione del file (il tipo del file), in genere: nome.estensione DOS: il file system dos: nome e estensione del file estensione: es. sto utilizzando un programma di elaborazione di testi per scrivere una lettera, il documento elettronico realizzato sara' memorizzato (per poterlo riutilizzare in seguito) in un file, ad es.: matjaz.txt oppure toni.doc .txt per un testo ASCII, .doc per un documento Word, .exe per un programma eseguibile, .dat potra' esserre usato per dati ecc nei s.o. a interfaccia grafica l'estensione e' stata conglobata nell' "icona" che rappresenta il file l'estensione non si vede.... 61 Fondamenti di informatica - Software 62 DIRECTORY o CARTELLA o INDIRIZZARIO Entità con cui si costruiscono “alberi” di gruppi di file, ovvero strutture gerarchiche, dove alla radice c’e’ appunto l’indirizzario radice, e in tale indirizzario vi sono sotto-indirizzari “figli” o nodi intermedi, che a loro volta "contengono" o rimandano a sott-sottoindirizzari o a file dati ecc Come in un armadio gruppi di documenti omogeneamente classificati vengono archiviati in raccoglitori opportuni, questi in cassetti ecc, per poter ritrovare un documento più semplicemente, cosi’ un directory intermedio e’ una “cartella” in cui vi sono documenti (file) o altre (sotto) cartelle. struttura dei file - file e cartelle .... 63 in figura: c: e' il volume ed e' la radice del file system, in esso sono contenute due cartelle (libri e musica) e un file dati prova.txt; nella cartella musica vi sono piu' cartelle (classica, world..), nella cartella classica vi sono le cartelle mozart e rossini, in mozart vi sono due file ... ad es. il nome completo di donGiovanni.txt e' c:/musica/classica/mozart/donGiovanni.txt C: libri musica classica mozart rossini world prova.txt donGiovanni.txt ZauberFloete.mov DOS: il file system dos: nome e path del file 64 posizione del file nel file system o "path name" Il nome del file da solo non basta a identificare un file, come per un indirizzo di una persona devo dare ... ""nome,cognome,isolato,citta',regione,stato..."" cosi' per individuare un file si deve dare il "nome" completo, ovvero il percorso delle cartelle dalla cartella radice (contiene tutti i file) + nome + estensione) univoco, ad esempio: c:\storia\sumeri\algoritmi\volume.txt il percorso e' c:\storia\sumeri\algoritmi\, il nome del file e' volume.txt file system: path e cartella di lavoro 65 posizione del file nel file system o "path name" ad esempio: c:\storia\sumeri\algoritmi\prova.txt ==>> c:\storia\sumeri\algoritmi\prova.txt e' il nome del file completo C: chimica storia sumeri algoritmi scrittura greci prova.txt cane.doc file system: path e cartella di lavoro 66 per individuare un file devo dire dove sta; se pero' una cartella e' selezionata come cartella "corrente" o "di lavoro" allora all'interno della cartella corrente basta dare il nome ed e' sottinteso "in cartella corrente" qui sotto "algoritmi" e' la cartella corrente, prova.txt e' il nome del file in algoritmi: C: chimica storia sumeri algoritmi scrittura greci prova.txt cane.doc file system: creazione file nuovo: testi e file binari 67 chi crea un file nuovo ? alcuni sono creati direttamente dall'utente (es copia un file), altri sono creati con le applicazioni, come un elaboratore di testi (wordprocessor), oppure da un compiler (traduttore di programmi) ecc In ogni caso il DOS deve sapere dove c'e' spazio libero per memorizzare un nuovo file - un file system deve gestire lo spazio libero/occupato sul disco! I file creati da un un compilatore, da un linker, da un wordprocessor contengono in generale codici illeggibili (istruzioni di formattazione, istruzioni in linguaggio macchina,...) ed altre informazioni, usate dal calcolatore stesso e/o necessarie affinché il sistema e le applicazioni funzionino in modo corretto Fondamenti di informatica - Software 68 Per visualizzare il modo in cui DOS elenca i file, si può usare il comando DIR (elenco contenuto directory), digitando i seguenti comandi al prompt dei comandi (ricordandosi di premere <Enter> dopo aver digitato ogni comando) [n.b.: <enter> sta per UN tasto !] C: cd \DOS <enter> C: dir <enter> (cambia directory/cartella corrente) (dimmi cosa c'e' nel dirett.corrente) Le informazioni che ora scorrono velocemente sullo schermo sono l’elenco dei programmi di utilità forniti con DOS. Tutti i programmi di utilità (memorizzati in singoli file) forniti con DOS vengono archiviati in un'unica directory \DOS nel volume C: Fondamenti di informatica - Software 69 È probabile che sul calcolatore in uso verranno caricati centinaia o migliaia di file e quindi potrà diventare difficile ritrovarli al momento necessario. Per organizzare meglio i file allora si raggruppano mediante le directory. I programmi “di utilita’ ” nel DOS sono messi in C:\DOS (la barra \ separa i nomi) Se l'utente desidera individuare uno di questi file, dovrà cercarli nella directory avente come “path” C:\DOS. Fondamenti di informatica - Software 70 una directory e'creata dall'utente o da un'applicazione: md (make directory) rd (remove directory) es voglio creare una cartella esempi alla radice del C:\ eseguo: cd c:\ md esempi cd c:\esempi ora la cartella corrente e' c:\esempi ! se voglio eliminare tale cartella basta eseguire il comando remove directory : rd esempi Fondamenti di informatica - Software 71 DOS indica la directory di lavoro visualizzandone il nome al prompt dei comandi. Il prompt dei comandi visualizzato di seguito, ad esempio, indica che la directory di lavoro e' DOS. C: \DOS> mentre C:\partec\introd> indica che il direttorio corrente e' la cartella introd che sta nella cartella partec che sta sul disco C: La directory di lavoro è detta directory corrente. Conoscere la directory corrente aiuta non solo a trovare i file, ma rende anche più semplice l'eventuale passaggio ad un'altra directory. Fondamenti di informatica - Software 72 DOS permette all'utente di trovare ed utilizzare i file presenti in qualsiasi directory, qualunque sia la directory corrente. Ad es. se inserisco il comando: c:\DOS>c:\mio\giochi\superfigo.exe (il comando e’ inclinato) allora il DOS va a cercare il programma superfigo.exe nella cartella (nel directory) c:\mio e da qui nella sottocartella giochi, poi lo carica in memoria e lo esegue... Se i comandi DOS vengono applicati ai file presenti nella directory corrente, saranno più brevi. in ambiente a finestre questi comandi sono molto piu' immediati: per passare da una cartella all'altra basta selezionare la cartella voluta... dos - saggini 73 nota: un volume puo' corrispondere ad un disco fisico oppure ad una parte di un disco fisico (magari di qualche altra macchina collegata in rete con la nostra) ad es. la procedura di inizializzazione della connessione di un utente "studente" al server di ingegneria rende disponibili due "dischi" virtuali nell'ambiente del laboratorio della facolta' di ingegneria che sono S: (serving4, con i programmi disponibili agli studenti) H: (sempre su serving4, la memoria privata di uno studente sul disco del server) X: (su serving4, mem. privata di studente su server) (situazione 2005 ;-) Fondamenti di informatica - Software 74 Le directory possono contenere altre directory, così da costruire un albero di directory. Una directory contenuta in un'altra directory è detta sottodirectory. La creazione di sottodirectory permette di catalogare i file in modo più efficace. Si immagini che la directory sia una grossa scatola, al cui interno sono contenute scatole più piccole (sottodirectory): questa successione può proseguire all'infinito (vi sono sottodirectory della sottodirectory, ecc.). I file possono essere contenuti in qualsiasi livello di questa successione. Tutte le directory sono sottodirectory, tranne la directory principale o root (radice) dell'albero di directory. Fondamenti di informatica - Software 75 ROOT GIOCH DISCH PACM RETE CHIM. CLASSI ZAPPA Fondamenti di informatica - Software 76 La directory principale è il punto di partenza di tutte le altre directory all’interno di un disco (o volume). È rappresentata da una barra rovesciata (ad es. A:\). (A: e’ un volume, di solito un floppy) Quando la directory principale è la directory corrente, il prompt dei comandi avrà il seguente aspetto: C:\> I1 “prompt” illustrato sopra indica che ci si trova nella directory principale della unità C. Dato che la directory principale costituisce la base di tutte le altre directory, non è possibile eliminarla. Si consiglia di archiviare nella directory principale il minor numero possibile di file. Fondamenti di informatica - Software Esiste comunque un numero massimo di file che la directory principale può contenere e in ogni caso e’ preferibile utilizzare le directory per meglio organizzare l'archiviazione dei file. Questa è la ragione per cui, all'avvio del sistema, appare il seguente prompt dei comandi: C:\> Il prompt dei comandi mostrato sopra indica che l'unità C è l'unità corrente (volume c:), e che la directory principale, rappresentata da una barra rovesciata (\), è la directory corrente. 77 Fondamenti di informatica - Software 78 Come una directory è costituita da un gruppo di file, cosi un'unità disco (o volume) è costituita da un gruppo di directory organizzato ad albero (tree): il file system. Esso è l'insieme organizzato di tutte le directory presenti su un disco, anzi, su tutti i dischi del sistema. Se un sistema ha piu’ unita’ disco, oppure se l’unita’ disco e’ organizzata in piu’ parti (“partizioni”) logicamente separate, oppure se abbiamo accesso ad un disco remoto su rete (file server), o un unita’ CD ecc - ogni unita’ e ogni partizione sono un volume del file system. Fondamenti di informatica - Software Volume (Unità Disco) Il nome di un'unità in DOS è rappresentato da una lettera singola maiuscola (A:, B:, ..., Z:) La prima unità disco floppy è l'unità A, la seconda unità disco floppy, se presente, è l'unità B. Il disco rigido, o almeno parte di esso (si parla di partizione del disco), è detto unità C. 79 Fondamenti di informatica - Software 80 Se l'unità corrente è l'unità A e la directory corrente dell'unità è ESEMPIO, il prompt dei comandi avrà il seguente aspetto: A:\ESEMPIO> Se sul sistema è presente più di un disco rigido, oppure se si utilizzano il CD-ROM o una rete, saranno disponibili più lettere di unità (D:, E: e cosi via). ogni unità, di qualunque tipo essa sia, contiene una directory principale. Fondamenti di informatica - Software 81 Comandi DOS residenti: Alcuni comandi DOS che sono spesso utilizzati vengono custoditi nella memoria del sistema per un accesso rapido. Vengono caricati da un file speciale, chiamato command.com (in cui risiede parte del S.O.) Ciò rende più semplice la loro esecuzione. Questi comandi sono detti residenti appunto perché risiedono sempre nella memoria primaria del computer . Non sono molti, poiché altrimenti occuperebbero troppo spazio in memoria. Questi comandi possono essere lanciati quando ci si trova al prompt di DOS. Non è necessario spostarsi in un drive o directory particolare per eseguirli. Fondamenti di informatica - Software 82 Comandi esterni: Alcuni comandi usati con minor frequenza (oppure troppo grandi) non vengono caricati automaticamente in memoria. Sono chiamati comandi esterni, e vengono memorizzati su disco. Qualunque programma in linguaggio macchina (versione direttamente eseguibile) puo’ essere attivato in questo modo - se il DOS riesce a trovarlo Sono caratterizzati da estensione .com o .exe. es.: scan.exe edit.com format.com diskcopy.com xcopy.exe grep.com ... Fondamenti di informatica - Software 83 se inserisco un comando esterno, il DOS recupera il file di comando dal disco (lo legge e lo carica in memoria centrale) e lo esegue, ad es: c:\ > edit va in esecuzione il programma edit c:\> tria2 va in esecuzione il programma tria2.exe – SE si trova nella cartella corrente oppure in una delle cartelle indicate nell'elenco (disponibile al sistema e modificabile dall'utente) dei "percorsi" o "path" privilegiati da provare (se invece tria2.exe non c'e' in alcuna cartella [corrente e elencata nei path], avremo un messaggio di errore !) 84 Es.: BACKUP, RESTORE e DISKCOPY sono comandi esterni, e non potranno agire se DOS non ha accesso alla directory contenente i file di comando (di solito \DOS). La memoria utilizzata dal comando viene liberata quando esso ha terminato il suo compito (oggi nei sistemi a finestre e' abituale avere piu' programmi residenti in memoria, pronti per essere eseguiti / ripresi a meta' esecuzione ) Fondamenti di informatica - Software 85 DOS (di solito) viene configurato in modo tale che sia consentito all’utente di reperire sempre i comandi esterni se questi non si trovano nella directory corrente (tramite la “variabile di sistema” PATH che lista l’elenco dei percorsi di ricerca delle applicazioni che si vogliono usare di solito. In risposta al comando “path” C:\path otteniamo ad es.: PATH=C:\DOS;C:\JDK116\BIN;C:\BORLAND\BIN che mostra i direttori dove il DOS andra’ a cercare un comando (e se non lo trova, dira’ “comando non valido” Fondamenti di informatica - Software 86 L’elenco dei comandi esterni si trova nei manuali..., e si rimanda all'apposito comando di aiuto HELP talvolta presente nei programmi per la spiegazione su che cosa facciano caso per caso. ... non è compito di questo testo entrare nel dettaglio del funzionamento dei singoli comandi DOS, non appena avete a disposizione un PC spendete un po’ di tempo a provarli.... Fondamenti di informatica - Software 87 quanto detto vale per il dos, ma con qualche “piccola” modifica vale anche per unix o linux senza interfaccia grafica. il modo di attivare dei programmi (cioe’ di dare dei comandi) in un sistema a finestre e’ ben diverso, MA i concetti per quanto riguarda la struttura dei file e delle cartelle sono gli stessi... l’utente in questo caso ha a disposizione dei menu’ di scelte possibili, e si limita a selezionare una di esse. vedremo meglio piu’ in la’ Fondamenti di informatica - Software 88 software applicativo Con il termine software applicativo si intendono l’insieme dei programmi che permettono di specializzare il funzionamento dell'elaboratore per consentire di svolgere al meglio quel particolare compito che l'utente richiede. I software tools o strumenti software (programmi di utilita’) sono logicamente esterni al sistema operativo così come viene rilasciato dalla casa costruttrice, e sono un particolare tipo di software applicativo. Fondamenti di informatica - Software 89 Si usano i termini software tool o utility quando si indicano quei programmi, ( esterni al sistema operativo) che sono di corredo a particolari dispositivi (come le periferiche, esempio i tool di controllo sonoro sulle schede MIDI), o che sono molto generali (quali ad esempio PCTOOLS e Norton Utilities, che permettono la manutenzione corretta del sistema MS-DOS (attualmente (2002) in svendita su rete ...) Fondamenti di informatica - Software 90 Si parla invece di package quando si indica una collezione di programmi e strumenti atti a un particolare scopo (ad es. wordprocessing, fogli elettronici o spreadsheets, ecc.). Lo scopo principale dei linguaggi di programmazione (e degli ambienti di sviluppo software associati) è quello di permettere che l’utente - programmatore sia in grado di realizzare nuovo software applicativo o adattare uno già realizzato, al fine di risolvere i problemi dettati dalle esigenze dell’utente stesso. Fondamenti di informatica - Software fine del capitolo di introduzione al software ai s.o. al dos segue il capitolo di introduzione ai linguaggi e grammatiche, e poi algoritmi e infine il linguaggio C 91