İşletim Sistemleri Katmanları
Bu dokümanda her işletim sistemi kitabını
okuduğunuzda duyma ihtimalinizin yüksek olduğu bazı
teknik terimlere ve onların açıklamalarına yer
verilmeye çalışılacaktır. Özellikle kernel, shell
gibi kavramlar üzerinde durulacak, Unix sistemlerin
neden diğer sistemlere nazaran daha kararlı olduğunu
teknik bakış açısı ile öğreneceksiniz.
İşletim sistemleri bilgisayarı da sisteme dahil
edersek 4 katmandan oluşur.
- Donanım Katmanı : Bir bilgisayarın elle tutulur gözle görülür kısımları. Örneğin ekran kartınız, modeminiz bu katmanda çalışmaktadır.
- Kernel(Çekirdek) : İşletim sistemlerinin bilgisayarın en alt seviyede donanım katmanı ile iletişim kuran en alt seviyede program. Bu katmana işletim sisteminin kalbi demek yalan olmaz. Bir işletim sisteminin performansı, yetenekleri vb... kernelin başarımı ile doğrudan ilişkilidir. Üç çeşit kernel vardır.
-
-
Micro Kernel : İşletim sisteminin
kernelinin mümkün oldukça küçük olmasına
gayret edilmiştir. Sadece çok önemli,
bilgisayarın çalışması için gerekli bölümleri
içerir. Örneğin işlemci yönetimi, bellek
yönetimi... Bu tip kerneli olan işletim
sistemlerinde bilgisayara bağlı CD-ROM,
harddisk, disk denetleyici gibi diğer
donanımları tanıtmak için işletim sisteminin
kerneli ile direk iletişime geçebilecek ve
bellekte bu işlemleri yönetebilecek bir
yazılıma ihtiyaç vardır. Bu yazılıma da
sürücü(driver) denilir. Bu tip kernele sahip
işletim sistemlerine en güzel örnek
MS-DOS/Windows' tur. MS-DOS' ta basit bir
CD-Rom' u tanıtmak için bile bir sürücü
programa ihtiyaç duyulmasının nedeni budur.
İşletim sisteminin kendisi o donanımı
tanıyacak bilgiyi çekirdeğinde tutmaz.
Avantajı yeni bir donanım takıldığında eğer donanım üreticisi firma o işletim sistemi için sürücü üretti ise bilgisayara tanıtmak çok kolay olmaktadır. İlgili sürücünün setup' ını çalıştırırsınız ve her şey olur biter.
Dezavantajları ise her türlü donanım için bir sürücüye ihtiyaç duyduğu için bilgisayarda onlarca değişik firmanın ürünü olan program işletim sisteminin parçası gibi davranmaktadır. Bu da herhangi bir donanım arızasının sonucunda bütün sistemin çökmesine yol açmaktadır. Windows' un bu kadar sık göçmesinin temel nedenlerinden bir tanesi de budur. -
Monolithic Kernel : Bu tür kernellarda
donanımımız için gerekli her türlü sürücü
yazılım işletim sisteminin çekirdeğine
gömülüdür. Yani bir CD-Rom driver veya
ethernet driver diye bir kavram yoktur.
İşletim sisteminiz bu donanımı kullanmak için
gerekli sürücü yazılımı kendi içersinde
ihtiva etmektedir. En güzel örneği Unix' tir.
Avantajı, kernel büyük olmasına rağmen her türlü fonksiyonun bir birbiri ile iletişim tek program tarafından olduğu için genelde daha hızlı işlemektedir. Bu tür işletim sistemlerinin performansı aynı donanımda micro kernel bir sistemden genellikle daha iyidir. Bütün donanımın sürücüleri arasında iletişim söz konusu olmadığı için sistem çok stabil olur. Unix sistemler çok nadir göçer. Yıllarca hiç kapanmadan çalışan Unix sistemler mevcuttur.
Dezavantajı ise her yeni donanım takıldığında yeni bir kernel derlenmesi gerekliliğidir. Bu işlem bir kaç on dakikadan kimi zaman bir kaç saate kadar süren zahmetli bir iştir ve yüksek donanım bilgisi ister bu nedenle kullanımı zordur ve pek de pratik değildir. Bu nedenle plug&play bir Unix yoktur. - Hybrid : Bu tür işletim sistemlerinde sistemdeki donanım için gerekli sürücü istenir ise kernelin içine istenir ise Windows' taki gibi driver yolu ile kullanılabilir. En güzel örneği bir monolitic kernel sistem sayılmasına rağmen hybrid özelliklerine sahip Linux' tur. Kernel derleme sırasında bir donanım sürücüsü istenirse kernela gömülür istenirse modül olarak /lib/modules dizini altına kaydedilir. O donanımın kullanılması gerektiğinde de buradaki object dosyası kernel ile iletişime geçer ve donanımı yönetir. Bu iletişim için insmod modprobe gibi yazılımlar kullanılmaktadır ve bu iki komut modutils adlı paketle birlikte gelmektedir. Her iki komut da kimi kullanımlarda parametre gerektirmesine rağmen bu işi otomatize etmek için libdetect, libdiscover, kudzu, harddrake gibi yazılımlar mevcuttur. Sonuç olarak plug&play bir Linux sistemin micro kernel sistemlerdeki gibi işlemese de uygulanması mümkündür ve şu anda mevcuttur.
-
Shell(Kabuk) :Kernel' in kullanıcı ile
iletişime geçen arabirimidir. Örneğin MS-DOS da
c:\>_ komut satırına düştüğünüzde işte o zaman
MS-DOS' un shell' i command.com ile karşı
karşıyasınız demektir. Verdiğiniz copy, del gibi
komutları shell kernel' a onun anlıyacağı dilden
iletecek ve kernel da disk üzerinde bu işi
gerçekleştirecektir. Unix sistemlerde shell bir
çeşit değildir. Yani c:\ gibi bir şey ile
karşılaşacağınızı söylemek mümkün değildir.
Birden fazla shell mevcut olup kendine has
özellikleri vardır. Örneğin bir standart haline
gelen bash çok güçlü ama ebat olarak biraz
büyüktür. Dolayısı ile güçlü makinelerde faydalı
olurken sınırlı kapasitedeki makinelerde yükü
ağırlaştırabilmektedir. Csh (C Shell) ise komut
satırında C diline benzeyen komutları
kullanabilmenizi sağlayabilir.... Unix
sistemlerde ve dolayısı ile Linux' da shell
değiştirmek için chsh komutu kullanılır. Eğer bir
Linux kullanıcısıysanız ve herhangi bir
değişiklik yapmamışsanız büyük ihtimalle bash
kullanıyorsunuz demektir. Sistemde yönetici
kullanıcı (root) iseniz bunu # işaretli bekleme
satırından ve eğer normal kullanıcı iseniz de $
şeklindeki satırdan anlayabilirsiniz.
-
Uygulama Katmanı : Kullandığımız her türlü
program bir uygulamadır ve uygulama katmanını
oluşturur. Örnek vermek gerekirse Windows altında
Photoshop veya Linux altında Staroffice bir
uygulamadır ve bu katmanda çalışır.
Bu yazı Kasım 2001 tarihinde http://www.onlinedergi.net sitesinde yayınlanmıştır.