işletim sistemleri ders notu

advertisement
İŞLETİM SİSTEMLERİ
GİRİŞ
İŞLETİM SİSTEMİNİN TANIMI
1.1. İşletim Sisteminin Tanımı :
Yazılım, bilgisayara ne yapmasını söyleyen kurallar manzumesidir. Bir bilgisayarın
çalışabilmesi için üzerinde mutlaka bir programın çalışması gereklidir. Bilgisayarın
kullanım amacına bağlı olarak bu programın işlevleri ve boyutları da değişir.
Genellikle yazılım ve program kavramları birbirlerinin yerine kullanılsa da temel
olarak bir program belli işlevleri yerine getirmek üzere yazılmıştır ve komut
satırlarından oluşur. Yazılım ise programlar bütününe verilen isimdir.
Bir bilgisayar üzerinde bulunan yazılımları iki ana kategoride toplamak mümkündür:
a) Sistem Yazılımları
b) Uygulama Yazılımları
Bir önceki sayfadaki şekilde görüldüğü gibi, sistem yazılımları donanımın hemen
üzerinde uygulama yazılımları ile donanım arasındaki bağlantıyı oluşturmaktadır.
Aynı şekilde, uygulama yazılımları da kullanıcı ile bilgisayar arasındaki iletişimi
sağlamaktadır.
Uygulama yazılımları, bilgisayarın okuyabildiği dillerle, yani programlama dilleriyle
geliştirilirler. Sistem yazılımları ise, bilgisayar sisteminin genel işlerini yaparlar. Bir
anlamda, uygulama yazılımlarının çalışabilmesi için gerekli altyapıyı sağlarlar.
Sistem yazılımlarını da kendi aralarında iki gruba ayırabiliriz :
1. İşletim Sistemleri
2. Sistem Yazılımları
İşletim sistemleri sistem yazılımlarının en önemlisidir. En birincil görevi kaynak
yöneticisi olmasıdır. Yönettiği kaynakların en önemlisi de donanımdır. Bu anlamda
işletim sisteminin ana kaynakları genel olarak merkezi işlem birimi, bellek, giriş/çıkış
aygıtları ve veri olarak sınıflandırılabilir.
Yardımcı yazılımlar ise, işletim sisteminin yeteneklerini ve işlevlerini genişleten bir
bakıma tamamlayan yazılımlardır. Örneğin bilgisayarı kurmaya yarayan ancak işletim
sisteminin içerisinde olmayan yazılımları bu sınıf girer. Disk formatlama, dosya
kopyalama, modemle haberleşme ve veri iletişim aktiviteleri yardımcı yazılımlarla
gerçekleştirilir.
İşletim Sistemlerini İşlevleri

Donanım bilgi-işlem gücü sağlarken, işletim sistemi bu güce uygulama
programlarının dolayısıyla kullanıcıların erişimini sağlar.

Donanımın kullanıcılar arasında paylaşılmasını sağlar.

Kullanıcılara programları ve verileri paylaşma olanağı sağlar.

Kullanıcılara verileri koruma olanağı sağlar.

Kaynakların kullanımını düzenler.

Giriş-çıkış işlemleri ve ikinci belleğe erişim olanağı sağlar.
İşletim Sisteminin Mimarisi
İşletim sistemlerini genel olarak kontrol programları ve işlem programları olarak iki
grupta toplayabiliriz. Kontrol programları, bilgisayar sisteminin işlemlerini kontrol
ederler. Kaynakların atanması, işlevlerin sıraya konması, giriş-çıkış işlemlerinin yerine
getirilmesi gibi görevleri yerine getirirler. İşlem programları ise kullanıcıların sisteme
erişmesini ve sistem olanaklarını kullanmasını sağlar.
1 - Kontrol Programları :
Bilgisayar ilk açıldığında genellikle "kernel" adı verilen bir işletim sistemi programı
bilgisayar belleğine aktarılır. Bu program gereksinim duyulan diğer işletim sistemi
parçalarını ikincil bellekten ana belleğe yükler. Bellekte sürekli kalan program
parçalarına yerleşik işletim sistemi programları denir.Yerleşik işletim sistemi
programlarına denetleyici ya da gözetleyici de diyebiliriz. Bu program işletim
sisteminin tüm diğer birimlerinin işlemlerini yönetir. İşletim sisteminin yerleşik
olmayan parçaları gerektikçe belleğe aktarılır. Kontrol programlarının beş tane görevi
vardır. Kaynak yönetimi, kesmelerin ele alınması, işlem yönetimi, veri kontrolü ve
sistem durum denetimi görevleri.
Kontrol Programlarının İşlevleri
a) Kaynak Yönetimi : Kaynak yönetimi hangi kaynağın, hangi kullanıcı tarafından ne
zaman kullanılacağını kontrol eden işlevdir. Özellikle çok kullanıcılı sistemlerde önem
kazanan bu işlev aynı anda kaynaklara erişmek isteyen kullanıcıların erişimini en iyi
şekilde düzenler.
b) Kesmelerin Ele Alınması : Kesmeler çalışmakta olan bir programın daha acil bir
işleme hizmet vermek üzere kısa süreli durdurulmasıdır.
c) Sistem Durum Denetimi : Bir işletim sisteminin önemli görevlerinden birisi de
sürekli olarak sistemi denetlemek ve oluşan hataları az sorun yaratarak çözmektir.
d) İşlem Yönetimi : Yürütülmekte olan programa verilen isimdir. Birden fazla
programı aynı anda çalıştırabilen işletim sistemlerinde her bir program birden fazla
parçadan oluşur. Aslında işlemci aynı anda sadece bir programı çalıştırmaktadır.
İşlemcinin zamanı değişik programlar arasında paylaştırması aynı anda birden fazla
işlemi çalıştırdığı izlenimini uyandırır. İşletim sistemi içinde işlem yönetimini
kernel'ın bir parçası olan program yöneticisi ve program dağıtıcısı yürütmektedir.
Program yöneticisi bilgi sisteminde mevcut olan işlerin listesini tutar. Yani işleri
devreye sokar ve sona eren işleri devreden çıkarır.
e) Veri Kontrolü : Veri girişinin sağlanması, girilen verilerin ana belleğe ve oradan da
ikincil belleğe aktarılması ve verilerin çıkış birimlerine yazılması uygulama
programları tarafından işletim sistemine bildirilir. Veri kontrol yazılımları genellikle
giriş/çıkış ve depolama birimlerini kontrol eden alt düzey programlardır. Bu alt düzey
etkinliklerin yanı sıra bir işletim sisteminin veri kontrol programları tampon, veriyolu
ve havuz yöneticilerini de kontrol eder.
Tampon, değişik hızlarda çalışan ya da değişik öncelikleri bulunan donanım aygıtları
ve program işlemleri tarafından paylaşılan veri alanıdır. Tampon her aygıtın ya da
işlemin diğer bir aygıt ya da işlem tarafından engellenmeden çalışabilmesini sağlar.
Bir tamponun etkili olabilmesi için tamponun giriş/çıkışı ve tamponu yöneten
algoritmalar vardır. Tamponlar, bellekler arasındaki hız farkını ortadan kaldırmak için
kullanılır. Tampon, ön bellek gibi bir depolama bölgesidir. Fakat tampon bellek, bir
işlemin hızını arttırmaktan çok farklı işlemlerin güvenli bir şekilde ve işlemciyi
meşgul etmeden yönetilmesi için kullanılır.
Havuz yönetimi, birden fazla kullanıcı programın aynı anda yazıcıya çıktılarını
gönderebilmelerini ve bu sırada da çalışmalarını sürdürebilmelerini sağlayan
işlemlerdir. Programlar önce sabit diske gönderilir. Buradan alınıp yazıcıya aktarılır.
2- İşlem Programları :
Bu programlar kullanıcıların bilgisayar sistemlerinde sıkça kullandıkları işlevlerin
gerçekleştirilmesini sağlayan programlarıdır. Bunların en önemlisi Shell adı verilen ve
kullanıcının işletim sisteminin parçaları arasındaki iletişimi sağlayan
yazımlardır.
1.2. İşin Tanımı
Kullanıcılar bilgisayar sistemlerinden ilgili programlarını çalıştırarak yararlanırlar. Bir
programın çalıştırılması, işletim sisteminin kabuk katmanınca yorumlanan run, execute
gibi kimi sistem komutları aracılığıyla ya da sadece bu programın saklandığı kütük adı
verilerek sağlanır. Kullanıcılar, kimi zaman ya değişik programları arka arkaya ya da
aynı programı değişik veri takımlarıyla, belirli bir mantıksal sırada işlemek
gereksinimini de duyabilirler.
Örneğin A programını çalıştırmak, bu programın oluşturduğu K1 kütüğünü B
programı ile işlemek ve K2 kütüğünü elde etmek istenebilir. Bu örnekte sıralanan
işlemler bir işi oluşturur. Bu durumda iş, kullanıcıların sistemden bir bütün olarak ele
alınmasını istedikleri işlem takımına verilen ad olarak tanımlanır. İş, program
kavramını genişleterek içeren bir kavramdır. Bu bağlamda, tek bir program da bir iş
olarak adlandırılabilecektir.
1.3. Tek ve Çok İş Düzeni :
Tek ve çok iş düzenleri bilgisayar sistemleri üzerinde yürütülen işletim düzenleridir.
Bir bilgisayar sisteminde, aynı anda tek bir iş işletime alınabiliyor ise kurulan işletim
düzenine tek iş düzeni denir. Bu düzen içinde tüm sistem kaynakları, aynı anda tek bir
iş, dolayısıyla tek bir kullanıcı tarafından tüketilir. Tek iş düzeni, genel amaçlı
bilgisayar sistemlerini kısıtlı kaynaklara sahip olduğu ilk yıllarda kullanılmış, sonradan
bilgisayar sistemlerinin ucuzlamasıyla tüm kaynakların tek bir kullanıcıya adandığı
kişisel bilgisayarlarda da geçerli olmuş bir işletim düzenidir.
Çok iş düzeni, tek iş düzeninin yetersizliklerini aşmak üzere ortaya çıkan bir düzendir.
Bir bilgisayar sisteminde, birden çok iş aynı anda işletime alınabiliyor ise kurulan
işletim düzenine çok iş düzeni denir. Birden çok işin aynı anda işletime alınabilmesi,
bir işin işletimi sonlanmadan diğer işlerin de işletimlerinin başlaması demektir. Birden
çok işin aynı anda işletime alınabilmesi, sistem kaynaklarının bu işler arasında
eşzamanlı olarak paylaştırılmasını gerektirir. Tek iş düzeninden çok iş düzenine,
sistem kaynaklarını işler arasında paylaştırarak, bir yandan bu kaynakların kullanım
verimliliğini, diğer yandan, birim zaman süresi içinde daha çok iş sonlandırıp işletim
hızlarını artırma k amacıyla geçilir.
1.4. Görev ve Çok Görevli İşlem :
Çok iş düzeninin uygulandığı bilgisayar sistemlerinde, aynı anda birden çok işin ele
alınabilmesi, sistem kaynaklarının değişik işler ya da programlar arasında
paylaştırılmasını gerektirir. Ana işlem biriminin de, önemli bir kaynak olarak
programlar arasında paylaştırılması, işletilmekte olan bir programın kesilerek diğer bir
programın işletime alınmasını gerektirir. İşletimi kesilen programın işletimine, ileride
kalınan yerden devam edilebilmesi ve işletim bütünlüğünün korunabilmesi için
işletimin kesildiği konuma ilişkin durum bilgilerinin saklanması gereklidir. Bu amaçla,
işletilen her program için, bu bilgilerin saklandığı bir veri yapısı öngörülür. İlgili
programın her kesilişinde program sayacı, yığıt sayacı gibi programın kullandığı ana
işlem birimi yazmaç içerikleri, programın saklandığı kütük kimliği, programca açılmış
kütüklerin bulunduğu altklavuz kimlikleri gibi bilgiler bu veri yapılarına saklanır. Bir
program işletime alınacağı zaman ise ana işlem birimi yazmaç içerikleri ve diğer
işletimle ilgili değişkenler bu bilgilerle güncellenerek işletimin kalınan yerden
sürdürülmesi ve işletim bütünlüğünün korunması sağlanır.
Böylece, programlar komut satırları olarak değil de, işletim bilgilerinin tutulduğu,
görev iskeleti, denetim öbeği gibi adlarla anılan veri yapılarıyla ele alınmış olurlar.
Sistem yönünden bakıldığında birlikte işletilen komut dizileri (programlar) yerine
değişik görev iskeletleri ya da denetim öbekleri arasında anahtarlanan bir ana işlem
birimi söz konusu olur. Programın, işletim aşamasında iskelet adı verilen yapısı ile ele
alınan biçimine görev adı verilir.
1.5. Toplu ve Etkileşimli İşlem :
Toplu işlem ve etkileşimli işlem, çok iş düzeninin kurulduğu bilgisayar sistemlerinde,
aynı anda işletime alınan işlerin ele alınış biçimine verilen adlardır. Toplu işlemde
(işletimde) işler sisteme, biriktirilerek dönem dönem sunulurlar. Sisteme sunulan işler,
sunuş anından başlayarak sonlanıncaya kadar kullanıcının her türlü müdahalesine
kapalı biçimde işletilir. İşi oluşturan adımlar bir bütün olarak ele alınıp topluca
işletilirler. Kullanıcılar adımlar arasında işletim akışını izleme ve denetleme
olanaklarına sahip değildirler.
Kullanıcıların iş adımlarını adım adım işletebildiği, adımlar arasında işletim akışını
izleyebildiği ve işletim akışına müdahale edebildiği işlem türü etkileşimli işlem olarak
adlandırılmaktadır. Etkileşimli işlemde kullanıcılara sistemle terminaller aracılığıyla
etkileşim kurarlar. Bu işlem türünde ana işlem birimi, kısa zaman dilimleri içinde
(örneğin her 10 ms'de bir) kullanıcılara sırayla dönerek atanır. Bu zaman dilimlerinin
bir ya da birkaçında, terminallerin başında oturan kullanıcıların, terminallerinden
girdikleri işletim komutları çalıştırılabildiğinden kullanıcılar, komutlarına anında
yanıt alırlar. Böylece kullanıcılar sistem tümüyle kendileri için çalışıyormuş
izlenimini elde ederler. Etkileşimde işlemde, işleri oluşturan adımlar, kullanıcının
sunuş sırasında işletildiğinden işletim akışının izlenmesi sağlanır. Ayrıca işletim, toplu
işlemin tersine kullanıcının denetiminde istenen herhangi bir anda, terminallerdeki
özel denetim tuşları kullanılarak kesilebilir.
1.6. Gerçek Zamanlı İşlem :
Gerçek zamanlı işlem, genelde, çok görevli işlemle birlikte anılan bir işlem türüdür.
Çünkü, çok görevli işlem, gerçek zamanlı işlemin gerçekleştirilmesinde başvurulması
gereken bir yöntemdir. Gerçek zamanlı uygulamalarda, işlemler çoğu kez, sisteme dış
ortamdan gelen uyarılarla ele alınırlar. Bu uyarıların her biri için bir ya da birkaç görev
tanımlanır. Bu görevler, ilgili oldukları uyarıların yanıt sürelerine dayalı öncelik
sırasında ana işlem birimine anahtarlanırlar. Uyarılarla ilgili görevlerin kolayca
tanımlanabilmesi ve tanımlanan bu görevlerin önceliklerine göre ana işlem birimini
paylaşmaları çok görevli işlem ortamını gerektirir. Bu nedenle gerçek zamanlı işlem,
genellikle çok görevli işlemle birlikte anılır ve gerçekleştirilir.
Gerçek zamanlı nitelemesi çoğu kez çevrim içi deyimi ile aynı anlama gelecek
biçimde kullanılır. Çevrim içi, bilişim uygulamalarında verilerin sisteme sunuluş
biçimini tanımlayan bir terimdir. Eğer işlenecek veriler bilgisayar sistemine dolaysız
ve aracısız biçimde aktarılıyor ise yapılan uygulamanın çevrim içi bir uygulama
olduğu söylenir. Örneğin bankacılık uygulamalarında müşteriler tarafından
gerçekleştirilen para çekme, para gönderme gibi değişik bankacılık işlemlerine ilişkin
veriler, telefon hatları aracılığıyla, doğrudan uygulamanın yürütüldüğü bilgisayar
sistemine ulaşıyorsa yapılan uygulamanın çevrim içi bir uygulama söylenir.
1.7. İşletim Sistemini
Oluşturan Kesimler
İşletim sistemi bilgisayar
sistemini oluşturan
donanım ve yazılım
nitelikli kaynakları
kullanıcılar arasında kolay,
hızlı ve güvenli bir işletim
sistemi olacak şekilde
paylaştıran, bunu yaparken
bu kaynakların kullanım
verimliliğini en üst
düzeyde tutmayı
amaçlayan bir yazılım sistemidir.
Bu bağlamda işletim sisteminin sistem kaynaklarının, ana işlem biriminin, ana
belleğin, giriş/çıkış birimlerinin kullanıcılar arasında verimli paylaşımını sağlayan
işlemleri ana belleğin yönetimi, ana işlem biriminin yönetimi, kütük yönetimi gibi
değişik kesimler içinde toplanır.
a ) Ana İşlem Biriminin Yönetimi :
Ana işlem birimi bir bilgisayar sisteminin en önemli kaynağını oluşturur. Bu önemli
kaynağın kullanıcılar arasında paylaştırılması ana işlem biriminin yönetimi
kapsamında ele alınır. Ana işlem birimi, kullanıcı programlarının birlikte işletilmesiyle
paylaştırılır. Bir program tümüyle sonlanmadan bir diğerinin de işletime alınması, bu
programların birlikte işletilmesi olarak bilinir. Programlar, birlikte işletimin gereği
olarak zaman zaman kesilerek ana işlem birimini diğer programlara bırakmak zorunda
kalırlar. Bu biçimde kesilen bir programın, işletimini sorunsuz sürdürebilmesi için
kesildiği andaki işletim ortamının saklanması gereklidir.
Bu amaçla işletime alınan tüm programlar için iskelet adı verilen özel veri yapıları
tutulur. Bir program işletime alınacağı zaman, işletim ortamını belirleyen ana işlem
birimi yazmaçları bu program iskeletindeki bilgilerle güncellenir. Program işletimi, bu
biçimiyle görev olarak adlandırılır. Ana işlem birimi yönetimi, bu nedenle görev
yönetimi olarak da adlandırılır.
Şekil - Görev Durum Düzeneği
1: İşlem hazır görevlerden biri, görev
yönetici diye adlandırılan özel bir
sistem görevi aracılığıyla ana işlem
birimine anahtarlanır ve çalışır göreve
dönüşür.
2: Çalışmakta olan bir görev değişik
nedenlerle bu özelliğini yitirebilir.
Çalışırken giriş/çıkış işlemi başlatan bir görev, bu işlem tümüyle sonlanmadan
işletiminde devam edemeyeceğinden bekler görev durumuna geçer ve ana işlem
birimini bırakır.
3 : Özel değişkenler üzerinde işlem yapan zaman uyumlama işleçlerini çalıştıran
görevler de, ana işlem birimini bırakıp bekler durumuna geçebilirler.
4 : Görevler, ana işlem birimini kendilerinden kaynaklanmayan nedenlerden dolayı da
bırakmak zorunda kalabilirler.
5 : Giriş/çıkış istemi, zaman uyumlama gibi nedenlerle bekler konuma geçen görevler
yine çalışmaya hazır görevler haline dönerler.
6 : Bekler konumda bulunan bir görev işletime hazır hale gelmektedir.
b ) Zaman Uyumlama İşlevleri :
Bir bilgisayar sisteminde tüketilen kaynak sayısı aynı anda işletime alınan görev
sayısından her zaman çok daha küçüktür. Görevler, örneğin yazıcılar gibi kimi
kaynakları bu nedenle paylaşmak zorunda kalırlar.
Görevlerin kaynakları gerekli önlemler almadan rastgele paylaşması işletim
bütünlüğünün bozulmasına yol açar. Bu nedenle kaynak paylaşımında işlem
bölünmezliği, görev yapılarına zaman uyumlama işlevseli olarak adlandırılan özel bir
programlama araçlarıyla katılır.
c ) Giriş / Çıkış Sistemi :
Giriş / çıkış birimleri verileri hem bilgisayar sistemiyle dijital ortam arasına iki yönlü
aktarımını sağlayan hem de bunların bilgisayar ortamlarında saklanmasına yarayan
bölümlerdir. Giriş / çıkış komutları, giriş/çıkış sürücüleri ve arabirimlerinden oluşur.
Bilgisayar sistemi aynı anda birden çok giriş/çıkış birimini kontrol etmektedir. Bunun
için çoğu kez sürücü – arabirim arası aktarım işlemleri bir kez başlatıldıktan sonra ara
birimlerin aktarım sonunda ana işlem birimini uyarması öngörülür.
Bu yolla ana işlem biriminin birden çok arabirimi eş zamanlı olarak denetleyebilmesi
sağlanır. Arabirimler iş bittiğinde ana işlem birimine kesilme uyarıları gönderir.
Değişik giriş/çıkış arabirimlerinden aynı anda ve zaman uyumsuz olarak gelen bu
uyarılar hiçbir veri kaybına yol açmadan ve birimlerin öncelik sırası gözetilerek ele
alınması, kesilmelerin yönetimi olarak bilinir. Kesilmelerin yönetimi giriş/çıkış
kapsamında düşünülür.
Verilerin giriş/çıkış birimleriyle ana bellek arasında aktarılması her zaman kesilme
düzeneğine dayalı olarak yapılmaz. Özellikle disk gibi hızlı giriş/çıkış birimlerinden
veriler doğrudan bellek erişimi olarak adlandırılan bir başka yöntemle aktarılırlar.
d ) Ana Belleğin Yönetimi :
Programların birlikte işletimi, ana belleğin bunlar arasında paylaştırılmasını zorunlu
kılar. Ana bellek programlar arasında değişik biçimlerde bölümlenerek paylaştırılır.
Belleğin bölünmesinden parçalanma sorunu ortaya çıkar. Parçalanma sonucu belleğe
programların yeniden yerleştirilirken dönem dönem birleştirilmeleri yoluyla açılır.
e ) Kütük Yönetimi :
Kütük yönetimi kullanıcılara ana bellek dışında saklanan verileri üzerinde kolay ve
hızlı işlem yapabilme olanağı veren işletim sistemi kesimidir. Kütükler üzerinde
yapılan temel işlemler okuma-yazma, açma-kapama işlemleridir.
f ) Sistem Komut Yorumlayıcısı :
İşletim sisteminin kullanıcıyla iletişim kurduğu katman kabuk katmanıdır. Kabuk
katmanında yer alan sistem komut yorumlayıcısı kullanıcıların girdikleri komutları
yorumlayarak, bu komutlarla tanımlanan işlemleri yerine getirirler.
İŞLETİM SİSTEMLERİ TÜRLERİ
2.1. Mainframe İşletim Sistemleri
Mainframe bilgisayarlar oda büyüklüğünde bilgisayarlardır ve büyük data
merkezlerinde hala bulunmaktadırlar. Bu bilgisayarlar, kişisel bilgisayarlardan giriş /
çıkış kapasiteleri bakımından ayırt edilirler. Bir mainframe bilgisayar 1000 disk ya da
binlerce gigabyte veriye sahip olabilir, ancak bir kişisel bilgisayarın bunlara sahip
olması çok rastlanılan bir durum değildir.
Mainframe bilgisayarlarda kullanılan işletim sistemleri aynı anda birden çok işi
yapmak için bir hayli yavaştır. Onlar tipik olarak üç farklı iş sunarlar: küme, işlem
yapma ve zaman paylaşımı. Bir küme sistemi halihazırda etkin bir kullanıcı olmadan
rutin işlemleri yapar. Bir sigorta şirketinde oluşan istekler veya bir mağazalar
zincirinin satış raporları küme modunda yapılır. İşlem yapma sistemleri küçük istekleri
büyük numaraları kullanarak sağlarlar, örneğin bir bankada ya da uçak
rezervasyonlarındaki kontrol işlemlerinde. Her bir iş küçük ünitelere ayrılmıştır, fakat
sistem saniyede yüzlerce ya da binlercesini tutmalıdır. Eş zamanlı sistemler büyük
veritabanlarındaki sorgu işlemleri gibi, aynı anda bilgisayarda çok sayıda uzaktaki
kullanıcıya çalışmaları için izin verir. Mainframe işletim sistemlerine örnek olarak
OS/390 ve OS/360 verilebilir.
2.2. Server İşletim Sistemleri
Bir diğer işletim sistemleri türü server işletim sistemleridir. Bu sistemler, çok büyük
kişisel bilgisayarlarda, iş istasyonlarında veya hatta mainframe bilgisayarlardaki
serverlarda çalışırlar. Bu sistem aynı anda çok sayıda kullanıcının ağa bağlanmasına ve
kullanıcıların donanım ve yazılım kaynaklarını paylaşmasına izin vererek onlara
yardım eder. Serverlar, yazıcı servisleri, dosya servisleri veya Web servislerini
sağlayabilir. Internet sağlayıcıları onların müşterilerinin kullanabilmesi için birçok
server makinesinde çalışır ve Web siteleri Web sayfalarını saklamak ve gelen talepleri
tutmak için serverları kullanırlar. Tipik server işletim sistemleri UNIX ve Windows
2000’dir.
2.3. Çok İşlemcili İşletim Sistemleri
Gittikçe çok yaygınlaşan bir durum da bir basit sistemin içerisine bir çok CPU
bağlayarak çok önemli hesaplamaları yapmaktır. Bu sistemler nasıl bağlandığına ve
neyi paylaştığına bağlı olarak paralel bilgisayarlar, çoklu bilgisayarlar veya çok
işlemcili diye adlandırılır. Bu bilgisayarlar özel işletim sistemlerine ihtiyaç duyarlar,
fakat server işletim sistemlerinde iletişim ve bağlantı için ekstra özellikler eklenerek
de kullanılabilirler.
2.4. PC İşletim Sistemleri :
Bir sonraki kategori PC işletim sistemleridir.Onların işi kullanıcılara güzel bir arayüz
sağlamaktır. Kelime işlemcileri, hesaplama tabloları ve internete giriş için geniş bir
alanda kullanılırlar. Bu sistemlere örnekler, Windows 98, Windows 2000, Macintosh
işletim sistemi ve Linux. PC işletim sistemleri çok yaygın olarak kullanılırılar.
2.5. Gerçek Zamanlı İşletim Sistemleri :
İşletim sistemlerinin bir diğer çeşidi gerçek – zamanlı işletim sistemleridir. Bu
sistemler, çok önemli bir zaman parametresine sahip olarak nitelendirilir. Örneğin
endüstriyel kontrol sistemlerinde , gerçek - zamanlı bilgisayarlar üretim işlemleri
hakkındaki bilgileri toplar ve o bilgileri fabrikadaki kontrol makinelerinde kullanırlar.
Sıkça çok önemli olan son üretim tarihiyle ilgili karşılaştırmaları yapmalıdır.
Örneğin eğer bir araba fabrikadan çıkarılacaksa, zamanın belli bir anında belirli
hareketleri yapabilmelidir. Eğer kaynak yapan robot çok erken ya da çok geç kalırsa
bu bir felaket olacaktır. Yapılan faaliyet tümüyle zamanın belirli bir aşamasında
meydana geliyorsa biz buna hard gerçek zamanlı sistem diyoruz.
Diğer bir gerçek zamanlı sistem ise arada sırada hataların yapılabildiği soft gerçek
zamanlı sistemlerdir. Digital ses veya multimedya sistemleri bu kategoriye girerler.
VxWorks ve QNX bilinen gerçek zamanlı işletim sistemlerindendir.
2.6. Gömülü İşletim Sistemleri :
Daha küçük sistemlere doğru ilerlemeye devam ediyoruz. Şimdi de avuç içi
bilgisayarlar ve gömülü sistemlere geldik. Bir avuç içi bilgisayar elektronik adres
defteri ve not defteri gibi küçük fonksiyonları yapabilen ve bir gömlek cebinde
taşınabilen küçük bilgisayarlardır. Gömülü sistemler genellikle bilgisayarlardan farklı
olarak kontrol aygıtlarında bulunan bilgisayarlarda çalışırlar. Bunlar TV setleri,
mikrodalga fırınlar ve mobil telefonlardır. Gömülü işletim sistemleri, gerçek zamanlı
sistemlerin bazı özelliklerine sahiptir, ancak boyut, bellek ve güç sınırlamaları onları
özel kılmaktadır. PalmOS ve Windows CE bu tür sistemlere örnek olarak verilebilir.
2.7. Akıllı Kart İşletim Sistemleri :
Küçük işletim sistemleri kredi kartı büyüklüğünde, bir çip içeren akıllı kartlarda
çalışırlar. Onlar çok kısıtlı işlem gücüne ve belleğe sahiptir. Bu sistemlerin bazıları
elektronik ücret ödeme gibi yalnızca tek fonksiyonu yerine getirirler, fakat diğerleri
benzer smart kartta bir çok fonksiyonu kullanabilir. Bunlar tescilli sistemlerdir.
Bazı akıllı kartlar java tarafından yönlendirilir. Bunun anlamı java sanal makinesi için
akıllı karttaki ROM’da bir yorumlayıcı tutulur. Java apletleri (küçük programlar) JVM
yorumlayıcısı tarafından karta yüklenir ve yorumlanır. Bu kartların bazıları aynı anda
çok sayıda Java apletlerini kullanabilir.
2.6. Gömülü İşletim Sistemleri :
Daha küçük sistemlere doğru ilerlemeye devam ediyoruz. Şimdi de avuç içi
bilgisayarlar ve gömülü sistemlere geldik. Bir avuç içi bilgisayar elektronik adres
defteri ve not defteri gibi küçük fonksiyonları yapabilen ve bir gömlek cebinde
taşınabilen küçük bilgisayarlardır. Gömülü sistemler genellikle bilgisayarlardan farklı
olarak kontrol aygıtlarında bulunan bilgisayarlarda çalışırlar. Bunlar TV setleri,
mikrodalga fırınlar ve mobil telefonlardır. Gömülü işletim sistemleri, gerçek zamanlı
sistemlerin bazı özelliklerine sahiptir, ancak boyut, bellek ve güç sınırlamaları onları
özel kılmaktadır. PalmOS ve Windows CE bu tür sistemlere örnek olarak verilebilir.
2.7. Akıllı Kart İşletim Sistemleri :
Küçük işletim sistemleri kredi kartı büyüklüğünde, bir çip içeren akıllı kartlarda
çalışırlar. Onlar çok kısıtlı işlem gücüne ve belleğe sahiptir. Bu sistemlerin bazıları
elektronik ücret ödeme gibi yalnızca tek fonksiyonu yerine getirirler, fakat diğerleri
benzer smart kartta bir çok fonksiyonu kullanabilir. Bunlar tescilli sistemlerdir.
Bazı akıllı kartlar java tarafından yönlendirilir. Bunun anlamı java sanal makinesi için
akıllı karttaki ROM’da bir yorumlayıcı tutulur. Java apletleri (küçük programlar) JVM
yorumlayıcısı tarafından karta yüklenir ve yorumlanır. Bu kartların bazıları aynı anda
çok sayıda Java apletlerini kullanabilir.
BİLGİSAYAR DONANIMI
3.1. Mikro İşlemciler :
İşlemci, bilgisayarın beynidir. Bellekten komutları getirerek onları çalıştırır. İlk olarak
bellekten komut alma, sonra tipine ve operandına karar vererek çözme ve çalıştırma ve
sonra tekrar bu işlemlerin yapılması her işlemcinin sahip olduğu temel çevrimdir. Tüm
programlar bu yolla çalıştırılırlar.
Her işlemci kendisinin çalıştırabileceği özel bir komut setine sahiptir. Bu nedenle
Pentium, Sparc programını çalıştıramayabilir ve Sparc programı da Pentium işlemcide
çalışmayabilir. Çünkü belleğe gelen komutlar ya da veri kümeleri komut setinin
çalıştırabileceğinden daha uzun olabilir. Bütün işlemciler önemli değişkenleri ve geçici
sonuçları tutmak için bazı kaydedicilere sahiptir. Komut setleri genellikle, kaydediciye
bellekten yüklenen bir bilgi ve belleğe kaydediciden bir bilgi depolamak için gerekli
komutları içerir. Diğer komutlar kaydediciler, bellekler veya her ikisinden gelen
sonuçları iki operantla birleştir için kullanılırlar. Bu bellekte veya kaydedicideki
sonucun birbirine eklenerek depolanmasına benzemektedir.
Genel kaydedicilere ek olarak değişkenleri ve geçici sonuçları tutmak için, birçok
bilgisayar programcının görebileceği bir takım özel kaydedicilere sahiptirler.
Bunlardan biri bir sonraki komutun getirilmesi için gerekli adresi içeren program
sayacıdır. Komut alınıp getirildikten sonra program sayacının değeri 1 arttırılır.
Diğer bir kaydedici, bellekte bulunan yığının üzerindekileri gösteren yığın işaretçisi
(stack pointer)’dır. Stack her bir işlem için o işleme girildiğinde görülen, çıkıldığında
görülmeyen bir iskelet içerir. Bir işlemin yığını kaydedicilerde tutulmayan, giriş
parametreleri, yerel değişkenler ve geçici sonuçları tutarlar.
Bir diğer kaydedici de program durum kelimesidir. Bu kaydedici komutları
karşılaştırarak işlemci önceliği, mod ve diğer çeşitli kontrol bitlerini ayarlayan durum
kod bitlerini içerir. Kullanıcı programları genelde tüm program durum kelimesini
okuyabilir, ancak tipik olarak onun sadece bazı alanlarına yazabilir. Program durum
kelimesi sistem çağrılarında ve giriş – çıkışlarda çok önemli bir rol oynar.
İşletim sistemi tüm kaydedicilerden haberdar olmalıdır. İşlemci birçok işlem yapacağı
zaman, işletim sistemi sık sık bir programı durdurup, diğerini çalıştıracaktır. Her
zaman çalışan bir program işlemci tarafından durdurulabilir, bu nedenle işletim sistemi
programa daha sonra tekrar çalıştırılacağı zaman dönebilmek için tüm
kaydedicilerdeki bilgileri kaydetmelidir.
İşlemci tasarımcıları uzun süreden bu yana kullanılan aynı anda tek komut alıp getiren,
çözen ve çalıştıran basit modelden vazgeçerek işlemci performansını arttırmaktadırlar.
Modern işlemcilerin birçoğu aynı anda birden çok daha fazla sayıda komutu
çalıştırabilmek için birtakım özelliklere sahiptir. Örneğin bir işlemci, alıp-getirme,
çözme ve çalıştırma ünitelerine ayrılabilir, bu şekilde n adet komut çalıştırılabilirken,
ayrıca n+1 sayıda komut çözülebilir ve n+2 komut alınabilir. Bu organizasyon biçimi
pipeline olarak adlandırılır. Bir pipeline üç safha içermektedir. Genel olarak uzun
pipeline’lar kullanılır. Birçok pipeline dizaynında bir komut pipeline’a getirildiği
zaman, bir önceki alınan komuta bağlı olsa bile çalıştırılır. Pipeline’lar derleyici
yazanlara ve işletim sistemi yazanlara büyük baş ağrılarına sebep olurlar, çünkü
pipeline’lar makinenin karmaşıklıklarını açığa vururlar.
Şekil a) Pipeline İşlemci
Şekil b) Superscalar
İşlemci
Daha çok gelişmiş bir pipeline dizaynı şekil b’de görülen superscalar işlemcidir. Bu
dizaynda, çok sayıda icra (yapma) ünitesi vardır, örneğin integer sayılar için bir, kayan
noktalı sayılar için bir ve boolean operatörleri için iki tane icra ünitesi vardır. İki ya da
daha çok sayıda komut aynı anda alınıp-getirilir, çözülür ve çalıştırılabilinceye kadar
buffer belleğin içerisine atılır. İşlem ünitesi boşalır boşalmaz, işlemci buffer belleğe
bakar ve eğer orada kullanabileceği bir komut varsa, buffer bellekten o komutu alır ve
çalıştırır. Bu dizaynın önemi program komutları çoğunlukla düzenin dışında
çalıştırılır.
Birçok işlemci , gömülü sistemlerde kullanılan çok basit olanları hariç olarak, kernel
ve kullanıcı modu adında iki moda sahiptir. Bu modlar genellikle program durum
kelimesindeki bitlerle kontrol edilir. İşlemci, kernel modda çalışıyorken komut
setindeki her komutu çalıştırabilir ve donanımın tüm özelliklerini kullanır. İşletim
sistemi kernel modda çalışır ve kernel mod işletim sistemine donanıma giriş izni verir.
3.2. Bellekler
Herhangi bir bilgisayarda ikinci önemli parça bellektir. İdeal olarak bir bellek, çok
hızlı, çok büyük ve çok ucuz olmalıdır. Şu andaki teknoloji buna yaklaşmış, ancak tam
olarak gerçekleştirememiştir. Bellek sistemi şekil 1’de gösterilen katmanların
hiyerarşisi gibi inşa edilmiştir.
Kaydediciler
Cache Bellek
Ana Bellek
Manyetik Disk (Sabit
Disk)
Manyetik Teyp
Şekil 1 - Bellek Hiyerarşisi
İlk katman, CPU'nun kendi üzerinde yer alan kaydedicilerden oluşmaktadır.
Kaydediciler, CPU ile aynı maddeden yapılmışlardır ve bu nedenle CPU kadar
hızlıdırlar. Sonuç olarak, CPU onlara ulaşmak için herhangi bir bekleme yapmaz.
Onların depolama kapasiteleri 32 bitlik bir CPU'da 32*32 bit ve 64 bitlik bir CPU'da
64*64 bittir. Her iki durumda da 1 KB'den daha az bir kapasiteye sahiptirler.
Yazılımda programlar kaydedicileri kendileri yönetmelidir.
Bir sonraki katman çoğunlukla donanım tarafından kontrol edilen cache bellektir. Ana
bellek tipik olarak 64 byte’lık cache dizilerine bölünmüştür, 0 ile 63 adres arasında
cache dizisi 0, 64 ile 127 adres arasında cache dizisi 1 olarak adlandırılmakta ve bu
şekilde devam etmektedir. Cache bellekler çoğunlukla yüksek hızda aranılan bilgiye
ulaşmada veya işlemciye iletmede kullanılmaktadır. Program bir bellek kelimesini
okumaya ihtiyaç duyduğunda, cache donanımı ihtiyaç duyulan bilgiyi cache’in
içerisinde arar. Eğer cache’in içerisinde bulunursa cache hit olarak adlandırılır ve bilgi
isteği cache bellekten giderilir, ana belleğe herhangi bir istek gönderilmez. Cache
normal olarak iki saat çeviriminde bilgiye ulaşır. Cache hataları, belleğe gitme ile
büyük zaman kayıplarıdır. Cache bellek fiyatı pahalı olduğundan kapasitesi sınırlıdır.
Bazı makineler iki veya daha fazla cache belleğe sahiptir, her biri bir öncekinden daha
yavaş ve daha büyüktür.
Bir sonraki katman olan ana belleğe geldik. Ana bellek çoğunlukla RAM olarak da
adlandırılır. Eskiden ana bellek öz bellek olarak da adlandırılırdı, çünkü 1950 ve
1960’larda ana bellek için mıknatıs parçaları kullanıldı. Şimdi, bellekler, onlarca
megabyte’den yüzlerce megabyte’a doğru sürekli gelişmektedir. Cache belleğin
karşılayamadığı tüm bilgi istekleri için ana belleğe gidilir.
Hiyerarşide bir sonra gelen manyetik disklerdir (Hard disk). Disk depolama bit başına
RAM’den daha ucuzdur ve aynı zamanda çoğunlukla büyüklüğü iki tabaka halindedir.
Problem sadece veriye random olarak ulaşmanın yavaş olmasıdır. Bu düşük hız bir
diskin mekanik olmasından kaynaklanmaktadır.
Bir disk 5400, 7200 veya 10800 rpm hızlarında dönebilen bir ya da daha çok plakadan
oluşmaktadır. Eski 33 rpm’lik gramofonlardaki kayıtları çalmak için kullanılan pickup
kola benzer mekanik kol, köşeden itibaren plakanın üzerinde bir eksen çevresinde
döner. Bilgi eş merkezli dairelerin üzerindeki disklere yazılmıştır.
Her bir track , tipik olarak her biri 512 byte kapasiteye sahip sektörlere ayrılmıştır.
Modern disklerde, dış taraftaki silindirler, iç taraftaki silindirlerden daha çok sayıda
sektör içerir. Kolun (kafa), bir silindirden diğerine taşınması 1 msec. süre almaktadır.
Tipik olarak kolun random olarak bir silindire gitmesi sürücüye bağlı olarak 5 ile 10
msec. arasında değişmektedir. Kol yanlış track üzerinde olduğu zaman, sürücü,
kafanın ihtiyaç duyulan sektör üzerinde dönmesi için sürücünün rpm hızına bağlı
olarak 5 ile 10 msec. arasında bir süre beklemelidir. Sektör kafanın altında olduğu
zaman, okuma veya yazma en yavaş diskte saniyede 5 Mb, en hızlı diskte ise 160 Mb
olur.
Bellek hiyerarşisinde son katman manyetik teyplerdir. Bu ortam çoğunlukla disk
depolama için yedekleme gibi ve çok büyük miktarlardaki bilgiyi tutmada kullanılır.
Bir teypi kullanmak için, bir kişi veya robot tarafından ilk olarak teyp okuyucunun
içerisine teypi koymalıdır. Sonra makaraların istenen bloğa ulaşmak için ileriye doğru
dönmesi gerekir. Bu işlem dakikalar alabilir. Teyp’in en büyük artısı, bit başına müthiş
ucuz olması ve silinebilmesidir ki bu yedekleme üniteleri için çok önemlidir. Bunlar
yangınlar, sellerden ve depremlerden korunmak için depolanmalıdır.
Yukarıda ele aldığımız bellek çeşitlerine ek olarak, birçok bilgisayar değişken
olmayan bir belleğe sahiptir. RAM’den farkı, onun içeriği güç kesildiği zaman
kaybolmamasıdır. ROM bellekler fabrikalarda programlanmıştır, sonradan
değiştirilemez. O hızlı ve ucuzdur. Bazı bilgisayarlarda ROM, bilgisayarı başlatmak
için gereken boot kaydını içermektedir. Ayrıca bazı giriş-çıkış kartları düşük seviyeli
aygıtları kontrol için ROM’la birlikte gelir.
EEPROM ve Flash RAM de değiştirilemez, fakat ROM’dan farklı olarak sonradan
silinebilir ve yeniden programlanabilir. Bununla beraber, onların üzerinde yazmak,
RAM belleğe yazmaktan çok daha fazla bir zaman alır.
Diğer bir bellek çeşidi ise değişken olan CMOS’tur. Birçok bilgisayar zamanı ve tarihi
tutmak için CMOS belleği kullanır. CMOS bellek ve saat çevrimi küçük bir batarya
tarafından sağlanan güç ile çalışmaktadır. Bu şekilde zaman doğru bir biçimde
yenilenmektedir, hatta bilgisayar kapalı olduğunda bile saat çalışmaya devam
etmektedir. CMOS bellek aynı zamanda disk boot edildikten sonra, konfigürasyon
parametrelerini tutabilir. CMOS bellekler çok az güç tükettiğinden dolayı, orijinal
fabrika bataryalarıyla birkaç yıl çalışabilirler.
Belleğin aynı anda birçok programı tutması sıklıkla arzu edilen bir durumdur. Eğer bir
program bellekte, diskteki okumanın tamamlanması için bekliyorsa, diğer program
işlemciyi kullanabilir ki işlemci daha iyi bir kullanım sağlar.
Bununla birlikte, aynı anda bellekte iki veya daha fazla program çalıştığında şu iki
problem çözülmelidir:
1 – Programları diğer programların ve kernel’ı tüm programların etkisinden nasıl
kurtarabiliriz ?
2 – Bunları nasıl tutacağız ?.
Birçok çözüm yolu mümkün. Bununla beraber, onların tamamı, özel bir donanımla
işlemciyi karıştırır.
Birinci problem açıktır, fakat ikincisi biraz zor algılanan bir problemdir. Bir program
derlendiği ve bağlandığı zaman, derleyici ve bağlayıcı programın fiziksel bellekte
çalıştırıldıktan sonra yükleneceği yeri bilmez. Bu nedenle, derleyici ve bağlayıcı
çoğunlukla belleğin 0. adresten başladığını varsayar ve ilk komutu oraya yerleştirir. İlk
komutun 10000. adresten alınıp getirildiğini düşünelim. Şimdi de tüm program ve
verilerin 50000. adreste bulunduğunu varsayalım. İlk komut çalıştırıldığı zaman,
60000. adresteki bir bilginin yerine 10000. adresteki veri referans olacağı için bir hata
meydana gelecektir. Bu problemi çözmek için, program yüklendiğinde yer
değiştirmek, tüm adresleri bulmak ve onları düzenlemek ya da çalışma sırasında yer
değiştirme durumlarının ikisinden birini ihtiyaç vardır.
Bu basit çözüm yolu
yandaki şekilde
görülmektedir. Bu
şekilde iki özel
kaydediciyle donatılmış
bir bilgisayar
görüyoruz, bunlar base
register ve limit
registerdir. Program
çalışmaya başladığı zaman, base register program metninin başlayacağı yeri ayarlar ve
limit register da birleştirilen program metni ve verinin ne kadar büyük olduğunu
söyler. Komut alınıp getirildiğinde, donanım, program sayacının limit register’dan
daha küçük olup olmadığını kontrol eder, ve eğer daha küçük ise, base register’a ekler
ve belleğe bu toplamı gönderir. Benzer şekilde, program bir veriyi alıp getirmek
istediğinde, donanım otomatik olarak verinin adresini base register’ın içeriğine ekler
ve bu toplamı belleğe gönderir. Base register kendisinin altında belleğin herhangi bir
parçası referans olarak verebilir. Ayrıca limit register kendisinden daha yukarıda
belleğin herhangi bir parçası referans olarak verebilir. Böylece bu şema koruma ve yer
değiştirme problemlerinin her ikisini de çözer.
Program tarafından oluşturulan
adresler kontrol ve haritalama
sonucunda fiziksel adres olarak
adlandırılan, bellek tarafından
kullanılan adresten sanal adrese
dönüştürüldü. Kontrol ve bellek
haritasını çıkaran bu aygıt bellek
yönetim ünitesi (MMU) olarak
adlandırılır. MMU işlemci
üzerinde veya kapalı bir halde
bulunur, fakat mantıksal olarak
işlemci ile bellek arasındadır.
Çok gelişmiş bir MMU yandaki şekilde görülmektedir. Burada program ve veri
için bir çift base ve limit register’a sahibiz. Program sayacı ve tüm diğer programlara
olan başvurular için çift 1 ve veri referansları için çift 2 kullanılır. Sonuç olarak,
sadece bellekte bulunan bir kopya ile aynı program birçok kullanıcı arasında
paylaştırılabilir, ancak birinci şema ile bu mümkün değildir. Program 1 çalışmaya
başladığı zaman, şeklin solundaki oklarla dört kaydedicinin aldığı durum
görülmektedir. Program 2 çalıştığında, onlar şeklin sağındaki oklarla gösterilen
durumdadırlar.
MMU yönetimi bir işletim sistemi fonksiyonudur, çünkü kullanıcılar doğru olarak
güvenilir bir şekilde MMU’yu yönetemeyebilirler.
Bellek sisteminin iki yönü performansta çok önemli etkilere sahiptir. Birinci olarak
belleğin oldukça yavaş olan hızını cache bellekler gizler. Program belli bir süre için
çalışacağı zaman, programın tamamı cache belleğe alınır, bu iyi bir performans elde
edilmesini sağlar.
Bununla beraber, işletim sistemi bir programdan diğerine geçtiği zaman, cache
bellekte sadece ilk olarak yüklenen programın tamamı bekler. yeni programın ihtiyaç
duydukları aynı anda fiziksel bellekten yüklenmelidir. Bu işlem, çok sık okuyorsa, çok
önemli bir performans artışı sağlayabilir.
İkinci olarak, bir programdan diğerine geçildiğinde, MMU kaydedicileri
değişmelidirler. Şekil 1-9b’de sadece dört kaydedici resetlenebilir, bu bir problem
değildir, fakat gerçek MMU’lar çok daha fazla kaydediciye sahip olduklarından bu
işlemleri gerçekleştirmek daha zordur. Her iki yol da zaman alır. Sonuç olarak bir
programdan diğerine geçiş bağlama anahtarı olarak adlandırılır ve pahalı bir iştir.
3.3. Giriş/Çıkış Aygıtları :
İşletim sisteminin yönetmek zorunda olduğu tek kaynak bellek değildir. Giriş-çıkış
aygıtları da işletim sistemiyle sıkı bir ilişki halindedir. Giriş-çıkış aygıtları genel olarak
iki kısımdan oluşmaktadır: bir kontrolör ve aygıtın kendisi. Kontrolör, anakart
üzerinde takılı olan bir veya daha çok çipten oluşan fiziksel aygıttır. İşletim
sisteminden gelen komutları örneğin, aygıttan veri okuma ve verileri dışarıya
gönderme işlemlerini kabul eder.
Diğer parça aygıtın kendisidir. Aygıtlar oldukça basit bir arayüze sahiptirler. IDE,
Pentium ve diğer bazı bilgisayarlarda kullanılan bir disk standardıdır. Kontrolörler,
gerçek aygıtın arkasına gizlendiğinden bu yana, tüm işletim sistemleri aygıttan aygıta
farklılık gösteren ara yüzler görürler. Çünkü, her bir kontrolörün tipi farklıdır, bu da
her birinin farklı yazılımları kullanmasına neden olur. Yazılım, bir kontrolöre söyler,
komutları verir ve gelen yanıtları kabul eder. Bu yazılıma aygıt sürücüsü de denir. Her
bir kontrolör imalatçısı her işletim sistemi için sürücü sağlamalıdır. Bu nedenle
örneğin, bir tarayıcı Win98, Windows 2000 ve Unix için sürücüleri ile birlikte
gelmelidir.
Aygıtı kullanabilmek için sürücü işletim sisteminde kurulu olmalıdır, böylece sürücü
kernel modda çalışabilir. Teorik olarak, kernel modun dışında da çalışabilir, fakat bir
kaç sistem bunu yapabilir. Kernel'ın içerisine sürücüyü yerleştirmenin üç yolu vardır.
Birinci yol, sistem boot edildiği zaman kernel ile sürücüyü birbirine bağlamaktır.
Birçok UNIX sistemi bu şekilde çalışır.
İkinci yol sistem yeniden boot edilirken ihtiyaç duyulan sürücünün işletim sistemi
dosyasına giriş yapılarak bildirilmesidir. Boot ederken işletim sistemi sürücüleri
arayarak bulur ve onları yükler. Windows bu şekilde çalışır. Yeniden boot etmeye
ihtiyaç duyulmaksızın, sürücüleri çok hızlı bir biçimde yükler ve sistem çalışıyorken
yeni sürücüleri kullanan yol işletim sistemleri için üçüncü yoldur. Bu yol nadir olarak
kullanılır, fakat, şimdi çok daha fazla kullanılmaya başlanmıştır. Takılabilir aygıtlar
USB ve IEEE 1394 aygıtları gibi genellikle dinamik olarak yüklenen sürücülere
ihtiyaç duyarlar.
Her kontrolör, aygıt sürücüsü ile iletişim kurmak için küçük kaydediciler kullanırlar.
Örneğin, çok küçük bir disk kontrolörü disk adreslerini, bellek adreslerini, sektör
sayılarını ve okuma veya yazma işlemlerini belirtebilmek için kaydedicilere
sahiptirler. Kontrolör, işletim sisteminden bir komut alarak harekete geçer, sonra
kontrolör sürücü kaydedicisinin içerisine uygun değerleri değiştirerek yazar.
Bazı bilgisayarlarda, aygıt kaydediciler işletim sisteminin adres alanının içerisine
dökülürler, böylece onlar sıradan bellek bilgilerini okuyabilir ve yazabilirler. Bu tip
bilgisayarlarda, özel giriş-çıkış komutlarına ihtiyaç duyulmaz. Diğer bilgisayarlarda
aygıt kaydedicilerin her biri, port adresiyle birlikte özel giriş-çıkış port alanına
yerleştirilirler. Bu makinalarda kaydedicilere okumak ve yazmak için sürücülere özel
in ve out komutlarının kernel modda kullanılabilmesine izin verilir. Her iki sistem de
oldukça geniş bir kullanım ağına sahiptir.
Giriş ve çıkış üç farklı yolla yapılabilir. En basit metotta, bir kullanıcı programı sistem
çağrısı gönderir, kernel bu sistem çağrısını sürücüye uygun bir prosedür çağrısına
dönüştürür. Daha sonra sürücü, giriş / çıkış işlemlerini başlatır. Giriş-çıkışın
yüklenmesi tamamlandıktan sonra, sürücü ihtiyaç duyulan yere veriyi yerleştirir ve
geri döner. İşletim sistemi sonra kontrolü çağırana döndürür. Bu metot meşgul
bekliyor diye adlandırılır ve sürücünün işi bitinceye kadar CPU’ya bağlı kalması
dezavantajına sahiptir.
Sürücü için ikinci metot aygıtı çalıştırmak ve işlem sona erdiğinde bir kesme
vermektir. Burada sürücü bir değer döndürür. İşletim sistemi, eğer diğer bir işi
yapmaya ihtiyaç duyarsa o zaman arayanı engeller. Kontrolör transferin sonlanmasıyla
birlikte, bir kesme işareti meydana getirir.
Giriş-çıkış işlemlerini gerçekleştirmek için üçüncü yol özel DMA (Direct Memory
Access) chipini kullanmaktır. Bu çip, işlemci araya girmeden bellek ve birkaç
kontrolör arasındaki bit akışını kontrol eder.
3.4. Yollar :
Orijinal IBM bilgisayarlarda ve minibilgisayarlarda yıllarca aşağıdaki organizasyon
kullanılmıştır. Bununla birlikte, işlemciler ve bellekler gibi yüksek hız gerektiren
elemanlarda bu tekli yollar bütün bu trafikte bir hayli zorlanarak tıkanmaktadırlar.
Sonuç olarak hızlı I/O aygıtları ve işlemci ile bellek arasındaki trafik için yeni yollar
eklendi. Bu gelişimin bir sonucu olarak bir sonraki sayfadaki şekilde gösterilen
Pentium sistemleri geliştirilmiştir.
Bu sistem her biri farklı veri transfer hızlarına ve fonksiyonlarına sahip sekiz tane yola
sahiptir. İşletim sistemi bütün bunların hepsinin konfigürasyon ve yönetimi için
bunların farkında olmalıdır. Orijinal IBM PC’de iki ana yol vardır: ISA yolu ve onun
takipçisi olan PCI yolu. ISA yolu, orijinal IBM PC/AT kasalarda 8.33 Mhz hızında
çalışır ve aynı anda 2 byte veri transferi yapabilir, maksimum hızı saniyede 16.67
Mb’dır.
Şekil - Bir Pentium Sisteminin Yapısı
PCI yolu Intel
tarafından ISA yolunun
halefi olarak
geliştirilmiştir. PCI
yolu 66 Mhz hızında
çalışır ve saniyede 8
byte veri transferi
yapar. Şimdi çok
yüksek hızlı I/O
kartları kullanılıyor.
Hatta bazı Intel olmayan bilgisayarlar onlar için kullanılabilir I/O kartlarının büyük
numaraları nedeniyle PCI yolu kullanırlar.Bu konfigürasyonda, işlemci yerel lokal
yolun üzerinden PCI köprüsüne söyler, ve PCI köprüsü belleğe ayrılmış yol üzerinden
belleğe komutu söyler, bu sistem genelde 100 mhz hızında çalışır. Pentium sistemler
cache yolları ile işlemciye bağlanmış, chipin üzerindeki cache 1 ve chipin uzağında
çok daha büyük cache 2 belleğe sahiptir.Ek olarak, bu sistem üç tane uzmanlaşmış veri
yolu içerir: IDE, USB ve SCSI. IDE yolu, sisteme disk ve CD-ROM gibi ikincil
aygıtları takmak (bağlamak) içindir. IDE yolu, PC/AT kasalarda disk kontrol
arabiriminin doğal bir sonucudur ve şu anda hemen hemen tüm Pentium tabanlı
sistemler için hard diskler ve cd-rom’lar IDE yollarını kullanırlar.
Bu sistem PCI ve ISA yollarına ek olarak IDE, USB ve SCSI gibi üç özel yola daha
sahiptir. IDE yolu, sisteme CD-ROM'lar ve diskler gibi ikincil aygıtları bağlamak için
kullanılırlar. Bu yol, PC/AT kasalarda disk kontrol arabiriminin gelişmesinin bir
sonucudur ve şu anda hemen hemen tüm Pentium tabanlı sistemler için hard diskler ve
CD-ROM'lar IDE yollarını kullanırlar.
USB (Universal Serial Bus), bilgisayara klavye ve mouse gibi yavaş olan tüm I/O
aygıtları bağlamak için geliştirildi. USB dört küçük konnektör kullanır, bunların ikisi
USB aygıta elektrik gücü sağlar.USB saniyede toplam 1,5 MB veri yükleyerek
tutabilir. Tüm USB aygıtları tek bir USB aygıt sürücünü paylaşırlar, her bir yeni USB
aygıt için yeni bir sürücü yüklemeye ihtiyaç yoktur. Bu nedenle, USB aygıtları
yeniden boot etme olmaksızın bilgisayara eklenebilir.
SCSI, hızlı diskler, tarayıcılar ve büyük bant genişliğine ihtiyaç duyan diğer aygıtlar
için tasarlanmış, yüksek performans sağlayan yoldur. Saniyede 160 MB’a kadar
çalışabilirler. SCSI’ler geliştirildiğinden bu yana Macintosh sistemlerde ve ayrıca
popüler UNIX sistemleri ile bazı Pentium tabanlı sistemlerde görüldüler.
Şekilde görülmeyen diğer bir veriyolu IEEE 1394'tür. IEEE 1394, seri bir yoldur fakat
saniyede 50 MB'a kadar veri transferleri için tasarlanmıştır. Bilgisayara dijital aygıtları
ve multimedya aygıtlara benzer aygıtları bağlamak için çok kullanışlıdır. SCSI ve
IEEE 1394, USB’nin gelişmesiyle birlikte daha hızlı versiyonlar için rekabet ediyorlar.
Bu tip çevre birimleriyle çalışmak için, işletim sistemi onların nerede olduğunu ve
nasıl konfigüre edildiğini bilmelidir. Bu ihtiyaç, ilk olarak Apple Macintosh'un
geliştirdiği sistem örnek alınarak Intel ve Microsoft tarafından Tak ve Çalıştır (Plug
and Play) adı verilen PC sistemi geliştirilmesine yol açtı. Tak ve Çalıştır’dan önce her
bir I/O cardı, onun I/O kaydedicileri için sabit adresler ve değişmez kesme isteklerine
sahipti. Örneğin klavye kesme 1'di ve 0*60 ile 0*64 arasındaki I/O adresini kullanırdı.
Kullanıcı, bir ses kartı ve bir modem satın aldığında ve bunların her ikisini
kullandığında kesme 4’ü kullandığı zaman, bir takım zorluklar ortaya çıkacaktır. Ses
kartı ve modem çakışacaklardır ve birlikte çalışamayacaklardır. Çözüm yolu, her I/O
kartı için DIP anahtarları veya jumperlar kullanmaktır, böylece kullanıcı sisteminde
herhangi bir aygıt diğerleriyle çakışmadan çalışabilecektir.
Tak ve çalıştır I/O aygıtları hakkında otomatik olarak bilgi toplayan bir sisteme
sahiptir, merkezi olarak I/O adresleri ve kesme türleri aygıtlar arasında paylaştırılır ve
sonra her bir karta onun numarasını kullanarak ne yapacağını söyler. Çok kısa olarak,
tak ve çalıştır Pentium’un yolundan giderek onun gibi çalışmaktadır. Her Pentium
bilgisayar bir anakartta sahiptir. Anakart üzerinde BIOS diye adlandırılan bir program
bulunur. BIOS, klavyeden okuma işlemi, ekrana yazma işlemlerinin de olduğu diğer
düşük seviyeli I/O yazılımlarını içeren bir programdır. Şimdilerde, BIOS değişken
olmayan flash RAM’de tutulmaktadır, fakat BIOS’ta bir virüs bulunduğunda işletim
sistemi tarafından update edilebilir.
Bilgisayar boot edildiği zaman, BIOS çalıştırılır. BIOS ilk olarak, ne kadar RAM’in
hazır olduğunu ve klavye ve diğer temel aygıtların kurulu olup olmadığını ve doğru
olarak yanıt verip vermediğini kontrol eder. ISA ve PCI veri yolları tarafından tüm
aygıtlar taranarak bulunanlar birbirine bağlanır ve BIOS onları çalıştırır. Bu aygıtların
bazıları tak ve çalıştırdan daha önce geliştirilmişlerdir ve sabit kesme seviyelerine ve
I/O adreslerine sahiptir. Bu aygıtlar kaydedildikten sonra, tak ve çalıştır aygıtları da
kaydedilerek yükleme tamamlanır. BIOS, CMOS bellekte saklanan çalışan aygıtların
bir listesini kullanarak hangi aygıttan boot edileceğini belirler. Kullanıcı sistem boot
edildikten sonra bir BIOS programını kullanarak bu listedeki sıralamayı değiştirebilir.
Tipik olarak, bu girişim floppy diskten boot etme şeklinde olacaktır. Eğer bunu
başaramazsa CDROM denenir. Eğer ne floopy ne de CDROM’dan hiçbiri olmazsa,
sistem hard diskten boot edilir. Boot aygıtından birinci sektör belleğe okunarak
çalıştırılır. Bu sektör hangi bölümün aktif olduğuna karar vermek için boot kaydının
sonundaki tabloyu inceleyen bir programı içermektedir.Sonra bu bölümden ikincil
boot yükleyicisi okunur. Bu yükleyici aktif bölümden işletim sistemine okur ve işletim
sistemini başlatır.
İşletim sistemi BIOS’un denetlemesinden sonra konfigürasyon bilgilerini alır. Her bir
aygıt için, işletim sistemi eğer o aygıtın aygıt sürücüsüne sahip olup olmadığını
kontrol eder. Değilse, kullanıcıya sürücüyü içeren bir disket ya da CDROM takmasını
söyler. İşletim sistemi tüm aygıtların aygıt sürücülerine sahip olduğu zaman, onları
kernel’ın içerisine yükler. Sonra işletim sistemi tablosunu başlangıç durumuna getirir,
arka planda ihtiyaç duyulan işlemleri oluşturur ve terminaller için GUI veya bir login
programıyla sistemi başlatır.
İŞLETİM SİSTEMLERİ KAVRAMLARI
4.1. İşlemler
İşlem, tüm işletim sistemlerinde çok önemli bir kavramdır. İşlem, basit anlamıyla
çalışmakta olan bir programdır. Her işlem, işletim sisteminin adres alanıyla ilişkilidir.
Adres alanı, çalıştırılabilir programları, programların verilerini ve yığınlarını
içermektedir. Her bir işlem ayrıca programı çalıştırmak için ihtiyaç duyulan tüm diğer
bilgiler ve program sayacı, yığın göstergesi ve diğer donanım kaydedicileriyle de
ilişkilidir.
Periyodik olarak, işletim sistemi çalışan bir işlemi durdurmak ve diğer bir işlemi
çalıştırmak için karar vermektedir. Bir işlem geçici olarak durdurulduğu zaman, işlem
durdurulduğunda sahip olduğu durumda doğru bir şekilde yeniden başlatılmalıdır.
Bunun anlamı işlem hakkındaki tüm bilgiler erteleme esnasında doğru bir şekilde
kaydedilmelidir. Örneğin, işlem aynı anda okumak için birkaç dosyaya sahip olabilir.
Bu dosyaların her biri bulundukları pozisyonu bir işaretçi ile bildirir. İşlem geçici
olarak durdurulduğu zaman, tüm bu işaretçiler kaydedilmelidir. Bir çok işletim
sisteminde, her bir işlem hakkındaki tüm bu bilgiler, onun kendi adres alanından başka
işlem tablosu diye adlandırılan tabloda saklanmaktadır.
Askıya alınan bir işlem, genelde core image olarak adlandırılan işlemin adres alanı ve
üzerinde işlemin kaydedicilerini ve diğer bilgilerini tutan işlem tablo girişini
içermektedir.
Önemli bir işlem yönetimi sistem çağrısı, işlemin başlatılması ve sonlandırılmasıyla
ilgilidir. Bir örnek üzerinde düşünelim. Bir işlem, terminalden komut yorumlayıcısı
veya shell komutlarını okur. Kullanıcı yalnıza programın derlenmesini isteyen bir
komut yazar. Shell bu komuttan sonra, yeni bir işlem oluşturacak ve derleyicide bunu
çalıştıracaktır. İşlemin derlenmesi sona erdiğinde, işlem kendisini sonlandırmak için
bir sistem çağrısını çalıştırır.
Bir işlem, bir veya daha çok sayıda child (çocuk) işlem olarak adlandırılan işlemler
oluşturabilir. Diğer işlem sistem çağrıları, daha fazla bellek isteği ve çocuk işlemin
sonlandırılması için beklemek gibi işler için kullanılabilmektedir.
Bazen, çalışan bir işleme bilgi iletmeye gereksinim duyulur. Örneğin, bir işlem farklı
bir bilgisayardaki işlemle bir bilgisayar ağı üzerinden uzaktaki işleme bir mesaj
yollayarak iletişim kurar.
.2. Kilitlenmeler :
İki veya daha fazla işlem birbirleriyle karşılıklı etkileşime girdiklerinde bazen
içerisinden kurtulamayacakları bir duruma girerler. Bu gibi bir durum kilitlenme
olarak adlandırılır.
Kilitlenmeler,
herkesin çok iyi
bildiği trafikteki
kilitlenme örneğiyle
açıklanabilir.
Yandaki şekil
üzerinde düşünelim.
Burada görüldüğü gibi dört tane otobüs bir kavşağa yaklaşıyor. Her birinin arkasında
şekilde görülmeyen çok sayıda otobüs bulunmakta. Kötü bir şansın da yardımıyla bu
dört otobüs aynı anda kavşağa varabilir. Bu durumda otobüsler çıkmaza girer, çünkü
onların ileriye gidebilme ihtimalleri yoktur. Diğer otobüsler nedeniyle arkaya doğru da
gidemezler. Dışarıya çıkacak herhangi bir yol yoktur.
Buna benzer bir durum bilgisayarlarda da yaşanabilir. Örneğin iki işlem aynı anda aynı
veriyi elde etmek isteyebilir. Bu durumda tıpkı trafikteki çakışma gibi bir kilitlenme
meydana gelecektir ve bilgisayar bu durumdan herhangi bir yere kıpırdayamacaktır.
4.3. Bellek Yönetimi :
Her bilgisayar, çalışan programları tutmak için kullandığı bir miktar ana belleğe
sahiptir. Çok basit işletim sistemlerinde bellekte aynı anda sadece bir programın
bulunmasına izin verilir. İkinci bir programı çalıştırmak için, bellekte bulunan ilk
program silinmeli, ilk programdan boşalan yere ikinci program yüklenmelidir.
Çok gelişmiş işletim sistemlerinde aynı anda bellekte çok sayıda programın
bulunmasına izin verilir. Bu programları diğerlerinin etkisinden korumak için bir
koruma mekanizmasına ihtiyaç duyulur. İşletim sistemi tarafından kontrol edilen bu
mekanizma donanımda mutlaka bulunmalıdır.
Normal olarak her işlem, tipik olarak 0. adresten başlayarak yukarıya doğru giden bir
adres alanını kullanabilmektedir. Bu basit durumda, bir işlemin sahip olduğu
maksimum adres alanının büyüklüğü ana bellekten daha azdır. Bu yolla, bir işlem
adres alanının tamamını kullanabilir ve ana bellekte işlem için yeterli bellek alanı
olacaktır.
Bununla birlikte, birçok bilgisayarlarda adresler 232 , 264 adres veren 32 veya 64
bitliktir. Eğer bir işlem bilgisayarın sahip olduğu ana bellek alanından daha fazla
belleğe ihtiyacı varsa bu durumda ne yapmalıdır ?. İlk bilgisayarlarda bunun bir
çözüm yolu yoktu. Günümüzde bu sorunu çözen teknik sanal bellek olarak adlandırılır.
Bellek yönetimi ile ilgili daha geniş bilgi ilerde verilecektir.
4.4. Giriş / Çıkış :
Tüm bilgisayarlar girdi elde etmek ve çıkış sağlamak için fiziksel aygıtlara sahiptir.
Tüm bunlardan sonra, eğer kullanıcılar bilgisayara neyin yapılacak olduğunu ve
istenen çalışma yapıldıktan sonra sonuçları alınamasaydı ne olacaktı?. Aralarında
klavye, monitör, yazıcının da olduğu birçok giriş – çıkış aygıt çeşitleri vardır. Bu
aygıtlar işletim sistemi tarafından yönetilmektedir. Sonuç olarak her işletim sistemi
I/O aygıtlarını yönetmek için I/O alt sistemlerine sahiptir. I/O yazılımlarının bazıları
bağımsız aygıtlardır.
4.5. Dosyalar :
Diğer bir önemli kavram neredeyse tüm işletim sistemleri tarafından kullanılan dosya
sistemidir. İşletim sisteminin önemli bir fonksiyonu, diskler ve I/O aygıtlarının
özelliklerini saklamak ve onları güzel bir şekilde programcıya sunmaktır. Sistem
çağrılarına açıkça dosya oluşturmak, dosya silmek, dosya okumak ve dosyalara
yazmak için ihtiyaç duyulur. Bir dosya okunmadan önce diskte yeri öğrenilmeli ve
açılmalıdır, okunduktan sonra kapatılmalıdır, sistem çağrıları bu şeylerin yapılmasını
sağlar.
Birçok işletim sistemi dosyalara bir yerde korumak için dosya gruplarının bir arada
bulunduğu bir yol olan klasör (directory) düşüncesine sahiptir. Directory oluşturmak
ve silmek için sistem çağrılarına ihtiyaç duyulur. Sistem çağrıları aynı zamanda
directory’de var olan dosyaları getirir ve directory’den dosya siler. Directory girişleri
dosyalar veya diğer directorylerden biri olabilir.
İşlem ve dosya hiyerarşisinin her ikisi de ağaç şeklinde organize edilmiştir, ancak bu
benzerlik orada kalmaktadır. Dosya hiyerarşileri genellikle dört, beş hatta daha çok
dallanmalara sahipken işlem hiyerarşileri genellikle çok fazla dallanmaya sahip olmaz.
Directory hiyerarşileri yıllarca varolabilirken, işlem hiyerarşileri tipik olarak
çoğunlukla genelde birkaç dakikadır. Ayrıca işlemler ve dosyalar için sahiplik ve
koruma da farklı olmaktadır. Tipik olarak, sadece bir ana işlemi ya da bir alt işlem
olan girişi kontrol edebilir, fakat mekanizmalar hemen hemen tüm dosyaları
kullanmaya izin verir ve directoryler daha geniş bir grup tarafından kullanıldığından
okunur.
4.6. Güvenlik :
Bilgisayarlar kullanıcılar korumak istedikleri çok büyük miktarlarda veri
içermektedirler. Bu bilgi, bir elektronik posta, vergi iadeleri ve daha bir çok şeyi
içerebilir. Dosyalar bazında sistem güvenliğini sağlamak işletim sisteminin görevleri
arasındadır. Örneğin dosyalara yalnızca izin verilen kullanıcıların erişmesini işletim
sistemi sağlamalıdır.
Basit bir örnek olarak, güvenliğin nasıl sağlandığı hakkında bir fikir elde etmek için
UNIX işletim sistemini ele alalım. UNIX’te dosyalar, her bir dosyaya 9 bitlik koruma
kodu vererek korunur. Bu koruma kodu, üç farklı bit alanından meydana gelir, biri
kullanıcının kendisi, bir diğeri kullanıcı grubunun diğer üyeleri ve geri kalanlar için
ayrılmış kod. Her bir alan giriş, okuma ve yazma için birer bite sahiptir. Bu üç bit rwx
biti olarak da bilinir. Örneğin koruma kodu rwxr-x- - x ise bunun anlamı; kullanıcı
dosyaları okuyabilir, yazabilir veya çalıştırabilir, diğer grup üyeleri okuyabilir ve
çalıştırabilir ama yazamaz, ve geri kalanlar ise sadece çalıştırabilir. Bir directory için x
işareti arama izninin olduğunu gösterir. Bir kısa çizgini anlamı ise uygun izin yoktur.
4.7. Shell :
İşletim sistemi sistem çağrılarını gerçekleştiren kodlardır. Editörler, derleyiciler,
toplayıcılar, bağlayıcılar ve komut yorumlayıcılar çok önemli ve faydalı olsalar da
işletim sisteminin kesinlikle bir parçası değildirler. Bu bölümde kabuk olarak
adlandırılan UNIX’in komut yorumlayıcısına kısaca bir değineceğiz. İşletim
sisteminin bir parçası olmamasına rağmen, kabuk birçok işletim sistemi özelliğini
kullanır ve böylece sistem çağrılarının nasıl kullanıldığının güzel bir örneğidir. Kabuk
ayrıca, kullanıcı bir grafik arabirimi kullanmadıkça terminalde bulunan bir kullanıcı ve
işletim sistemi arasındaki ilk arayüzdür. Birçok kabukta, sh, csh, ksh ve bash vardır.
Herhangi bir kullanıcı sisteme giriş yaptığı zaman, kabuk çalıştırılır.
Herhangi bir kullanıcı sisteme giriş yaptığında Shell çalıştırılır. Shell standart giriş ve
çıkış terminallerine sahiptir. Shell, bir dolar işareti gibi bir karakterle, komutu kabul
etmeyi beklediğini gösteren bir prompt’u yazarak dışarıdan çalıştırır. Eğer kullanıcı
örneğin date yazarsa, Shell bir child işlem oluşturur ve bir child işlem olarak date
programını çalıştırır. Child işlem çalıştığı zaman, onu sonlandırmak için bekler. Child
sona erdiği zaman, Shell tekrar prompt’u yazar ve bir sonraki girilen komutu okumaya
çalışır.
4.8. Özet
Bilgisayar bilimi, birçok alan gibi, teknolojiyle birlikte ilerledi. Eski Romalılar
arabasızlık çektiklerinden dolayı yürümeyi çok severlerdi. Çünkü onlar arabanın nasıl
yapılacağını bilmiyorlardı. PC’ler yoktu, çünkü milyonlarca insan bir bilgisayara sahip
olma düşüncelerini bir yere kapatmışlardı, fakat şimdi onların bir bilgisayarı ucuza mal
etmeleri mümkündür. Çoğunlukla teknolojinin ne kadar fazla bizim sistemler
görüşümüzü etkilediğini unuturuz ve zamandan zamana bu değerler farklılaşır.
Özellikle, bilgisayar teknolojide eskimiş fikirleri değiştirir ve çabucak onları kaybeder.
Bununla beraber, başka bir değişim yeniden eskiye dönüş olabilmektedir. Bu gerçek,
sistemin farklı parçalarının performansıyla ilgili bir değişim yapıldığında doğru
olacaktır. Örneğin, işlemciler belleklerden çok daha hızlı olduğu zaman, cache
bellekler yavaş belleğe kadar hızlı ulaşmada önemli oldular. Eğer yeni bellek
teknolojileri birkaç dönem içinde işlemcilerden daha hızlı olurlarsa, cache bellekler
ortadan kaybolacaktır. Ve eğer yeni işlemci teknolojisi onları yeniden belleklerden
daha hızlı yaparlarsa, cache bellekler yeniden ortaya çıkacaklardır. Biyolojide, soyun
tükenmesi sonsuza kadardır, fakat bilgisayar biliminde, bazen sadece birkaç yıldır.
İlk bilgisayarlar çok ağır bir komut setine sahipti. Bu komutlar donanım tarafından
doğrudan çalıştırılırdı ve değiştirilemezdi. Daha sonra yazılımda yer alan komutların
alttaki yorumlayıcıda icra edildiği mikro programlama geliştirildi. Hardwired çalışma
eskimiş oldu. Ondan sonra RISC bilgisayarlar geliştirildi ve mikro programlama
eskidi, çünkü doğrudan çalıştırma daha hızlıydı. Şimdi yeniden Java uygulamaları
formunda yorumlamanın yeniden güçlendiğini görüyoruz. Çalışma hızı çoğu zaman
önemli değildir, çünkü ağ için bekleme değil yönetmek daha önemlidir.
SİSTEM ÇAĞRILARI
5.1. Sistem Çağrıları
İşletim sistemi ile kullanıcı programları arasında, işletim sistemi tarafından sağlanan
sistem çağrıları aracılığıyla bir arayüz tanımlanır. İşletim sisteminin gerçekte ne
yaptığını anlamak için, bu arayüzü açıkça incelememiz gerekir. Sistem çağrıları işletim
sisteminden işletim sistemine farklı arayüzler kullanabilir.
Bu bölümde UNIX işletim sisteminde kullanılmakta olan POSIX sistem çağrılarından
bahsedeceğiz. POSIX’in dışında System V, BSD, Linux, MINIX gibi daha birçok
modern
işletim
sistemleri
detay
farklılıkları
dışında
benzer
fonksiyonları
gerçekleştirirler. Bir sistem çağrısı yapmanın gerçek mekaniği iyi bir makineye
bağlıdır ve çoğunlukla çağrılar assembly kodunda belirtilmelidir. Assembly dilinin
haricinde C programlarından ve buna benzer diğer dillerden de sistem çağrıları
yapmak mümkündür.
Sistem çağrıları bir sonraki işlemi akılda tutmak için çok yararlıdır. Herhangi bir tek
işlemcili bilgisayar aynı anda sadece bir komut çalıştırabilir. Eğer kullanıcı modunda
bir kullanıcı programı bir işlem gerçekleştiriyorsa ve bir dosyadan veri okuma gibi bir
sistem hizmetine gereksinim duyarsa, trap komutunu veya kontrolü işletim sistemine
devretmek için bir sistem çağrısını çalıştırmak zorundadır. İşletim sistemi sonra sistem
çağrısının parametrelerini gözden geçirerek işlemin neyi istediğini anlar. Daha sonra
sistem çağrısı gerçekleştirilir ve kontrol bir sonraki sistem çağrısına döndürülür. Bir
sistem çağrısı yapmak özel bir prosedür çağrısı yapmak gibidir, aradaki fark sadece
sistem çağrıları kernel’a girer, prosedür çağrıları ise giremez.
Bir sistem çağrısı üç tane parametreye sahiptir : birincisi dosyayı bildirir, ikincisi
buffer belleğe dosyanın yerini bildirir ve üçüncüsü ise verinin kaç byte uzunluğa sahip
olduğunu bildirir.
C programından bir sistem
çağrısı
aşağıdaki
şekilde
yapılabilir :
Count
=
read(fd,
buffer, nbytes)
Eğer sistem çağrısı yanlış bir
parametre ya da disk hatası
nedeniyle
çalıştırılamıyorsa,
sayaç ( count ) -1’e ayarlanır
ve hata numarası errno global
değişkenine yerleştirilir. Programlar, eğer bir hata meydana geldiyse bu hatayı görmek
için her zaman sistem çağrılarının sonuçlarını kontrol etmelidirler.
Sistem çağrısı bir dizi adımlarla gerçekleştirilir. Read sistem çağrısını gerçekleştirmek
için yapılması gereken ilk şey şekilde de 1 ile 3. adımlar arasında görüldüğü gibi stack
üzerine parametreleri yerleştirmektir. Birinci ve üçüncü parametreler bir değerdir,
fakat ikinci parametre buffer’ın adresidir, içeriği değildir. 4. adımda kütüphane
prosedürüne asıl sistem çağrısı gelir. Bu komut tüm prosedür çağrılarında kullanılan
normal bir prosedür çağrısıdır.
İmkan dahilinde assembly dilinde yazılan kütüphane prosedürü, tipik olarak işletim
sisteminin kaydedici gibi olmasını istediği bir yere sistem çağrı numarasını
yerleştirir(5.Adım). Daha sonra, işletim sistemi kullanıcı moddan kernel moda geçmek
için TRAP komutunu çalıştırır ve kernel içerisinde belirlenmiş adresler üzerinde
çalışma başlatılır (6.Adım).
Kernel sistem çağrı numarasını inceler ve sonra doğru sistem çağrısını gönderir
(7.Adım). Burada sistem çağrısı çalışır (8.Adım). Sistem çağrısının çalışması sona
erdiğinde, kontrol kullanıcı-alan kütüphane prosedürüne dönebilir (9.Adım). Bu
prosedür daha sonra her zaman prosedür çağrılarının dönmesi gibi kullanıcı programa
döner (10. Adım). İşin sona ermesi için, kullanıcı programı stack’i boşaltmalıdır
(11.Adım). POSIX, 100 civarında prosedür çağrısına sahiptir. Bu çağrılar, işlem
yönetimi, dosya yönetimi, dizin ve dosya sistem yönetimi ve çeşitli çağrılar olarak
gruplandırılabilir.
İşlem Yönetimi Sistem Çağrıları
Çağrı
Tanımı
pid = fork ()
Ana işlemle hemen hemen aynı olan çocuk işlemi
oluşturur.
pid = waitpid
(pid,&statloc,options)
s = execve (name, argv,
environp)
Bir çocuk işlemi sonlandırmak için bekler.
Çalışan işlemi sonlandırır ve başlangıç durumuna
döner.
exit(status)
Dosya Yönetimi Sistem Çağrıları
Çağrı
Tanımı
fd = open (file, how,......)
s = close (fd)
n = read (fd,buffer,nbytes)
n = write (fd,buffer,nbytes)
position =
iseek(fd,offset,whence)
s = stat (name, &buf)
Bir dosyayı okuma, yazma ya da her ikisi için açar.
Açık olan bir dosyayı kapatır.
Buffer belleğin içerisine dosyadan veri okur.
Bir dosyanın içerisine buffer bellekten yazar.
Dosya işaretçisini taşır.
Bir dosyanın durum bilgisini alır.
Dizin ve Dosya Yönetimi Sistem Çağrıları
Çağrı
Tanımı
s = mkdir (name, mode)
s = rmdir (name)
Yeni bir dizin oluşturur.
Boş olan bir dizini siler.
Name2 adında yeni bir dosya oluşturur ve name1'e
bağlar.
Boş olan bir dizini siler.
s = link (name1, name2)
s = unlink (name)
s = mount (special, name,
Bir dosya sistemi ekler
flag)
s = unmount (special)
Bir dosya sistemi siler.
Çeşitli Sistem Çağrıları
Çağrı
Tanımı
s = chdir (name)
Aktif dizini değiştirir.
s = chmod (name,mode)
s = kill ( pid,signal)
seconds = time
(&seconds)
Dosyanın koruma bitini değiştirir.
İşleme bir sinyal gönderir.
Sistemin zamanını gösterir.
5.2. İşlem Yönetimi İçin Sistem Çağrıları :
Fork, UNIX’te yeni bir işlem oluşturmak için kullanılan sadece bir yoldur. Fork, tüm
dosya tanımlayıcıları ve kaydedicilerin dahil olduğu orijinal işlemin bir kopyasını
oluşturur. Fork’tan sonra, orijinal işlem ve kopyası (ana ve çocuk işlem) farklı yollara
giderler. Fork çağrısı boyunca hemen hemen tüm değişkenler aynı değerlere sahiptir,
fakat ana işlemin verileri child işlem oluşturmak için kopyalandığında, ana işlem veya
çocuk işlemde yapılan bir değişiklik diğerini etkilemeyecektir. Fork sistem çağrısı,
çocuk işlemde sıfır olan ve çocuk işlemin tanımlayıcısına veya ana işlemde PID
değerine sahip bir değer döndürür. PID kullanılarak değer döndürüldüğünde, biri ana
işlem ve diğeri de çocuk işlem olmak üzere iki işlem görülebilir. (Ana ve çocuk işlem)
Birçok durumda, bir fork çağrısından sonra, çocuk işlem ana işlemden farklı kodlar
çalıştırmak isteyecektir. Bu durumda shell, terminalden bir komut okur, bu sırada
çocuk işlem komutu çalıştırmak için bekler ve sonra çocuk işlem sona erdiğinde, shell
terminalden bir sonraki komutu okur. Çocuk işlemin sona ermesi için beklerken, ana
işlem sadece çocuk işlem sona erene kadar varolan waitpid sistem çağrısını çalıştırır.
Waitpid sistem çağrısı, ilk parametreyi -1’e ayarlayarak özel bir çocuk işlem veya
herhangi çocuk işlem için bekler. Waitpid çağrısı tamamlandığında, ikinci parametre
olan ve çocuk işlemin çıkış durumunu (normal veya normal olmayan sonlandırma ve
çıkış değeri) ayarlayacak olan statloc ile adres işaretlenir. Ayrıca üçüncü parametre
yoluyla bir takım seçeneklerde sağlanır.
Şimdi shell tarafından fork sistem çağrısının nasıl
kullanıldığında bakalım. Bir komut yazıldığında shell
yeni işlemi ikiye ayırır. (Çocuk ve ana işlem) Bu
çocuk işlem kullanıcı komutunu çalıştırmalıdır.
Çocuk işlem execve sistem çağrısını kullanarak bu komutunu çalıştırır.
Bir çok durumda execve sistem çağrısı genel olarak üç parametreye sahiptir:
çalıştırılacak dosyanın ismi, ikincisi işlem dizisi için bir işaretçi ve üçüncüsü de
bulunulan ortama ilişkin bir işaretçidir. Execve’nin genel formatı ;
s = execve
(name, argv, environp)
Bir başka işlem yönetimiyle ilgili sistem çağrısı exit’tir. Exit sadece bir parametreye
sahiptir ve bu parametre waitpid sistem çağrısındaki statloc komutu ile ana işleme
dönmeyi sağlayan çıkış durumudur.
UNIX işletim sisteminde işlemler belleği üç segmente bölmüşlerdir: text segment, data
segment ve stack segment. Şekilde de görüldüğü gibi data segment yukarıya doğru,
stack segment ise aşağıya doğru büyür. Bu ikisinin arasında kullanılmamış adres alanı
olan gap yer alır. Stack segment, ihtiyaç duyduğu için gap bölgesine doğru otomatik
olarak büyür, fakat data segmentinin genişlemesi brk denilen bir sistem çağrısıyla
yapılır.
5.3. Dosya Yönetimi Sistem Çağrıları :
Dosya sistemiyle ilgili olarak UNIX’te bir çok sistem çağrısı bulunmaktadır. Bu
bölümde biz tek dosyalarda çalışan sistem çağrılarına bakacağız.
Bir dosyayı okumak ya da onun üzerine yazmak için ilk önce dosya open çağrısı ile
açılmalıdır. Bu çağrı dosyanın doğrudan ismini verir ve sadece okuma, sadece yazma
veya her ikisini de sağlayan O_RONLY, O_WRONLY veya O_RDWR kodlarından
biri kullanılır. Yeni bir dosya oluşturmak için O_CREAT çağrısı kullanılır. Dosya
tanımlayıcısı geri dönerek, dosya okuma veya yazma için kullanılabilir. Daha sonra
dosya close komutuyla kapatılabilir. Close çağrısı açık olan bir dosya için dosya
tanımlayıcısı yapabilir.
Dosya yönetimi için sistem çağrılarının çoğunluğu okuma ve yazma için kullanılır.
Bunlardan en önemlileri de read ve write çağrılarıdır. Bu iki çağrı da benzer
parametrelere sahiptir. Burada read çağrısını biraz daha ayrıntılı olarak inceleyelim.
Birçok program dosya okumak ve yazma için kullanılmasına karşın, bazı uygulama
programları random olarak dosyanın herhangi bir parçasına girmek isterler. Her dosya
bir pointer ile ilişkilidir ki bu pointer dosyanın bulunduğu pozisyonu belirtmektedir.
Ardışık okuma olduğu zaman, pointer normal olarak bir sonraki byte’ı gösterecektir.
Iseek çağrısı, pointer pozisyonunun değerini değiştirir. Böylece dosyanın herhangi bir
yerindeki okuma ya da yazma işlemi başlatılabilir.
Lseek çağrısı üç tane parametreye sahiptir: birincisi dosya için dosya tanımlayıcısıdır,
ikinci olarak dosya pozisyonu ve üçüncü olarak dosyanın başlangıcı ile bulunulan
pozisyonu karşılaştırarak dosya sonu olup olmadığını anlar. Pointer değiştikten sonra,
dosyanın bulunduğu pozisyonu belirtmek için Iseek tarafından bir değer döndürülür.
UNIX her dosya için, dosya modunu (normal dosya, özel dosya, directory vb.),
boyutunu, son yapılan değişikliğin zamanını ve diğer bilgileri tutar. Birinci parametre
incelenecek dosyaları bildirir, ikinci parametre bilginin yerleştirildiği yeri bildiren
pointer’dır.
5.4. Directory Yönetimi İçin Sistem Çağrıları
Bu bölümde bir bütün olarak directory sisteminde yer alan bazı sistem çağrılarına
bakacağız. İlk olarak boş bir klasör oluşturmak için veya silmek için kullanılan mkdir
ve rmdir olmak üzere iki çağrı vardır. Bir sonraki çağrı ise link’tir. Link çağrısının
amacı farklı directorylerde bulunan iki veya daha çok isim altında gözüken dosyalara
izin verir. Tipik bir kullanımı ortak bir dosyayı paylaşmak için aynı programlama
grubunun üyelerine izin vermesidir. Onların her biri farklı isimler altında olması
mümkün olan kendi dizinlerinde gözüken dosyalara sahiptir. Paylaşma grubun her
üyesine özel bir kopya vermeye benzemez, çünkü paylaşılan bir dosyaya sahip
olmanın anlamı takımın üyelerinden herhangi birinin yaptığı değişikliğin anında
diğerlerine gözükmesidir. Bir dosyanın kopyası yapıldığı zaman, sonradan yapılan
değişiklikler bir diğer dosyayı etkilemez.
Şekil a’da durum bir link’in nasıl çalıştığı görülmektedir. Burada iki kullanıcı vardır,
ast ve jim, her biri birkaç dosyayla birlikte kendi directory’lerine sahiptir. Eğer ast
aşağıdaki sistem çağrısını içeren bir programı çalıştırırsa,
Link(“/usr/jim/memo”,“/usr/ast/note”);
Jim’in directory’sinde bulunan memo dosyası Ast’ın directory’si içindeki note ismi
altında girilir. Bundan sonra, /usr/jim/memo ve /usr/ast/note dosyaları aynı dosyalar
olacaktır. Bir ek bilgi olarak, kullanıcı dizinlerinin /usr, /user, /home veya başka
dizinlerde tutulup tutulmadığı yerel bir kullanıcı tarafından basitçe bir kararla yapılır.
UNIX’de her dosya tek bir numaraya sahiptir ki bu numara onu tanıtan i-numarasıdır.
Bu i-numarası her dosya başına, i-düğümlerinin bir tablosunu içeren indekslerdir.
Onun disk bloklarının bulunduğu dosyaya kimin sahip olduğunu söyler. Bir directory
bir çift eleman içeren basitçe bir dosyadır. UNIX’in ilk versiyonlarında, her bir
directory i-numarası için 2 – 16 byte ve isim için 14 byte’lık bir giriş vardır. Şekil a'da
mail 16 i-numarasına sahiptir. Link çağrısı basitçe var olan bir dosyanın i-numarasını
kullanarak, yeni bir isim girerek yeni bir directory oluşturur. Şekil b’de iki giriş aynı inumarasına sahiptir ve bu nedenle ikisi de aynı dosyadır. Eğer daha sonra unlink
sistem çağrısını kullanarak ikisinden biri silinirse diğeri kalır. Eğer her ikisi de
silinirse, UNIX diskte var olan dosya silindiği için herhangi bir dosya göremez.
Mount sistem çağrısı iki dosyayı bir dosya olarak birleştirmeye izin verir. Genel bir
durum root dosya sistemi genel komutların ve hard disk’te diğer çok kullanılan
komutların çalıştırılabilir versiyonlarını içermelidir. Kullanıcı bir disk yerleştirdiği
zaman floopy disk sürücüsündeki verileri okuyabilir.
5.5. Diğer Sistem Çağrıları :
Biz burada UNIX’de kullanılan dört sistem çağrısına daha göz atacağız. İlk çağrımız
chdir çağrısı. Bu çağrı, aktif directory’i değiştirmek için kullanılır. Bu sayede uzun
dosya isimleri yazmaksızın istenilen dosyaya kolayca ulaşılabilir.
UNIX’te her dosya koruma için bir moda sahiptir. Mod, kendisi, grup ve diğerleri için
okuma, yazma, çalıştırma bitlerine sahiptir. Chmod sistem çağrısı dosyanın modunu
değiştirmeyi gerçekleştirir. Örneğin, bir dosya sahibinden başka herkes için sadece
okunur yapılabilir.
Kill sistem çağrısı kullanıcılara ve kullanıcı işlemlerine sinyaller gönderen bir yoldur.
POSIX zamanla ilgili olan birkaç prosedür tanımlamıştır. Örneğin, zaman sadece aktif
zamanda saniyelerde ilerler. 32 bitlik bilgisayarlarda maksimum zaman değeri 2 32 -2
saniyedir. Bu değer 136 yılın biraz fazlasına denk gelir. Bu nedenle 2106 yılında, 32
bitlik UNIX sistemleri karışacak, meşhur Y2K problemi ortaya çıkacaktır. Eğer 32
bitlik bir UNIX sisteme sahipseniz, 2106 yılından önce 64 bitlik bir sisteme
geçmenizde fayda vardır.
5.6. Windows Win32 API Sistem Çağrıları :
Windows işletim sistemi de UNIX gibi birtakım sistem çağrılarına sahiptir.
UNIX’deki sistem çağrılarıyla aralarında neredeyse tam bir benzerlik vardır. Her iki
sistemde de aynı işlevi getiren çağrılar konunun sonundaki tabloda gösterilmektedir.
Microsoft Win32 API ( Uygulama Program Arayüzü )olarak adlandırılan işletim
sistemi hizmetlerinden faydalanmayı sağlayan bir prosedür grubu tanımladı. Bu
arayüz,
Windows
95’ten
bu
yana
tüm
Windows
versiyonları
tarafından
desteklenmekte. Aktif sistem çağrılarından arayüzün ayrılması yoluyla Microsoft,
çalışan programları geçersiz kılmadan gerçek sistem çağrıları değiştirme yeteneğine
sahiptir. Önceden kullanılamayan bir çok yeni çağrıya sahip olan Windows 2000’den
bu yana Win32’i neyin oluşturduğu biraz belirsizdir. Bu bölümde, Win32 Windows’un
tüm versiyonları tarafından desteklenen arayüzü ifade etmektedir.
Win32 API çağrılarının sayısı binlerle ifade edilecek kadar çoktur. Üstelik onların
birçoğu sistem çağrılarını isterlerken, çok sayıda işlem bütünüyle kullanıcı alanında
gerçekleştirilir. Sonuç olarak, Windows ile neyin bir sistem çağrısı olduğunu ve basit
bir kullanıcı-alan kütüphane çağrısı olduğunu görmek imkansızdır. (Bunlar kernel
tarafından yapılır). Gerçekte, neyin bir Windows çağrısı olduğu, Windows’un farklı
bir versiyonunda kullanıcı alanında yapılabilir.
Win32 API Windows’u , geometrik şekilleri, yazıları, fontları, kaydırma çubuklarını,
diyalog kutularını, menüleri ve diğer GUI özelliklerini yönetmek için çok sayıda
sistem çağrısına sahiptir. Şimdi bu çağrıların bir kısmına bakalım.
CreateProcess çağrısı yeni bir işlem oluşturur. UNIX’te execve ve fork çağrılarının
yaptığı işi yapar. Yeni oluşturulan bir işlemin özelliklerini bildirmek için birçok
parametreye sahiptir. Windows, UNIX’in sahip olduğu gibi ana ve çocuk işlem
kavramlarının bulunduğu bir işlem hiyerarşisine sahip değildir. Bir işlem
oluşturulduktan sonra, oluşturucu ve oluşan eşitlenir. WaitForSingleObject, bir olay
için beklemede kullanılır. Birçok olası olay için beklenebilir. Eğer parametre bir işlemi
açıkça bildirirse , o zaman arayan belirtilen işlemden çıkılması için bekler ki bunu da
ExitProcess çağrısı yapar.
Sonraki altı çağrı dosyalarda çalışır ve fonksiyonel olarak UNIX’in tam bir kopyası
olmasına rağmen, bu çağrılar parametrelerde ve ayrıntılarda farklıdır. Yine de,
dosyalar UNIX’de olduğu gibi çok iyi bir biçimde açılabilir, kapanabilir, okuyabilir ve
yazabilir. SetFilePointer ve GetFileAttributeEx çağrıları dosya pozisyonunu ayarlar
ve dosyanın bazı özelliklerini elde eder. Windows klasörlere sahiptir ve klasörler
CreateDirectory komutu ile oluşturulmuş ve RemoveDirectory ile silinir. Orada aktif
directory’nin bir bilgisi de vardır ve SetCurrentDirectory tarafından ayarlanır. Şu
andaki zaman GetLocalTime çağrısı kullanılarak elde edilir.
Win 32 arayüzünün UNIX’dekine benzer şekilde mounted dosya sistemleri, güvenlik
veya sinyallere dosyalarına bağlantıları bulunmamaktadır. Tabi ki ,Win32 özellikle
GUI yönetimi için UNIX’in sahip olmadığı çok fazla sayıda çağrıya sahiptir ve
Windows 2000 ayrıntılı güvenlik sistemine sahiptir.
UNIX ve WIN32 SİSTEM ÇAĞRILARI
UNIX Win32
Tanımı
fork
CreateProcess
Yeni bir işlem oluşturur.
waitpid WaitForSingleObject Bir işlemden çıkmak için bekleyebilir.
İşlem oluşturur. (CreateProcess = fork +
execve ( none )
execve)
exit
ExitProcess
Çalışmayı sona erdirir.
Bir dosya oluşturur ya da varolan bir dosyayı
open CreateFile
açar.
close CloseHandle
Dosyayı kapatır.
read
ReadFile
Dosyadan veri okur.
write WriteFile
Dosyaya veri yazar.
UNIX ve WIN32 SİSTEM ÇAĞRILARI
UNIX
Win32
Tanımı
Iseek
SetFilePointer
Dosya işaretçisini taşır.
stat
GetFileAttributesEx Çeşitli dosya özelliklerini alır.
mkdir
CreateDirectory
Yeni bir dizin oluşturur.
rmdir
RemoveDirectory
Boş olan bir dizini siler.
link
( none )
Win32 bu özelliği desteklemez.
unlink
DeleteFile
Varolan bir dosyayı siler.
mount
( none )
Win32 mount özelliğini desteklemez
unmount ( none )
Win32 unmount özelliğini desteklemez
chdir
SetCurrentDirectory Aktif dizini değiştirmek için kullanılır.
chmod
( none )
Win32, chmod özelliğini desteklemez.
(WinNT destekler)
kill
( none )
Win32, kill özelliğini desteklemez.
time
GetLocalTime
Zamanı verir.
İŞLETİM SİSTEMLERİNİN YAPISI
6.1. Monolitik Sistemler :
İşletim sistemleri, birçok prosedürün bir araya toplanması sonucunda meydana
gelmektedirler. Bu prosedürlerin her biri ihtiyaç olduğunda diğer prosedürlerin
herhangi bir çağrısı olabilmektedir. Bu teknik kullanıldığında, parametreler
bakımından iyi tanımlanmış bir arayüze sahip olan sistemde her prosedür, diğer
prosedürleri çağırabilir.
Bu yaklaşım kullanıldığında işletim sisteminin gerçek nesne programını inşa etmek
için ilk olarak prosedür içeren dosyalar derlenir ve sonra sistem bağlayıcısını
kullanarak onların tamamını birlikte tek bir nesne dosyasının içerisinde birleştirir.
Sistem çağrıları, parametreleri kullanarak işletim sisteminin isteklerini yerine getirir ve
daha sonra bir sonraki komutu çalıştırır. Bu komut, bilgisayarı kullanıcı moddan
kernel moda çevirir ve kontrolü işletim sistemine devreder. İşletim sistemi daha sonra
sistem çağrılarının getirdiği parametreleri alır ve hangi sistem çağrılarının
gerçekleştirileceğine karar verir. Son olarak işletim sistemi, bu çağrıları bir tablonun
içerisine indeksleyerek, ilgili prosedüre bir işaretçi gönderir ve sistem çağrısı
gerçekleştirilir. Bu organizasyon biçimi işletim sistemi için basit bir yapı önerir :
1. Ana program bir hizmet prosedürü ister.
2. Hizmet prosedürlerinin bir grubu sistem çağrılarını gerçekleştirir.
3. . Yararlı prosedürlerin bir grubu hizmet prosedürlerine yardım eder.
Bu modelde, her sistem çağrısının onunla ilgili olan bir prosedürü vardır. Faydalı
prosedürler, kullanıcı programlarından veri alma gibi çeşitli hizmet (servis)
prosedürlerinin ihtiyaç duyduğu işleri yaparlar. Prosedürlerin bu paylaşımı şekilde
görülmektedir.
6.2. Katmanlı Sistemler :
Monolitik sistemlerdeki şekli genellersek, işletim sistemleri katmanların hiyerarşisi
şeklinde organize edilmişlerdir. Bu düşüncedeki ilk sistem olan THE sistemi
Hollanda’daki Eindhoven Yüksek Okulunda 1968 senesinde E.W.Dijkstra ve onun
öğrencileri tarafından inşa edilerek yapıldı. THE sistemi bir Hollanda bilgisayarı için
geliştirilmiş basit bir batch sistemidir.
Katman
5
4
3
2
1
0
Fonksiyonu
Operatör
Kullanıcı programları
Giriş / çıkış yönetimi
Operatör – işlem haberleşmesi
Bellek yönetimi
İşlemcinin programları arasında paylaşımı ve çoklu programlama
Tabloda da görüldüğü gibi bu sistem altı katmana sahiptir. İlk katman olan 0.katman
bir kesme meydana geldiğinde ya da süre dolduğunda işlemler arasında geçiş yapmak
için işlemcinin ayrılmasıyla ilgilidir.
1. katman, bellek yönetimi ile ilgilidir. Bu katman işlemler için ana bellekte bir yer
ayırır ve işlem parçaları için ana belleğin bir parçası olmayan 512 K’lık bir bellek
kullanır. 1. katman yazılımı ihtiyaç duyulduğunda belleğin içerisinden gerekli sayfaları
getirme görevinin gerçekleştirir.
2. katman işlem ve operatör arasındaki haberleşmeyi sağlar. Bu katmanın yukarısında
her işlemin kendi operatör konsolu vardır.
3. katman giriş / çıkış aygıtlarının yönetimi ile ilgilidir. Bu katmanın yukarısında da
her bir işlem, aygıtları birçok özelliğiyle uğraşmak yerine, iyi tanımlanmış özelliklerle
giriş/çıkış aygıtlarıyla ilgilenir.
4. katman, kullanıcı programlarının bulunduğu yerdir. Kullanıcı programları işlem,
bellek, konsol veya giriş/çıkış yönetimi için endişelenmez.
5. katmanda ise sistem operatör işlemi gerçekleştirilir.
Katmanlama düşüncesinin daha fazla genelleşmiş bir biçimi MULTICS sistemlerde
görülmektedir. MULTICS sistemler, katmanların yerine, içerde olanları
dışarıdakilerden daha fazla ayrıcalığa sahip olduğu eş merkezli sistemler olarak
tanımlanır. Dış halkalarda yer alan bir prosedür, daha iç halkadaki bir prosedürü
çağırmak istediğinde, dış halkadaki prosedür, bir TRAP komutunun yaptığı gibi
çağrının gerçekleşmesine izin vermeden önce onun doğruluğu için parametreleri
dikkatli bir şekilde kontrol etmelidir. Yani bir sistem çağrısının yaptığını yapmalıdır.
Bu halka mekanizmasının avantajı, kullanıcı alt sistemlerinin yapısına kolaylıkla
ulaşılabilmesidir. Örneğin, bir profesör öğrencilerin yaptığı programları test etmek için
bir program yazabilir ve bu program n. halkada çalışırken, öğrenci programları n+1.
halkada çalışır, böylece öğrenciler yapmış oldukları hataları değiştiremezler.
6.3. Sanal Makinalar :
OS/360 işletim sisteminin ilk hali bir batch sistem uygulamasıydı. Bununla birlikte,
pek çok OS/360 sistemi kullanıcısı, zaman paylaşımına sahip olmak istedi. IBM bunu
göz önüne alarak, ilk zaman paylaşımlı işletim sistemi olan TSS/360’ı geliştirdi.
TSS/360’ın geliştirilmesi bir hayli uzun zaman aldı ve sona erdiğinde hem çok büyük,
hem de çok yavaş bir sistemdi. Bu yüzden yaklaşık 50 milyon $ harcandıktan sonra bu
sistemin geliştirilme çalışmalarından vazgeçildi. Sadece IBM’in Massachusets’deki
Cambridge Üniversitesindeki bilim merkezinde bu sistem üzerinde çalışmalar
yapılmaya devam edildi. Bu çalışmalar sonunda TSS/360 üzerinde köklü değişiklikler
yapılarak bugün mainframe bilgisayarlarda kullanılan işletim sistemleri geliştirildi.
Geliştirilen bu sistemin adı önce CP/CMS idi, fakat daha sonra VM/370 olarak
değiştirildi. VM/370, çoklu programlama ve uzatılmış makine sağlayan bir zaman
paylaşımlı sistem ile birlikte yalın donanımdan çok daha etkili bir arayüz
sağlamaktadır. VM/370 sisteminin özü iki fonksiyonda toplanmıştır.
Sistemin kalbi, sanal makine monitörü olarak bilinir. Sanal makine monitörü yalın
donanım üzerinde çalışır ve çoklu programlamayı yapar. VM/370 işletim sistemi, tüm
diğer işletim sistemlerine benzemezler, sanal makinalar dosyalar ve diğer özellikleri
kullanarak makineye erişemezler. Onun yerine, sanal makinalar donanımın bire bir
kopyasını elde ederek, gerçek makinanın sahip olduğu
kernel/kullanıcı mod,
giriş/çıkış, kesmeler ve diğer her şeyi içermektedirler.
Her sanal makine gerçek bir donanıma benzer, sanal makinaların her biri herhangi biri
işletim sistemi üzerinde çalışabilir. Farklı sanal makinalar, farklı işletim sistemlerinde
çalışabilirler. OS/360 işletim sistemi ailesinden gelen bazı sistemler,batch ya da
transaction sistemlerde de çalışabilirler, diğerleri ise zaman paylaşımlı sistem olan
CMS sisteminde çalışırlar.
CMS programı bir sistem çağrısını çalıştırdığı zaman, çağrı işletim sisteminin kendi
sanal makinesi üzerinde tuzağa düşürülür, böylece çağrı gerçek makinanın yerine sanal
makine üzerinde çalışacaktır. Daha sonra CMS programı, işletim sisteminin sanal
diskinde veya çağrının gerçekleştirilmesi için ihtiyaç duyulan yerde bulunanları okuma
için normal giriş/çıkış komutlarını gönderir. Bu giriş/çıkış komutları donanımın gerçek
bir parçası gibi hareket eden VM/370 tarafından kandırılır. Makineye erişim
sağlandığında çoklu programlama alanlara ayrılır ve bu alanların her biri basit, çok
esnek ve çok kolay bir kullanıma sahip olabilir.
Bir sanal makine düşüncesi bugünlerde çok yoğun bir şekilde farklı bir anlamda
kullanılmaktadır: Bir Pentium sistem üzerinde çalışan eski MSDOS programlarında.
Pentium işlemci ve bu işlemcinin yazılımı tasarlandığında, Intel ve Microsoft firmaları
yeni donanım üzerinde eski programların çalışması için büyük bir talep olacağını
anladılar. Bu nedenle, Intel firması Pentium işlemcide sanal 8086 modunu geliştirdi.
Bu modda, makine 16 bit adres hattı ile 1 MB’lık bellek sınırı ile 8086 işlemcilere
benzer.
Bu mod, Windows ve diğer işletim sistemleri tarafından eski MSDOS programlarını
çalıştırmak için kullanıldı. MSDOS programları sadece basit komutları çalıştırırlar ve
yalın donanım üzerinde çalışırlar. Bir MSDOS programı bir sistem çağrısı yapmak
istediğinde ya da doğrudan doğruya giriş/çıkış işlemleri yapmak istediğinde, sanal
makinede bir trap çağrısı meydana gelir.
Bu dizaynda iki durum mümkündür. Birinci durumda, MSDOS programının kendisi
sanal 8086’nın adres alanına yüklenir, böylece sanal makine monitörü gerçek bir 8086
işlemcide meydana geldiği gibi MSDOS programına yalnızca trap çağrısını yansıtır.
MSDOS daha sonra, giriş/çıkış komutlarını çalıştırmayı denediğinde, bu işlem 8086
sanal makinesi tarafından gerçekleştirilir ve tutulur.
Diğer durumda, sanal makine sadece ilk trap çağrısını tutar ve giriş/çıkış komutlarını
gerçekleştirir. Çünkü tüm MSDOS çağrılarının ne olduğunu bilir ve böylece her
trap’in ne yapacağını tahmin edebilir. Bu durum, ilk durumdan daha yalındır, çünkü
birinci durumdaki gibi program sanal makineye yüklenmez, sadece doğru bir şekilde
taklit edilir. Diğer yandan ikinci durum birinci duruma göre çok daha hızlıdır. Sanal
makine modunda çalışan MSDOS programlarının en önemli dezavantajı, kesme
yaparken önemli bir zaman kaybının yaşanmasıdır.
Bu yaklaşımlardan hiçbiri gerçek bir VM/370 sanal makinesi gibi değildir. VM370
sistemiyle, ,kendi sanal makinasında, VM370 üzerinde çalışması mümkündür Ancak
VM/370’in Pentium’la çalışması mümkün değildir, çünkü 8086 işlemcide çalışan
Windows versiyonu yoktur. En eski Windows versiyonunu çalıştırmak için bir 286
gerekir ki, o da bunu sağlayamaz.
Sanal makinaların farklı bir şekilde kullanıldığı diğer bir alan da çalışan Java
programları
içindir.
Sun
Microsystem
tarafından
Java
programlama
dili
geliştirildiğinde, aynı zamanda JVM (Java Virtual Machine) olarak adlandırılan java
sanal makinesi de geliştirildi. Java derleyicisi, JVM için kod üretir ve sonra bir JVM
yorumlayıcı yazılımı tarafından bu kodlar çalıştırılır. Bu yaklaşımın avantajı, JVM
yorumlayıcısına sahip herhangi bir bilgisayara internet üzerinden JVM kodlarının
gönderilebilmesidir. Eğer derleyici, SPARC veya herhangi bir Pentium programını
derlemiş olsa, SPARC ve Pentium programları kolayca gönderilip, çalıştırılmayabilir.
JVM kullanmanın diğer bir avantajı da, eğer yorumlayıcı önemsiz şeyler hariç, diğer
işleri tam olarak gerçekleştirdiğinde, gelen JVM programları güvenlik için kontrol
edilebilir ve sonra korumalı bölgede çalıştırılabilir. Böylece herhangi bir verinin
çalınması da önlenmiş olur.
6.4. Dış Çekirdekler (Exokernels) :
VM/370 sanal makinesiyle her bir kullanıcı işlemi, bilgisayarın bir kopyasını alır.
Pentium işlemcilerdeki 8086 moduyla, her bir kullanıcı işlemi farklı bir bilgisayarın
kopyasını alır. Bir adım daha ileriye gidersek, M.I.T.’de araştırmacılar her kullanıcıya
kısıtlı kaynaklarla bilgisayarın bir kopyasını veren sistem geliştirdiler. Bu nedenle bir
sanal makine 0 ile 123. disk bloklarını alabilir, bir sonraki 1024 ile 2047 arasındaki
disk bloklarını alabilir ve böylece devam eder.
En alt katmanda, kernel modda çalışan program dış çekirdek (exokernel) olarak
adlandırılır. Görevi sanal makinanın kaynaklarını ayırmaktır. Her kullanıcı-seviyeli
sanal makine VM/370 ve Pentium’daki sanal 8086’da olduğu gibi kendi işletim
sistemi üzerinde çalışabilir.
Dış çekirdeğin avantajı, eşleştirmenin bir katmanını saklar. Diğer dizaynlarda ise her
sanal makine, kendi sanal diskine sahip olduğunu düşünür. Dış çekirdek, sadece sanal
makinenin hangi kaynağının ayrıldığı bilgisinin tutulduğu bir işarete gereksinim
duyar.
6.5. Client – Server Modeli :
Bu modelde, server’lar ve client’lar arasındaki iletişim tüm kernel’da tutulmaktadır.
İşletim sistemi dosya servisi, işlem servisi, terminal servisi veya bellek servisi gibi her
birinde sistemin sadece bir yönünün tutulduğu parçalara ayrılır, bu parçaların her biri
küçük ve yönetilebilir olmaktadır. Bundan başka tüm server’lar kernel modda
çalışmazlar, kullanıcı modda çalışırlar, onlar donanıma doğrudan bağlanamazlar.
Sonuç olarak, eğer bir virüs dosya server’da ortaya çıkarsa, dosya server çökebilir,
fakat bu genellikle makinanın tamamını etkilemeyecektir.
Client – server mimarisinin diğer bir avantajı, onun şekil 28’de sınıflandırılan
sistemlere kullanılmak için kolay uyum sağlamasıdır. Eğer bir
client mesaj
göndererek bir server ile iletişim kurarsa, client kendi makinasında mesajın yerel
olarak tutulup tutulmadığını veya uzaktaki makinede server’a bir ağ üzerinden
gönderilip gönderilmediğini bilmeye ihtiyaç duymaz. Client’ı ilgilendirdiği kadarıyla,
benzer şeyler iki durumda meydana gelir: bir istek yollandı ve yanıtlandı.
Kernel sadece client’tan server’a iletilen mesajları tutar. Bazı işletim sistemi
fonksiyonlarını gerçekleştirmek oldukça zordur. Bu zorluğun giderilmesi için iki yol
vardır. Birinci yol, tüm donanımın yüklenmesiyle, aslında kernel modda çalışan bir
server işlemine sahip olmaktır. Ancak yine de diğer işlemlerle normal mesaj
mekanizmasını kullanarak iletişim sağlanır.
İkinci yol, kernel’ın içerisine mekanizmanın küçük bir kısmını inşa etmektir. Ancak
önemli kararlar yine server’a bırakılır. Örneğin, bir mesaj belirli bir adres yoluna
mesajın içeriğini gönderir ve bazı diskler için giriş/çıkış aygıt kaydedicilerine onu
yükler, diskten okuyarak çalıştırır. Kernel bu işlemi tanıyabilir. Bu örnekte, kernel
eğer byte’lar geçerli veya anlamlı ise mesajdaki bilgileri incelemeyecekti; onları diskin
aygıt kaydedicisinin içerisine bilinçsizce kopyalayacaktı.
6.6. Özet :
İşletim sistemlerine iki açıdan bakılabilir : kaynak yönetimi ve makinaya erişim.
Kaynak yönetiminde işletim sisteminin görevi sistemin farklı parçalarını hızlı bir
şekilde yönetmektir. Makinaya erişmede sistemin görevi, gerçek makinayı
kullanmaktan çok daha kolay olan sanal makinayı kullanıcılara sağlamaktır.
İşletim sistemleri operatörlerin yerini aldığı zamandan başlayarak modern çok
programlamalı sistemlere kadar uzun bir tarihe sahiptir. En önemlileri batch sistemleri,
çoklu programlama sistemleri ve kişisel bilgisayar sistemlerini içermektedir.
İşletim sistemleri açıkça donanımla birbirini etkilediğinden bu yana, bilgisayar
donanımının bazı bilgilerini öğrenmek isterler. Bilgisayarlar işlemciler, bellekler ve
giriş/çıkış aygıtları bir araya gelecek şekilde inşa edilirler. Bu parçalar yollar
aracılığıyla birbirlerine bağlanırlar.
Tüm işletim sistemlerinde temel düşünce işlem, bellek yönetimi, giriş/çıkış yönetimi,
dosya sistemi ve güvenlik olarak kurulmuştur.
Herhangi bir işletim sisteminin kalbi, onun kullanabileceği sistem çağrılarının
hazırlanmasıdır. Bunlar gerçekten işletim sisteminin ne yaptığını söyler. Biz UNIX
için, sistem çağrılarına dört grupta baktık. Sistem çağrılarının birinci grubu, işlem
oluşturma ve sonlandırma ile ilgiliydi. İkinci grup dosyalara okuma ve yazma içindir.
Üçüncü grup directory yönetimi içindir. Son grup ise çeşitli sistem çağrıları içindir.
İşletim sistemleri çeşitli yollarda tasarlanmış olabilir. En yaygın olanlar, monolitik
sistemler, katmanlı sistemler, sanal makinalar, exokernel ve client – server modelidir.
GİRİŞ ÇIKIŞ SİSTEMİ
7.1. Giriş / Çıkış Birimleri
Giriş/çıkış birimleri, verilerin, kullanıcı ile bilgisayar ortamı arasında aktarılmasına ya
da bu ortamda saklanmasına yarayan birimlere verilen isimdir. Terminal, yazıcı gibi
giriş/çıkış birimleri veri aktarma; disk gibi giriş/çıkış birimleri ise veri saklama
birimleridir.
Giriş/çıkış birimleri, giriş/çıkış sürücüleri ve giriş/çıkış arabirimlerinden oluşur.
Giriş/çıkış arabirimleri, giriş/çıkış sürücülerinin ana işlem birimi-ana bellek ikilisi ile
bütünleşmelerini sağlarken bu sürücülerin yalın bir biçimde programlanabilmelerine
de olanak sağlarlar. Giriş/çıkış arabirimleri, ana işlem birimi-ana bellek ikilisi ile aynı
ortamda bulunurken, giriş/çıkış sürücüleri genelde bu ortamın dışında hatta çok uzakta
olabilirler.
Veriler, kullanıcı ortamı olarak da tanımlanan dış ortamdan ana işlem birimi-ana
bellek ikilisine giriş/çıkış sürücüleri aracılığıyla aktarılırlar. İşlem sonucu elde edilen
sonuçlar da, yine giriş/çıkış sürücüleri aracılığıyla kullanıcılara iletilirler. Giriş/çıkış
arabirimleri, verilerin sürücülerin ile ana bellek arasında aktarılmasında kullanılır. Bir
bilgisayar sisteminde yer alan giriş/çıkış sürücüleri tür, hız gibi değişik özellikleri
yönünden çok büyük farklılıklar gösterirler. Değişik türdeki sürücüleri aynı ana işlem
birimi-ana bellek ikilisi ile bütünleştirmek ve sürücü-sistem arası veri aktarımlarını
benzer kalıplar içinde ve sürücülerin karmaşık fiziksel yapılarını gizleyerek yürütmek
gibi giriş/çıkış arabirimlerinin temel işlevini oluşturur.
7.1.1. Arabirim – Sürücü Arasındaki Bağlantı :
Giriş/çıkış sürücüleri ilgili oldukları arabirimlere iki şekilde bağlanmaktadırlar. Bu
bağlantılar seri ve paralel bağlantılardır. Seri bağlantıda her bir verinin iletimi farklı
bir yol üzerinden gerçekleştirilirken, paralel bağlantıda her veri aynı yoldan sırayla
aktarılmaktadır. Ekonomik nedenlerden dolayı, sürücü ile arabirimin birbirlerine yakın
olduğu durumlarda paralel, uzak olduğu durumlarda ise seri bağlantı kullanılır.
Arabirim ile sürücü arasındaki bağlantı seri bağlantı ise, iletişimin başlatılması ve
hatasız sürdürülmesinde kullanılan zaman uyumlama yöntemine göre zaman uyumlu
ve zaman uyumsuz iletişimlerden söz edilir. Zaman uyumsuz seri iletişimde aktarılan
verinin başına ve sonuna start ve stop bitleri eklenir. Start biti, gönderici birimin alıcı
birimi aktarma işleminin başladığı konusunda haberdar etmesini sağlar. Stop biti ise
aktarılan verinin sonunu gösterir. Zaman uyumlu seri iletişimde ise veri bitlerine ek
bitler eklemek yerine, gönderici ve alıcı birimlerin birbirleriyle sürekli zaman uyumlu
kalmalarını sağlayan ve veriler arasında gerektikçe iletilen, özel zaman uyumlama
bitleri kullanılmaktadır.
İki birim arasında yapılan iletişim, radyo yayınlarında olduğu gibi hep göndericiden
alıcıya doğru gerçekleştirilirse yapılan iletişime tek yönlü (simplex), her iki yönde de
gerçekleşiyorsa çift yönlü (duplex) iletişim denir. Çift yönlü iletişim, telefonda olduğu
gibi aynı anda her iki yönde olabiliyorsa tam çift yönlü ( full duplex), telsiz iletişimde
olduğu gibi, aynı anda yalnız bir yönde, ancak zaman içinde her iki yönde de
olabiliyorsa, bu kez yarı çift yönlü (half duplex) olarak adlandırılır. Sürücüler ile
arabirimler arasındaki veri alış-verişi genelde tam çift yönlüdür.
7.1.2. Giriş/Çıkış Arabirimleri
Veriler, kullanıcı ortamı olarak da tanımlanan dış ortamdan ana işlem birimi-ana
bellek ikilisine giriş/çıkış sürücüleri aracılığıyla aktarılırlar. İşlem sonucu elde edilen
sonuçlar da, yine giriş/çıkış sürücüleri aracılığıyla kullanıcılara iletilirler. Giriş/çıkış
arabirimleri, verilerin sürücülerin ile ana bellek arasında aktarılmasında kullanılır. Bir
bilgisayar sisteminde yer alan giriş/çıkış sürücüleri tür, hız gibi değişik özellikleri
yönünden çok büyük farklılıklar gösterirler. Değişik türdeki sürücüleri aynı ana işlem
birimi-ana bellek ikilisi ile bütünleştirmek ve sürücü-sistem arası veri aktarımlarını
benzer kalıplar içinde ve sürücülerin karmaşık fiziksel yapılarını gizleyerek yürütmek
gibi giriş/çıkış arabirimlerinin temel işlevini oluşturur.
7.2. Kesmeler
Bilgisayarlarda yürütülmekte olan bir bilgisayar programının veya bir başka işlemin
ani
veya
bir
istisna
karşısında
ortaya
çıkan
durma
olayına
denir.Bir
bilgisayar,kendisine bağlı çevre birimleriyle uyumlu bir şekilde çalışması ve onlarla
sağlıklı bir iletişim kurabilmesi için bazı araçlara gerek duyar örneğin ,klavyeden bir
karakter girilirken, bilgisayarın, girilen bu karakterin ne zaman basılacağım bilmesi
gerekir. Bir başka örnek verilecek olursa, yazıcıdan her hangi bir çıktı alınması
gerekirken,bilgisayar her hangi bir karakteri yazıcıya göndermeden Önce, yazıcının
hazır olup olmadığını bilmesi gerekir.
Giriş/Çıkış araçları hazır oluncaya kadar bilgisayarlar başka işler yapabilirler. Bu
işlemlerin yapılabilmesi için bilgisayarın hazır olup olmadığının bildirilmesi gerekir.
Bütün bunlar için kesmeler kullanılır. Bu kesmelerin ne şekilde yürütüleceğini ve
bunların nasıl yanıtlanacağını "Interrupt servise .. " kesme servisi belirler.
Kesme işlemi çıktığında işletim sistemi hemen o anda çalıştırdığı komutu veya
program askıya alarak saklar. Kesme bittikten sonra kesme düzeltme programını
"Interrupt handler" çağırır, saklanmış olan ( kesme işi gerçekleşen ) program veya
minstruction kesildiği yerden tekrar devam etmeye başlar.
Bu durum :
- Kesmenin aniden ortaya çıkışı;
- Program yürütülmekteyken kesme olayının ortaya çıkışı;
- O andaki (current psw) program "Store PSW komutuyla" korumaya alınır. Bu işlerin
tümü interrupt handler tarafından düzenlenir.
7.2.1. Kesmenin Aktif ve Pasif Hale Getirilmesi
MİB,çevre birimlerinden gelen kesmelere her zaman anında yanıt vermek zorunda
değildir. Bazen çevreden gelen bu kesmeleri önemsemeyebilir.Mesela, bir yazdırma
olayında yazıcıdan gelen kesme sinyalleri ancak, MÎB 'da yazdırılacak bir yazı varsa
göz önünde tutulur. Eğer yazdırılacak yazı kalmamışsa , yazıcıdan gelen "hazırım"
sinyalinin her hangi bir anlamı kalmayacaktır.
Örnek: MÎB, çok önemli bir iş yaparken,çevreden gelen kesmelerle rahatsız edilmesi
istenmez. Bu nedenle kesmelerin aktif ve pasif hale getirilmesi gerekir. Bunu
yapmanın en basit yolu, "interrupt enable" ve "interrupt disable"ın harekete
geçmesidir.
Kesme sinyalinin işleyişini biraz daha derinden incelemeye alınacak olunursa; çevre
biriminden gelen kesme sinyali, kesme işleminin "interrupt service routine" tarafından
yanıtlanana kadar aktif kalır. MİB tarafından yanıt verilir verilmez başka gelebilecek
kesmelere karşı önlem alınması gerekir. Bir birimden gelen kesme işlemi
yanıtlandıktan sonra "pasif hale getirilmezse, MİB daha sonra aynı yerden gelecek
kesmeye bir kez daha yanıt vermek isteyecek ve MİB sonsuz bir döngüye girmiş
olacaktır. Bu problemi ortadan kaldırmak için 3 ayrı mekanizmanın işlemesi
gerekecektir.
1- Kesme servisi programın ilk komutu çalışana kadar çevreden gelecek kesmelerin
"disable:Pasif edilmesi ,veya MİB’nin bunları önemsememesi gerekir. Bu durum ise
kesme servisinin ilk komutunu kesmeyi pasif yap olması gerekir. Kesme programı
çalıştıktan sonra bu programın son komutu olan "return from interrupt : kesmeden
çıkış " tan önce, kesmeyi yeniden aktif hale getiren "interrupt enable" komutunu
kullanmaktır.
2- MİB'nin otomatik olarak kesme servisi routinini çalıştırmadan önce kesmeleri
pasif hale getirmesidir. Bu durum ise : Kesme geldiği anda MlB, pc ( processor status )
PS 'u istif halde tutarak interrupt disable olur. Bu da PS kaydedicisinde kesmenin pasif
veya aktif olduğunu gösteren bitin kullanılmasıyla ortaya çıkar.
3- Donanım tarafından ortaya çıkarılabilen çözüm yoludur. Bu çözüm yolunda özel
devreler kurularak sadece belli bir yerden veya belirli bir konumdaki kesmeleri
yanıtlar.
7.2.2. Kesme Çeşitleri
Kesme durumlarının çok çeşitli olmasına rağmen bazıları aşağıdaki şekillerde
açıklanabilirler;
a ) Program Kesmesi
b) Giriş / Çıkış Kesmeleri
c) İşletim Sistemi Kesmeleri
d) Dıştan Kesme
7.2.2.1. Program Kesmesi ( Program Interrupt )
Program kesmesi aşağıdaki sebeplerden herhangi birisinden dolayı ortaya çıkabilir,
a) Geçersiz MİB komutu (Invalid MİB instruction): işlemci komutlarındaki hatadan
ortaya çıkan bir kesme olayıdır. Bu hata yazımdan (dilden) olduğu kadar Syntax veya
verilmesi gereken şifre hatasından da ortaya çıkar.
b) Aritmetik işlem fazlasından meydana gelen hata (Overflow Error): Bilgisayardaki
sayısal işlemler (Binary Codes) denilen ikili sayı koduyla temsil edilirler. Bu şekilde
temsil edilirken, bunun uzunluğu bilgisayara özgü kelime uzunluğunu geçmemelidir.
Eğer bilgisayardaki kelime uzunluğu geliyorsa ,yani sayısal değer, kelime uzunluğunu
geçiyorsa, bu durumda aritmetik işlem fazlası olduğu görülür.
c) Korumayı Delme Hatası ( Storage Protection Violation): Bu hata, programın
herhangi bir komutunda ana veya yardımcı bellek üzerinde yazma izni olmayan bir
yere (yazılmaması gereken bir yere) bilgi saklamak istenmesi durumunda ortaya çıkar.
Bu tür hatalar hem yazma hem de okuma durumunda ortaya çıkabilir. Eğer MİB ,
okumanın mümkün olmadığı bir adresten bilgi okumak isterse yine aynı hala görülür.
7.2.2.2. Giriş/Çıkış Kesmeleri (I/O Interrupt)
Bu tip kesmeler giriş/çıkış kanallarında ortaya çıkarlar. Bunun nedeni ise
aşağıdakilerden her hangi birisi sonucu olabilir.
a) Giriş çıkış komutundan ortaya çıkabilen her hangi bir hata ;örneğin : Kullanılan
dilde girdi veya çıktı komutu olarak geçerli olmayan bir komutun kullanılması; ikili
sayı şifresinde meydana gelen hatadan; Girdi/ Çıktı ve kanal numaralarının yanlış veya
tespit edilememesinden ortaya çıkan hatalar sonucunda bu tür kesmeler gelebilir.
b) Giriş/Çıkış programının yürütülmesinin bitmesiyle (kanal programında kanal
komut kelimesinin son deyimi yürütüldükten sonra) işletim sistemleri kanal
programını durdurmak için (H I/O) ile emir verir ve ani kesme olur. Bilgisayarın diğer
kısımları çalışmasına devam eder.
c) Giriş/Çıkış ünitelerinin verileri geçiş yolundan taşıması sonucunda ani kesme olayı
sonucunda ortaya çıkabilir.
7.2.2.3. İşletim Sistemi Kesmeleri (Supervisor Cali Interrupt)
Kullanıcının hiçbir ilişkisi olmadan, bilgisayar içindeki işlemlerin yürütülmesi için
işletim sistemi kesme emri verebilir.
7.2.2.4. Dıştan Kesme (External Interrupt)
Bu kesme şekli iki sebepten dolayı ortaya çıkabilir:
a) Kullanıcının zorunlu olarak çalışmakta olan bir programdan çıkmak için yapılan
kesme olayıdır. Örneğin; kısır döngü durumlarının meydana gelmesi durumlarında;
kullanıcının makinayı kiraladığı sürenin dolması durumlarında meydana gelebilir.
Elde olmayan nedenlerden dolayı makinanın durdurulmasının gerektiği durumlarda
yapılan kesmelerdir.
b) Zamanlayıcılardaki bozukluktan dolayı ortaya çıkan kesmelerdir. Zaman
paylaşımına bağlı çalışmalarda veya zamanlayıcının (+) değerinin (-) değere
dönüşmesi durumunda ortaya çıkan kesmelerdir. Bu kesmeler bilgisayar aksamının
birbirleriyle bağlanamaması sırasında ortaya çıkabilir. Mesela, işlemci işlemciyle veya
ana belleğin kanallara bağlanması durumlarında ortaya çıkabilir.
7.2.2.5. Makinanın Test Kesmesi ( Machine Check Interrupt)
Bilgisayarın ilk açıldığında, işletim sistemi bilgisayara bağlı olan üniteleri
kendiliğinden test eder. Bu test yapılıp doğruluğu kontrol edilmeden bilgisayar çevre
birimlerini tanıyamaz ve işlevini yerine getiremez.
7.3. Doğrudan Bellek Erişimi Düzeneği
Giriş / çıkış arabirimleri ile ana bellek arasındaki veri aktarımını, ana işlem birimini
dışarıda tutarak gerçekleştirmede doğrudan bellek erişim düzeneğinden yararlanılır.
Bu düzenek çerçevesinde arabirimlerden ana belleğe, ana bellekten arabirimlere
veriler, doğrudan bellek erişim denetleme birimi olarak adlandırılan bir birimin
yardımıyla aktarılır. Doğrudan bellek erişimi denetleme birimi, birlikte çalıştığı ana
işlem biriminin bellek erişimiyle ilgili işlevlerini yüklenebilen yardımcı bir işleyicidir.
Doğrudan bellek erişim denetleme biriminin yer aldığı sistemlerde ana belleğe, ana
işlem biriminin yanı sıra bu birimin erişimi de söz konusu olur. Birden çok işleyicinin
aynı ana bellek birimine koşut erişimi kaynak paylaşımı sorununu ortaya çıkarır.
Bu sorun, çoğu kez ana işlem biriminin efendi konumunda bulunduğu, efendi - köle
ilişkisi içinde çözülür. Doğrudan bellek erişim denetleme birimi ana işlem biriminin
onayı olmadan ana belleğe erişemez. Ana işlem birimi donanımı içinde yer alan bu
onay düzeneği doğrudan bellek erişim düzeneğinin bir parçasıdır. Bu düzenek, ana
belleğe erişmede yararlanılan ve kullanılagelen donanım modeline göre biricik olduğu
varsayılan adres ve veri yollarının kullanımını düzenler. İki ayrı işleyicinin, ana
belleğe, aynı anda, aynı yolları kullanarak erişmesinin mümkün olmadığı açıktır.
7.3.1. Doğrudan Bellek Erişim Denetleme Birimi
Doğrudan bellek erişim düzeneğinin kullanıldığı sistemlerde arabirimler, bağlı
oldukları sürücülerden ana belleğe ya da ana bellekten bu sürücülere veri aktarımı söz
konusu olduğunda bu aktarımla ilgili istemlerini, ana işlem birimi yerine doğrudan
bellek erişim denetleme birimine yaparlar. Aktarım istemini alan denetleme birimi, bu
istemi yerine getirebilmek için, ana işlem biriminde adres ve veri yollarının kullanım
hakkını ister. Bu istem ana işlem biriminin, yol kullanım istemi girişi üzerinden
yapılır. Ana işlem birimi, doğrudan bellek erişim denetleme biriminin yol kullanım
isteminin bağlandığı bu girişini, kesilme istemi girişlerinde olduğu gibi, komut
işletiminin belirli bir periyodunda sınar. Giriş üzerinde istemi simgeleyen bir gerilim
düzeyi saptarsa adres ve veri yolları ile okuma, yazma gibi bellek denetim hatlarıyla
ilişkisini keser.
Bu durumu, erişim istemini yapan denetleme birimine, yol kullanım istemi alındısı
çıkışını kurarak belirtir. Bu alındı ile doğrudan bellek erişim denetleme birimi,
arabirim - ana bellek arasında, doğrudan gerçekleşecek aktarım denetimini ele geçirir.
Bu aşamadan sonra denetleme birimi, kullanım hakkını elde ettiği adres yolu üstüne,
aktarıma konu olan bellek sözcük adresini koyarak bir bellek erişim döngüsü başlatır.
Bunun yanı sıra, adresleme süreci başlatılan ana bellek sözcüğün içeriği, aktarım
isteminde bulunan arabirim giriş/çıkış yastığından sağlanacağından bu arabirime
aktarım istemi alındısını yollar. Bu alındı işaretiyle, aktarıma konu olan verinin
arabirim tarafından, ya giriş/çıkış yastığından veri yoluna (yazma) ya da veri yolundan
bu yastığa (okuma) aktarılması sağlanır.
Doğrudan bellek erişim denetleme birimi, ana bellekte erişilen sözcük adreslerini,
adres yazmacı olarak nitelenen, programlanır bir yazmaç içerisinde tutar. Aktarım
işlemlerinin başında bu yazmaç ana bellek aktarım alanı başlangıç adresini içerir.
Aktarılan bayt (sözcük) sayısı bir sayaçla denetlenir. Gerçekleştirilen her doğrudan
bellek erişim döngüsü için adres yazmacı otomatik olarak bir arttırılırken sayaç içeriği
bir eksiltilir. Aktarım işlemlerinin başında ana bellek aktarım alan boyu ile
güncellenen sayaç içeriği sıfırlandığında bu durum, denetleme birimince, ana işlem
birimini, kesilme girişleri üzerinden uyarmada kullanılır. Bu uyarı ile adres yazmacı
ile sayacın yeni bir aktarım için, yeni değerlerle güncellenmesi sağlanır.
7.4. Giriş / Çıkış Kanalları
Giriş ve çıkış kanalları, yapıları itibariyle işlemci işlemlerinden daha farklı değillerdir.
Tek farkı giriş veya çıkış işlemlerinde bilgilerin bilgisayar aksamına ( ana bellek,
yardımcı bellek, işlemci, giriş/çıkış üniteleri gibi ) geçişini sağlamaktır. Bilgilerin
bilgisayar aksamına geçiş kanalları olarak bilinir.
Giriş / çıkış kanalları ile bilgisayar aksamı arasındaki bağlantı üç şekilde ortaya çıkar :
a ) Kanalla bellek arasında direk bağlantı.
b ) İşlemci ile kanal arasındaki direkt bağlantı.
c ) Giriş / çıkış üniteleriyle kanal arasındaki bağlantı.
Bu giriş / çıkış kanallarının birbirlerinden olan üstünlükleri ise :
a ) Aynı anda bir giriş/çıkış ünitesi veya daha fazla üniteye hizmet verebilme gücünün
olup olmadığı.
b ) Giriş / çıkış kanalları arasındaki ulaşım ile birimler arası hizmet dağıtım gücünün
olması.
c ) Bilgilerin, muhtelif bilgisayar aksamına taşınma hızına göre değişmesi.
7.4.1. Giriş/Çıkış Kanallarının Çeşitleri
a) Selector : Bu kanal aynı zamanda bir giriş veya bir çıkış ünitesine hizmet verir.
Genellikle de yüksek hızlı giriş/çıkış ünitelerine bağlı olur.
b) Multiplexer Channel ( Çoğaltıcı Kanallar ) : Aynı anda birden fazla giriş/çıkış
ünitesine hizmet verir. Orantılı olarak kısa zaman içerisinde üniteler arasında hızlı
hareketiyle tanınan bir kanaldır. Buna bağlı olarak 256 giriş/çıkış ünitesi çalışabilir.
c) Blok Multiplexer : Yukarıdaki iki kanalın dezavantajlarını gideren bir kanal olarak
görev yapan ve giriş/çıkış kanalları arasında hızlı hareket eden bir kanal tipidir.
7.4.2. Giriş Ve Çıkış Programlarının Özel Komutları
Giriş/çıkış işlemleri aşağıdaki noktalardan herhangi birisini veya birden fazlasını
yerine getirir.
a) Veri transferi ( Data Transfer): Bu giriş ünitelerinden okuma işlemlerini ve çıkış
ünitelerinden de bilgilerin çıkış işlemlerinin yapılması durumudur.
b) Giriş/çıkış ünitesinin kontrolü ( Device Kontrol ): Okuyucu ve yazıcı başlarının
mekanik hareketlerinin kontrol altına alınmasıdır.
c) Kontrollü Taşıma ( Branching ): Giriş/çıkış programlarının kısımları arasında
taşınan özel emirlerdir.
Bu işlemlerin hiç biri ( program channel ) kanal programı olmadan yerine getirilemez.
Bu program, kanal emirler (komutlar) topluluğundan oluşur (channel command words
: ccws) Bu program kanalı yardımıyla yürütmeye getirilir. Bu kelime ccw 64 bitten
oluşan kanal komut kelimesi olup bir sonraki sayfadaki şekille açıklanabilir:
Operation Data
Code
Address
8 bit
24 bit
1-
Flags
Unused
Count
6 bit
11bit
15 bit
İşlem kodu(şifresi) (operation code) : Doğrudan olan(direkt) komutu
taşır.Örneğin input, move, store gibi.
2- Veri adresi (data address) : Ana bellekte işlem gören verilerin yerini tespit eden
rakamı taşır.
3-
İşaretler (Özel karakterler)(flags)
:
İkili sayı şifreler topluluğundan
oluşur.Bunlar:
a- Kanal programının çalıştığını veya bittiğini gösterir.
b- Küçük veya uzun formatlı verilerin alan uzunluklarını gösterir.
c- Ana bellekte belirli yerlere erişim mekanı arar.
4- Sayaç Alanı (count) : İşlemci içerisinde yürütülmekte olan veri alanının
uzunluğunu gösterir. Herhangi bir giriş/çıkış programının yürütülmesi için iki özel
komuta ihtiyaç vardır :
1. Kanal durumunu tespit emri
2. Adres tespit komutu
1- Kanal durumunu tesbit emri: İstenen bir zaman süresi içerisinde kanal durumunu
tesbit eder.Bu işlem ise:
a) Program işler halde ise (bussy) giriş/çıkış programının yürütülmesi
b) Program işlemez halde ise (not bussy) giriş / çıkış programının bitirilmesi
c) Yürütmede bir hatanın ortaya çıkması "korumayı delme veya bilgilerin
yetersizliği gibi" yani bilgilerin giriş/çıkış için yetersiz olduğu hallerde dahi kanal
durumu tesbit edilebilir.
Bütün alanlarıyla bu kelime (csw) aşağıdaki şekilde vasıflandırılır:
Protection Next ccws
Key
Address
8 bit
24 bit
Status
16 bit
Residual
Counts
16 bit
a) Birinci alan (koruma anahtarı) : Ana bellekte uygun kilit'i arayarak korumayı
kaldıran alandır.
b) İkinci alanda ise kanal programından gelecek ikinci komutun adresini tesbit
eder.
c) Üçüncü alan , kanalın çalışıp çalışmadığını veya herhangi bir hatanın meydana
gelebileceği kanal tesbit eder
d) Dördüncü alan, yürütülmekte olan, deyimin yürütülmemiş olan ikili hücre
sayılarını tesbit eder
2- Adres tesbit komutu (channel address word): Yürütülmekte olan kanal programı
komutlarının ilkinin yerini tesbit etmekle görevlendirilmiştir.Genellikle bu komut
işletim sistemleri alanı içerisinde yer alır. Bu komut iki alanı kapsar, birincisi koruma
anahtar alanı ve ikincisi ise kanal komutlarının birincisinin adres alanıdır.
7.4.3. Giriş/Çıkış Kanallarının Bilgisayarla Bağlantıları (Communication of
channels) :
Kanalların bilgisayarla olan bağlantıları üç şekilde ortaya çıkar;
1-Ana bellek ile doğrudan bağlantı:
Bellek yöneyim yazılımları giriş/çıkış trafik kontrolleri ile bağlantı kurarak giriş/çıkış
kanallarının açılmasını sağlar (eğer açık değilse) bununla birlikte ana ve yardımcı
belleğe veya giriş/çıkış ünitesine doğru ve tersine bilgi geçişi sağlanır.Bilgilerin
geçişini sağlayan bu işleme "spooling system" geçiş düzeni denir.
2- İşlemcilerle kanallar arasındaki doğrudan bağlantı (Communication between
MİB and I/O channels):Bu bağlantı iki yönde gerçekleşebilir;
a) İşlemciden kanal'a olan bağlantı, işlemcinin kanaldan veri istemesiyle başlar.
b) Kanaldan işlemciye olan bağlantı yan bellek veya giriş/çıkış ünitelerinde işlemciye
doğru bilgilerin geçişi anlamını taşır. İki yönde olan bu bağlantı bir sonraki sayfadaki
adımlarla yapılır;
1- Yürütülmekte olan değim giriş/çıkış ünitesi ile bilgilerin geçeceği yolun
numaralarım taşırlar.
2- Bu numaralar, yürütmeyi başlatma emri içerisinde yer alarak bunlarla kanal
programının yeri tespit edilir.
3- Daha sonra program statüsüne bağlanarak yürütme anındaki komut şifresi
kontrol edilir.
4- Bu kontrol işlemi ise giriş / çıkış komut testiyle yapılır.
5- Eğer yürütülmekte olan komut giriş / çıkış komutu ise adres tespiti için kanal
programının ilk komutunun yerinin edileceğine geçilir (CAW ile).
6- Eğer yürütülmekte olan komut giriş / çıkış komutu değilse, bir kesme şifre ilanı
ortaya çıkar. Bu kesme şifre alanı gizlemeye elverişli ise komut test emri, yapmakta
olduğu işe devam eder ve bu arada kanalla işlemci arasındaki bağlantı kesilir. (Halt
I/O: HIO).
7- Giriş / çıkış başlama komutu (SIO) tarafından tespit edilen kanal durumu ile
CSW) ile gözden geçirilir.
8- Eğer kanal çalışıyorsa (bussy) başka bir şekilde bir kesme ortaya çıkararak ile
PSW) içerisinde saklanır. Gizleme alanı ise burada kesmeyi, ya erteler veya anında
kesmeyi gerçekleştirir.
9- Eğer kanal çalışmıyorsa (not bussy) kanal program komutlarının ilkini
yürütmeye çalışır. Bu arada kanal durumunu belirleyen komut tamamen yeni işe göre
yenilenir ve (TIO) yürütmeye tabi tutulan bütün komutları kontrol etmeye devam eder.
10- Komut emri değiştiğinde ise kanal programı (HIO) emriyle durur ve
kanallarla işlemci arasındaki bağlantı kesilmiş olur. Burada bir başka kesme türü
ortaya çıkar buna (I/O program ends) G/Ç programının sonu olarak bilinir.
3- Giriş / çıkış üniteleriyle kanal arasındaki bağlantı : Bu bağlantı tamamen yol
vericiyle ilgili olan bir kanal bağlantısıdır.
GÖREV YÖNETİMİ
GÖREVİN TANIMI
8.1. Giriş :
Bilgisayar sisteminin verimli kullanımı merkezi işlem birimi, ana bellek ve giriş/çıkış
birimleri gibi kaynakların programlar arasında paylaşılmasını gerektirir. Merkezi işlem
biriminin paylaştırılması programların işletimlerinin birlikte sürdürülmesi yoluyla
sağlanır. Merkezi işlem biriminin bir programın işletimini bırakıp diğer bir program
işletimine geçmesi “anahtarlama” olarak adlandırılır. Merkezi işlem biriminin
paylaşımı bu durumda değişik programların bu birime belirli bir sırayla anahtarlanması
yoluyla gerçekleştirilir. Programların merkezi işlem birimine hangi sıra ve kurallar
çerçevesinde anahtarlanacağı merkezi işlem birimi yönetimi kapsamında ele alınır.
Programlar işletimleri sırasında “görev” olarak adlandırılırlar.
Merkezi işlem
biriminin yönetimine paylaşılan kaynak yerine bu kaynağı paylaşılan görevler
yönünden bakarak “görev yönetimi” de denir.
Programların çalışabilmesi için merkezi işlem birimine anahtarlanmaları gerekir.
Bunun yanı sıra ana belleğe yüklenmeleri işletimleri sırasında gereksinim duyacakları
giriş/çıkış türü kaynakları diğer programlarla yazışarak elde etmeleri gerekir.
Programlar merkezi işlem birimi dışındaki ana bellek, giriş/çıkış gibi kaynakları yine
merkezi işlem birimi aracılığıyla tüketebilirler. Bu işlemlerin yapılabilmesi için işletim
sistemi içinde yer alan ilgili yönetici ve sürücü görevlerin ana işlem birimine
anahtarlanarak
çalıştırmaları
sonucu gerçekleştirilir.
Görev bir programın işletimi
sırasında aldığı isimdir. İşletilen
her program için en az bir görev
tanımlanır. Merkezi işlem
biriminin verimli kullanımı
birden çok programın
işletimiyle sağlanır. Merkezi işlem biriminin bir programı bırakıp, diğer bir programa
geçmesi belirli önlemler alınarak yapılır. Yarım bırakılan bir programın tutarlı bir
biçimde kaldığı yerden çalıştırılması işletimini bırakıldığı andaki durum bilgilerinin
saklanması yoluyla sağlanır. Bu nedenle her görev için işletim sistemi tarafından bir
veri yapısı tutulur. Bu veri yapısı en azından işletimin hangi komuttan başlayarak
sürdürüleceği bilgisini, merkezi işlem birimi yazmaç içeriklerini varsa kullanılan
kütüklerle ilgili bilgileri içermek zorundadır. Bu yapı görev iskeleti olarak adlandırılır.
Görev iskeleti genelde görev birliği başta olmak üzere görevin program sayacı, yığıt
sayacı, diğer işlem birimi, yazmaç içerikleri, durum, öncelik, bellek atama bilgileri,
işlenen kütükler ve bunlarla ilgili gösterge bilgilerini tutar.
Görev iskeleti programların
sırasıyla merkezi işlem
birimine anahtarlanarak
çalışmaları sırasında işletim
bütünlüğünün
korunabilmesi başka bir
deyişle bir programın diğer
bir programı
bozmaması
için gerekli tüm bilgileri
eksiksiz içermek zorundadır.
Bir görev merkezi işlem birimine anahtarlanıp çalıştırılmadan önce merkezi işlem
birimindeki yazmaçların görev iskeletinde yer alan içeriklerle güncellenmesi görev
iskeletinin herhangi bir nedenle kesilmesi durumunda ise bunların içeriklerinin görev
iskeletindeki ait alanlara saklanması gereklidir.
8.2. Görevlerin İşletim Süresince Bulunduğu Durumlar :
Bir
program
işletimi
sonlanana
kadar değişik işletim evrelerinden
geçer.
Bunlar
merkezi
işlem
biriminin kullanımı yönünden genel
olarak
çalışma
ve
bekleme
evreleridir. Bu evrelere “durum” adı
verilir.
Görevlerin
işletimleri
sırasında
bulunduğu durumlar, durum çizenekleriyle gösterilir. Görevlerin işletimleri süresince
bulunabildikleri tüm durumlar ile bu durumlar arsı geçişler arası durumlardan oluşan
çizeneğe “görev-durum çizeneği” denir.
Şekilde gösterildiği gibi çalışır durum, görevin merkezi işlem birimini kullanıyor
olmasını, bekler durum ise görevin merkezi işlem biriminin yeniden kullanabilmek
üzere başlattığı bir işlemin (örneğin diskten okuma) sonlanmasını beklemesi
anlamındadır. Oluşumunu beklediği bir koşulun gerçekleşmesi bir göreve, merkezi
işlem birimine anahtarlanarak çalışabilir veya merkezi işlem birimine anahtarlanmak
üzere seçilebilir görev özelliği kazandırır. Merkezi işlem birimini kullanabilir duruma
gelen görevler “hazır görev” olarak adlandırılır.
Hazır görevlerden biri görev yönetimi kesiminde açıklanacak kıstaslara dayanılarak
görev yönetimi diye adlandırılan özel bir sistem görevi aracılığıyla merkezi işlem
birimine anahtarlanır ve çalışır göreve dönüşür. Çalışmakta olan görev, giriş-çıkış
işlemi başlattığında tümüyle sonlanmadan işletimine devam edemeyeceği için bekler
durumuna geçer ve merkezi işlem birimini bırakır. Çalışmakta olan bir görev
işletiminin bitmesi durumunda merkezi işlem biriminde ve sistem içindeki tanımı da
yitirerek bitiş aşamasına geçer. Görevler merkezi işlem birimini kendilerinden
kaynaklanmayan nedenlerle de bırakmak zorunda kalabilirler. Etkileşimli işlemin
uygulandığı bilgisayar sistemlerinde görevlerin merkezi işlem birimini belirli süreler
içinde sırayla kullanmaları istenir. Kendine ayrılan süre sona erdiğinde görev yeniden
hazır görev durumuna getirilir.
8.3. Görevlerle İlgili Sistem Çağrıları :
Sistem çağrıları gerek derleyiciler, gerekse sistem programları tarafından işletim
sistemine ilişkin yordamları çağırmada ve bu yolla hizmet almak için programlara
yerleştirilen özel komutlardır. Görevlerle ilgili işletim sistemi çekirdek katmanında yer
alan kimi hizmet yordamlarının üst katmanlardan çağrılması özel sistem çağrılarıyla
olur. Bunlar hem uygulama programları hem de işletim sisteminin kendisi tarafından
kullanılırlar. Görevlerin yaratılması, sonlandırılması, işletimlerinin başlatılması,
geciktirilmesi ya da kesilmesi, öz nitelik bilgilerinin güncellenmesi ve incelenmesi
gibi amaçlarla kullanılırlar.
8.4. Görev Yönetimi :
Bir bilgisayar sisteminde görev, işletim sisteminin yönetim açısından taban aldığı en
küçük varlıktır. Sistemden hizmet almak amacıyla tanımlanan işler sunuş aşamasında
bir ya da daha çok görev dönüştürülürler. Bu aşamadan sonra sistemde bir dizi görevin
bulunduğu, bunların sistem kaynaklarını kullanabilmek için değişik işletim
evrelerinden geçerek birbirleriyle yarıştıkları söylenebilir. Görevler arasında yer alan
bu yarışın kuralları görev yönetimi kapsamında belirlenir.
Daha önceden de
belirtildiği üzere sistem kaynaklarının görevler tarafından kullanılabilmesi ana işlem
birimine anahtarlanarak çalışabilmeyi gerektirir. Bu nedenle görev yönetimi ana işlem
biriminin yönetimi demektir. Görev durum çizeneğinde yer alan hazır görev
durumundan çalışır duruma geçişler hazır görevler kuyruğundan merkezi işlem
birimine anahtarlanma işlemleri görev yönetimi kapsamında ele alınır.
Görev
yöneti
minde
n
görev
yöneti
ci
olarak
adland
ırılan
işletim
sistem
i çekirdek katmanında yer alan özel bir yordam sorumludur. Görev yönetici görevlerin,
giriş-çıkış ve zaman uyumlama işlemlerinde bulunmaları, sonlanmaları gibi görevlerin
ana işlem birimini bırakmasını gerektiren ya da yeni bir görevin sisteme sunulması
giriş-çıkış ve zaman uyumlama istemlerinin yerine getirilmesi, gerçek zaman saati
vuruları (kesmeler) gibi hazır görevler kuyruğuna yeni bir görevin eklenmesini
gerektiren olaylar sonucunda merkezi işlem birimine anahtarlanacak kendisinden sonra
işletilecek görevin belirlenmesini sağlar.
Görev yöneticiden sonra merkezi işlem birimini kullanacak görev ya görev
yöneticisinin çalışabilmesi için işletimi kesilen görev ya da hazır görevler kuyruğunun
başında yer alan diğer bir görev olacaktır.
Örneğin bir giriş/çıkış işlemi başlatarak bekler duruma düşmüş bir görev bu işlemin
sona ermesiyle ilgili bekler görevler kuyruğundan hazır görevler kuyruğuna
bağlanacaktır. Hazır görevler kuyruğuna yeni bir görevin bağlanmış olması bu
aşamadan sonra hangi görevin merkezi işlem birimini kullanacağı değerlendirmesinin
yeniden yapılmasını gerektirecektir.
Görev yönetici özetle hazır görevler kuyruğunun düzenlenmesi ve düzenleme sonucu
kuyruk başında yer alan görevin merkezi işlem birimine anahtarlanmasını
gerçekleştiren işletim sistemi kesimidir. Görev yönetici hazır görevler kuyruğunun
düzenlenmesinden sorumlu olmakla birlikte bu kuyruğa eklenecek görevleri belirleyen
bir kesim değildir. Hazır görevler kuyruğuna yani görevler eklenmesi işletim
sisteminin diğer yönetim kesimleri tarafından sağlanır. Kullanıcılar olmayı istedikleri
hizmetleri iş tanımlarına dönüştürerek ya etkileşimli ya da toplu işlem düzeyinde
bilgisayar sistemine sunarlar. Sunulan işler görev tanımları yapılarak görevlere
dönüştürülürler. Oluşturulan bu görevler belirli sıklıkta hazır görevler kuyruğuna
bağlanarak işletilmek üzere görev yöneticinin yönetimine bırakılır.
İş Yönetimi :
Toplu işlem dengesiz kaynak talebinde bulunan, örneğin salt merkezi işlem birimini
kullanan ya da giriş/çıkış kanallarına aşırı yükleyen düşük öncelikli işlerin ele alındığı
bir işletim düzenidir. Bu düzen daha çok öncelikli işlere ilişkin etkinliklerin azaldığı
işletim dönemlerinde sistem kaynaklarının kullanılır tutulmasını gözetir. Sisteme toplu
işlem düzeninde sunulan işler toplu işlem kuyruğuna bağlanırlar. Bu kuyrukta
bekleyen işlerin görevlere dönüştürülüp hazır görevler kuyruğuna bağlanmaları iş
yönetimi kapsamında ele alınır. Bilgisayar sisteminde işler toplu işlemin yanı sıra
etkileşimli işlem bağlamında da sunulurlar. Ancak sisteme etkileşimli işlem düzeninde
sunulan işler beklemeksizin doğrudan göreve dönüştürülüp, hazır görevler kuyruğuna
eklenir.
İş yönetici, toplu işlem kuyruğunun düzenlenmesinden ve dönem dönem bu kuyruğun
başındaki işleri görevlere dönüştürerek hazır görevler kuyruğuna aktarmaktan sorumlu
bir işletim sistemi kesimidir. İş yönetimi merkezi işlem birimi kullanımı ağırlıklı
işlerde, giriş/çıkış kullanımı ağırlıklı işlerin dengeli bir biçimde işletilebilmelerini
gözetir. Zira sistem kaynaklarının verimli kullanımı bunu bağlıdır. Bu amaçla iş
yönetici merkezi işlem birimi kullanım oranını bir ölçüt olarak alıp, bu oran
düştüğünde hazır görevler kuyruğundaki görev sayısını arttırır. Bunun tersi olduğu
durumda ise kuyruktaki görev sayısını düşük tutmaya çalışır. Buradan iş yöneticinin
görev yönetimi girdilerini düzenleyen bir kesim olduğu söylenebilir.
8.5. Yönetim Algoritmaları :
İşletim sistemlerinin kullandığı yönetim algoritmaları genel hatlarıyla hem uzun
dönemli (iş yönetimi) hem de kısa dönemli (görev yönetimi), hem de orta dönemli
planlamaların tümü için kullanılabilir. İş yönetimi toplu işlem kuyruğunun, görev
yönetimi hazır görevler kuyruğunun, orta dönemli planlama kesimi ise bellekte yer
bekler kuyruğunun düzenlenmesinden sorumludur.
Bilindiği üzere işletim sisteminin görev yönetimi kesimi merkezi işlem biriminin
sistemde tanımlı görevler arasında paylaştırılmasından sorumludur. Bu paylaştırma
yapılırken temel amaç sistem başarımının yükseltilmesidir. Sistem başarımı
denildiğinde bir yandan sistemden yararlanan kullanıcılara verilen hizmetin niteliğini
belirleyen iş tamamlanma süresi (toplu işlemde), yanıt süresi (etkileşimli işlemlerde)
gibi kıstaslar göz önünde tutulurken diğer yandan bu kıstaslarla kimi zaman çalışabilen
sistem kaynaklarının verimli kullanımı akla gelebilir.
Sistem başarımını gözeten görev yönetimi bölümü bu bağlamda merkezi işlem
biriminin verimli kullanımı, birim sürede sonlandırılan iş sayısı, ortalama iş
tamamlama süresi, bekleme süresi ve yanıt süresi gibi hem kullanıcılara verilen
hizmetin niteliğine hem de bilgisayar sisteminin verimli kullanımına ilişkin kıstasları
gözeten algoritmalara dayalı olarak gerçekleştirilir. Merkezi işlem biriminin verimli
kullanılmasından, bu kaynağın mümkün olduğunca çalışır durumda tutulmasından
anlaşılır. Merkezi işlem birimi çalıştığı sürelerin dışında baştadır.
Merkezi işlem biriminin çalışıyor olması makine komutlarını işletiyor olmasıdır.
Örneğin bir koşulun oluşması beklenirken, işletilen sınama döngü komutları merkezi
işlem biriminin çalışır tutan komutlardır. Merkezi işlem biriminin çalışır olması tek
başına üretilen hizmetin tam bir ölçütü olamayacağından birim sürede tamamlanan
ortalama iş sayısı sistem başarımının bir ölçüsüdür.
Yönetim algoritmalarının kullanıldığı algoritmalar bu parametreye dayalı olarak
öngörülebilir. Birim sürede tamamlanan iş sayısı yerine işlerin ortalama tamamlama
süreleri de sistem başarımının bir ölçüsüdür. İş tamamlanma süresi işlerin sisteme
sunuluşlarından bitiş sürelerine kadar geçen ortalama süreçtir.
İş tamamlama süresi, işletim ve bekleme sürelerinin toplamıdır. Bu toplamın yanı sıra
sistem kaynaklarını diğer işlerle paylaşmaktan kaynaklanan bekleme süresinin kendisi
de yönetimin dayanabileceği bir kıstas ve sistem başarım ölçüsüdür. Görev yönetimi
kapsamında bu kıstaslardan bir ya da birkaçını birlikte gözeten değişik yönetim
algoritmaları kullanılabilir. Bu algoritmalar şunlardır :
a)
İlk gelen önce algoritması
b)
En kısa işletim süresi kalan
önce
c)
Öncelik tabanlı
d)
Zaman dilimli
e)
Çok kuyruklu
a) İlk Gelen Önce Algoritması : İlk gelen önce algoritması, görevlerin eş öncelikli
olarak ele alındığı ve görevlerin hazır görevler kuyruğuna geliş sırasında işletildiği çok
yalın bir yönetim algoritmasıdır.
b) En Kısa İşletim Süresi Kalan Önce Algoritması : Bu algoritmada görevlerin
merkezi işlem birimine anahtarlanmasında göz önüne alınan kıstas görevlerin
sonlanabilmeleri için arda kalan işletim süreleridir. En kısa işletim süresi kalan göreve
öncelik sağlanarak biran önce sistemden çıkması ve bu yolla en kısa ortalama bekleme
süresinin elde edilmesi amaçlanır.
c) Öncelik Tabanlı Algoritma : Yukarıda açıklanan algoritmaların genişletilmiş
biçimidir. Bu algoritma için her görevin bir önceliği bulunur. Bu öncelik değeri görev
iskeleti içinde öncelik alt alanında tutulur. Görev öncelikleri merkezi işlem birimini
kullanım süresi, ana bellek gereksinimi, giriş/çıkış kanal kullanım sıklığı gibi görevin
sistem kaynaklarına ilişkin ölçülebilir taleplerine, ait olunan kullanıcı grubunun
özelliklerine, sisteme sunuluş biçimine dayalı olarak belirlenir. Bu algoritmaya göre
işlemciye yeni bir görev anahtarlanacağı zaman en yüksek önceliğe sahip görev seçilir.
d) Zaman Dilimli Algoritma : Zaman dilimli görev yönetiminde görevler eşit
uzunluktaki zaman dilimlerinde merkezi işlem birimine sırayla anahtarlanırlar.
Örneğin her 5 milisaniyede her gelen saat uyarılarıyla işlemciye anahtarlanan görev
yönetici çalışmakta olan görevi hazır görevler kuyruğunun sonuna ekleyerek kuyruk
başındaki görevi de işlemciye anahtarlar.
e) Çok Kuyruklu Algoritma : Bir bilgisayar sisteminde işletime alınan görevler çok
değişik niteliklerde olabilir. Bu görevlerden kimileri örneğin etkileşimli işlem
ortamında program geliştiren kullanıcı görevleri olabilirken, kimileri de toplu işlem
kuyruğundan sisteme sunulmuş ve sistem kaynaklarını boş dönemlerinde çalışır
tutmayı amaçlayan işlerle ilgili görevler olabilir. Bunun yanı sıra işletilen görevler
arasında hiç bekletilmeden işlemciye anahtarlanması gereken çok öncelikli sistem
görevleri de bulunur. Bu görevlerin hepsini aynı hazır görevler kuyruğunda bağlamak
ve bunların tümüne ayrı yöntem algoritmasını uygulamak tüm görevler için uygun
olmayabilir. Bu nedenle değişik yönetim algoritmalarının olumlu yönlerini biraraya
getirerek ve sakıncalarını azaltarak çok uyruklu yönetim algoritması kullanılır. Bu
algoritmada görevler ortak bir hazır görevler kuyruğa, yerine getirilen türüne göre ayrı
kuyruklara bağlanırlar. Ortaya çıkan birden çok kuyruğun her biri için bu
algoritmalardan en uygunu seçilir.
ANA BELLEK YÖNETİMİ
9.1. Ana Bellek Yönetim Yöntemleri
Belleği yöneten işletim sistemi bölümüne bellek yöneticisi denir. Görevi, belleğin
hangi bölümünün izi kullanıyor veya hangisi kullanılmıyor onları saklamak (tutmak),
belleği, ona ihtiyaç olduğu zaman işlemlere ayırmak, işlemler yapıldığı zaman onun
eski haline bırakmak ve bellek bütün işlemleri tutmak için yeterli derecede büyük
olmadığı zaman ona bellek ve disk arasındaki değiş tokuş etmeyi (swapping)
yönetmektedir.
Mümkün olan en basit bellek yönetimi planı, bellekte bir işleme sahip olmak ve bu
işlemi belleğin tümünü kullanmasına izin vermektir. Kullanıcı diskten veya teypten bir
programla bütün belleği yükler ve bu bütün makine üzerinde olur.
Basit mikrobilgisayarlarda kullanılan alışılagelmiş teknik, şekil 1’de gösterilmiştir.
Bellek, işletim sistemi ve tek bir kullanıcı işi arasında bölünmüştür. İşletim sistemi
şekil 1 (a)’da gösterildiği gibi RAM’in altında olabilir, veya şekil 1 (b)’de gösterildiği
gibi belleğin en üstünde ROM’da olabilir, veya aygıt sürücüsü bir ROM’da belleğin
üstünde olabilir. İşletim sisteminin kalanı şekil 1 (c)’de gösterildiği gibi RAM’ da
belleğin altında olabilir. IBM PC örneğin, 1 MB adres boşluğunun 8 bloğunun en
yükseğine yerleşmiş ROM aygıt sürücüsü ile, şekil 1 (c) modelini kullanır.
Sistem bu yolda
organize edildiği
zaman, bir zamanda
sadece bir iş
çalışabilir. Kullanıcı
terminalde bir komut
yazar, işletim
sistemi istenilen
programı diskten belleğe yükler ve onu işletir. İş tamamlandığı zaman işletim sistemi
terminalde prompt karakterini yazar ve sonra terminalden başka iş yüklemesini,
ilkinin üzerine yazarak, bir komut bekler.
Ana bellek yönetim yöntemlerinin çeşitleri, bilgisayar tiplerinin; ana bellek sığası,
teknolojisi, çoklu programlamaya uyumluluğu ve ana bellek yazılımlarının
düzenlenme gücüne bağlı olarak değişir.
İşletim sistemlerinde, ana bellek yönetimi için değişik yöntemler kullanır. Sistem
başarımını yükseltmek için ödenen bedelle orantılı olarak bu yöntemler değişik
yetkinlik ve dolayısıyla karmaşıklık düzeyinde olabilirler. Bu yöntemler;
· Tek ve bitişken bellek yönetimi
· Değişmez bölümlü bellek yönetimi
· Değişken bölümlü bellek yönetimi
· Yeri değişir bölümlü bellek yönetimi
· Sayfalı bellek yönetimi
· Bölümlü bellek yönetimi
· Bölümlü Sayfalı Bellek Yönetimi
Yukarıda verilen sıralamada, her yöntem, kendinden bir önce gelen yöntem önemli bir
sakıncasını ortadan kaldırmak üzere düşünülmüş ve tanımlanmıştır.
Ana belleğin yönetiminde kullanılan yöntemler, çeşitli kıstaslara dayalı olarak
gruplandırılır. Programlara atanan alanların, işletim sırasında yer değiştirmesine imkan
sağlanıp sağlanmasına göre bu yöntemler:
·
Durgun yöntemler
·
Devingen Yöntemler
olarak iki grupta düşünülürler. Bu bağlamda, yukarıda sıralanan ilk üç yöntemin
birinci gruba diğerleri ise ikinci gruba girer. Devingen yöntemler kendi aralarında
programların mantıksal adres evrenlerinin bitişken bir bütün ya da sayfa, kesim gibi
parçalarla ele almalarına göre iki değişik alt gruba ayrılırlar. Buna göre;
·
Bitişken bellek yönetimi
·
Parçalı bellek yönetimi
alt yöntem gruplarından söz edilir. İlk dört yöntem bitişken bellek yönetimi grubuna
girerken diğerleri parçalı bellek yönetimleri olarak bilinirler.
Parçalı bellek yönetimleri de kendi içlerinde;
·
Gerçek bellek yönetimi
·
Görüntü (sanal) bellek yönetimi
olarak, iki alt grupta toplanırlar. Gerçek bellek yönetimleri kapsamında bir program,
tümü ana belleğe yüklenmeden işletime alınamaz. Hem bu koşulun kırılması, hem de
programlara ana belleğin fiziksel boyunu aşma olanağının verilmesi, görüntü bellek
yöntemleri ile sağlanır.
9.2. Tek ve Bitişken Bellek Yönetimi :
Tek ve bitişken bellek yönetiminde ana bellek, işletim sisteminin yüklendiği kesim
dışında tümüyle tek bir işe atanır. Ana bellekte aynı anda tek bir programın yer alıyor
olması tek iş düzenini, doğal bir sonuç olarak ortaya çıkarır. Tek ve bitişken bellek
yönetiminin uygulandığı sistemlerde, aslında bellek yönetiminin varlığından da pek
söz edilemez.
Tek ve bitişken bellek yönetiminde ana bellek, aynı anda, işletim sitemi ile tek bir
kullanıcı programı tarafından paylaşılır. Çoğu kez, işletim sisteminin ana belleği
paylaştığı kullanıcı programı tarafından bozulmasını önlemek üzere kimi önlemler
alınır. Bunu gerçekleştirmek için kullanıcı programına, ana bellekte erişebileceği
alanın ataması yapılır. Adresleme süreci içinde de, programın kendine atanan sınırlar
içinde kalıp kalmadığı denetlenir. Bir sonraki sayfadaki şekilde görüldüğü gibi ana
bellek düz bir sözcük dizisi olarak düşünüldüğünde, işletim sistemi, genellikle bu
dizinin alt (adres) kesimine yüklenir. Bu durumda kullanıcı programına belli bir sınır
değerinin altında adresleme yapma yasağı getirilir. Bunun için merkezi işlem birimi
içinde sınır yazmacı olarak adlandırılan bir yazmaç öngörülür. Kullanıcı programı
işletime alınmadan önce, kullanıcı alanı başlangıç adresi bu yazmaç içine yüklenir.
İşletim boyunca sınır yazmacının çıkışları, erişilen sözcüklerin adresleriyle sürekli
karşılaştırılarak kullanıcı programının, işletim sistemi alanına erişimi denetim altında
tutulur.
Böyle bir durum ortaya çıktığında, kesilmeler işlenirken sözü edilen bir iç kesilme ile
kullanıcı programının işletimi sonlandırılıp işletim sistemine geri dönülür. Açıklanan
bu denetim düzeneği bellek koruma düzeneği olarak bilinir.
Tek ve bitişken bellek yönetimi, tek iş düzeni ve tek görevli işlem ortamlarında
kullanılabilen, bu nedenle de, artık kişisel bilgisayar sistemleri için bile yetersiz kalan
bir
bellek
yönetimi
A n a B e le k
İş le tim
S is te m i
K u lla n ıc ı
P ro g ra m ı
yöntemin
biçimidir.
Bu
A n a İş le m B irim
A d re s Y a z m a c ı
İş le m
iz n i
B o ş A la n
S ın ır Y a z m a c ı
K a r ş ıla ş t ır ıc ı
K o r u m a İç
K e s ilm e s i
D e n e t im B ir im i
dezavantajları;
1. Gelen işlerin tümü ana belleğin ön kısmında yürütülmeye hazır bekleme durumunda
olmaları, kalan kısmın boş beklemesine neden olması kullanıcı alanının tümünün
kullanılmaması anlamına gelir.
2. İş hacmi ana bellek hacmine bağlı olur.
3. Bir işin başlamasından bitimine kadar bilgisayar kaynaklarının her hangi bir iş
yapmadan çalışır halde kalır.
9.3. Değişmez bölümlü bellek yönetimi
Bu yöntemde ana bellek, işletim sistemi alanı ve kullanıcı alanı olmak üzere salt iki
bölüme ayrılmak yerine, işletim sistemi ile birden çok kullanıcı programı arasında
paylaşılır. Bölümlenmiş bellek yönetimine geçmeden önce bilgisayarda çoklu
programlamanın bilinmesi gerekir.
Çoklu programlama
Çoklu programlama, bir bilgisayarın bir seferde birden çok işi ele alabilme
yeteneğidir. Çoklu programlamayla yapılan işlemlerle işin zamanı kısaltılmış olur ve
bellekteki alanlar tam kapasiteyle çalışabilir. Bilgisayar belleğinden en fazla verimi
almak için bellek birden fazla program için bölümlenir. Çoklu programlamada amaç
merkezi işlem birimini mümkün olduğu kadar meşgul etmektir. Yani merkezi işlem
biriminin bekleme süresini azaltmaktır. Merkezi işlem birimi bellekte bir takım işler
yaptıktan sonra verileri diske yazmak için veya başlangıçta diskten okuma için uzun
süre beklemek zorunda oluşu MİB’in başka işler için kullanılabileceğini gösterir.
A görevi
VDU1
MİB
DİSK
MİB
VDU1
B görevi
VDU2
MİB
DİSK
VDU2
MİB
Zaman ®
Şekil 1 - (a) Gerek duyulan sıralı işlemler olarak iki görev.
Kaynak
Etkinlik
VDU1
A görevi
A görevi
VDU2
B görevi
B görevi
DİSK
MİB
A görevi
A görevi
B görevi
B görevi
A görevi
B görevi
Şekil 1 - (b) İki görevin zamanlanması
Şekil 1’de A ve B adlı iki görev ile çoklu programlamanın avantajlarını
göstermektedir. Bu görevlerin yürütülmesi sırasında bir grup farklı işin (örneğin VDU
giriş çıkış, disk erişimi vs.) yerine getirilmesine ihtiyaç duyar. Bu iki görevin her biri
tarafından yapılan işlerin sırası yürütüldükçe, şekil 1 - (a)’da verilmiştir. Eğer B
başlatılmadan önce, A’nın tamamlanıncaya kadar çalışmasına izin verilseydi, merkezi
işlem birimi (MİB) ile ilgisi olamayan işler yapılırken değerli bir işlem zamanı boşa
gidecekti. Şekil 1 - (b)’de kaynakların daha verimli bir kullanımını sağlamak için
görevlerin nasıl zamanlandırılacağı gösterilmiştir. Kutucuklar, verilen bir kaynağın
belli bir görev için ayrıldığı zaman periyodunu gösterir. Örneğin A görevi merkezi
işlem birimini ilk defa kullandıktan sonra, diske erişir. Diske, A görevi tarafından
erişilirken, B görevi işlemcinin kontrolünü alabilir.
Şekil 2 - (a) Her bölme için ayrı giriş kuyruklu sabit bellek bölümleri . (b) Tek
giriş kuyruklu sabit bellek bölümleri
Çokulu giriş
Kuyruğu
Bölüm 4
Bölüm 4
700 K
Tekli giriş
Kuyruğu
Bölüm 3
Bölüm 3
400 K
Bölüm 2
Bölüm 1
İşletim
sistemi
Bölüm 2
200 K
100 K
0
(a)
Bölüm 1
İşletim
sistemi
(b)
Değişmez bölümlü bellek yönetiminde ana bellek, işletim sistemi ve kullanıcı alanları
olmak üzere bitişken, irili ufaklı, birden çok bölüm olarak düzenlenir. En kolay yol
basitçe belleği n bölümlere (eşit olamayacak şekilde) ayırmaktır. Sisteme bir iş geldiği
zaman, onu tutmak için yeterli derecede geniş olan en küçük bölüm için sıraya
konulur. Şekil 2 - (a)’da sabit bölümlerin ve giriş kuyruklarının görünüşleri
gösterilmektedir. İçeri gelen işler büyüklüğüne göre kuyruklarda tutulması boş bölüm
olsa dahi sırada bekler.
Şekil 2 - (b)’de alternatif organizasyonda gösterildiği gibi tek bir kuyruğu korumaktır.
Ne zaman bir bölme serbest olursa, kuyruğun önüne en yakın olan ve en uygun iş boş
bölmeye yüklenir ve çalıştırılır.
Şekil
3
Değişmez
-
Bölümlü
Bellek
Yönetimi
A n a B e lle k
A n a İ ş le m B ir im i
İş le tim
S is te m i
T aban Y azm acı
T avan Y azm acı
A d res Y azm acı
1 . B ö lü m
2 . B ö lü m
3 . B ö lü m
K a r ş ıla ş tır ıc ı
İş A la n ı
B e lle k K o r u m a İç
İş le m İz n i
B o ş A la n
4 . B ö lü m
K e s ilm e s i
D e n e tim B ir im i
Şekil 3 - de bir iş, işletime alınmadan önce, ana bellekte kendisine, boyuyla uyumlu bir
bölüm atanır. İş, kendisine atanan bu bölümü, işletimi başlamadan önce belirlenen
boylarını sistem işletime kapanana değin korurlar. Başka bir deyişle ana belleğin
düzeni, işletimin başındaki görünümünü, işletim sürecinde korur. Bu görünüm
gerektiğinde sistem işletmeni tarafından, işletimin başında yeniden düzenlenebilir. Bu
düzenleme bölümlerin boyları ve sayıları değiştirilerek yapılır.
Tek ve bitişken bellek yönetiminde olduğu gibi, bu yöntemde de, kullanıcı
programlarının işletim sistemine ayrılan alanı bozmalarının engellenmesi gereklidir.
Ancak burada bir de, kullanıcı programlarının birbirlerine karşı korunması gerekir. Bu
amaçla, merkezi işlem biriminde bir taban, bir de tavan yazmacı öngörülür. Bu
yazmaçlar, çok iş düzeni çerçevesinde, MİB’i kullanan işin, ana belleğe erişimde
aşmaması gereken alt ve üst adres değerlerini tutarlar. Her bellek erişim döngüsünde,
erişilen bellek sözcük adresi bu iki değerle karşılaştırılarak taşma denetlenir. Taşma
durumunda, bir önceki yöntemde olduğu gibi, ilgili işin işletimi sonlandırılır. Taban ve
tavan olarak iki sınır yazmacının kullanılması, bu yönteme çift yönlü koruma imkanı
sağlar. MİB’in her yeni göreve (işe) anahtarlanışında bu yazmaçlar, işletim sistemi
tarafından, ilgili işin taban ve tavan değerleriyle günlenmek zorundadır.
9.4. Değişken bölümlü bellek yönetimi
Bu yöntemin temel ilkesi, bölümlerin, konum ve boyları itibarıyla, işlerin görevlere
dönüştürülüp sisteme sunuluşları aşamasında, devingen olarak yaratılmasıdır. Bu
yöntemle bir görev hazır görevler kuyruğuna ilk kez bağlanacağı zaman, gerektirdiği
büyüklükte bir alanın, ana bellekte kullanılmayan boş alanlar içinde bulunması ve yeni
bir bölüm olarak bölüm tanım çizelgesine katılması gerçekleşmiştir. Görev iskeleti bu
bölümle ilgili (bölüm başlangıç adresi, boyu gibi) değerlerle günlenir. Bu yöntemde
görevlere atanan bölümlerin yanı sıra, bu bölümler arasında kalan boş alanların da
izlenmesi gereklidir. Bu nedenle, bölüm tanım çizelgesinin yanı sıra, bir de boş alan
çizelgesi tutulur. Bölüm tanım çizelgesi bölümlere atanan bölümlerin bilgilerini, boş
alan çizelgesi de bölümler arasında boş bitişken alanlara ilişkin konum, boy gibi
bilgileri tutar (Şekil 1).
Yeni bir görev hazır görevler kuyruğuna bağlanacağı zaman bellek yönetici devreye
girer. Boş alan çizelgesi taranarak görevin gerektirdiği büyüklükte boş bir alan
bulunmaya çalışılır. Böyle bir alan bulunduğunda, bölüm tanım çizelgesi bu alanın
başlangıç adresiyle günlenir. Bu alandan arda kalan kesimin başlangıç adresi ise, boş
alan çizelgesindeki yeni boş alan başlangıç adresini oluşturur.
Bölüm
Böl. Baş.
Adresi
0
1
2
3
4
5
6
0000H
80000H
90000H
F0000H
Boş
Bölüm
Ana
Durum
Alan
Boyu
Bellek
Boyu
128
K
0000H 256
B
20000H 256
64
K
256
K
80000H
B
B
64
K
90000H
Boş Alan Baş.Adresi
20000H
D0000H
-
7
8
9
-
-
B
B
B
F0000H
FFFFFH -
Şekil 1 - a) Değişken Bölümlü Bellek Yönetimi
Bölüm
Böl. Baş.
Adresi
0
1
2
3
4
5
6
7
8
9
0000H
20000H
80000H
90000H
F0000H
-
Boş
Bölüm
Ana
Durum
Alan
Boyu
Bellek
Boyu
128
K
20000H 128
128
K
40000H 256
64
K
256
K
80000H
B
90000H
B
64
K
90000H
B
B
F0000H
B
FFFFFH -
Boş Alan Baş.Adresi
40000H
D0000H
-
Şekil 1 - b) Değişken Bölümlü Bellek Yönetimi
Şekil 1 - (a)’da, sistemde 3 değişik görevin çalıştığı örnek bir durum gösterilmiştir.
Buna göre toplam fiziksel sığası 1 MB olan ana bellekte işletim sistemine ilişkin 128
KB’lık bölümün yanı sıra, toplam sığaları (64+256+64) 384 KB olan, bu 3 göreve
ilişkin 3 değişik bölüm yer almıştır. İşletim sistemi ve bölümlerden arda kalan (1024512) 512 KB’lık boş bellek kesimi ise, 256 KB’lık iki bitişken alandan oluşmuştur. 0
numaralı bölümün işletim sistemine;
2,3 ve 6 numaralı bölümlerin ise görevlere atandığı varsayılmıştır. Bu aşamada, 128
KB’lık yere ihtiyaç duyan yeni bir görevin sisteme sunulduğu düşünülmüştür. Şekil 1 (b)’de boş alan çizelgesi taranarak ilk 256 KB’lık boş alanın ilk 128 Kb’lık
kesiminin, 1 numaralı bölüm olarak bu yeni göreve atandığı; bunun sonucunda, bölüm
tanım çizelgesinin boş işaretli 1 numaralı satırı ile boş alan çizelgesinin kullanılan boş
alana ilişkin ilk satırının yeni değerle günlendiği gösterilmiştir.
Değişken bölümlü bellek yönetiminde yeni bir görev hazır görevler kuyruğuna
bağlanacağı zaman, bu görevin gerektirdiği yer, boş alan çizelgesinden seçilirken
çeşitli algoritmalar kullanılır. Bunlar genelde 3 tanedir. İlk ikisi, daha önce değişmez
bölümlü bellek yönetimini kapsamında açıklanan ve göreve, ana bellek alanı olarak ya
ilk uyan ya da en uygun boş alanın atanmasını sağlayan algoritmalardır. Boş alan
çizelgesinin düzenleniş biçimi bunlardan hangisinin kullanılacağını belirler. Örneğin
bu çizelge boy sırasında tutuluyorsa kullanılan algoritma en uygun alan (best fit)
algoritmasıdır.
Şekil 1’de boş alan çizelgesi boy sırasında tutuluyor olarak gösterilmiştir. İlk uyan
(first fit) algoritmasından en uygun alan algoritmasına geçiş, belleğin parçalanma
problemini hafifletmeyi amaçlar. Kimi durumlarda görevlere, gereksedikleri yere
karşılık en büyük boş alanı atama yaklaşımı da kullanılır. Bu yolla, zaten
engellenemeyen parçalanmanın diğer görevler için kullanılabilir büyüklükte bitişken
boş parçalar yaratması amaçlanır. Bu algoritma en büyük alan (worst fit) atama
algoritması olarak bilinir.
9.5. Yeri Değişir Bölümlü Bellek Yönetimi
Yeri değişir bölümlü bellek yönetimi kapsamında, mantıksal adreslerden fiziksel
adreslere geçişi işletim aşamasına taşıyabilmek amacıyla, MİB’e yer değiştirme taban
yazmacı olarak adlandırılan özgün bir yazmaç eklenir. Yeri değişir amaç programlar
ana bellekte kendilerine atanan bölümlere oldukları gibi hiçbir değişiklik yapılmadan
yüklenirler. Başka bir deyişle, konuma duyarlı öğeler yükleme sonrası program başına
(sıfıra) göreli adres değerlerini içermeyi sürdürürler. Her bellek erişim döngüsünde, bu
adres değerleri, yer değiştirme taban yazmacı içeriğine eklenerek erişilen fiziksel
adresler elde edilir. Bir görev ana işlem birimine anahtarlanacağı zaman yer
değiştirme taban yazmacının içeriği, ilgili bölüm başlangıç adresiyle günlenir. Böylece
işletim sırasında program başına göreli içerikler, bölüm başlangıç adreslerine
eklenerek bellek başına göreli saltık değerler elde edilmiş olur. Program başına göreli
mantıksal adreslerden fiziksel adreslere geçiş adres dönüştürme işlemi olarak bilinir.
Yeri değişir bölümlü bellek yönetiminde bellekte parçalanmayı önlemek üzere
bitiştirme işlemi, ya her görevin işletiminin bitiminde ya da işletime sunulan işlere
bellekte yer bulunamadığı durumlarda gündeme gelebilir. Bitiştirme işlemlerini her
işletim bitişinde yinelemek, ana belleği çok verimli kullanmayı amaçlarken işletimi sık
sık durdurarak sistem hızının ve kullanılabilirliğinin aşırı düşmesine neden olur.
Bitiştirme işlemlerine, ana bellekte yer ihtiyacı oluştukça başvurmak daha anlamlıdır.
Bu ihtiyacın ortaya çıkışı bellek yöneticisi tarafından belirlenir.
Diske taşıma (Swapping) : Bazı durumlarda bitiştirme işlemleri de bellekte gerekli
büyüklükte boş bitişken alan yaratmak için yeterli olmaz. Sisteme sunulan iş, o an
sisteme işletimde olan işlerden daha öncelikli ise, görev tanımlarını yaparak hemen
işletime alınmasını gerektirir. Kimi az öncelikli görevlerin, işletimleri sonradan
tamamlanmak üzere geçici olarak diske taşınması boş bellek alanı oluşturmak için
başvurulan bir yol olabilir. Bu yolla açılan boş bellek alanları yeni görevlerin
tanımlanabilmesine
ve
öncelikli
işlerin
çalışmasına
olanak
sağlar.
İşletimi
tamamlanmamış bir görevin, daha öncelikli görevlere ana bellekte yer açmak üzere,
geçici olarak diskte, bu amaçla öngörülen alanlara taşınmasına diske taşıma denir.
Ana bellekte yer açmak için diske taşınacak görevin belirlenmesi gerekir. Bu belirleme
doğal olarak öncelikle, değişik bekleme kuyrukları üzerinde bekleyen görevler
arasından yapılır. Bu durumda, gerekli yeri sağlayabilen en düşük öncelikli görev
bellekten çıkarılacak görev olarak seçilir. Diske taşınan görev yeniden ana belleğe
döneceği zaman, kendisine atanan alana taşınmak zorundadır. Bellek yönetim
yöntemlerinin hepsinde bu tip değişme olayı gerçekleşir. Anacak bu işlem zaman
paylaşımı kavramıyla çokça ortaya çıkabilir.
9.6. Sayfalı Bellek Yönetimi
Sayfalı bellek yönetiminde görevlerin mantıksal adres evrenleri, birbirini izleyen, eşit
uzunlukta parçalardan oluşur. Bu parçalar program sayfası olarak adlandırılır.
Kullanıcı gerçek bellek alanını gizleyen ve oldukça büyük bir ana bellek izlenimi
veren durumla (Sanal Bellek) karşı karşıyadır. Sanal bellek alanı ve gerçek bellek alanı
için ayrı adresler kullanılır. Bellek adresleri gerçek (reel) adres ve program tarafından
üretilen adreslerde sanal adres olarak adlandırılırlar. Sanal sayfa adreslerini gerçek
sayfa adresine dönüştürmek için 3 temel donanım tekniği kullanılır. Bunlar; direk
haritalama, birleşik haritalama ve küme-birleşik haritalama teknikleridir.
Gerçek ve sanal bellek alanlarının ikisi de sayfalar olarak beliren kelime bloklarına
bölünmüşlerdir. Tüm sayfalar aynı boyutta olup dizayna bağlı olarak 64 byte ile 4 KB
arasında değişebilir. Her bir sanal ve reel bellek adresi “sayfa alanı” diye ve sayfa
alanı içerisinde “satır alanı” diye bir kelimeye bölünür. İşlemci tüm belleğin direk
olarak adreslenebileceğini kabullenen program bağımlı sanal adresler üretir. Her hangi
bir anda, her bir sanal adres ya ana bellekte yada ikincil bellekte karşılığı olan bir
adrese karşılık gelir ve “sayfa tabloları” sanal ve reel sayfalar arasındaki karşılıkları
kaydetmek amacıyla tutulurlar.
Yandaki
şekilde ana
bellekte 32
ve
ikincil
bellekte 192
sayfalı
bir
sistemin
fotoğrafını
(şeklini)
göstermekte
dir
(Yeni
sistemlerde
daha
fazla
sayfalar
olabilir
fakat
kavram aynıdır). İkincil bellek sayfa adresleri 32’ den başlayarak gösterilmiştir. Sayfa
tabloları sistemde sayfaların olası dağılımıyla birlikte gösterilmiştir.
Sanal sayfaların reel sayfalarla eşlenmesinde bazı sanal sayfalar eşlenmemiştir (yani
kullanılmamıştır). 31 nolu reel sayfa, yani ana bellekteki son sayfa, şu an boştur.
Örneğin 3 nolu sanal sayfa işlemci tarafından işlenmiş olsun önce donanım harekete
geçer ve söz konusu sayfanın ana bellekte olup olmadığını kontrol eder. Donanım
sayfanın o an 1 nolu reel sayfada bulunduğunu ortaya çıkarır ve dolayısıyla sayfaya
erişebilir. Fakat 7 nolu sanal sayfa işlemci tarafından istenirse arama adı geçen
sayfanın o an ana bellekte bulunmadığını gösterir ve dolayısıyla yazılım rutini
sayfanın yerini ikincil bellekte bulmak için harekete geçer. Bu durumda sayfa ikincil
bellekte 34 nolu sayfada bulunur. Sayfa ana bellekteki 31 numaralı boş (reel) sayfaya
transfer edilebilir ve bundan sonra bu sayfaya erişebilir. Bu aşamadan sonra şu an
bellek doludur. Eğer ikincil bellekteki diğer bir sayfaya ihtiyaç duyulursa bu yeni
sayfa ana belleğe getirilmeden önce ana bellekte var olan bir sayfa ikincil belleğe
gönderilmelidir. Eğer ikincil belleğe gönderilecek o sayfanın geçerli bir kopyası ikincil
bellekte zaten varsa buna gerek yoktur. Bundan sonra ana bellek üzerine kolayca yeni
bilgi yazılabilir. Sanal sayfa numarasını ona karşılık gelen reel sayfa numarasına
dönüştüren ve daha sonra üzerinde duracağımız birtakım olası yollar vardır. Buna ek
olarak eğer gerekliyse ikincil bellekten gelecek sayfaya ana bellekte yer açmak için
ana bellekten çıkarılacak bir sayfayı seçmek amacıyla bir “sayfa yer değiştirme
algoritması” kullanılır.
9.6.1. Sayfa boyutu :
Sayfanın boyutu çarpı TLB’nin (Dönüşüm Arama Tamponu) boyu TLB tarafından
direk olarak işlenebilecek hafıza miktarını verir. Mesela sayfa boyutu 4 KB ve TLB’de
256 giriş var ise bellek kaplama alanı 1 MB olur. Sayfalama sistemlerinde farklı sayfa
boyutları kullanılmıştır. En çok ortak kullanım için 4 KB sayfa boyutu kullanılır. 64
KB’lık sayfa kodlar için uygun olabilirken 512 KB büyük sayfa boyutları veriler için
uygun olabilir. Çok büyük sayfa boyutu örneğin 4 MB’lık bir sayfa boyutu grafik
uygulamalarına uyabilir. Intel Pentium işlemcilerde ya 4 KB’lık yada 4 MB’lık iki
sayfa boyutu seçilebilir. Eğer küçük sayfa boyu seçilirse, sayfaların ana bellek ve disk
bellek arasında transfer süreleri az olur ve değişik programlardan seçilmiş çok sayıda
sayfa aynı anda bellekte bulunabilir.
9.6.2. Yer değiştirme algoritmaları :
Başvurulan sayfa o an ana bellekte değilse yani geçerli sayfa girişi adres
dönüştürücüde (hem TLB hem de ana bellek sayfa tablolarında) bulunmamışsa bir
“sayfa hatası” oluşur. Bu oluştuğunda arzu edilen sayfa, disk bellek sayfa tabloları
kullanılarak disket üzerinde bulunmalı ve ana bellekte yer yoksa ana bellekten
çıkarılacak bir sayfa belirlenmelidir. Disk bellek/ana bellek veri transferleri oldukça
yavaştır ve ayrı bir direk bellek erişim (DMA) kontrolörü veya I/O işlemcisi
vasıtasıyla yapılır.
Gelen sayfaya yer açmak için ana bellekten çıkarılacak sayfayı belirlemede
kullanılabilecek çok değişik yer değiştirme algoritmaları vardır. Aşağıda isimleri
verilen bu algoritmalar işletim sistemi ve ek donanım desteği ile kullanılır.
·
Rassal yer değiştirme Algoritması
·
İlk Giren İlk Çıkar yer değiştirme Algoritması
·
Saat Yer Değiştirme Algoritması
·
Son Zamanda En Az Kullanılan Yer Değiştirme Algoritması
·
Çalışma Kümesi yer değiştirme Algoritması
Ana bellekte tutulan sayfa tanım çizelgesine yapılan ek erişimin süresini kısaltmak için
bu çizelge ana bellekten daha hızlı olan ön bellekte tutulur. Sayfa tanım çizelgelerinin
hızlı bellek birimleri üzerinde saklanması, bu çizelgelere yapılan ek erişimin, sıradan
sayfalara yapılan erişiminden daha hızlı olmasını sağlar.
9.7. Kesimli Bellek Yönetimi
Sayfalı bellek yönetiminde, programların mantıksal adres evrenlerini eşit uzunlukta
sayfalara ayırmak ve bu sayfaları ana bellekte bitişken olma zorunluluğu bulunmayan
fiziksel sayfalarla eşleştirmek ilkesi, görevlere atanacak bitişken bellek parçalarını
küçülterek kullanılmayan en küçük parçayı bile değerlendirebilmeyi amaçlar.
Görevlere atanacak bitişken bellek parçalarını küçültmenin bir yolu da program adres
evrenlerini bölümlere ayırmaktır.
Bölümlemenin amacı, programları bellekte organize ederek, işletim sisteminin
programları ana ve disk bellekte yerleştirip, yetkisiz erişim/çalıştırmadan koruma
sağlamaktır. Bellek hiyerarşisini otomatik bir yolla yönetmek için donanım güdüsüne
sahip sayfalamanın amacından bu amaç farklıdır. Komple programların yeniden
yerleştirilebilmesi için programlar bölümlerin içine yerleştirilmişlerdir. Bir bölüm
ardışık yerleşimlerden oluşan bir bloktur. Her bölümün uzunluğu 0’dan izin verilen
herhangi bir maksimum değere kadar olabilir. Programlar farklı boyutlarda
olduklarından bölümlerde farklı boyutlarda olabilirler. Merkezi işlem birimi tarafından
üretilen her bir adres, bir bölüm (segment) numarası ve o bölüm içindeki yerleşimden
meydana gelir.
Bölümler, programlar içinde, içerikleri yönünden mantıksal bütünlüğü bulunan
parçalara verilen addır. Programlar, örneğin ana yordamın bulunduğu bölüm; alt
yordamların bulunduğu bölüm; değişken, dizi, dizgi gibi, verilerin topluca tutulduğu
bölüm gibi değişik türde bölümlerden oluşmuş biçimde düşünülebilir. Programları
oluşturan bu bağımsız bölümlerin birbirleriyle bitişken olarak düşünülmeleri de
gerekmez. Bölümlerden oluşan programlar içindeki adresler, sayfalama yöntemine
benzer biçimde bölüm kimliği ve bölüm içi adres olarak, iki bileşenden oluşur. Sayfalı
ve kesimli bellek yönetimleri birbirlerine çok benzerler. Ancak bu iki yönetim biçimi
arasında önemli temel ayrımlar vardır;
·
Programların mantıksal adres evrenleri: sayfalı bellek yönetiminde eşit uzunlukta
sayfalara, Bölümlü bellek yönetiminde ise değişik uzunlukta, mantıksal bütünlüğü
taban alan bölümlere ayrılmaktadır.
·
Bölümlü bellek yönetiminde bölümler, sistem programcılarının programlarını
oluştururken
doğrudan
kullandıkları,
sayılarını
ve
adlarını
özgürce
tanımlayabildikleri, üst düzey kullanıcıların ise amaç programlarına, derleyiciler
tarafından yerleştirilen, bu yolla programların mantıksal adres evrenlerini bölümler
biçiminde düşünmeyi gerektiren nesnelerdir. Sayfalı bellek yönetiminde sayfa
kavramı, her düzeyden kullanıcıya saydam bir kavramdır. Sayfalama, derleme
aşamasında otomatik olarak yapılan, programın mantıksal adres evrenini mekanik
biçimde eşit uzunluktaki parçalara bölen bir işlemdir.
9.7.1. Bölüm uzunluğu
Farklı bölümler farklı uzunluğa sahip olabilirler. Bölümler genelde 64 KB
uzunluğundadır. Bölüm içindeki her hücreyi göstermek için 2 Byte’lık tamsayılar
kullanılır. Bu şekilde bölüm (segment) içindeki hücreleri adreslemek için kullanılan
sayılara offset adı verilir. Programların belirli bir bölümün bitiminin ötesinde bir
adrese başvurusunu engellemek için her bölümün uzunluğu bölüm tablo girişinde
uzunluk alanlarında saklanmıştır. Eğer sanal adresteki offset değeri depolanan
uzunluktan (sınır) büyükse, yani bölümün bitiminin ötesinde bir adrese başvuru
yapılmışsa, genellikle sistem kesmesi formunda bir hata sinyali üretilir. Maksimum
bölüm uzunluğu sistem içine dizayn edilir, yani uzunluk alanı belirli sayıda bitlere
sahip olacaktır. Maksimum bölüm uzunlukları küçük adres alanlı ilk sistemler için 64
KB’dan 32 bit adres alanları için 4 GB’a kadar bir aralıktadır.
Ana belleği yönetmek için işletim sistemi kullanılır ve kullanılmayan alanı listeler
halinde tutar. Yeni bir program yüklenmeden önce işletim sistemi bu listeyi tarar ve
boş alanları tespit eder. Bir sonraki sayfadaki şekilde görüldüğü gibi işletim
sisteminin tutuğu bu tablo, programların neresinde olduğunu değil, yeni yüklenecek
programların nereye yükleneceğini hesaplamak için de kullanılır.
Başlangıç Adresi
Uzunluk
Durum
0 KB
16 KB
Kullanılıyor
16 KB
8 KB
Boş
24 KB
16 KB
Kullanılıyor
40 KB
4 KB
Boş
44 KB
12 KB
Kullanılıyor
66 KB
10 KB
Boş
Şekil - İşletim Sistemi tarafından bölüm listesi
Bölümleme çoğu işlem arasında programların veya verilerin paylaşımına izin verir. Bu
işlemin bir örneği paylaşılmış kütüphanelerdir. Windows sistemlerini kullanan çalışma
istasyonları hemen hemen her programda yeniden derlenen son derece büyük grafik
kütüphanelerine sahiptirler. Bölümlenmiş bir sistemde grafik kütüphanesi bir bölüme
(segmente) koyulabilir ve tüm işlemlerce kullanılabilir. Böylece her işin adres alanında
bulunması ihtiyacı ortadan kaldırılmış olur.
9.8. Bölümlü sayfalı bellek yönetimi
Her iki sisteminde avantajlarından kazanç sağlamak için bölümleme ve sayfalama
birleştirilebilir ve genelde de birleştirilirler. Yani bölümlemenin mantıksal yapısıyla
sayfalamanın ana ve disk bellek arasındaki donanım haritalaması birleştirilir.
Sayfalama, yalnızca bölümleme sisteminin bellek dağıtım problemini basite indirger.
Bölümlemenin ve sayfalama birleştirildiğinde ve mantıksal birimler olarak bölümler
kavramı muhafaza edildiğinde bölümleme “ sembolik bölümleme” veya “bölümleme
isimli uzay” olarak görülür. Her bölüm eş boyutlu birtakım sayfalara bölünür ve ana
bellekle disk bellek arasında temel transfer birimi sayfa olur. Sadece bölümle
metodunda olduğu gibi komple bölümü ana belleğe transfer etmek şart değildir, sadece
ihtiyaç duyulan sayfalar transfer edilmelidir.
DOSYA YÖNETİMİ
DOSYA SİSTEMLERİ
Dosya sistemlerine geçmeden önce, sabit disklerle ilgili bazı tanımlamaları bilmekte
fayda var.
Kafa (Head) : Sabit disklerde okuma/yazma işlemini yapan mekanik parça.
Plaka (Plate) : Bilgilerin yazıldığı parça. Bir sabit disk, birden çok diskten oluşur.
Üste üste gelmiş bu diskler plaka olarak adlandırılır.
İz (Track) : Sabit diskte bulunan plakaların üzerinde gözle görülmeyecek eş merkezli
daireler vardır. İşte bu dairesel çizgilere track (iz) denir.
Sektör (Sector) : İz yapısının bölünmesiyle oluşan ve sabit disk üzerinde
adreslenebilir en küçük alana denk gelen parçaya sektör adı verilir.
Küme (Cluster) : Sektörler üzerinde tanımlanmış en küçük küme olarak
tanımlanabilir. Normalde FAT 16, FAT 32 ve NTFS dosya sisteminde, hard diskteki
bölümün kapasitesine göre formatlama sırasında standart olarak belirlenmiş boyutta
kümeler oluşmaktadır. Cluster'ların boyutunu, cluster'ları kullanan dosya sistemi ve
bölümün kapasitesi belirlenir. Ancak cluster'ların boyutu formatlama sırasında (/Z:n)
parametresi ile elle de ayarlanabilir.
Arayüz (Interface) : Sabit disklerin hangi ara birimi kullandığını belirtir. Şu anda,
EIDE/ATAPI ya da SCSI arabirime sahip olan arabirimler kullanılmaktadır.
RPM (Rotation Speed Moment) : Disklerin dakikadaki dönme hızlarını belirtir. Şu
anda piyasada bulunan IDE sürücüler, 5400 rpm ve 7200 rpm hızlarındayken, SCSI
sürücülerdeki diskin dönme hızı 10000, 15000 rpm hızlarında dolaşmaktadır.
Veri Erişim Hızı (Data Access Time) : Sabit diskteki kafanın, bir veriye erişebilmesi
için bir izden diğer bir ize geçerken kaydettiği zamandır. Kullanılan zaman birimi
milisaniyedir. Bu süre ne kadar kısa olursa o kadar iyidir.
Dosya Yerleşim Tablosu ( FAT ) : Bir diskte bulunan dosyalara ait bilgilerin kayıtlı
olduğu alanları belirtmeye yarar. Bir başka deyişle FAT, bir diskin haritası gibidir.
10.1. Dosya Sistemleri
FAT: Bu tarz dosya sistemleri File Allocation Table - Dosya Atama Tablosu - adli bir
sistem kullanırlar. Bu sistemde partisyon her biri belli miktarda sektör içeren "cluster"
isimli parçalara ayrılır ve hangi dosyaların bu cluster parçalarından hangilerine
yerleştiği, hangi cluster parçalarının bos, hangilerinin dolu olduğu gibi bilgiler FAT
üzerine yazılır. İşletim sistemi de herhangi bir dosyaya erişim yapmak istediğinde
dosyayı bulmak için FAT üzerine yazılan bu bilgilerden faydalanır.
FAT 16: DOS, Windows 3.1 ve OSR2 sürümü öncesi Windows 95 işletim
sistemlerinin kullandığı dosya sistemidir. Eski bir dosya sistemi olduğundan dolayı bir
takım eksikleri ve dezavantajları bulunmaktadır. Bunlardan ilki kök dizininin (root)
sınırlandırılmış olmasıdır. FAT16 sisteminde açılıştaki primary bölüme ait root dizini,
FAT tablosu ve partisyon boot sektörü cluster içinde yer almazlar ve sayısı belli olan
sıralı sektörlerde tutulurlar. Bu sayının belli olması kök dizine yapılacak eklentilerin
belli bir siniri olması sonucunu doğurur. Kısaca alt dizinleri istediğiniz kadar
uzatabilmekle birlikte Birincisi FAT16 bölümlerdeki kök dizinde belli uzunlukta
girişle sınırlandırabilirsiniz. İkincisi, FAT16 dosya sisteminde adresleme, adi üstünde
16 bit olduğundan adreslenebilen maksimum cluster sayısı 65525’tir ve bu
cluster’larin maksimum boyutu 32KB olabilir (aslında cluster sayısı 65536 olmalıdır
ama bazıları özel amaçlar için tutulur). Bu da bizi FAT16 kullanan bir disk ya da
partisyonun 2GB’dan daha büyük olamayacağı sonucuna götürür.
Üçüncüsü, FAT16 elindeki bos sabit disk ya da partisyon alanını bir şekilde elindeki
bütün cluster’lara dağıtmak zorundadır. Bu nedenle sabit diskin boyutu büyümeye
başladıkça cluster boyutu da büyür. Cluster’lar bölünemezler ve ancak tek bir dosya
yahut dosya parçasını taşıyabilirler.
FAT 32: Windows 95 OSR2, Windows 98, Windows 2000 ve Linux tarafından
tanınıp kullanılabilen ve FAT16’dan daha gelişmiş bir dosya sistemidir. İlk olarak
FAT32’de herhangi bir kök dizin sınırlaması yoktur. İkinci olarak FAT32,
FAT16’daki 16 bit adresleme yöntemi yerine 32 bit adresleme yöntemi kullanır. Bu
sayede herhangi bir disk ya da partisyon FAT32 altında 2 TerraByte (yaklaşık 2000
GB) uzunluğunda olabilir. Üçüncü olarak ise FAT32 cluster boyutlarını ufak tutarak
bos alan israfını azaltır. FAT32 altında tek bir dosyanın erişebileceği maksimum boyut
4 GB ile sinirlidir.
NTFS (NT File System): Windows NT ve devamı olan Windows 2000 tarafından
desteklenen bir dosya sistemidir. NTFS, dosya konumlarını FAT sistemindeki gibi bir
ana indeks olarak saklamakla birlikte (MFT, Master File Table) dosyanın yerleştiği
konumları ve diğer bilgileri her cluster’in içinde ayrıca saklayarak daha güvenilir bir
yapı sunar. Ancak bu arada oldukça geniş bir disk haritası oluşturur ve bu bilgiler
önemli bir yer kapladığından dolayı 400MB’den ufak disk yahut partisyonlarda NTFS
kullanılması önerilmez. NTFS, sunucu olarak görev yapan Windows NT ve Windows
2000 işletim sistemlerine ait bir dosya sistemi olmasının gerektirdiği ihtiyaçlar
doğrultusunda daha çok disk güvenliği, stabilitesi ve performansıyla ilgili
iyileştirmeler içerir ve özetle su artı özelliklere sahiptir:
1. Dosya konumlarıyla ilgili bilgileri cluster içlerinde de saklayarak daha güvenli bir
dosya sistemi yapısı sunar.
2. Cluster boyutu partisyon boyutuyla sinirli değildir ve 512 byte değerine kadar
ayarlanabilir. Bu da disk üzerinde dosyaların parçalanmasını azaltarak hem bos alanın
verimli kullanılmasını, hem de özellikle yüksek kapasiteli sabit disklerde performans
artışını beraberinde getirir.
3. Yaklaşık 16 GB’a kadar uzunlukta olan tek parça dosyaları destekler.
4. ACL (Access Control List, Erişim kontrol listesi) özelliği sayesinde sistem
yöneticileri tarafından hangi kullanıcıların hangi dosyalara erişebileceği ile ilgili
kısıtlamaların koyulabilmesini sağlar.
5. Bütünleşik dosya sıkıştırma özellikleri içerir.
6. Uzun dosya isimlerini ve Unicode kaynaklı dosya isimlerini destekler. Unicode,
dosya isimlendirilmesi sırasında karakterlerin tanımlanması için ikilik sistemde kodlar
kullanılmasını öngören bir standarttır. Bu standarda göre Unicode kullanılarak verilmiş
olan dosya isimleri Unicode kullanabilen dosya sistemleri tarafından tam olarak nasıl
hazırlanmışlarsa şekilde görünürler (örneğin Japonca yahut Arapça gibi).
NTFS dosya sistemi kullanan Windows NT ve Windows 2000 sürümleri FAT
sürücüleri görebilir ve bu sürücülerdeki dosyaları okuyabilirler (Windows NT
FAT16’yi, Windows 2000 FAT16 ve FAT32’yi görür). Ancak FAT kullanan
Windows 95, 98 ve DOS gibi işletim sistemleri NTFS bölümlerini göremezler,
dolayısıyla dosya sistemi NTFS olan disk yahut partisyonlara ait verileri okuyamazlar.
Bu nedenle sisteminizde örneğin FAT32 altına kurulmuş bir Windows 98 ve NTFS
partisyona kurulmuş olan bir Windows 2000 varsa Windows 2000 FAT32 partisyona
kurulu olan Windows 98’e ait dosyaları görebildiği ve bu sürücüye bir isim verebildiği
halde, Windows 98 NTFS altındaki Windows 2000 dosyalarını göremeyecek ve bu
partisyonu bir disk gibi algılayamayacaktır. Bu nedenle bu sürücüye herhangi bir
sürücü ismi vermez.
HPFS (High Technology File System): OS/2 işletim sistemi ve eski NT sürümleri
tarafından kullanılan bir dosya sistemidir.
NetWare File System: Novell, NetWare işletim sisteminin kullandığı dosya
sistemidir. Partition Magic programı NetWare 3.x ve 4.x bölümlerini görebilir. Ancak
üzerlerinde hiçbir işlem yapmaz. Bu nedenle bu konuya çok fazla eğilmeyeceğim,
çünkü herhangi bir işlem deneme imkanım olmayacak.
Linux Ext2 ve Linux Swap: Linux Second Extended Filesystem (Linux Ext2) ve
Linux Swap dosya sistemleri, Unix bazlı işletim sistemi olan Linux’un kullandığı
dosya sistemleridir. Özet olarak Ext2 dosya sisteminin desteklediği özellikler arasında
4 TerraByte disk yahut partisyon desteği, gerektiğinde 1012’ye yükseltilebilen 255
karakter uzunluğunda dosya isimlerinin desteklenmesi, 2 GB büyüklüğüne kadar olan
dosyalarla çalışabilme sayılabilir. Linux Swap ise Linux işletim sisteminin takas
dosyasını yerleştirmek için kullandığı dosya sistemidir. Linux yapısı gereği kurulum
sırasında takas dosyası için ayrı bir partisyon açılmasını ve bu partisyona takas özelliği
verilmesini gerektirir. Linux bölümleri Linux dışındaki işletim sistemleri tarafından
görünmezler ve dolayısıyla bulundukları sürücü yahut partisyona Linux dışındaki bir
işletim sisteminde isim verilmez.
10.2. Dosya Yönetimi :
Ana bellek dışında kalan veri kümeleri kütük (dosya) olarak adlandırılır. Bu nedenle
ikincil bellekler daha geniş anlamıyla giriş/çıkış birimleri üzerinde tutulan verilerin
yönetimi kütük yönetimi kapsamında ele alınır.
Kullanıcılar, kaynak ve amaç programlar, veriler, yazılı metinler gibi veri kümelerini
tutan kütüklerinin doğrusal bir tutanak veya byte dizisi olarak düşünürler. Ancak
bunlar ikincil bellekler üzerinde kaynak kullanım verimliliği yönünden fiziksel olarak
değişik silindir, sektör hatta sürücü ve sistemler üzerinde yer alabilirler. Bu durum
kullanıcıların programlarını mantıksal olarak ard arda gelen sayfalardan oluşuyormuş
gibi düşünmelerine, ancak bu sayfaların ana bellekte bitişken olmayan boş bellek
sayfalama serpiştirilmesine benzer. Bunun gibi kullanıcılar kütüklerini oluşturan
tutanakların konumlarını kütük başına görevli olarak düşünürken, bunların yer aldığı
disk öbeklerinin kütüğün bulunduğu sürücü başına göreli silindir, kafa, sektör
üçlüsünden oluşan mutlak bir adresi bulunur.
Kullanıcılara kütükleri üzerinde düşüncelerinde gerçekliği olan, mantıksal yapılar
çerçevesinde işlem yapma olanağı, mantıksal yapılarla fiziksel yapılar arasında geçişi
sağlayan kütük yönetim sistemince verilir. Bu işlem kullanıcılara dosyaları üzerinde
kolay işlem yapma olanağı sağlarken, bu kütüklerin saklandığı ikincil bellekleri de
verimli bir şekilde kullanmayı amaçlar.
Bu amaçla ikincil belleklerin düzenlenmesi, buralardan kütüklere yer sağlanması, boş
alanların izlenmesi, kütüklerin ikincil bellek üzerinde yerleşimlerinin erişimin en hızlı
olacağı biçimde düzenlenmesi vb. kütük yönetimi kapsamında ele alınır. Bunun
yanında sistemde saklanan kütüklerin güvenliğinin gözetilmesi de zorunludur. Bu
bağlamda, kütüklere erişim ve paylaşım haklarının belirlenmesi ve bunların
denetlenmesi lazımdır.
Yukarıda açıklandığı biçimiyle kütük yönetim sisteminin temel işlevleri üç maddede
toplanmıştır :
1 - Mantıksal kütük yapılarından fiziksel yapılara geçişin sağlanması.
2 - İkincil belleklerin verimli kullanılmasını sağlanması.
3 - Kütüklerin paylaşılması, korunması ve kurtarılması ile ilgili araçların
sağlanması.
10.3. Kavramsal Kütük İşlemleri :
İşletim sistemi kullanıcıların düşüncesinde gerçekliği olan yalın kütük modelleri
üzerinde kavramsal işlem yapmaya olanak verir. Kavramsal kütük işlemleri
kullanıcılara işletim sistemince değişik katmanlarda, değişik soyutlama düzeyleriyle
sunulurlar. Kavramsal kütük işlemleri, işletim sistemleri komutları ve sistem çağrıları
olmak üzere ikiye ayrılırlar.
Sistem Komutlarıyla Gerçekleştirilen Kavramsal İşlemler
Kütük ( Dosya ) İşlemleri : Create, Delete, Rename, Attributes, Copy, Type, Mounth,
Dismount, Compose, Backup, Restore
Kılavuz Dizin İşlemleri : Listeleme, Oluşturma, Silme, Dizinler Arası Geçiş, Dir
a ) Sistem Çağrılarıyla Gerçekleştirilen Kavramsal İşlemler
Kabuk katmanının görevi kullanıcıların girdiği komutların yorumunu yaparak istenilen
işlemi belirleme ve bu işlemle ilgili çağrıları çalıştırmaktır. Sistem komutlarının
işletilmesinde kullanılan düzenek sistem çağrı düzeneğidir. Sistem çağrılarının
doğrudan kullanımı sistem programlarını içeren özel bir kullanıcı sınıfına açıktır.
Sıradan programcıların üst düzey programlama dilleriyle tanımladıkları kütük işlemleri
ise derleme aşamasında derleyiciler tarafından sistem çağrılarına dönüştürülür. Kütük
işlemlerinde en çok kullanılan sistem çağrıları; open, close, sequaltiolread,
sequentiolwrite, random read, random write, seek.
b ) Klasik Kütük İşlemleri
Şekilde görüldüğü gibi herhangi bir kütük üzerinde, herhangi bir işlem yapmadan
önce, kütük açma işleminin gerçekleştirilmesi başka bir deyişle program içinde geçen
simgesel kütük kimliğinin, fiziksel kütükle eşleştirilmesi gereklidir. Bu işlem bir kere
gerçekleştikten sonra ilgili kütüğün belirli sayıda tutanağı sıradan okunup
yazılabilirler.
b: Mantıksal tutanak nosu istenene değere güncellenerek rastgele okuma-yazma işlemi
gerçekleştirilebilir.
c : Mantıksal tutanak nosu sıfırlanarak sıradan okuma-yazma işlemleri yinelenebilir.
10.4. Diskin Fiziksel Yapısı :
Kütük yönetimi sisteminin temel işlevlerinden biri, kütüklerin, kullanıcıların
düşüncesinde gerçekliği olan mantıksal yapılarının, ikincil bellekler üzerindeki fiziksel
varlıklarıyla eşleştirilmesidir.
Disk birimleri, tüm giriş/çıkış birimlerinde olduğu gibi, arabirim ve sürücülerden
oluşur. Disk sürücüleri bir ya da birkaç dönen plaka ,okuma-yazma kafaları ve bunları
denetleyen elektronik ve elektromekanik aksamdan oluşmaktadır. Veriler diskte
plakaların yüzeylerindeki mıknatıslı ortama, iz olarak adlandırılan iç içe çemberler
biçiminde yazılıp okunmaktadır.
Plakalar üzerindeki verilerin okunup yazılması, okuma-yazma kafaları aracılığıyla
gerçekleştirilmektedir. Disk birimlerinde, genellikle birden çok kafa bulunmaktadır.
Okuma-yazma kafaları hareketli ve hareketsiz olmak üzere iki biçimde olabilmektedir.
Plakalar üzerinde her ize bir kafa öngörülmesi durumunda, kafaların hareket etmesine
gerek duyulmaz. Bu tür disk sistemlerinde okuma-yazma kafaları hareketsizdir. Her
yüzeye ilişkin kafa sayısının iz sayısından küçük olması durumunda ise kafaların izler
arasında, yatay olarak hareket etmesi gerekir. Çoğu disk sisteminde, ekonomi
nedenlerle kafa sayısı iz sayısının çok altındadır. Bu sistemler hareketli kafalara sahip
sistemlerdir.
Disk sürücüleri, ana işlem birimi ve ana bellek ikilisiyle, arabirimler ya da kanallar
aracılığıyla bütünleşmektedir. Bu yapılarda sürücü-arabirim ikilisi sisteme SCSI (
Small Computer System Interface ) gibi standart bağlantılarla bağlanmaktadır. Bu gibi
sistemlerde, arabirim düzeyinde cache olarak adlandırılan, çoğu kez birkaç izlik veriyi
saklayabilen bellek birimleri de bulunmaktadır. Disk sürücüden, örneğin okuma
işlemlerinde, okunmak istenen veri öbeği, arabirim tarafından önce bu bellekte
aranmakta bulunamazsa diske erişim yapılmaktadır. Ortalama erişim süreleri, bu
bellek sayesinde, büyük oranlarda düşmektedir.
Diskte herhangi bir sektör içeriğine erişim süresi, ilgili okuma-yazma kafasının
sektörün bulunduğu iz üzerine taşınma süresi, sektörün kafa altından geçmesinin
beklendiği süre ve verinin sürücüden ana belleğe aktarım süresi toplanarak bulunur.
Sektörlerin sürücü üzerindeki fiziksel adresleri silindir-kafa-sektör üçlüsü ile
belirlenir.
10.5. Dosya Yönetimi Sisteminin Ele Alınışı
Kütük yönetimi iki kısımda ele alınır. Kılavuz kütükler ve kütüklere diskte yer atama
yöntemleri.
a) Kılavuz Kütükleri : Disk biriminde bir seferde okunup yazılabilen veri birimi öbek
olarak adlandırılır. Çoğu kez birden çok sektör içerir.
Kütükleri oluşturan mantıksal tutanaklar disk içerisine serpiştirilmiş bu fiziksel
öbekler içinde saklanır. Kılavuz kütükler, kullanıcılar tarafından verilen simgesel
kütük kimlikleri ile bu kütüklerin fiziksel öbeklerini ilişkilendirmeye yarayan
yapılardır. Kılavuz kütükler bu bağlamda kütük adları ve bunlarla ilgili fiziksel öbek
adresleri listesi olarak düşünülebilir. Bu listede her kütüğe ilişkin bir satır vardır.Her
satırda ilgili kütük adı ve öbek adresinin yanı sıra kütük türü, öz nitelik bilgileri,
oluşturulma ve günleme tarihi gibi bilgiler bulunur. Kullanıcılar sistem komutlarını
kullanarak sistemde saklanan kütükleri görüntülemek istediklerinde bu kılavuz
kütüğünün dökümünü alırlar. Bu dökümde doğal olarak öbek adresleri gibi kullanıcıyı
ilgilendirmeyen fiziksel erişim bilgileri yer almaz. Bu bilgiler kütüklere fiziksel olarak
erişmek gerektiğinde sistem tarafından kullanılır.
Kütük
Adı
Kütük
Türü
Öznitelik
Bilgisi
Oluşturulma
Tarihi
Günleme
Tarihi
Cluster
Adresl.
b ) Kütüklere Diskte Yer Atama Yöntemleri :
Kütük yönetim sisteminin temel görevlerinden bir tanesi de sistemde disk alanlarının
verimli kullanmasının sağlanmasıdır. Kütüklere diskte yer atamalar cluster ya da
cluster kümesi tabanında yapılır (öbek=cluster). Bu durum sayfalı bellek yönetiminde
belleğin sayfalar dizisi biçiminde ele alınmasına ve görevlere de sayfa atanmasına
benzer. Kütüklere diskte yer atanırken en çok gözetilen kıstas erişim hızıdır. Bir
dosyaya ilişkin tüm cluster’ların aynı silindirde yer alması bu cluster’lara ard arda
yapılan erişimlerde yatay kafa hareketi gerekmez. Kütüğe erişim hızı artar. Bunun
tersine cluster’ları diskin birbirine uzak silindirlere serpiştirilmiş bir kütükten
yapılacak sırada okuma işleminin hızının düşük olacağı açıktır.
Diskte dosyalar yer atama yöntemleri ;
1. Bitişken Yer Atama Yöntemi
2. Zincirli Yer Atama Yöntemi
3. Dizinli Yer Atama Yöntemi
olarak üçe ayrılır.
1 - Bitişken Yer Atama Yöntemi :
Bir kütüğün gereksediği tüm alan fiziksel adresleri ard arda gelen bitişken disk
cluster’ları ile karşılaşır. Kütük oluşturulurken gereksenen toplam alan boyu
belirlenerek atama yapılır.
2 - Zincirli Yer Atama Yöntemi :
Zincirli yer atama yönteminde bir kütüğün sahip olduğu öbek ya da öbek kümeleri
birbirlerine zincirleme olarak bağlıdır. Kütüklere atanan öbeklerin bitişken olma
zorunluluğu yoktur.
3 - Dizinli Yer Atama Yöntemi :
Dizinli yer atama yönteminde kütüklere ilişkin öbek adresleri, dizin öbeği olarak
anılan bir öbek içinde toplanır. Kütüğün kılavuz kütük satırı, dizin öbeğinin adresini
tutar. Kütüklere erişmede önce dizin öbeği okunur. İlgili öbeğin adresi buradan elde
edilerek, ikinci aşamada öbeğin kendisine erişilir.
10.6. Dosya Yönetimi Sisteminin Başarımı ve Güvenirliği
Dosya yönetimi sisteminin başarımı, mantıksal kullanım modeline dayalı işlemlerin
yerine getirilişinde ortaya konan hızla ilgilidir. Dosya yönetim sistemleri, genelde, ana
belleğin yönetiminde yararlanılan, ön bellek kullanımı gibi kimi başarım arttırıcı
yöntemleri dosyaların yönetimine de uyarlarlar. Bu yolla diske yapılan erişimleri
azaltarak ortalama erişim hızlarını yükseltmeyi amaçlarlar.
Kullanıcılar, nitelikli bir bilgisayar hizmeti kapsamında, sistemde sakladıkları
dosyalarının korunacağına ve bunların bilgi bütünlüğünün, kendi hataları dışında
bozulmayacağına inanmak ve güvenmek isterler. Bu güven ortamının oluşturabilmesi
için, dosyaların, kullanıcıların istemi dışında, elektrik kesilmeleri, sistem hataları gibi
nedenlerle bozulmalarına karşı kimi önlemler alınır. Bu önlemler dosya yönetim
sisteminin güvenirliği kapsamında düşünülür.
10.6.1. Disk Ön Bellek Alanlarının Kullanımı :
Dosya yönetim sisteminin başarımını yükseltmenin yolu diske yapılan erişimleri
hızlandırmaktan geçer. Disk biriminden bir öbeğin okunması gerektiğinde, ilgili öbek
bu yastık alanında ise sürücüye erişime gerek kalmadan istem yanıtlanır. Bu düzenek
sürücüye (mıknatıslı plakalara) erişim sayısını azaltarak diske ortalama erişim hızını
yükseltmeye katkı verir. Arabirim düzeyinde yer alabilen bu yastık belleklerin yanı
sıra, bir de ana bellek düzeyinde disk öbeklerini yastıklamaya yarayan ve bu yolla disk
birimine erişimi azaltmayı hedefleyen düzenekler bulunur.
Diske ön bellek alanının yönetiminden, genelde dosya yönetim sistemi sorumludur.
Diske ilişkin okuma ve yazma istemleri bu yönetim katmanına yönlendirilir. Eğer
erişilmesi istenen öbek ön bellek alanında ise istem, bellekten belleğe aktarımla hızla
karşılanabilir. Öbeğin ön bellekte bulunmadığı durumlarda ise diske erişilir. Okunan
öbek, aynı zamanda ön belleğe de yazılır. Diske erişimde ön bellek tekniğinin
kullanılmasının en önemli sakıncası veri bütünlüğünün bozulma riskidir. Kimi
öbeklerin, üzerlerinde yazma işlemi yapılmış olsa bile, ön bellek alanında belirli süre
tutuluyor olmaları, istem dışı elektrik kesimlerinde yitirilme risklerini arttırır.
Diske erişimde ön bellek tekniğinin kullanılması kullanıcılara saydam bir husustur. Bu
nedenle, üzerinde güncelleme yapılan kimi dosya öbeklerinin, ilgili dosya kapatılmış,
güncellemeleri gerçekleştiren görev sonlanmış olsa bile, bir süre, ön bellek alanında
kalmaları, başka bir anlatımla diske yazılmalarının gecikmesi olasıdır. Bu aradaki
elektrik kesilmeleri, sözkonusu öbeklerle birlikte, kullanıcılara açıklaması zor, veri ve
işlem kayıplarına neden olur. Hele kaybedilen öbeklerin, örneğin dizin öbekleri olması
durumunda bu kayıpla çok ciddi boyutlara ulaşır.
Bu gerekçeye dayalı olarak, ön bellek tekniğinin kullanıldığı sistemlerde kimi
önlemler alınır. Bu bağlamda, UNIX işletim sisteminde, sync olarak adlandırılan bir
sistem çağrısı öngörülmüştür. Sync çağrısının işlevi disk ön belleğinde bulunana
günlenmiş öbekleri diske yazmaktır. Sistem işletime açıldığında, update ya da benzeri
bir adla anılan özel bir sistem görevi de işletime alınır. Bu görev, 30-40 saniye gibi bir
sıklıkla ana işlem birimine anahtarlanarak sync çağrısını çalıştırır. Böylece günlenmiş
öbeklerin ön bellekte yitirilme riski azaltılmış olur. Aynı işlev shutdown olarak
adlandırılan sistem kapama komutu ile de yerine getirilir. Bu komut çalıştırılmadan
sistemin kapatılması durumunda da, yine, kimi günlenmiş öbekler yitirilebilir.
MSDOS'ta kullanılan önlem ise başkadır. Burada herhangi bir öbeğe yazma yapılması
durumunda bu öbek hemen diske aktarılır. Bu tür önlemler, ingilizce write-throughcache adı verilir. Güncellenen öbeklerin diske yazılması, doğal olarak, UNIX'in
kullandığı gecikmeli yaklaşıma göre diske daha çok erişim gerektirir.
10.6.2. Dosya Yönetim Sisteminin Güvenilirliği :
Bir bilgisayar sisteminde saklanan dosyaların, kullanıcıların istemleri dışında ortaya
çıkabilecek bozulmalara karşı korunması dosya yönetim sisteminin güvenilirliği
açısından çok önemlidir. Bu güvenirlik, en yaygın biçimde yedekleme işlemleri ile
sağlanır. Bu yolla, sistemde saklanan verilerin birden çok kopyası (yedeği) oluşturulur.
Bir dosya üzerinde ortaya çıkabilecek bozulmaların diğer kopyalardaki bilgilerle
düzeltilebilmesi amaçlanır.
Yedekleme işlemlerinin ortaya çıkardığı zaman darboğazını aşmak üzere bir disk
birimi, başka bir disk birimi üzerinde de yedeklenebilir. Bu değişik biçimlerde
gerçekleşir. Bunun bir yolu, disk birimlerinin eşlenip ikiye bölünerek kullanılmasıdır.
Bu yolla birimin kopyası, eşi olan diğer birim üzerinde saklanır. Bir birimin bozulması
durumunda eşi üzerinde saklanan verilere başvurulur.
Bilgisayar sistemlerinde herhangi bir anda, disklerde saklanan verilerin bütünlüğü,
tutarlılık sınaması yapılarak denetlenir. Tutarlılık sınamaları özel sistem programları
aracılığıyla yerine getirilir. Bu tür programlar, genelde tüm disk öbeklerini dosya
atama çizelgeleri ile boş öbek çizelgeleri içinde izlerler. İşletim sırasında, çeşitli
nedenlerle, kimi disk öbekleri birden çok kütüğe atanmış görünebilir. Kimi öbekler de,
ne boş öbek ne de atama çizelgelerinde yer almayabilirler. Bu tür öbekler dosya
sisteminin bütünlüğünü bozan öbeklerdir. Bu nedenle bu öbeklerle ilgili gerekli
düzeltmeler yapılır.
WİNDOWS 2000 İŞLETİM SİSTEMİ
WIN 2000 BELLEK YÖNETİMİ
11.1. Temel Kavramlar
Win2000 işletim sisteminde, her kullanıcı işleminin kendi sanal adres alanı vardır.
Sanal adres alanları 32 bit uzunluğundadır, böylece her işlem 4 GB'lık bir sanal adres
alanına sahip olur. 2 GB'ın altındaki 256 MB'lık kısım işlem kodları ve verileri için,
kernel
bellek
üzerindeki 2 GB'lık
üstündeki kısım ise,
korumalı bir yolda
kullanılabilir.
Sanal adres alanı,
sabit bir sayfa
boyutu ile
sayfalanmış olmak
isterler. ( Pentium
işlemcilerde bu sayfa
boyutu 4 KB'dır. )
Üç tane kullanıcı işlemi için sanal adres alanı düzenlemesi basit olarak yandaki şekilde
görülmektedir. Her işlemin en alt ve üstten 64 KB'lık kısmı genelde haritalanmaz. Bu
seçim, programlama hataları yakalamaya yardım etmek amacıyla bilerek yapılmıştır.
Win2000'de bu alanları kullanmaya çalışmak bazı hatalara sebep olacaktır. Bununla
beraber eski MSDOS programları emulation modda çalıştığı zaman, bu alanlar
haritalanıp, kullanılabilir.
Kullanıcının özel kod ve verileri 64 KB sınırından sonra başlar. Bu alan aşağı yukarı 2
GB'a kadar uzanmaktadır. 2 GB'ın hemen altında yer alan kısım, bazı sistem
sayaçlarını ve tüm kullanıcılar arasında zaman paylaştıran zamanlayıcıları
içermektedir.
2 GB'ın üzerindeki kısımda kod, veri ve sayfalanmış ve sayfalanmamış bölgeleri
içeren işletim sistemi yer almaktadır. 2 GB'ın üzerindeki kısım, her işlemin sahip
olduğu sayfa tablosu hariç olmak üzere tüm kullanıcı işlemlerinin arasında
paylaştırılmıştır. Bellek alanının 2 GB'ın üzerindeki kısmı yazılabilir değildir ve hatta
çoğunlukla kullanıcı-modlu işlemler için bile okunamayabilir.
Her sanal sayfa şu üç durumdan birinde olabilir: boş, tutulmuş veya kendini adamış.
Bir boş sayfa, güncel olarak kullanımda değildir ve bu sayfaya bir başvuru yapılması
halinde sayfa hatası meydana gelir. Bir işlem başlatıldığı zaman, onun sayfalarının
tamamı, program ve ilk veri işlemin adres alanında yer alıncaya kadar boş durumdadır.
Kod veya veri sayfa üzerinde haritalandığında, sayfa kendini adamış olarak
adlandırılır. Kendini adamış halde bulunan sayfaya başvuru yapıldığında, sanal bellek
donanımı kullanılarak sayfa haritalanır ve eğer sayfa ana bellekte ise başarıya ulaşılır.
Eğer sayfa ana bellekte değilse, sayfa hatası meydana gelir ve işletim sistemi bu hatayı
bularak, doğru veriyi diskten bulup getirir.
Bir sanal sayfa aynı zamanda, rezerve edilmiş durumda da olabilir, bunun anlamı
rezervasyon kaldırılıncaya kadar bu sayfa haritalanamaz. Örneğin yeni bir işletim
dizisi ( thread ) oluşturulduğunda, işlemin sanal adres alanında yığın alanının 1 MB'ı
tutulur, fakat yalnızca bir sayfa kendini adamıştır. Bu tekniğin anlamı, yığın ( stack ) 1
MB'a kadar büyüyebilir, diğer işletim dizileri sanal adres alanının altında ihtiyaç
duyulan bölümü ayıracaktır. Sayfalar boş, tutulmuş ve kendini adamış özelliklerine ek
olarak okuyabilme, yazabilme ve çalıştırabilme gibi diğer niteliklere de sahiptir.
Win2000, aynı anda, aynı dosyanın aynı parçası üzerinde bir veya daha çok işlemi
haritalamak için izin verir, bir sonraki sayfadaki şekilde de görüldüğü gibi bu durum
farklı sanal adreslerde mümkün olabilmektedir. Bellek kelimelerini okuma ve yazma
yoluyla, işlemler diğer işlemlerin her biriyle haberleşebilirler ve çok yüksek bant
genişliği sayesinde veriler üzerinden ileri geri hareket edebilirler. Farklı işlemler, farklı
giriş izinlerine sahip olabilirler.
Burada dikkat edilmesi gereken bir problem vardır. Eğer iki program bir DLL
dosyasını paylaşırsa ve bu programlardan biri dosyanın sabit verisini değiştirse ne
olacaktır ?. Eğer özel bir işlem yapılmazsa, diğeri muhtemelen istenmeyen bu
değişikliği görecektir. Bu problem tüm sayfaların haritalanması yoluyla çözüldü.
11.2. Bellek Yönetimi Sistem Çağrıları :
Win32 API çağrıları, bir işleme sanal bellek alanını yönetmesi için izin veren birkaç
fonksiyona sahiptir. Bu fonksiyonların en önemlileri aşağıdaki tabloda listelenmiştir.
Bu fonksiyonların tamamı, sanal bellekte ard arda gelen iki veya daha fazla sayfanın
bir dizisi ya da tek bir sayfadan oluşan bir bölgede çalışırlar. Bu fonksiyonlar
aşağıdaki tabloda görülmektedir.
Win32 API
Fonksiyonu
Tanımlama
VirtualAlloc
Rezerve edilmiş ya da çalışan bir bölge
VirtualFree
Serbest bırakılmış ya da çalışmayan bir bölge
VirtualProtect
Bölge üzerinde okuma/write/çalıştırma
korumalarını değiştirir.
VirtualQuery
Bölgenin durumu hakkında sorgulama yapar.
VirtualLock
Bellekte kilitlenmiş bir bölge oluşturur.
VirtualUnlock
Olağan biçimde bölgeleri sayfalayabilir.
CreateFileMapping
Dosya haritalama nesnesini oluşturur.
MapViewOfFile
Adres alanının içerisine bir dosyayı haritalar.
UnmapViewOfFile
OpenFileMapping
Adres alanının içerisinde haritalanmış dosyayı
siler.
Önceden oluşturulmuş bir dosya haritalama
nesnesini açar.
İlk dört API fonksiyonu, sanal bellek alanının ayırma, serbest bırakma, koruma ve
sorgulama bölgelerinde kullanılır. Ayrılmış bölge, 64 KB sınırından başlar. Ayrılmış
adres alanının gerçek büyüklüğü 64 KB'den daha az olabilir, fakat sayfa boyutunun bir
katı olmalıdır. Sonraki iki fonksiyon haritalanana bölgeleri kilitleyip, kilidi kaldırmaya
yeteneğine sahiptir. Gerçek zamanlı bir program bu yeteneğe ihtiyaç duyabilir. İşletim
sistemi tarafından konulacak olan bir sınırla, işlemlerin fazla bellek kullanmalarının
önüne geçilebilir. Aslında sayfalar bellekten silinebilir, fakat sadece tüm işlem dışarıda
değiştirildiyse bu mümkün olur. Tabloda görülmemesine rağmen, Win2000 sanal
belleğe sahibi olan işlemden başka işlemlerin de girebilmesi için veren fonksiyonlara
sahiptir.
Son dört API fonksiyonu bellek-haritalama dosyaları için kullanılır. Bir dosyayı
haritalamak için, ilk olarak CreateFileMapping ile bir dosya haritalama nesnesi
oluşturulur. Bu fonksiyon, dosya haritalama nesnesine bir değer döndürür ve opsiyonel
olarak dosya sistemi için bir isim girer, böylece diğer işlem onu kullanabilir. Sonraki
iki fonksiyon haritalama ve haritayı silme dosyalarıdır.
11.3. Bellek Yönetiminin Gerçekleştirilmesi :
Win2000, işlem başına 4 GB’lık sayfalanmış bir adres alanını destekler. Segmentleme
herhangi bir biçimde desteklenmez. Teorik olarak, sayfa boyutları 64 KB’a kadar
ikinin katları şeklinde olabilir. Pentium’larda sanal sayfa boyutları 4 KB ile
sınırlandırılmıştır; Itanium işlemcilerde 8 ya da 16 KB olabilirler. Bunlara ek olarak,
işletim sisteminin kendisi sayfa tablo alanının tüketilmesini azaltmak için 4 MB’lık
sayfaları kullanabilirler.
Bellek yöneticisi, çalışmak için işlem parçacıklarını seçen ve işlemin kendisiyle çok
fazla ilgilenmeyen programcıya benzemez, o tamamen işlemler ilgilenir ve işlem
parçacıkları onu ilgilendirmez. Tüm bunlardan sonra işlemler kendi adres alanlarına
sahiptirler ve bellek ve yöneticisi bu işlemlerle ilgilenir. Şekil 2'deki işlem A için
görülen dört durumda olduğu gibi, sanal bellek alanının bir bölgesi ayrıldığı zaman,
bellek yöneticisi işlem için bir VAD ( Virtual Address Descriptor - Sanal Adres
Tanımlayıcısı) oluşturur.
a ) Sayfa Hatası : Win2000, önceki işletim sistemlerinin kullandığı herhangi bir
sayfalama biçimini kullanmaz. Bir işlem başlatıldığında, işlem sayfalarının hiçbirisi
bellekte değildir. Sayfa hatalarının meydana gelmesi gibi, sayfalar da belleğe dinamik
olarak getirilirler. Her sayfa hatası meydana geldiğinde, kernel'a bir tuzak kurulur.
Kernel, yürütmenin bellek yönetici parçasına geçmesi için bir bağımsız makine
tanımlayıcısı inşa eder.
Sonra bellek yöneticisi işlemin geçerliliğini kontrol eder. Eğer kendini adamış veya
rezerve edilmiş bölgede bir hataya rastlanırsa, VAD'ların listesindeki adreslere bakar,
buna göre sayfa tablosunu bulur veya oluşturur.
Sayfa tablosu girişleri farklı mimariler için farklı olmaktadır. Haritalanmamış sayfalar
da, girişlere sahiptirler, fakat onların formatları biraz daha farklıdır. Örneğin
haritalanmamış sayfa kullanılmadan önce sıfırlanmış olmalıdır ve bu durum sayfa
tablosuna not edilmelidir.
Sayfa hataları beş kategoride ele alınırlar :
1. Sayfa başvurusu gerçekleşmedi.
2. Bir koruma ihlali meydana geldi.
3. Paylaştırılan bir sayfaya yazıldı.
4. Yığının büyüme isteği.
5. Sayfa başvurusu gerçekleşti ancak geçerli bir şekilde haritalanamadı.
Birinci ve ikinci durumlar, hatalı yapılan işlem için geri dönüşün mümkün olmadığı
tehlikeli durumlardır. Üçüncü durum, ikinci durum gibi aynı bulgulara sahiptir, fakat
gerçekleşmesi biraz daha farklıdır. Çözüm yolu sayfayı, yeni bir fiziksel sayfa
yapısına kopyalamak ve haritalamaktır. Dördüncü durum ise, yeni bir sayfa yapısı
tahsis edilmesini ve onun haritalanmasını gerektirir. Bununla birlikte, güvenlik
kuralları sayfanın bir önceki sahibinin işe karışmasını engellemek için sayfanın sadece
sıfırları içermesini ister. Böylece bir sayfada sıfırlar bulunmalıdır veya eğer biri
kullanılabilir durumda değilse başka bir sayfa yapısı derhal ayrılmalı ve
sıfırlanmalıdır. Son olarak, beşinci durum normal sayfa hatasıdır. Çözüm için sayfa
belirlenir ve haritaya dökülür.
b ) Sayfa Yenileme Algoritmaları : Sayfa yenileme algoritmasının çalışması şuna
benzer. Sistem, bellekteki boş sayfaların önemli bir kısmını korumak için çeşitli
teşebbüslerde bulunur, böylece bir sayfa hatası meydana geldiğinde, bir boş sayfa
bellekte yer talep edebilir. Bu stratejinin sonucu olarak, çok sayıdaki disk hatası tek bir
işlemle giderilebilir.
Gerçek sayfa yenileme algoritmaları, sayfaların işlemlerden nasıl uzağa alındığı ve
dört boş listeden birine nasıl yerleştirildiğiyle ilgilidir. Biz şimdi Win2000 boş
sayfalarının nasıl işlediğine bakacağız. Tüm sayfalama sisteminin yoğun olarak
kullandığı çalışma seti kavramının kullanımıyla başlayalım. Her işlem bir çalışma
setine sahiptir. Bu set bellekte haritalanmış sayfalardan meydana gelir ve böylece bir
sayfa hatası meydana gelmeden kullanılabilir.
Her işlemin çalışma seti, iki parametre ile tanımlanırlar: minimum boyut ve
maksimum boyut. Bu sınırla kesin (değişmez) değildir, bir işlem bellekte minimum
değerden daha küçük veya maksimum değerden daha fazla sayfaya sahip olabilirler.
Her işlem, aynı maksimum ve minimum sayfa sayısıyla başlar, fakat bunlar zaman
içerisinde değişebilirler. Ana belleğin büyüklüğüne bağlı olarak, minimum boyutun
default değeri 20 - 50 arasında, maksimum değerin default değeri ise 45 - 345
aralığında yer alır. Bununla birlikte sistem yöneticisi bu değerleri değiştirebilir.
Eğer bir sayfa hatası meydana gelir ve çalışma setinin değeri minimum değerden daha
küçük olursa, bir sayfa eklenir. Yine, bir sayfa hatası meydana gelir ve çalışma setinin
sayfa sayısı maksimum değerden daha büyük olursa, çalışma setinden o sayfalar
çıkarılır. (Bellekten değil). Win2000’nin kullandığı bu yerel algoritmanın anlamı, daha
çok bellek sağlayarak işlemi, diğer işlemlerin etkisinden korumaktır. Bununla birlikte
sistem kendi büyüklüğünü ayarlamaya çalışır. Örneğin, sistem bir işlemin çok büyük
bir bellek istediğini görürse, onun maksimum çalışma setinin büyüklüğünü arttırabilir,
böylece bu algoritma lokal ve globalin bir bileşimi olur. Çalışma setinin
büyüklüğünün de bir sınır olduğu unutulmamalıdır.
Bir başka yönetim seti, denge seti yöneticisidir. Denge seti yöneticisi bellekte yeteri
kadar boş sayfa olup olmadığını kontrol eder. Eğer yeterli boş sayfa yoksa, denge seti
yöneticisi çalışma setini incelemek ve birçok sayfayı kurtarmak için çalışma seti
yönetici parçasını çalıştırır. Çalışma seti yöneticisi ilk olarak işlemleri kontrol etmek
için bir kural belirler. Bu kurala göre işlemler, büyük işlemler, hareketli küçük işlemler
ve ön işlem olarak ayrılırlar.
Daha sonra çalışma seti yöneticisi, seçilen düzende denetleme işlemlerini başlatır.
Eğer bir işlemin çalışma seti onun minimum değerinden daha az ise veya sayfa
hatalarının belirli bir sayısından daha çoğuna maruz kalırsa, işlemin ilerlemesi
durdurulur. Aksi taktirde bir ya da daha fazla sayfa silinir. Silinecek sayfaların
sayısının belirlenmesi, toplam RAM büyüklüğünün karmaşık bir görevidir.
Bir tek işlemcili bilgisayar üzerinde, eğer bir sayfanın başvuru biti açıkça belliyse,
sayaç, sayfanın artışıyla ilgilenir. Eğer ilk bit ayarlanmışsa, sayaç sıfıra ayarlanır.
İncelemeden sonra, sayfalar sayaçlarla birlikte çalışma setinden silinirler. Çalışma seti
parçası (thread) yeteri kadar sayfa yeniden elde edilinceye kadar işlemlerin sınanması
devam eder, sonra thread durur.
Bir çok işlemcili bilgisayarda, başlangıç bitinde çalışmaz, çünkü aktif işlemci son
zamanlarda sayfaya dokunmuş olmamasına rağmen, diğer bazı işlemciler dokunmuş
olabilir. Diğer CPU’nun başvuru bitini sınamak çok pahalıdır. Sonuç olarak, başvuru
biti incelenmez ve eski sayfalar silinmez.
d ) Fiziksel Bellek Yönetimi : Daha önce, dört tane boş liste bulunduğundan
bahsetmiştik. Şimdi bu dört listeyi göreceğiz. Bellekteki her sayfa bir veya daha çok
çalışma seti veya tamamen bu dört listenin ikisinden birinin üzerindedir. Bu listeler
şunlardır:
1. Değiştirilmiş Sayfa Listesi ( Modified Page List )
2. Yedek Sayfa Listesi ( Standby Page List )
3. Boş Sayfa Listesi ( Free Page List )
4. Sıfırlanmış Sayfa Listesi ( Zeroed Page List )
5. Bozulmuş RAM Sayfa Listesi (Bad RAM Page List)
Yedek (temiz) ve değiştirilmiş sayfa listeleri, çalışma setinden yeni çıkarılmış, ancak
hale bellekte bulunan sayfaları tutarlar ve bu sayfaları kullanarak işlemle ilişki
kurarlar. Yedek ve değiştirilmiş sayfa listeleri arasındaki fark şudur: değiştirilen
sayfalar disk üzerinde bir kopyaya sahip değildir, oysa yedek sayfaların disk üzerinde
bir kopyası bulunmaktadır. Boş listeler, herhangi bir işlemler ilgilisi olmayan yedek
(temiz) sayfaların tutulduğu listelerdir. Sıfırlanmış liste üzerinde sayfalar herhangi bir
işlemle ilişkili değillerdir ve bu listeler 0'larla doldurulmuştur. Beşinci liste olan
bozulmuş RAM sayfa listesi ise, ana bellekteki hatalı sayfaların listesini tutar.
Sayfalar, çalışma setleri ve çeşitli listeler arasında, çalışma seti yöneticisi ve diğer
kernel yöneticileri tarafından taşınırlar. Biz bu taşınma işleminin nasıl gerçekleştiğini
ele alacağız. . Çalışma seti yöneticisi, çalışma setinden bir sayfa sildiğinde, sayfa
temizlik durumuna bağlı olarak yedek (temiz) veya değiştirilen (kirli) listenin altına
gider. Bu geçiş şekilde 1 ile gösterilen durumdaki gibidir. Her iki listede bulunan
sayfalar hale geçerlidir, dolayısıyla bir sayfa hatası meydana gelirse ve bu sayfalardan
birine gereksinim duyulursa, sayfalar listeden silinir ve herhangi bir disk giriş/çıkış
işlemi yapılmadan çalışma setinin içerisine geri gönderilerek hata bulunur. Varolan bir
işlemin, paylaştırılmamış sayfaları hatalı olamaz, bu nedenle paylaştırılmamış bulunan
sayfalar boş listeye giderler (3). Bu sayfalar uzun süre herhangi bir işlemle
ilgilenmeden beklerler.
Diğer geçişler, diğer kernel yöneticileri tarafından taşınırlar. Her dört saniyede
değiştirici parça çalışarak, saniyenin belirli bir anında tüm tüm işletim parçacıklarının
işlemlerine bakar. Eğer değiştirici thread işlemler gibi herhangi bir şey bulursa, onların
kernel yığınları şekil 4’de 1.adımda gösterildiği gibi sıkıştırılmaz ve sayfaları yedek
veya değiştirilen listeye taşınır.
Diğer iki thread, haritalanan sayfa yazarı ve değiştirilen sayfa yazarıdır. Bu iki thread
periyodik olarak eğer yeteri kadar temiz (yedek) sayfa varsa, yukarıya bunu bildirirler.
Eğer yoksa, onlar değiştirilen dosyanın en üstünden sayfaları alır, onları diske yazar ve
sonra temiz sayfaya doğru onları taşır (4). Önceki kollar, haritalanan dosyalara yazar
ve sonrakiler sayfalama dosyasına yazar. Bu yazmaların sonucu, temiz sayfaları
listelenmiş sayfalara dönüştürmektir.
Eğer bir işlem bir sayfaya listelenmezse, işlem sayfa ile uzun süre ilgilenmez ve boş
listeye gider (5). Bir sayfada hata meydana geldiğinde, sayfada okunanları tutmak için
eğer mümkünse boş listeden sayfa yapısı alınır (6). Sayfanın gizli bir bilgiyi
içerebilmesi önem taşımaz.
Bu durumda boş bir sayfa yapısına ihtiyaç duyulur ve güvenlik kuralları sıfırlardan
oluşmuş bir sayfa gerektirir. Bu nedenle, başka bir kernel thread’ı olan sıfır sayfa
thread’ı düşük öncelikte çalışır, boş listede bulunan sayfaları siler ve onları sıfırlanmış
sayfa listesine koyarlar (7). Her ne zaman işlemci boşsa ve orada boş sayfalar varsa,
onlar sıfırlanmış olabilir, çünkü sıfırlanmış bir sayfa potansiyel olarak boş sayfadan
daha yararlıdır.
11.2. Win2000'de Giriş/Çıkış
Win2000’nin amacı, çok çeşitli giriş – çıkış aygıtlarını çalıştırmak için bir yapı
sağlamaktır. Güncel giriş aygıtları, klavye, mouse, joystick, tarayıcılar, hatta
kameralar, televizyon kameraları, bar kod okuyucuları ve laboratuar farelerinin çeşitli
türlerini içerir. Güncel çıkış aygıtları, monitörler, yazıcılar, çiziciler, ışıldayıcılar, CDKaydediciler ve ses kartlarını içermektedir. Depolama aygıtları, floppy diskler, IDE ve
SCSI hard diskler, CDROM’lar, DVD’ler, Zip sürücüleri ve teyp sürücülerini
içermektedir. Son olarak, diğer aygıtlar, saatler, ağlar ve telefonları içermektedir.
Şüphesiz gelecek yıllarda birçok yeni giriş – çıkış aygıtları geliştirilecektir, böylece
Win2000 yeni aygıtları kolayca bağlayabilmek için genel bir yapı geliştirir. İlerleyen
bölümlerde giriş – çıkışla bazı olayları inceleyeceğiz.
11.2.1. Temel Kavramlar : IO yöneticisi, tak ve çalıştır idarecisiyle sıkı bir ilişki
halindedir. Tak ve Çalıştır’ın ardında yatan temel düşünce, yolların sıralanmasıdır.
Birçok yollar, PC kartı, PCI, USB, IEEE 1394 ve SCSI’yi kapsayacak biçimde
tasarlanmıştır, böylece tak ve çalıştır yöneticisi her slota bir istek yollayabilir ve orada
aygıt kendini tanıtır. Tak ve Çalıştır yöneticisi kesme seviyeleri olarak donanım
kaynaklarını ayırır, uygun sürücüleri belirler ve onları belleğe yükler. Her birinin
yüklendiği gibi, onun için bir sürücü nesnesi oluşturulur. SCSI gibi bazı yollar için,
teker teker sayma sadece boot sırasında olur, USB ve IEEE 1394 gibi diğer yollar için
herhangi bir anda olabilir, tak ve çalıştır yöneticisi, yol sürücüsü ve IO yöneticisi
arasında kapalı bir bağlantı ister.
IO yöneticisi de açık bir şekilde güç yöneticisiyle bağlanır. Güç yönetici şu altı
durumdan birine bilgisayarı yerleştirebilir.
1. Tamamen çalışır halde
2. Sleep – 1
: CPU gücü azaltılır, RAM ve cache çalışır; acil kalkma
3. Sleep – 2
: CPU ve RAM çalışır, CPU cache’i çalışmaz; Geçerli PC’den devam
et.
4. Sleep – 3
: CPU ve cache çalışmaz, RAM çalışır; belirlenmiş adresler yeniden
başlatılır.
5. Hibernate
: CPU, cache ve RAM çalışmaz; disk dosyası kaydedilerek bilgisayar
yeniden başlatılır.
6. Off
: Hiçbir şey çalışmaz; yeniden başlatma gereklidir.
Biraz şaşırtıcı da olsa, teknik olarak tüm dosya sistemleri teknik olarak giriş/çıkış
sürücülerdir. Kullanıcı işlemlerinden veri blokları için yapılan istekler ilk olarak cache
bellek yöneticisine ulaşır. Eğer cache bellek yöneticisi bu istekleri karşılayamazsa,
giriş/çıkış yöneticisi, kullanıcının ihtiyaç duyduğu veri bloğunu diskten alıp getirmek
için dosya sistem sürücüsünü çağırır.
Win2000'in ilgi çekici bir özelliği de, dinamik diskleri desteklemesidir. Dinamik
diskler, çok sayıda bölme ve hatta çok sayıda disk üzerinde hızla dönebilirler ve
yeniden boot edilmeye ihtiyaç olmadan sistem yeniden konfigüre edilebilir.
Win2000’in ilgi çekici başka bir yönü giriş – çıkış senkronizasyonunu sağlamasıdır.
Bir işletim dizisinin bir IO işlemini başlatması ve sonra IO ile paralel bir şekilde
çalıştırması bu özellik sayesinde mümkündür. Bu özellik, bilhassa server’larda çok
önemlidir.
11.2.2. Giriş / Çıkış API Çağrıları : Win2000, fareler, ses kartlar, telefonlar, teyp
sürücüler vb. gibi çok geniş bir alandaki IO aygıtları için 100'ün üzerinde API
çağrılarına sahiptir. Binlerce Win32 API çağrılarının içinde en önemlisi grafik sistem
çağrılarıdır.
Win32 çağrıları, pencereleri oluşturur, yok eder ve yönetir. Pencereler, başlıkları,
kenarları, renkleri, boyutları ve kaydırma çubuklarını da içeren çok geniş bir alanda
seçenekler sunabilen bir yapıya sahiptir. Pencereler, sabitlenebilir veya taşınabilir.
Pencerelerin özellikleri sistem çağrılarını kullanılarak değiştirebilir.
Birçok pencere, menüleri içerir, burada menü oluşturma, silme ve menü çubukları için
Win32 çağrıları vardır. Dinamik menüler popup menülerdir ve silinebilirler. Menü
parçaları, parlak, sönükleşmiş ya da taşmış olabilir.
Tablo - Win32 API Çağrı Kategorileri
API Grup
Pencere
Yönetimi
Menüler
Tanımlama
Pencereleri oluşturur, kaldırır ve yönetir.
Menü ve menü çubukları oluşturur, siler
ve yönetir.
Diyalog
Diyalog kutusu oluşturur
Kutuları
Boyama ve Noktalar, çizgiler ve geometrik şekilleri
Çizme
gösterir.
Metin
Metin rengi, boyutu ve rengini ayarlar.
Bitmap'ler ve Ekran üzerindeki ikonları ve bitmap'leri
İkonlar
yerleştirir.
Renkler ve
Kullanılabilen renk gruplarının yönetir.
Paletler
Bir uygulamadan diğerine bilgi geçirmek
Clipboard
için kullanılır.
Giriş
Mouse ve klavyeden bilgi alır.
Diyalog kutuları, bazı olayları kullanıcıya bildiren veya soru soran popup menülerdir.
Onlar, butonları, kaydırma çubuklarını veya doldurulması için text alanlarını içerebilir.
Ayrıca diyalog kutularıyla ilgili sesler de olabilir, örneğin hata mesajları için olan
sesler.
Giriş/çıkış API çağrılarının içinde çizim ve doldurma fonksiyonları için kullanılabilen
binlerce çağrı vardır. Birçok çağrı, kapalı geometrik şekiller ve satırlar için dokumalar,
renkler, genişlikler ve diğer birçok özelliğin ayrıntılı kontrolünü birlikte
sağlamaktadır.
Çağrıların diğer bir grubu metinlerin görüntülenmesiyle ilgilidir. Aslında metin
görüntüleme çağrısı olan TextOut gayet açıktır. TextOut, renklerin, yazı
büyüklüklerinin, karakter genişliklerinin ve diğer tip ayarlarının detaylı olarak
yönetimleriyle ilgilidir. Tüm bu işlemlerin tamamı, kullanıcıya ihtiyaç olmadan
işletim sistemi tarafından otomatik olarak getirir.
Bitmap’ler küçük dikdörtgen nokta bloklarıdır, bu bloklar BitBlt Win32 çağrısını
kullanarak ekranda görülebilir. Onlar ikonlar ve bazen de textler için kullanılırlar.
Değişik çağrılar, ikon nesneleri oluşturmayı, silmeyi ve yönetmeyi sağlamaktadır.
Birçok görüntü her bir pixel’i göstermek için 224 tane rengin kullanılabildiği sadece
256 veya 65536 renklik renk modunu kullanır. Bu durumda, bir renk paletine, 256
veya 65536 renk arasında seçim yapabilmek için ihtiyaç vardır. Bu gruptaki çağrılar,
paletleri oluşturma, yok etme ve yönetme çağrılarıdır, verilen bir renge en uygun rengi
seçer ve ekran renk göstergesinde, ekran renklerine benzer renkleri oluşturmayı dener.
Birçok Win2000 programı kullanıcıların bazı verileri seçip, kesmesine ve daha sonra
diğer bir uygulamanın içerisine yapıştırmasına izin verir. Kesme tahtası (clipboard),
genellikle bu iletim için kullanılmaktadır. Text, bitmapler, nesneler ve dosyalar için
birçok clipboard biçimi tanımlanmıştır.
11.3. Giriş / Çıkış İşleminin Gerçekleştirilmesi : Şimdi giriş – çıkış aygıtlarının
grafikleri nasıl meydana getirdiğine ve diğer giriş – çıkış fonksiyonlarına bakacağız.
Giriş – çıkış yöneticisinin ana fonksiyonu, farklı giriş – çıkış aygıtlarının
çalışabileceği bir çalışma iskeleti oluşturmaktır.
11.3.1. Aygıt Sürücüler : Microsoft, aygıt sürücülerinin uymak zorunda olduğu bir
Windows Sürücü Modeli tanımlamıştır. Bundan başka, Microsoft, sürücü yazarlarının
ürettiği conformant sürücülere yardım etmek için bir araç kiti dizayn etmiştir.
Conformant sürücüler aşağıdaki ihtiyaçların tamamını karşılamalıdır :
1. Standart biçimde gelen giriş – çıkış isteklerini tutma.
2. Windows 2000’nin haricinde nesne tabanlı olma.
3. Dinamik bir şekilde eklenmek ya da silmek için tak ve çalıştır aygıtlarına izin
vermek.
4. Uygun yerde güç yöneticisine izin vermek
5. Kaynak kullanımının ayarlanabilir olması
6. Çok işlemcili bilgisayarlarda kullanmak için giriş kabul etmesi
7. Win98 ve Win2000 üzerinden taşınabilir olması.
Her bir sürücü onun servislerini kullanmak için çağrılabilen prosedürlerin bir
setini sağlamalıdır. Bu prosedürlerden ilki DriverEntry olarak adlandırılan
sürücüye giriş prosedürüdür. Bu prosedür, yalnızca sürücü yüklendikten sonra
çağrılır. Tablolar ve veri yapıları oluşturabilir, ama aygıta dokunamaz. Bu
prosedür, aynı zamanda sürücü yüklendiğinde I/O yöneticisi tarafından
oluşturulan sürücü nesnesinin alanlarının bazılarını doldurur. Sürücü nesnesinde
alanlar, diğer tüm prosedürlerde sürücülerin sağlamak zorunda olduğu
işaretçileri kapsamaktadır. Bunlara ek olarak, her bir aygıt, sürücü tarafından
kontrol edilir, bir aygıt nesnesi oluşturulur ve sürücü nesnesine gösterilir. Bu
sürücü nesneleri özel bir klasörün içerisine girilir. Verilen bir aygıt nesnesi
kolayca sürücü nesnesini saptayabilir ve bundan sonra onun metotları
çağrılabilir.
İkinci gerekli prosedür bir defa her aygıta eklenmek için çağrılan
AddDevice’dir. Bu başarıldığı andan itibaren, sürücü ilk IRP ile çağrılır.
Sürücülerin içermesi gereken diğer prosedürler, kesme servisi prosedürleri,
çeşitli zamanlama yönetimi prosedürleri, hızlı bir giriş – çıkış yolu olan DMA
kontrolüdür. Tek kelimeyle Win2000 sürücüleri çok kompleksdir.
11.3. Win 2000 Dosya Sistemi
Win2000, birkaç dosya sistemini destekler. Bunların en önemlileri, FAT-16, FAT-32
ve NTFS dosya sistemleridir. FAT-16, eski MSDOS işletim sistemlerinde kullanılan
dosya sistemidir. Bu dosya sistemi 16 bitlik dosya adreslerini kullanır. Kapasiteleri 2
GB'dan daha fazla olamaz. FAT-32, 32 bitlik disk adreslerini kullanır ve 2 TB'a kadar
disk bölümlerini destekler. NTFS ise, WinNT için geliştirilen ve Win2000'e de taşınan
özel bir dosya sistemidir. NTFS dosya sistemi, 64 bitlik adres kullanır ve teorik olarak
264'e kadar disk adreslerini destekler. Win2000, aynı zamanda CDROM'lar ve DVD'ler
için de sadece okunabilen dosya sistemlerini destekler.
11.3.1. Genel Kavramlar :
NTFS dosya sisteminde, dosya isimleri 255 karakterle sınırlandırılmıştır; en yüksek
yol isimleri ise 32767 karakterle sınırlandırılmıştır. Dosya isimleri Unicode (onaltılık
düzende) olarak yazılırlar, insanlara doğal dillerinde dosya isimlerini yazmak için
Latin alfabesini kullanmaya izin vermez. Örneğin Ǿίλέ kusursuz bir dosya ismidir.
Ancak NTFS bunun bir dosya ismi olmasına izin vermez. Kısaca NTFS, dosya
isimlerine karşı duyarlıdır. (örneğin foo ismi için Foo ve FOO birbirinden farklıdır.).
Ne yazık ki Win32 API fonksiyonları, dosya isimleri için hassas durumları
desteklemez ve ancak klasör isimleri için bu desteği sağlar.
NTFS dosya , FAT-32 ve UNIX dosyalarında olduğu gibi yalnızca byte'ların doğrusal
bir şekilde sıralanmasından meydana gelmez. Onun yerine, bir dosya, bir çok
özellikten oluşur. Bu özelliklerin her biri, byte'ların akışı şeklinde gösterilirler. Birçok
dosya, dosya ismi ve dosyanın 64 bitlik nesne ID'si gibi kısa bir akıntıya sahiptir.
Bununla birlikte, bir dosya iki veya daha fazla ve uzun veri akışına sahip olabilir. Her
dosya, bir isim, kolon ve akıntı isminden oluşmaktadır. (foo:stream1). Her akıntı,
kendinin olan bir boyuta sahiptir ve diğer akıntılardan bağımsız olarak kilitlenebilir.
Maksimum akıntı büyüklüğü 264 byte'dır. NTFS, çok akıntılar fikrini Apple
Macintosh'dan almıştır.
Dosya ve klasör yönetimi için kullanılan Win32 API fonksiyonları birçok parametreye
sahip olma ve güvenlik modelinin farklı olması haricinde aşağı yukarı UNIX’dekinin
tam bir kopyasıdır. Açılış dosyası, dosyaya okuma ve yazma için kullanılan bir handle
getirir. Grafiksel uygulamalar için, hiçbir dosya ilk olarak tanımlanmaz. Eğer ihtiyaç
duyulsaydı, standart giriş, çıkış ve hata açıkça elde edilmek zorundaydı. Win32’nin
ayrıca UNIX’de bulunmayan ekstra çağrılara sahiptir.
11.3.2. Win 2000'de Dosya Sistemi API Çağrıları
Win2000'de kullanılan başlıca sistem çağrıları aşağıdaki tabloda listelenmiştir.
Gerçekte bu çağrıların sayısı daha fazladır. Ancak burada sadece önemli olanlarına
değineceğiz.
Tablo - Giriş/Çıkış İçin Başlıca Win32 API Fonksiyonları
Win32 API
Fonksiyonu
UNIX
CreateFile
open
DeleteFile
CloseHandle
ReadFile
WriteFile
unlink
close
read
write
SetFilePointer
Iseek
GetFileAttributes
LockFile
UnlockFile
stat
fcntl
fcntl
Tanımlama
Bir dosya oluşturur veya varolan bir
dosyayı açar.
Varolan bir dosyayı siler.
Bir dosyayı kapatır.
Bir dosyadan veri okur.
Bir dosyaya veri yazar.
Dosya üzerinden özel bir alana dosya
işaretçisini konumlandırır.
Dosya özelliklerini döndürür.
Dosyanın bir bölgesini kilitler.
Dosyanın bir bölgesindeki kiliti kaldırır.
CreateFile yeni bir dosya oluşturmak ve dosyaya bir değer döndürmek için kullanılır.
Bu API fonksiyonu aynı zamanda var olan dosyaları açmak için de kullanılmaktadır.
Tablodaki sonraki altı API fonksiyonu UNIX’deki sistem çağrılarına benzemektedir.
Son ikisi dosyaları kilitlemek ve kilidi açmak için kullanılır.
Win2000 NTFS dosya sistemi, UNIX dosya sistemine benzeyen hiyerarşik bir dosya
sistemidir. Yine de dosya isimleri arasındaki işaret MSDOS kalan / ‘nın yerine \’dır.
Win2000'de güncel çalışma klasörü düşüncesi vardır ve yol isimleri nispi veya tam
olabilir. Zor ve sembolik bağlantılar desteklenmektedir. Bunlara ek olarak, sıkıştırma,
şifreleme ve hata toleransı da ayrıca desteklenmektedir. Bu özellikler ve onların
yönetimini ilerleyen konularda ele alacağız. UNIX’deki karşılıklarıyla beraber önemli
directory yönetimi API fonksiyonları aşağıdaki tabloda verilmiştir.
Win32 API
Fonksiyonları
UNIX
Tanımlama
CreateDirectory
RemoveDirectory
mkdir
rmdir
FindFirstFile
opendir
FindNextFile
MoveFile
readdir
rename
SetCurrentDirectory
chdir
Yeni bir klasör oluşturur.
Boş olan klasörü siler.
Klasörde yer alan dosyaların ilkini
açar.
Bir sonraki klasörü okur.
Bir dosyayı klasörün içine taşır.
Aktif klasörü değiştirmek için
kullanılır.
11.3.3. Win2000'in Dosya Sisteminin Uygulanışı
NTFS çok karmaşık ve gelişmiş bir dosya sistemidir. Eski MSDOS dosya sistemini
geliştirmekten daha ziyade, yeni baştan dizayn edilmiştir. Bu bölümde NTFS dosya
sisteminin özelliklerinin bir kısmını ele alacağız.
a) Dosya Sistemi Yapısı : Her bir NTFS yığını; dosyaları, klasörleri, bitmapleri ve
diğer veri yapılarını içermektedir. Her bir yığın, yığının büyüklüğüne bağlı olarak, 512
byte’tan 4 KB’a kadar belirlenmiş bir blok büyüklüğüyle birlikte, blokların doğrusal
sıralanması olarak organize edilmişlerdir. Birçok NTFS diski 4 KB’lık blokları
kullanırlar.
Her bir yığında ana veri yapısı 1 KB büyüklüğündeki kayıtların doğrusal olarak
sıralandığı MFT (Baş Dosya Tablosu)’dir. Her MFT kaydı bir dosya ya da klasörü
tanımlar. MFT, dosyanın ismi ve oluşturulma zamanı gibi dosyanın özelliklerini ve
onun bloklarının bulunduğu yerdeki disk adreslerinin listesini içermektedir.
Eğer bir dosya aşırı büyükse, yığının tüm blokların bir listesini içeren bir veya daha
fazla MFT kaydı kullanması gereklidir, bu durumda birinci MFT kaydı, diğer MFT
kayıtlarına bir işaret olması için temel MFT olarak adlandırılır. Bir bitmap MFT
girişlerinin boş olduğu yolları korumaktadır.
Bir MFT dosyası
yandaki şekilde
görülmektedir.
Her MFT kaydı
çiftlerin
sıralanmasından
meydana
gelmektedir. Her
özellik, özelliğe
neyin atfedildiğini
ve ne kadar uzun
bir değere sahip
olduğunu bildiren
bir header’la
başlar, çünkü bazı özellikler, örneğin dosya adı ve veri gibi değişken uzunlukta olurlar.
Eğer özellik değeri MFT kaydında kullanmak için yeteri kadar kısaysa, değer oraya
yerleştirilir. Eğer değer çok uzunsa, disk üzerinde başka bir yere yerleştirilir ve MFT
kaydına yerleştirildiği yer için bir işaret konulur.
Bir önceki sayfadaki şekilde görüldüğü gibi, ilk 16 MFT kaydı NTFS meta dosyaları
için ayrılmıştır. Kayıtların her biri özelliklere ve veri bloklarına sahip normal dosyaları
tanımlar. Bu dosyaların her biri, onların bir meta dosyası olduğu göstermek için dolar
işareti ile başlayan bir isme sahiptir. İlk kayıt MFT dosyasının kendisini tanımlar.
Özellikle, MFT dosya bloklarının bulunduğu yeri belirler, böylece sistem MFT
dosyasının bulabilir. Win2000 kesinlikle sistem bilgisinin dışında kalan MFT
dosyalarının ilk bloğunu bulmak için bir yola ihtiyaç duyar. Win2000’nin MFT
dosyasının ilk bloğunu bulmak için kullandığı yol, sistem yüklendiği zamanda onun
adresinin yüklendiği boot bloğuna bakmaktır.
Kayıt 1, MFT dosyasının ilk bölümünün bir kopyasıdır. Bu bilgi, MFT dosyasında
herhangi kötü bir olay meydana geldiğinde MFT dosyasının ikinci bir kopyasına sahip
olduğundan çok önemlidir. Kayıt 2, kütük dosyasıdır. Yeni bir klasör ekleme veya var
olan bir klasörü silme gibi dosya sisteminde yapısal değişiklikler yapıldığında, bu
işlem icra edilmeden önce, çalışma esnasında bir başarısızlık olması halinde bu
değişikliği doğru bir şekilde geri almak için kütüğe kaydedilir. Dosya özelliklerinde
yapılan değişiklikler de buradaki kütüğe kaydedilir. Gerçekte, burada değişiklikler
sadece kütüğe kaydedilmez, kullanıcı verisine de kaydediciler. Kayıt 3, dosyanın
boyutu, etiketi ve versiyonu gibi miktarı hakkında bilgileri içerir.
Daha önce bahsedildiği gibi, her bir MFT kaydı çiftlerin sıralanmasını(özellik ve
değeri) içermektedir. $AttrDef dosyası, özelliklerin nerede tanımlandığını belirtir.
Bu dosya hakkındaki bilgi MFT’nin 4.kaydında bulunmaktadır. Bir sonraki kayıt,
kendisi de bir dosya olan ve rastgele büyüyebilen root directory’dir. Root directory
MFT’de 5.kayıtla tanımlanır.
Yığında (volume) boş alan, bir bitmap’la yol tutulması ile sağlanılır. Bitmap’in kendisi
bir dosyadır ve disk adresleri MFT’nin 6.kaydından verilir. Sonraki MFT kaydı
bootstrap yükleyici dosyasını gösterir. Kayıt 8, hatalı blokların bir dosyada asla
meydana gelmediğine emin olmak için tüm hatalı dosyaları bir araya getirmek için
kullanılır. Kayıt 9, güvenlik bilgisini içerir. Kayıt 10, durum (harf) karşılaştırması için
kullanılır. Son olarak, 11.kayıt disk kontenjanları, nesne tanımlayıcıları vb. gibi şeyler
için bir klasör içerir. Son 4 MFT kaydı, gelecekteki kullanımlar için ayrılmıştır.
NTFS dosya sistemi, MFT kaydında gözükebilen 13 özellik tanımlamaktadır. Bunlar
bir sonraki sayfadaki tabloda listelenmiştir. Her MFT kaydı, her birinin çeşitli
bayraklar ve diğer bilgiyle beraber değer alanının uzunluğunu verdiği ve yönettiği
özellik başlıklarının sıralanmasından meydana gelmektedir. Genellikle, özellik
değerleri doğrudan onların ilk değerlerini takip eder, fakat eğer değer MFT kaydına
yerleştirilmek için çok uzunsa, disk bloğunda ayrılarak yerleştirilebilir. Bu gibi
özelliklerden, sakin olmayan özellikler olarak söz edilmektedir. Veri özelliği buna
kesin bir şekilde girmektedir. İsim gibi bazı özellikler, defalarca tekrar edilebilir, fakat
tüm özellikler MFT kaydında belirlenmiş bir düzende gözükmelidir. Sakin (sabit)
özellikler için başlıklar 24 byte uzunluğundadır; onlar sabit olmayan özellikler için
daha uzundur çünkü sabit olmayan özellikler, diskte kendisi hakkındaki niteliği
bulmak için gereken bilgiyi içerirler.
Tablo - MFT Kaydında Kullanılan Özellikler
Özellik
Tanımlama
Bayrak bitleri, zaman işaretleri vb.
Onaltılık sistemde dosya ismi; MSDOS ismi için dosya
Dosya İsmi
ismi tekrar edilebilir.
Güvenlik
Artık kullanılmıyor. Şimdi $Extend$Secure güvenlik
Tanımlayıcı
bilgisi için kullanılmakta.
Özellik Listesi Eğer ihtiyaç duyulursa MFT kaydına ek yollar ilave eder.
Nesne ID
Nesneye özel 64 bitlik dosya tanımlayıcı.
Reparse Point Bağlantı ve sembolik linkler için kullanılır.
Yığın Adı
Yığının ismi.
Yığın Bilgisi Yığının versiyonu.
Kök İndeksi
Klasörler için kullanılır.
İndeks Ayırma Çok büyük klasörler için kullanılır.
Bitmap
Çok büyük klasörler için kullanılır.
Yararlı Akıntı
Kontroller, $LogFile'e kaydedilir.
Kütükleri
Veri
Akıntı verisi; tekrar edilebilir.
Standart Bilgi
Standart bilgi alanı, POSIX tarafından ihtiyaç duyulan dosyanın sahibi, güvenlik
bilgisi, oluşturulma zamanı gibi bilgileri içermektedir. Bu sabit uzunlukta bir alandır
ve her zaman verilir. Dosya ismi Unicode (onaltılık sistem)’de değişken uzunluktadır.
MSDOS dosya ismine sahip olmayan isimler ile, eski 16 bitlik programlara
erişebilmek için, dosyalar ayrıca 8+3 karakter uzunluğunda MSDOS dosya ismine
sahip olabilir, ikinci bir MSDOS ismi kullanılmaz.
NT 4.0’da, güvenlik bilgisi bir özelliğe yerleştirilmiş olabilir, fakat Win2000’de
tamamen güvenlik bilgisi tek bir dosyadadır, böylece bir çok dosya aynı güvenlik
tanımlamalarını paylaşabilir. Özelliklerin MFT kaydındakine uymaması durumunda,
bir özellik listesine ihtiyaç duyulur. O zaman bu özellik ek kayıtları bulmak için
onların nerede olduğunu bildirir. Özellik listesindeki her bir giriş MFT’ye ek kaydın
nerede olduğunu bildirmek ve uzatma kaydı ile yukarıdaki asıl kaydı doğrulamak için
48-bitlik bir indeks içerir.
Nesne ID özelliği, dosyaya benzersiz bir isim verir. Buna ara sıra içerden ihtiyaç
duyulur. İki yığın (volume) özelliği sadece yığın tanımlaması için kullanılır. Sonraki
üç özellik dizinlerin nasıl gerçekleştirildiği ile ilgilidir. Küçük olanlar sadece
dosyaların listeleridir, fakat büyük olanlar B+ ağaçlarını kullanarak gerçekleştirilir.
Kütüğe kaydedilen yararlı stream özelliği şifrelenen dosya sistemiyle kullanılır.
Son olarak her şeyin onun için beklediği niteliğe geldik : Veri. MFT kaydının içine
gerçek dosya verisini yerleştirmek çabuk dosya olarak adlandırılır.
Kesinlikle, veri çoğu zaman MFT kaydında yer almaz, bu özellik genelde yabancıdır.
Şimdi NTFS dosya sisteminin özellikle veri için sabit olmayan niteliklerin
konumlarının nasıl korunduğuna bakalım.
Disk bloklarının korunması için kullanılan bir model şudur: disk blokları daha iyi
çalışma için nerede mümkünse orada ardışık disk bloklarına ayrılır. Örneğin, dosyanın
ilk mantıksal bloğu, disk üzerinde 20. bloğa yerleştirilmişse, o zaman sistem ikinci
mantıksal bloğu, 21.bloğa üçüncüsü ise 22.bloğa yerleştirmeyi deneyecek ve bu böyle
devam edecek.
Bir dosyada bloklar, kayıtların sıralanmasıyla tanımlanırlar, blokların her biri birbirine
mantıksal olarak komşu bloklar olarak tanımlanırlar. Dosyalar tüm kategorilere uygun
olarak başlangıçtan sona kadar belli bir düzende yazılırlar. Blokta bir dosya ile delik
olduğu için, orada iki kayıt olacaktır. Böyle bir dosya, ilk 50 bloğa yazma yoluyla
oluşturulabilir, sonra ilerideki 60.mantıksal bloğa bakar ve diğer 20 bloğa yazar.
Her kayıt, dosyanın içerisindeki ilk bloğun ofset adresini veren bir başlıkla başlar. İlk
bloğun sonraki ofset adresi kayıt tarafından karşılanmaz. Yukarıdaki örnekte, ilk kayıt
0,50 aralığında bir başlığa sahip olacak ve bu 50 blok için disk adreslerini
sağlayacaktır. İkinci kayıt 60 ve 80 arasındaki bloklara sahip olacaktı ve bu 20 blok
için disk adreslerini sağlayacaktır.
Her
kay
ıt
baş
lığı
bir
vey
a
da
ha
fazl
a
çift
ler yoluyla izlenilir, her biri disk adresini ve çalışma uzunluğunu verir. Disk adresleri,
onun bölünmesinin başlamasından itibaren disk bloklarının ofset adresleridir; çalışma
uzunluğu, çalışma sırasında blokların sayısıdır. Bir çok çift olarak çalışma kaydından
ihtiyaç duyulacaklardır. Bu düzenin 3 sınıf ve dokuz bloktan oluşan bir kullanımı
yandaki şekilde görülmektedir
Bu şekilde, kısa bir dosya için bir MFT kaydına sahibiz. Buradaki MFT kaydı, disk
üzerinde üç sınıf ve dokuz bloktan meydana gelmektedir. İlk sınıf 20-23 bloklardır,
ikinci sınıf 64-65 bloklar ve üçüncü bloklar ise 82-82. bloklardır. Bu sınıfların her biri
bir çift olarak MFT kaydında kaydedilir. MFT kaydı sayısı, n blokluk bir dosya için,
1'den başlayıp n'e kadar herhangi bir sayıda olabilir.
Burada farklı yorumlar yapılmaktadır. İlk olarak, dosyanın boyutuyla ilgili bir üst sınır
yoktur, bu yolla dosyalar temsil edilebilirler. Adres sıkıştırması burada mümkün
olmadığı için, her bir kayıt çifti iki tane 64 bitlik numaralar gerektirir, böylece toplam
16 byte'lık bir yere gereksinim duyulur. Bununla birlikte, bir çift ard arda 1 milyon ya
da daha fazla disk bloklarından meydana gelebilir. Örneğin 20 MB'lık bir dosya, MFT
kaydında her biri 1 KB büyüklüğünde olan, 1 milyon tane bloğa ayrılmış, 20 adet
sınıftan meydana gelmektedir.
İkinci bir yorum, her dosyanın MFT kaydında gösterilebilmesi için 16 byte yeterlidir,
hatta bir sıkıştırma metodu kullanılarak bu büyüklük 16 byte'ın daha da aşağısına
çekilebilir. Birçok disk adresleri, pratikte kullanılmayan çok sayıda 0 byte dizilerine
sahiptir. Bunlar ihmal edilebilir. Veri başlığı, gerçekte adres başına ne kadar byte
kullanılacağını ve ne kadarının ihmal edileceğini söyler. Sıkıştırmanın diğer türleri de
kullanılır. Kayıt çiftleri, pratikte çoğunlukla 4 byte büyüklüğünde olurlar.
Eğer bir dosya çok büyükse veya çok parçalanmışsa yani blok bilgisi bir MFT kaydına
yerleştirilemiyorsa ne olur ?. Cevabı çok basittir: iki veya daha çok MFT kaydı
kullanılır.
Eğer bir çok MFT kaydımız varsa ve temel MFT kaydının içerdiği indeksleri
listelemek için herhangi bir yer bulunmadığında bir problem ortaya çıkar. Bu
problemin de bir çözüm yolu bulunmaktadır. Ek MFT kayıtlarının listesi, yabancı bir
kaynak üzerinde örneğin disk üzerinde depolanır. Böylece MFT kayıt listesi, istediği
kadar büyüyebilir.
Dosya İsmi : Bir kullanıcı programı bir dosyayı açmak istediği zaman, tipik olarak
aşağıdakine benzer bir çağrı yapar.
CreateFile ("C:\maria\web.htm",...)
Verilen bu isim, NtFileCreate sistem çağrısına bir parametre olarak iletilir. Daha sonra
işletim sistemi, nesne yöneticisinin isim alanının root dizininde dosyayı aramaya
başlar. Sonra C sürücüsüne bakar ve sonunda aradığı dosyayı bulur. Bu dosya, nesne
yöneticisinin isim alanının başka bir parçasına yapılan sembolik bir bağlantıdır.
Bağlantı tipik olarak ismi \Device\HarddiskVolume1 gibi bir isme benzeyen nesne
adında sonlanır. Bu nesne ilk hard diskin birinci bölümüne uygun olur. Bu nesneden
hangi MFT kaydının kullanılacağına karar vermek mümkündür
Dosya Sıkıştırma : NTFS dosya sistemi, dosya sıkıştırmayı desteklemektedir. Bir
dosya sıkıştırılmış modda oluşturulabilir, bunun anlamı NTFS blokları otomatik olarak
sıkıştırır.
NTFS bir dosyayı yazdığı zaman, blokların ne kadar bölgeyi işgal ettiğine bakmadan
dosyadaki ilk 16 bloğu inceleyerek, diske sıkıştırma işlemi için bir işaret verir. NTFS
daha sonra blokların üzerinde bir sıkıştırma algoritmasını uygular. Eğer sonuç verileri
15 veya daha az blokta depolanmış olabilirse, mümkünse tercihen bir bölgede diske
yazılır. Eğer sıkıştırılmış veriler 16 bloktan biraz fazla yer tutuyorsa, 16 blok
sıkıştırılmamış biçimde yazılırlar. Sonra, 16 ile 31. bloklar arası 15 blok veya daha az
blok olarak sıkıştırılabilip sıkıştırılabilmediğine bakılır ve bu böyle devam eder.
Dosya geriye doğru okunduğunda NTFS, hangi bölgelerin sıkıştırıldığını ve hangi
bölgelerin sıkıştırılmadığını bilmelidir. NTFS, disk adreslerinde esas alınanı görür.
0’ın bir disk adresi, onun sıkıştırılmış blokların son 16 parçası olduğunu gösterir.
Belirsizlikten kaçınmak için, 0.disk bloğu veri depolama amacıyla kullanılamaz.
Çünkü o, bir veri için kullanmanın neredeyse imkansız olduğu boot sektörü içerir.
Sıkıştırılan dosyalara random olarak erişim mümkündür, fakat bunu gerçekleştirmek
biraz zordur. Farzedelim ki, bir işlem 35. bloğu arasın. NTFS, sıkıştırılmış olan bir
dosyada aranan bloğun yerini nasıl öğrenebilir ?. Bunun yanıtı şudur: ilk olarak tüm
bölge okunur ve bloklar açılır. Böylece, NTFS 35. bloğun nerede olduğunu bilir ve
diğer işlemin isteğini gerçekleştirmek için ona yönelebilir.
Dosya Şifreleme : Bilgisayarlar şu günlerde sahiplerinin herhangi bir kimsenin
görmesini istemediği şirket planları, vergi bilgileri ve aşk mektuplarını da içeren çok
özel verilerini depolamak için kullanılmaktadırlar. Bir laptop bilgisayar
kaybolduğunda veya çalındığında, bir masaüstü sistemi Win2000 güvenliğini pas
geçmek için bir MSDOS disketini kullanarak sistem yeniden boot ettiğinde veya bir
hard disk fiziksel olarak bir bilgisayardan silindiğinde ve güvenli olmayan bir işletim
sistemiyle birlikte başka bir bilgisayara yerleştirildiğince bilgi kaybı meydana
gelebilir.
Bu problemin olduğu Win2000 adresleri, dosyaları şifrelemek için bir seçeneğe
sahiptir, böylece bilgisayar çalınma veya MSDOS’u kullanarak yeniden boot etme
durumlarında, dosyalar okunamayacaklardır. Win2000 şifrelemesini kullanmak için
normal bir yol, belirli dizinleri işaretleyerek şifrelemektir.
Gerçek şifreleme ve çözme NTFS’in kendisi tarafından yapılmaz, fakat EFS olarak
adlandırılan ve NTFS ve kullanıcı işlemi arasında yer alan bir sürücü yardımıyla
yapılır. Bu yolda, uygulama programları şifrelemeden habersizdir ve NTFS kısmen
kendini bu işe bulaştırır.
Şimdi biz Win2000’nin dosyaları nasıl şifrelediğine bakacağız. Kullanıcı bir dosyayı
şifrelemek istediğinde, random olarak 128 bitlik dosya şifresi oluşturulur ve bu şifre
yoluyla simetrik algoritma parametrelerini kullanarak blok olarak dosyalar şifrelenir.
Her yeni dosya şifrelendiğinde farklı bir 128 bitlik dosya şifresi alınır, böylece iki tane
dosya aynı dosya şifresini kullanamaz. Güncel şifreleme algoritması DES’in değişik
türleridir, fakat EFS mimarisi gelecekteki yeni algoritmaları desteklemektedir.
Dosya şifresi bir yerde saklanmak zorundadır, böylece dosya daha sonra bu şifreyi
çözebilir. Eğer dosya şifresi sadece disk üzerinde saklanırsa, o zaman bilgisayarı çalan
veya bulan bir kimse kolaylıkla dosya şifresini çözebilir, dosyaların şifrelenmesi
amacına ulaşmamış olur. Bu nedenle, dosyalar disk üzerinde depolanmadan önce,
dosya anahtarları tamamen şifrelenmiş olmalıdır. Genel-anahtar kriptografisi bu amaç
için kullanılır.
Dosya şifrelendikten sonra, register’daki bilgi kullanılarak kullanıcının genel şifresinin
yerine bakılır. Register’da kullanıcının genel şifresinin depolanmasının herhangi bir
tehlikesi yoktur, çünkü eğer bir hırsız bilgisayarı çalar ve genel şifreyi bulursa, bu
genel şifreden özel şifresi çıkarmasının herhangi bir yolu yoktur. 128 bitlik random
dosya anahtarı şimdi genel anahtarla şifrelenir.
Bir dosyanın şifresini çözmek için, şifrelenmiş 128 bitlik dosya anahtarı diskten alınıp
getirilir. Bununla birlikte, onu çözmek ve dosya şifresini yeniden elde etmek için,
kullanıcı özel şifreyi vermelidir. İdeal olarak, özel şifre bilgisayara harici olarak
takılan bir akıllı kartta depolanmış olabilir ve sadece dosya çözülmek zorunda
olduğunda bir okuyucu üzerinde yerleştirilir. Win2000 akıllı kartları desteklemesine
rağmen, onların üzerinde özel şifreyi saklamaz.
Onun yerine, bir kullanıcı EFS’yi kullanarak bir dosyayı şifrelediği ilk zaman,
Win2000 bir çift oluşturur (özel şifre, genel şifre) ve bir simetrik şifreleme
algoritmasını kullanarak özel şifreyi disk üzerinde şifreleyerek saklar. Kullanıcının
giriş şifresini veya akıllı kartta depolanan bir şifreyi ile simetrik algoritma için bir şifre
elde eder, eğer akıllı kart login’e imkan tanırsa. Bu yolda, EFS login sırasında özel
şifreyi çözebilir ve bu işlem sırasında kendi sanal adres alanını korur, böylece EFS
daha fazla disk girişine ihtiyaç duymadan 128 bitlik dosya şifresini çözebilir.
Bilgisayar kapatıldığı zaman, özel şifre EFS’nin sanal adres alanından silinir, böylece
herhangi biri bilgisayarı çalmaya çalıştığında özel şifreye sahip olamayacaktır.
Çok sayıda kullanıcı aynı şifrelenen dosyaya girmeye ihtiyaç duyduğu zaman bir
karışıklık meydana gelir. Güncel olarak bir çok kullanıcı tarafından şifrelenen
dosyaların ortak kullanımı desteklenmez. Bununla beraber, EFS mimarisi yetki verilen
her bir kullanıcının genel anahtarıyla birlikte, gelecekte her bir dosya şifresinin çeşitli
zamanlarında şifrelenmesiyle paylaşımı destekleyebilir. Bu dosya anahtarının
şifrelenen tüm versiyonları dosyayla ilişkilenmiş olabilirdi.
Şifrelenen dosyaları paylaşmak için potansiyel gereksinim niçin bu iki şifreli sistemin
kullanıldığıdır. Eğer tüm dosyalar onların kendileri tarafından şifrelenseydi, orada
herhangi bir dosyayı paylaşmak mümkün olmayacaktı. Her bir şifrelenen dosya için
farklı şifre kullanılarak, bu problem çözülebilir.
11.4. Win 2000 İşletim Sisteminde Güvenlik :
Win NT, Amerikan Savunma Bakanlığının güvenlik ihtiyaçlarını karşılamak amacıyla
geliştirilmişti. Bu standart, ordunun güvenliği sağlama gibi çeşitli görevleri için belirli
özelliklere sahip işletim sistemleri gerektirir. Win 2000, Win NT'den birçok güvenlik
özelliklerini devralmıştır. Bu özellikler aşağıda sıralanmaktadır:
1. Antispoofing ölçülerle güvenli giriş.
2. Karar vermeyi sağlayan giriş kontrolleri.
3. Ayrıcalıklı giriş kontrolü.
4. İşlem başına adres alan koruması.
5. Yeni sayfalar haritalanmadan önce sıfırlanmış olmalı.
6. Güvenlik kaydı tutma.
Şimdi bu özellikleri kısaca inceleyelim. Güvenli girişin anlamı şudur : Sistem
yöneticisi, tüm kullanıcıların sisteme giriş yapabilmeleri için bir şifreye sahip
olmalarını isteyebilir. Karar vermeyi sağlayan giriş kontrolleri, dosyanın sahibine veya
diğer nesnelere onu hangi yolda ve nasıl kullanacağını söylemek için izin verir.
Ayrıcalıklı giriş kontrolleri, sistem yöneticisine dosyaların gereksinimlerini görmezden
gelmesi için izin verir. Adres alan korumasının basitçe anlamı şudur: her işlem kendi
korumalı adres alanına sahiptir ve herhangi diğer bir işlem tarafından bu alana
erişilemez.
Bir sonraki maddenin anlamı ise, stack dolduğu zaman, sayfalar başlangıç
durumuna(sıfıra) haritalanır, böylece işlemler bir önceki sahibi tarafından konulan eski
bilgileri bulamayabilir. Son olarak, güvenlik kayıt defteri, güvenlikle ilgili olayları
göstermek için sistem yöneticisine izin verir.
Temel Kavramlar
Her Win2000 kullanıcısı bir SID (Güvenlik ID) tarafından tanınır. SID’ler uzun
random parçalarla takip edilen kısa başlıklar ile ikili sayılardır. Her bir SID, dünya
çapında tek olacak biçimde tasarlanmıştır. Bir kullanıcı bir işlemi başlatacağı zaman,
işlem ve onun işletim dizileri kullanıcının SID’inin altında çalışır. Güvenlik
sistemlerinin birçoğu her nesnenin sadece yetki verilen SID’ler ile işletim dizileri
tarafından girilebildiğine emin olmak için tasarlanmışlardır.
Her işlem, kendisinin SID ve diğer özelliklerini bildiren bir giriş işaretine sahiptir. SID
ve diğer özellikler ileride GetTokenInformation komutuyla değiştirilebilmesine
rağmen, winlogon tarafından login sırasında normal bir şekilde oluşturulur.Oluşturulan
bu giriş işaretinin yapısındaki alanlar ve yaptığı görevler şunlardır : Başlık, yönetimle
ilgili bilgileri içermektedir. Bitiş süresi, işaretin makul bir şekilde duracağı zamanı
belirtir, fakat şu günlerde bu özellik kullanılmaz. Gruplar alanı, işleme uygun grupları
bildirir; buna POSIX uyumu için ihtiyaç duyulur. Default DACL, işlem tarafından
oluşturulan nesneler giriş kontrol listesinde bir yer ayırmak için kullanılır.
Sınırlı SID'ler alanı, güvenilir işlemlerle iş üzerindeki parçaları almak için güvenilir
olmayan işlemlere izin verir, fakat zarar verme ihtimalinden dolayı düşük güçte çalışır.
Son alanda ise, işlemle ilgili ayrıcalıklar listelenir.Kullanıcı sisteme giriş yaptığı
zaman, winlogon tarafından ilk işlemi giriş işaretinden alır. Sonraki işlemler ise
normal olarak sırayla alınırlar. Bir işlemin giriş işareti, işlemdeki tüm işlem
parçalarında kullanılır. Bununla birlikte, bir işlem parçacığı çalışma sırasında farklı bir
giriş işareti kazanabilir.
Diğer bir temel kavram, güvenlik tanımlayıcısıdır. Her nesne, nesne üzerinde hangi
işlemlerin yapılabileceğini bildiren bir güvenlik tanımlayıcısına sahiptir. Bir güvenlik
tanımlayıcısı, DACL tarafından izlenen bir başlık ile bir veya daha fazla giriş kontrol
elementlerinden (ACEs) oluşmaktadır. Elementlerin iki önemli çeşidi, Allow ve
Deny'dir. Allow elementi, nesne üzerinde yapılabilecek işlemleri bildiren bir SID ve
bir bitmap tanımlar. Deny elementi ise, benzer şekilde çalışır, nesne üzerinde hangi
işlemlerin gerçekleştirilemeyeceğini bildirir. Bir güvenlik tanımlayıcısı DACL' ek
olarak, ayrıca SACL (System Access Control List) sahiptir. DACL'e benzer, ancak
nesnenin nasıl kullanılacağını bildirmeyebilir, fakat nesne üzerinde hangi işlemlerin
gerçekleştirilebileceğini bildirir.
Güvenlik API Çağrıları
Win 2000 giriş kontrol mekanizmalarının çoğu, güvenlik tanımlayıcısı tabanlıdır.
Olağan bir örnek şöyledir: bir işlem, bir nesne oluşturduğu zaman, CreateProcess,
CreateFile veya diğer nesne oluşturma çağrıları gibi bir güvenlik tanımlayıcısı sağlar.
Win 32 API çağrılarının çoğunluğu, güvenlik tanımlayıcısının yönetimiyle ilgilidir,bu
nedenle biz bu noktaya odaklanacağız. Bir güvenlik tanımlayıcısı oluşturmak için, ilk
olarak güvenlik tanımlayıcısını depolamak için bir yer ayrılır ve sonra
InitializeSecurityDescriptor çağrısı kullanılarak oluşturulur. Bu çağrı, başlıkta yerine
getirilir. Eğer kullanıcı SID'i bilinmiyorsa, LookupAccountSid çağrısını kullanarak SID
öğrenilebilir. Daha sonra SID güvenlik tanımlayıcısının içerisine yerleştirilebilir.
Benzer işlem Grup SID'i için de yapılır. Normal olarak bunlar, kullanıcının SID'i ve
diğer kullanıcı gruplarının SID'leri olacaktır, fakat sistem yöneticisi herhangi bir
SID'de kullanacaktır.
Güvenlik tanımlayıcısının DACL'ı InitializeAcl. çağrısı kullanılarak ilk kez
oluşturulabilir. ACL girişleri, AddAccessAllowedAce ve AddAccessDeniedAce çağrıları
kullanılarak eklenebilir. DeleteAce çağrısı, bir girişi silmek için kullanılır. ACL hazır
olduğunda, SetSecurityDescriptorDacl çağrısıyla güvenlik tanımlayıcısına bağlanmada
kullanılabilir.
Win32 API Fonksiyon
Tanımlama
InitializeSecurityDescriptor Yeni bir güvenlik tanımlayıcısı hazırlar.
LookupAccountSid
Verilen bir kullanıcı ismi için SID'e bakar.
Güvenlik tanımlayıcısında kendi SID'ini
SetSecurityDescriptorOwner
girer.
Güvenlik tanımlayıcısında grup SID'ini
SetSecurityDescriptorGroup
girer.
InitializeAcl
DACL veya SACL'ı başlatır.
DACL veya SACL allow girişine yeni bir
AddAccessAllowedAce
ACE ekler.
DACL veya SACL deny girişine yeni bir
AddAccessDeniedAce
ACE ekler.
DeleteAce
DACL veya SACL'dan ACE'i siler.
SetSecurityDescriptorDacl Güvenlik tanımlayıcısına bir DACL bağlar.
11.5. Win 2000 İşletim Sisteminde Cache
Win 2000 cache yöneticisi, performans sebebiyle cache işlemini gerçekleştirir.
Win2000 cache'i kavramsal olarak, diğer işletim sistemlerindeki cache belleklere
benzemektedir. Bununla birlikte, Win2000 cache'i diğerlerinde ender olarak görülen
özelliklere de sahiptir. Bu bölümde bu özelliklere kısaca değineceğiz.
Cache yöneticisinin işi, herhangi sonraki bir işlemin giriş süresini azaltmak için
bellekte son zamanlarda kullanılan dosya sistem bloklarını saklamaktır. Win2000, tek
bir entegre cache belleğe sahiptir. Bu cache bellek, NTFS, FAT-32, FAT-16 ve hatta
CDROM dosya sistemlerinin hepsi için kullanılabilir.
Bu dizaynın hedefi, birçok dosya sistemlerinin orada bulunmasına rağmen, tek bir
entegre cache sahip olmalıdır. Cache yöneticisi, sistem üzerinde alışılmamış bir durum
olduğunda aranılan bilginin yerini öğrenir. Cache yöneticisi, dosya sisteminin bir
parçası değildir.
Win2000 cache belleği, fiziksel bellek değil de, sanal bellek tarafından organize
edilmiştir. Bunun anlamı, dosyaları tutmak için bölüm ve blok numarası değil de,
dosya adı ve offset adresi tutulur.
Şimdi cache belleğin nasıl çalıştığına bakalım. Bir dosyaya başvuru yapıldığı zaman,
cache yöneticisi, dosya üzerindeki kernel sanal adres alanının 256 KB'lık büyük bir
miktarını haritalar. Eğer dosya 256 KB'dan daha büyükse, sadece dosyanın bir bölümü
haritalanır. Sanal adres alanının toplam büyüklüğüne, cache yöneticisi boot sırasında
karar verebilir ve bu büyüklük RAM'in büyüklüğüne bağlı olarak değişir.
Bir dosya haritalandığı zaman, cache yöneticisi disk blokları için yapılan istekleri
karşılayabilir. Eğer blok fiziksel belleğe kopyalanmazsa, bir sayfa hatası meydana
gelecek ve bellek yöneticisi bu hatayı giderecektir. Hatta cache yöneticisinin hangi
blokların cache bellekte olup olmadığından haberi bile olmayacaktır. Dolayısıyla
kopya her zaman başarıya ulaşır.
Cache yöneticisinin aşağıdaki şekilde, bir SCSI disk üzerinde NTFS dosya sisteminde
ve IDE disk üzerinde FAT-32 dosya sistemi üzerinde çalışma adımları görülmektedir.
Bir işlem, bir dosya üzerinde okuma işlemi yapacağı zaman, istek doğrudan cache
belleğe iletilir. Eğer cache bellek üzerinde dosya bloğuna ihtiyaç duyulursa, blok
derhal kullanıcıya kopyalanır. Eğer bellek cache bellek üzerinde değilse, cache
yöneticisi bloğu kopyalamayı denediğinde bir sayfa hatasıyla karşılaşacaktır. Sayfa
hatası kontrol altına alındığında, blok kendisi çağıran işleme kopyalanır.
Bu dizaynın önemi, cache yöneticisi fiziksel bellek üzerinde ne kadar sayfanın
haritalanacağını, hatta cache belleğin büyüklüğünü dahi bilmez. Sadece bellek
yöneticisini bilir. Bu yöntem, belleğe karşı cache belleğin büyüklüğünü dinamik olarak
ayarlamaya izin verir.
.6. Özet
Win2000 işletim sistemi, HAL (Hardware Abstraction Layer)'da planlanmıştır. Kernel,
yönetici ve küçük sistem hizmetleri katmanı burada bulunmaktadır. HAL bunlara ek
olarak, değişik aygıtlar için dosya sistemleri ve GDI (Graphics Device Interface)'ı da
içermektedir. HAL, donanımdaki farklılıkları daha üst katmanlardan saklar. Kernel,
makineden tamamen bağımsız olmak için yöneticiden bazı farklılıkları saklamaya
çalışır.
Yönetici, bellek nesnesinde bulunmaktadır. Kullanıcı işlemleri onları oluşturur ve daha
sonra onları ustaca yönetir. Yönetici elemanları ayrıca nesneler oluşturabilir. Nesne
yöneticisi, nesne içerisindeki isim alanına bakar.
Win2000, işlemleri, işleri, işlem parçacıklarını ve fiberleri destekler. İşlemler, sanal
adres alanlarına sahiptir ve kaynaklar için kullanılan kaplardır. İşlem parçacıkları,
işlemin üniteleridir ve işletim sistemi tarafından planlanırlar. Fiberler, düşük güçte
çalışan işlem parçalarıdır ve tamamen kullanıcı alanında planlanırlar. İşler, işlemlerin
biraraya toplanmış halidir ve kaynak paylarının ayrılması için kullanılır. Tüm bunları
planlamak, öncelik algoritması kullanılarak yapılmaktadır.
KAYNAKLAR
Andrew S.TANENBAUM (2001), Modern Operating Systems
Ali SAATÇİ (2000), Bilgisayar İşletim Sistemleri
Fazıl DEMİRCİ (1995), İşletim Sistemleri
Mustafa KÜÇÜKALİ, Bellek Yönetimi Yüksek Lisans Tezi
Mustafa KÜÇÜKALİ (2002), İşletim Sistemleri Ders Notları
Download