Bölüm 10: Dosya Sistemleri
Giriş
Nasıl çalışalım?
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?
a.out(derlenmiş ELF programı)logo.pngnotlar.csv(virgülle ayrılmış öğrenci notları)arsiv.zipMain.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 |
| Boyut | Basamak sayısına bağlı, satır sonu ek bayt | Her değer sabit 4 bayt, genellikle daha küçük |
| İşleme | Okurken karakterden sayıya dönüşüm (ayrıştırma) gerekir | Bellek gösterimiyle aynı, doğrudan okunur, rastgele erişim kolay |
| Taşınabilirlik | Kodlama (UTF-8) ve satır sonu (LF/CRLF) farkına dikkat | Bayt 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;ddizin,lsembolik 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?
- 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
- Dosya verisi arka planda kopyalanır; komut beklemeden döner
- Dosya sıkıştırılarak taşındığı için hızlıdır
- 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,read1 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?
/home/elif/odev/notlar/bolum10.txt/notlar/bolum10.txt/home/notlar/bolum10.txt/home/elif/notlar/bolum10.txt/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?
- İki bağ da artık çalışmaz; veri silinmiştir
katihâlâ veriyi açar, çünkü aynı i-node’u gösterir ve bağ sayısı 1’e düşmüştür;sembolise var olmayan bir yolu gösterdiği için açılamazsembolçalışır,katiçalışmazrmbağ sayısı 2 olduğu için reddedilir- İ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.
- Katı bağ, başka bir dosya sistemindeki (ör. USB bellekteki) bir dosyaya da oluşturulabilir.
- Sembolik bağ bir dizini gösterebilir.
mount /dev/sdb1 /media/usb, USB’deki dosya sisteminin kök dizinini/media/usbnoktasına bağlar; o dizinin önceki içeriği bağlama süresince görünmez.
Cevabı göster
- Yanlış. i-node numarası yalnızca kendi dosya sistemi içinde anlamlıdır; dosya sistemleri arası bağ için sembolik bağ gerekir.
- 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.
- 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?
ls /srv/teslimile dosya adlarını listeleyebilir ama hiçbir dosyayı açamaz- Dosya adlarını listeleyemez; ancak adını bildiği
/srv/teslim/odev.pdfdosyasını açıp okuyabilir - Dizindeki programları çalıştırabilir, başka hiçbir şey yapamaz
- Dizine yeni dosya ekleyebilir
- 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.
- Bir dizinde yalnızca
rizniniz varsa (xyoksa)cdile o dizine girebilirsiniz. - Bir dosyayı silmek için dosyanın kendisinde değil, bulunduğu dizinde
wvexizni gerekir. - Dosyada
xizni, dosyanın program olarakexecile çalıştırılabilmesini sağlar.
Cevabı göster
- Yanlış. Girmek (ve içindeki dosyalara yol üzerinden erişmek) için
xgerekir; yalnızcarile ancak adlar listelenebilir, ayrıntılar da (boyut, izin) alınamaz. - Doğru. Silme, dizinden bir girdiyi kaldırmaktır; dosyanın kendi izinleri belirleyici değildir (yapışkan bit
/tmpgibi dizinlerde bunu ayrıca kısıtlar). - 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öntem | k. blok nasıl bulunur? | Avantaj | Dezavantaj |
|---|---|---|---|
| Bitişik | başlangıç + k | Sı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 kolay | Yavaş 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?
- Dosyaların sürekli büyüyüp küçüldüğü, çok kullanıcılı bir sunucu diski
- Veritabanı günlük dosyalarının sürekli eklendiği bir disk
- Her gün yüz binlerce küçük dosyanın oluşturulup silindiği bir e-posta sunucusu
- 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?
- Önceki 699 bloğun her biri diskten okunarak zincir izlenmelidir
- Başlangıç bloğundan 699 artırılarak tek okumayla bulunur
- İndeks bloğundaki 700. girdiye bakılır
- 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.
- FAT, blokları bir tabloda tuttuğu için dosya parçalanmasını en aza indirir; birleştirmeye (defrag) gerek bırakmaz.
- Bir dosyanın ilk kümesinin numarası FAT’ta değil, dizin girdisinde tutulur.
- FAT bellekte tutulduğunda, dosyanın k. kümesini bulmak için ara veri bloklarını diskten okumak gerekmez.
Cevabı göster
- 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.
- Doğru. FAT her küme için yalnızca zincirdeki bir sonraki kümeyi (ya da boş, son, bozuk işaretini) saklar.
- 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?
- Rastgele erişimin yavaşlaması
- Dış parçalanmanın artması
- 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
- 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?
- 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
- Hem alan kullanımı hem aktarım hızı iyileşir
- Alan kullanımı iyileşir, aktarım hızı düşer
- 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?
- İşlem atılır; değişiklikler kaybolur
- İşlem onaylanmış olduğu için günlükten yeniden oynatılır ve asıl bloklar güncellenir
- Tüm disk fsck ile baştan taranmalıdır
- 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?
- 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 write()veriyi doğrudan diske yazar; disk arızalıdır- Dosya kapatılmadığı için
write()hiçbir şey yazmamıştır - Ö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?
- Doğrudur; MBR yalnızca 4 önyükleme kodu saklar
- Yanlıştır; MBR’li diske yalnızca bir İS kurulabilir
- 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
- 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üşünce | Doğ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. |