İşletim Sistemleri Dersi 4. Ünite Özet

İşletim Sistemi Bileşenleri

Giriş

İşletim sistemi bileşenleri ve işletim sistemlerinin arka planında çalışan teknolojiler ele alınmıştır. İşletim sistemlerinin atası Von-Neumann mimarisidir. Bu mimari ile bilgisayarlara elektronik programlama özelliği getirilmiştir. İşlemciler üzerindeki işleme ve işlemci modları mekanizması olarak bilenen güvenlik mekanizması ele alınmıştır. Ayrıca işletim sistemi katmanları ve işletim sistemleri alanındaki güvenlik, performans ve sürdürülebilirlik gibi kaygılar, güncel işletim sistemleri üzerinden örneklendirilerek paylaşılmıştır.

Von-Neumann Mimarisi

İlk elektronik bilgisayarlar fiziksel araçlarla düzenlenir ve programlanırdı. Bu bağlamda sistemler programlanmaktan ziyade tasarlanmaktaydı. Bu sistemler program kontrollü bilgisayarlar olarak bilinmektedir. Dünyanın ilk genel amaçlı bilgisayarı olan ENIAC işletilirken 6 operatör çalışmaktaydı. Bu da program kontrollü bilgisayarların kullanımının zahmetini ortaya koymaktadır. Ancak programların elektronik olarak belleklenebilmesi bu zahmeti ortadan kaldırmıştır. Bu sistemler Von-Neumann mimarisi ile ortaya konmuştur. Von-Neumann mimarisinde bellek, aritmetik mantık birimi, kontrol birimi, veri yolları ve giriş/çıkış birimleri yer almaktaydı. Von-Neumann mimarisinin birimleri ve görevleri şematize edilebilir. Von-Neumann mimarisindeki birimler:

Bellek: Yürütülecek program ile bu süreçte kullanılacak verilerin tutulmasında kullanılır. Günümüz bilgisayarlarında bu belleğe ana bellek (RAM) denir.

Kontol birimi: Sistemdeki veri akışı kontol edilir. Bu süreçte çıkan ara değerler yazmaçlarla tutulur. Yazmaç (register) merkezi işlem birimlerinde yer alan küçük boyutlu ve çok hızlı erişilebilen bir bellek türüdür.

Aritmetik ve mantık birimi: Veriler üzerinde işlemlerin yapıldığı ayrıca mantıksal işlemlerin gerçekleştiği birimdir.

Giriş/Çıkış birimleri: Kullanıcı ile sistem arasında etkileşimin sağlandığı birimdir.

Veri yolu: Sistem bileşenleri arasında iletişimin sağlandığı birimdir.

İşlemci Modları

Bilgisayar kodları kullanıcı uygulama kodları ve işletim sistemi kodları olmak üzere sınıflandırılır. Donanımsal anlamda bu ayrım için işlemcilerde yer alan bir yazmaçla tutulan mod biti kullanılır. Çekirdek modu 0, kullanıcı modu 1 ile ifade edilir. Sistem açılırken donanım çekirdek modunda başlar ve işletim sistemi yüklenir. Uygulamalar bu aşamada kullanıcı modunda çalıştırılır. Kullanıcı modundan çekirdek moduna geçiş bilgisayar sistemindeki yaşam döngüsü olarak isimlendirilir ve görsellenebilir.

İşletilen uygulama sistem çağrıları yoluyla işletim sisteminden bir servis çağırdığında kontrol işletim sistemine, mod biti de çekirdek moduna geçirilir. İşletim sistemi çağrının gereklerini yerine getirip isteğe uygun veriyi aktardıktan sonra mod bitini kullanıcı moduna alarak, kontrolü kullanıcı uygulaması devreder. Mod biti, işlemcilerde yer alan bir yazmaçta tutulmaktadır. Çekirdek modu sıfır, kullanıcı modu bir ile ifade edilir. İkili çalışma sistemi işletim sistemi ile kullanıcıları hatalı kullanıcılardan ve uygulamalardan korur.

Sistem çağrısı genel anlamda kesme vektöründeki yakalama hali olarak ifade edilebilir. Burada kullanılan kesme (interrupt) ve yakalama (trap) sırasıyla tanımlanırsa; işletim sistemindeki donanım yada yazılım tarafından bir olayın gerçekleşdiğini bildirmek üzere işlemcinin acil dikkatini isteyen sinyal kesme, yazılımlar tarafından bir hata yada işletim sisteminin sunduğu servise yönelik isteği belirtmek için yayınlanan kesmelerse yakalamadır.

MS-DOS gibi işlemci modları bulunmayan işletim sistemleri 8088 mimarisi için geliştirilmiş olup yanlış çalışan bir kullanıcı programı durumunda işletim sistemini silerek ciddi sorunlara yol açabilmektedir. Ancak güncel işletim sistemleri işlemci modu tipinde olup güveni ve kararlılığı arttırmıştır. Hata yapan uygulama durdurulur ve uygun bir hata mesajı gönderilerek uygulamaya ayrılan bellek silinebilir.

İşletim Sistemi Katmanları

İşletim sistemlerinin kararlı işlenebilmesi ve kolay düzenlenebilmesi için yekpare (tek gövdeli) sistem yerine görevlerin özel birimlere ayrılması tercih edilen yaklaşımdır. İşletim sistemi katmanı işletim sistemi içinde iyi tanımlanmış bir görevi yerine getirmek üzere kendisinden tanımlı veri yapıları ve işlevleri kullanarak kendisine gönderilen veri üzerinde düzenleme yapabilen soyut yapıdır. Katmanlı yaklaşımda ele alınan beş ana katman sırası ile kullanıcı arayüzü, dosya yönetim sistemi, giriş/çıkış sistemleri, bellek yönetimi ve çekirdektir.

İşletim Sistemi Çekirdeklerinin Üretiminde Kullanılan Yaklaşımlar

Basit yapılı tek gövdeli sistemlerden işlevlerin daha net belirlendiği katmanlı sisteme geçiş sağlanmıştır. Ayrıca işletim sistemlerinde güncel eğilim olan güvenlik ve performansın birleştirildiği hibrit sistemler ortaya çıkmaktadır. Ayrıca modern işletim sistemlerinin temel bileşeni çekirdektir ve çekirdek yazılımlardan gelen giriş/çıkış isteklerini, bilgisayarın elektronik bileşenlerinin anlayabileceği veri işleme yönergelerine çevirir.

Basit Yapılı Yaklaşım: Erken dönem kişisel bilgisayarlarındaki işletim sistemleri iyi yapılandırılmamış olup 1980’li yıllarda başlayan en yaygın işletim sistemi MS-DOS’un da üretimi 2000 yılında durdurulmuştur. Hatta 90’lı yılların sonunda Çernobil isimli virüs (CIH) MS-DOS açıklarını yakalayarak bilgisayarın sistemleri silebilmekteydi. Kullanılmaz hale gelen bilgisayarların önüne geçmek için ikili bios (dual-bios) özelliği ortaya konmuştur. UNIX işletim sistemi de başlangıçta kısmen katmanlı kabul edilebilir olsada çekirdek üzerine yüklenen görev sayısının büyüklüğü göz ardı edilemez. Bu durum UNIX işletim sisteminin de süreçteki sıkıntılarını ortaya koymaktadır. Bu bağlamda MS-DOS ve UNIX işletim sistemleri yapıları daha anlaşılır ve aşamalı olarak ifade edilmek üzere sırası ile görsellenebilir.

Katmanlı Yaklaşım: Burada yapı yekpare yapılara oranla etkin ve sürdürülebilir alt sistemlere bölünmektedir. Geliştiriciler bu durumda iş işleyişi daha iyi kontrol edebilmektedir. Bu yaklaşımda tepeden aşağıya işlevler ve özellikler bölünür. En alt katman (0) donanım iken en üst katman kulacıdır (N). Her katmandaki hata o katmanda ayıklanır ve sistem bütünlüğü ile çalışırlığı korunur. Bu sistemin olumsuz yanlarından biri, her katmanın altındaki katmanın işlevlerini kullanıyor olmasından sistemin titizlikle planlanması gerekliliği; diğeri ise performans problemidir.

Mikro Çekirdekli Yaklaşım: Bu yaklaşımı ilk geliştiren Mach’tir. Mikro çekirdek yaklaşımında çekirdek yalnızca sistemin yürütülmesinde kullanılacak özellikleri barındırır. Sistemde bellek yönetimi ve mesajlaşmalara yer verilir. Mikro çekirdek uygulama programı ile servisler arasındaki iletişimi sağlar. Güncel olarak ta kullanımına rastlanan bu yaklaşım Tru64 UNIX’in temelinde Mach çekirdeğinin kullanımıyla, Mac OS X sisteminin çekirdeği olan Darwin de de kısmen Mach micro çekirdeği etkilerinin olması ile gözlemlenebilir. Kolay düzenlenebilirliği, genişletilebilirliği, güvenliği, aktarılabilirliği ve güncelleme gerektirmeksizin entegre edilebilirliği bu yaklaşımın avantajları iken dezavantajı ciddi sistem yükü oluşturarak performans kaybına yol açmasıdır. Performans sorunu Windows NT’de NT 4.0 versiyonu ile kısmen iyileştirilse de Windows XP ile mikro çekirdek yapısından vazgeçilerek tek gövdeli yapıya geçiş söz konusu olmuştur.

Modüler Yaklaşım: Mikro çekirdek yaklaşımından farklı olarak işlevler kullanıcı katmanında çalıştırılmaz. İşlevler sistem açılışında ya da ihtiyaç durumunda çekirdeğe eklenir. Modüllerin haberleşmek için çekirdeğe bağlı olması da bu yaklaşımın mikro çekirdek yapısından bir diğer farkıdır. Modüler yaklaşımda işlev eklemek, çekirdeğe doğrudan entegre gerektirmediğinden daha kolay derlenebilirlik ve genişletilebilirlik özelliklerini de yanında getirir. Ayrıca bu yaklaşım modüllerde tanımlı işlevleri ve koruma arayüzleri kullanmasından dolayı katmanlı yapıya da benzetilebilir. Bu yaklaşım güncel olarak kullanılmaktadır. Günümüzde UNIX, Linux, Mac OS X ve Windows işletim sistemlerinde bu yaklaşım kullanılmaktadır.

Modüler yaklaşımda aşağıdaki işlevler modüler olarak eklenmektedir.

  1. Aygıt sürücüleri: Herhangi bir donanım ile işletim sistemi çekirdeği arasındaki haberleşmeyi sağlayan arayüzdür.
  2. Dosya sistemleri: Depolama birimi üzerindeki dosya ve dizin olarak depolanan içerikleri yorumlar.
  3. Sistem çağrıları: Kullanıcı katmanında çalışır haldeki programların işletim sistemi çekirdeğinden servis alırken kullandığı sistemlerdir.
  4. Ağ sürücüleri: Ağ protokollerinin yorumlandığı sürücülerdir. Ağ haberleşme işlevlerine veri gönderimi ve alımı yapılır.
  5. Hat sürücüler: Terminal aygıtlarının sürücüleri ile çalışan modüllerdir. Ayrıca seri portlarda çalışan aygıtlardan veri transferi için seri sürücülerden de yararlanılır.
  6. Yorumlayıcılar: Yürütülebilir programların çalıştırılması esnasında kullanılır. Windows işletim sisteminde .bin .bat .exe; Linux işletim sistemlerinde ise .sh .deb .rpm .tar formatındaki dosyalar yürütülebilir formatlardır.

Hibrit Sistemler: Günümüz işletim sistemleri yukarda bahsedilen yaklaşımları harfiyen nadiren uygular. Bunun yerine güvenlik, performans kullanılabilirlik özelliklerinin yansıtılabilmesi için yaklaşımlar karma olarak kullanılır. Performans söz konusu olunca işletim sistemleri tek gövdeli olarak tasarlanırken kullanılacak yeni işlevler modüler yaklaşım temel alınarak işlevselleştirilir. Bu aşamada sistemleri tek bir sınıfa kategorize etmek güçleşecektir. Yaklaşımlar işletim sistemlerinde şu şekilde yorumlanmıştır.

  1. Mac OS X: Apple’ın işletim sistemi olan Mac OS X hibrit yaklaşımı temel almaktadır. Bu işletim sistemi katmanlı bir yapıya sahiptir. Bir tür Objective-C programlama dili için hazırlanmış olan Cacoa adlı uygulama programlama arayüzü ile Mac OS X uygulamaları yazımında kullanılır. Uygulama programlama arayüzü (Application Programming Interface-API), yazılım uygulamalarının geliştirilmesi için kullanılan işlevler, protokoller ve araçlar kümesidir. Programlar bu üretim bloklarını bir araya getirerek uygulamaları geliştirir. Örneğin JAVA Speech API ses tanıma fonksiyonları sağlar ve bunlar kullanılarak ses ile yönetilen programlar ses tanıma ile ilgili kod yazılmaksızın oluşturulabilir. Ayrıca Mac OS X işletim sistemlerinde Mach mikro çekirdek ve BSD UNIX çekirdeklerinin kombinasyonları ile oluşturulan bir çekirdek yer almaktadır.
  2. iOS: Apple’ın mobil cihazlar olan iPhone, iPad, iWatch, iPod gibi ürünlerinde kullandığı işletim sistemidir. Mac OS X üzerine temellense de dokunmatik ekran desteği gibi işlevleri ek olarak içermektedir. Temeli Mac OS X olmasına rağmen iOS’ta, Mac OS X işletim sisteminin uygulamalarını çalıştırılamaz. Burada da Cacoa touch kullanılan uygulama programlama arayüzüdür ve Mac OS X işletim sisteminden farklı olarak taşınabilir cihazlara has özellikleri destekleyen işlevleri barındırır.
  3. Android: Google’ın ciddi desteklerini içeren Open Handset Alliance tarafından üretilen bir işletim sistemidir. Akıllı telefon ve tabletlerde kullanılmaktadır. iOS’tan farklı olarak açık kaynak kodludur. Ancak katmanlı yapı iOS ile benzerdir (S:84, Şekil 4.10). Burada kullanılan Linux çekirdeği Linux 2.6 çekirdeğinden dönüştürülmüştür. Linux çekirdeğinin sunduğu çoklu görev desteğine rağmen Android uygulamaları doğrudan çekirdek üzerinden işletilmez. İkinci katmanda yer alan Dalvik sanal makinası tarafından süreç işletilir. Bu sayede donanım ve işletim sistemi ilişkisi en alt düzeydedir ve yazılan uygulamaların sanal makineye özgü yazılmalarından donanıma bağımlı değildir. Bu durumlarda firmaların Android işletim sistemini kullanabilmesini sağlamaktadır. Aslında Android uygulamaları JAVA dilinden geliştirilmektedir ancak Google tarafından geliştirilen Dalvik tarafından .dex formatlı dosyalara dönüştürülmektedir. Dalvik sanal makinası kısıtlı bellek ve işlemci gücünü kullanmak üzere geliştirilmiştir. Katmanların en üstündeki uygulamalar ise Android sürümü ile getirilen özgün (native) uygulamalar ve kullanıcılarca geliştirilen uygulamalar olmak üzere ikiye ayrılır.

Güz Dönemi Dönem Sonu Sınavı
18 Ocak 2025 Cumartesi
v