Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
1
Lezione 16Virtual File SystemSistemi Operativi (9 CFU), CdL Informatica, A. A. 2016/2017Dipartimento di Scienze Fisiche, Informatiche e MatematicheUniversità di Modena e Reggio Emiliahttp://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi
2
Quote of the day(Meditate, gente, meditate...)
“In UNIX, everything is a file; if something is not a file, it is a process.”
Ken Thompson (1943-)ProgrammatoreIl padre dei SO UNIX e Plan 9Ideatore dei linguaggi B e Go
3
SOLUZIONI DEGLI ESERCIZI
4
Esercizi (5 min.)1. A quale file speciale corrisponde il dispositivo
“memoria della console virtuale”? Quali credenziali servono per accedervi direttamente? Che cosa si può ottenere con l’accesso a tale dispositivo?
5
Soluzioni1. La sezione 4 del manuale contiene informazioni
sui file speciali dei dispositivi. Si provi a cercare l’espressione regolare seguente: “.*virtual.*console.*memory.*”
Si dovrebbe ottenere la pagina di manule dei file speciali /dev/vcs e /dev/vcsa. Tramite questi file speciali è possibile accedere ai buffer di memoria dei terminali ttyX (x=0, …, 63).
6
SoluzioniSi supponga, ad esempio, di voler leggere il buffer del terminale tty3, accessibile tramite la sequenza di tasti CTRL-ALT-F3.
Per chi usa VirtualBox: CtrlDestro-F3.
Il dispositivo che contiene il buffer di memoria di tty3 è /dev/vcs3. Si provi a leggerlo.
Esisterebbe anche /dev/vcsa3, che contiene altreinformazioni sui caratteri (posizione, colore, …).Per il momento ci si può concentrare su /dev/vcs3.
7
SoluzioniSi visualizzino i permessi del file /dev/vcs3:
ls -l /dev/vcs3
Per poter leggere il contenuto di /dev/vcs3, occorre essere root oppure far parte del gruppo tty.
Si diventi root in uno dei tanti modi possibili, ad esempio:
sudo -i
8
SoluzioniSi visualizzi il contenuto di /dev/vcs3:
cat /dev/vcs3
Si ottiene il contenuto attuale del terminale tty3.
9
SoluzioniSi effettui il login su tty3.Si dia un comando (ad esempio, ls).Si ritorni sul terminale grafico.
Si ottiene il contenuto attuale del terminale tty3.
10
SoluzioniÈ possibile eseguire periodicamente (ad esempio, ogni secondo) il comando precedente. Si usa il comando watch -n 1:
watch -n 1 cat /dev/vcs3
11
Esercizi (2 min.)2. Usando mount è possibile visualizzare tutti i
file system montati? Se sì, come?
12
Soluzioni2. La pagina di manuale di mount (sezione “The
listing.”) spiega come visualizzare tutti i file system montati. È sufficiente eseguire mount senza argomenti.mount
Si ottiene un elenco di righe.Una riga un record descrivente un file system.→Un record un insieme di campi separati da spazi.→
13
SoluzioniIl formato di un record è il seguente.filespec on mntp type fstype (opt,opt,…)
Filespec: file speciale (per dispositivi veri) o tipo di file system (per dispositivi virtuali).Mntp: il mount point.Fstype: il tipo di file system.Opt: opzione di mount.
14
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda1: il dispositivo fisico su cui il file system è ospitato.
15
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/: il mount point.
16
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
ext4: il tipo di file system (EXT4).
17
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
rw: file system leggibile e scrivibile.
18
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
relatime: aggiorna l’atime solo se il precedente era più piccolo dell’mtime o ctime correnti.Ovvero, aggiorna l’atime solo se il file non è stato acceduto dopo l’ultima modifica.
19
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
errors=remount-ro: in caso di errore fisico, rimonta il file system in sola lettura.
20
SoluzioniAd esempio, il file system di root presenta il record seguente:/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
data=ordered: si usa un file di log (journal) per il registro delle scritture.Si scrivono direttamente su disco i dati del file.Si scrivono nel journal le modifiche ai metadati (e successivamente si scrivono su disco).In caso di crash, il journal preserva i metadati del file.
21
Esercizi (2 min.)3. Si individui una modalità di visualizzazione
contenente il tipo di file system. Si mostrino tutti i file system associati ed i relativi tipi.
22
Soluzioni3. La pagina di manuale di lsblk illustra l’opzione -f per la visualizzazione del tipo di file system.lsblk -f
In Debian GNU/Linux, per motivi di sicurezza l’accesso a tale campo è interdetto agli utenti normali.
23
Esercizi (3 min.)4. Si risolvano i percorsi dei file seguenti:/dev/pts/0$HOME$HOME/.bashrcChe differenze sussistono?
24
Soluzioni4. È richiesta l’immissione dei comandi seguenti:
namei -lx /dev/pts/0namei -lx $HOMEnamei -lx $HOME/.bashrc
25
SoluzioniTre filesystem distinti
File specialea caratteri
(driver seriale)
root può leggere e scrivereI membri del gruppo tty possono scrivere
Il resto del mondo non può fare nulla
26
SoluzioniUn filesystem
Una directory andreoli può leggere, scrivere ed accedereGli altri utenti possono leggere ed accedere
27
SoluzioniUn file system
Un fileregolare
andreoli può leggere e scrivereI membri del gruppo andreoli possono scrivere
Il resto del mondo può leggere
28
Esercizi (2 min.)5. Si visualizzi il numero di collegamenti del file
eseguibile unzip su un SO Debian.
29
Soluzioni5. In quale directory è presente il comando unzip?which unzip
→ unzip è presente nella directory /usr/bin.
Quanti collegamenti fisici ha unzip?ls -l /usr/bin/unzip
I collegamentifisici sono due.
30
Esercizi (2 min.)6. Quali sono i due collegamenti fisici del
programma eseguibile unzip distribuito su Debian GNU/Linux?
31
Soluzioni6. Si ordini la directory /usr/bin per
identificatore di inode:ls -li /usr/bin | sort -nrk 1
Si individui il file unzip.SHIFT-7 unzip INVIO
32
SoluzioniSi individua l’inode relativo al file unzip.Sulla macchina del docente, l’identificatore dell’inode è 950566.
Quale altro file condivide tale inode? → Il file eseguibile
/usr/bin/zipinfo.
33
Esercizi (2 min.)7. Si verifichi la relazione L=2+N per la directory
radice del file system.
34
Soluzioni7. Si visualizzino i metadati della directory /:
ls -ld /
NOTA BENE: l’opzione -d visualizza i metadati della directory / (e non delle sue sotto-directory di primo livello.
I collegamentifisici sono ventidue.
35
SoluzioniDovrebbero essere presenti:
due collegamenti . e ..;venti collegamenti (uno per ogni directory di primolivello).
Per verificare ciò, si visualizzi l’elenco lungo dei file nella directory /.
ls -l /
36
Soluzioni
2
5
15
+
+
=
22
37
Esercizi (1 min.)8. Si crei la directory d. Si crei un collegamento
fisico alla directory d di nome link_d.Si è riusciti nell’intento?
38
Soluzioni8. Per creare una directory d:
mkdir d
Per creare il collegamento fisico a d:ln link_d d
Il comando ln si rifiuta di creare un collegamento fisico ad una directory.
39
Esercizi (2 min.)9. Si monti il file system EXT3 sul secondo disco
rigido. Su tale file system si crei un file vuoto di nome f.txt. Si provi a creare un collegamento fisico dalla propria $HOME a f.txt.
Si è riusciti nell’intento?
40
Soluzioni9. Per montare il file system EXT3 (contenuto nella
partizione /dev/sdb1) sul mount point /mnt:mount /dev/sdb1 /mnt
Per creare il file f.txt:touch /mnt/f.txt
Per creare il collegamento fisico a f.txt dalla home directory:
ln /mnt/f.txt link_f.txt
41
SoluzioniIl comando ln si rifiuta di creare un collegamento fisico ad un file su un altro file system.
42
Esercizi (1 min.)10. Si crei la directory e. Si crei un collegamento
simbolico alla directory d di nome link_e.Si è riusciti nell’intento?
43
Soluzioni10. Per creare una directory e:
mkdir e
Per creare il collegamento simbolico ad e:ln -s link_e e
Il comando ln permette la creazione di un collegamento simbolico ad una directory.
44
Esercizi (2 min.)11. Si monti il file system EXT3 sul secondo disco
rigido. Su tale file system si crei un file vuoto di nome h.txt. Si provi a creare un collegamento fisico dalla propria $HOME a h.txt.
Si è riusciti nell’intento?
45
Soluzioni11. Per montare il file system EXT3 (contenuto
nella partizione /dev/sdb1) sul mount point /mnt:mount /dev/sdb1 /mnt
Per creare il file h.txt:touch /mnt/h.txt
46
SoluzioniPer creare il collegamento simbolico a h.txt dalla home directory:
ln -s /mnt/h.txt link_h.txt
Il comando ln permette la creazione di un collegamento simbolico ad un file su un altro file system.
47
Esercizi (5 min.)12. Si modifichi il monitor in modo tale da
mostrare le sole righe contenenti i campioni.
48
Soluzioni12. Per filtrare le righe contenenti campioni si può
usare il comando grep.Si catturano le righe contenenti sequenze di caratteri numerici (0-9) oppure la virgola (,).L’espressione regolare per catturare stringhe costruite con cifre o virgole è la seguente:
^[0-9,]+$
Inizioriga
Fineriga
Un caratterenumerico ouna virgola
Il blocco precedenteripetuto almeno
una volta
49
SoluzioniSi provi ad estendere il monitor nel modo seguente (tutto su una riga):
mpstat 1 |stdbuf -oL tr -s “ “ |
cut -f 3 -d “ “ |grep -E ‘^[0-9]+$’
Questo comando non funziona. Perché?
50
SoluzioniUna ipotesi è che anche cut e grep siano bufferizzati su STDOUT.Si provi a verificare l’ipotesi impostando, per i suddetti comandi, il buffering orientato alle linee.
mpstat 1 |stdbuf -oL tr -s “ “ |
stdbuf -oL cut -f 3 -d “ “ |stdbuf -oL grep -E ‘^[0-9]+$’
Ora il monitor stampa solo i campioni.