İşletim Sistemleri

advertisement
İşletim Sistemleri
İşletim sistemi1, bilgisayarda çalışan, bilgisayar donanım kaynaklarını yöneten ve çeşitli uygulama
yazılımları için yaygın servisleri sağlayan bir yazılımlar bütünüdür. İşletim sistemi, uygulama kodları
genellikle direkt donanım tarafından yürütülmesine rağmen, girdi-çıktı, bellek atama gibi donanım
fonksiyonları için uygulama programları ve bilgisayar donanımı arasında aracılık görevi yapar.
İşletim sistemleri sadece bilgisayar, video oyun konsolları, cep telefonları ve web sunucularında değil;
arabalarda, beyaz eşyalarda hatta kol saatlerinin içinde bile yüklü olabilir. İşletim sistemleri
işlevsellerinin genişliği ile değil, donanımı belli bir amaç doğrultusunda programlayabilme
nitelikleriyle değerlendirilmelidir.
En yaygın kullanılan işletim sistemlerine örnek olarak; Microsoft Windows, Mac OS X, Linux,
Android ve iOS örnek verilebilir.
İşletim Sistemi Türleri
Gerçek Zamanlı İşletim Sistemleri
Gerçek zamanlı işletim sistemi, gerçek zamanlı uygulamaları çalıştırmayı amaçlayan çok görevli bir
işletim sistemidir. Gerçek zamanlı işletim sistemleri genellikle özel zamanlama algoritmalarında
kullanılır, böylece doğanın deterministik bir davranışını elde edebilirsiniz. Gerçek zamanlı işletim
sistemlerinin ana teması olaylara hızlı ve tahmin edilebilir bir tepki vermesidir. Ayrıca gerçek zamanlı
işletim sistemlerinde olay güdümlü veya zaman paylaşımlı bir tasarım vardır. Öncelikli olarak
görevleri arasında bir olaya dayalı sistem anahtarları, zaman paylaşımlı işletim sistemlerinin saat
kesmelerine dayalı görevlere geçiş yapar. Gerçek Zamanlı işletim sistemlerine örnek olarak QNX
gösterilebilir.
Çok kullanıcılı ve Tek Kullanıcılı İşletim Sistemleri
Çok kullanıcılı işletim sistemi birden fazla kullanıcının aynı anda tek bir bilgisayar sistemine
erişmesini sağlar. Bu sistem, zaman paylaşımı yoluyla bir bilgisayara birden çok kullanıcı erişimi
sağladığı için zaman paylaşım sistemli çok kullanıcılı sistemler olarak sınıflandırılabilir. Çok
kullanıcılı bir işletim sistemine karşı tek kullanıcılı işletim sistemleri, bir seferde tek bir kullanıcı
tarafından kullanılabilir. Bir Windows işletim sisteminde birden fazla hesap için birden çok gerçek
kullanıcı yoktur. Yerine, sadece ağ yöneticisi gerçek kullanıcıdır. Ama Unix benzeri bir işletim sistemi
için, bu iki kullanıcı bir kerede giriş yaparak OS özelliği ile birçok kullanıcılı işletim sistemi yapmak
mümkündür.
Çoklu Görevli ve Tekli Görevli İşletim Sistemleri
Çoklu görev, bir işletim sisteminde bir kullanıcının, birden fazla sayıda işlemi aynı anda işletime
alınabilmesi özelliğidir. Yani çoklu görev, bellekteki birkaç veriyi aynı anda işlemesi ve işlemci ile
I/O ünitelerinin de bunlar arasında aynı anda kullandırılması ortamının yaratılmasıdır. Ancak bir
bilgisayar sisteminde, işletim sisteminin kendisine ait birden fazla işlemin aynı anda çalıştırılması, bu
sistemde “çoklu görev (multitasking)” özelliği olduğunu göstermez. Bu nedenle bir işletim sisteminde
çoklu görev özelliği, ancak bir kullanıcının birden fazla sayıdaki işlemi aynı anda işletebiliyorsa
vardır.
1
http://tr.wikipedia.org/wiki/İşletim_sistemi
Dağıtık İşletim Sistemleri
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.2
Her işlemcinin kendine ait belleği vardır ve diğer işlemcilerle iletişim hatları üzerinden haberleşirler.
Bu sistemlerde kaynak paylaşımı sağlanır. Bu kaynak MİB, diğer donanım elemanları olabileceği gibi
veriler, dosyalar da olabilir. Dağıtık sistemlere; bilgisayar ağları, Sunucu-İstemci Sistemleri, Peer-toPeer (Noktadan noktaya) ve Internet örnek olarak verilebilir.
Gömülü İşletim Sistemleri
Gömülü işletim sistemlerinde gömülü bilgisayar sistemlerinde kullanılmak üzere tasarlanmıştır. Daha
az özerkliğe sahip PDA'lar gibi küçük makinelerde çalışacak şekilde tasarlanmıştır. Bu sistemlerin
kaynakları sınırlı sayıda faaliyet gösterir. Bu sistemlerin tasarımı son derece verimlidir ve bu
sistemlerde çok kompakt vardır. Windows CE ve Minix 3 gömülü işletim sistemlerinin bazı
örneklerdir.
İşletim Sisteminin Bileşenleri
Bir işletim sistemi, kavramsal olarak, üç grupta toplanabilecek
bileşenlerden oluşur:



Kabuk (bu bir grafik kullanıcı arayüzü ve/ya da komut satırı
yorumlayıcısı olabilir),
Sistem çağrıları,
Çekirdek.
Kimi işletim sistemlerinde kabuk ve çekirdek tümüyle
bileşenlerken, kimilerinde bu ayrım yalnızca kavramsaldır.
ayrı
Kullanıcı Arabirimi – Kabuk (Shell)
Genel olarak arayüz, herhangi bir şeyin kullanımını ya da onda etkileşimi sağlayan kısım olarak
düşünebilirsiniz Bir araba, gaz ve fren pedalları ile aracı yönlendirmeyi sağlayan direksiyonu da içeren
daha karmaşık bir arayüze sahiptir. Bir bilgisayarın arayüzü klavye ve fare ile monitörde gözüken ve
bilgisayarı birçok farklı iş için kullanabilmemizi sağlayan yazılımlardan oluşur.
Temelinde, bir kabuk, komutları çalıştırmaya yarayan basit bir makro işlemcisidir. Burada makro
işlemcisi terimi, metinlerin ve sembollerin daha geniş ifadeler oluşturmak üzere genişletilmesi işlevini
yerine getiren anlamındadır. Bir Unix kabuğu, hem bir komut yorumlayıcısı hem de bir programlama
dilidir. Bir komut yorumlayıcı olarak, GNU araçlarından zengin bir demeti barındıran bir arayüzdür.
Programlama dili özellikleri ise bu araçları birarada kullanabilmeyi mümkün kılar. Komutları içeren
dosyalar oluşturulabilir ve bu dosyaların kendileri birer komut haline gelebilir.3
Kabuklar etkileşimli ya da etkileşimsiz kullanılabilirler. Etkileşimli kipte, girdi klavyeden kabul
edilirken, etkileşimsiz kipte bir dosyadan okunur. Kabuk, başka bir girdi kabul etmeden önce
eşzamanlı komutların işlemlerini bitirmesini bekleyebileceği gibi, eşzamansız komutlara paralel olarak
2
3
http://eng.harran.edu.tr/~nbesli/OS/isl_sis.pdf
http://www.belgeler.org
kabuğun ek komutları okumasını ve çalıştırmasını sağlayabilir. Yönlendirme yapıları ile bu komutların
giriş ve çıkışlarının kolayca denetlenmesini mümkün kılar. Üstelik komutların çalıştırıldığı ortam
üzerinde de denetimi sağlar.
Macintosh bilgisayarların çıkışı ve ardından Microsoft’un Windows yazılımının geliştirilmesinden
beri birçok insan, arayüz dendiğinde otomatik olarak grafiksel kullanıcı arayüzünü (GUI –Graphic
User Interface, grafik kullanıcı arayüzü-) düşünmektedirler. Bilgisayar kullanımını daha kolay hale
getirmede görsel nesneler kullanımı gittikçe gelişiyor olsa da bu nesneler bilgisayar ve kullanıcı
arasında etkileşimi sağlayan seçenekler topluluğunun sadece bir parçasıdır.
MS-DOS işletim sisteminde kabuk olarak command.com kullanılır. Dos işletim sisteminin aksine
Unix'in kaynak kodlar açık olduğundan dolay ve Unix'in C gibi yüksek seviyeli bir programlama dili
ile yazılmış olması nedeniyle Unix’te geliştirilmiş birçok kabuk program vardır.
Shell
sh
csh
Açılımı
Bourne Shell
C-Shell
ksh
Korn Shell
bash
tcsh
zsh
Bourne
Again Shell
T-Shell
Z-Shell
Açıklama
Steve Bourne tarafından geliştirilen orijinal Unix Shell
Berkeley Ünivesitesinde C dili kullanılarak yazılmıştır
David Korn tarafından geliştirilmiştir. sh ve tcsh’nin gelişmiş bütün
özeliklerine sahiptir. En etkili kabuk olarak bilinir.
Free Software Foundation tarafından geliştirilmiştir. Bourne benzeri bir
script dili ile yazılmıştır ve tcsh ve ksh’ın bütün özelliklerine sahiptir.
Geliştirilmiş C-Shell olarak bilinir.
Bash, ksh ve tcsh ile benzerlik gösterir.
Sistem Çağrıları (System Calls)
İşletim sistemi ile kullanıcı programları arasında tanımlı olan arayüz, işletim sistemi tarafından
tanımlanan bir prosedürler kümesidir. İşletim sistemi tarafından tanımlanan bu prosedürlere sistem
çağrıları (system calls) denilir. Tanımlı olan işletim sisteminin sistem çağrıları kümesi işletim
sistemlerinde farklı olabilir. İsim olarak farklı olmasına rağmen arka planda gerçekleştirilen işlemler
benzerdir.4
İşlemci aynı anda tek komut (instruction) çalıştırabilir. Eğer kullanıcı kipinde çalışan bir kullanıcı
programı bir servise ihtiyaç duyarsa, örneğin bir dosyayı okumak isterse, bir sistem çağrısı komutu
(system call instruction) çalıştırarak kontrolü işletim sistemine vermelidir. İşletim sistemi programın
ne istediğini parametreleri inceleyerek belirler, sistem çağrısını yerine getirir ve kontrolü sistem
çağrısını çağıran programa geri verir.
Sistem çağrısını çağırmayı, özel prosedürleri çağırma gibi düşünebiliriz. Örneğin, Unix sistemlerde
bulunan read sistem çağrısını inceleyelim. Üç adet parametre alır. Birinci dosyayı belirtir, ikinci
parametre tamponu belirtir ve üçüncü parametrede okunacak byte sayısını verir.
sayi = read(fd,tampon,okunacakByteSayısı);
Eğer sistem çağrısı doğru çalışmamışsa hata kodu errno isimli global değişkene yazılır ve geriye -1
çevrilir.
Çekirdek
Çekirdek, diskteki dosyaların izlerini tutar, programları başlatır ve yürütür, belleği ve çeşitli süreçlerin
kaynaklarını düzenler, ağdan paketleri alır ve gönderir, vb... Çekirdek kendi başına çok az iş yapar,
fakat diğer servislerin kullanabileceği araçları sağlar. Ayrıca donanımlara doğrudan ulaşan kişileri
4
http://members.comu.edu.tr/msahin/courses/isletim_sistemi_giris/ders03_01.pdf
önleyerek, onları kendi sunduğu araçları kullanmaya zorlar. Bu yolla çekirdek, kullanıcıları diğer
kullanıcılara karşı koruyacak bir yol izler. Çekirdek tarafından sağlanan bu araçlar sistem çağrıları
üzerinden kullanılır. Sistem Programları işletim sisteminin ihtiyacı olan çeşitli servisleri yerine
getirmek için çekirdek tarafından sağlanan bu araçları kullanırlar.
İşletim Sisteminin Görevleri




İşlem Yöntemi: Verilen işlemlerin belirli bir sırada ve zamanda uygulanmasını sağlar.
Bellek (Memory) Yöntemi: Bellekle ilgili denetleme ve organizasyon yapar. Belleğin dolu ve
boş kısımlarını kontrol ederek, işlemler için gerekli belleği ayırır ve işlem bitince bu belleği
boşaltır. Main Memory'e (Ana Bellek) gerekli yer kalmayınca yardımcı ek belleği kullanır.(Ek
bellek: Disk, Disket v.b. gibi)
Giriş - Çıkış Birimleri Yönetimi: Bilgisayar ile çevre birimleri ( I / O Unit ) arasındaki veri
alışverişini denetler. (Printer, Mouse , Scanner gibi)
Dosya (File) Yönetimi: Verilerin saklandığı dosyalarla ilgili çalışmayı yönetir. Dosya erişim,
bilgi yazma - okuma gibi işlemleri düzenler.
İşlem Yönetimi
Tüm modern bilgisayarlarda birçok iş aynı anda yapılabilir.





Kullanıcı programları çalışır
Disk okunabilir.
Yazıcıya ya da ekrana çıktı verilebilir.
cd ye veri yazılabilir.
...
Çoklu görevli sistemlerde, işlemci bir programdan diğerine çok küçük sürelerde geçerek tüm
programların aynı anda çalışıyormuş izlenimini verilir. Bilgisayarda bulunan tüm çalışabilir
programlar süreçler şeklinde organize edilir. Süreç yürütme anında (execution) bulunan bir
programdır. Her sürecin kendine özel
değişkenleri vardır.





Program sayacı
Yazmaçları
Program durum kelimesi(PSW)
Yığın Göstericisi
…
İşletim sistemi tüm süreçlerin bilgilerini,
sistemde bulunan bir tabloda (dizi ya da
bağlı liste) tutar. Bu tabloya süreç tablosu
(process table) denilir. Bu tabloda her süreç için bir girdi bulunur. Bu girdi içerisinde süreç ile ilgili
olan tüm bilgiler tutulur.
Her sürecin kendi iç durumu ve program sayacı (program counter) vardır. Her süreç farklı birer varlık
olmasına rağmen birbirleri ile etkileşimde bulunabilir ve birbirleri ile haberleşebilirler. Bir sürecin
çıktısı başka bir sürecin girdisi olabilir. Bu tip durumlarda örneğin, girdiyi alan süreç çıktıdan daha
hızlı çalışırsa girdinin olmadığı durumlarda bekler (bloklanır). İkinci durum ise işlemcinin çalışan
süreci durdurarak başka bir süreci çalıştırmasıdır.
Süreçler (Şekil5);
1. Çalışıyor (Running): Şu anda işlemciyi
kullanıyor
2. Hazır (Ready) : Çalışabilir durumdadır, başka
bir sürecin çalışması için geçici olarak
durmuştur.
3. Bloklanmış (Blocked): Harici bir olay
gerçekleşmeden çalışmaz.
Proses çalışmak üzere seçilmiş ve o anda işlemcide çalışıyor durumda (run) olabilir. Prosesin parçalı
çalışma süresi bittiğinde proses çalışır durumdan çıkarılır ve çalışmaya hazır duruma getirilir (ready).
Çalışmaya hazır olma durumu prosesin o anda çalışmadığı ancak kendi sırası geldiğinde yeniden
çalıştırılmak üzere beklediği durumdur.
Proses çalışırken klavye, disk gibi dışsal bir olayı bekleyecek bir işlem başlatırsa prosesin çalışıyor
olma durumu sona erdirilir ve process bloke olmuş (wait) duruma getirilir. Sistem çalışmakta olan
prosesi bloke ettikten sonra çalışmaya hazır olan proseslerden uygun olanını seçerek onun çalışmasını
sağlar. Bloke edilen prosesler bekleme kuyruklarına alınmaktadır. Dışsal olayı beklemek için bloke
olmuş bir prosesin blokesi dışsal olay gerçekleştiğinde çözülür ve process bloke olmuş durumdan
çıkartılarak çalışmaya hazır (ready) duruma getirilir. Prosesin sonlanması genellikle (fakat her zaman
değil) çalışır durumdayken (run) gerçekleşir.6
Geleneksel işletim sistemlerinde, her
sürecin belirli bir adres uzayı vardır. Bu
adres uzayında yapması gerekli olan
işlemleri kendisi işlemcide çalışırken
yapar. İşlemci aynı anda sadece tek bir
komut
(instruction)
çalıştırabilir.
İşlemcide çalışacak olan süreç seçildikten
sonra işlemcide belirli bir süreye kadar
çalışır. Bazen aynı adres uzayında başka
bir ifadeyle aynı süreç içerisinde aynı
programın farklı bölümleri (iş parçacığıthread) yarı paralel olarak çalıştırılabilir. Bu şekilde aynı süreç içerisinde birden fazla süreç
parçacıkları paralel olarak işlem yaparlar. Bu modele iş parçacığı modeli denilir.
İş Parçacığı (thread) kavramının bize getirdiği, aynı süreç ortamında çoklu çalıştırma (executionyürütme) işleminin yerine getirilmesidir. Tek bir süreç içerisinde çoklu iş parçacıklarının (multithread)
çalışması, çoklu programlamada birden fazla sürecin aynı anda (işlemcide sırayla) çalışmasına
eşdeğerdir.
Bir süreç içerisindeki tüm threadler, aynı adres uzayını, açık dosyaları, genel değişkenler gibi
kaynakları paylaşırlar. Süreçler ise fiziksel belleği, diskleri, yazmaçları, ve diğer genel kaynakları
paylaşırlar.
Eğer bir bilgisayar çok programlı (multi programming) ise, sıklıkla birçok süreç aynı anda işlemciyi
kullanmak için birbirleri ile yarışırlar. Bu durum aynı anda birden fazla sürecin hazır (ready)
5
6
http://www.yildiz.edu.tr/~oeyeci/drsDosya/os/BTP_205_OS_d1.pdf
http://www.kaanaslan.com/resource/article/display_article.php?id=47
durumuna gerçekleşir. İşletim sisteminde, birden fazla hazır durumda bulunan bu süreçlerden
hangisinin işlemciyi kullanacağına karar veren mekanizmaya zamanlayıcı (scheduler) denilir ve
kullanılan algoritmaya da zamanlama algoritması (scheduling algorithm) denilir.
1. İlk Gelene İlk Servis Yapılır (First come first served)
Basitçe hazır durumdaki süreçleri tutan bir kuyruk (queue) vardır. Kuyruktaki süreçler sırayla
çalıştırılırlar. Çalışan süreç bloklanınca bekler. Bloklanmış süreç tekrar hazır durumuna geçtiğinde
yeni bir süreç gibi davranılarak kuyruğun sonuna eklenir.
2. En Kısa Süreli İş İlk (Shortest Job First)
Kesintisiz çalışan algoritmadır. Süreçlerin toplam çalışma sürelerinin belirli olduğu düşünülür.
Zamanlayıcı, kuyrukta bulunan süreçlerden en kısa sürede tamamlanacak olan süreci seçer.
3. Çalışma Süresi En Az Kalanı Çalıştırma (Shortest Remaining Time Next)
En kısa süreli iş algoritmasının, bir kesintili uyarlamasıdır. Kalan çalışma süresi en az olan seçilir.
Yeni bir iş geldiğinde, mevcut işin kalan süresi ile yeni sürecin kalan süresi karşılaştırılır; küçük olan
tercih edilir.
4. Dönüşümlü Sıralama (Round Robin)
Her bir proses, CPU süresinde kısa bir zaman dilimini (kuantum süresi) kullanır. Genellikle 10-100
milisaniye kadardır. Zamanı geçen prosesler durdurulur ve ready (hazır) kuyruğunun sonuna eklenir.
Ready kuyruğunda n tane proses varsa ve kuantum süresi q olmak üzere, her proses CPU zamanının
1/n’ini alır. Hiçbir proses (n-1)q zaman diliminden daha fazla beklemez.
Bellek Yönetimi
İşletim sistemlerinde bellek hiyerarşisini yöneten parçaya bellek yöneticisi (memory manager) denilir.
Bellek yöneticisinin görevi, belleğin hangi parçalarının kullanımda olduğunu, hangi parçalarının
kullanılmadığını izlemek, süreçlere bellek tahsis etme (allocate) , tahsis edilen belleği geri almak ve
bellek ile disk arasındaki takas işlemlerini gerçekleştirmektir.
Bellek yönetim sistemleri iki temel sınıfa ayrılabilir:


Çalışma zamanında süreçleri bellek ile disk arasında yer sürekli yer değiştirenler. (takaslama,
sayfalama). Süreçlerin bu şekilde disk ile bellek arasında yer değiştirilmesinin nedeni, belleğin
boyutunun yetersiz olmasıdır.
Değiştirme işlemi yapmayanlar.
Modern işletim sistemleri aynı anda birden fazla sürecin çalışmasına olanak verir. Bir süreç
bloklandığında başka bir süreç çalışmaya başlar. Bu şekilde işlemci kullanımı artar.
Çoklu programlamayı sağlamanın en
kolay yolu belleği n adet bölüme
ayırmaktır (Şekil a). Bu bölümler eşit
ya da mümkünse farklı boyutta
olmalıdır. Ayrılan her bölüm için bir
süreç kuyruğu bulunur. Bir iş geldiği
zaman kendisini tutabilecek olan en
küçük
boyutlu
bölümün
girdi
kuyruğuna eklenir. Bir süreç eklendiği
bölümün hepsini kullanmaz ise bu
kullanılmayan
bellek
boşuna
kullanılmış ve israf edilmiş olur.
Bunun yerine tüm süreçler bir kuyruğa konulur ve sıraları geldiğinde uygun bellek gözüne
konulurlar.(Şekil b)
Çoklu programlamada yer değiştirme ve koruma birer problemdir. Farklı süreçler bellekte farklı
adreslerde çalıştırılacaktır. Programın bağlama işlemi yapıldığında, bağlayıcının programdaki kullanıcı
prosedürlerinin, kütüphane prosedürlerinin, ana programın adreslerini bilmesi gerekmektedir. Bu
bilgileri bilebilmesi için ve program kodlarını bu adreslere göre düzenleyebilmesi için programın
bellekte hangi adrese konulduğunu bilmesi gereklidir.
Tüm aktif süreçler bazen bellekte yer olmadığı için bellekte aynı anda bulunamazlar. Bu süreçlerden
bir kısmı diskte bulunmalıdır. Diskte bulunan süreçler dinamik olarak belleğe yüklenirler. Sürecin
tümü çalışırken belleğe getirilir, biraz çalışır ve sonra diske kaydedilir. Bu işleme takaslama
(swapping) denilir.
Diğer bir strateji sanal bellek (virtual memory) dir. Sanal bellek tekniğinde, işlemin tamam değil,
onun yerine yalnızca o anda çalıştırılacak bölüm belleğe alınır. Böylelikle ikincil bellek yardımıyla
ana belleğin kapasitesi artırılır. Sanal bellek, ana belleğin bir benzeri olduğu için sanal bellekte de
adresler vardır.
Sanal bellek tekniği ile sayfalama yöntemi birlikte kullanılır. “İşlem”, eşit
uzunlukta sayfa adı verilen kısımlara bölünür. İşlemcinin işleyeceği
işlemin ilgili sayfası ikincil bellekten ana belleğe yüklenir.
Ana bellek ve işlem sırası ile sayfalara bölünür. Bir diğer ifade ile eşit
bölümlere bölünürler. İşlemlere ilişkin sayfalar, sanal bellekte yer alır.
İşlemcinin o esnada ihtiyaç duyduğu işlem sayfası, sanal bellekten ana
bellek sayfalarına aktarılır. İşletim sistemi, gerçek ve sanal sayfa bilgilerini
bir çizelge de tutar. Çizelgenin her bir eleman, bir sayfaya ilişkin bilgileri
tutar.
Bellek Yönetim Birimi; sanal bellek, sayfalama ve sayfa bilgilerinin tutulmasının yanı sıra ana bellek
ile sanal bellek arasındaki sayfaların değişimi ile de yükümlüdür. Sanal bellekteki sayfaların ana
belleğe yüklenmesi, ana bellekteki sayfaların ise sanal belleğe yüklenmesi her iki bellek arasında
sürekli bir sayfa değişimini gerektirmektedir. Bu değişimler ise bir takım algoritmalara dayalı olarak
yapılmaktadır. Bu algoritmalardan bazılar aşağıdadır:
1- FIFO (First In First Out - İlk Giren İlk Çıkar):
Ana belleğe ilk giren sayfanın işlemcideki işlem hacminin azaldığı varsayımı altında; ana belleğe
yüklenecek bir sayfa olduğunda öncelikle ana bellekte en uzun kalan sayfa sanal belleğe, sanal
bellekteki sayfa ise ana belleğe aktarılır.
2- LIFO (Last In First Out - Son Giren İlk Çıkar):
Sanal bellekteki bir sayfa, işlemci tarafından ihtiyaç duyulup çağrılıp ana belleğe yüklendiği için bir
sonraki çağrılacak sayfa ana belleğe yüklenirken en son girmiş olan sayfaya ilişkin uygulama
“eskimiş” kabul edilir.
3- LFU (Least Frequently Used - En Az Kullanılan):
Ana bellekteki en az kullanılan sayfa ile değiştirme ilkesine dayanır.
4- NRU (Not Recently Used - Son Zamanlarda Kullanılmayan):
İşleme alınacak ve diskte bulunan sayfalar, ana bellekte bulunan ve son zamanlarda kullanılmayan
sayfalar ile değiştirilme ilkesiyle hareket eden bir algoritmadır.
Yukarıda anlatılan algoritmalar işletim sisteminin bir parçası olan bellek yönetici tarafından “Hata
Oluştuğunda” (Page Fault) devreye girer. Buradaki hata ifadesini; Merkezi işlem birimi tarafından
çağırılan operant ya da operatörler bellek adresi ile çağrılır. Sayfalama yöntemiyle çalışan bellek
yönetim birimlerinde ana bellekte sayfaya ilişkin adreste sayfa olmadığı zaman hata oluşur. Hatanın
nedeni, ilgili sayfanın ana bellekte olmaması, sanal bellekte olmasıdır.
Burada bir konuya değinmekte yarar vardır: Ana belleğin büyük hacimli olması, işlemin hepsinin ana
belleğe yüklenmesi demek olacağından, düşük hacimli ana belleğe göre yüksek hacimli ana bellekte
işletim daha hızlı olacaktır.
Giriş - Çıkış Birimleri Yönetimi
Giriş/çıkış birimleri, verilerin hem bilgisayar sistemi ile dış ortam arasında iki yönlü aktarımını
sağlayan, hem de bunların bilgisayar ortamında saklanmasına yarayan birimlerdir. Bilindiği gibi
giriş/çıkış birimleri giriş/çıkış sürücüleri ile giriş/çıkış arabirimlerinden oluşur. Giriş/çıkış sürücüleri,
klavye, ekran, yazıcı, modem gibi, verilerin sistem ile dış ortam arasında çift yönlü aktarıldığı ya da
disk, mıknatıslı şerit gibi sistem içinde saklandığı ögelerdir. Verilerin, sürücüler üzerinde okuma
yazma işlemleri, giriş/çıkış arabirimleri aracılığıyla gerçekleştirilmektedir. Bu bağlamda, bir disk
öbeğinin sürücü üzerinden okunması için, disk arabirimi düzeyinde yer alan kimi denetim yazmaçları
kullanılarak okuma yazma kafasının ilgili ize taşınması, öbeğin sürücüden arabirim yastığına, buradan
da ana belleğe aktarılması gerçekleştirilir. Benzeri işlemler, giriş/çıkış sistemi olarak adlandırılan
kesim tarafından ele alınır.
Yukarıda tek bir sürücü için örneklenen işlemler, çok kullanıcılı bir bilgisayar sisteminde, aynı anda
birden çok sürücü üzerinde gerçekleştirilmek zorundadır. Bunun için çoğu kez, sürücü-arabirim arası
aktarım işlemleri bir kez başlatıldıktan sonra, arabirimlerin, aktarım sonunda ana işlem birimini
uyarması öngörülür. Bu yolla ana işlem biriminin birden çok arabirimi eşanlı olarak denetleyebilmesi
sağlanır. Arabirimlerin ana işlem birimine yolladıkları işlem sonu uyarıları, kesilme uyarıları olarak
adlandırılır. Değişik giriş/çıkış arabirimlerinden aynı anda ve zamanuyumsuz olarak gelen bu
uyarıların, hiçbir veri kaybına yol açmadan ve bu birimlerin öncelik sırası gözetilerek ele alınması
kesilmelerin yönetimi olarak bilinir. Kesilmelerin yönetimi giriş/çıkış sistemi kapsamında düşünülür.
Verilerin giriş/çıkış birimleri ile ana bellek arasında aktarılması, her zaman, kesilme düzeneğine dayalı
olarak yapılamaz. Ö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. Bu yöntemde, ana bellek ile giriş/çıkış birimleri
arasında veri aktarımı, doğrudan bellek erişim denetleme birimi olarak adlandırılan yardımcı bir
işleyici aracılığıyla gerçekleştirilir. Doğrudan bellek erişim işlemleri de giriş/çıkış sistemi kapsamında
ele alınır. Giriş/çıkış sistemi kesimi, giriş/çıkış arabirimleri, ana işlem birimi, doğrudan bellek erişim
denetleme birimi gibi birimlerin en alt düzeyde programlandığı, donanım ayrıntısına bağımlı
işlemlerin ele alındığı bir kesim olarak çekirdek katmanda yer alır.
İşletim sistemi, iki veya daha fazla donanımın aynı zamanda haberleşmeye çalışmasını engeller.
CPU’nun sistem aygıtlarını tanımlayabilmesini ve onlar ile haberleşebilmesini sağlar.7
Kesmeİstekleri(IRQ)
IRQ İngilizce karşılığı Interrupt Request, yani kesme isteği kelimelerinin kısaltmasıdır. IRQ ile
donanımlar sistem işlemcisi ile iletişim kurarlar. Bir nevi her donanımın özel adresi denebilir. IRQ,
çevre birimlerinin dikkat çekmek için kullandığı bir yöntemdir.
Bilgisayarımızdaki kesmeler Intel 8259 öncelikli kesme denetleyicisi (PIC) tarafından sağlanır.
Önceleri ayrı bir çip olarak bulunan bu kesme denetleyicisi, günümüz bilgisayarlarında anakartın
çipsetinde yerleşik olarak bulunmaktadır. Bir kesme talebi geldiğinde 8259 CPU'yu elindeki işi geçici
olarak durdurmaya ve hemen bu kesmeyi yönetmesine olanak sağlayan bir programı çalıştırmaya iter.
CPU kesme hizmet programına dallanırken dönüş adresini yığın hafızada saklar ve işi bitince işleme
yine kaldığı yerden devam eder. Birçok aygıt aynı anda kesme hizmeti isteyebilir. Sistem tarafından
belirlenmiş öncelik sırasına göre talepler karşılanır. Genelde kesme hizmet programı yüksek önceliğe
sahip bir işlem tarafından kesilebilir. Ama daha öncelikli veya eşit seviyedeki bir cihazdan kesme
talebi gelirse o anki kesme programı bitene kadar bu istek saklanır.
7
http://megep.meb.gov.tr/mte_program_modul/modul_pdf/481BB0019.pdf
DoğrudanBellekErişimi(DMA)
DMA İngilizce karşılığı Direct Memory Access anlamına gelen direkt hafıza erişimi kelimelerinin
kısaltmasıdır. Özellikle disk sürücüleri ve benzeri cihazlar için bu seçeneğin aktif halde olması belli
bir performans artışı sağlamaktadır. Çünkü bu durum sayesinde cihaz gerek duyduğu bilgileri
işlemciye uğramadan direk olarak sistem belleğinden elde edebilir.
Bu kanallar sistem belleğine bazı aygıtların (ses kartı, ethernet kartı gibi) erişimini hızlandırmak için
kullanılırlar. Bir sabit disk disk denetleyicisi sabit diskten bazı verileri aldıktan sonra bunları RAM'e
depolamak ister. Aynı şekilde yerel iletişim ağı (ethernet) kartından da veri geldiğinde bunların
RAM'e depolanması gerekebilir. Bunları I/O adresleri üzerinden CPU'ya oradan da RAM'e göndermek
yerine bazı kartların kullanabildiği DMA (Direct Memory Access - direk bellek erişimi) kanalları
vasıtasıyla daha hızlı ve CPU'yu da meşgul etmeden direk RAM'e ulaştırmak mümkün. Bu sayede
CPU meşgul edilmemiş olacak ve de bizim isteğimiz daha hızlı bir şekilde yerine getirilmiş olacaktır.
Giriş/ÇıkışAdresleri(I/O)
CPU'nun çevre aygıtlarıyla ve devre kartları (ses kartı, ethernet kartıvs.) ile iletişim kurmak ve bu
aygıtları birbirinden ayırt edebilmek için kullandığı Giriş/Çıkış (Input/Output) adresleridir. Bu adresler
"port adresleri" veya "donanım adresleri" olarak da bilinir. Zaten CPU'nun dış dünya ile iletişim
kurmak için kullandığı iki yol vardır denilebilir. Bunlardan biri bilgisayarımızın ana belleğinin
adresleri diğeri de bahsedildiği üzere I/O adresleridir
Her kartın mikroişlemci ile haberleşmesi için farklı bir I/O adresi vardır. Birden fazla kartın aynı
adresi kullanması durumuna çakışma denir. İki kartın aynı adresi kullanması durumunda mikroişlemci
tarafından gönderilen komutlar bu kartlar tarafından doğru algılanmaz. Bu durum kartların
çalışmamasına ya da hatalı çalışmasına neden olur.
Çoğu çevre birimi ve kartlar tek bir I/O adres aralığını kullanır. En basit şekliyle klavyenizin
kullandığı I/O adres aralığını başka bir kart kullanmaya kalkarsa, bu kart çalışmayacak, bununla
birlikte klavyeniz de devre dışı kalacaktır. Zaten kart üretilirken klavyenin I/O adresini kullanacak bir
kart tasarımı yapılmaz. Çünkü bu adres sabittir, klavye denetleyicisi tarafından kullanılmaktadır ve bir
standart haline gelmiştir. Kartlar üretilirken bunlar göz önünde bulundurulan önemli kriterlerdir. "Peki
o zaman I/O çakışmaları nasıl olabilir?" diye bir soru gelebilir aklınıza. Bazı I/O değerleri standart
değildir, sorunları da zaten bu aralık değerlerini kullanan kartlarda görülmektedir. Şayet aynı adresi
birden fazla kart için ayarlarsanız çakışmaya sebep olacağı için kartlar görevlerini yapamayacaktır.
Dosya Yönetimi
Dosya yönetimi, kullanıcılara, ana bellek dışında saklanan verileri (Dosyaları) üzerinde kolay ve hızlı
işlem yapabilme olanağı veren işletim sistemi kesimidir. Dosyalar üzerinde yapılan temel işlemler,
okuma, yazma, açma ve kapama işlemleridir. Kullanıcılar bu işlemleri, bayt, tutanak dizileri olarak
gördükleri mantıksal Dosya görünümleri üzerinde, genellikle üst düzey programlama dillerinin
sunduğu olanakları kullanarak gerçekleştirirler. Kullanıcıların düşüncelerinde gerçekliği olan
mantıksal yapılı Dosyalar, disk gibi mıknatıslı ortamların yüzey, silindir ve sektörleri üzerinde fiziksel
olarak yer alırlar. Mantıksal tutanaklar üzerinde tanımlanan işlemlerin fiziksel olarak
gerçekleştirilmesi ve donanım ayrıntısının kullanıcıdan gizlenmesi Dosya Yönetiminin temel işlevidir.
Bu bağlamda, bir kullanıcının, üst düzey araçları kullanarak okuma, yazma gibi işlemlerden birini
herhangi bir kütüğünün mantıksal bir tutanağına uygulamak istemesi durumunda, öncelikle ilgili
Dosya adından bu kütüğün bulunduğu sürücü kimliğinin bulunması, ilgili mantıksal tutanağın bu
sürücü üzerinde hangi silindir, hangi yüzey ve hangi sektörde yer aldığının saptanması gereklidir.
Mantıksal tutanak numaralarından, (silindir, okuma yazma kafa numarası ve sektör üçlüsünden oluşan,
56-4-9 gibi) fiziksel disk öbek adreslerini hesaplayarak tutanak içeriklerinin, okuma-yazma işleminin
yapılacağı ana bellek yastık alanlarına aktarılmasının sağlanması Dosya yönetim kesiminin
yükümlülüğündedir.8
Mantıksal tutanak numaralarından fiziksel disk adreslerine geçiş, Dosya yönetim sisteminin, yalın bir
kullanım ortamı sağlama ilkesi çerçevesinde yerine getirdiği bir işlevdir. Bunun yanı sıra, Dosya
yönetim sisteminin, disk alanlarının verimli kullanımı, bu ortamlarda saklanan verilere en hızlı erişimi
sağlayan düzenlemelerin yapılması gibi, sistem verimliliğine dönük başka işlevleri de vardır. Bu
amaçla, disk alanlarının düzenlenmesi, buralardan Dosyalara yer sağlanması, boş alanların izlenmesi,
Dosyaların bu alanlar üzerindeki yerleşimlerinin, erişimin en hızlı olacağı biçimde düzenlenmesi gibi
işlevler de Dosya yönetimi kapsamında yerine getirilir.
Dosya yönetim sistemi, kullanıcılara Dosyaları üzerinde, mantıksal yapılar çerçevesinde işlem
yapabilme olanağı sağlarken söz konusu dosyalara, prog1.c, rapor.doc gibi simgesel adlar (kimlikler)
verme, bunları kılavuz, alt kılavuz gibi adlarla anılan yapılar altında gruplandırma, ayrıştırma ve
düzenleme olanakları da sunar.
Dosya yönetim kesimi, çok görevli işlemin uygulandığı sistemlerde dosyaların kullanıcılar arasında
eşzamanlı paylaşım sorununa da etkin çözümler sunmak zorundadır. Bu kapsamda Dosyalara erişimin,
Dosya, tutanak gibi değişik düzeylerde kilitlenmesini sağlayacak düzeneklerin kurulması ve bu
düzeneklerin, işletim bütünlüğünü bozmadan çalıştırılması Dosya yönetimi kapsamında ele alınır.
Dosya yönetimi kapsamında düşünülen ve yerine getirilen bir diğer işlev de güvenli bir işletim ve
saklama ortamının yaratılmasıyla ilgilidir. Güvenli bir işletim ortamı, Dosyaların bozulma ve
silinmelere karşı korunmasını, içerdikleri bilgiler yönünden de gizliliğin sağlanmasını gerektirir. Bu
amaçla Dosya yönetim sistemi, Dosyalara erişimleri denetim altında tutar.
8
http://eng.harran.edu.tr/~nbesli/OS/book2.pdf
Download