BTP205 İŞLETİM SİSTEMLERİ İş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. Basitçe bilgisayar donanımı ile kullanıcı! arasında iletişimi sağlayan, bilgisayarı kontrol eden yazılımdır. işletim sistemlerinin başlıca amaçları: • 1. Kullanıcı programlarını çalıştırılması • 2. Kullanıcı problemlerinin çözümünün kolaylaştırılması • 3. Bilgisayar sisteminin kullanımını daha elverişli hale getirilmesi • 4. Bilgisayar kaynaklarının verimli bir şekilde kullanılması. Bunun için; İşletim Sistemin Özellikleri • İşletim sistemi faklı kullanıcıların uygulama programlarının donanım kaynaklarını kullanımını kontrol eder ve koordine eder. • Bilgisayar kaynaklarının dağıtımı için şu problemlerin çözümü gerektirir: - Ana işlem biriminin zamana göre paylaşımı - Belleğin yönetilmesi - Disk alanının yönetilmesi - Giriş/Çıkış aygıtlarının yönetimi Bilgisayar Mimarileri • Von-NeumannMimarisi von Neumann mimarisi veri ve komutları tek bir yığıncak (depolama) biriminde bulunduran bilgisayar tasarı örneğidir. Paralel mimariler dışında Turing makinesi'nin ilkelerini uygulayan her bilgisayarı tanımlamak için kullanılır. merkezi işlem biriminin bağımsızlığı dolaylı olup, "saklı yazılım bilgisayarı" (stored program computer) ile eşanlamlı olarak kullanılır. Bilgisayar Mimarileri Bir İşletim Sisteminin Bileşenleri • Bir işletim sistemi, kavramsal olarak, üç grupta toplanabilecek bileşenlerden oluşur: kullanıcı arayüzü (bu bir grafik kullanıcı arayüzü ve/veya komut satırı yorumlayıcısı ["kabuk" da denir] olabilir), dosya yönetim sistemi ve bir çekirdek. Bir İşletim Sisteminin Bileşenleri 1. KABUK (SHELL) : İşletim sisteminin kullanıcıya gözüken yüzüdür. Bir çok kaynakta kabuk, komut yorumlayıcısı olarakta adlandırılmaktadır. Bir bakıma kullanıcı ile çekirdek arasındaki arabirim olarak da tanımlamak olanaklıdır. Bilgisayar açıldıktan bir süre sonra komut satır (prompt) görüntülenir. Kullanıcı tarafından komut satırına girilen komutlar bilgisayar tarafından işleme konulur. bu nokta da kabuk (shell) olarak adlandırılan yazılım devreye girer. Öncelikle komutun geçerliliğini inceler, kullanıcının ne yapmak istediğini çözümler ve bu iş için gerekli olan programlar belleğe yükler. 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ü- MS explorer) düşünmektedirler. Bir İşletim Sisteminin Bileşenleri Unix Tabanlı işletim sistemleri için kabuklar. MS-DOS iletim 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. Bir İşletim Sisteminin Bileşenleri 2. ÇEKİRDEK (KERNEL) : İşletim sistemi çekirdeği, kısaca çekirdek (kernel), işletim sisteminin kalbidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar bellekte kalır. MS-DOS'ta sistem dosyaları olarak bilinen msdos.sys ve io.sys dosyaları, bu işletim sisteminin çekirdek dosyalarını oluşturmaktadır. Unix'te ise vmunix, unix gibi isimler almaktadır. "kabuk", çekirdeğin çevresini sararken, donanımla iletişim kurmak da çekirdeğin işidir. • Donanım <-> Çekirdek <-> Kabuk <-> Uygulamalar Bir İşletim Sisteminin Bileşenleri Çekirdek, bilgisayarın donanımıyla doğrudan etkileşen işletim sisteminin bir parçasıdr. Programlar tarafından kullanılan bir hizmet sağlar. En önemli fonksiyonları: • Belleği yönetmek • Bilgisayara ulaşımlar kontrol etmek • Dosya sistemini oluşturup, korumak • İnterruptlar kullanmak • Hataları kontrol etmek • Girdi-çıktı birimlerini çalıştırmak • Bilgisayarını kaynaklarını (işlemci, girdi-çıktı birimleri gibi...) kullanıcılar arasında dağıtmak. Bir İşletim Sisteminin Bileşenleri 3. DOSYA YÖNETİM SİSTEMİ: İşletim sisteminin dosyaları organize etme ve yönetme için ne kullandığını gösteren ifadedir. Dosya verilerin t toplandığı birimlerdir. Sanal olarak bilgisayar bütün verilerini dosya olarak saklar. Bir çok dosya tipi vardır. Program dosyaları, veri dosyaları, text dosyaları gibi… Dosya sistemi adı verilen bir yol ile işletim sistemi dosyaların içindeki bilgileri organize eder. Genelde işletim sistemleri hiyerarşik dosya yönetim sistemini kullanır. Bu sistem ağaç yapısı adı verilen klasörler içerisinde dosyaları organize eder. Bu klasör sisteminin başlangıç noktası kök dizindir (root directory, C:\>). .cab Windows Cabinet File .cpl Windows Control Panel Item .cur Windows Cursor .dll Dynamic Link Library .dmp Windows Memory Dump .drv Device Driver .icns Mac OS X Icon Resource File .ico Icon File .lnk Windows File Shortcut .sys Windows System File Bir İşletim Sisteminin Bileşenleri Sistem içerisindeki veri kümeleri dosya (kütük) olarak adlandırılır. Bu nedenle ikincil bellekler daha geniş anlamıyla giriş/çıkış birimleri (HDD, CD-ROM, Flashdisk v.s.) üzerinde tutulan verilerin yönetimi dosya yönetimi kapsamında ele alınır. Dosya yönetim sisteminin temel işlevleri üç maddede toplanmıştır: 1 -Mantıksal dosya yapılarından fiziksel yapılara geçişin sağlanması. 2 - İkincil belleklerin verimli kullanılmasını sağlanması. 3 - Dosyaların paylaşılması, korunması ve kurtarılması ile ilgili araçların sağlanması İşletim Sisteminin İşlevleri 1. Dosya ve Klasör Yönetimi Dosyaları ve klasörleri yönetme, kaynakları saklama ve güvenliğini sağlamayı, bu kaynakları ağ kullanıcılarının kullanımına sunmayı ve yine bu kaynaklardaki değişiklikleri yönetmeyi içerir. Sürücü: Dosya ve klasörlerin saklanabileceği fiziksel ortamlardır ve alfabede bulunan harfler ile temsil edilirler. Disket sürücüler A veya B harfi ile Harddiskler ise C ve sonrasında gelen harfler ile temsil edilirler. CD-ROM, DVD-ROM ve Tape Backup üniteleri vb. diğer aygıtlar ise Harddiskten sonra gelen harfler ile temsil edilirler. Klasör: Sürücüler içerisinde bulunan ve dosyaları gruplamak amacı ile kullanılan program grup isimleridir. Klasörler dosyaları yaptıkları işlere göre gruplandırırlar, bu sayede aradığımız herhangi bir dosyayı bulmamız kolaylaşır. Bu olay tıpkı bir kütüphanede kitapların konularına göre gruplandırılmalarına benzer. İşletim Sisteminin İşlevleri Dosya: Bilgisayarda yaptığımız her işlem dosyalar aracılığıile yapılmaktadır. Yazdığımız belgeler, hesap tabloları, sunular vb. dosyalarda saklanır. Bu sayede yaptığımız çalışmaları istediğimiz herhangi bir zamanda açıp okuyabilir gerekli güncellemeleri yapabiliriz. Bilgisayarda bulunan bütün dosyalar “dosyaadı.uzantı” şeklinde saklanır. Dosyaadı o dosyanın yaptığı işe göre verilmiş mantıksal bir isimdir ve toplam 255 karakter uzunluğunda olabilir, uzantı ise o dosyanın işlevine göre bilgisayar tarafından daha önceden belirlenmiş bir isim olabilir ve genelde 3 harf uzunluğundadır. Uzantılar sayesinde o dosyanın hangi programla hazırlandığını ve hangi programlarla açılabileceğini anlayabiliriz. İşletim Sisteminin İşlevleri 2. Uygulamaların Yönetimi Kullanıcı bir program çalıştırmak istediğinde, işletim sistemi uygulamanın yerini sabit diskten tespit eder ve uygulamayı RAM’e yükler. Bu işlem etkileşimli işlem olarak adlandırılır. Etkileşimli işlem kullanıcılara, uygulamaları dinamik biçimde yönetme, çalıştırılan programların sonuçlarını doğrudan elde edip, her an müdahale edebilme olanağı sağlayan çalışma türüne ilişkin bir özelliktir. Bu çalışma türünde kullanıcılar, bir işin çalışma süreci boyunca işe, monitör ve klavye vasıtası ile her an müdahale edebilmektedirler. Yani bir başka söylemle, ekran başında oturan bir kullanıcının bilgisayara bir komut vermesi ve o komuta bilgisayardan yanıt alması türünde, bir nevi karşılıklı konuşma yapar gibi çalışma biçimine “Etkileşimli İşlem” denir. Bu tanımdan da anlaşılacağı gibi, kullanıcılar program geliştirme, metin dosyaları oluşturma, program derleme ve test etme, veri tabanı sorguları işletme, bilgisayar ağı komutları girme, internet servislerini kullanma gibi kısa süreli işlerini Etkileşimli İşlem olarak yürütürler. İşletim Sisteminin İşlevleri 3. Yardımcı Programları Destekleme İşletim sistemi yardımcı programları, problemleri giderebilmek ve sisteminin sağlıklı işlemesini sürdürebilmek amaçlı kullanır. Silinmiş, hasarlı dosyaları bulabilmek, verilerin yedeğini alabilmek gibi işlemlerde kullanır. İşletim sistemi, üzerinde yer alan bazı yazılımlar “Sistem Yazılımı” olarak anılır. Örneğin derleyiciler (compilers); yazdığımız programı makine diline çeviren ara program, editörler (editors), yararlı programlar (utility); virüs temizleyen programlar gibi gerçek iş için yardımcılardır, veri tabanı yönetim sistemleri (database management system) ve bilgisayar ağı yazılımları (network software) yine birer sistem yazılımlarıdır. Ancak bu yazılımlar işletim sisteminin kendi öz parçaları değildir. İşletim Sisteminin İşlevleri 4. Bilgisayar Donanımını Kontrol Etme İşletim sistemi programlar ile BIOS arasında durur. BIOS tüm donanımı kontrol eder. Programların da işletim sistemi ile haberleşebilmesi için donanım kaynaklarına ihtiyacı vardır. İşletim sistemi donanıma BIOS aracılığı ile aygıt sürücüleri ile ulaşır. Bir bilgisayar sistemi, bir veya birden fazla işlemci (ya da diğer bir söylemle “CPU”), gerçek bellek (RAM), saatler, terminaller, diskler, bilgisayar ağı(network) birimleri, yazıcı üniteleri, CD sürücüsü, disket ve teyp üniteleri gibi I/O ünitelerinden oluşmaktadır. Doğal olarak bir bilgisayar sistemi oldukça karmaşık bir yapıdadır. İşletim Sisteminin İşlevleri 4. Bilgisayar Donanımını Kontrol Etme Programcıları, donanımın bu karmaşık yapısından etkilenmemelerini sağlamak ve disk gibi donanım ünitelerinin nasıl çalıştıklarını anlamak zorunda bırakılmamaları için, donanımın üzerine ilave edilen yazılımların katmanlar şeklinde (layered system) oluşturulmaları ve bu sayede çok daha kolay bir şekilde, sistemin bütün parçalarının yönetilebilmesi şeklinde bir yapılanma, uzun yıllar önce geliştirilmiş bir yaklaşımdır. Bu yapının en alttaki üç katmanı donanımı oluşturmaktadır. En alttaki katman, fiziksel üniteler, entegre devreler, kablolar, power (elektrik destek) üniteleri, disket sürücüleri, disk üniteleri ve diğer benzeri donanım birimlerinden oluşmaktadır. Bu katmanın mimari yapısı ile ilgilenmek ve bunları çalışma prensiplerini geliştirmek elektronik mühendislerinin işidir. Fiziksel üniteleri (donanım) doğrudan kontrol eden ve fiziksel katmanın bir üstündeki en ilkel yazılım düzeyini oluşturan katman, “microprogram” dır. Bu katman genellikle “readonly” (yalnızca okunabilir) bellek (ROM) sahasında bulunur. Microprogram da ekleme (add), taşıma (move), karşılaştırma (compare) gibi makine diline ait temel komutları adım adım yerine getirir. Microprogram, örneğin, Add işlemini yerine getirmek için eklenecek sayının nerede yer aldığını saptar ve üzerine eklenecek sayıyı ilave ettikten sonra sonucu elde eder. İşletim Sisteminin İşlevleri 4. Bilgisayar Donanımını Kontrol Etme Microprogramın yorumladığı komut seti (instruction set), makine dili (machine language) katmanını oluşturur ki, bu gerçekte makinenin gerçek bir donanım parçasını oluşturmakta ve bir bilgisayar da donanımın gerçek bir parçasıymış gibi nitelenebilmektedir. Bu nedenle bazı makinelerde Microprogram, donanımın içinde varsayıldığından ayrı bir katman şeklinde bulunmaz. Makine dili, genel olarak 50 ile 300 arasında komuta (intruction) sahiptir. Veri taşıma, aritmetik işlem yapma ve değerleri kıyaslama gibi işlevleri yerine getirir. Makine dili, yazıcı ve disket sürücü gibi I/O (input/output) ünitelerinin denetimini özel yüklenmiş bilgiler sayesinde yapmaktadır. Bir bilgisayar sisteminin dördüncü katmanında yer alan işletim sisteminin temel işlevi, donanımın karmaşıklığını kullanıcıya yansıtmamak ve daha elverişli ortam hazırlayıp, kullanıcının kolayca işini yapmasını sağlamaktır. İşletim Sistemi Tipleri 1. Çoklu Kullanıcı(Multiuser) İşletim Sistemleri İki veya daha fazla kullanıcının programlar veya paylaşılan aygıtlar üzerinde çalışabilmesidir. Bu konuya en güzel örnek paylaştırılan yazıcılardır. Bir çok kullanıcı aynı anda yazıcıya belge gönderir ve de sıra ile bu belgeler yazıcıdan çıktı alınır. İşletim Sistemi Tipleri 2. Çoklu Görev (Multitasking) İşletim Sistemleri Kullanıcılar sistemde aynı anda birden fazla işlem (process) çalıştırabilirler. Bu, siz bir işlemi başlattıktan sonra, o başlattığınız işlem çalışmaya devam ederken başka bir işlem de başlatabilirsiniz demektir. Ç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. Çoklu görev birçok uygulamanın (programın) aynı anda çalıştırılmasıdır. Bunun sağlanması için, görevler (uygulamalar) kısa zaman dilimleri içinde işlemcide çalıştırılır. Bu zaman dilimlerinin oldukça küçük zaman dilimleri olması nedeniyle yapay da olsa bir eş zamanlılık söz konusu olur (İşlemci aynı anda iki işi yapamaz.). İşletim Sistemi Tipleri 3. Çoklu İşlemci (Multiprocessing) İşletim Sistemleri Gittikçe yaygınlaşan bir durum da bir basit sistemin içerisine birçok CPU bağlayarak çok önemli hesaplamaları yapmaktır. Her işletim sistemi birden fazla işlemciyi destekleyemiyor. İşletim sistemi, yapılacak olan işlemleri iki veya daha fazla işlemci üzerine dağıtmayı bilmeli ve bunları kontrol edebilmelidir. Bu özelliğe sahip olan işletim sistemleri arasında Windows 2000, Windows NT, Linux, Unix, BeOS bulunuyor. Microsoft'un diğer işletim sistemleri (Win9x - ME) çok işlemcili sistemleri desteklemiyor. Destekleyememesinden dolayı, fazladan taktığınız işlemciyi boşu boşuna kullanmış oluyorsunuz. Anlayacağınız, işlemleri işlemci üzerine dağıtabilme özelliğinden yoksun. İşletim Sistemi Tipleri 4. Çoklu Görev (Multithreading) İşletim Sistemleri Program ihtiyaç halinde işletim sistemi tarafından küçük parçalara ayrılır ve çalıştırılabilir. Bu özellik aynı zamanda çoklu kullanıcı sistemleri de destekler. Aynı programın parçaları farklı kullanıcılar tarafından da kullanılabilir. • İşlem Yönetimi (İşlem, Semafor ve Kilitlenme) • BELLEK YÖNETİMİ işl_sis • Disk yönetimi İŞLETİM SİSTEMLERİNİN BİLEŞENLERİ Birbirinden farklı çeşitli işletim sistemleri bulunmasına rağmen, bunlar arasında ortak yapı özellikleri ve bileşenleri vardır. Fonksiyonel bakımdan işletim sistemlerinin bileşenleri: 1. Görev yönetimi (Process manager) 2. Ana bellek yönetimi (Memory manager) 3. Kütük yönetimi (File manager) 4. Disk (2. bellek) yönetimi (Second Storage) 5. Ağ üzerinde çalışma (Ağ fonksiyonları yönetimi: Networking) 6. Sistem koruması 7. Komut derleyici sistemler Bu bileşenler aşağıda kısaca açıklanmaktadır. Daha ileri ki bölümlerde, her biri ayrıntılı bir şekilde verilecektir. 1. İşlem Yönetimi (İşlem, Semafor ve Kilitlenme) Görev (process), işletim sistemi tarafından yürütülen ardışık işlemler sürecini içeren bir programdır. Aynı zamanda süreç olarak da adlandırılır. Görev için gereken kaynaklar, görev ortamını oluşturur. Görev yönetiminin amaçları: • Makul cevaplama süresi içerisinde, birkaç görevi aynı anda yürüterek işlemciden maksimum faydalanmayı sağlamak • Görevleri kaynaklara dağıtmak • Görevler arası haberleşmeyi sağlamak • Kullanıcıların görev oluşturabilmesine ortam oluşturmak. 1. İşlem Yönetimi (İşlem, Semafor ve Kilitlenme) Görevin çalışması, ardışık işlemler süreci şeklinde olup, her bir zaman diliminde görevin yalnız bir komutu çalışabilir. Bir işlemin yapısında; işlemin yazılı olduğu metin bölümü, bir sonraki işletilecek olan komutu gösteren sayaç ve işlemci kaydedicilerinin içeriği olan program sayacı (program counter PC) bölümü, yerel değişkenler, dönüş adresleri gibi geçici bilgileri tutan yığın (stack) bölümü, genel değişken vb. bilgileri tutan veri bölümü bulunmaktadır. Bazı işlemlerde işlemin çalıştığı sürece kullandığı bir alan (heap) de bulunmaktadır. 1.1 Görev Denetimi Her bir görevin çalışması için gereken bilgiler görev denetim bloğunda (PCB=Process Control Blok) bloğunda gösterilir. Görev denetim bloğundaki bilgiler, program sayacı, ana işlem birimi yazmaçları v.s bulunur. Her bir görevle ilgili bilgiler: • Görev durumu • Görev sayacı • MİB yazmaçları • MİB planlanması bilgileri • Bellek yönetimi bilgileri • İstatistiksel bilgiler • G/Ç durumu bilgileri 1.1 Görev Denetimi • Görev durumu: görev yeni, çalışıyor, bekliyor, hazır veya bitti şeklinde olabilir. • Program sayacı: İşlemde çalıştırılacak bir sonraki komutu gösterir. • MİB kaydedicileri: İşlemci mimarisini göre kaydedicilerin sayısı ve türü değişmektedir. İşlemde kullanılan kaydediciler (AX, BX vb.) içerisindeki bilgiler bir kesme geldiğinde mutlaka saklanmalıdır • MİB zamanlanma bilgisi: Burada işlemin önceliğini, zamanlama kuyruğundaki işaretçisi ve diğer zamanlama parametreleri ile ilgili bilgiler bulunmaktadır. • Bellek yönetimi bilgisi: İşletim sistemi tarafından kullanılan bellek sistemleri; taban ve limit (tavan) kaydedicileri, sayfa tablosu veya bölüm tablosu gibi bilgileri içermektedir. • Hesap bilgileri: görev tarafından kullanılan MİB ve diğer parametrelerin kulanım zamanlarını içermektedir. • G/Ç durum bilgisi: görev tarafından kullanılan G/Ç aygıtlarının listesi, açılan dosyaların listesi vb. bilgileri içermektedir. 1.1 Görev Denetimi MİB’nin işlemden işleme geçiş aşamaları Kesme İsteği (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. Bilgisayarımızın merkezi işlem ünitesi olarak CPU çevre birimleri ile olan tüm iletişimleri başlatır, onların yönetimini elinde tutar. Peki herhangi bir çevre birimi CPU'nun kendisi ile ilgilenmesini nasıl sağlayacak, onun dikkatini nasıl çekecek. İşte bu noktada IRQ (Donanım kesmeleri) devreye girer. IRQ, çevre birimlerinin dikkat çekmek için kullandığı bir yöntemdir. Bir kesme talebi geldiğinde kesme denetleyicisi (PIC), 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. Kesme İsteği (IRQ) İşlemcinin, normal yürütüm sırasını değiştirmek ve gereksinim duyulan başka bir işi varsa onu yerine getirmek için kesme programları kullanılır. Kesme sürecinde kontrolü kesme programı devralır. Kesmeler işletim sistemlerinin genel bir parçasıdırlar. Kesmeler: • İşlemcinin etkinliğini artırır. • Bir G/Ç işlemi yapılırken, işlemcinin diğer komutları yürütmesine olanak verir. • Bir sürecin geçici olarak durdurulmasına (sonradan çalıştırılmak üzere) sebep olurlar. Kesme türleri: Kesme çevriminin yürütümü: • Program • İşlemci, kesmeleri kontrol eder. • Eğer kesme yoksa, mevcut program içinde – Aritmetik taşma işlemci bir sonraki komut alır. – Sıfıra bölme • Eğer kesme varsa, mevcut çalışan – İllegal komut yürütme – Kullanıcının hafıza alanının dışına çıkması program olduğu yerde bırakılır (çalışmasını bitirmeyi beklemeksizin) ve kesme • Zamanlayıcı (Timer) programı idareyi ele alır. • G/Ç • Donanım hatası 1.1 Görev Denetimi Görev durumu (Process state): Bir işlemin hangi durumda olduğunu gösteren ve işlemin ömrü boyunca değişken bir durumu bulunmaktadır. Bunlar; • Yeni: İşlemin oluşturulduğunu gösterir. • Çalışıyor: İşlemin komutları yürütülmektedir. • Bekliyor: görev bir olayın gerçekleşmesini beklemektedir. Örneğin bir G/Ç işlemi. • Hazır: görev bir işlemciye atanmak için beklemektedir. • Bitti: görev çalışmasını bitirdi. 1.1 Görev Denetimi Görev durumu (Process state): Herhangi bir anda tek bir görev çalışma durumundadır fakat birçok görev beklemede olabilir. 1.1 Görev Denetimi İş Parçacıkları (Threads) İş parçacığı, işlemin bir parçasıdır. Örneğin bir işlemin bir kelime işlemci programının çalışmasını yürüttüğünü düşünelim. Burada kullanıcı örneğin bir satırdaki yazıları seçerek kalın yapmak istediğinde bu faaliyete iş parçacığı denilmektedir. Modern işletim sistemleri aynı işlem içerisinde birden fazla iş parçacığının yürütülmesine izin vermektedir. 1.1 Görev Denetimi İşlemlerin Planlanması (Process Schedulers) Çoklu programlamanın hedefi; aynı zamanda birkaç görevi birlikte çalıştırmakla, ana işlem biriminin verimliliğini yükseltmektir. Görevlerin çalışmasını ilişkisel koordine etmek için planlama fonksiyonu (scheduling) kullanılır. Bu fonksiyon işletim sisteminin temel fonksiyonlarındandır. Tüm bilgisayar kaynaklarının görevi, çalışma öncesi planlanır. Esas kaynak olan MIB’nin planlanması işletim sisteminin tasarımında başlıca yeri tutmaktadır. Her bir görevin çalışması, MIB ve G/Ç işlemlerinden oluşur. 1.1 Görev Denetimi İşlemlerin Planlanması (Process Schedulers) Görevlerin planlanması için çeşitli algoritmalar kullanılmaktadır. Bu algoritmaları kıyaslamak için kriterler: 1. Ana işlem biriminin kullanım durumu 2. Belirlenmiş zaman diliminde çalışmasını tamamlayan görev sayısı. 3. Görevi çalıştırmak için harcanan zaman 4. Görevin hazır görevler kuyruğunda bekleme zamanı 5. Cevaplama süresi 1.1 Görev Denetimi İşlemlerin Planlanması (Process Schedulers) Tüm işlemler iş kuyruğuna (Job queue) alınmaktadır. Çalıştırılmaya hazır olan veya bekleyen işlemler hazır kuyruğuna (ready queue) alınarak MİB’ne gönderilir. ‘Dağıtıcı (Dispatcher)’ çalıştırılacak olan bir işlemi seçerek MİB’ne gönderdikten sonra aşağıdaki olaylar meydana gelebilir; • İşlem bir G/Ç isteğinde bulunabilir ve böylece G/Ç kuyruğuna yerleştirilir. • İşlem alt işlemler oluşturabilir ve bunların bitmesini bekleyebilir. • İşlem bir kesme oluştuğu için MİB’de çalışması durdurularak kesmenin bitiminin ardından kuyruğa alınarak MİB’ne gönderilebilir. 1.1 Görev Denetimi İşlemlerin Planlanması (Process Schedulers) 1.1 Görev Denetimi Planlama Algoritmaları 1. FCFS (First Come First Served – İlk Gelen Önce) Algoritması: Bu algoritmaya göre; AIB yi ilk talep eden görev, ilk olarak işlemciyi kullanır. FIFO kuyruğu ile çalıştırılabilir. Görev hazır görevler kuyruğuna sunulduktan sonra, onun görev denetim bloğu (PCB) kuyruğun sonuna ilave edilir. AIB boş olduğu zaman kuyruğun başındaki görev çalışması için AIB ye sunulur ve kuyruktan silinir. Bu algoritmada görevlerin bekleme süresi yüksek olur. Örnek: P1, P2, P3 görevlerinin sırasıyla kuyrukta yerleştiklerini kabul edelim: Görev Çalışma Zamanı (sn) P1 24 P2 3 P3 3 1. FCFS (First Come First Served – İlk Gelen Önce) Algoritması: Örnek: P1, P2, P3 görevlerinin sırasıyla kuyrukta yerleştiklerini kabul edelim: Görev Çalışma Zamanı (sn) P1 24 P2 3 P3 3 1.Görevler P1, P2, P3 ardışıklığı ile sunulmuş olduğunu varsayalım. Buna göre planlama: Ortalama bekleme süresi : (24+27+0) / 3 = 17 msn 'dir. 2.Eğer görevlerin gelme P2, P3, P1 şeklinde sıralanırsa, planlama: Ortalama bekleme süresi : (3+6+0) / 3 = 3 msn’dir. 2.SJF (Shortest Job First – En Kısa İşletim Süresi Olan Önce) Algoritması: Bu algoritmada CPU boş olduğunda, kalan görevler içinde çalışma süresi en küçük olan görev, çalışması için işlemciye sunulur. Eğer iki görevin kalan süreleri aynı ise o zaman FCFS algoritması uygulanır. Bu algoritmada: Her görev, o görevin bir sonraki MİB işlem zamanı ile değerlendirilir. Bu, en kısa zamanlı işin bulunması için kullanılır. SJF Türleri: 1. Kesilmesiz SJF : Eğer AİB bir göreve tahsis edilmişse, AİB işlem zamanı bitmeyince görev kesilemez. 2. Kesilmeli SJF : Eğer AİB işlem zamanı, şu anda çalışan görevin kalan işlem zamanından küçük olan yeni bir görev sisteme sunulmuşsa, eski görev kesilecek. Bu yönteme, SRTF( Shortest Remaining Time First – En kısa işlem zamanı kalan, birinci) yöntem denir. SJF verilmiş görevler kümesi için en küçük ortalama bekleme zamanı oluşması için optimizasyon yapar. 2.SJF (Shortest Job First – En Kısa İşletim Süresi Olan Önce) Algoritması: Örnek: : P1, P2, P3, P4 görevleri aşağıdaki ardışıklık ile sunulmuş olduğunu varsayalım. Buna göre kesilmesiz SJF yöntemine göre ortalama bekleme süresini bulalım: • SJF : tob = tP1 + tP2 + tP3 + tP4 = (3+9+16+0) / 4 = 7 msn • FCFS : tob = tP1 + tP2 + tP3 + tP4 = (0+6+13+21) / 4 =10.75 msn 3.Çok Kuyruklu Planlama Algoritması: Bu algoritmaya göre görevler belli sınıflara ayrılır ve her sınıf görev kendi kuyruğunu oluşturur. Başka deyişle hazır görevler çok seviyeli kuyruğa dönüştürülür. Görevin türüne önceliğine, bellek durumuna veya başka özelliklerine göre görevler belli kuyruğa yerleştirilirler. Her kuyruk için planlama algoritması farklı olabilir. Bununla birlikte görevlerin bir kuyruktan diğerine aktarılmasını sağlayan algoritmada oluşturulur. Bu algoritmaya göre yüksek öncelikli kuyruktaki görevler önce işlenir. Eğer bu kaynak boş ise ondan aşağı seviyedeki görevler çalıştırılabilir. 4.Öncelikli Planlama Algoritması: Bu algoritmaya göre her bir göreve öncelik değeri atanır ve görevler öncelik sırasına göre işlemciyi kullanırlar. Aynı öncelikli görevler FCFS algoritması ile çalıştırılırlar. 5.Döngülü Planlama (Round Robin - RR) Algoritması: Her görev küçük bir AİB zaman dilimini alır. Bu zaman bittiğinde, görev kesilir ve hazır görevler kuyruğunun sonuna eklenir. • Örnek: P1, P2, P3, P4 görevleri aşağıdaki ardışıklık ile sunulmuş olduğunu varsayalım. Zaman dilimi 20 msn ise buna göre: Kilitlenme (Deadlock) Sonsuz döngü anlamına da gelmektedir. Değişik işlemlerin/iş parçacıklarının birbirlerinin alanlarını kullanmalarından ortaya çıkar. Windows’da sıklıkla karşınıza çıkan mavi ekranın sebebi! Örneğin bir işlem bir kaynağı (örneğin A dosyasını)kullanırken diğer bir kaynağı (örneğin B dosyasını) kullanmak istemektedir. Ancak aynı zamanda başka bir işlem B dosyasını kullanırken A dosyasını kullanmak istemektedir. Bu durumda her iki işlem de istedikleri dosyaları alamayacakları için bu işlemler bloklanacaklardır. Kilitlenme (Deadlock) Görevler arasında tıkanma (kilitlenme) aşağıdaki koşullarda ortaya çıkabilir: 1. Karşılıklı Dışlama : Bir kaynağın aynı anda yalnız bir görev tarafından kullanılabilmesi. 2. İstem üzerine kaynak atama : Görevin gereksediği kaynakları, teker teker işletim aşamasında elde edilmesi. 3. Atanan kaynakların, görevler serbest bırakmadıkça geri alınamaması 4. Döngüsel Bekleme : Bir görevin elinde tuttuğu kaynaklardan bir yada daha çoğunun,bu görevle aynı döngüsel işletim zinciri içinde yer alan diğer görevlerce istenmesi. Semafor (Semaphore): Latincede ‘deniz feneri’ anlamına gelen Semafor, negatif olmayan bir tamsayı olup işlemin başlangıç deyiminden itibaren wait ve signal işlemleri ile değeri değiştirilebilen bir değişkendir. • Signal (S) : S = S + 1 (1 arttırma) • Wait (W) : W = W – 1 (1 azaltma) İki ayrı işlem aynı anda bellekte yürütülürken kaynaklara aynı anda erişmeye çalışabilirler. Bu durumda kullanılan semafor, sistem kilitlenmelerine engel olur. Bir semafor’un paylaşılabilmesi onun başlangıç değerine bağlıdır. 2. Bellek Yönetimi Genellikle bir program hard diskte ikili kodda çalıştırabilir dosya olarak tutulmaktadır. Bu program belleğe bir işlem yardımıyla getirilerek yerleştirilir. Bellek yönetimine göre bu işlem çalışırken bellek ve hard disk arasında gidip gelebilir. Diskteki işlemler belleğe getirilerek çalıştırılmak için beklerken oluşturdukları forma giriş kuyruğu denilmektedir. Bellek her birisinin kendi adresi olan baytlar veya kelimelerden oluşan büyük dizidir. Bellek AİB ve G/Ç aygıtlarının paylaştığı ve hızlı erişilebilen bir veri ambarıdır. İşletim sisteminin bellek yönetiminin unsurları şunlardır: • Bellekteki herhangi bir işlemi başka bir yere aktarabilmelidir. • Birden fazla işlem veya kullanıcı olduğunda bir kullanıcını diğer kullanıcını alanlarına girmeleri önlenmelidir. • Kullanıcılar arası kaynak paylaşımını sağlamalıdır. • Belleğin mantıksal alanlara bölünmesini sağlayarak bilgiye erişimi kolaylaştırmalıdır. • Belleğin yetmediği durumlarda fiziksel başka bellek alanlarını yani hard diskleri kullanabilmelidir (swap). 2. Bellek Yönetimi Genellikle bir program hard diskte ikili kodda çalıştırabilir dosya olarak tutulmaktadır. Bu program belleğe bir işlem yardımıyla getirilerek yerleştirilir. Bellek yönetimine göre bu işlem çalışırken bellek ve hard disk arasında gidip gelebilir. Diskteki işlemler belleğe getirilerek çalıştırılmak için beklerken oluşturdukları forma giriş kuyruğu denilmektedir. Bellek her birisinin kendi adresi olan baytlar veya kelimelerden oluşan büyük dizidir. Bellek AİB ve G/Ç aygıtlarının paylaştığı ve hızlı erişilebilen bir veri ambarıdır. İşletim sisteminin bellek yönetiminin unsurları şunlardır: • Bellekteki herhangi bir işlemi başka bir yere aktarabilmelidir. • Birden fazla işlem veya kullanıcı olduğunda bir kullanıcını diğer kullanıcını alanlarına girmeleri önlenmelidir. • Kullanıcılar arası kaynak paylaşımını sağlamalıdır. • Belleğin mantıksal alanlara bölünmesini sağlayarak bilgiye erişimi kolaylaştırmalıdır. • Belleğin yetmediği durumlarda fiziksel başka bellek alanlarını yani hard diskleri kullanabilmelidir. 2. Bellek Yönetimi 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. Mantıksal ve Fiziksel Adres MİB tarafından oluşturulan adrese genellikle mantıksal (veya sanal) adres, bellekte yer alan adrese ise fiziksel adres denilmektedir. Mantıksal adresi MİB tarafından belirlenen bir kullanıcı işlemi belleğe yerleşirken fiziksel adresi belirlenerek yerleştirilir ki bunun için de tekrar yerleştirme (relocation) da denilen taban (base) kaydedicisi kullanılır. Bu taban kaydedicisinin değeri ile mantıksal adres toplanarak elde edilen adres ise fiziksel adrestir. 2. Bellek Yönetimi 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)