Bölüm 2: İşletim Sistemi Yapıları
Giriş
Nasıl çalışalım?
29 soru · Çoktan seçmeli: 16 · Açık uçlu: 6 · Doğru / Yanlış: 2 · Hesaplama: 2 · Kod izleme: 3. Sorular konu başlıklarına göre gruplanmış ve kolaydan zora sıralanmıştır.
Soru 1 · Servisler ve Koruma
Hangisi İS Hizmeti Değil?
Çoktan seçmeli İşletim sistemleri kullanıcıya ve programlara bir dizi hizmet sunar. Aşağıdakilerden hangisi bu hizmetlerden biri değildir?
- Programı belleğe yükleyip çalıştırmak ve sonlandırmak
- Dosya oluşturma, okuma, silme işlemleri
- Bir elektronik tablodaki formülleri yeniden hesaplamak
- Süreçlerin birbiriyle haberleşmesini sağlamak
- Donanım ve yazılım hatalarını algılayıp ele almak
Cevabı göster
Doğru cevap: C · Bir elektronik tablodaki formülleri yeniden hesaplamak
Formül hesaplamak, uygulamanın kendi mantığıdır; İS ona yalnızca CPU ve bellek sağlar. Program yürütme, dosya sistemi, iletişim ve hata algılama ise İS’nin standart hizmet gruplarındandır.
Soru 2 · Servisler ve Koruma
Kullanıcı Kipinde Serbest Komut
Çoktan seçmeli Aşağıdaki işlemlerden hangisi ayrıcalıklı olmak zorunda değildir, yani kullanıcı kipindeki bir program tarafından serbestçe yapılabilir?
- Sistem saatini okumak
- Kesmeleri kapatmak
- Donanım zamanlayıcısına yeni bir değer yazmak
- Belleğin herhangi bir bölgesini sıfırlamak
- İşlemciyi doğrudan çekirdek kipine geçirmek
Cevabı göster
Doğru cevap: A · Sistem saatini okumak
Saati okumak kimseye zarar vermez. Zamanlayıcıyı ayarlayan bir program CPU’yu tekeline alabilir, kesmeleri kapatan İS’yi devre dışı bırakır, belleği temizleyen başka süreçlerin verisini siler; doğrudan çekirdek kipine geçiş de korumayı anlamsızlaştırır. Çekirdeğe yalnızca tuzak (sistem çağrısı) ile denetimli girilir.
Soru 3 · Servisler ve Koruma
İS’yi Koruyan Üç Donanım Desteği
Açık uçlu İS’nin kendini ve süreçleri hatalı programlardan koruyabilmesi için donanımdan beklediği üç desteği yazın ve birlikte nasıl çalıştıklarını açıklayın.
Cevabı göster
- Çift kip (kip biti) ve ayrıcalıklı komutlar: tehlikeli komutlar yalnızca çekirdek kipinde çalışır; kullanıcı kipinde denenirse tuzak oluşur.
- Bellek koruması (taban/sınır yazmaçları ya da MMU ve sayfa tabloları): süreç yalnızca kendi adres uzayına erişir; dışına çıkarsa tuzak oluşur.
- Zamanlayıcı: periyodik kesmeyle denetimi çekirdeğe geri verir; sonsuz döngüdeki süreç CPU’yu tekeline alamaz.
Birlikte: kullanıcı programı ayrıcalıklı komut veya izinsiz bellek erişimiyle sisteme zarar veremez; zamanlayıcı da çekirdeğin her zaman yeniden söz sahibi olmasını sağlar. Zamanlayıcı ve MMU yazmaçlarını değiştirmek de ayrıcalıklıdır.
Soru 4 · Servisler ve Koruma
Sonsuz Döngüdeki Programı Kim Durdurur?
Çoktan seçmeli Bir öğrencinin programı while (1); satırında takıldı ve hiç sistem çağrısı yapmıyor. Tek çekirdekli bir makinede İS’nin buna rağmen başka süreçleri çalıştırabilmesini ne sağlar?
- Programın bir süre sonra kendiliğinden CPU’yu bırakması
- Kabuğun programa sinyal göndermesi
- Derleyicinin sonsuz döngüyü kaldırması
- Donanım zamanlayıcısının periyodik kesmesi
Cevabı göster
Doğru cevap: D · Donanım zamanlayıcısının periyodik kesmesi
Zamanlayıcı kesmesi geldiğinde CPU kesme işleyicisine, yani çekirdeğe atlar; çizelgeleyici başka bir süreci seçebilir. İşbirlikçi sistemlerde süreç CPU’yu kendisi bırakmalıdır; kabuğun sinyal gönderebilmesi için de önce CPU’ya sahip olması, yani zamanlayıcının çekirdeği çalıştırması gerekir.
Soru 5 · Servisler ve Koruma
Çekirdek Kipi, root ve Çoklu Görev
Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.
- root kullanıcısı olarak çalışan bir program CPU’nun çekirdek kipinde yürütülür.
- İşbirlikçi (cooperative) çoklu görevde, CPU’yu bırakmayan tek bir süreç bütün sistemi kilitleyebilir.
- Kesintili (preemptive) çoklu görev, donanım zamanlayıcısı olmadan gerçeklenemez.
Cevabı göster
- Yanlış. root, İS’nin tanıdığı bir yazılım yetkisidir; root süreçleri de kullanıcı kipinde çalışır ve çekirdeğe sistem çağrısıyla girer. Çekirdek kipi ise donanımın sağladığı bir CPU durumudur.
- Doğru. Bu modelde geçiş, sürecin gönüllü olarak denetimi bırakmasına bağlıdır; eski Windows 3.x ve klasik Mac OS böyleydi.
- Doğru. İS’nin süreci zorla kesebilmesi için periyodik olarak denetimi geri alması gerekir; bunu zamanlayıcı kesmesi sağlar.
Soru 6 · Sistem Çağrıları
Uygulama Diske Neden Doğrudan Yazamaz?
Açık uçlu Bir metin düzenleyici kaydettiğiniz dosyayı diske kendisi yazmıyor, bunun için sistem çağrısı kullanıyor. Sistem çağrısının temel amacı nedir? Bu yaklaşımın iki yararını belirtin.
Cevabı göster
Sistem çağrısı, kullanıcı kipindeki bir programın çekirdekten denetimli biçimde hizmet istediği arayüzdür. Program ayrıcalıklı komutları kullanamadığı için donanıma (disk denetleyicisine) doğrudan erişemez; bir tuzak komutuyla çekirdeğe girer, çekirdek işi onun adına yapar.
- Koruma: çekirdek izinleri (dosyaya yazma hakkı var mı?) ve parametreleri doğrular; hatalı program diski bozamaz.
- Soyutlama ve taşınabilirlik: uygulama disk türünü bilmez; aynı
write()HDD’de, SSD’de, ağ dosya sisteminde çalışır. - Ayrıca paylaşım: çekirdek aynı aygıtı kullanan süreçleri sıraya koyar.
Soru 7 · Sistem Çağrıları
strlen() ile write() Farkı
Çoktan seçmeli strlen() ile write() arasındaki temel fark hangisidir?
strlen()çekirdeğe girdiği içinwrite()’tan yavaştırwrite()bir tuzak komutuyla çekirdek kipine geçer;strlen()tamamen kullanıcı kipinde çalışan bir kütüphane fonksiyonudur- İkisi de çekirdek kipinde çalışır, yalnızca dönüş türleri farklıdır
write()derleme sırasında programın içine gömülür, çalışırken çekirdeğe gitmez
Cevabı göster
Doğru cevap: B · write() bir tuzak komutuyla çekirdek kipine geçer; strlen() tamamen kullanıcı kipinde çalışan bir kütüphane fonksiyonudur
Sıradan fonksiyon çağrısı aynı adres uzayında bir call/ret’tir. Sistem çağrısı ise kip değişimi, çağrı numarasıyla tablodan işleyici seçimi ve parametre doğrulaması içerir; bu yüzden onlarca, yüzlerce kat pahalıdır.
Soru 8 · Sistem Çağrıları
Sistem Çağrısı ile Fonksiyon Çağrısı
Açık uçlu Sistem çağrısı ile sıradan bir fonksiyon çağrısını dört yönden karşılaştırın: kip, giriş yolu, maliyet, güvenlik.
Cevabı göster
| Fonksiyon çağrısı | Sistem çağrısı | |
|---|---|---|
| Kip | Kullanıcı kipinde kalır | Kullanıcı → çekirdek → kullanıcı kipi |
| Giriş yolu | call ile herhangi bir adrese | Tuzak komutu (syscall); yalnızca çekirdeğin belirlediği giriş noktası |
| Maliyet | Birkaç ns | Kip geçişi, yazmaç kaydetme, doğrulama: çok daha pahalı |
| Güvenlik | Denetim yok | Çekirdek parametreleri ve izinleri doğrular |
Programcı için ikisi de fonksiyon gibi görünür, çünkü libc sistem çağrılarını küçük sarmalayıcı fonksiyonlarla sunar.
Soru 9 · Sistem Çağrıları
Hangisi Çekirdeğe Girmez?
Çoktan seçmeli Aşağıdaki işlemlerden hangisi çekirdeğe girmeden, yalnızca kütüphane koduyla tamamlanabilir?
- Bir dosyanın adını değiştirmek (
rename) "42"dizgesini tamsayıya çevirmek (atoi)- Bir dosyayı açmak (
open) - Yeni bir süreç oluşturmak (
fork)
Cevabı göster
Doğru cevap: B · "42" dizgesini tamsayıya çevirmek (atoi)
atoi, sprintf, strlen yalnızca bellekteki veriyle çalışır. Dosya adı değiştirmek ve dosya açmak dosya sistemine, süreç oluşturmak çekirdek yapılarına dokunur; bunlar sistem çağrısı gerektirir. Benzer biçimde bir veriyi şifrelemek de kütüphaneyle yapılabilir; printf ise kütüphane fonksiyonudur ama tamponu boşaltırken write() sistem çağrısını kullanır.
Soru 10 · Sistem Çağrıları
Sistem Çağrılarını Sınıflandırın
Açık uçlu Şu sistem çağrılarını türlerine göre eşleştirin: fork, open, ioctl, pipe, getpid, chmod, waitpid. Türler: süreç denetimi, dosya yönetimi, aygıt yönetimi, bilgi bakımı, iletişim, koruma.
Cevabı göster
- Süreç denetimi:
fork,waitpid - Dosya yönetimi:
open - Aygıt yönetimi:
ioctl(aygıta özgü ayar/komut) - Bilgi bakımı:
getpid(ayrıcatime) - İletişim:
pipe(ayrıcasocket,shmget) - Koruma:
chmod(ayrıcachown,umask)
Bellek ayırma (brk, mmap) da süreç denetimi grubunda sayılır; şifreleme ya da sıralama gibi işlemler bir çağrı türü değildir.
Soru 11 · Sistem Çağrıları
read() Çağrısının Yolu: Sıralama
Açık uçlu Bir program read(fd, buf, 100) çağırıyor. Adımları doğru sıraya koyun: (a) çekirdek, çağrı numarasıyla sistem çağrısı tablosundan işleyiciyi bulur ve parametreleri doğrular; (b) libc sarmalayıcısı çağrı numarasını ve argümanları yazmaçlara koyar; (c) dönüş değeri yazmaca yazılır, CPU kullanıcı kipine döner; (d) uygulama read fonksiyonunu çağırır; (e) syscall komutu tuzak üretir, CPU çekirdek kipine geçer; (f) sys_read veriyi bulur ve kullanıcı tamponuna kopyalar.
Cevabı göster
d → b → e → a → f → c
Veri gerekiyorsa ve henüz önbellekte değilse sys_read disk isteği verir; süreç bloke olur, başka süreç çalışır ve disk kesmesiyle uyandırılır. Dönüş değeri okunan bayt sayısıdır (dosya sonunda 0, hatada −1 ve errno).
Soru 11 · Adım Adım Çözüm
Soru 11: Adım Adım Çözüm
d, b: Uygulama read’i sıradan bir fonksiyon gibi çağırır; libc çağrı numarasını (x86-64 Linux’ta rax) ve argümanları yazmaçlara yerleştirir.
e: syscall tuzağı: donanım kip bitini çevirir ve çekirdeğin önceden belirlediği giriş noktasına atlar.
a, f: Çekirdek tablodan sys_read’i seçer, fd ve buf adresini doğrular, veriyi kullanıcı tamponuna kopyalar.
c: Sonuç yazmaca konur, kullanıcı kipine dönülür; uygulama bir sonraki satırdan devam eder.
Soru 12 · Sistem Çağrıları
Çok Parametreli Sistem Çağrısı
Çoktan seçmeli Bir sistem çağrısının yazmaçlara sığmayacak kadar çok parametresi var. Parametreleri çekirdeğe iletmenin yaygın yolu hangisidir?
- Parametreleri çekirdeğin global değişkenlerine doğrudan yazmak
- Parametreleri diske yazıp çekirdeğin oradan okumasını sağlamak
- Her parametre için ayrı bir sistem çağrısı yapmak
- Parametreleri bellekte bir bloğa (yapıya) yazıp yalnızca bloğun adresini bir yazmaçla geçirmek
Cevabı göster
Doğru cevap: D · Parametreleri bellekte bir bloğa (yapıya) yazıp yalnızca bloğun adresini bir yazmaçla geçirmek
Üç yöntem vardır: yazmaçlar, bellekteki blok + adresi, yığın. Linux ve Solaris az sayıda parametreyi yazmaçla, fazlasını blok adresiyle iletir. Kullanıcı programı çekirdek belleğine yazamaz; çekirdek, verilen adresteki bloğu kendisi doğrulayıp kopyalar.
Soru 13 · Sistem Çağrıları
Dosya Kopyalama Döngüsü
Kod izleme kaynak 10 000 baytlık bir dosyaya, hedef boş bir dosyaya açık dosya tanımlayıcısıdır. Program ne yazdırır? read ve write için toplam kaç sistem çağrısı yapılır?
char buf[4096]; int okuma = 0, yazma = 0; long toplam = 0; ssize_t n; for (;;) { n = read(kaynak, buf, sizeof buf); okuma++; if (n <= 0) break; write(hedef, buf, n); yazma++; toplam += n; } printf("okuma=%d yazma=%d toplam=%ld\n", okuma, yazma, toplam);
Cevabı göster
okuma=4 yazma=3 toplam=10000
read sırasıyla 4096, 4096, 1808 ve 0 döndürür. 0 dosya sonudur; döngü biter ama o çağrı da sayılır.
Toplam 4 + 3 = 7 sistem çağrısı (her biri iki kip geçişi). Son write 4096 değil, n = 1808 bayt yazmalıdır.
Soru 13 · Adım Adım Çözüm
Soru 13: Adım Adım Çözüm
char buf[4096]; int okuma = 0, yazma = 0; long toplam = 0; ssize_t n; for (;;) { n = read(kaynak, buf, sizeof buf); okuma++; if (n <= 0) break; write(hedef, buf, n); yazma++; toplam += n; } printf("okuma=%d yazma=%d toplam=%ld\n", okuma, yazma, toplam);
İlk read: tampon dolar, 4096 bayt.
Okunan kadar yazılır; toplam 4096.
İkinci read: yine 4096 bayt (kalan 5904).
Toplam 8192; dosyada 1808 bayt kaldı.
Üçüncü read yalnızca kalanı döndürür: 1808.
write(hedef, buf, 1808): tamponun yalnızca dolu kısmı yazılır.
Dördüncü read 0 döndürür: dosya sonu.
okuma 4 oldu; n <= 0 → break.
4 read + 3 write = 7 sistem çağrısı.
Soru 14 · Sistem Çağrıları
Tampon Boyutunun Bedeli
Hesaplama Her sistem çağrısının yalnızca kip geçişi ve giriş/çıkış maliyeti 0,2 µs olsun. 1 MiB’lık bir dosya önce 1 baytlık, sonra 4096 baytlık tamponla read döngüsüyle okunuyor (dosya sonunu gösteren son çağrı dahil). Her durumda kaç read yapılır ve bu ek yük ne kadardır?
Cevabı göster
1 MiB = 1 048 576 B.
- 1 B tampon: 1 048 576 + 1 = 1 048 577 çağrı → × 0,2 µs ≈ 209,7 ms.
- 4096 B tampon: 1 048 576 / 4096 = 256, + 1 = 257 çağrı → 51,4 µs.
Fark yaklaşık 4 000 kattır. Bu yüzden stdio (fread, getc) kullanıcı alanında tamponlar ve çekirdeğe büyük parçalarla gider.
Soru 15 · Sistem Çağrıları
Hangi Tanımlayıcı Numarası?
Kod izleme Program yeni başlamış, yalnızca 0, 1 ve 2 numaralı dosya tanımlayıcıları açık; tüm dosyalar mevcut. Ekrana ne yazılır?
int a = open("a.txt", O_RDONLY); int b = open("b.txt", O_RDONLY); close(a); int c = open("c.txt", O_RDONLY); int d = dup(b); close(0); int e = open("e.txt", O_RDONLY); printf("%d %d %d %d %d\n", a, b, c, d, e);
Cevabı göster
3 4 3 5 0
- Kural:
openvedupen küçük boş numarayı verir. a= 3,b= 4;close(a)3’ü boşaltır →c= 3.dup(b)4’ün kopyası → 5.close(0)standart girdiyi kapatır →e= 0.
Bu kural, kabuğun girdi/çıktı yönlendirmesinin temelidir: artık scanf e.txt’den okur.
Soru 16 · Sistem Çağrıları
exec Başarılıysa Geri Döner mi?
Kod izleme Program ne yazdırır? "echo" yerine yanlışlıkla "ecoh" yazılsaydı çıktı ne olurdu?
int main(void) { printf("A\n"); fflush(stdout); pid_t p = fork(); if (p == 0) { execlp("echo", "echo", "B", NULL); printf("C\n"); return 1; } waitpid(p, NULL, 0); printf("D\n"); return 0; }
Cevabı göster
A B D
Başarılı execlp çocuğun bellek görüntüsünü echo programıyla değiştirir ve geri dönmez; printf("C") hiç çalışmaz. Ebeveyn çocuğu bekledikten sonra D’yi yazar.
Program bulunamazsa execlp −1 döndürür, çocuk C’yi yazar: A, C, D. fflush, A’nın tamponda kalıp çocuğa da kopyalanmasını önler.
Soru 17 · Çekirdek Yapıları
Bu Hangi Yapı?
Çoktan seçmeli Bir çekirdekte dosya sistemi, ağ yığını, sürücüler ve çizelgeleyici aynı ayrıcalıklı adres uzayında çalışıyor ve birbirlerini doğrudan fonksiyon çağrısıyla kullanıyor. Bu yapı hangisidir?
- Monolitik çekirdek
- Mikroçekirdek
- Exokernel
- İstemci–sunucu modeli
Cevabı göster
Doğru cevap: A · Monolitik çekirdek
Monolitik çekirdekte tüm hizmetler tek bir büyük programdır; bileşenler arası iletişim ucuz bir fonksiyon çağrısıdır. Mikroçekirdekte ve istemci–sunucu modelinde ise hizmetler kullanıcı alanında ayrı sunuculardır ve ileti ile haberleşir.
Soru 18 · Çekirdek Yapıları
Mikroçekirdekte Okuma Neden Yavaş?
Çoktan seçmeli Aynı donanımda bir dosya okuma isteği, mikroçekirdek tabanlı bir İS’de çoğu zaman monolitik bir çekirdeğe göre daha yavaş tamamlanır. Bunun temel nedeni nedir?
- Mikroçekirdekte sürücüler derlenmemiş betiklerdir
- Mikroçekirdekler önbellek kullanamaz
- İstek, kullanıcı alanındaki dosya sunucusuna ileti olarak gider; ek kip geçişleri, bağlam değişimleri ve veri kopyaları gerekir
- Mikroçekirdekler sanal belleği desteklemez
Cevabı göster
Doğru cevap: C · İstek, kullanıcı alanındaki dosya sunucusuna ileti olarak gider; ek kip geçişleri, bağlam değişimleri ve veri kopyaları gerekir
Monolitikte tek tuzak + çekirdek içi fonksiyon çağrıları yeter. Mikroçekirdekte uygulama → çekirdek → dosya sunucusu → (sürücü sunucusu) → geri dönüş zincirinde her adım bir IPC iletisidir. L4 gibi tasarımlar bu maliyeti çok azaltmıştır ama sıfırlayamaz.
Soru 19 · Çekirdek Yapıları
Bir Okuma İsteğinin Maliyeti
Hesaplama Bir kip geçişi 0,1 µs, bir bağlam değiştirme 1 µs sürsün. Monolitik çekirdekte okuma isteği tek bir sistem çağrısıdır (girişte ve dönüşte birer kip geçişi). Mikroçekirdekte aynı istek dört iletiyle tamamlanıyor: uygulama → dosya sunucusu → disk sürücüsü → dosya sunucusu → uygulama; her ileti bir sistem çağrısı (iki kip geçişi) ve bir bağlam değiştirme gerektiriyor. Diskin kendisi hariç ek yükleri karşılaştırın.
Cevabı göster
Monolitik: 2 × 0,1 = 0,2 µs.
Mikroçekirdek: ileti başına 2 × 0,1 + 1 = 1,2 µs → 4 × 1,2 = 4,8 µs, yani 24 kat.
Disk erişimi milisaniyeler sürdüğünde bu fark küçük kalır; ancak önbellekten karşılanan sık ve küçük isteklerde belirleyici olur. Mikroçekirdek tasarımları bu yüzden IPC’yi en hızlı yol olarak eniyiler.
Soru 20 · Çekirdek Yapıları
Mikroçekirdeğin Asıl Kazancı
Çoktan seçmeli Aşağıdakilerden hangisi mikroçekirdek yapısının avantajıdır?
- Kullanıcı alanında çöken bir sürücü yeniden başlatılabilir; çekirdek ve diğer hizmetler çalışmayı sürdürür
- Bileşenler arası iletişim, monolitik çekirdektekinden daha ucuzdur
- Bir sistem çağrısı daha az kip geçişiyle tamamlanır
- Tüm hizmetler tek bir ikili dosyada olduğundan dağıtım kolaydır
Cevabı göster
Doğru cevap: A · Kullanıcı alanında çöken bir sürücü yeniden başlatılabilir; çekirdek ve diğer hizmetler çalışmayı sürdürür
Ayrıcalıklı kod çok küçüktür (MINIX 3’te birkaç bin satır); hatalar yalıtılır, güvenilirlik ve güvenlik artar, hizmetler bağımsız güncellenebilir. Diğer üç ifade ya monolitik yapıyı anlatır ya da tersi doğrudur.
Soru 21 · Çekirdek Yapıları
Hangi Çekirdeği Önerirsiniz?
Açık uçlu Bir otomobil üreticisi, frenlere yardımcı sürücü destek birimi için çekirdek seçiyor; bir sürücünün hatası tüm sistemi çökertmemeli. Aynı firma veri merkezindeki yüksek trafikli sunucular için de çekirdek arıyor. Monolitik ve mikroçekirdek yapıları başarım ve güvenilirlik/güvenlik açısından karşılaştırarak her biri için öneride bulunun.
Cevabı göster
| Monolitik | Mikroçekirdek | |
|---|---|---|
| Başarım | Yüksek: hizmetler arası doğrudan çağrı | Düşük: IPC, kip ve bağlam geçişleri |
| Güvenilirlik | Bir sürücü hatası tüm çekirdeği çökertebilir | Hata ilgili sunucuda kalır, yeniden başlatılabilir |
| Güvenlik | Ayrıcalıklı kod büyük, saldırı yüzeyi geniş | Ayrıcalıklı kod küçük, doğrulanabilir (seL4) |
| Bakım | Büyük, iç içe geçmiş kod | Modüler, hizmetler ayrı geliştirilir |
Öneri: güvenlik kritik araç birimi için mikroçekirdek (ör. QNX); verim odaklı sunucular için monolitik (Linux). Seçim bir başarım–güvenilirlik ödünleşimidir.
Soru 22 · Çekirdek Yapıları
Yüklenebilir Modül Nerede Çalışır?
Çoktan seçmeli Linux’ta modprobe ile çalışma sırasında yüklenen bir ağ kartı sürücüsü hangi kipte ve hangi adres uzayında çalışır?
- Kullanıcı kipinde ayrı bir sunucu süreci olarak
- Çekirdek kipinde, çekirdek adres uzayında; çekirdeğin geri kalanıyla doğrudan fonksiyon çağrısıyla konuşur
- Hipervizörün içinde, çekirdekten bağımsız olarak
- Ağ kartının ürün yazılımında; İS’ye hiç yüklenmez
Cevabı göster
Doğru cevap: B · Çekirdek kipinde, çekirdek adres uzayında; çekirdeğin geri kalanıyla doğrudan fonksiyon çağrısıyla konuşur
Yüklenebilir modüller çekirdeği esnek ve modüler yapar ama mikroçekirdeğe dönüştürmez: modül yüklendikten sonra çekirdeğin bir parçasıdır, aralarında IPC yoktur ve bir modül hatası tüm çekirdeği etkileyebilir. Sürücü çekirdek ikilisine derlenmiş olarak da gelebilir; ikisinde de çekirdek alanındadır.
Soru 23 · Çekirdek Yapıları
Katmanlı Yapının Zayıf Yanı
Çoktan seçmeli Her katmanın yalnızca altındaki katmanın hizmetlerini kullandığı katmanlı İS tasarımının temel dezavantajı hangisidir?
- Bir isteğin birçok katmandan geçmesiyle oluşan ek yük ve katmanların sırasını belirlemenin zorluğu
- Hata ayıklamanın imkânsız olması
- Donanım soyutlamasının hiç yapılamaması
- Katmanların aynı anda yalnızca bir süreç çalıştırabilmesi
Cevabı göster
Doğru cevap: A · Bir isteğin birçok katmandan geçmesiyle oluşan ek yük ve katmanların sırasını belirlemenin zorluğu
Katmanlı yapının artısı modülerlik ve katman katman doğrulamadır (THE sistemi). Eksisi, her katman geçişinin maliyeti ve karşılıklı bağımlılığı olan hizmetlerin (ör. bellek yönetimi ile disk sürücüsü) hangi katmana konacağının belirsizliğidir.
Soru 24 · Çekirdek Yapıları
Sistemleri Yapılarıyla Eşleştirin
Çoktan seçmeli Aşağıdaki eşleştirmelerden hangisi doğrudur?
- MS-DOS: mikroçekirdek · Linux: exokernel · MINIX 3: monolitik
- MS-DOS: hibrit · Linux: mikroçekirdek · MINIX 3: katmanlı
- MS-DOS: basit (yapısız) · Linux: modüler monolitik · MINIX 3: mikroçekirdek · Windows NT: hibrit
- MS-DOS: katmanlı · Linux: hibrit · MINIX 3: exokernel
Cevabı göster
Doğru cevap: C · MS-DOS: basit (yapısız) · Linux: modüler monolitik · MINIX 3: mikroçekirdek · Windows NT: hibrit
MS-DOS’ta uygulamalar donanıma doğrudan erişebilirdi; koruma yoktu. Linux monolitik ama yüklenebilir modüllüdür. MINIX 3 sürücüleri bile kullanıcı alanında çalıştırır. Windows NT ve macOS (XNU) mikroçekirdek fikirlerini monolitik başarımla birleştiren hibrit çekirdeklerdir.
Soru 25 · Çekirdek Yapıları
Donanım Farklılıklarını Kim Gizler?
Çoktan seçmeli Windows çekirdeğinin aynı kaynak kodu, kesme denetleyicisi ve zamanlayıcısı farklı olan anakartlarda değiştirilmeden çalışabiliyor. Bunu sağlayan katman hangisidir?
- Kabuk
- Sistem çağrısı tablosu
- Önyükleyici
- Donanım Soyutlama Katmanı (HAL)
Cevabı göster
Doğru cevap: D · Donanım Soyutlama Katmanı (HAL)
HAL, platforma özgü ayrıntıları (kesme denetleyicisi, zamanlayıcı, çok işlemci ayrıntıları) tekdüze bir arayüzün arkasına saklar; çekirdeğin geri kalanı yalnızca bu arayüzü kullanır ve taşınabilir olur.
Soru 26 · Sanal Makineler
Dizüstündeki Sanal Makine
Çoktan seçmeli Bir öğrenci Windows yüklü dizüstüne VirtualBox kurup içinde Linux çalıştırıyor. Kullandığı hipervizör hangi türdendir ve neden?
- Tip 2, çünkü hipervizör ana İS (Windows) üzerinde bir uygulama olarak çalışır
- Tip 1, çünkü sanal makine donanımı doğrudan kullanır
- Konteyner, çünkü Linux çekirdeği Windows ile paylaşılır
- Exokernel, çünkü kaynaklar bölüştürülür
Cevabı göster
Doğru cevap: A · Tip 2, çünkü hipervizör ana İS (Windows) üzerinde bir uygulama olarak çalışır
Tip 1 (VMware ESXi, Xen, Hyper-V) doğrudan donanım üzerinde, İS’nin yerinde çalışır; veri merkezlerinde kullanılır. Tip 2 (VirtualBox, VMware Workstation) bir ana İS üzerinde çalışır; aygıt erişimi ana İS üzerinden yapıldığı için genelde biraz daha yavaştır.
Soru 27 · Sanal Makineler
Konteyner mi, Sanal Makine mi?
Doğru / Yanlış İfadeleri değerlendirin.
- Her Docker konteyneri kendi işletim sistemi çekirdeğini çalıştırır.
- Bir sanal makine, konuk İS’ye sanal CPU, bellek ve aygıtlar sunar; konuk İS kendi çekirdeğiyle çalışır.
- Bir Linux konteyneri, doğrudan Windows çekirdeği üzerinde ek katman olmadan çalışabilir.
Cevabı göster
- Yanlış. Konteynerler ana makinenin çekirdeğini paylaşır; yalıtım ad alanları (namespaces) ve cgroups ile sağlanır. Bu yüzden sanal makinelere göre çok daha hızlı başlar ve daha az bellek kullanırlar.
- Doğru. Hipervizör donanımı sanallaştırır; konuk İS değiştirilmeden (tam sanallaştırma) çalışabilir.
- Yanlış. Konteyner, ana çekirdeğin sistem çağrılarını kullanır; Windows’ta Linux konteynerleri arka planda bir Linux sanal makinesi (WSL 2) içinde çalışır.
Soru 28 · Bağlama ve Açılış
Dinamik Bağlamanın Kazancı
Çoktan seçmeli Aynı makinede çalışan 50 program da C kütüphanesini kullanıyor. Kütüphanenin dinamik (paylaşımlı, .so/.dll) bağlanmasının statik bağlamaya göre kazancı hangisidir?
- Programlar başka hiçbir dosyaya gerek duymadan her makinede çalışır
- Kütüphane kodu bellekte tek kopya olarak paylaşılır ve kütüphane güncellenince programları yeniden bağlamak gerekmez
- Programların ilk açılışı her zaman daha hızlıdır
- Programın yürütülebilir dosyası büyür ama daha güvenli olur
Cevabı göster
Doğru cevap: B · Kütüphane kodu bellekte tek kopya olarak paylaşılır ve kütüphane güncellenince programları yeniden bağlamak gerekmez
Statik bağlamada kütüphane kodu her yürütülebilir dosyaya kopyalanır: dosya büyür ama bağımsız çalışır ve yükleme anında çözümleme gerekmez. Dinamik bağlamada bağlama yükleme/çalışma zamanında yapılır; bellek ve disk tasarrufu sağlanır, kütüphane yamaları tüm programlara yansır, ancak doğru sürüm sistemde bulunmalıdır.
Soru 29 · Bağlama ve Açılış
USB Belleği Bağlamak
Çoktan seçmeli Linux’ta mount /dev/sdb1 /mnt/usb komutundan sonra hangisi doğrudur?
- USB bellek yeni bir sürücü harfi (E:) alır
- USB belleğin içeriği sabit diske kopyalanır
- USB bellekteki dosya sistemi, dizin ağacına
/mnt/usbnoktasından eklenir; dosyalar/mnt/usb/...yoluyla erişilir /mnt/usbdizininin önceki içeriği kalıcı olarak silinir
Cevabı göster
Doğru cevap: C · USB bellekteki dosya sistemi, dizin ağacına /mnt/usb noktasından eklenir; dosyalar /mnt/usb/... yoluyla erişilir
UNIX’te tek bir dizin ağacı vardır; başka aygıtların dosya sistemleri bu ağaca bağlama noktalarından eklenir. Bağlama noktasının eski içeriği silinmez, yalnızca umount edilene kadar görünmez olur.
Özet
Özet: Sık Yapılan Hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| root olarak çalışan program çekirdek kipindedir. | root bir İS yetkisidir; süreç yine kullanıcı kipindedir. |
| Saati okumak da ayrıcalıklı olmalıdır. | Okumak zararsızdır; saati/zamanlayıcıyı ayarlamak ayrıcalıklıdır. |
| printf, atoi, şifreleme sistem çağrısıdır. | Bunlar kütüphane işidir; yalnızca printf sonunda write() çağırır. |
| Son read() de 4096 bayt döner. | read() kalanı döndürür; dosya sonunda 0 döner. |
| exec başarılıysa sonraki satır da çalışır. | Başarılı exec geri dönmez; sonraki satırlar yalnızca hata durumunda çalışır. |
| Linux modül yükleyebildiği için mikroçekirdektir. | Modüller çekirdek alanında çalışır; Linux modüler monolitiktir. |
| Mikroçekirdekte IPC daha verimlidir. | IPC mikroçekirdeğin bedelidir; kazancı yalıtım ve güvenilirliktir. |
| Konteyner kendi çekirdeğini taşır. | Konteynerler ana çekirdeği paylaşır; VM ise kendi çekirdeğini çalıştırır. |