Lezione 16 Virtual File System - Unimore

Post on 23-Jun-2022

3 views 0 download

Transcript of Lezione 16 Virtual File System - Unimore

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.