This is an old revision of the document!


Curs 10 - Implementarea sistemelor de fișiere

  • Suport curs
    • Operating System Concepts
      • Capitolul 11 – File-System Implementation
        • Secțiunile 11.1 – 11.8
    • Modern Operating Systems
      • Capitolul 6 – File Systems
        • Secțiunile 6.3, 6.4

Demo-uri

Pentru parcurgerea demo-urilor, folosiți arhiva aferentă.

  1. Folosiți comanda stat pentru a afișa informații despre inode-ul corespunzător unui fișier, director, link simbolic, char device, block device:
    stat /etc/passwd
    stat /usr/lib/
    stat /usr/bin/cc
    stat /dev/null
    stat /dev/loop0
    • Afișați informații despre un socket Unix, după ce îl căutați în ierarhia /var/run/:
      sudo find /var/run -type s
      sudo stat /var/run/udev/control
    • Aflați dimensiunea fișierului /sbin/init folosind stat:
      stat -c %s /sbin/init
    • Urmăriți modificările timpilor de acces pe fișier (access time, modify time, change time) folosind comenzile de mai jos:
      cd /tmp
      touch a.txt
      stat a.txt
      cat a.txt
      stat a.txt
      chmod a+rw a.txt
      stat a.txt
      echo "abc" > stat.txt
      stat a.txt
      • access time este timpul de acces al fișierului, deschis pentru citire.
      • modify time este timpul de modificare a datelor fișierului.
      • change time este timpul de modificare a metadatelor fișierului (informații din inode).
  2. Creați un fișier simplu și urmăriți numărul de link-uri ale acestuia:
    cd /tmp
    touch first.txt
    ls -i first.txt
    ls -l first.txt
    • A doua coloana de la rularea ls -l este numărul de link-uri, inițial 1.
    • Creați un fișier ca hard link la primul:
      ln first.txt second.txt
    • Observați că inode-ul este același iar numărul de link-uri este egal cu doi:
      ls -i first.txt second.txt
      ls -l first.txt second.txt
    • Creați un al treilea link și observați numărul de link-uri egal cu 3:
      ln second.txt third.txt
      ls -i first.txt second.txt third.txt
      ls -l first.txt second.txt third.txt
    • Ștergeți primele două link-uri/nume și obsevați păstrarea inode-ului și reducerea numărului de link-uri la 1 pentru ultimul nume:
      unlink first.txt
      rm second.txt
      ls -i third.txt
      ls -l third.txt
      • unlink și rm pot fi folosite interschimbabil.
  3. Urmăriți numărul de link-uri/nume aferente unui director gol. Numărul este 2: un link este numele efectiv al directorului, iar altul este referința '.' (punct, dot) către director însuși:
    cd /tmp
    mkdir /tmp/test-d
    ls -ld /tmp/test-d
    • Creați un subdirector al directorului /tmp/test-d/. Numărul de link-uri va crește la 3, cu ajutorul referinței '..' (punct punct, dot dot) de la subdirector:
      mkdir /tmp/test-d/test-subd
      ls -ld /tmp/test-d
    • Creați un subfișier al directorul /tmp/test-d/. Numărul de link-uri nu se va modifica, întrucât fișierul nu are o referință la directorul părinte:
      touch /tmp/test-d/test-f
      ls -ld /tmp/test-d
  4. Creați un director simplu și vedeți ce spațiu ocupă pe disc, folosind comanda stat:
    cd /tmp
    mkdir /tmp/fill-d
    stat -c %s /tmp/fill-d
    • Copiați scriptul create-long-filenames din arhivă și rulați-l în directorul proaspăt creat:
      cd /tmp/fill-d
      # TODO: copy script
      ./create-long-filenames
    • Observați conținutul directorului și noua dimensiune a acestuia:
      ls -l /tmp/fill-d
      stat -c %s /tmp/fill-d
      • Dimensiunea directorului a crescut datorită numărului de intrări în director.
      • Dimensiunea directorului este multiplu de dimensiunea blocului sistemului.
so/cursuri/curs-10.1366717451.txt.gz · Last modified: 2013/04/23 14:44 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0