İş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
Yorum Gönder