Bölüm 10: Dosya Sistemleri

Bölüm 10: Dosya Sistemleri · Çalışma Soruları
Açık dosya tablolarıYol çözümlemeKatı ve sembolik bağrwx ve umaskMBR ve GPTFAT ve i-nodeBoş alanfsck ve günlüklemeVFS
Sercan KÜLCÜ

Çoktan Seçmeli · Giriş

Soru 1: Disk Ne Sunar?

Bir disk (HDD ya da SSD) işletim sistemine kendiliğinden neler sunar, dosya sistemi bunun üzerine neler kurar? Aşağıdakilerden hangisi dosya sisteminin sağladığı bir soyutlamadır?

A: Disk yalnızca numaralı bloklar sunar: “k. bloğu oku / yaz”. ECC ve bozuk sektörlerin yeniden eşlenmesi de disk denetleyicisinin içinde yapılır. Adlandırma, dizinler, öznitelikler, koruma ve blokların dosyalara dağıtılması dosya sisteminin işidir.

Adım Adım Çalıştırma · Dosya Kavramı

Soru 2: fork Sonrası Dosya Konumu

Program hatasız çalışıyor. Ne yazdırır? Açık dosya tablosundaki girdileri ve konumlarını izleyin.

ebeveyn fd0tty1tty2tty340123456789harf.txt

harf.txt’nin içeriği 0123456789 (10 bayt). Süreçte yalnız 0, 1, 2 açık (terminal).

ebeveyn fd0tty1tty2tty34E1konum 0 · ref 1i-node0123456789harf.txtE1

open en küçük boş numarayı (3) verir; sistem genelindeki tabloda konumu 0 olan E1 girdisi kurulur.

ebeveyn fd0tty1tty2tty34E1konum 3 · ref 1i-node0123456789harf.txtE1

3 bayt okunur (012); E1’in konumu 3 olur.

ebeveyn fdçocuk fd0tty1tty2tty340tty1tty2tty34E1konum 3 · ref 2i-node0123456789harf.txtE1

fork tanımlayıcı tablosunu kopyalar: çocuğun fd 3’ü de aynı E1 girdisini gösterir; konum ortak, referans sayısı 2.

ebeveyn fdçocuk fd0tty1tty2tty340tty1tty2tty34E1konum 5 · ref 2i-node0123456789harf.txtE1

Çocuk ortak konumdan (3) okur: 34. E1’in konumu 5 olur; bu değişiklik ebeveyn için de geçerlidir.

ebeveyn fdçocuk fd0tty1tty2tty340tty1tty2tty34E1konum 5 · ref 2i-node0123456789harf.txtE1

Çocuk yazdırır.

ebeveyn fd0tty1tty2tty34E1konum 5 · ref 1i-node0123456789harf.txtE1

exit çocuğun tanımlayıcılarını kapatır: E1’in referans sayısı 1’e iner, konum 5 olarak kalır. wait döner.

ebeveyn fd0tty1tty2tty34E1konum 5 · ref 1E2konum 0 · ref 1i-node0123456789harf.txtE1E2

Aynı dosyayı ikinci kez açmak yeni bir girdi (E2) ve ayrı bir konum (0) verir; fd2 = 4.

ebeveyn fd0tty1tty2tty34E1konum 5 · ref 1E2konum 2 · ref 1i-node0123456789harf.txtE1E2

fd2 dosyanın başından okur: 01. E1 etkilenmez.

ebeveyn fd0tty1tty2tty34E1konum 8 · ref 1E2konum 2 · ref 1i-node0123456789harf.txtE1E2

Ebeveyn fd’den okur: konum çocuğun bıraktığı 5’tir → 567, konum 8. Çıktı: cocuk: 34, yeni: 01, ebeveyn: 567.

char b[4]; int n;
int fd = open("harf.txt", O_RDONLY);
read(fd, b, 3);
if (fork() == 0) {
  n = read(fd, b, 2); b[n] = 0;
  printf("cocuk: %s\n", b);
  exit(0);
}
wait(NULL);
int fd2 = open("harf.txt", O_RDONLY);
n = read(fd2, b, 2); b[n] = 0;
printf("yeni: %s\n", b);
n = read(fd, b, 3); b[n] = 0;
printf("ebeveyn: %s\n", b);

Çıktı Sorusu · Dosya Kavramı

Soru 3: Bayt Bayt mı, Blok Blok mu?

6 MiB’lık (6 291 456 bayt) bir dosya aşağıdaki döngüyle kopyalanıyor. (a) BUF = 1 ve (b) BUF = 4096 için kaç read ve kaç write çağrısı yapılır? Her çağrının çekirdeğe geçiş maliyeti 0,3 µs ise yalnızca bu ek yük ne kadar sürer?

char buf[BUF]; ssize_t n;
while ((n = read(in, buf, BUF)) > 0)
  write(out, buf, n);
Cevabı göster

Son read 0 döndürür (dosya sonu) ve döngü biter: read sayısı = veri okuması + 1.

(a) 6 291 456 + 1 = 6 291 457 read, 6 291 456 write → 12 582 913 çağrı × 0,3 µs ≈ 3,77 s.

(b) 6 291 456 / 4096 = 1536 tam blok → 1537 read, 1536 write → 3073 çağrı ≈ 0,92 ms.

Fark yaklaşık 4000 kat. 4096 bayt sayfa ve blok boyutuna da denk geldiğinden sayfa önbelleği ve disk de verimli çalışır. Gerçek kodda write’ın kısa yazması ve −1 dönüşleri de denetlenmelidir.

Çoktan Seçmeli · Dizinler

Soru 4: Bu Göreli Yol Nereye Çıkar?

Çalışma dizini /home/elif/odev/os. cat ../../notlar/./bolum10.txt komutu hangi dosyayı açar?

D: Göreli yol çalışma dizininden başlar: ilk .. → /home/elif/odev, ikinci .. → /home/elif, notlar → /home/elif/notlar, . bulunulan dizindir, sonra bolum10.txt. A tek bir .. uygulanmış gibi, B üç .. uygulanmış gibi davranır; C ise .. bileşenlerini yok sayar.

Adım Adım Çalıştırma · Dizinler

Soru 5: Yol Çözümleme

/home/ali/os/rapor.txt dosyasının ilk veri bloğu okunacak. Önbellekte yalnız kök i-node’u var ve her dizin tek bloğa sığıyor. En az kaç disk okuması gerekir?

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 0

Yol mutlak: arama kökten başlar. Kök i-node’u bağlama sırasında belleğe alınmıştır, disk okuması gerekmez.

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 1

Dizin bloğu 50 okunur, içinde home aranır → i-node 14. (Okuma 1)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 2

i-node 14 okunur: bir dizin, içeriği blok 120’de; dizinde x izni de denetlenir. (Okuma 2)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 3

Dizin bloğu 120 okunur, içinde ali aranır → i-node 37. (Okuma 3)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 4

i-node 37 okunur: bir dizin, içeriği blok 301’de; dizinde x izni de denetlenir. (Okuma 4)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 5

Dizin bloğu 301 okunur, içinde os aranır → i-node 88. (Okuma 5)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 6

i-node 88 okunur: bir dizin, içeriği blok 512’de; dizinde x izni de denetlenir. (Okuma 6)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 7

Dizin bloğu 512 okunur, içinde rapor.txt aranır → i-node 105. (Okuma 7)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 8

i-node 105 okunur: dosyanın kendisi; izinler ve ilk blok adresi (900) buradan. (Okuma 8)

i-node 2kökbellekteblok 50home→ 14i-node 14dizinblok 120blok 120ali→ 37i-node 37dizinblok 301blok 301os→ 88i-node 88dizinblok 512blok 512rapor.txt→ 105i-node 105dosyablok 900blok 900ilk veribloğudisk okuması: 9

İlk veri bloğu (900) okunur. Toplam 9 disk okuması: 4 bileşen × 2 + 1. İkinci açılışta dentry ve i-node önbelleği bunların çoğunu kaldırır.

ino = 2;                   // kök
i = inode_bellek(ino);
for (k = 0; k < 4; k++) {
  d = blok_oku(i.blok[0]); // dizin içeriği
  ino = ara(d, ad[k]);
  i = inode_oku(ino);
}
v = blok_oku(i.blok[0]);   // ilk veri bloğu

Çoktan Seçmeli · Dizinler

Soru 6: Ad Yeniden Oluşturulunca

echo eski > veri.txt, ln veri.txt kati, ln -s veri.txt sembol, rm veri.txt ve son olarak echo yeni > veri.txt çalıştırılıyor. cat kati ve cat sembol ne yazdırır?

A: Katı bağ eski dosyanın i-node’unu gösterir; rm yalnız bir adı silip bağ sayısını 1’e indirdiği için veri “eski” olarak durur. Sembolik bağ ise yalnızca “veri.txt” yolunu saklar: o ada yeni bir dosya (yeni i-node) oluşturulunca sembol artık onu açar. veri.txt yeniden oluşturulmasaydı sembol askıda kalırdı (ENOENT).

Çıktı Sorusu · Dizinler

Soru 7: Bağ Sayılarını Okumak

Boş bir dizinde aşağıdaki komutlar çalıştırılıyor (ext4). stat satırları ne yazdırır? (%h bağ sayısı, %n ad.) Ardından rm d/a yapılırsa d/b ve d/c ne olur?

$ mkdir d
$ echo x > d/a
$ ln d/a d/b
$ ln -s a d/c
$ mkdir d/e
$ stat -c '%h %n' d d/a d/b d/c d/e
Cevabı göster
3 d
2 d/a
2 d/b
1 d/c
2 d/e
  • d: üst dizindeki girdi + kendi . girdisi = 2; alt dizin e’nin .. girdisi de d’yi gösterir → 3.
  • d/a ve d/b aynı i-node’un iki adıdır: 2.
  • d/c sembolik bağın kendi i-node’udur (stat bağı izlemez): 1.
  • d/e: d’deki girdi + kendi . = 2.

rm d/a sonrasında d/b’nin bağ sayısı 1 olur ve veri durur; d/c “a” adını aradığı için askıda kalır.

Çıktı Sorusu · Koruma

Soru 8: Sekizli İzinler ve umask

Aşağıdakileri bulun.

  1. chmod 754 betik.sh sonrası izinler sembolik olarak nasıl görünür?
  2. ls -l çıktısında -rwsr-xr-x görünen dosyanın sekizli izni nedir?
  3. umask 027 iken yeni bir dosya (varsayılan 666) ve yeni bir dizin (varsayılan 777) hangi izinleri alır?
  4. drwxrwxrwt izinli /tmp’de neden herkes dosya oluşturabildiği hâlde başkasının dosyasını silemez?
Cevabı göster

(a) 7 = rwx, 5 = r-x, 4 = r-- → rwxr-xr--.

(b) s, sahibin x yerinde setuid’in de açık olduğunu gösterir: setuid = 4 → 4755.

(c) umask bitleri kapatır: 666 & ~027 = 640 (rw-r-----), 777 & ~027 = 750 (rwxr-x---). Diğerleri hiçbir şeye erişemez.

(d) Sondaki t, sticky bitidir (1777): dizinde w hakkı olan herkes girdi ekleyebilir, ama bir girdiyi yalnızca dosyanın sahibi (ya da dizinin sahibi, root) silebilir ya da yeniden adlandırabilir.

Çoktan Seçmeli · Koruma

Soru 9: Sahip Neden Yazamıyor?

-r--rw-rw- 1 ali ogr 120 rapor.txt. Kullanıcı ali, ogr grubunun da üyesidir. ali dosyaya yazmaya çalışırsa ne olur?

B: Denetim sırası: sahip mi? → sahip hakları; değilse grupta mı? → grup hakları; değilse diğerleri. İlk eşleşen kullanılır, sonraki sınıflara bakılmaz. ali sahip olduğu için r-- uygulanır ve yazma reddedilir (EACCES). Sahip isterse chmod ile kendine w verebilir; D’deki “her zaman yazar” yalnızca root için doğrudur.

Çoktan Seçmeli · Disk Düzeni

Soru 10: 3 TiB Disk ve MBR

512 bayt sektörlü 3 TiB’lık yeni bir disk MBR bölüm tablosuyla bölümleniyor. Ne olur?

B: MBR bölüm girdileri başlangıç ve uzunluğu 32 bitlik sektör numarasıyla tutar: 2³² × 512 B = 2 TiB. Geri kalan 1 TiB’a bölüm tanımlanamaz. GPT 64 bit LBA kullanır, varsayılan olarak 128 bölüm tanır ve UEFI standardının parçasıdır; 2 TiB üzeri diskler için gereklidir.

Çıktı Sorusu · Disk Düzeni

Soru 11: i-node 100 Diskte Nerede?

Bir dosya sisteminde blok 4 KiB, i-node 256 bayt ve i-node numaraları 0’dan başlıyor. Süperbloğa göre i-node tablosu blok 6’dan başlıyor. Disk 512 baytlık sektörlerle adresleniyor.

  1. Bir blokta kaç i-node vardır?
  2. i-node 100 hangi blokta, blok içinde hangi baytta başlar?
  3. Hangi sektörde, sektör içinde hangi baytta başlar?
Cevabı göster

(a) 4096 / 256 = 16 i-node / blok (bir sektörde 2).

(b) Tablo başından ofset: 100 × 256 = 25 600 = 6 × 4096 + 1024 → tablonun 6. bloğu; disk bloğu = 6 + 6 = blok 12, blok içinde 1024. bayt (o bloğun 4. i-node’u: 100 mod 16 = 4).

(c) Bayt adresi 12 × 4096 + 1024 = 50 176 → 50 176 / 512 = sektör 98, içinde 0. bayt.

Süperbloktaki “i-node tablosu nerede” bilgisi olmadan bu hesap yapılamaz; ext4 ayrıca tabloyu blok gruplarına böler.

Adım Adım Çalıştırma · Tahsis Yöntemleri

Soru 12: FAT Zincirini İzlemek

Küme boyutu 4 KiB. sunum.pptx’in ilk kümesi 5. Dosya hangi kümelerde duruyor ve 9000. bayt hangi kümede? Kümeler 0’dan sayılıyor.

0—1—21137405960788EOF9210011EOF120130140150zincir: —

FAT bellekte; 0 boş, — ayrılmış küme. sunum.pptx’in dizin girdisi ilk kümeyi 5 olarak veriyor. 9000. bayt 9000 / 4096 = 2 → mantıksal küme 2.

0—1—21137405960788EOF9210011EOF120130140150zincir: 5

n = 0: küme 5 dosyanın 0. kümesi. FAT[5] = 9 → sonraki 9.

0—1—21137405960788EOF9210011EOF120130140150zincir: 5 → 9

n = 1: küme 9 dosyanın 1. kümesi. FAT[9] = 2 → sonraki 2.

0—1—21137405960788EOF9210011EOF120130140150zincir: 5 → 9 → 2

n = 2: küme 2 dosyanın 2. kümesi — hedef (9000. bayt burada). FAT[2] = 11 → sonraki 11.

0—1—21137405960788EOF9210011EOF120130140150zincir: 5 → 9 → 2 → 11

n = 3: küme 11 dosyanın 3. kümesi. FAT[11] = EOF → sonraki yok (dosya sonu).

0—1—21137405960788EOF9210011EOF120130140150zincir: 5 → 9 → 2 → 11

k = EOF, döngü biter. Zincir 5 → 9 → 2 → 11: 4 küme (en fazla 16 KiB), diskte dağınık. 9000. bayt küme 2’de, içinde 9000 − 2 × 4096 = 808. bayt.

k = 5;              // ilk küme
n = 0;
while (k != EOF) {
  if (n == 9000 / 4096) hedef = k;
  n++;
  k = FAT[k];        // bellekteki tablo
}

Klasik Soru · Tahsis Yöntemleri

Soru 13: Aynı Blok, Dört Yöntem

1000 bloklu bir dosyanın mantıksal 699. bloğu (0’dan sayarak) okunacak. Dizin girdisi ve i-node bellekte, başka hiçbir şey önbellekte değil. Blok 4 KiB, işaretçi 4 bayt, i-node’da 12 doğrudan, 1 tek, 1 çift, 1 üç dolaylı işaretçi var. Her yöntemde kaç disk okuması gerekir?

  1. Bitişik tahsis
  2. Bağlı liste (işaretçi blok içinde)
  3. FAT (tablo bellekte)
  4. i-node
Cevabı göster
yöntemokumaneden
bitişik1adres = başlangıç + 699
bağlı liste7000…698 okunmadan sonraki adres bilinmez
FAT1699 adım bellekte izlenir, sonra tek okuma
i-node2699 − 12 = 687 < 1024 → tek dolaylı blok + veri

Bağlı liste rastgele erişimde O(n) disk okumasıdır; FAT işaretçileri belleğe taşıyarak bunu O(n) bellek adımına indirir ama tablo disk boyutuyla büyür. i-node tablosu yalnızca açık dosyalar için bellektedir; bitişik tahsis en hızlısıdır ama dış parçalanma üretir ve dosya büyüyemez.

Çıktı Sorusu · Tahsis Yöntemleri

Soru 14: Dolaylı Bloklar

Bir i-node’da 10 doğrudan, 1 tek dolaylı ve 1 çift dolaylı işaretçi var. Blok 2 KiB, blok adresi 4 bayt.

  1. Bir dosya en fazla kaç bayt olabilir? Hangi kısım baskındır?
  2. 5 000 000 numaralı bayt dosyanın kaçıncı mantıksal bloğunda, hangi işaretçi yoluyla bulunur? i-node bellekteyse kaç disk okuması gerekir?
Cevabı göster

Blok başına işaretçi: 2048 / 4 = 512.

(a) 10 + 512 + 512² = 10 + 512 + 262 144 = 262 666 blok × 2048 = 537 939 968 bayt (yaklaşık 513 MiB). Çift dolaylı kısım (512 MiB) baskındır; doğrudan bloklar yalnız 20 KiB, tek dolaylı 1 MiB kapsar.

(b) ⌊5 000 000 / 2048⌋ = 2441, blok içi 832. bayt. 0–9 doğrudan, 10–521 tek dolaylı; 2441 ≥ 522 → çift dolaylı, sıra 2441 − 522 = 1919 = 3 × 512 + 383: birinci düzeyin 3., ikinci düzeyin 383. girdisi. Okumalar: çift dolaylı blok + tek dolaylı blok + veri = 3.

Çoktan Seçmeli · Dizin Gerçekleştirmesi

Soru 15: Büyük Bir Dizinde Arama

100 000 girdili bir dizinde bir ad aranıyor. Dizin girdilerini tutma yöntemleriyle ilgili hangisi doğrudur?

A: Doğrusal liste basittir ama her arama baştan taranır. Hash, adın özetiyle kovayı seçer; çakışmalar zincirle çözülür ve kova sayısı sabitse büyüyen dizinde zincirler uzar. Hash sırayı korumaz (B yanlış). ext4 htree, NTFS/XFS/Btrfs B+ ağacı kullanır: O(log n) arama ve sıralı listeleme birlikte. Listede silme için girdi boş işaretlenir ya da son girdi taşınır.

Çıktı Sorusu · Boş Alan Yönetimi

Soru 16: Biteşlem ve Sayma

(a) 512 GiB’lık bir disk 4 KiB bloklara bölünmüş. Boş alanı izleyen biteşlem kaç bayt ve kaç blok tutar?

(b) 32 bloklu küçük bir diskte boş bloklar: 3–6, 10–11, 20–24 ve 30. Bunları sayma yöntemiyle (başlangıç, uzunluk) ve biteşlemle (1 = boş, blok 0 en solda) gösterin. Disk çok doluyken hangi gösterim küçük kalır?

Cevabı göster

(a) 512 GiB / 4 KiB = 2³⁹ / 2¹² = 2²⁷ = 134 217 728 blok → 2²⁷ bit = 2²⁴ bayt = 16 MiB = 16 MiB / 4 KiB = 4096 blok (diskin %0,003’ü).

(b) Sayma: (3, 4) (10, 2) (20, 5) (30, 1).

Biteşlem: 00011110 00110000 00001111 10000010

Biteşlem disk ne kadar dolu olursa olsun sabit boyuttadır ve bitişik boş blok bulmayı kolaylaştırır. Liste ve sayma yalnızca boş blokları tuttuğu için disk doluyken küçülür; sayma ayrıca boş alan bitişik parçalar hâlindeyken çok kısadır.

Çoktan Seçmeli · Performans

Soru 17: write() Döndü, Veri Nerede?

Bir program write() ile bir kaydı yazdı ve çağrı başarıyla döndü; iki saniye sonra elektrik kesildi ve kayıt kayboldu. Neden ve kaydı kalıcı kılmanın doğru yolu nedir?

D: Geri yazmalı (write-back) önbellek kirli sayfaları biriktirir; Linux 30 saniyeden eski kirli sayfaları arka planda yazar. fsync (ya da O_SYNC) verinin kalıcı depolamaya ulaşmasını bekler. close() tek başına diske yazmayı garanti etmez. Güvenli kaydetme kalıbı: geçici dosyaya yaz → fsync → rename.

Çıktı Sorusu · Tutarlılık ve Kurtarma

Soru 18: fsck Sayaçları

fsck tüm i-node’ları ve boş blok listesini okuyup her blok için iki sayaç tuttu. Hangi bloklarda sorun var, her biri ne anlama gelir ve nasıl düzeltilir? Hangisi en tehlikelisidir?

blok0123456789
kullanımda1011021001
boş listede0100100020
Cevabı göster

Tutarlı durumda her blok için kullanımda + boş = 1’dir. Üç blok bu kuralı bozuyor:

  • Blok 7 (0, 0): eksik blok. Zararsız ama alan kaybı; boş listeye eklenir.
  • Blok 8 (0, 2): boş listede iki kez. Aynı blok iki dosyaya verilebilirdi; boş liste yeniden kurulur. (Biteşlem kullanılsaydı bu durum oluşamazdı.)
  • Blok 5 (2, 0): iki dosya aynı veri bloğunu kullanıyor. En tehlikelisi: blok kopyalanıp dosyalardan birine ayrı blok verilir, kullanıcı bilgilendirilir.

Ayrıca kullanımda ve boş listede aynı anda görünen blok (1, 1) olsaydı boş listeden çıkarılırdı.

Çoktan Seçmeli · Tutarlılık ve Kurtarma

Soru 19: Günlük Nerede Kesildi?

Günlüklemeli bir dosya sisteminde bir işlem şu sırayla yürür: (1) TxB ve değişen meta veri blokları günlüğe, (2) işlem sonu kaydı TxE günlüğe, (3) blokların son yerlerine yazılması, (4) günlük kaydının serbest bırakılması. Elektrik (2) bittikten sonra, (3) sırasında kesiliyor. Açılışta ne olur?

C: TxE diskteyse işlem kesinleşmiştir: kurtarma sırasında günlükteki bloklar son yerlerine yeniden yazılır (redo). Aynı içeriği iki kez yazmak zararsızdır, işlemler eşgüçlüdür. TxE yazılmadan kesilseydi işlem yok sayılırdı (A). Her iki durumda da dosya sistemi tutarlı kalır ve açılış fsck gerektirmeden saniyeler sürer.

Çoktan Seçmeli · VFS ve Ağ

Soru 20: Aynı read(), Farklı Kod

Bir süreç biri ext4’te, biri NFS’te duran iki dosyayı aynı read() çağrısıyla okuyor. Çekirdek doğru kodu nasıl seçer?

C: Bağlama sırasında her dosya sistemi VFS’ye kendi işlem tablolarını verir; open sırasında oluşan file nesnesi bu tabloyu taşır. read çağrısında VFS yalnızca file->f_op->read_iter işaretçisini çağırır: ext4 dosyasında ext4’ün işlevi, NFS dosyasında ağ üzerinden RPC çalışır. Uygulama farkı görmez; ek maliyet yalnızca bir dolaylı çağrıdır.

Son

Bölüm 10: Dosya Sistemleri: Çalışma Soruları
Konu anlatımı: Dosya sistemleri sunumu · Terim sözlüğü
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.