Bölüm 10: Dosya Sistemleri

İşletim Sistemleri · Çalışma Soruları
Dosya KavramıDizinler ve YollarErişim HaklarıBlok Tahsisii-node ve Boş AlanTutarlılık ve Güvenilirlik
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Giriş

Nasıl çalışalım?

1 · Önce çözünHer slaytta bir soru var. Cevabı açmadan önce kâğıda kendi cevabınızı yazın; çoktan seçmelide eleme gerekçenizi de not edin.
2 · Cevabı açın“Cevabı göster” kutusu doğru cevabı ve kısa gerekçeyi verir. Açık uçlu sorularda kendi cevabınızı anahtar kavramlarla karşılaştırın.
3 · Adım adım izleyinHesaplama ve kod sorularının ardından gelen “Adım Adım Çözüm” slaytında › düğmesiyle çözümü satır satır ilerletin.

29 soru · Çoktan seçmeli: 12 · Açık uçlu: 5 · Doğru / Yanlış: 3 · Hesaplama: 8 · Kod izleme: 1. Sorular konu başlıklarına göre gruplanmış ve kolaydan zora sıralanmıştır.

Soru 1 · Dosya Kavramı

Metin Düzenleyicide Anlamlı Açılan

Çoktan seçmeli Bir öğrenci aşağıdaki dosyaları Not Defteri ile açıyor. Hangisinin içeriği okunabilir metin olarak görünür?

  1. a.out (derlenmiş ELF programı)
  2. logo.png
  3. notlar.csv (virgülle ayrılmış öğrenci notları)
  4. arsiv.zip
  5. Main.class (Java bayt kodu)
Cevabı göster

Doğru cevap: C · notlar.csv (virgülle ayrılmış öğrenci notları)

CSV, karakter kodlamasıyla (UTF-8/ASCII) yazılmış satırlardan oluşan bir metin dosyasıdır. Diğerleri ikili dosyalardır: baytları karakter değil, belirli bir biçime göre yorumlanacak veri (piksel, makine kodu, sıkıştırılmış blok, bayt kodu) taşır; çoğu başındaki sihirli sayı ile tanınır.

Soru 2 · Dosya Kavramı

Aynı Veri, İki Biçim

Açık uçlu Bir sensörden gelen ölçümler hem olcum.txt (her satırda bir sayı) hem de olcum.bin (sayılar 4 baytlık tamsayı olarak art arda) biçiminde kaydediliyor. İki dosya türünü okunabilirlik, boyut, işleme hızı ve taşınabilirlik açısından karşılaştırın.

Cevabı göster
Metin (.txt)İkili (.bin)
Okunabilirlikİnsan okur, her düzenleyiciyle açılırÖzel program ya da biçim bilgisi gerekir
BoyutBasamak sayısına bağlı, satır sonu ek baytHer değer sabit 4 bayt, genellikle daha küçük
İşlemeOkurken karakterden sayıya dönüşüm (ayrıştırma) gerekirBellek gösterimiyle aynı, doğrudan okunur, rastgele erişim kolay
TaşınabilirlikKodlama (UTF-8) ve satır sonu (LF/CRLF) farkına dikkatBayt sırası (endianness) ve tür boyutu sorunu

Soru 3 · Dosya Kavramı

Metin mi Daha Büyük, İkili mi?

Hesaplama 1000 adet tamsayının her biri 6 basamaklı (100000–999999). (a) Her sayı ayrı satıra, ASCII ve LF satır sonuyla yazılırsa dosya kaç bayt olur? (b) Her sayı 32 bitlik tamsayı olarak ikili yazılırsa? (c) 500. sayıyı okumak için her dosyada nereye gidilir?

Cevabı göster

(a) Satır başına 6 rakam + 1 LF = 7 B → 1000 × 7 = 7 000 B. (b) 1000 × 4 = 4 000 B.

(c) Bu örnekte satırlar sabit uzunlukta olduğu için metinde ofset (500 − 1) × 7 = 3 493; ikili dosyada (500 − 1) × 4 = 1 996. Genel durumda metin satırları farklı uzunlukta olabildiği için metin dosyasında satırı bulmak baştan taramayı gerektirir; ikili kayıtlar sabit boyutlu olduğundan doğrudan lseek yapılır.

Soru 4 · Dosya Kavramı

Bir ls -l Satırını Okumak

Açık uçlu Aşağıdaki satırdaki her alanın hangi dosya özniteliğini gösterdiğini yazın. Bu satırda görünmeyen iki özniteliği de ekleyin.
-rw-r----- 2 ayse ogr 18432 Mar 3 10:15 rapor.pdf

Cevabı göster
  • -: dosya türü (normal dosya; d dizin, l sembolik bağ).
  • rw-r-----: sahip okur/yazar, grup okur, diğerleri hiçbir şey yapamaz.
  • 2: katı bağ sayısı. ayse / ogr: sahip ve grup.
  • 18432: bayt cinsinden boyut. Mar 3 10:15: son değiştirilme zamanı. rapor.pdf: ad (i-node’da değil, dizin girdisinde).

Görünmeyenler: i-node numarası (ls -i), erişim ve durum değişikliği zamanları (atime, ctime), dosyanın disk blokları, ayrılan blok sayısı.

Soru 5 · Dosya Kavramı

1 GB’lık Dosya Neden Anında Taşınır?

Çoktan seçmeli Aynı dosya sistemi içinde mv video.mp4 arsiv/video.mp4 komutu 1 GB’lık dosyayı göz açıp kapayıncaya kadar “taşıyor”. Bunun nedeni nedir?

  1. Yalnızca dizin girdileri değişir: eski dizinden ad silinir, yeni dizine aynı i-node’u gösteren bir girdi eklenir; veri blokları yerinde kalır
  2. Dosya verisi arka planda kopyalanır; komut beklemeden döner
  3. Dosya sıkıştırılarak taşındığı için hızlıdır
  4. Taşıma yalnızca bellekteki sayfa önbelleğinde yapılır, diske hiç yazılmaz
Cevabı göster

Doğru cevap: A · Yalnızca dizin girdileri değişir: eski dizinden ad silinir, yeni dizine aynı i-node’u gösteren bir girdi eklenir; veri blokları yerinde kalır

UNIX’te ad, dosyanın kendisinde değil dizin girdisindedir (ad → i-node numarası). rename yalnızca bu eşlemeyi değiştirir. Farklı dosya sistemleri arasında ise i-node taşınamayacağı için gerçek kopyalama ve silme gerekir.

Soru 6 · Dosya Kavramı

fork() Sonrası Dosya Ofseti

Kod izleme Program hatasız çalışıyor. Çıktı nedir? (Dosya tanımlayıcısının gösterdiği açık dosya girdisini ve ofsetini izleyin.)

char b[4]; int n;
int fd = open("harf.txt", O_RDONLY);
/* harf.txt içeriği: ABCDEFGHIJ */
read(fd, b, 3);
if (fork() == 0) {
    n = read(fd, b, 2); b[n] = 0;
    printf("cocuk: %s\n", b);
    return 0;
}
wait(NULL);
n = read(fd, b, 3); b[n] = 0;
printf("ebeveyn: %s\n", b);
int fd2 = open("harf.txt", O_RDONLY);
n = read(fd2, b, 2); b[n] = 0;
printf("yeni: %s\n", b);
lseek(fd, -1, SEEK_END);
n = read(fd, b, 3); b[n] = 0;
printf("son: %s\n", b);
Cevabı göster
cocuk: DE
ebeveyn: FGH
yeni: AB
son: J
  • fork() dosya tanımlayıcısını kopyalar ama ikisi aynı açık dosya girdisini (ve ofseti) paylaşır: çocuk 3’ten okur, ofset 5 olur; ebeveyn 5’ten okur.
  • Yeni open() yeni bir açık dosya girdisi ve 0 ofset verir.
  • SEEK_END − 1 → ofset 9; 3 bayt istenir ama yalnızca 1 bayt kalmıştır, read 1 döndürür.

Soru 7 · Dizinler ve Yollar

Bu Bağıl Yol Nereye Çıkar?

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

  1. /home/elif/odev/notlar/bolum10.txt
  2. /notlar/bolum10.txt
  3. /home/notlar/bolum10.txt
  4. /home/elif/notlar/bolum10.txt
  5. /home/elif/odev/os/notlar/bolum10.txt
Cevabı göster

Doğru cevap: D · /home/elif/notlar/bolum10.txt

Bağıl yol çalışma dizininden başlar: .. → /home/elif/odev, ikinci .. → /home/elif, notlar → /home/elif/notlar, . bulunulan dizindir, sonra bolum10.txt.

Soru 8 · Dizinler ve Yollar

Betik Neden Dosyayı Bulamıyor?

Açık uçlu Bir yedekleme betiği terminalden çalıştırıldığında sorunsuz, zamanlanmış görev (cron) olarak çalıştırıldığında ise “ayarlar.conf: böyle bir dosya yok” hatası veriyor. Betikte dosya ayarlar.conf diye açılıyor. Mutlak ve bağıl yol kavramlarıyla açıklayın ve iki çözüm önerin.

Cevabı göster

Mutlak yol kök dizinden başlar (/ ya da Windows’ta C:\) ve çalışma dizininden bağımsızdır: /home/elif/yedek/ayarlar.conf. Bağıl yol sürecin çalışma dizinine göre çözülür: ayarlar.conf, ../yedek/ayarlar.conf.

Terminalde çalışma dizini betiğin bulunduğu dizindi; cron ise süreci başka bir dizinde (ör. kullanıcının ev dizini) başlatır, bağıl yol yanlış yere çözülür.

Çözümler: dosyayı mutlak yolla açmak ya da betiğin başında cd ile kendi dizinine geçmek (veya yolu betiğin konumundan türetmek).

Soru 9 · Dizinler ve Yollar

Bir Dosyayı Açmak Kaç Okuma?

Hesaplama UNIX benzeri bir dosya sisteminde /ders/os/notlar/bolum10.pdf dosyasının ilk veri bloğu okunacak. Hiçbir i-node ya da dizin bloğu bellekte değil (kök i-node’u da diskten okunuyor) ve her dizinin içeriği tek bir bloğa sığıyor. En az kaç disk okuması gerekir?

Cevabı göster

Her dizin için 2 okuma (i-node + dizin bloğu): /, ders, os, notlar → 4 × 2 = 8. Ardından bolum10.pdf’nin i-node’u (1) ve ilk veri bloğu (1): toplam 10 okuma.

Bu maliyet yüzünden İS’ler dizin girdisi önbelleği (dentry/ad önbelleği) ve i-node önbelleği tutar; ikinci açılışta okuma sayısı neredeyse sıfıra iner.

Soru 9 · Adım Adım Çözüm

Soru 9: Adım Adım Çözüm

1–2. Kök i-node’u → kök dizin bloğu: “ders” girdisinden i-node numarası bulunur.

3–4. ders i-node’u → dizin bloğu: “os” bulunur.

5–6. os i-node’u → dizin bloğu: “notlar” bulunur.

7–8. notlar i-node’u → dizin bloğu: “bolum10.pdf” bulunur.

9. bolum10.pdf i-node’u: izinler denetlenir, ilk doğrudan blok adresi alınır.

10. İlk veri bloğu okunur. Toplam = 2 × (dizin sayısı) + 2 = 10.

Soru 10 · Dizinler ve Yollar

Asıl Dosya Silinince

Çoktan seçmeli ln veri.txt kati ve ln -s veri.txt sembol komutlarından sonra rm veri.txt çalıştırılıyor. Hangi ifade doğrudur?

  1. İki bağ da artık çalışmaz; veri silinmiştir
  2. kati hâlâ veriyi açar, çünkü aynı i-node’u gösterir ve bağ sayısı 1’e düşmüştür; sembol ise var olmayan bir yolu gösterdiği için açılamaz
  3. sembol çalışır, kati çalışmaz
  4. rm bağ sayısı 2 olduğu için reddedilir
  5. İkisi de çalışır, çünkü sembolik bağ da i-node numarasını saklar
Cevabı göster

Doğru cevap: B · kati hâlâ veriyi açar, çünkü aynı i-node’u gösterir ve bağ sayısı 1’e düşmüştür; sembol ise var olmayan bir yolu gösterdiği için açılamaz

Katı bağ, aynı i-node’a işaret eden ikinci bir dizin girdisidir; veri, bağ sayısı 0 olana dek silinmez. Sembolik bağ ise içinde yol adı saklayan ayrı bir dosyadır; hedef silinince “sarkan” bağ olur.

Soru 11 · Dizinler ve Yollar

Bağlar ve Bağlama (mount)

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.

  1. Katı bağ, başka bir dosya sistemindeki (ör. USB bellekteki) bir dosyaya da oluşturulabilir.
  2. Sembolik bağ bir dizini gösterebilir.
  3. mount /dev/sdb1 /media/usb, USB’deki dosya sisteminin kök dizinini /media/usb noktasına bağlar; o dizinin önceki içeriği bağlama süresince görünmez.
Cevabı göster
  1. Yanlış. i-node numarası yalnızca kendi dosya sistemi içinde anlamlıdır; dosya sistemleri arası bağ için sembolik bağ gerekir.
  2. Doğru. Sembolik bağ yalnızca bir yol tuttuğu için dizin de gösterebilir; dizinlere katı bağ ise döngü riski nedeniyle genellikle yasaktır.
  3. Doğru. Bağlama noktası, yeni dosya sisteminin kökü olur; böylece tüm aygıtlar tek bir ad ağacında görünür.

Soru 12 · Erişim Hakları

Yalnızca x İzni Olan Dizin

Çoktan seçmeli /srv/teslim dizininin izinleri rwx-----x (diğerleri için yalnızca x). Dizindeki odev.pdf herkes tarafından okunabilir (r--r--r--). Sahibi olmayan bir öğrenci ne yapabilir?

  1. ls /srv/teslim ile dosya adlarını listeleyebilir ama hiçbir dosyayı açamaz
  2. Dosya adlarını listeleyemez; ancak adını bildiği /srv/teslim/odev.pdf dosyasını açıp okuyabilir
  3. Dizindeki programları çalıştırabilir, başka hiçbir şey yapamaz
  4. Dizine yeni dosya ekleyebilir
  5. Hiçbir şey yapamaz; x izni dizinlerde anlamsızdır
Cevabı göster

Doğru cevap: B · Dosya adlarını listeleyemez; ancak adını bildiği /srv/teslim/odev.pdf dosyasını açıp okuyabilir

Dizinde x izni “çalıştırma” değil, arama/girme (geçiş) iznidir: yol çözümlenirken dizinden geçilebilir. Ad listesini okumak için r, ad eklemek/silmek için w (ve x) gerekir.

Soru 13 · Erişim Hakları

Dizin İzinlerini Değerlendirin

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.

  1. Bir dizinde yalnızca r izniniz varsa (x yoksa) cd ile o dizine girebilirsiniz.
  2. Bir dosyayı silmek için dosyanın kendisinde değil, bulunduğu dizinde w ve x izni gerekir.
  3. Dosyada x izni, dosyanın program olarak exec ile çalıştırılabilmesini sağlar.
Cevabı göster
  1. Yanlış. Girmek (ve içindeki dosyalara yol üzerinden erişmek) için x gerekir; yalnızca r ile ancak adlar listelenebilir, ayrıntılar da (boyut, izin) alınamaz.
  2. Doğru. Silme, dizinden bir girdiyi kaldırmaktır; dosyanın kendi izinleri belirleyici değildir (yapışkan bit /tmp gibi dizinlerde bunu ayrıca kısıtlar).
  3. Doğru. Normal dosyada x çalıştırma iznidir; aynı harfin dizindeki anlamı farklıdır.

Soru 14 · Erişim Hakları

Sekizli İzin Hesabı

Hesaplama (a) chmod 751 betik.sh sonrası izinler sembolik olarak nasıl görünür? (b) rw-rw-r-- izni hangi sekizli sayıyla verilir? (c) umask 077 iken yeni oluşturulan bir dosya (varsayılan 666) ve bir dizin (varsayılan 777) hangi izinleri alır?

Cevabı göster

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

(b) rw- = 4 + 2 = 6, rw- = 6, r-- = 4 → 664.

(c) umask bitleri kapatır: 666 & ~077 = 600 (rw-------); 777 & ~077 = 700 (rwx------). Grup ve diğerleri hiçbir şeye erişemez.

Soru 15 · Erişim Hakları

Bayt Bayt mı, Blok Blok mu?

Hesaplama 8 MB’lık bir dosyayı kopyalayan bir program yazıyorsunuz. Hangi sistem çağrılarını kullanırsınız? (a) Her seferinde 1 bayt, (b) her seferinde 4 KB okuyup yazarsanız kaç read + write çağrısı yapılır? Her çağrının sabit ek yükü 0,3 µs ise yalnızca bu ek yük ne kadar sürer?

Cevabı göster

Çağrılar: open (kaynak, O_RDONLY), open/creat (hedef, O_WRONLY|O_CREAT|O_TRUNC), döngüde read → write, read 0 döndürünce close × 2.

(a) 8 × 220 = 8 388 608 bayt → 2 × 8 388 608 = 16 777 216 çağrı → ≈ 5,03 s yalnızca kip geçişi.

(b) 8 388 608 / 4 096 = 2 048 blok → 4 096 çağrı → ≈ 1,23 ms. Ayrıca 4 KB, sayfa ve blok boyutuna denk düştüğü için önbellek ve disk de daha verimli çalışır.

Soru 16 · Blok Tahsisi

Blokları Dosyalara Dağıtmak

Açık uçlu Yeni bir dosya sistemi tasarlıyorsunuz. Disk bloklarını dosyalara atamanın üç klasik yöntemini yazın; her birinde dosyanın k. bloğunun nasıl bulunduğunu, bir avantajını ve bir dezavantajını belirtin.

Cevabı göster
Yöntemk. blok nasıl bulunur?AvantajDezavantaj
Bitişikbaşlangıç + kSıralı ve rastgele erişim çok hızlıDış parçalanma; dosya büyütmek zor
Bağlı liste (FAT: tablo biçimi)Zincirde k adım (FAT bellekteyse RAM’de)Dış parçalanma yok, büyümesi kolayYavaş rastgele erişim; kopan işaretçi zinciri bozar
İndeksli (i-node)İndeks bloğundaki k. girdi (gerekirse dolaylı)Hızlı rastgele erişim, dış parçalanma yokİndeks bloğu ek yükü; çok büyük dosyada çok düzey

Soru 17 · Blok Tahsisi

Bitişik Tahsis Nerede Parlar?

Çoktan seçmeli Bitişik tahsis hangi ortam için en uygun seçimdir?

  1. Dosyaların sürekli büyüyüp küçüldüğü, çok kullanıcılı bir sunucu diski
  2. Veritabanı günlük dosyalarının sürekli eklendiği bir disk
  3. Her gün yüz binlerce küçük dosyanın oluşturulup silindiği bir e-posta sunucusu
  4. Bir kez yazılıp sonra yalnızca okunan, boyutu yazma anında bilinen bir arşiv ya da optik disk (ör. ISO 9660 CD)
Cevabı göster

Doğru cevap: D · Bir kez yazılıp sonra yalnızca okunan, boyutu yazma anında bilinen bir arşiv ya da optik disk (ör. ISO 9660 CD)

Dosya boyutu baştan bilindiğinde ve silme olmadığında bitişik tahsisin zayıflıkları (büyüme sorunu, dış parçalanma) ortaya çıkmaz; tek arama ile tüm dosya ardışık okunur. Diğer senaryolarda sık büyüme/silme dış parçalanmayı hızla artırır.

Soru 18 · Blok Tahsisi

Bağlı Liste ile Tahsisin Zaafı

Çoktan seçmeli Her disk bloğunun son 4 baytında bir sonraki bloğun numarasının saklandığı (FAT kullanılmayan) bağlı liste tahsisinde, 1000 bloklu bir dosyanın 700. bloğunu okumak isteyen bir program için hangisi doğrudur?

  1. Önceki 699 bloğun her biri diskten okunarak zincir izlenmelidir
  2. Başlangıç bloğundan 699 artırılarak tek okumayla bulunur
  3. İndeks bloğundaki 700. girdiye bakılır
  4. Dizin girdisi her bloğun adresini sakladığı için bir okuma yeterlidir
Cevabı göster

Doğru cevap: A · Önceki 699 bloğun her biri diskten okunarak zincir izlenmelidir

Bir sonraki blok adresi ancak önceki blok okununca öğrenilir: rastgele erişim O(k) disk okumasıdır. Ayrıca blok başına işaretçi alanı kaybedilir ve tek bir bozuk işaretçi dosyanın geri kalanını kaybettirir. FAT, işaretçileri bellekteki tabloya taşıyarak bu sorunu hafifletir.

Soru 19 · Blok Tahsisi

FAT Zincirini İzlemek

Hesaplama sunum.pptx dosyasının dizin girdisinde başlangıç kümesi 4 yazıyor. FAT’ın ilgili girdileri: FAT[2] = 10, FAT[4] = 7, FAT[7] = 2, FAT[10] = EOF. (a) Dosya hangi kümelerde, hangi sırayla duruyor? (b) Dosyanın 3. kümesi (sıra 2, 0’dan sayarak) hangisidir? (c) 64 GB’lık bir bölüm 4 KB kümeler ve 4 baytlık FAT girdileriyle biçimlendirilirse FAT ne kadar yer tutar?

Cevabı göster

(a) 4 → 7 → 2 → 10 (EOF): dört küme, diskte ardışık değil.

(b) Sıra 0 = 4, sıra 1 = 7, sıra 2 = küme 2.

(c) 64 GB / 4 KB = 236 / 212 = 224 = 16 777 216 küme × 4 B = 64 MB. Hızlı izleme için bu tablonun bellekte tutulması gerekir; büyük disklerde FAT’ın zayıf yanı budur.

Soru 19 · Adım Adım Çözüm

Soru 19: Adım Adım Çözüm

1. Başlangıç kümesi dizin girdisinden gelir: 4.

2. FAT[4] = 7 → sonraki 7; FAT[7] = 2 → sonraki 2; FAT[2] = 10 → sonraki 10; FAT[10] = EOF → son.

3. Sıra listesi: [4, 7, 2, 10] → sıra 2 = küme 2.

4. Küme sayısı = 64 × 230 / (4 × 210) = 224.

5. FAT = 224 × 4 B = 226 B = 64 MB (FAT32’de genellikle iki kopya tutulur → diskte 128 MB).

Soru 20 · Blok Tahsisi

FAT Hakkında Doğru mu?

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.

  1. FAT, blokları bir tabloda tuttuğu için dosya parçalanmasını en aza indirir; birleştirmeye (defrag) gerek bırakmaz.
  2. Bir dosyanın ilk kümesinin numarası FAT’ta değil, dizin girdisinde tutulur.
  3. FAT bellekte tutulduğunda, dosyanın k. kümesini bulmak için ara veri bloklarını diskten okumak gerekmez.
Cevabı göster
  1. Yanlış. FAT bir bağlı liste tahsisidir; dosyanın kümeleri diske dağılabilir ve sıralı okuma yavaşlar. FAT birimleri parçalanmaya yatkındır, birleştirme sık gerekir.
  2. Doğru. FAT her küme için yalnızca zincirdeki bir sonraki kümeyi (ya da boş, son, bozuk işaretini) saklar.
  3. Doğru. Zincir bellekteki tabloda izlenir; ancak k adım yine gerekir (O(k)) ve büyük disklerde tablo büyük bellek ister.

Soru 21 · Blok Tahsisi

Küçük Dosyada İndeks Bloğu

Çoktan seçmeli Tamamen indeksli bir tahsiste (her dosyanın bir indeks bloğu var) blok boyutu 4 KB. Sistemde ortalama boyutu 500 bayt olan çok sayıda dosya var. Bu iş yükünde indeksli tahsisin öne çıkan dezavantajı hangisidir?

  1. Rastgele erişimin yavaşlaması
  2. Dış parçalanmanın artması
  3. Her küçük dosya için veri bloğuna ek olarak koca bir indeks bloğu ayrılması: alanın büyük kısmı boşa gider
  4. Dosyaların büyüyememesi
Cevabı göster

Doğru cevap: C · Her küçük dosya için veri bloğuna ek olarak koca bir indeks bloğu ayrılması: alanın büyük kısmı boşa gider

500 baytlık dosya için 4 KB veri bloğu + 4 KB indeks bloğu harcanır. UNIX i-node’u bu yüzden ilk birkaç blok adresini (doğrudan işaretçileri) i-node’un içinde tutar; küçük dosyalar ayrı indeks bloğu gerektirmez. ext4 ve NTFS çok küçük dosyaları doğrudan i-node/MFT kaydına da gömebilir.

Soru 22 · i-node ve Boş Alan

i-node ile En Büyük Dosya

Hesaplama Bir dosya sisteminde i-node 10 doğrudan, 1 tek dolaylı ve 1 çift dolaylı işaretçi içeriyor. Blok boyutu 2 KB, blok adresi 4 bayt. Bir dosya en fazla kaç bayt olabilir? Hangi kısım baskındır?

Cevabı göster

Blok başına işaretçi = 2 048 / 4 = 512.

Blok sayısı = 10 + 512 + 5122 = 10 + 512 + 262 144 = 262 666 → × 2 048 B = 537 939 968 B ≈ 513 MB.

Çift dolaylı kısım (512 MB) baskındır; doğrudan bloklar yalnızca 20 KB’ı kapsar. Üçlü dolaylı işaretçi eklenseydi 5123 × 2 KB = 256 GB daha eklenirdi.

Soru 22 · Adım Adım Çözüm

Soru 22: Adım Adım Çözüm

1. İşaretçi/blok: 2 048 B / 4 B = 512.

2. Doğrudan: 10 blok = 20 KB.

3. Tek dolaylı: 512 blok = 1 MB.

4. Çift dolaylı: 512 × 512 = 262 144 blok = 512 MB.

5. Toplam 262 666 blok × 2 048 = 537 939 968 B (≈ 513 MB). Dosya boyutu alanı ve disk boyutu da ayrıca sınır koyabilir.

Soru 23 · i-node ve Boş Alan

Bayt Ofseti Hangi Blokta?

Hesaplama Önceki sorudaki i-node düzeninde (10 doğrudan, 1 tek dolaylı, 1 çift dolaylı; 2 KB blok, 512 işaretçi/blok) bir süreç (a) 1 000 000 ve (b) 5 000 000 numaralı baytları okuyor. Her 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

(a) 1 000 000 / 2 048 → mantıksal blok 488, blok içi ofset 576. 488 ≥ 10 → tek dolaylı bloğun 478. girdisi (488 − 10). Okumalar: dolaylı blok + veri = 2.

(b) 5 000 000 / 2 048 → mantıksal blok 2 441, blok içi ofset 832. 2 441 − 10 − 512 = 1 919 → çift dolaylı: birinci düzey girdi 1 919 / 512 = 3, ikinci düzey girdi 1 919 mod 512 = 383. Okumalar: çift dolaylı + tek dolaylı + veri = 3.

Soru 23 · Adım Adım Çözüm

Soru 23: Adım Adım Çözüm

1. Mantıksal blok = ⌊ofset / 2 048⌋, blok içi = ofset mod 2 048.

2. (a) ⌊1 000 000 / 2 048⌋ = 488, 1 000 000 − 488 × 2 048 = 576.

3. 0–9 doğrudan; 10–521 tek dolaylı → 488 − 10 = 478. girdi.

4. (b) ⌊5 000 000 / 2 048⌋ = 2 441, kalan 832. 2 441 ≥ 522 → çift dolaylı, sıra 2 441 − 522 = 1 919.

5. 1 919 = 3 × 512 + 383 → birinci düzey 3. girdi, ikinci düzey 383. girdi.

Soru 24 · i-node ve Boş Alan

Boş Alan: Bit Eşlem mi, Liste mi?

Hesaplama 256 GB’lık bir disk 4 KB bloklara bölünmüş. (a) Boş alanı izleyen bit eşlem kaç bayt ve kaç blok tutar? (b) Disk tamamen boşken boş blok numaraları 4 baytlık girdilerle bir listede tutulsaydı liste ne kadar yer kaplardı?

Cevabı göster

(a) Blok sayısı 256 GB / 4 KB = 238 / 212 = 226 = 67 108 864. Blok başına 1 bit → 226 / 8 = 223 B = 8 MB = 2 048 blok (diskin yaklaşık %0,003’ü).

(b) 226 × 4 B = 256 MB. Liste, disk doldukça küçülür; bit eşlem ise her zaman sabit boyuttadır ve ardışık boş blok bulmayı kolaylaştırır.

Soru 25 · i-node ve Boş Alan

Blok Boyutunu Seçmek

Çoktan seçmeli Bir dosya sisteminde blok boyutu 1 KB’tan 64 KB’a çıkarılıyor. Dosyaların çoğu birkaç KB’lık. Beklenen sonuç hangisidir?

  1. Büyük dosyaların aktarım hızı artar ama küçük dosyalarda son bloktaki boşluk (iç parçalanma) nedeniyle disk alanı israf edilir
  2. Hem alan kullanımı hem aktarım hızı iyileşir
  3. Alan kullanımı iyileşir, aktarım hızı düşer
  4. Hiçbir şey değişmez; blok boyutu yalnızca bit eşlem boyutunu etkiler
Cevabı göster

Doğru cevap: A · Büyük dosyaların aktarım hızı artar ama küçük dosyalarda son bloktaki boşluk (iç parçalanma) nedeniyle disk alanı israf edilir

Büyük blok: arama ve dönme gecikmesi başına daha çok veri aktarılır (iyi veri hızı). Küçük blok: daha az iç parçalanma (iyi alan kullanımı). İkisi çelişir; çoğu sistem 4 KB’ı seçer, ext4 gibi sistemler de büyük dosyalar için extent’lerle ardışıklık sağlar.

Soru 26 · Tutarlılık ve Güvenilirlik

Pil Aniden Bitti

Açık uçlu Dosya kaydedilirken dizüstünün pili bitiyor; yeniden açılışta dosya sistemi tutarlı geliyor. Dosya sisteminin tutarlılığını güç kesintisine karşı koruyan üç yöntemi açıklayın. Hangisi verinin kendisinin son hâlini garanti etmez?

Cevabı göster
  • Günlükleme (journaling): değişiklikler önce günlüğe işlem olarak yazılır, onaylanınca asıl yerine uygulanır; açılışta yarım işlemler ya yeniden oynatılır ya atılır.
  • Yazınca kopyala (CoW; ZFS, Btrfs, APFS): blok yerinde değiştirilmez, yeni yere yazılır; kök işaretçisi atomik olarak güncellenir. Eski ağaç hep tutarlıdır.
  • Tutarlılık denetimi (fsck/chkdsk): açılışta tüm meta veri taranıp onarılır; yavaştır.

Ek önlemler: UPS (kesintiyi önler), fsync ile kritik veriyi zorla diske yazmak. Varsayılan (yalnız üst veri) günlükleme yapıyı korur ama son yazılan verinin diske ulaştığını garanti etmez. RAID 1 disk arızasına karşı korur; yarım kalan yazmaya karşı tek başına çözüm değildir.

Soru 27 · Tutarlılık ve Güvenilirlik

Günlük Tam Nerede Kesildi?

Çoktan seçmeli Günlüklemeli bir dosya sisteminde bir işlem şu sırayla yürür: (1) işlem başlangıcı ve değişen bloklar günlüğe, (2) işlem sonu (commit) kaydı günlüğe, (3) blokların asıl yerlerine yazılması (checkpoint), (4) günlük kaydının serbest bırakılması. Elektrik (2) tamamlandıktan sonra, (3) sırasında kesiliyor. Açılışta ne olur?

  1. İşlem atılır; değişiklikler kaybolur
  2. İşlem onaylanmış olduğu için günlükten yeniden oynatılır ve asıl bloklar güncellenir
  3. Tüm disk fsck ile baştan taranmalıdır
  4. Dosya sistemi bozulur ve biçimlendirmek gerekir
Cevabı göster

Doğru cevap: B · İşlem onaylanmış olduğu için günlükten yeniden oynatılır ve asıl bloklar güncellenir

Commit kaydı diskteyse işlem eksiksiz günlüktedir; bloklar yeniden yazılır (aynı içeriği iki kez yazmak zararsızdır). Commit’ten önce kesilseydi işlem yarım sayılır ve atılırdı; her iki durumda da dosya sistemi tutarlı kalır ve açılış saniyeler sürer.

Soru 28 · Tutarlılık ve Güvenilirlik

write() Döndü, Veri Nerede?

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

  1. Veri çekirdeğin sayfa önbelleğine kopyalanmış, diske henüz geri yazılmamıştı; kritik kayıttan sonra fsync(fd) çağrılmalıdır
  2. write() veriyi doğrudan diske yazar; disk arızalıdır
  3. Dosya kapatılmadığı için write() hiçbir şey yazmamıştır
  4. Önbellek yalnızca okumalar için kullanıldığından veri kaybı başka bir hatadır
Cevabı göster

Doğru cevap: A · Veri çekirdeğin sayfa önbelleğine kopyalanmış, diske henüz geri yazılmamıştı; kritik kayıttan sonra fsync(fd) çağrılmalıdır

Geri yazmalı (write-back) önbellek başarımı artırır ama çökme anında son değişiklikler kaybolabilir. fsync (veya O_SYNC) verinin kalıcı depolamaya ulaşmasını bekler. close() tek başına diske yazmayı garanti etmez.

Soru 29 · Tutarlılık ve Güvenilirlik

Bir Diske Kaç İS Kurulur?

Çoktan seçmeli Bir öğrenci “MBR’li bir diske en fazla 4 işletim sistemi kurulabilir” diyor. En doğru değerlendirme hangisidir?

  1. Doğrudur; MBR yalnızca 4 önyükleme kodu saklar
  2. Yanlıştır; MBR’li diske yalnızca bir İS kurulabilir
  3. MBR’nin bölüm tablosu en fazla 4 birincil bölüm tanımlar; biri genişletilmiş bölüm yapılarak mantıksal bölümler eklenebilir, GPT ise varsayılan olarak 128 bölüm destekler. Kaç İS kurulacağını bölüm sayısı ve önyükleyici belirler
  4. Doğrudur; GPT de 4 bölümle sınırlıdır
Cevabı göster

Doğru cevap: C · MBR’nin bölüm tablosu en fazla 4 birincil bölüm tanımlar; biri genişletilmiş bölüm yapılarak mantıksal bölümler eklenebilir, GPT ise varsayılan olarak 128 bölüm destekler. Kaç İS kurulacağını bölüm sayısı ve önyükleyici belirler

MBR diskin ilk sektörüdür: önyükleme kodu + 4 girdilik bölüm tablosu (+ 2 TB sınırı). GRUB gibi bir önyükleyici birçok bölümdeki İS’ler arasında seçim yapabilir. UEFI sistemlerde GPT ve EFI sistem bölümü kullanılır.

Özet

Özet: Sık Yapılan Hatalar

Yanlış düşünceDoğrusu
Dizinde x izni çalıştırma demektir.Dizinde x, arama/girme (geçiş) iznidir; listelemek için r gerekir.
Dosyanın adı i-node’da saklanır.Ad dizin girdisindedir; i-node yalnızca öznitelik ve blok adreslerini tutar.
FAT parçalanmayı önler.FAT bağlı liste tahsisidir ve parçalanmaya yatkındır.
Tahsis yöntemleri: tek ve çift bağlı liste.Klasik üçlü: bitişik, bağlı liste (FAT), indeksli (i-node).
write() dönünce veri diskte demektir.Veri önbellektedir; kalıcılık için fsync gerekir.
fork sonrası iki süreç ayrı ofset kullanır.Kopyalanan tanımlayıcılar aynı açık dosya girdisini ve ofseti paylaşır.
Katı bağ başka dosya sistemine de yapılabilir.i-node numarası yereldir; sembolik bağ gerekir.

Son

Bölüm 10: Dosya Sistemleri
Sonraki: Bölüm 11 Çalışma Soruları
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.