İşletim Sistemleri

İŞLETİM SİSTEMLERİ

Tarihçe ve İşletim Sistemlerinin Yapıları
Tarihçesi
İşletim sistemi, bilgisayarda çalışan, donanım kaynaklarını yöneten ve çeşitli uygulama yazılımları için yaygın servisleri sağlayan bir yazılımlar bütünüdür. İşletim sistemi, uygulama kodları genellikle direkt donanım tarafından yürütülmesine rağmen, girdi-çıktı, bellek atama gibi donanım fonksiyonları için uygulama programları ve bilgisayar donanımı arasında aracılık görevi yapar. 1940’larda ilk elektronik dijital sistemlerin hiçbir işletim sistemleri yoktu. Bu kez elektronik sistemlerin çok ilkel talimatları genellikle mekanik anahtarları satır veya fiş kurullarında jumper telleri ile bir anda sisteme bir bit girmiş olduğunu bugün karşılaştırıldı.

İşletim Sistemlerinin Yapıları
·         İşletim Sistemi Servisleri
·         Kullanıcı İşletim Sistemi Arayüzü
·         Sistem Çağrıları
·         Sistem Çağrısı Tipleri
·         Sistem Programları
·         İşletim Sistemi Tasarım ve Gerçekleştirimi
·         İşletim Sistemi Yapısı
·         Sanal Makinalar
·         İşletim Sistemi Oluşturma
·         Sistem Önyükleme

Process Yapıları
Program çalıştırılabilen bir dosyanın diskteki durumunu ya da kaynak kodu belirtmek için kullanılan bir terimdir. Çalışmakta olan programlara process denir. İşletim sistemi çalıştırdığı programların kullandığı kaynakları çeşitli tablolar oluşturarak izler. Program belleğin neresine yüklenmiştir, hangi dosyaları kullanmaktadır, ne kadar süredir çalışmaktadır? Buna benzer pek çok temel sorunun yanıtı işletim sistemi tarafından bilinmek zorundadır. Her işletim sistemi processleri izlemek için o processe ilişkin bilgileri çeşitli veri yapılarında tutar. Process tablosu yerine değişik sistemlerde başka isimlerin kullanıldığına tanık olabilirsiniz. Process kablolarının gerçek veri yapısı sistemler arasında farklılık gösterse de genel hatlarıyla birbirlerine benzer. Örneğin processin yetkisel hakları, processin açmış olduğu dosyalara ilişkin bilgiler, processin çalışma süresine ilişkin istatislikler pek çok işletim sisteminde şu ya da bu biçimde process tablosunda tutulmaktadır. İşletim sistemleri tüm processlerin process tablolarını belli bir düzen içerisinde tutar. Böylece işletim sistemi gerektiğinde tüm processleri gözden geçirebilir, herhangi bir process üzerinde işlem uygulayabilir.

Thread Yapıları
İşletim sistemi adlandırılmasında çalışmakta olan programlara süreç (process) denilmektedir. İplikler süreçlerin farklı çizelgelenen akışlarıdır. Windows sistemleri iplik temelinde çizelgeleme yapmaktadır. İşletim sistemi tüm süreçlerin ipliklerini bir çizelgede tutmakta ve bunları zaman paylaşımlı olarak çalıştırılmaktadır. Bir thread biraz çalıştırılmakta sonra çalışmasına ara verilmektedir. Başka bir thread kalınan yerden çalışmaya devam ettirilmektedir. Programcı kendi ipliğinin kesitsiz çalıştığını sanabilir fakat aslında akış parçalı olarak çalıştırılmaktadır.



Process Senkronizasyonu
Beraber çalışan ve veri paylaşan processler maalesef beklendiği gibi düzgün çalışmayabilir. Bunun nedenleri kendi içerinde yapmış oldukları senkronizasyonun başarısız kalmasından kaynaklanır.  Ayrıca işletim sisteminden kaynaklanabilecek bir etkide processlerin senkronizasyonlarının bozulmasına neden olabilmektedir. Tampon bellek kullanarak yapılan senkronizasyon işlemleri; sınırlı uzunlukta bellek yüzünden bizi çözüme götürmek yerine daha büyük problemlerle karşılaşmamıza neden olmaktadır. Öyleyse processlerin ahenk içinde çalışabilmesini sağlayacak bir senkronizasyon yapısının geliştirilmesi gereklidir.

Deadlock Tespiti ve Engelleme
Deadlock ya da kilitleme, iki ya da daha fazla elemin devam etmek için birbirlerinin bitmesini beklemesi ve sonuçta ikisinin de devam edememesi durumu. Bilgisayar biliminde, Coffman deadlock iki ya da daha fazla işlemin, diğerinin bir kaynağı bırakmasını beklediği ya da ikiden fazla işlemin döngüsel bir sırada birbirinden kaynak beklediği özel durumları belirtmek için kullanılır. Deadlock, birçok işlemin lock (kilit) olarak bilinen özel bir tür kaynağı paylaştığı çoklu işlemede sık karşılaşılan bir sorundur. Zaman-paylaşımı ya da gerçek-zaman pazarında kullanılan bilgisayarlar genellikle belirli bir zaman içinde tek bir işlem erişimini garanti eden donanımsal kilite sahiptir. Yazılım kaynaklı deadlocklardan kurtulmak için genel bir çözüm olmadığı için çoğunlukla her seferinde ayrıca çözülmesi gereken bir sorundur. Bu durum, sadece bir kalem ve bir cetvelle diyagram çizen iki insana benzetilebilir. Eğer birisi kalemi, diğeri de cetveli alırsa bir deadlock oluşur. Kalemi alan kişi cetvele, cetveli alan da kaleme ihtiyaç duyar. Deadlock, telekomünikasyon alanındaki tanımı Coffman’dan daha zayıftır, çünkü işlemler kaynaklardan farklı olarak mesajlar için bekleyebilir. Deadlock, uzun süreli bekleme yerine bozuk mesajlar ya da sinyaller sonucunda oluşabilir.

Deadlock Tespiti
Çoğunlukla, deadlock’u önlemek ya da engellemek mümkün değildir. Bunun yerine, deadlock tespiti ve işlemlerin yeniden başlatılması uygulanır. Bunun için, kaynak dağıtımını ve işlem durumlarını takip eden ve deadlock’u kaldırmak için işlemleri geri alan ya da yeniden başlatan algoritmalar kullanılır. Gerçekleşen bir deadlock’un tespiti, işlemler tarafından kilitlenmiş ya da talep edilen kaynaklar işletim sistemi tarafından bilindiği için nispeten kolaydır. Bir deadlock’un önceden bilinmesi ise çok daha zordur. Aslında bu durum çoğunlukla kara verilmez bir haldedir, çünkü sonlandırma sorunu da bir deadlock senaryosu olarak görülebilir. Bununla birlikte özellemiş çevrelerde, özellemiş kaynak kilitleri kullanarak, deadlock tespiti karar verilebilir hale getirilebilir. Deadlock tespit yöntemleri, model karşılaştırmayı içerir. Bu yaklaşım, bir sonlu durum makinesi oluşturarak, tüm muhtemel son durumları ortaya çıkaran bir işlem analizi gerçekleştirir.

Engelleme
Kaynak paylaştırma işlemi öncesinde işlemi öncesinde işlemler hakkında bazı bilgilere sahip olunduğunda deadlock’u engellemek mümkündür. Her bir kaynak talebi için, sistem önce bu talebin kendini deadlockla sonuçlanabilecek güvensiz bir duruma sokup sokmayacağını kontrol eder. Daha sonra sistem, sadece güvenli durumlarla sonuçlanacak talepleri karşılar. Sistemin bir sonraki durumunun güvenli mi güvensiz mi olacağını anlaması için, önceden boşta ve talep edilen tüm kaynakların sayısını ve türünü bilmesi gerekir. Deadlock engellemek için kullanılan algoritmalardan bilinen birisi de, önceden kaynak kullanım limitinin bilinmesini gerektiren Banker algoritmasıdır. Fakat çoğu sistem için her işlemin kaynak taleplerini önceden kestirmek mümkün değildir. Diğer bir algoritma; Bekle/Öl ve Yarala/Bekle’dir. İkili algoritmada da bir adet eski işlem (E) ve bir adet yeni işlem  (Y) bulunur. İşlemlerin yaşı, yaratılma anında oluşturulan zaman damgası sayesinde anlaşılır.

CPU Zamanlaması
Günümüzde neredeyse her elektronik cihazda bulunan işletim sistemi, yüklü olan donanımların denetiminden ve yönetiminden sorumlu olan yazılımdır. İşletim sistemlerinin diğer bir görevi de işlemciyi kullanmak için sırada bekleyen proseslere işlemciyi (CPU) dağıtmaktır. Bu görevi üstlenen scheduler (zamanlayıcı), bekleme sırasında bulunan proseslerden hangisinin işlemciyi kullanacağını belirler. Bu sebepten dolayı işletim sistemleri tasarlanırken dikkat edilmesi gereken en önemli hususlardan birisi zamanlayıcı algoritmasının (CPU scheduling algorithms) verimliliğidir. Zamanlayıcı algoritmaları kesintili ve kesintisiz olmak üzere 2 farklı gruba ayrılırlar. Bu iki grup arasındaki fark, kesintisiz algoritmalarda işlemci aldığı prosesi tamamlayana kadar başka bir prosese geçmez. Kesintili algoritmalarda ise işlemci aldığı prosesi yarıda bırakıp yeni bir prosesi işleme koyabilir.

Fiziksel Bellek Yönetimi
Ana belleğin işlemler arasında paylaştırılmasına ana bellek yönetimi ya da bellek yönetimi adı verilir. İşlem sisteminin bu amaçla oluşturulan kesimine de bellek yöneticisi adı verilir. Bellek yöneticisinin görevi, belleğin hangi parçalarının kullanımda olduğu hangi parçalarının kullanılmadığını izlemek, belleği geri almak ve bellek ile disk arasındaki takas işlemlerini gerçekleştirmektir.

Bellek ve Sanallaştırma
Sanallaştırma
Bilişimde sanallaştırmanın kesin bir tanımı yoktur. Sanallaştırma genel itibari ile bilgisayar kaynaklarının kullanıcılarından soyutlanması anlamına gelir. Bunu yapmak için kullanılan metodlar bilgisayar kaynaklarının paylaştırılmasını veya birleştirilmesini sağlar. Sanallaştırmanın ilk hedefi kullanıcıya bir soyutlama tabakası sunarak kullanıcıyı kaynaklardan soyutlamak. Böylece kullanıcı ve kaynaklar arasına bir mantıksal katman eklenmiş olur.

Sistem ve Veri Güvenliği
Bilgisayarlar artık hem iş yerlerinde hem de evlerde herkesin kullandığı elektronik cihazlardan biri haline geldi. Her türlü bilgiyi depolama işlevi gören bu cihazlar, insanların hem iş hayatlarına hem de özel yaşamına ilişkin milyonlarca bilgiyi hafızasında biriktiriyor. Bunun tabii ki pek çok olumlu yanı olsa da, bir anda hepsini kaybetme riski de beraberinde geliyor. Bu da veri güvenliği konusunu gündeme getiriyor. Siz çok önemli olduğunu düşünmeseniz de bilgisayarlarınızdan bilgi sızdırmaya çalışan çok sayıda kötü niyetli profesyoneller var. Bu kişiler bazen önemli belgelerinize,  bazen de örneğin banka bilgilerinize ulaşarak sizi perişan edebilecek ciddi bir potansiyele sahipler. Neyse ki bugün ismini hemen herkesin bildiği birkaç tane antivirüs program sayesinde, veri güvenliği ile ilgili bu açıkları kapatma imkânı var.

Kümeleme Sistemleri
Kümeleme yapıları kullanıcılara kesintisiz bir hizmet vermek amacıyla geliştirilmiştir. Kümeleme işlemi temel olarak sabit disklerdeki işlenebilir alanları artıran, işletim sisteminin mantıksal yapılarıdır. Windows sunucu işletim sistemi ailesinde Enterprise ve Data Center ürünleri kümeleme yapılarını destekler. Kümeleme tekniğinin 4 modeli vardır:
·         High Performance Computin (HPC)
·         Component Load Balancing (CLB)
·         Network Load Balancing (NLB)
·         Server Clustering
Sunucu sistemler için son model olan Server Clustering kullanılır. Exchange Server için tanımlanan gelişmiş kümeleme modeli, iki ile sekiz düğüm arasında mantıksal yapılar oluşturarak sunucu üzerindeki disklerden biri hizmet veremez duruma düştüğünde diğer sabit diskler devreye girer, hizmet dışı kalan disk onarılıncaya kadar hizmet akmasının önüne geçilmiş olur.

İstemci / Sunucu Mimarisi
İstemci / sunucu, istemciyi sunucudan ayıran bir ağ mimarisidir. Her bir istemci yazılımı, sunucuya ya da uygulama sunucusuna istediklerini gönderir. Bu fikrin çok çeşitli uygulaması olmasına karşın, en güzel örneği İnternet üzerindeki Web sayfalarıdır. Bir web sayfası incelenirken, bilgisayar ve web tarayıcısı istemci olarak adlandırılır. Web sayfasını oluşturan gelişmiş bilgisayarlar, veri tabanları ve uygulamalar da sunucu olarak adlandırılır. Web tarayıcısı, web sitesinden bir istekte bulunur ve sunucu istenen bilgileri toplar ve onu bir web sitesi şekline getirerek web tarayıcısına geri yollar, kullanıcılar da ekranda web sitesini görmüş olur. Bir istemci/sunucu mimarisi, ölçeklenebilir bir mimari sunmayı amaçlar. Böylece ağdaki her bir bilgisayar bir istemci ya da sunucu rolünü üstlenir. Sunucu yazılımı genelde, fakat her zaman değil, bir iş yazılımı için adanmış güçlü bir bilgisayarda çalışır. İstemci yazılımı ise genelde sıradan bir PC uygulama sunucusundan isterler. Mesela; ayar dosyaları, stok verileri, iş uygulama yazılımları vs. gibi.


Yorumlar

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi