Sistemi Operativi
1
Sistema operativo
Il sistema operativo (Operating System - OS):
– offre le operazioni base necessarie per:
♦
l’uso efficace del computer mediante funzionalità che non sono
fornite direttamente dall’hardware
♦
agisce da intermediario fra l’Utente e l’Hardware, con lo scopo
di fornire un ambiente nel quale l’utente possa eseguire i
programmi applicativi in maniera “sicura” ed efficiente
– è un insieme di programmi che gestisce tutte le funzioni
basilari di un computer (gestione disco, tastiera, video,
mouse, reti, ecc.)
– installato nell’hard disk, è un software (di sistema) che
viene caricato all’accensione del computer (fase di boot)
e rimane attivo fino allo spegnimento
2
Sistema operativo - funzioni
• esegue il boot
• gestisce la memoria centrale (RAM)
• gestisce i dispositivi di input/output (disco,
stampante, tastiera, video, mouse, ecc.)
• gestisce l’organizzazione logica dei file
• gestisce le connessioni alle reti e le relative
comunicazioni di dati
• Gestisce il caricamento ed esecuzione di
programmi
• Gestisce gli account degli utenti
3
Sistemi operativi - tipi
Mondo MICROSOFT Windows
Hp /UX
Mondo Unix - Linux
4
Sistemi operativi - tipi
Sistemi operativi più usati:
– Microsoft Windows
– Linux
– Unix (Sun Solaris)
– MacOSX di Apple (per Macintosh)
5
Microsoft Windows
• Vent’anni di versioni:
– 1.0 (1985) - 2.0 (1987) - 3.0 (1990) – 95 – NT –
98 – 2000
• Penultimo: XP
• Ultimo (2007): Vista
• Esistono anche versioni specifiche per
dispositivi palmari: Windows CE e Pocket PC
6
Unix
• Unix è utilizzato principalmente in ambito
aziendale ed in particolare su computer inseriti
in rete
• Sviluppato dal Computing Science Research
Group dei Bell Laboratories AT&T
• Nato nel 1969 (prima versione in lingaggio
assembly), si è diffuso rapidamente in ambito
accademico grazie al fatto che i sorgenti
(scritti in linguaggio di programmazione C dal
1973) venivano inviati gratuitamente
• Oggi, lo Unix più diffuso è Sun Solaris
7
Linux
• Nel settembre 1991 viene completata la versione
0.01, resa liberamente disponibile sul server
dell’università di Helsinki da Linus Torvalds
• Il motivo di tanto successo è stato dovuto alla
possibilità di reperire liberamente il codice sorgente
di Linux
• 16 Gennaio 1992: viene rilasciata la versione 0.12
che porta novità a livello legale riguardanti la
licenza
– In precedenza era esplicitamente vietato ottenere un
qualsiasi ritorno economico dalla sua diffusione
– Da questa versione viene adottata la GNU General
Pubblic License
• 14 Marzo 1994: si arriva alla versione 1.0
8
Struttura del Sistema Operativo
9
Sistemi operativi - componenti
• Kernel (nucleo) – la parte più vicina all’hardware
• Programmi di gestione dei dispositivi (driver)
• Interprete dei comandi
• Gestore della memoria primaria
• Gestore dei processori
• Gestore dell’I/O
• Gestore dei file (File System)
10
Sistemi operativi - componenti
Hardware
Sistema Op.
• Elementi principali di un sistema operativo e
dei componenti hardware:
Kernel del Sistema Operativo (gestione memoria, CPU)
Sottosistema di gestione Input/Output
Driver
SCSI
Driver
Keyboard
Driver
Mouse
Driver
PCI Bus
Driver
Floppy
Driver
ATAPI
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
ATAPI
Devices
(es. CD-ROM)
Meglio fare un passo indietro…
11
Sistema di Elaborazione + Utente
Hardware
Software
UTENTE
…
APPLICAZIONI
Sistema Operativo
?
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
CD-ROM
12
Un quadro più preciso
Hardware
Sistema Operativo
SW
UTENTE
…
APPLICAZIONI
Interfaccia utente
Gestione file system
Gestione memoria, Gestione CPU
Sottosistema di gestione Input/Output
Driver
SCSI
Driver
Keyboard
Driver
Mouse
Driver
PCI Bus
Driver
Floppy
Driver
ATAPI
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
(es. CD-ROM)
13
Scopi di un Sistema Operativo
1. Rendere disponibile un’interfaccia user-friendly
(amichevole) per l’interazione uomo-macchina
2. Fornire un supporto interattivo e per utenti multipli (nel
caso di sistema multi-programmato o multi-tasking)
2.1 Gestire i Processi (e l’uso della CPU)
2.2 Gestire la Memoria Centrale
1. Fornire un supporto uniforme per l’Input/Output
2. Gestire la memoria secondaria
14
Prima impressione
• Se l’impressione che avete avuto è che:
– il Sistema Operativo gestisca tutto,
– senza il Sistema Operativo, la vita degli informatici
professionisti sarebbe molto più complessa
– senza il Sistema Operativo, la vita degli utilizzatori
dell’informatica sarebbe molto più complessa
– l’evoluzione e la diffusione dell’informatica si deve in
larga parte anche ai progressi nel campo dei sistemi
operativi
… siete sulla buona strada per capire
15
Funzioni del Sistema Operativo
• Il Sistema Operativo è un software (di sistema)
sempre attivo, ovvero sempre caricato in
memoria centrale, in tutte le fasi:
– Fase di avvio (bootstrap)
– Fase di funzionamento
– Fase di spegnimento
16
Fase di avvio: BOOTSTRAP
• Fase iniziale che, all’accensione del computer,
carica il Sistema Operativo in memoria
principale (RAM) per poterlo rendere attivo
• Il bootstrap avviene in fasi successive:
– prima viene caricata una piccola parte che si trova in un
supporto di memoria elettronica permanente (ROM),
che sa dove andare a prendere e caricare un’altra, ...,
– fino a che tutto il Sistema Operativo (necessario) è in
memoria centrale e in esecuzione
17
Bootstrap
18
Fase di spegnimento: SHUTDOWN
• Quando il computer è in funzione, utilizza molti dati
temporanei che (per efficienza) vengono mantenuti in
memoria centrale (RAM) e solo periodicamente o a
richiesta vengono memorizzati su memoria secondaria
(disco)
• Lo shutdown consente di “fare ordine e pulizia”:
– le informazioni utili temporaneamente in RAM vengono
copiate su memoria secondaria che non è volatile
– le informazioni non necessarie vengono eliminate
– i “canali” aperti vengono chiusi, ecc.
• Se lo shutdown non viene effettuato correttamente
(es., guasto, black-out) c’è il rischio di perdere
informazioni utili o di trovarsi con dati incongruenti
19
Componenti
• I Sistemi Operativi sono generalmente
costituiti da un insieme di moduli, ciascuno
dedicato a svolgere una determinata funzione
• I vari moduli del Sistemi Operativi
interagiscono tra di loro secondo regole
precise al fine di realizzare le funzionalità di
base dalla macchina
20
Componenti
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del File System
Gestore della
Memoria Centrale
*KERNEL
21
Componenti
• Nucleo (kernel)
• Costituito da quei programmi che realizzano le funzioni più
critiche e più vicine all’hardware come Operazioni di I/O,
Gestione dei programmi “di base”, Gestione del controllo dei
processi
• File System
• Gestisce la memorizzazione, il reperimento,il trasferimento
delle informazioni contenute nelle memorie di massa.
Consente all'utente di organizzare tali dati servendosi delle
strutture logiche e delle funzioni ad alto livello
• Gestione Memoria
• Interfaccia utente (“Shell”)
• Manipolazione (visuale) ed amichevole di file e directory,
Informazioni sullo stato, Caricamento ed esecuzione di
programmi
22
Kernel del Sistema Operativo
• Kernel (nocciolo, nucleo)
Contiene i programmi per la gestione delle
funzioni base del calcolatore
• Kernel suddiviso in moduli. Ogni modulo ha una
funzione diversa
• Funzioni più importanti:
– gestione processore
– gestione processi
– gestione memoria (principale e secondaria)
– gestione dispositivi di I/O
23
Shell del Sistema operativo
• Shell (guscio): interfaccia tra SO e utenti
• Di solito grafica (GUI – Graphical User
Interface), ma anche testuale
24
Interfaccia utente
25
Componenti
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del File System
Gestore della
Memoria Centrale
*KERNEL
26
Interfaccia utente
• Tutti i Sistemi Operativi implementano dei
meccanismi per rendere agevole l’utilizzo del
sistema da parte degli utente
• L’insieme di questi meccanismi di accesso al
computer prende il nome di Interfaccia Utente
27
Due tipi di interfaccia
• Interfaccia testuale
– Interprete dei comandi (shell)
– Esempi: Linux/Unix (prime versioni), MS-DOS
• Interfaccia grafica (a finestre) Graphical
User Interface (GUI)
– L’output dei vari programmi viene visualizzato in
maniera grafica all’interno di finestre
– L’utilizzo di disegni rende più intuitivo l’uso del
calcolatore
– Esempi: Linux/Unix, Microsoft WINDOWS
28
Interfaccia testuale
29
Interfaccia grafica (GUI)
30
Il desktop come interfaccia
• L’immagine visualizzata sul monitor quando si
accende il PC
– è colorata o dotata di sfondo
– l’informazione è visualizzata lungo i bordi esterni
del desktop, sotto forma di icone
– ci sono tre tipi base di icone:
♦ applicazioni
(programmi)
♦ cartelle (directory)
♦ file (documenti)
31
Il desktop (cont.)
• Il “desktop” è una metafora
– ORIGINE: lavorare al PC è come sedere ad
una scrivania
♦ si
possono archiviare lavori (file)
♦ organizzare gli archivi in raccoglitori (directory)
♦ usare applicazioni (un programma o la calcolatrice)
– OGGI: stare al PC è molto di più di una
scrivania: riproduzione video e audio, giochi,
apprendimento, navigazione Web, …
32
PC per Ascoltare la musica
• Esempio di metafora per l’interfaccia utente
– il software che riproduce i CD sul computer
sfrutta un’interfaccia grafica (GUI)
– la GUI somiglia a un comune lettore musicale
♦i
pulsanti somigliano a quelli di un tipico lettore CD
♦ l’utente può applicare alla GUI la sua conoscenza
del funzionamento del lettore CD fisico senza avere
bisogno di ulteriori istruzioni perché la simbologia gli
è familiare
33
Simboli
Ci sono pulsanti, controlli a scorrimento, pulsanti
triangolari, ecc.
Tutte forme che mirano ad essere intuitive
(da usare senza dover consultare il manuale)
34
Esempio: iTunes
35
Menu
• Lista di operazioni che il software può eseguire
• Quali operazioni sono disponibili (operazioni simili
sono raggruppate)
• Prendono la forma di una barra dei menu
• Tutte le operazioni che un programma può eseguire
sono elencate nei menu
• Quando è necessario fornire informazioni aggiuntive
36
37
Funzionamento dei menu
• I menu che si aprono “scendendo giù” dalla barra si
chiamano menu a tendina
• Quando si clicca il pulsante destro del mouse sono
visualizzati i cosiddetti menu pop-up
• Con un click del mouse si apre il menu, che rivela un
elenco di operazioni
• Scorrendo il mouse lungo la lista, il comando prescelto
viene evidenziato
• Cliccare o rilasciare il pulsante sul comando
evidenziato fa sì che il computer esegua l’operazione
38
39
Shell testuali in un sistema Unix
• Shell più diffuse
– Bourne shell (sh)
– C Shell (csh)
– Korn Shell (ksh)
– Bourne Again Shell (bash, sviluppata dalla Free
Software Foundation, standard su sistemi
GNU/Linux)
• Programmi di utilità da linea di comando
– Comandi esterni utilizzabili principalmente dalla
shell
40
Shell grafiche in Unix
• Sistema grafico (GUI)
– Gestisce le funzioni di grafica basilari (disegno di
figure geometriche sullo schermo)
– Lo standard si chiama X-window, sviluppato presso il
MIT
– Versione attuale: X11R7 (X-Window versione 11
release 7)
• Desktop environment
– Si appoggia alla GUI
– Fornisce un'interfaccia grafica consistente e
gradevole
– Comprende funzioni per gestire i componenti
dell'interfaccia grafica (bottoni, scrollbar,...)
41
Struttura di un sistema Unix (4)
• Desktop environment più diffusi
– KDE (K Desktop Environment)
♦ Diffuso
su sistemi GNU/Linux
♦ Basato su sistema QT di Trolltech
– Gnome (Gnu Network Object Model
Environment)
♦ Il
più popolare DE su GNU/Linux
♦ Sponsorizzato da Novell (Ximian), Red Hat e altre
importanti società
– CDE (Common Desktop Environment)
♦ Primo
DE su Unix, sviluppato da HP, Sun e altre, ora
defunto
– XFce
42
Gnome e KDE: look and feel a confronto
• Sia GNOME che KDE hanno enormi possibilità di
essere personalizzate
• KDE tende ad essere ricco di opzioni per essere
molto flessibile
• GNOME punta ad essere semplice ed essenziale per
essere più semplice da usare
43
KDE vs. Gnome
Gnome
KDE
Sintesi delle filosofie di Gnome e KDE vista da Jakub Steiner
44
Gestione dei Processi
45
Componenti
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del File System
Gestore della
Memoria Centrale
*KERNEL
46
Motivazione
• Vi sono molte attività in parallelo su un
computer. Es.,
– terminali che richiedono servizi ad un
calcolatore
– stampa di un documento e scrittura di un altro
• Il sistema operativo serve a coordinare queste
attività e far comunicare le parti coinvolte
47
Passato
• Anni ’40 e ’50: un solo programma in
esecuzione (job) alla volta monotasking
• Il computer a disposizione del programma
dall’inizio alla fine della sua esecuzione
Svantaggi
• Nessuna interazione utente-programma
• Lentezza: la CPU non poteva essere usata da nessun
processo mentre il programma in esecuzione svolge
operazioni di I/O (molto piu’ lente di letture/scritture in
Memoria)
• Es., non si può fare niente altro mentre si stampa o si
memorizzano dati su disco
48
Gestore dei processi
• E’ il modulo che si occupa di controllare la
sincronizzazione, interruzione e riattivazione
dei programmi in esecuzione cui viene
assegnato un processore
• La gestione dei processi viene compiuta in vari
modi, in funzione del tipo di utilizzo cui il
sistema è rivolto
49
Sistemi Mono-tasking
• I Sistemi Operativi che gestiscono l’esecuzione
di un solo programma per volta sono
catalogati come mono-tasking
• Non è possibile sospendere l’esecuzione di un
programma per assegnare la CPU a un altro
• Sono storicamente i primi Sistemi Operativi
per computer di grandi dimensioni, e anche in
seguito per i primi Personal Computer (es.,
MS-DOS)
50
Sistemi Mono-tasking
Tempo di utilizzo della CPU
Tempo di attesa di eventi esterni
C
B
A
t
T
51
Sistemi Multi-tasking
• I Sistemi Operativi che permettono
l’esecuzione contemporanea di più programmi
sono definiti multi-tasking
• Esempi attuali: Linux, Windows
• Un processo può essere interrotto e la CPU
può essere passata a un altro processo
52
Sistemi Multi-tasking
Tempo di utilizzo della CPU.
Tempo di attesa di eventi
esterni.
C
B
A
t
T
multi-tasking
T
mono-tasking
53
Sistemi Time-sharing
• Un’evoluzione dei sistemi multi-tasking sono i
sistemi time sharing
• Ogni programma in esecuzione viene eseguito
ciclicamente per piccoli quanti di tempo
• Se la velocità del processore è
sufficientemente elevata si ha l’impressione di
un’evoluzione parallela dei processi
54
Time sharing
• Ripartizione del tempo di CPU tra tutti i processi che la
vogliono
• Ogni processo rimane in esecuzione solo per un
quanto di tempo, poi l’esecuzione passa al prossimo
processo e il primo va in attesa
Esecuzione globale piu’ veloce
• Durata del quanto di tempo: tra 100 e 200 millisecondi
• A ciascun utente sembra di avere la CPU tutta per lui
55
Time-sharing: diagramma temporale
D
C
B
A
t
56
Altro diagramma temporale
57
Gestione della Memoria
Principale
58
Componenti
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del File System
Gestore della
Memoria Centrale
*KERNEL
59
Gestione della Memoria
• L’organizzazione e la gestione della memoria
centrale è uno degli aspetti più critici nel
progetto e realizzazione di un Sistema
Operativo
• Il gestore della memoria è quel modulo del
Sistema Operativo incaricato di assegnare la
memoria ai vari processi (per eseguire un
programma, infatti, è necessario che il suo
codice sia caricato in memoria)
60
Gestione della Memoria
• La complessità del gestore della memoria dipende dal
tipo di Sistema Operativo
• Nei sistemi mono-tasking un solo programma può
essere caricato in memoria centrale, quindi la gestione
della memoria è relativamente semplice:
– Sistema Operativo
– Processo in esecuzione
• Nei sistemi multi-tasking più programmi possono
essere caricati contemporaneamente in memoria
• Problema: come allocare lo spazio in maniera ottimale
61
Sistema Operativo mono-tasking
Memoria
0000
Sistema
Operativo
Programma B
(codice + dati)
62
Sistema Operativo multi-tasking
(Allocazione “lineare”)
Memoria
0000
Programma A
Programma B
Programma C
63
Sistema Operativo multi-tasking
(Allocazione con “paginazione”)
Memoria
0000
Programma A
Programma A
Programma A
Programma B
Programma B
Programma D
64
Concetto di memoria virtuale
• Quando lo spazio richiesto è maggiore di
quello fisico MEMORIA VIRTUALE
• Tecnica per
– Svincolare il codice di un programma dalla
sua allocazione in memoria centrale
– Consentire ad un programma di essere
eseguito “come se” avesse più memoria di
quella reale
65
Realizzazione della Memoria virtuale
• Sposta programmi e dati tra memoria principale e
memoria di massa per avere in ogni momento quello
che serve
• Operativamente:
– Lo spazio richiesto è suddiviso in pagine (qualche
Kbyte)
– Solo le pagine necessarie per iniziare sono caricate in
memoria centrale, le altre sono lasciate su memoria
secondaria (disco)
– Poi le pagine vengono scambiate tra memoria centrale
e memoria secondaria a seconda della necessità
66
Gestione delle Periferiche
(Dispositivi di input/output)
67
Dispositivi di Input/Output
• I dispositivi sono oggetti complessi da gestire!
• Ad esempio, la maggior parte dei dispositivi
sono seriali (es., stampante) possono essere
usati da un solo processo alla volta
• Tuttavia, molti dispositivi (es., stampante di
rete) possono ricevere molte richieste
contemporaneamente
Servono:
• Meccanismi per la coordinazione delle varie richieste
• Diverse strategie per la gestione dei processi in attesa
di utilizzare una risorsa
68
Necessità per la gestione Input/Output
• Gestione delle periferiche
• Rende trasparenti le caratteristiche fisiche
delle periferiche
• Gestisce la comunicazione di segnali verso di
loro
• Coordina l’accesso di più utenti (processi)
• Driver delle periferiche (uno per ogni
periferica)
69
Gestione delle Periferiche di
Input/Output
• Il Sistema Operativo deve
– Fornire all’utente
♦ visione
astratta dei dispositivi
♦ comandi per utilizzare i dispositivi
– Ottimizzare l’utilizzo dei dispositivi
70
Gestione Input/Output
• Il SO fornisce un insieme di comandi
(linguaggio d’interazione tra utente e sistema)
che fornisce una visione astratta del
dispositivo
• Es.
– Stampa: per l’utente equivale all’invio di un messaggio,
indipendentemente da come avviene il trasferimento dei
byte
– Lettura dello stato della stampante
– Modifica delle caratteristiche della stampa: l’utente
utilizza un pannello di controllo, senza curarsi dei
dettagli implementativi
71
Device Driver
• Il controllo dei dispositivi di I/O avviene
attraverso speciali programmi detti Device
Driver
• I device driver sono spesso realizzati dai
produttori dei dispositivi stessi che ne
conoscono le caratteristiche fisiche in maniera
approfondita
• I device driver servono per tutti i dispositivi
che si connettono al computer (compresi lettori
DVD, pen drive, macchina fotografica, ecc.)
72
Device Driver (Cont.)
• Questi programmi implementano normalmente
le seguenti funzioni:
– Rendono trasparenti le caratteristiche fisiche
tipiche di ogni dispositivo
– Gestiscono la comunicazione dei segnali verso i
dispositivi
– Gestiscono i conflitti, nel caso in cui due o più
processi vogliono accedere
contemporaneamente allo stesso dispositivo
73
Hardware
Sistema Op.
Device Driver (Cont.)
Kernel del Sistema Operativo (gestione memoria, CPU)
Sottosistema di gestione Input/Output
Driver
SCSI
Driver
Keyboard
Driver
Mouse
Driver
PCI Bus
Driver
Floppy
Driver
ATAPI
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
(es. CD-ROM)
74
Esempio: Spooling
• Processo che svincola la stampa di un file dal resto
dell’elaborazione: il sistema continua la sua attività
mentre la stampa è in corso
• Stampante più lenta della CPU un file non può
essere trasferito troppo velocemente dalla CPU alla
stampante
• Invece di inviare il file:
• Il file viene messo su disco
• Il Sistema Operativo crea il processo di spooling che fa
procedere la stampa
• Il processo che ha richiesto la stampa è svincolato da essa
• Lo spooling può andare in esecuzione anche su un
elaboratore remoto collegato in rete (print server) lo
eseguirà un’altra CPU
75
Modulo 4:
Gestione della Memoria
Secondaria (File System)
76
Componenti
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del File System
Gestore della
Memoria Centrale
*KERNEL
77
Gestione della memoria secondaria
• Realizzata dal modulo del Sistema Operativo,
detto file system, che si occupa di:
– Associare un nome di file ad una parte dello
spazio del disco
– Fornire metodi per accedere ai file
– Rendere trasparente la struttura fisica del
disco
78
Gestore del File System
• Il gestore del file system è quel modulo del
sistema operativo incaricato di gestire le
informazioni memorizzate sui dispositivi di
memoria di massa DISCO
• Il gestore del file system deve garantire:
– la correttezza
– la coerenza
– il recupero efficiente
delle informazioni memorizzate
79
Gestore del File System
• Insieme di programmi per l’organizzazione
– Logica Fornire all’utente una visione logica
dei file (che astrae dall’organizzazione fisica)
– Fisica gestire i file nella memoria secondaria
(dischi) e ottimizzare l’utilizzo dello spazio
disponibile
80
Organizzazione logica
• L’utente deve poter
– organizzare le proprie informazioni in file e
insiemi di file
– accedere ai dati
– identificare ogni file con un nome logico
– operare sui file (creare, eliminare, cambiare
nome, modificare)
– proteggere i propri file (da accessi non
desiderati)
81
Organizzazione fisica
• Il Sistema Operativo deve:
– tener traccia dei file memorizzati e della loro
posizione fisica sui dischi
– ottimizzare l’utilizzo dello spazio su disco
– gestire le comunicazioni tra la memoria
principale e la memoria secondaria (disco)
82
Altre funzioni
• Nei sistemi multi-utente, il Sistema Operativo
deve mettere a disposizione dei meccanismi di
protezione in modo tale da consentire agli
utenti di proteggere i propri dati dall’accesso
da parte di altri utenti non autorizzati
83
File
• Unica unità logica di informazione usata dal
Sistema Operativo
• Fisicamente:
– Sequenza di byte che contiene informazioni
omogenee
– Es., programma, testo, dati simili, …
– Byte = 8 bit
• Tutti i dati vengono suddivisi in file
• I file vengono memorizzati nelle memorie di
massa
84
File
• Un insieme di informazioni (dati, documenti) memorizzate
su supporti di memoria secondaria
• Una sequenza di bit, byte, record logici, record fisici
(dipende dal tipo del file e dal punto di vista), il cui
significato è definito dal creatore del file
file
Disco
85
Tipo di file
• Ogni file è composto tipicamente da:
– Nome: stringa arbitraria decisa dall’utente
– Estensione: insieme (fissato) di caratteri che
definiscono il TIPO di un file
Esempi
relazione.doc
report.txt
foto.jpg
articolo.pdf
…
86
Operazioni su file
•
•
•
•
•
•
•
•
•
•
•
Creazione
Apertura
Chiusura
Cancellazione
Copia
Rinomina
Visualizzazione
Lettura
Scrittura
Modifica
…
87
Operazioni sui file
• Nuovo:
crea una nuova istanza di file
• Apri:
localizza un file sul disco e lo apre
• Chiudi:
termina l’elaborazione dell’istanza
corrente dell’informazione e chiude
la finestra, ma tiene il programma
aperto per elaborare altre istanze
• Salva:
scrive l’istanza corrente sul disco,
usando lo stesso nome e la
stessa posizione
• Salva come:
scrive l’istanza corrente sul disco
con un nuovo nome e/o una
posizione differente
88
Nuova istanza di file
• Il comando Nuovo crea una
istanza “vuota”
• Cos’è una “informazione vuota”?
– l’informazione è suddivisa in tipi
basati su caratteristiche. Es.,
♦
le fotografie digitali sono un tipo di
informazione; la lunghezza e la
larghezza sono due delle sue
proprietà
♦ i documenti di testo sono un tipo di
informazione; il numero di caratteri è
una delle sue proprietà
– Un’istanza vuota è una
struttura vuota, senza alcuna
caratteristica se non per
quanto riguarda il formato
Istanza di una rubrica
89
Organizzazione di più file: directory
• Quasi tutti i sistemi operativi utilizzano
un’organizzazione gerarchica del File System
• L’elemento utilizzato per raggruppare più file
insieme è la directory
• L’insieme gerarchico delle directory e dei file
può essere rappresentato attraverso una
rappresentazione grafica: albero delle directory
90
Organizzazione dei file
• Possibilità di organizzare i file in Directory
(dette anche Cartelle), ovvero come insiemi di:
– file
– altre directory
• Il tutto arricchito da un elenco dei contenuti
• Organizzazione attualmente scelta: gerarchica
• Organizzazione solo logica. Non c’è alcuna
relazione con la posizione fisica dei file di una
directory (cartella) sul disco
91
Organizzazione ad albero
•
•
•
•
•
•
•
•
•
Albero rovesciato (come genealogico)
Nodi e collegamenti padre-figlio tra nodi
Nodo: file o directory
directory
Nodi divisi per livelli
file
Collegamenti tra nodi di livelli vicini:
– nodo sopra = padre
– nodo sotto = figlio
Ogni nodo ha un solo padre
Padre più in alto = radice
I nodi file non hanno figli
Cammino assoluto o relativo (per file)
92
Albero delle Directory
Directory
File
93
Esempio: Albero delle directory in Unix
94
Operazioni su directory
• Organizzazione di file in strutture chiamate
cartelle (directory)
• Creazione directory
• Eliminazione directory
• Elenco file di una directory
• Ricerca
•
•
di un particolare file
di tutti i file che soddisfano una particolare relazione
• Operazioni più complesse: backup, …
95
Modulo 5:
Consigli
96
RICORDARE: Applicazioni simili
hanno caratteristiche simili
• Tutte le applicazioni nell’elaborazione di testi:
– usano un cursore per marcare il punto di inserimento
dei caratteri
– includono le operazioni per digitare parole, cancellarle,
selezionarle, copiarle, cercarle, sostituirle, ecc.
– queste operazioni funzionano tutte in modo simile
♦
ad es., il tasto di backspace cancella il carattere subito a
sinistra del cursore
• Come fanno i venditori di software a competere?
– aggiungendo caratteristiche non fondamentali
– cercando di rendere i sistemi più convenienti, facili da
usare, veloci e meno propensi agli errori, ecc.
97
Sfruttare le somiglianze
• La nuova versione di un programma già noto
condividerà le funzioni base e molte
caratteristiche e peculiarità delle versioni
precedenti
• Ma anche quando si deve svolgere un compito
familiare con un programma che non si conosce,
in realtà si sanno già usare le sue caratteristiche
di base
98