27 Aralık 2012 Perşembe

İŞLETİM SİSTEMLERİNE GİRİŞ

Von Neumann Mimarisi
Modern bilgisayar çalışma prensipleri, Von Neumann’ın 1945’de geliştirdiği
mimariyi temel almaktadır.

Bir işletim sistemini orkestrayı yöneten bir maestro gibi düşünebilirsiniz. Bir
orkestrayı yöneten biri olmadığında, enstrümanlardan çıkan sesler birbiriyle uyumlu
olmayacaktır. İşte işletim sistemi de bir bilgisayar sisteminin maestrosudur;
bilgisayarın donanım elemanlarının birbiri ile haberleşmesini, birbirini tanımasını,
kısacası birbiri ile uyumlu bir şekilde çalışmasını sağlar.
İşletim sistemi aynı zamanda, kullanıcı ve donanım, yazılım ve donanım ve son
olarak yazılım ve yazılım arasındaki ara yazılımdır. Kullanıcı ve donanımın, donanım ve
yazılımların ve birçok farklı yazılımın etkileşimini, birbirini anlamasını ve birbiri ile
çalışabilmesini sağlar.

İş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 hizmetine olanak
verecek biçimde paylaştırırken bu kaynakların kullanım verimliliğini en üst düzeyde
tutmayı amaçlayan bir yazılım sistemidir.
Bir bilgisayar sistemindeki MİB, bellek, soyut bellek, G/Ç aygıtları ve dosyalar
gibi kaynakları kontrol eden program modülleri topluluğudur. Bu modüller sistemin
daha etkili ve performanslı kullanılmasını sağlar. Bunlar kullanıcı ve donanım arasında
bir arabirim gibi çalışırlar.

Tarihsel Gelişim:

1. Eski Sistemler (Mainframe)
a) 1950’lerdeki sistemlerdir. Tek kullanıcılıdırlar. İşletim sistemi
kullanılmamıştır. Örn: Eniac da işletim sistemi yoktu
b) Sadece tek bir iş: Aynı anda sadece bir iş yapılmaktaydı. Kısacası doğrusal
çalışıyorlardı.
c) Bilgi girişi ve çıkışı için kartlar kullanılmaktaydı.
2. Toplu İşlem Sistemleri (Batch Systems):
a) Monitor programları geliştirilerek otomatik olarak birden fazla işin arka
arkaya yapılması sağlandı. Bir işe örnek olarak “şu programı çalıştır” veya “şu
programı derle” komutları verilebilir.
b) Kart okuyucular kullanılmaktaydı.
3. Zaman paylaşımlı sistemler (Timesharing Systems)
a) Diskteki veya bellekteki farklı işleri aynı anda yapabilmektedir.
b) Bu işleri yaparken bir donanımı belirli zamanlarda farklı işleri yapılması için
tahsis ederdi. Örneği MİB farklı işleri aynı anda yapmıyor ama bu işlerin
belli görevlerini yerine getiriyordu. Örneğin aynı anda 3 iş yapması
gerekiyorsa öncelikle 1. işin ilk görevini sonra 2. işin ilk görevini ve 3. işin ilk
görevini yapıyordu ve bu şekilde devam ediyordu. Kullanıcı bu işleri aynı anda
yaptığını zannetse de aslında bu işlerin belli görevleri arasında değişim
yapıyordu. İşte bu özelliğe ‘Çok görevli (Multitasking)’ denilmektedir. “Çoklu
programlama (multiprogramming)” sistemleri ise aynı anda birden fazla
programın çalıştırılması anlamına gelmektedir. Bu sistemlerde MİB
zamanlaması (scheduling), bellek yönetimi gibi işlemler sistem tarafından
yapılmaktaydı.
c) Kart okuyucu olmadan kullanıcı ile iletişimde bulunabilmektedir.
4. Kişisel Bilgisayar sistemleri (Personal Computer Systems)
a) Donanım ebatlarının küçülmesi ile masaüstünde yer alan bilgisayarlardır.
b) G/Ç aygıtları kullanılmaktadır. Farklı teknolojiler adapte edilebilmektedir.
c) İşletim sistem

5. Paralel veya Çok İşlemcili Sistemler (Paralell Systems):
a) Birden fazla MİB’nin kullanılabildiği sistemlerdir. MİB’leri, belleği ve diğer
donanım kaynaklarını paylaşırlar.
b) Simetrik çoklu işleme: Her işlemci işletim sisteminin ayrı bir kopyası
üzerinde çalışır. İhtiyaç olduğunda birbirleri ile haberleşirler.
c) Asimetrik çoklu işleme: Her işlemci ayrı bir iş için tahsil edilmiştir. Master
olan bir işlemci vardır ve görev ve iş dağılımlarını yapar, slave için işleri
sıraya sokar ve zamanlar.
6. Dağıtık Sistemler (Distributed Systems):
a) Bu sistemler internet ve ağ teknolojilerinin gelişmesi ile ortaya çıkmıştır. Bir
ağ üzerinde kuruludur. Ancak bir ağdan farklı olarak ağ üzerinde gerçekleşen
işlemler kullanıcıya görünmektedir. Kullanıcı, bir işlemci ve bir arayüz
olduğunu düşünse de bu sistemler, değişik bilgisayar sistemleri üzerindeki
verileri ve işlemleri bir bütün olarak işleyebilir ve çalıştırabilirler.
b) Her işlemcinin kendine ait belleği vardır ve diğer işlemcilerle iletişim hatları
üzerinden haberleşirler.
c) Kaynak paylaşımı sağlanır. Bu kaynak MİB, diğer donanım elemanları
olabileceği gibi veriler, dosyalar da olabilir.
d) Dağıtık sistemlere; bilgisayar ağları, Sunucu-İstemci Sistemleri, Peer-to-
Peer (Noktadan noktaya) ve Internet örnek olarak verilebilir.
7. Gerçek-Zamanlı Sistemler (Real-Time Systems):
a) Çok kısa sürelerde örneğin milisaniyelerde çalışan sistemlerdir. Belli bir
sistemi kontrol amacıyla kullanılır. Örneğin bir işlemciye çok yoğun bir veri
akışı olduğunda veya bir uygulamanın kontrolü için ayrılan bir aygıt için
kullanılır.

b) Bilimsel deneyleri kontrol eden, gösterim sistemleri, endüstriyel kontrol
sistemleri vb. gerçek zamanlı sistemlerdir.
8. Gömülü Sistemler (Embedded Systems):
a) Gerçek-zamanlı işletim sistemlerini çalıştıran sistemlerdir. Bunlarda
genellikle bir kullanıcı arayüzü olmaz, sadece donanımları izleme ve yönetme
işlemlerini yaparlar.
b) Örneğin router’larda bulunan ayrı işletim sistemleri, firewall’lar, otomobil
motorları, nükleer reaktörün soğutma işlemleri.
Modern bir işletim sistemleri yukarıdaki farklı işletim sistemlerinin özelliklerini
kapsamaktadır.


İşletim Sisteminin Yerine Getirmesi Gereken Fonksiyonlar

Bir işletim sistemi şu fonksiyonları yerine getirebilmelidir:
1. İşleri sıraya koymalıdır
2. İşi kontrol eden dili yorumlayabilmelidir
3. Hata durumlarında ilgili işlemleri sonuçlandırmalıdır
4. Giriş/Çıkış işlemlerini sonuçlandırmalıdır
5. Kesmelerin gereğini yerine getirmelidir
6. İşlerde öncelik tanıyabilmelidir
7. Kaynakları kontrol etmelidir
8. Kullanıcıların birbirlerinin haklarına müdahalelerini önlemelidir
9. Bilgisayara birden fazla erişim sağlamalıdır
10. İyi bir ara yüzü olmalıdır
11. Bilgisayar kaynaklarının hesabını tutmalıdır.
12. Bilgileri uzun vadede saklamalıdır.

Bir İşletim Sisteminde İstenilen Özellikler

1. Etkinlik: İşletim sistemi, bir işi etkin ve verimli bir şekilde yapmalıdır.
2. İşler arasındaki zaman: Bir işi bitirip diğer işi başlama süresi kısa olmalıdır.
3. Kullanılmayan MİB zamanı: Merkezi işlem birimin kullanmadığı süre kısa olmalıdır.
Yani mikroişlemciden belleğe aktarılacak veya bellekten alınacak bilginin erişim süresi
kısa olmalıdır.
4. Toplu işlemler arasındaki zaman: Toplu işlem dosyalarının işlenmesi arasındaki süre
kısa olmalıdır.
5. Cevap verme süresi: Sistemin cevap verme süresi kısa olmalıdır.
6. Az zamanda çok iş yapılmalıdır.
7. Güvenirlik: Sistem tamamen hatalardan arındırılmış olmalıdır.
8. Süreklilik: Sistem bakım yapılabilir ve dokümanı bol olmalıdır.
9. Düşük boyut: Sistem kendinden taviz vermeden küçük boyutta olmalıdır.

İŞLETİM SİSTEMİ KATMANLARI

(Çekirdek, kabuk ve diğer temel kavramlar)

Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu
bulunmaktadır;
1. Performans: İşletim sistemi, makine kaynaklarını (özellikle MİB zamanı ve
bellek alanı) en etkili şekilde kullanılmasını sağlayacak şekilde tasarlanmalıdır.
Makinenin donanımsal performansını en iyi şekilde kullanabilmelidir.
2. Kaynakların özel kullanımı: İşletim sistemi, kaynakların yalıtımını sağlamalıdır,
diğer bir deyişle bir işlemin diğer işleme ait kaynaklara olan müdahalesine veya
bu işleme ait bilgilerin silinmesine izin vermeyen bir koruma mekanizması
geliştirmelidir. Her işletim sisteminin kaynaklara ulaşımı yönetmede kullandığı
stratejiyi belirleyen bir güvenlik politikası vardır.

Her işletim sisteminin tasarımında olan üç temel unsur ise şunlardır;
1. İşlemci modları
2. Çekirdek (Kernel)
3. Sistem servislerini uyarma metodu

İşlemci Modları
İşlemcide, bir programın çalışma yeteneğini gösteren bir mod biti
bulunmaktadır. Bu bit ‘supervisor (kernel)’ veya ‘kullanıcı’ modunu belirlemede
kullanılır. İşlemci supervisor modda iken donanımsal her tür komutu çalıştırırken
kullanıcı modunda ise bazı komutları çalıştırabilir. Supervisor moda çalışan
komutlara supervisor, öncelikli veya korunmuş komutlar denilmektedir. İşletim
sistemi programları supervisor moda çalışırken diğer tüm yazılımlar kullanıcı
modunda çalışmaktadır. Örneğin giriş/çıkış işlemleri supervisor moda çalışmakta,
kullanıcı modunda yer alan bir program herhangi bir giriş/çıkış işlemi yapılmasını
istediğinde bunu işletim sisteminin yapmasını istemektedir.
Sistem aynı zamanda mod bitini kullanarak bellek alanları tanımlar. Eğer mod biti
supervisor modda olacak şekilde ayarlandığında işlemcide çalışan işlem hem belleğin
supervisor hem de kullanıcı alanlarına ulaşabilir. İşlemci kullanıcı modunda çalışırken
ise bu işlem bellekte sadece kullanıcı alanına ulaşabilir. İşletim sistemlerinde bu
alanlara kullanıcı ve sistem (supervisor, çekirdek veya korunmuş) alanı denilmektedir.

Genel olarak; mod biti işletim sisteminin koruma haklarından biridir. İşletim
sistemi supervisor modda çalışmakta ve kullanıcı moduna göre belleğe ve öncelikli
komut kümesine ulaşmakta daha fazla haklara sahip olmaktadır.
İşlemci supervisor moda geçtiğinde işletim sisteminin kodlarını çalıştırmaktadır.
Kullanıcı modundaki bir işlem işletim sistemini çağırdığında işlemci hemen
supervisor moda, mod bitini kullanarak geçer ki bu duruma supervisor çağrı (veya
sistem çağrısı) denilmektedir. Örneğin; Word’de büyük bellek gerektiren bir dosya
açınca başka işlemlerin alanlarına müdahale edilir. Bunu önlemek amacıyla yeni bir
alan bu dosya için eklenmelidir. Burada supervisor çağrı yapılmıştır.
8086/8088 gibi eski işlemcilerde mod biti bulunmadığı için supervisor ve
kullanıcı komutları arasında bir ayrım yapılmamaktadır. Bu da kaynakların
paylaşımını ve yalıtımını güçleştirmekteydi.


Çekirdek
İşletim sisteminin supervisor modda çalışan ve diğer parçaları için temel
servisleri sağlayan en önemli parçasıdır. İşletim sisteminin uzantıları kullanıcı
modunda çalışır ve daha sınırlı haklara sahip olur. Çekirdekte çalışan işletim sistemi
fonksiyonları ise belleğe ve çekirdeğin diğer bölümlerine ulaşmada daha fazla
haklara sahiptir. Kabuk (shell) veya diğer adıyla komut yorumlayıcısı ise kullanıcının
sisteme verdiği komutları anlayan ve çalıştıran bir programdır. Kabuğun genellikle
bir arayüzü bulunmaktadır; örneğin DOS’taki C:> nin göründüğü komut istemi
arayüzü ve kullanıcının girdiği DIR komutu. Çekirdek ve kabuk bazı işletim
sistemlerinde ayrı iken bazılarında da sadece kavramsal olarak ayrılmıştır.

Monolitik çekirdekler (monolithic kernel), 1970–1990 arasında kullanılan ilk
çekirdeklerdir. Burada tüm yazılımlar, sürücüler işletim sisteminin çekirdeğinde
yer almaktadır. Örnek olarak Unix verilebilmektedir. Çekirdek büyük olmasına
karşın her tür fonksiyonu içerdiği için genelde hızlıdır. Monolitik çekirdeklerin
boyutlarının çok büyük olduğu düşüncesi modüler yapıda olan mikro çekirdekleri
(microkernel) yaratmıştır. Bu çekirdeklerde sadece en önemli işletim sistemi
fonksiyonları bulunduğu için oldukça küçük boyutta olmaktadır. Yeni bir donanım
eklendiğinde onun sürücüsü de çekirdeğe tanıtılmaktadır. Bu çekirdeklere örnek
olarak MS-DOS verilebilir.
Sistem servislerini uyarma metodu
Kullanıcı işlemlerinin işletim sisteminden belli servisleri (program çalıştırma,
giriş/çıkış ve dosya işlemleri, ağ erişimi gibi) sağlaması istendiğinde oluşan bir
durumdur. Bu bir sistem fonksiyonunun çağrılması veya MİB’ne bir mesaj gönderilmesi
(message passing) ile gerçekleşmektedir. Sistem çağrıları, işletim sistemi ve işlemler
arasında bir arayüzdür. Bu çağrılar genellikle Assembly dili komutları şeklindedir. C ve
C++ gibi bazı programlama dilleri bunu direkt olarak yapabilmektedir. Microsoft
Windows ise bunu Win32 API ile gerçekleştirmektedir.

Temel İşletim Sistemi Katmanları
Bir işletim sisteminde yer alan katmanlar şunlardır; Donanım, çekirdek, kabuk ve
uygulama katmanı.

Uygulama Katmanı: Kullanılan her tür program bu katmanda yer almaktadır.
Örneğin Word, Excel vb...

Kabuk Katmanı: Genellikle kullanıcı arayüzü de denilen kullanıcı ile bilgisayarın
iletişimini sağlayan arabirimdir. Buna MS-DOS’da komut istemi arayüzü (C:>), Linux’de
root olarak giriş yapıldığında #, kullanıcı olarak giriş yapıldığında $ ile görünen
arabirim örnek olarak verilebilir. Linux’de birden fazla kabuk bulunmakta ve chsh
komutu ile bunlar arasında geçiş yapılabilmektedir. Bu katman; uygulama katmanında
kullanıcın verdiği bir komutu alarak çekirdek katmanına iletmektedir.
Çekirdek katmanı: Kabuk katmanından gelen komutlar doğrultusunda donanım
katmanı ile iletişime geçerek gerekli işlemleri yürüten kısımdır.

Donanım katmanı: Ekran kartı, ses kartı gibi donanım elemanlarının bulunduğu
kısımdır.
UNIX İşletim Sistemi Katmanları
UNIX, 1969 yılında, Ken Thompson tarafından Bell Laboratuvarlarında
geliştirilmiş, çok kullanıcılı, çok görevli yapıyı destekleyen bilgisayar işletim sistemidir.
Günümüzde Windows tabanlı sistemlerden sonra en çok kullanılan ve kökleri UNIX'e
dayanan işletim sistemi GNU/Linux'tur.
Şekil 5. Unix işletim sistemi mimarisi
Unix işletim sistemi çekirdeğinde, işletim sisteminin temel fonksiyonlarını
yapması için gerekli işlem, bellek, dosya yönetimi bulunmaktadır. Aygıt yönetimi
öncelikli olarak çekirdeğin içinde yer almaktaydı. Ancak daha sonra tek bir donanımın
eklenmesinin bile bütün çekirdeğin tekrar derlenmesini gerektirmesi nedeni ile aygıt
yönetimi yine çekirdeğin içinde olmak üzere ayrı bir bölüm haline getirilmiştir. Sistem
çağrı arayüzü yani kabuk kullanıcının uygulama katmanında gerçekleştirdiği işlemleri ve
komutları alıp yorumlayarak çekirdeğe iletmekte ve çekirdekte direkt olarak donanım
ile iletişime geçerek gerekli işlemleri yapmaktadır.

Windows NT/2000/XP Katmanları
Windows NT mimarisi donanım soyutlama katmanı, NT çekirdeği, NT yürütücüsü
ve birçok alt sistemden oluşmaktadır. Donanım soyutlama katmanı, bir donanımın
birçok detayının soyutlanması (örneğin kesme adresleri) ile işletim sisteminin
donanımsal adresleri kullanması yerine farklı soyutlamaları kullanmasını sağlamaktadır.
NT çekirdeği donanıma en yakın işletim sistemi mekanizmalarını örneğin kesmelerin ele
alınması ve iş parçacıklarının zamanlanması gibi işlemleri yürütmektedir. NT
yürütücüsü ise NT çekirdeğinin en üstünde işlemler ve kaynaklarla uğraşan ve işlem,
bellek ve dosya yönetimini yapan ve aygıt alt sistemini içeren bölümdür. Sistem çağrı
yorumlayıcısı Win32 API tarafından gerçekleştirilmektedir. G/Ç alt sistemi, sistem
çekirdek fonksiyonlarından ayrı bir alt sistem olarak tanımlanmış ve aygıt sürücülerini
içermektedir. NT alt sistemleri ise kullanıcı tarafında NT çekirdeğinin bazı işlemleri
yapabilmesi için gerekli servisleri sağlamaktadır.

BELLEK YÖNETİMİ

Bilgisayar sistemini oluşturan temel birimlerden biride bellektir. Programların ve
işlenen verilerin bellekte yer alacakları konumların belirlenmesi, düzenlenmesi, izlenmesi
gereken alanların sağlanması, bu alanların dışına taşmaların denetlenmesi gibi işlevler bellek
yönetimi kapsamındadır.

Bellek, Ana ve İkincil bellek olmak üzere ikiye ayrılır. Ana bellek; aynı zamanda aktif
bellek, yarı iletken bellek, RAM bellek adlarıyla da anılır. Programların ve verilerin işlem
aşamasında yer aldığı, ana işlem biriminin de doğrudan erişebildiği bellektir.

Ana bellek bir sözcük dizisi şeklindedir. Her sözcüğün bir adresi ve bir de içeriği vardır.
Ana bellekte bir sözcüğün adresi, bu sözcüğe erişimde, adres yoluna yüklenen konum
değeridir. Bu değer, ilgili sözcük içeriğinin ana bellekte bulunduğu fiziksel konumu
gösterdiğinden fiziksel adres olarak nitelenir.
Ana bellek sözcükleri, komut kodları ile bu komutların işlenenlerini tutan öğelerdir.
Yazılan kaynak programlar içerisinde işlenenler, kullanıcıların özgürce belirledikleri simgesel
adlarla anılırlar.

6.1. Tek Programlı ve Çok Programlı Sistemlerde Bellek Yönetimi
En basit bellek yönetim sistemi, her bir zaman dilimi içinde bellekte bir görev
bulunması ve tüm bellek alanını bu görevin kullanmasıdır. Bu sistemlerde bellek, işletim
sistemi ve tek görev arasında paylaşılır. Kullanıcının terminalden aldığı komut ile, işletim
sistemi gereken programı belleğe yükler. Görev çalışmasını bitirdikten sonra, sistemin
gönderdiği mesajla kullanıcı yeni görevi belleğe yükler.

Fakat, bilgisayarın verimli çalışması için bellekte aynı zaman diliminde birden fazla
görevin çalışması gerekir. Bunun en basit yolu belleğin “n” sayıda bölümlere ayrılmasıdır.
Sistem çalıştırılmadan önce bölümler (bölümün sınırları) kaydedilir. Görevler geldiği zaman
bölümün boyutuna uygun kuyruğa yerleştirilir.
Bu sistemler OS 360 işletim sisteminde uygulanmıştır ve bu mimariye MFT (Multi
programming Disk Fixed Number of Task) denir.

6.2. Boş Bellek Alanlarının Aranması
Boş bellek alanlarının aranması için genelde 3 yöntem kullanılır:
1.İkili haritalama (Bit-map)
2.Bağlaçlı Liste
3.Komşu Sistemler (Buddy System)
1. İkili Haritalama Yöntemi :Bu yöntemde bellek mantıksal olarak sabit boyutlu küçük
birimlere bölünür. Bölümün boyutu birkaç sözcük uzunluğundan, birkaç KB’a kadar olabilir.

Bu bölümlerin boş yada dolu olması hakkında bilgiler ikili haritada gösterilir. Haritanın her
biti bir bellek bölümünün durumunu gösterir. Bölüm boşsa bit = 0, doluysa bit = 1 değerini
alır.
İkili haritalarda, gelen görev k boyutlu ise, ardışık k sayısıda 0 (boş) bellek yerinin
aranması gerekir. Bu ise, ikili haritalamanın yavaş olmasına yol açtığından pratikte az
kullanılmasına neden olur.


Bellek bölümlerinin büyük boyutlandırılması, haritanın
küçülmesine, bununla birlikte bellek alanının verimsiz
kullanımına neden olur.Bölümler küçük boyutlu alınırsa, harita
büyür ve arama işlemlerinin süresi uzar.
2. Bağlaçlı Liste Yöntemi : Boş ve dolu bellek alanları için yerleştikleri adreslerle birlikte
bağlaçlı liste oluşturulur.
NOT : P =Dolu, H = Boş bellek alanını göstermektedir.

Bellek yöneticisi görev için gereken bellek alanının boyutunu bildiği takdirde, bu
yöntemde sadece bu boyuta uygun bellek yeri bulmak amaçlanır. Uygun bellek yeri bulmak
için birkaç algoritma vardır:
1. İlk uygun yer bulma (first fit) : Bellek yöneticisi listeyi tarar ve yeterli boyutta boş yer
bulunan ilk yere görevi yerleştirir. Bu algoritma çok hızlıdır. Çünkü, arama en kısa
yolla gerçekleştirilir. Ancak en uygun olan belleğe değil, ilk rast gelinen uygun bellek
alanına yerleşim yapılır.

2. En uygun yer bulma (best fit) : Görevin boyutuna en yakın olan boş yer aranır. En
verimli algoritmadır. Ancak yavaştır.
1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1
1 1 1 1 0 0 0 1
.......................
P 0 5 H 5 3 P 8 6 P 14 4
H 14 4 P 13 2 P 19 3 P 25 3

3. Hızlı uygun yer bulma (quick fit) : Bu algoritmada, çok sık kullanılan bellek alanı
boyutları, ayrıca listelenir. Belleğe yerleştirilecek görev için uygun yer bu yeni listede
aranır.
3. Komşu Sistemlerde Bellek Yönetimi: Komşu sistem yönetiminde bellek yöneticisi
1,2,4,.......,2k boyutlu boşluklar listesi oluşturur. Örneğin 1 MB’lık bellek alanı için 21 liste
oluşturulacaktır.
bellek

boşluk 128 256 384 512 640 768 896
durumu 1 MB/boş yer
A (70K)
B (35K)
C (80K)
Başlangıç durumunda tüm bellek boştur ve yalnız 1MB’lık listede 1MB’lık boş yer
bulunmaktadır.
70 K’lık A görevi belleğe aktarıldığında bellek yöneticisi bu görev için 128K’lık boş yer
ayıracaktır. Öyle bir liste henüz oluşturulmadığından ardışık olarak 256K ve 512K’lık listeler
aranacak ancak onlarda yoktur. Bu sebeple 1MB’lık alanın 512, 256 ve 128’lik alanlara
bölecek ve A görevi ilk boş 128 K’lık alana yerleşecek.
B görevi içinde 64K’lık yer gerekir. 64K’lık listemiz olmadığından 128K’lık blok ikiye
bölünür. İlk 64K lık yere B görevi yerleştirilir. Benzer şekilde C görevi yerleştirilir.

Görev bellekten çıktığında, kalan yerler birleşip 2k alan oluşturuyorsa, bellek alanları
birleştirilir. Yönetim avantajı, sadece 2k ‘lık listeler aranmasıdır. Buda hızlı çalışmasına neden
olur. Ancak bellek verimsiz kullanılır. Her görev için ayrılan alanlarda boş yerler oluşabilir.
Buna iç parçalanma (integral fragmentation) denir.


6.3. Belleğin Parçalanma Sorunu Ve Bitiştirme İşlemi
Bellek parçalanması, bitişken alanların görevlere atanan bölümlerle, zaman içinde
ufalanması olarak bilinir. Bu sorun, kullanılan bölümler arasına sıkışmış, işletim için bekleyen
görevlerin gereksinimini karşılayamayan boş alanların varlığıyla ortaya çıkar. Bunun sonucu,
bellekteki boş alanların toplamı, gereksenen sığaları karşılıyor olmasına karşın yeni görevlere
yer sağlayamaz.

Görevlere gereksedikleri belleğin tümüyle ve bitişken bir bütün olarak, işletime sunuş
aşamasında sağlanması ve sağlanan bu alanların konumlarının işletim sırasında değiştirilmesi
parçalanma sorununun temel nedenleridir.
Bölüm içi yararlanılamayan boş alanlar iç parçalanma, bölümler arasında kalan boş
alanlar ise dış parçalanma kapsamında düşünülür.

Şekil: Ana Belleğin Parçalanması
Bitiştirme; tüm bellek alanına dağılmış durumdaki bölümleri, yerlerini değiştirerek yan
yana yerleştirme ve bu yolla bölümler arasında kalan boş alanları da yan yana getirerek tek bir
bitişken boş alan oluşturma işlemine denir.
İbrahim Türkoğlu – Fırat Üniversitesi, Elektronik ve Bilgisayar Eğitimi Bölümü – 2006
71
İlgili olduğu görevin işletimi sürerken bir bölümün yerinin değiştirilmesi kolayca ve
hiçbir önlem alınmaksızın yapılabilen bir işlem değildir.
Şekil: Bitiştirme İşlemi
6.4. Diske Taşıma (Swapping - Takas)
Zaman paylaşımlı sistemlerde diskte yerleşen görevler dizisi gerektiğin ana belleğe
çağrılır. Görevlerin disk ile ana bellek arasında değiş-tokuşuna takas (swap) denir.
Kimi durumlarda bitiştirme işlemleri de bellekte gerekli büyüklükte boş bitişken alan
oluşturmak için yeterli olamaz. Sisteme sunulan iş, o an sistemde işletimde olan işlemden
daha öncelikli ise, görev tanımlarının yapılarak hemen işletime alınması gerektirir.
Kimi zaman öncelik görevlerin, işletimleri sonradan tamamlamak üzere geçici olarak
diske taşınması boş bellek alanı yaratmak için başvurulan bir yol olabilir. Bu yolla açılan boş
bellek alanları yeni görevlerin tanımlanabilmesine ve özellikli işlerin işletimlerinin bir an
önce başlatılabilmesine 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 olayı
olarak nitelendirilir.
İbrahim Türkoğlu – Fırat Üniversitesi, Elektronik ve Bilgisayar Eğitimi Bölümü – 2006
72
Şekil: Diske taşıma ve bellekte yer bekler kuyruğu
Takas MFT sisteminde de uygulanabilir, ama onun değişken bölümlü çok programlama
da (MVT) kullanımı daha verimlidir.
A B C A D B E
Değişken programlama (MVT) sisteminde, belleğe yazılan görevler arasında boş alanlar
olabilir ve bellek sıkılaştırılması yöntemiyle bu boş alanlar birleştirilir. MVT sisteminde
göreve yer ayrılırken bu görevin yeni verilerle genişleyebileceği ve büyüyebileceği göz önüne
alınır.



Kaynakların Paylaşımı

Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine
sunar. Bir işletim sisteminde paylaşılan kaynaklar ise şunlardır: Merkezi işlem birimi,
Bellek, Giriş/Çıkış birimleri gibi donanım elemanları, Dosyalar ve klasörler, yazılımlar;
uygulama programları, çeşitli programlar.

Kaynak paylaşımı yapılmasının nedenleri 4 faktör söylenebilir:
• Maliyet: Her kullanıcıya birbirinden bağımsız kaynak sağlamak zordur.
• Birinin geliştirdiği bir programı veya uygulamayı diğerleri de kullanabilir
• Aynı veri tabanı birden fazla kullanıcı tarafından kullanılabilir
• Bir programın birden fazla kullanıcı tarafından kullanılarak depolama
birimlerinden tasarruf sağlanır ve geçersiz kaynak kullanımının önüne geçilebilir
İşletim sisteminin paylaşım işlemini gerçekleştirebilmek için ise şu görevleri yerine
getirmesi gerekir:
a. Giriş/Çıkış İşlemleri: Kullanıcıdan bağımsız donanıma bağlı değişen G/Ç
işlemlerini yerine getirme.
b. Bellek İşlemleri: Makinedeki fiziksel bellekten farklı olarak kullanılan soyut
bir bellek imkanı sunmalıdır.
c. Dosya Sistemi: Soyut makinelerin çoğu program ve verilerin saklanması için
bir dosya sistemi içerir. Kullanıcının bu bilgilere ulaşımı, adresler yerine
sembolik isimlerle sağlanır.
d. Koruma ve hata kontrolü: Kullanıcıların birbirlerinin alanlarına müdahale
etmeleri önlenmeli ve kişisel bilgilerin güvenli bir şekilde saklanması için
koruma sağlanmalıdır.
e. Program kontrolü: Soyut bir makine kullanıcıya program ve işlemler üzerinde
işlem yapmaya izin verir.
f. Etkileşim: İşletim sistemi kullanıcılar arasında karşılıklı etkileşim olanağı
verir.
Kaynakların farklı kullanıcılar veya programlar arasında paylaştırılması farklı
teknikler kullanılarak yapılabilir;
• Aynı anda çalışma (Concurrent execution): Bir bilgisayarın birden fazla programı
aynı anda çalıştırmasıdır. Sistemde aynı anda farklı aktivitelerin yer almasıdır.
Mesela birden fazla kullanıcı G/Ç işlemi yapabilmeli belleği kullanabilmelidir. Bu
durumda işlerin senkronize edilmesi gerekir. Çünkü aslında sistemde
gerçekleştirilecek işlemler aynı anda yapılmamakta, sıralı olarak yapılmaktadır.
Yani birden fazla program mantıksal olarak aynı anda çalışmakta iken fiziksel
olarak sıralı olarak çalışmaktadır. Örnek olarak çoklu programlama yaparken
MİB’ni programların paylaşması verilebilir.
• Paralel çalışma (Paralel execution): Bir bilgisayarın birden fazla programı
gerçekten aynı anda çalıştırmasıdır. Yani birden fazla program hem mantıksal
hem de fiziksel olarak aynı anda çalışmaktadır.
Aynı anda veya paralel çalışma sırasından bir bilgisayar kaynaklarını paylaştırmak
zorundadır. Bu paylaşımlar iki türlü olabilir;
• Saydam paylaşım (Transparently sharing): Kaynakların paylaşımının işletim
sistemi tarafından yürütmesidir. Burada kullanıcı kaynakların
paylaştırıldığından habersizdir. Bu paylaşım türünün gerçekleştirilebilmesi
için soyut makineler kullanılmaktadır.

• Açık paylaşım (Explict sharing): İşlemlerin genel kaynakları kendi
politikalarına göre kullanmalarıdır. İşletim sistemini kullanıcıya makinedeki
kaynakları paylaştırmasına da izin vermektedir.
Soyut/Sanal bir makine (Abstract Machine) ve Saydam Paylaşım
İşletim sisteminin ikinci görevi ise kullanıcıya veya kullanıcılara yalnızca kendine tahsis
edilmiş bir makine varmış gibi çalışma ortamının sağlanmasıdır. Her bir soyut makine
fiziksel makinenin bir simülasyonudur. Bir fiziksel makine birden fazla soyut makineyi
aynı anda çalıştırabilir. Her program kendi soyut makinesinde çalışır. Bu işlemleri
yapabilmek için fiziksel makine donanımlarını saydam paylaşım tekniğini kullanarak
soyut makineler arasında paylaştırır. Soyut makine tarafından çalıştırılan programa
genellikle ‘process (işlem)’ denilmektedir.
Soyut makinelerin oluşturulması için saydam paylaşım tekniğinin 2 tür paylaşımı
kullanılmaktadır;
a. Alan çoklama paylaşımı (Space-multiplexed sharing): Bir kaynak bir veya
daha fazla bölüme ayrılır, ardından her bir bölüm bir işlem’e atanır. Bu
paylaşım türüne, bellek ve hard disk’in belli bölümlere ayrılarak her bölümün
farklı işlemler için ayrılması örnek olarak verilebilir.
b. Zaman çoklama paylaşımı (Time-multiplexed sharing): Bu paylaşım türünde
bir kaynak bölümlere ayrılmaz, bunun yerine kaynak bir işlem tarafından belli
bir süre kullanılır yani o işleme adanır ardından diğer işlem bu kaynağı belli
bir süre kullanır. Örneğin MİB’ni işlemlerin belirli süreler için kullanılması bu
duruma bir örnektir.
İşletim istemi bu iki paylaşım türünü beraber kullanabilir. Örneğin MİB’i için
zaman çoklama, hard disk ve bellek için ise alan çoklama paylaşım türlerini kullanabilir.
Bu paylaşımlar sayesinde aynı andan birden çok program çalışabilmektedir kısacası
çoklu programlama özelliği kullanılabilmektedir. N tane soyut makine olduğunu
düşünürsek;
Soyut Makine 1 (S1) Soyut Makine 2 (S2) Soyut Makine 3 (S3)
Alan çoklama
Zaman çoklama
Fiziksel MİB Fiziksel Bellek
Şekil 2. Çoklu programlama (Multiprogramming)

İşletim Sistemi
Kaynak Paylaşımı
...
S1 Belleği
S2 Belleği
S3 Belleği
Sn Belleği

Çoklu programlama bir işlemcinin dolayısı ile bir bilgisayar sistemin performansını
arttırır.
Açık paylaşım (Explict sharing)
İşlemlerin genel kaynakları kendi politikalarına göre kullanmalarıdır. Bu paylaşımda
zaman veya alan çoklama paylaşımı yapılsa da dikkat edilmesi gereken 2 önemli
nokta vardır;
• Kaynak yalıtımı (Resource isolation): Sistem yerleşim politikasına göre
kaynaklara ulaşımı ayırabilmelidir. İşletim sistemi, bir soyut makine tarafından
kullanılan kaynağa diğer yetkisiz işlemlerin ulaşmasını engellemelidir. Örneğin
bellek yalıtım mekanizmasında, bellek belli bölümlere ayrılarak her bir bölüm
ayrı bir soyut makine tarafından kullanılmaktadır. Bu durumda sistem, bir soyut
makineye ayrılmış bir bellek bölümüne başka bir soyut makinenin müdahale
etmesini engellemelidir. Aynı şekilde MİB’nin işlemler tarafından sıralı olarak
paylaşılmasında da, bir işlem MİB’ni kullanırken diğer işlemlerin bellek alanlarına
MİB yoluyla müdahale etmemelidir.
• İşbirliği yaparak paylaşım (Cooperatively sharing): Sistem işlemlerin kaynakları
istenildiği takdirde işbirliği yaparak paylaşmalarına izin verebilmelidir. Örneğin
bir işlem diğer bir işlemin sonucunu kullanabilmeli veya belirli bir bellek
bölgesindeki bilgiler iki işlem tarafından kullanılması gerektiğinde buna izin
verebilmelidir. Fakat bu paylaşım son derece dikkatli yapılması gerekmektedir.
Kaynak paylaşımını yapmak ile görevli işletim sistemi yazılımı bu paylaşımı
algoritma veya başka bir hata (bug) yüzünden gerçekleştiremediğinde ise hatalar
oluşmaktadır. Oysa güvenilir ve gelişimi tamamlanmış bir işletim sisteminde bu tür
hataların olması beklenmez. Güvenilir bir işletim sisteminde donanım kaynaklarının
doğru bir biçimde paylaştırılması ve birbirinden yalıtılması gerekmektedir. Bir işletim
sisteminin soyutlamaları, sistem çağrı arayüzü (system call interface) olarak da bilinen

işletim sisteminin arayüzü kullanılarak gerçekleştirilebilir. Tüm sistem yazılımları bir
uygulama programlama arayüzü – API (Application Programming Interface) yoluyla
ulaşılabilinir. API; bir yazılım veya sistem yazılım parçasının programlama arayüzüdür.
Veritabanları, VBasic editörü gibi. Programcılar uygulama programlama arayüzlerini
kullanırlarken, işletim sistemi, sistem çağrı arayüzünü kullanır. Uygulama programlama
arayüzleri sistem yazılım arayüzlerine ulaşarak bunların kullanıcı tarafından
kullanılabilmesini sağlar. Microsoft Windows sistem çağrı arayüzünü “Win32 API”
olarak adlandırmıştır.
Uygulama yazılımı, sistem yazılımı ve işletim sistemi arasında bir hiyerarşi
vardır. İşletim sistemi, yazılım-donanım arayüzünü kullanarak işletim sistemi
arayüzüne, sistem yazılımı, işletim sistemi arayüzünü kullanarak API’ye ve uygulama
yazılımı da API’yi kullanarak insan-bilgisayar arayüzünde gerçekleşecek olan yazılımı
oluşturur.
Şekil 3. Uygulama yazılımı, Sistem yazılımı ve İşletim Sistemi

Bir İşletim Sisteminin Fonksiyonları Açısından Mantıksal Yapısı
Bir işletim sisteminin, temel olarak 4 bileşeni bulunmaktadır;
• Aygıt yönetimi (Device management)
• İşlem yönetimi (Process management)
• Bellek yönetimi (Memory management)
• Dosya yönetimi (File management)
Aygıt yönetimi (Device management)
Bir işletim sistemi donanım aygıtlarının yönetiminden sorumludur. Birçok işletim
sistemi yazıcı, disk gibi donanım aygıtlarına genelde aynı şekilde yönetirken işlemci ve
belleğin yönetiminde farklı yaklaşımlar kullanmaktadır.
Aygıt yönetiminin aygıt bağımlı ve bağımsız olmak üzere ki bölümü
bulunmaktadır. Bağımlı olan bölüm’e aygıt sürücüsü (device driver) de denilmektedir.
İşletim sisteminin her bir aygıt için kullandığı ayrı bir sürücü vardır. Aygıt yönetiminin
bağımsız olan bölümü ise aygıt bağımlı bölümün yürüteceği yazılım ortamını temsil
etmektedir. Örneğin aygıt bağımsız alan, sistem çağrı arayüzündeki çağrıları aygıt
sürücüsüne iletmektedir. Aygıt bağımsız alan genellikle aygıt yönetiminin küçük bir
bölümüdür, büyük bölümü sürücülere ayrılmıştır.
İşlem Yönetimi
Dosya Yönetimi
Bellek
Yönetimi
Aygıt Yönetimi

Şekil 4. Aygıt yönetimi
Aygıt yönetiminin bu şekilde ikiye ayrılması ile bilgisayara yeni bir donanım
eklemek çok kolay hale gelmiştir. Öncelikle işletim sistemi tasarımcısı, aygıtın hangi
bölümünün bağımlı ve hangisinin bağımsız olacağını belirler. Bağımsız olan bölüm temel
işletim sistemi içerisinde, bağımlı olan bölüm ise aygıt sürücüsü içerisinde uygulamaya
geçirilir. Bu; aygıt yönetimin bağımsız bölümünün; bir aygıta okuma ve/veya yazma
işlemlerini yürüten sistem çağrılarını içerdiği anlamına gelmektedir. Örneğin yazıcı
sürücüsü bir yazıcı ile ilgili tüm yazılımları içermektedir. Bu yazıcı bilgisayara
bağlanarak sürücüsü yüklendiğinde aygıt yönetiminin bağımsız olan bölümü işletim
sisteminin içerisinde hali hazırda bulunduğu için bu yazıcı kullanıcı tarafından hemen
kullanılabilir.
İşlem Yönetimi (Process Management)
Birçok işletim sistemi işlem ve iş parçacığı (Thread) ve kaynak yönetimini
birlikte ele almaktadır. İş parçacığı, bilgisayarda en düşük kaynağa ihtiyaç duyan bir
program parçasıdır. Genellikle bir işlem ile birlikte kullanılır. İlgili işleme ayrılmış disk
alanı, dosyalar, bellek gibi kaynaklarını kullanarak çalışır. Çoklu kullanım
Aygıt Bağımsız Bölüm
Aygıt Bağımlı Bölüm Aygıt Bağımlı Bölüm Aygıt Bağımlı Bölüm
Aygıt Aygıt Aygıt

(multithreading) ise bir işlemin birden fazla iş parçacığına bölünerek aynı anda
çalıştırılmasıdır. Bir işlem birden fazla iş parçacığından oluşmaktadır.
Bir işletim sisteminin işlem yönetimi; birden fazla işlem ve iş parçasına aynı
makinenin kaynaklarını paylaşmaları, işlemlerin eşzamanlı olarak çalışabilmeleri için
zamanlamanın sağlanması gibi görevleri vardır. İşlem yönetimi; işlemlerin kaynaklara
ulaşması sırasında nasıl bir kaynak yalıtımı yapacağı, bir kaynağı paylaşması gereken
birden fazla işlem olduğunda hangi politikaları kullanarak bu kaynağı paylaştıracağı gibi
soruları cevaplamaya çalışmaktadır. Bunları yaparken de bellek yönetimi ile birlikte
çalışarak belleğin bu işlemler, iş parçacıkları arasında paylaştırılmasını sağlar.
Şekil 5. İşlem yönetimi
Bellek Yönetimi (Memory Management)
Bellek yönetimi işlem yönetimi ile birlikte çalışarak ana bellekte işlemlerin
yerleşimini sağlamaktadır. Her işlem bir bellek bölgesi istemekte ve bellek yönetimi de
bu işlemlerin çalışması için kaynak yalıtımını da sağlayarak gerekli bellek bölümünü
ayırmaktadır. Böylece bellek yönetimi bellekteki blokların paylaştırılması için gerekli
MİB
İş Parçacığı
Çoklu programlama
İşlem Kaynak
Yönetimi
Bellek Kaynaklar
Diğer

stratejileri uygulamaktadır. Modern bellek yönetimleri sanal bellek (virtual memory)
sağlayarak fiziksel bellekten çok daha büyük bir bellek alanının kullanılmasını
sağlamaktadır. Eğer işletim sistemi sanal belleği destekliyorsa bellek yönetiminin bir
kısmı aygıt ve dosya yönetimleri ile birlikte çalışarak belleği yönetir.
Şekil 6. Bellek yönetimi
Dosya Yönetimi (File Management)
Dosya yönetimi, bellek ve aygıt yönetimi ile birlikte çalışarak dosyaların hard
disk ve CD-ROM gibi depolama birimlerine yazılmasını sağlamaktadır. İşletim sistemi
bu yönetimi yapabilmek için dosya sistemlerini kullanmaktadır. Bu dosya sistemlerine
örnek olarak FAT, FAT32, NTFS, EXT2 verilebilir.

GÜVENLİK VE KORUMA


GÜVENLİK VE KORUMA

• Koruma- iç sorundur; bilgisayar sistemindeki dosya ve programlara denetimli erişimin
nasıl sağlana bileceğini ifade ediyor
• Güvenlik- iç koruma ile yanı sıra, sistemin çalıştığı dış ortamı da dikkate alıyor.
• Güvenliğin bozulması- kasıtlı,tesadüfi
kasıtlı: verileri yetkisiz okuma; yetkisiz değişme, yetkisiz silme

YETKİLENDİRME
• Üç temel kavram:
􀂃 kullanıcı sahipliği (anahtar,kart)
􀂃 Kullanıcı bilgileri(kullanıcı kimliği,parola)
􀂃 Kullanıcı özniteliği (parmak izi, imza, göz örüntüsü)

• Parolanın gizliliğinin kaybı:
􀂃 Sıradan bilgilerin kullanımı (doğum tarihi, soyadı…)
􀂃 Tüm mümkün kombinasyonların denenmesi
􀂃 (her kombinasyon için 1 ms hesabıyla 4 rakamlı parola için 5 sn)

• Parolanın şifrelendirilmesi
􀂃 Geçici parola

DİZİN İŞLEMLERİ

Dizinlerin oluşturulması ve silinmesi, kütük ve dizinlerin adlandırılması veya yeniden
adlandırılması, kütüklerin bir dizinden diğerine taşınması işlemlerini içerir. Dağıtılmış
sistemlerde dizinler genelde hiyerarşi yapı oluşturur. Bu yapı genelde ağaç veya graf
biçiminde olabilir. Ağaç biçiminde her bir alt dizin yalnız bir üst dizinle bağlantı oluşturur.

Graf veya ağ yapısında ise bir alt dizine birden fazla üst dizinden erişim sağlanabiliyor.
Dağıtılmış dizin sistemlerinin önemli problemlerinden birisi şeffaflıktır. Şeffaflığın
gerçekleştirilmesi yönlerinden birisi sunucunun değiştirilmesine bakmaksızın kütük yolu
adının sabit kalmasının sağlanmasıdır.

/server1/dir1/dir2/x
/server2/dir1/dir2/x
Verinin hangi sistemde saklandığının önem taşımaması, bir bilgisayardaysa başka türlü,
başkasındaysa başka türlü erişim olamamalı. Bu dağıtık sistemlerde veri şeffaflığıdır.

GÖREVLERİN YERLEŞİMİ


GÖREVLERİN YERLEŞİMİ

Tek işlemcili sistemlerde görevlerin yerleşimiyle ilgili problem yok. Görev mutlaka
bulunduğu bilgisayarda çalışır.

Dağıtılmış sistemlerin hangi mimari üzerinde kurulduğuna bakmaksızın her bir sistemde
hangi görevlerin hangi sistemde çalışacağına karar verecek bir algoritma geçerlidir.

Görevlerin işlemciler üzerinde yerleşmesi algoritmalarını iki sınıf modele ayırmak
mümkündür.

1. Sınıf model de Görev birinci kez oluşturulduğu zaman onun nereye yerleşeceğine
karar verilir. Herhangi bir bilgisayara veya işlemciye aktarılmış görev kesildiği
(silindiği) ana kadar o bilgisayarda kalmış olur. Bu model de sistemde olan
bilgisayarların boş durması veya fazla yüklenmesi hiçbir önem taşımaz. Bu model
(nonmigratory) hareketsiz görev modeli olarak adlandırılır.

2. Sınıf model de (görevlerin hareketli olduğu modelde) görevler bir sistemden diğerine
hareket edebilir. Hatta görevler bir işlemcide çalışır durumda ise o bilgisayarda kesilip
diğer bilgisayarda işine devam edebiliyor. Birinci modele oranla hareketli görev
modelinde bilgisayarlar daha dengeli yüklenmiş olurlar ama sistemin karmaşıklığı
artar. Bu ve diğer modellerin seçimi minimumlaştırma kıstaslarına bağlıdır.
minimumlaştırma kıstası ana işlem biriminin maksimum kullanımı olarak alınabilir
veya sorulara cevap süresi olarak alınabilir.
Varsayalım ki iki işlemci ve iki görev bulunur.

Pr 1 Pr 2
P1 = 10 MIPS
P2 = 100 MIPS
Tl = 5 sn (bekleme süresi)

A görevi komut sayısı 100 milyon
B görevi komut sayısı 300 milyon

1. P1 ‘de A ve P2 ‘de B görevi varsa
a. Acs = 100/10 =10 m/sn
b. Bcs = 300/100 + 5 = 8 m/sn
2. P1 ‘de A ve P2 ‘de B görevi varsa
a. Bcs = 300/10 = 30 m/sn
b. Acs = 100/100 + 5 = 6 m/sn

Ortalama çalışma süresi :

İlk durumda (10+8)/2 = 9 m/sn ikinci durumda (30+6)/2 = 18 m/sn
Bu arada iki kıstas önemlidir.
1. işlemcilerin dengeli kullanımı
2. paralellik
2 görevde 2. işlemciye sunulursa

DAĞITILMIŞ İŞLETİM SİSTEMLERİ (D.İ.S)


DAĞITILMIŞ İŞLETİM SİSTEMLERİ (D.İ.S)

Dağıtılmış sistemlerin en büyük özelliği bu sistemlerde yazılım mimarisinin (yapısının)
merkezleşmiş sistemlerden tamamen farklı olmasıdır. (Not: D.İ.S. henüz gelişim
aşamasındadır. Bu sistemlerde henüz kabul edilmiş standartlar yoktur.)
D.İ.S ‘nin merkezleşmiş İ.S.’nden aşağıdaki farkları vardır.

􀂃 Düşük maliyet
􀂃 Yüksek işlem hızı ve verimlilik
􀂃 Dağıtılmış uygulamalara yönelik olması
􀂃 Daha yüksek güvenirlik
Bilgisayarların ağ ortamında kullanılması verilerin ve aygıtların ortak kullanımı ve
iletişim kolaylığını sağlar. (bu bağımsız bilgisayarlardan farklıdır.)

D.İ.S’nin problemleri aşağıdaki gibidir.
􀂃 Ağ sistemlerinin yazılımı yavaş yapılanmıştır, gelişim aşamasındadır.
􀂃 Ağda çalışma ile ilave problemler oluşmaktadır.
􀂃 Güvenlikle ilgili problemlerin çözülmesi gerekir.

Dağıtık sistemlerin 4 genel mimarisi mevcuttur.
1. SISD
2. SIMD
3. MISD
4. MIMD

1. SISD (Single Instraction Single Data)(Tek Komut Tek Veri) : Her komut üzerinde bir
veri işlenir. İşlemciye bir komut gönderildiğinde o komut o anda o veri üzerinde işlenir.
Tek işlemcili sistemler bu mimariye aittir.

2. SIMD (Single Instraction Multi Data) (Tek Komut Çok Veri) : bir tek komut birçok
veri üzerinde etkilidir. Çok işlemcili bilgisayarlar (paralel bilgisayarlar) bu mimariye
sahiptir.
komut
a1 f(a1)
a2 f(a2)
an f(an)

3. MISD (Multi Instraction Single Data)(Çok Komut Tek Veri) : Bu mimari teori olarak
var ancak gerçekte yoktur. Aynı zamanda veri üzerinde farlı işlemler yapılmasını ifade
İbrahim Türkoğlu – Fırat Üniversitesi, Elektronik ve Bilgisayar Eğitimi Bölümü – 2006
111
eder. Örneğin k’nın ünlü ünsüz olduğu belirlenirken aynı zamanda alfabenin kaçıncı harfi
olduğu belirlenmesin.

4. MIDM (Multi Instraction Multi Data)(Çok Komut Çok Veri) : Özellikle ağ
sistemlerinde bu mimari kullanılır.
Süper bilgisayarlarda SIMD mimarisi kullanılır.
Her biri ayrı bilgisayar. Her birinin kendi diski,
belleği,...vs. var.
Bu ağ sistemi değil çok işlemcili sistemdir.
Yönetimi kolaylaştırmak için yapısallık oluşturulur.
İki küp var. Bunlar birbirine bağlıdır.
Küp sayısı arttırılabilir.

Paralel olarak çalışan bir sistem
1. Çok işlemcili (bilgisayarlı) sistemler
2. Ağ sistemleri
Ağ sistemleri zayıf bağlı sistemlerdir.
􀂃 Bilgisayarlar arasında veri alışverişi yapılabilir.
􀂃 Kabukların ortak kullanımı yerel sistemlerde
􀂃 Aynı yazılımlara erişim tek kanallı
Çok işlemcili sistemler sıkı bağlı sistemlerdir. Bir ana bellekten işlemler gerçekleşir.
İşlemcilerin kendi yerel bellekleri olabilir.
Tek kanaldan aynı anda birden fazla veri gönderilmesi bilgi kaybına yol açabilir. Bunun
için çeşitli çözümler kullanılır. Örneğin her bilgisayara bir adaptör konulur. Adaptör ağı
dinler. Bir bilgiyi göndermeden önce kanal hakkında bilgi edinir. Kanalda bir veri yoksa
bilgiyi gönderir.
Bir başka yol da jetonlu halka yöntemidir.

Giriş Çıkış Yazılımlarının İlkeleri


Giriş Çıkış Yazılımlarının İlkeleri

Giriş-çıkış yazılımı çok seviyelidir. Her seviye donanımın aygıtlarını bir üst seviyeden
saklar. En üst seviye kullanıcıya anlaşılır bir arayüz sunmuş olur.
Yazılımların oluşturulmasında başlıca 4 ilke vardır:
􀂃 Aygıttan bağımsızlık
􀂃 Aynı biçimli adlandırma
􀂃 Hataların yönetimi
􀂃 Aygıtların ortak kullanılabilirliği

1. Aygıttan bağımsızlık : G/Ç yazılımların tasarımında başlıca hedef yazılımların
aygıttan bağımsızlığını sağlamaktır. Örneğin programın diskteki veya disketteki
kütüklere erişimi arasında fark olmamalıdır.
2. Aynı biçimli adlandırma : Birinci ilkeyle sıkı bağlıdır. Kütük adlarıyla aygıt adlarının
yapısında hiçbir fark olmamalıdır. Tüm kütüklere aynı yöntemle yol adlarıyla erişilir.
3. Hataların yönetimi : Genelde hatalar mümkün oldukça yönetim seviyesinde yönetilir
ve oradan götürülür. Eğer disk denetleyici okuma hatası bulmazsa ilk önce bu hatayı
kendisi düzeltmeye çalışır. Eğer bunu başaramazsa aygıt sürücüsü bu işi yapmalıdır.
Büyük olasılıkla okuma hatası giderilmek için uygun blok yeniden okunmaya
çalışılacaktır. Eğer alt seviyeler hatayı çözemezse yukarı seviyeler bu problemi
çözmelidir.
4. Aygıt paylaşımı : Bazı giriş çıkış aygıtları (örneğin disk) birçok kullanıcı tarafından
aynı zamanda kullanılabilir. Bu zaman G/Ç alt sisteminin görevlerinden birisi aygıtın
kullanıcılar arsında düzgün ve verimli paylaşımını sağlamaktır. Bazı aygıtlar ise
paylaşılamaz aygıtlardır. Aynı zamanda bu tür aygıtlara istek veya sorgu gelirse G/Ç
sistemi bu taleplerin hangi ardışıklıkla ve yöntemlerle gerçekleşeceğini de
belirlemelidir.

İşletim sistemi bu fonksiyonlarını gerçekleştirmek için dört katmandan oluşur.
􀂃 Kesilme yöneticileri
􀂃 Aygıt sürücüleri
􀂃 Aygıttan bağımsız işletim sistemi yazılımı
􀂃 Kullanıcı seviyeli yazılım

G/Ç işlemlerinin mümkün olduğu kadar AİB ‘den uzaklaştırılması denetleyiciler
tarafından yapılması önemlidir. AİB yapılacak işlemleri disk denetleyicisine sinyalle
gönderir, ayrıca bellekte hangi adrese yerleştireceğini de belirler. Bundan sonra AİB başka
işlemleri gerçekleştirir. Denetleyici verilen işlemi gerçekleştirir ve işini bitirince AİB ‘ye
sinyal gönderir.
1. Kesilme yöneticileri : Kesilmeler genelde işletim sisteminin alt seviyesinde saklanır
ve işletim sisteminin küçük bir kısmının bu kesilmeler hakkında ilgisi bulunur. G/Ç
işlemleri başladıktan bitene kadar görev kesilmeli, ve uygun sinyal geldikten sonra
görev yeniden işe başlayabilmelidir. Bu fonksiyonları kesilme yöneticisi gerçekleştirir.
Kesilme yöneticisinin bir fonksiyonu da G/Ç aygıtlarıyla ilgili hataların analizidir.
2. Aygıt sürücüleri : Aygıt sürücüleri aynı sınıfa ait aygıtları yönetmek içindir. Aygıta
bağımlı kodlar aygıt sürücülerinde bulunur. Denetleyicilerin kodlarında bulunan
yazmaçlar aygıt sürücüleri tarafından alınır ve sürücüler bu komutların doğru
çalışmasını kontrol eder. Sürücülerde denetleyicilerin kaç yazmacı olduğu ve bu
yazmaçların hangi amaçlarla kullanıldığı hakkında bilgiler bulunur. Örneğin yalnız
disk sürücüsünün diskin bölümleri, yol ve silindirleri, disk başlığı, motor sürücüleri
hakkında bilgi bulunur.
3. Aygıttan bağımsız G/Ç yazılımları : Sürücüler ve aygıttan bağımsız yazılımlar
arasında kesin sınır işletim sistemine bağlıdır. Öyle ki aygıttan bağımsız yazılımların
gerçekleştirdiği bazı fonksiyonları verimliliği yükseltmek amacıyla aygıt sürücüleri ile
yapmak mümkündür. Aygıttan bağımsız yazılımların başlıca fonksiyonu tüm aygıtlar
için ortak olan G/Ç fonksiyonlarını gerçekleştirmek ve kullanıcı seviyesiyle tek
biçimli ara yüzü oluşturmaktır. G/Ç aygıtları için ortak fonksiyonlar okuma yazmadır.
Kullanıcının diske, diskete ve yazıcıya yazmak arasında hiçbir fark olmamalıdır.

GİRİŞ-ÇIKIŞ İŞLEMLERİ


GİRİŞ-ÇIKIŞ İŞLEMLERİ

İşletim sisteminin önemli fonksiyonlarından birisi G/Ç aygıtlarının yönetimidir. Bu
yönetim aygıtlara gönderilen komutlarla, kesilmelerle, hataların kontrolü ve yönetimiyle ifade
edilebilir. G/Ç yönetim sistemi aynı zamanda aygıtlarla sistemin diğer bileşenleri arasında ara
yüzü oluşturur ve bu ara yüzü kullanıcı için basit bir biçime dönüştürür.

G/Ç aygıtlarını genelde 2 kategoriye ayırmak mümkündür.
􀂃 Blok aygıtları
􀂃 Karakter aygıtlar

Blok aygıtlarının her biri sabit boyutta adreslerde saklanıyor ve her bir bloğun kendi
adresi mevcuttur. Bu tür aygıtlar da blokları diğer bloklardan bağımsız olarak okuyup yazmak
veya erişmek mümkündür. Disk blok aygıtıdır.
Karakter aygıtlarında ise, bilgilerin okunup yazılması (bilgi alışverişi) karakter
yardımıyla gerçekleştirilir. Bunlar adreslenebilen değildir. Bu bakımdan bu tür aygıtlar da
arama yapılamaz. Terminaller, bilgisayar ağ arayüzleri, yazıcılar bu tür aygıtlardandır.
Birçok aygıtlar bu 2 kategoriye ait değildir. Örneğin saat; saat ne adreslenebilendir ne de
karakterlerle işlenir.

8.1. Aygıt Denetleyiciler
G/Ç aygıtları mekanik ve elektronik bileşenlerden oluşur. Elektronik bileşene aygıt
denetleyicisi veya adaptör denir. Mekanik bileşen ise aygıtın kendisidir. Denetleyici ve aygıt
arasında standart arayüzleri (ANSI, IEEE, ISO) vardır. İşletim sistemi aygıtlarla değil
denetleyicilerle ilgilidir. Denetleyici genelde iki veya daha fazla aynı türlü aygıtı
denetleyebilirler.

Kütükler Üzerinde İşlemler


Kütükler Üzerinde İşlemler

Kütük diske yerleşmiş veri topluluğudur. Disk bloklarında yerleşir. Bloklara yerleşme
çeşitli şekillerde olur. Bağlaçlı liste, vs. Kütükler için disk bloklarının kullanımı birkaç
yöntemle gerçekleştirilebilir.

1. Ardışık yerleşim yöntemi : Bu yöntemle her bir kütük diskteki ardışık bloklarda saklanır.
Örneğin 50K ‘lık bir kütüğümüz varsa ve disk bloklarının boyutu 1K ise, 50 Blok
gerekecektir.

Ardışık yerleşimin iki üstünlüğü vardır:
1. Çalıştırılması basittir ve sadedir; kütük bloklarının yerini belirlemek için yalnız 1.
bloğun adresini bilmek yeterlidir.
2. Verimlilik yükseltir; bir işlemde tüm kütüğün okunması mümkündür.
Ardışık yerleşimin 2 yetersiz yönü vardır:

1. Kütük oluşturulduğu zaman onun maksimum uzunluğu (boyutu) çoğu zaman belli
olmuyor. Bu bakımdan kütükler için ne kadar yer ayrılacağı problem oluşturur.
2. Disk alanının verimsiz kullanımı ile ilgilidir. Bir kütük için ayrılmış fakat şu anda boş
olan disk alanları diğer kütükler tarafından kullanılamaz.

2. Bağlaçlı Liste Yerleşimi : Bu yöntemde kütükler bağlaçlı liste oluşturan disk bloklarına
yerleştirilirler. Her bloğun 1. kelimesi sonraki bloğun göstergesidir.

Bu yöntemde tüm disk blokları kullanılabilir. Kütüklerde, diskin kütükler arasında
dağıtılmasından dolayı disk alanı kaybı olmuyor. Dizinlerde, 1. disk bloğunun adresi
gösterilir. Doğrudan (rastgele) erişim, ardışıklığa oranla yavaştır. Burada, bir adresin
bulunması daha kolaydır.

3. İndeksleri kullanan bağlaçlı liste yerleşimi : Bu yöntemde her bir disk bloğundaki
göstergeler bellekte bir indeksler tablosu oluşturur. Bu yapıyı kullanmakla blokların içeriğine
daha kolay erişilir. Rast gele (doğrudan) erişim hızı yüksektir. MS DOS ‘da kullanılır.
Başlıca yetersizliği indeksler tablosunun her zaman (kütüğün çalışması süresince) ana
belleğe yerleşmesidir.

KÜTÜK SİSTEMLERİ


KÜTÜK SİSTEMLERİ

Kütük soyut bir kavramdır. Diske Lojik-0,1 ‘ler şeklinde yerleşir. Kullanımı
kolaylaştırmak için kütük görünümleri kullanılır.
Kütük kullanımının amacı :
1. Program ve veriler üzerinde işlemleri kolaylaştırmak.
2. Büyük hacimde verilerin ana belleğe sığmaması durumunda kütüler kullanılır.

Dizinler bir ağaç yapısı oluşturur. Dizinlerde kütüğün bir türüdür. Tüm bilgisayar
okumaları için bilginin kaydedilmesi ve okunması gerekiyor. Ama bu bilgilerin tümüyle ana
bellekte tutulması ve saklanması çoğu zaman üç sebepten gerçekleştirilemez.

1. Bellek alanının yetersizliği
2. Görev kesildikten veya işini tamamladıktan sonra onunla ilgili bilgilerin de ana
bellekten silinmesi kaybı.
3. Birden fazla görevin aynı zamanda aynı verilere erişiminin sağlanabilmesidir.
Bu üç problemi çözmek için bilgiler disk ortamına kaydediliyor. Buna ikinci bellek
denir. Diske kaydedilmiş bu tür bilgi birimlerine kütük denir. Kütükteki bilgiler kalıcıdır ve
görevin oluşturulması veya kesilmesine bağlı değildir. Kütükler İşletim Sistemi tarafından
yönetilir. Onların yapılandırılması, adlandırılması, kullanımı, çalıştırılması İşletim Sisteminin
başarımının başlıca konularıdır. İşletim Sisteminin kütüklerle ilgili kısmı kütük sistemini
oluşturur. Kütükler soyut mantıksal varlık olduğundan onlara erişim, kütük adlarıyla
gerçekleştirilir.
Çeşitli İşletim Sistemlerinde kütüklerin adlandırılması için farklı kısıtlamalar vardır.
Çoğu kütükler iki kısımlı adı destekliyor. Birincisi kütüğün özel adı, ikinci kısım uzantısı.
􀂃 Linux’ta uzantıların sayısının sınır yoktur.
Örn : prog_adi.tar.gz

􀂃 Windows da .exe uzantılı olamayan dosya çalıştırılamaz.
Örn : prog_adi.exe

􀂃 Ms-DOS da büyük küçük harf ayrımı yoktur.
Örn : prog.exe ile PROG.exe aynı


􀂃 Unix de büyük küçük harf ayrımı vardır.
Örn : prog.exe
PROG.exe farklıdırlar.
Prog.exe

7.1. Kütük Yapılandırmaları
Kütükler çeşitli şekillerde yapılandırılabilir :
1. Bitler ardışıklığı şeklinde yapılanma: Erişim bit ardışıklığı ile yapılır. Bit sayısı çok
olduğundan erişim kolay değildir. Eski sistemlerde kullanılır. Arama işlemleri zordur ve
çok zaman gerektirir.

2. Kayıtlar ardışıklığı şeklinde yapılanma: Genelde kullanılan yapıdır. Kayıt ve alt
seviyeleri bitlerden oluşur. Verilere erişim kayıtlar üzere yapılır. Kütük ise sabit
uzunluklu kayıtlardan oluşur (80-128-132 karakter uzunluk).

3. Ağaç şeklinde yapılanma: Bu sistemler, DataBase machine türü sadece verilerle
uğraşmak için yapılır. Kütük, kayıtlar ağaç biçiminde yapılanır. Kayıtların aynı
olmayabilir, farklı olabilir. Her kayıtta kendi adı veya anahtarı ile erişim mümkündür.
Bu tür yapılar özel işletim sistemlerinde (veri tabanına yönelik sistemlerde) kullanılır.
Kayıtların yapılanmasında başlıca amaç, verilmiş anahtarla herhangi bir kayıta doğrudan
erişimi sağlamaktır.
Ağaç
Yapılanması
A B C
A1 A2 A3
A11 A22 A33

Kayıtların Yapısı : Sabit boyutlu ve değişken boyutlu kayıtlar vardır. Mantıksal kayıtlar
değişken boyutludur. Her bir kaydın anahtarı vardır. Anahtar üzerinde sıralama yapılır. Erişim
bu şekilde sağlanır. Kayıt adı ile erişilemez.
Kütük türleri : İşletim sistemleri, çeşitli kütük türlerini desteklemektedirler. Bunlar;
􀂃 Kullanıcı bilgilerini içeren kütükler
􀂃 Kütük sisteminin yapısını içeren kütükler
􀂃 Simge kütükleri (Ardışık giriş-çıkış aygıtlarında işlem yapmak için kullanılır. Yazıcı,
ağlar, terminaller. Bunlar, geçici olarak oluşturulurlar ve işlem bitikten sonra
silinirler).
􀂃 Blok kütükleri (Diskle işlem yapmak için kullanılır).

Kütüklere ardışık ve rast gele (doğrudan) erişim mümkündür. Ardışık erişimde gereken
veriye ulaşmak için 1.’den başlayarak tüm veriler okunmalıdır. Şimdiki sistemlerde her ikisi
de kullanılır. Genelde doğrudan erişim.

Her bir kütüğün adı ve içerdiği bilgilerin yanı sıra başka özellikleri de vardır. Sistemden
sisteme bu özellikler değişebilir. Genel özellikler şunlardır.
􀂃 Koruma
􀂃 Parola
􀂃 Kütüğü oluşturanın adı, özellikleri, oluşturulma tarihi
􀂃 Bayraklar (Geçici yada kalıcı kütük, sistem veya kullanıcı kütüğü olduğu, erişim
hakkında bilgiler bulunur).
􀂃 Kayıtın uzunluğu, boyutu
􀂃 Kütüğün son güncelleme tarihi
􀂃 Kütüğün şimdiki ve maksimum boyutu
Kütüğün okunması sırasında tüm kütük belleğe aktarılır (açma işlemi). İşlem bittikten
sonra kapanır ve diske gönderilir.