sistemul de fisiere

40
Universitatea Politehnica Bucureşti Utilizarea sistemelor de operare Cursul 2: Sistemul de fişiere 08.10.2007

Upload: johnboss

Post on 16-Jan-2016

253 views

Category:

Documents


2 download

DESCRIPTION

Curs utilizarea sistemelor de operare

TRANSCRIPT

Page 1: Sistemul de Fisiere

Universitatea Politehnica Bucureşti

Utilizarea sistemelor de operare

Cursul 2: Sistemul de fişiere

08.10.2007

Page 2: Sistemul de Fisiere

1. Introducere

• Un sistem de operare reprezintă o colecţie de programe destinate să administreze resursele hardware ale unui sistem de calcul

• Evoluţia sistemelor de operare a cunoscut o pantă ascendentă în ultimii 10 ani, ritmul schimbărilor fiind din ce în ce mai alert

• Pe piaţa sistemelor de operare destinate staţiilor de lucru există doua familii de produse: Windows, produs de Microsoft, şi Linux, aflat sub licenţă GPL

2

Page 3: Sistemul de Fisiere

Sistemul de fişiere

• Componenta cea mai “vizibilă” pusă la dispoziţie de SO utilizatorului

• Comenzile pentru interacţiunea cu sistemul de fişiere sunt primele învăţate de utilizator; esenţiale pentru folosirea celorlalte comenzi

• Două componente:– componenta fizică – se ocupă cu alocarea şi

organizarea datelor pe suportul fizic (hard disk, CD-ROM, floppy disk, flash)

– componenta logică – se ocupă cu asigurarea unei structuri ierarhice de directoare şi fişiere

3

Page 4: Sistemul de Fisiere

• De ce este nevoie de sisteme de fişiere?

– necesitatea stocarii unui volum mare de date

– informaţia trebuie să fie persistentă

– informaţia poate fi accesată concurent

• Unitatea fundamentală de stocare a informatiei este fişierul

• Un sistem de fişiere este o metodă de stocare şi organizare a fişierelor pentru un acces rapid şi eficient

• Sistemele de fişiere necesită un dispozitiv de stocare (hard disk, CD-ROM, floppy disk, RAM)

4

Sisteme de fişiere – privire de ansamblu

Page 5: Sistemul de Fisiere

Facilităţi ale sistemelor de fişiere

• Sistemele de fişiere moderne folosesc un jurnal pentru a asigura integritatea datelor în cazul căderilor sistemului – funcţionalitatea se numeşte jurnalizare

• Modul de funcţionare a jurnalului:

– Operaţia asupra sistemului de fişiere este înregistrată într-un jurnal

– Driver-ul sistemului de fişiere execută periodic înregistrările din jurnal

– Doar daca o înregistrare a fost executată cu succes ea este ştearsă din jurnal.

– În cazul în care apare o cădere, la repornirea sistemului sunt

executate toate înregistrările din jurnal

5

Page 6: Sistemul de Fisiere

Tipuri de sisteme de fişiere

• Sisteme de fişiere cu suport fizic:

– NTFS, FAT32, ext3, reiserfs, HFS+

– ISO9660, Joliet, UDF

• Sisteme de fişiere virtuale:

– procfs, devfs, sisteme fişiere prin FUSE

• Sisteme de fişiere pentru reţea:

– NFS, SMB, GFS (distributed file system)

6

Page 7: Sistemul de Fisiere

Sisteme de fişiere - componente

• Un sistem de fişiere poate fi privit în două moduri:

– din perspectiva utilizitorului – logical file system

– din perspectiva sistemului de operare

• Important pentru utilizator este cum îi apare un sistem de fişiere, ce este un fişier, cum se realizează denumirea unui fişier, ce operaţii sunt permise asupra fişierului, etc.

• Pentru sistemul de operare este important modul de stocare a informaţiei pe disc, folosirea unor algoritmi eficienţi pentru acoperirea blocurilor şi sectoarelor de pe dispozitivul de stocare

7

Page 8: Sistemul de Fisiere

Elementele sistemului de fişiere

• Fişier – abstracţia fundamentală; un fişier este o cantitate de informaţiestocată pe un suport fizic

• Director – element ce conţine altefişiere sau directoare

• Link (shortcut): legătură către un alt fişier/director

• Se mai numesc intrări în sistemul de fişiere

• Orice intrare în structura de directoareare un nume

• Structura cea mai obişnuită estestructura ierarhică (arbore multicăi)

• În Linux există câteva tipuri de fişiere speciale

folder

sub-folderfile

file file

8

Page 9: Sistemul de Fisiere

Ierarhia de directoare Unix

9

Page 10: Sistemul de Fisiere

Ierarhia de directoare Unix (2)

• / - directorul rădăcină• /bin – comenzi binare (executabile) esentiale• /home – conţine directoarele de bază ale utilizatorilor• /usr – conţine binare suplimentare• /var – date variabile (de obicei log-uri)• /boot – boot loader şi informaţii de booting• /lib – biblioteci utilizate de sistem• /dev – intrări în sistemul de fişiere pentru dispozitive

hardware• /root – home-ul superuser-ului (root)• ~ : scurtătură shell pentru directorul de bază (home) al

utilizatorului curent; ~student : scurtătură shell pentru directorul de bază al utilizatorului student

10

Page 11: Sistemul de Fisiere

Ierarhia de directoare Windows

11

Page 12: Sistemul de Fisiere

Ierarhia de directoare Windows (2)

• A:\ C:\ D:\ - rădăcinile pentru diferite sisteme de fişiere; partiţiile diferite se montează în rădăcini diferite

• C:\Windows\ - director conţinând programele de sistem pentru Windows

• C:\Program Files\ - director ce conţine programele de aplicaţie pentru Windows

• C:\Documents and Settings\ - echivalent /home în lumea Windows; aici există un subdirector pentru fiecare utilizator unde acesta îşi poate stoca informaţiile proprii

12

Page 13: Sistemul de Fisiere

Comenzi Unix simple

• Afişarea conţinutului unui directorrazvan@anaconda:~/junk$ ls

a.out fun.o icsDrone-1.5.0.tar.gz test.cpp

fun.c icsDrone test

• Afişarea conţinutului unui fişierrazvan@anaconda:~/junk$ cat hello.c

#include <stdio.h>

int main (void)

{

printf ("Hello, World!\n");

return 0;

}

razvan@anaconda:~/junk$

13

Page 14: Sistemul de Fisiere

Comenzi Unix simple

• Afişarea directorului curentstefanb@anaconda:~$ pwd

/home/stefanb

• Schimbarea directorului curentstefanb@anaconda:~/svn$ cd hooks/

stefanb@anaconda:~/svn/hooks$

• Crearea unui fişier, directorstefanb@anaconda:~/testing$ touch testfile.txt

stefanb@anaconda:~/testing$ mkdir testdir

• Stergerea unui fişier, directorstefanb@anaconda:~/testing$ rm testfile.txt

stefanb@anaconda:~/testing$ rmdir testdir

14

Page 15: Sistemul de Fisiere

Comenzi Unix simple (2)

• Mutare, copierestefanb@anaconda:~/testing$ touch demutat.txt

stefanb@anaconda:~/testing$ touch decopiat.txt

stefanb@anaconda:~/testing$ mv demutat.txt mutat.txt

stefanb@anaconda:~/testing$ cp decopiat.txt copiat.txt

stefanb@anaconda:~/testing$ ls

copiat.txt decopiat.txt mutat.txt

15

Page 16: Sistemul de Fisiere

Comenzi Windows

• Windows oferă un CLI prin care se poate interacţiona cu sistemul de operare similar cu shell-ul de Linux.

– Pentru a putea accesa CLI-ul, accesaţi Start > Run > cmd.exe

• Crearea şi listarea conţinutului unui director:D:\uso\curs USO\test> mkdir curs2

D:\uso\curs USO\test> dir

06.10.2007 18:52 <DIR> .

06.10.2007 18:52 <DIR> ..

06.10.2007 19:04 0 info.txt

06.10.2007 18:52 <DIR> curs2

• Copierea unui fisier D:\uso\curs USO\test> copy info.txt director

1 file(s) copied.

16

Page 17: Sistemul de Fisiere

Comenzi Windows (2)

• Redenumirea şi mutarea unui fişierD:\uso\curs USO\test> move info.txt info2.txt

D:\uso\curs USO\test> move info.txt director

D:\uso\curs USO\test> dir

06.10.2007 18:52 <DIR> .

06.10.2007 18:52 <DIR> ..

06.10.2007 19:04 0 info2.txt

06.10.2007 18:52 <DIR> curs2

• Afişarea proceselor din sistem:D:\uso\curs USO\test> TaskList /SVC

Image Name PID Services

firefox.exe 5044 N/A

------output omis-----------------------

• Terminarea unui proces:D:\uso\curs USO\test> TSKill 5044

17

Page 18: Sistemul de Fisiere

Fişiere

• Pot fi binare (fişiere de date, fişiere executabile) sau fişiere text

• Un fişier executabil execută un program• Un fişier text conţine caractere ASCII (human readable)• Fişierele, ca şi directoarele, au asociate un set de

drepturi

stefanb@anaconda:~/svn$ ls -l

total 28

drwxr-sr-x 2 stefanb stefanb 4096 2007-10-03 19:55 conf

drwxr-sr-x 2 stefanb stefanb 4096 2007-10-03 19:55 dav

drwxr-sr-x 5 stefanb stefanb 4096 2007-10-03 19:55 db

-rw-r--r-- 1 stefanb stefanb 2 2007-10-03 19:55 format

drwxr-sr-x 2 stefanb stefanb 4096 2007-10-03 19:55 hooks

drwxr-sr-x 2 stefanb stefanb 4096 2007-10-03 19:55 locks

-rw-r--r-- 1 stefanb stefanb 229 2007-10-03 19:55 README.txt

18

Page 19: Sistemul de Fisiere

Fisiere (2)

• Fişierele pot avea o extensie; formatul estenume.extensie (file.txt, main.c, arhive.zip, program.exe)

• De obicei extensia precizează tipul fişierului, însă Linux se foloseşte şi de conţinutul lui pentru a determina tipul.

razvan@anaconda:~/junk$ file a.outa.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), not strippedrazvan@anaconda:~/junk$ file icsDrone-1.5.0.tar.gzicsDrone-1.5.0.tar.gz: gzip compressed data, from Unixrazvan@anaconda:~/junk$ file test.cpptest.cpp: ASCII C program textrazvan@anaconda:~/junk$ file fun.ofun.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not strippedrazvan@anaconda:~/junk$ file test.txttest.txt: ASCII text

19

Page 20: Sistemul de Fisiere

Fişiere (3)

• Extensii comune:– .txt – fişiere text– .exe – fisier executabil– .c, .h, .cpp, .java, .py – fişier cod sursă– .o (.obj) – fişier obiect (binar)– .lib, .dll, .so – biblioteci– .exe – fişier executabil (Windows)– .sh – script shell (Unix)– .bat – batch script (Windows)– .zip, .rar, .tar, .tgz, .tar.bz2 – fişier arhivă– .doc, .xls, .ppt – fişier Office Kit– .avi, .mpeg, .rm – fisier video– .bmp, .jpeg, .png, .gif – fişier imagine– .wav, .midi, .mp3 – fişier audio

20

Page 21: Sistemul de Fisiere

Directoare

• Folder/directory• O cale (path) în sistemul de fişiere este o succesiune de

directoare şi, eventual, un fişier; separatorul este / pe Unix şi \ pe Windows– /home/student/cursuri/uso2_curs.ppt– C:\Documents and Settings\Student\Cursuri\uso2_curs.ppt

• Orice ierarhie de directoare are un director rădăcină; directorul rădăcină pe Unix este /, indiferent de numărul de partiţii; pe Windows este c:\, d:\ etc.

21

Page 22: Sistemul de Fisiere

Directoare (2)

• Două intrări dedicate:– . (punct) – directorul curent– .. (punct punct) – directorul părinte

razvan@anaconda:~/junk/hello$ ls -a. .. hello hello.c

• Doua tipuri de căi:– Relative (în raport cu directorul curent):./svn/db/transactions

– Absolute:/home/stefanb/svn/db/transactions

• Cum se execută un fişier executabil în Unix?razvan@anaconda:~/junk/hello$ ./helloHello, World!

22

Page 23: Sistemul de Fisiere

Link-uri

• Legături (shortcuts) către alte intrări din sistemul de fişiere

• În Linux există două tipuri de linkuri:– linkuri hard

– linkuri soft (simlink-uri)

stefanb@anaconda:~/testing$ touch file.txt

stefanb@anaconda:~/testing$ ln -s file.txt linktofile.txt

stefanb@anaconda:~/testing$ ls -l

total 0

-rw-r--r-- 1 stefanb stefanb 0 2007-10-06 17:44 file.txt

lrwxrwxrwx 1 stefanb stefanb 8 2007-10-06 17:45 linktofile.txt -> file.txt

link

23

Page 24: Sistemul de Fisiere

Tipuri speciale de fişiere

• Sistemul de fişiere în Linux are funcţii mai vaste decât în Windows.

• În Windows, toate fişierele au suport fizic pe disc.

• În Linux, există câteva tipuri speciale de fişiere, prinintermediul cărora se comunică cu anumite resursedin sistem:

– Legăturile simbolice

– Device files (localizate în /dev) – dispozitivele hardware

– Named pipes – folosite pentru comunicarea întreprograme

– Sockets – pentru comunicarea prin reţea

24

Page 25: Sistemul de Fisiere

Discuri şi partiţii

• Pentru o mai bună organizare a datelor, pe discuri există partiţii – exemple de utilizare a partiţiilor:

– Partiţie pentru sistemul de operare Windows/Linux

– Partiţie pentru date (home directory)

– Partiţie pentru swap etc.

• Tipuri de partiţii:

– Primare (maxim 4)

– Extinsa (poate înlocui una dintre partiţiile primare)

– Logice: se regăsesc în interiorul partiţiei extinse

• Sistemele de fişiere se pot plasa doar în partiţiile primare şi cele logice, pe suprafaţa unui hard-disk

25

Page 26: Sistemul de Fisiere

Sisteme de fişiere – perspectiva SO

• Sectorul 0 al unui disc conţine MBR (Master Boot Record); spre sfârşitul acestuia se află tabela de partiţii

• Fiecare partiţie conţine un sector de boot propriu şi un sistem de fişiere

• Din punct de vedere structural, sistemul de fişiere conţine:

– superbloc

– bloc de control al spaţiului liber

– directorul radăcină

– fişierele şi directoarele

26

Page 27: Sistemul de Fisiere

Partiţionare şi formatare

• Procesul de împărţire a unui disc în partiţii se numeşte partiţionare – utilitarul Linux pentru acest lucru se numeşte fdisk

• Procesul de creare a unui sistem de fişiere într-o partiţie se numeşte formatare - sistemele Linux folosesc familia de comenzi mkfs pentru acest lucru: mkfs.ext3, mkfs.vfat etc.

• Aceste activităţi pot fi realizate şi în mediu grafic: GParted, QParted (Linux), sau Partition Magic(Windows)

27

Page 28: Sistemul de Fisiere

Sisteme de fişiere – aspecte generale (cont.)

28

nealocatMBR

Tabela

de partitii

partitia 1 partitia 2 partitia 3

bloc de

boot

spatiu liber pt

managemntinodes

directoare

radacinasuper bloc

fisiere si

directoare

Structura unui sistem de fisiere pe disc

Page 29: Sistemul de Fisiere

Montarea unui sistem de fişiere

• La pornirea SO, se încarcă de pe disc sistemul de fişiere rădăcină

• Ulterior, se pot monta (mount) alte sisteme de fişiere

• Montarea unui nou sistem de fişiere se realizeazăîntr-un anumit punct din ierarhia curentă de directoare

29

Page 30: Sistemul de Fisiere

Montarea unui sistem de fişiere (2)

• Pe windows orice sistem de fişiere se montează automat într-o rădăcinăseparată (C:\, D:\, etc.)

• pe Unix există un singur director rădăcină; montarea se face, de obicei neautomat, într-un punct din ierarhie:

# mount /dev/hda7 /mnt/disk

30

Page 31: Sistemul de Fisiere

Best Practice – denumirea intrărilor în sistemul de fişiere în Unix

• Unix philosophy: Keep It Simple!• Nume scurte, descriptive:

– DA: main.c, config.txt, bash.rc– NU: MainProgramFile.c, Configuration File For A Process.txt,

BourneAgainShellResourceFile– Se preferă /usr/share/doc în loc de C:\Program Files\Program

Name\Documentation

• Folosirea caracterului ‘spaţiu’ (blank) şi a caracterelor speciale shell ($, [, {, *, etc.) este descurajată

• Fişierele, directoarele ascunse încep cu caracterul . (punct)$ lssimple.c$ ls –a. .. .hidden.txt simple.c

• Denumirea unor directoare poate să se termine în .d (dir.d, /etc/init.d)

• Fisierele pot sa nu aibă extensie; în general, executabilele nu au extensie

ţ

31

Page 32: Sistemul de Fisiere

Best Practice – afişarea extensiei unui fişier înWindows Explorer

• Tools -> Folder Options

• View -> Hide extensions for known file types

32

Page 33: Sistemul de Fisiere

Sisteme de fişiere: ext

• Extended File System

• sistemul nativ Linux

• ext, ext2, ext3

• ext3 – folosit actualmente de multe din distribuţiile Linux – ext2 + facilităţi de jurnalizare

• planuri pentru ext4

• sistem cu alocare indexată (i-node); ext a fost bazat pe sistemul de fişiere Minix

• fsck (file system check) – utilitarul pentru verificarea consistenţei unui sistem de fişiere tip Unix

33

Page 34: Sistemul de Fisiere

Inode

34

indirectare simpla

indirectare dubla

indirectare tripla

blocuri directe

count

bloc dimensiune

etichete de timp (3)

proprietar (2)

mod

date

date

date

date

date

date

date

date

date

Page 35: Sistemul de Fisiere

Sisteme de fişiere: Reiser

• sistem de fişiere general-purpose

• primul sistem de fişiere cu jurnalizare inclus în kernel-ul Linux

• sistemul de fişiere implicit pe multe distribuţii Linux (Slackware, Xandros, Linspire)

• jurnalizare, online resizing, tail packing (schemă de reducere a fragmentării)

• pentru fişiere mai mici de 4K, este mai rapid decat ext3 de 10-15 ori

• Reiser4 este versiunea actuală de dezvoltare (nu a fost inclusa inca in kernel-ul Linux)

• aduce îmbunatăţiri pentru lucrul cu fişiere cu format specific

35

Page 36: Sistemul de Fisiere

Sisteme de fisiere: FAT

Folosit in MS-DOS, Windows '95, Windows '98

• conţine:– sectorul de boot

– FAT region

– Root Directory Region

– Data Region

• o tabelă FAT este o listă de intrări care se mapează pe fiecare cluster şi contine:– adresa următorului cluster

– un indicator special End Of File

– un caracter special pentru marcarea “bad blocks”

– un caracter special care să indice un cluster rezervat

– zero ca să indice un cluster neutilizat

36

Page 37: Sistemul de Fisiere

FAT

37

…..

intrare director

fis1

nume

73813

bloc de

start

-1

248118199

EOF24811

819973813

0

Page 38: Sistemul de Fisiere

Sisteme de fişiere: NTFS

• Windows 2000, Windows XP, Windows 2003

• înlocuire pentru FAT

• s-au adăugat liste de control a accesului (drepturi de acces) şi jurnalizare

• îmbunătăţiri:– volume mount points (specificarea unei locaţii de montare, în

locul creării unui nou drive C:, D:)

– file compression

– encrypting file system

– cote (quotas)

• ntfs-3g este un driver recent pentru Linux,stabil şi performant

38

Page 39: Sistemul de Fisiere

Link-uri utile

• Sisteme de fişiere:

– http://en.wikipedia.org/wiki/List_of_file_systems

– http://en.wikipedia.org/wiki/Comparison_of_file_systems

• Tipuri de fişiere:

– http://filext.com/

– http://en.wikipedia.org/wiki/Unix_file_types

39

Page 40: Sistemul de Fisiere

Cuvinte cheie

• sistem de fişiere

• fişier binar

• fişier text

• extensie

• path (cale)

• director

• legături (linkuri)

• hard-disk

• partiţie primară

• partiţie extended

• partiţie logic

• sector de boot

40

• MBR

• montare (mount)

• inode

• sector de boot

• root (director radacină)

• jurnalizare

• EXT3

• ReiserFS3

• FAT32

• NTFS

• UDF

• HFS+