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