İş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