6 - ANA BELLEK YÖNETİMİ 6.1 - Giriş Modern işletim sistemlerinde, gerçekleştirilen işlemlerin geçici olarak saklandığı merkez ana bellektir. Ana bellek, byte ve kelimelerden oluşmuş çok geniş bir dizidir. Diğer bir ifade ile ana bellek, G/Ç aygıtlarının kolaylıkla ulaşabildiği bir bilgi deposudur. MİB, işlemleri ana bellekten alır ya da ana belleğe koyar. İşletim sistemi, ana bellek yönetimi ile ilgili aşağıdaki işlemlerden sorumludur : 1- Hangi programın kimin tarafından kullanıldığının izlenmesi, 2- MİB boşalınca, MİB ne hangi işlemin gideceği, 3- Gerekli boş bellek alanının oluşturulması ya da kullanılması. 6.1.1 - Yerdeğiştirme Bir işlemin MİB nde koşturulabilmesi için mutlaka ana bellekte olması gerekir. Bazen, koşturulan işlem geçici olarak başka bir yerde (ikincil bellek alanında) saklanabilir. Koşturulan işlemin ana bellekten alınıp ikincil bellek alanına getirilmesi ve ikincil bellek alanındaki işlenmek istenen işlemin ana belleğe alınması işlemine "Yerdeğiştirme" denir. Şekil 6.1'de görüldüğü gibi, MİB herhangi bir işlemi koştururken, İşlem 2 nin koşturulması gerektiği düşünülür ve İşlem 2 ninde ana bellekte olmadığı; aynı zamanda da ana bellekte boş bellek alanının kalmadığı kabul edilirse; sistem İşlem 2 yi ana belleğe getirebilmek için sırayla şu adımları gerçekleştirecektir: Ana bellekten o an için kullanılmayan bir işlem (şekle göre İşlem 1) seçilerek ikincil bellek alanına yerleştirilir, ana bellekte boş bir bellek alanı oluşturulur. Bu işleme Dışarı Yerleştirme (swap out) denir. Daha sonra, işletilecek olan (şekle göre İşlem 2) işlem, ikincil bellek alanından alınarak, boş ana bellek alanına yerleştirilir. Bu işleme de İçeri Alma (swap in) denir.
Şekil 6.1 Yerdeğiştirme 6.2 Ana Bellek Yerleştirme İşlemlerin çalıştırılmak üzere disk üzerinden alınıp ana belleğe getirilmesine ' UZUN SÜRELİ ÇİZELGELEME ' denir. Bu çizelgeleme ile ana belleğe getirilen işlem üç tür teknik kullanılarak ana belleğe yerleştirilir : 1 - İLK BOŞLUK : İşlem, ana bellek üzerinde yerleşebileceği kadar büyüklükteki ilk boş bellek bölgesine yerleştirilir (First-fit).
Şekil 6.2 İlk boşluk yerleştirme 2 - EN UYGUN BOŞLUK : Ana bellek üzerinde işlemin yerleşebileceği en küçük boş bellek alanı bulunarak işlem o bölgeye yerleştirilir (Best-fit). Yerleştirme teknikleri içinde en iyisi bu yöntemdir. Şekil 6.3 En uygun boşluk yerleştirme 3 - EN KÖTÜ BOŞLUK : Ana bellek üzerinde işlemin yerleşebileceği en büyük boş bellek alanı bulunarak işlem o bölgeye yerleştirilir (Worst-fit).
Şekil 6.4 En kötü boşluk yerleştirme Şekil 6.5 Ana bellek yerleştirme
6.2.1 Ana Bellek Sıkıştırma Ana belleğe programlar yerleştirildikçe ya ana bellekte boş yer kalmamakta ya da küçük parçalar halinde boş yerler kalmaktadır. Ana bellekte bu şekilde kullanılamayan küçük boş bellek alanlarının birleştirilerek, işlemlerin kullanabileceği büyük boş bellek alanları oluşturulması işlemine BELLEK SIKIŞTIRMA denir. Bellek sıkıştırma için kullanılan iki ayrı yöntem Şekil 6.6 ve Şekil 6.7 de gösterilmiştir. Şekil 6.6 Ana bellek sıkıştırma (boş alanlar en sonda toplanıyor)
Şekil 6.7 Ana bellek sıkıştırma (boş alanlar ortada toplanıyor) 6.3 Sayfalama Programların ana belleğe yerleştirilmesi, ana bellekten çıkartılması, kısacası ana belleğin aktif bir şekilde kullanılması sonucunda, ana bellek üzerinde çeşitli boş alanlar kalmaktadır. Bu boş alanlar iki yöntemle kullanılabilir hale getirilir. 1. Bellek Sıkıştırma 2. Sayfalama Bellek sıkıştırma yöntemi bir önceki kısımda açıklandı. Sayfalama, bir ana bellek yönetimi metodudur. Ana belleğe yerleştirilecek olan işlemlerin parçalı şekilde ana belleğe yerleştirilmesini sağlar. Fiziksel bellek (RAM -ana bellek -), sabit büyüklükteki çerçeve(frame) adı verilen alanlardan oluşur. Bir işlem koşturulmak istenildiğinde, bu işleme ait sayfalar ikincil bellekten, ana bellekteki boş çerçevelere yüklenir. Fiziksel bellekteki her çerçevenin boyutu 4 KB ise, buraya yüklenecek olan ikincil bellekteki blokların da 4 KB sabit büyüklükte olması gerekmektedir. Yani fiziksel bellekteki çerçeve boyutu ile ikincil bellekteki blok boyutu biribirine eşittir. MİB tarafında üretilen sanal adres (mantıksal adres) ise ana bellekteki fiziksel adresi kullanabilmek için iki kısma ayrılır. Bu kısımlardan ilki sayfa numarası (Şekil 6.8 'de p ile gösterilen ), diğeri ise bir sayfadaki ofset adresidir (Şekil 6.8 'de d ile gösterilen ). Sayfa numarası, sayfa tablosundaki indeks adresi için kullanılır. Sayfa tablosunda fiziksel bellekteki her sayfanın taban (base) adresi bulunur. Sayfa boyutu çerçeve boyutunda olduğu gibi
donanımla tanımlanır. Örneğin pentium işlemcilerde sayfa boyutu 4 KB ya da 4 MB olabilmektedir. Şekil 6.8 Sayfalama Aşağıdaki simulasyon olayında sayfalamanın mantıksal yapısı gösterilmiştir. Sayfa tablosundaki indeks numaraları yanındaki çerçevelere, sayfaların fiziksel bellekte yerleşeceği çerçeve numaralarını giriniz. Simülatör 6.1 - Sayfalama simülatörü.
7- SANAL BELLEK 7.1 - Giriş Sanal bellek yönetimi, ana belleğe tam olarak sığmayan işlemlerin koşturulmasına olanak veren bir bellek yönetim tekniğidir. En büyük avantajı fiziksel bellekten büyük programların çalıştırılabilmesidir. Sanal bellek genelde İstemsel Sayfalama ve bölümlendirme teknikleri ile gerçekleştirilir. 7.1.1 - İstemsel Sayfalama İstemsel sayfalama, sayfalama işlemine benzerdir. İşlemler ikincil bellekte bulunurlar. Bir işlemin koşturulması istenildiğinde, işlem ikincil bellekten ana belleğe getirilir. Bu yer değiştirme için tembel yerdeğiştiririci (lazy swapper) denilen bir teknik kullanılır. Tembel yerdeğiştirici bir sayfayı ihtiyaç olmadan, kesinlikle belleğe getirmez. Bu sisteme kısaca yerdeğiştirici (swapper) de denir. İşlemler birbirini belli sırayla takip eden sayfalardan oluşurlar. Bu sayfalar ile ilgili sisteme sayfalayıcı(pager) denir. Ana belleğe yerleştirilen bir işlemin hangi sayfasının kullanılacağına sayfalayıcı karar verir. Sayfalayıcı, ana belleğe işlemin kullanılacak olan sayfasını getirir. Böylece sayfalayıcı kullanılmayacak olan sayfaları ana belleğe getirmez. Tüm sayfalar yerine sadece işlenecek olan sayfaların ana belleğe getirilmesi yerdeğiştirme zamanını düşürdüğü gibi, ana bellekte daha az yer kullanılmasını sağlar. Örneğin ana belleği 32 MB olan bir bilgisayarda, 290 MB'lık bir program koşturulmak istenirse, bu programın tümünün ana belleğe yerleşmesi mümkün değildir. Bu durumda istemsel sayfalama yöntemi kullanılarak, örneğin ana bellek 4 KB'lık sayfalara bölünerek, koşturulmak istenen programın sadece gerekli işlemlerine ait sayfalar ana belleğe yüklenir. Geri kalanı ise ikincil bellekte bekler. İkincil bellekteki kullanılmayan işlemlere ait sayfalar, gerekli olduğunda ana belleğe getirilir. Hangi sayfanın bellekte olduğu hangisinin olmadığı donanımsal olarak geçerligeçersiz(valid-invalid) bitleri sayfa tablosunda kullanılarak gösterilir. Geçerli(Valid) durumunda sayfa ana bellekte, geçersiz(invalid) durumunda sayfa ana bellekte değil, ikincil bellek(sabit disk ya da disket) üzerinde demektir. Bu durum Şekil 7.1'de görülmektedir.
Şekil 7.1 Sayfa tablosu ve ana bellekteki görünümü 7.1.2 - Sayfa Hatası Bir işlemin koşturulması sırasında, işlem için gerekli olan sayfa ya da sayfaların ana bellek üzerinde olmaması sonucu oluşan hataya sayfa hatası (page fault) denir. Bu durum Şekil 7.2'deki animasyonda görülmektedir.
Şekil 7.2 Sayfa hatası oluşumu 7.2 Sayfa Yeniden Yerleştirilme Bir program koşturulmak istediğinde, MİB tarafından koşulacak olan işlemlerin ana bellekte bulunması gerekir. Bu programın koşturulacak işlemlerine ait sayfalar ana bellekte değilse, bu sayfaların ikincil bellekten ana belleğe getirilmesi gerekir. Koşturulacak sayfaların ana belleğe getirilmesinde aşağıdaki adımlar sırayla gerçekleştirilir (Bu adımlar Şekil 7.3'deki animasyonda da görülmektedir): 1) İstenilen sayfa ikincil bellek(sabit disk gibi...) üzerinde bulunur. 2) Ana bellek üzerinde boş çerçeve(frame) bulunur. a) Eğer boş çerçeve varsa o kullanılır. b) Eğer boş çerçeve yoksa, sayfa yerleştirme algoritmalarına göre bir kurban çerçeve (victim frame ) seçilir. (Sayfa yerleştirme algoritmaları bir sonraki kısımda açıklanacaktır.) c) Seçilen kurban sayfa ikincil bellek üzerine yazılır. Sayfa ve çerçeve tablosu uygun şekilde değiştirilir. 3) İstenilen sayfa, boşaltılan çerçeve içine yerleştirilir. Sayfa ve çerçeve tablosu uygun şekilde değiştirilir. 4) İşlem yeniden başlatılır. Görüldüğü gibi, eğer boş çerçeve yok ise iki sayfa yerdeğiştirme işlemine giriyor.
Şekil 7.3 Sayfa yeniden yerleştirme Özet olarak, ana bellek üzerinde boş çerçeve yoksa, bir kurban çerçeve seçilerek, bu çerçevenin ikincil bellek üzerine yerleştirilmesi, ikincil bellek üzerinden alınan sayfanın da boşaltılan boş çerçevenin yerine yerleştirilmesi işlemine sayfa yeniden yerleştirme denir. 7.3 Sayfa Yeniden Yerleştirilme Algoritmaları Farklı işletim sistemlerinin, değişik sayfa yerleştirme algoritmaları vardır. Sayfa yerleştirme algoritmalarının performansını gösteren kıstas sayfa hata sayısının ve sayfa yerdeğiştirme sayısının en düşük değerde olmasıdır. Sanal bellek yönetiminde kullanılan sayfa yeniden yerleştirilmesindeki aşağıdaki algoritmalar incelenecektir. İlk Gelen İlk Gider(FIFO) Algoritması Optimal Algoritması LRU Algoritması
7.3.1 İlk Gelen İlk Gider Algoritması En basit sayfa yerleştirme algoritmasıdır. Çalışma yapısı, ana bellekte en uzun süre kalan sayfa, ana bellekten ilk olarak çıkartılır. Bu bir kuyruğa benzetilebilir. En son gelen sayfa, kuyruğun en arkasına gider. Eğer ana bellek üzerinde boş çerçeve yoksa, sıranın en önündeki sayfa ana bellekten çıkartılır. Örnek: Şekil 7.4 FIFO Sayfa yeniden yerleştirme algoritması Şekil 7.4'de görülen örnekte,ana bellekte üç adet çerçeve bulunmaktadır. Başlangıçta bu üç çerçeveninde boş olduğu kabul edilmiştir. Gelen sayfa numaları da referans değeri olarak şekil üzerinde belirtilmiştir. Başlangıçta üç çerçevenin boş olması nedeni ile sırasıyla 7, 0 ve 1 numaralı sayfalar bu çerçevelere yerleşir. Bu nedenle ilk üç sayfanın yerleştirilmesinde 3 sayfa hatası oluşur. Daha sonra gelen 2 nolu sayfa çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. Fakat bu sayfanın yerleştirilebilmesi için, bir kurban sayfası seçilmesi gereklidir. Bu algoritmaya göre ilk olarak 7 nolu sayfa geldiği için, kurban sayfa olarak seçilir. 7 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 2 nolu sayfa yerleştirilir. Daha sonra gelen 0 nolu sayfa çerçeveler içerisinde bulunduğundan dolayı sayfa hatası oluşmaz. Bir sonra gelen sayfa 3 nolu sayfadır. Çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. 3nolu sayfanın yerleştirilebilmesi için, bir kurban sayfası seçilmesi gereklidir. Bu algoritmaya göre çerçeveler içerisinde bulunan sayfalar içinde ilk olarak gelen sayfa 0 nolu sayfadır. Bu nedenle kurban sayfa olarak seçilir. 0 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 3 nolu sayfa yerleştirilir. Bu işlemler diğer sayfalar için sırayla gerçekleştirilir. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir.ana bellekte 3 adet çerçeve bulunmaktadır. Simülatör üzerinde koşulacak olan sayfa numaralarını giriniz.
Simülatör 7.1 - İlk gelen ilk gider (FIFO) sayfa yeniden yerleştirme algoritması simülatörü 7.3.2 Optimal Algoritması Optimal algoritması, tüm algoritmalar içerisinde en düşük sayfa hatası sayısına sahiptir. Çalışma sistemi, mevcut sayfalar içerisinde en uzun süre kullanılmayacak olan sayfa, kurban sayfa olarak seçilerek ikincil belleğe gönderilir. Boşalan bu çerçeve yerine de yeni gelen sayfa yerleştirilir. Örnek: Şekil 7.5 Optimal Sayfa yeniden yerleştirme algoritması.
Şekil 7.5'de görülen örnekte,ana bellekte üç adet çerçeve bulunmaktadır. Başlangıçta bu üç çerçeveninde boş olduğu kabul edilmiştir. Gelen sayfa numaraları da referans değeri olarak şekil üzerinde belirtilmiştir. Başlangıçta üç çerçevenin boş olması nedeni ile sırasıyla 7, 0 ve 1 numaralı sayfalar bu çerçevelere yerleşir. Bu nedenle ilk üç sayfanın yerleştirilmesinde 3 sayfa hatası oluşur. Daha sonra gelen 2 nolu sayfa çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. Fakat bu sayfanın yerleştirilebilmesi için, bir kurban sayfası seçilmesi gereklidir. Bu algoritmaya göre en uzun süre kullanılmayacak olan sayfa kurban sayfa olarak seçilir. Çerçeveler içerisinde bulunan sayfalardan 7 nolu sayfa bir daha 18 sırada, 0 nolu sayfa 5 sırada, 1 nolu sayfa da 14 sırada kullanılacaktır. Bu nedenle 7 nolu sayfa kurban sayfa olarak seçilir. 7 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 2 nolu sayfa yerleştirilir. Daha sonra gelen 0 nolu sayfa çerçeveler içerisinde bulunduğundan dolayı sayfa hatası oluşmaz. Bir sonra gelen sayfa 3 nolu sayfadır. Çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. Çerçeveler içerisinde bulunan sayfalardan 2 nolu sayfa bir daha 9 sırada, 0 nolu sayfa 7 sırada, 1 nolu sayfa da 14 sırada kullanılacaktır. Bu nedenle 1 nolu sayfa kurban sayfa olarak seçilir. 1 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 3 nolu sayfa yerleştirilir. Bu işlemler diğer sayfalar için benzer şekilde gerçekleştirilir. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir.ana bellekte 3 adet çerçeve bulunmaktadır. Simülatör üzerinde koşulacak olan sayfa numaralarını giriniz. Simülatör 7.2 - Optimal sayfa yeniden yerleştirme algoritması simülatörü
7.3.3 LRU Algoritması LRU algoritması performans bakımından İlk gelen ilk gider algoritması ile Optimal algoritması arasında yer alır. En uzun süre kullanılmayan sayfa kurban olarak seçilerek ikincil belleğe gönderilir. Boşalan bu çerçeve yerine de yeni gelen sayfa yerleştirilir. Örnek: Şekil 7.6 LRU Sayfa yeniden yerleştirme algoritması. Şekil 7.6'de görülen örnekte,ana bellekte üç adet çerçeve bulunmaktadır. Başlangıçta bu üç çerçeveninde boş olduğu kabul edilmiştir. Gelen sayfa numaraları da referans değeri olarak şekil üzerinde belirtilmiştir. Başlangıçta üç çerçevenin boş olması nedeni ile sırasıyla 7, 0 ve 1 numaralı sayfalar bu çerçevelere yerleşir. Bu nedenle ilk üç sayfanın yerleştirilmesinde 3 sayfa hatası oluşur. Daha sonra gelen 2 nolu sayfa çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. Fakat bu sayfanın yerleştirilebilmesi için, bir kurban sayfası seçilmesi gereklidir. Bu algoritmaya göre en uzun süre kullanılmayan sayfa kurban sayfa olarak seçilir. Çerçeveler içerisinde bulunan sayfalardan 7 nolu sayfa bellekte en uzun süre kullanılmadan bekleyen sayfadır. Bu nedenle 7 nolu sayfa kurban sayfa olarak seçilir. 7 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 2 nolu sayfa yerleştirilir. Daha sonra gelen 0 nolu sayfa çerçeveler içerisinde bulunduğundan dolayı sayfa hatası oluşmaz. Bir sonra gelen sayfa 3 nolu sayfadır. Çerçeveler içerisinde bulunmadığından bir sayfa hatası oluşur. Çerçeveler içerisinde bulunan sayfalardan 1 nolu sayfa bellekte en uzun süre kullanılmadan bekleyen sayfadır.bu nedenle 1 nolu sayfa kurban sayfa olarak seçilir. 1 nolu sayfa ikincil belleğe gönderilirken, boşalan çerçeveye de 3 nolu sayfa yerleştirilir. Bu işlemler diğer sayfalar için benzer şekilde gerçekleştirilir.
Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir.ana bellekte 3 adet çerçeve bulunmaktadır. Simülatör üzerinde koşulacak olan sayfa numaralarını giriniz. Simülatör 7.3 - LRU sayfa yeniden yerleştirme algoritması simülatörü. LRU algoritmasında karşılaşılan temel sorunlardan biri de en uzun süre kullanılmayan sayfanın hangisi olduğuna nasıl karar verileceğidir. Bunun için iki temel yaklaşım vardır. Sayaç : En basit yaklaşımdır. Bu yaklaşımda, ana belleğe gelen her sayfa için mantıksal bir saat ya da bir sayaç kullanılır. Bir sayfa ana bellekteki çerçevelere yerleştirildiğinde, sayfa ile ilişkili olan zaman alanına saat kaydedicisinin değeri kopyalanır. Böylece her sayfa için bir zaman değerine sahip olunur. Ana bellekte boş çerçeve yoksa yeni gelen sayfa, zaman alanında en büyük zaman değerinin bulunduğu sayfa ile yerdeğiştirir. Yığın (Stack) : Bu yaklaşıma göre, sayfa numaraları bir yığın bellek içinde tutulur. Gelen her yeni sayfanın çerçeve numarası yığının en üstüne yerleştirilir. Böylece yığının en üstünde en son gelen sayfa, yığının en altındaysa en uzun süre kullanılmayan sayfa bulunur. Ancak yığın içinde bulunan bir sayfa tekrar referans olarak verildiğinde sayfa numarası yığının en üstüne gider.
8 - İKİNCİL BELLEK YÖNETİMİ 8.1 - Giriş Bilgisayar sistemleri ana belleğin yanında bilgilerin ve programların saklanmasına olanak veren ikinci bir saklama aygıtına sahiptir. İlk saklama aygıtları delikli kartlar ve manyetik teypler olmuştur. Bu aygıtların sıralı bilgi saklaması ve hızlarının düşük olması modern saklama aygıtlarının ortaya çıkmasına neden olmuştur. Diskler, disketler ve optik diskler modern saklama aygıtlarıdır. 8.1.1 - Disk Yapısı Bilgisayarlarda kullanılan diskler fiziksel olarak basit yapıdadırlar. Bilgi, her iki yüzü manyetik bir materyalle kaplı olan diskler üzerine kaydedilir. Disk yapısı Şekil 8.1'de basit olarak görülmektedir. Yüksek hızlı bir motor diskleri okuma yazma kafası önünde döndürür. Okuma yazma kafaları da bu diskler üzerinde bir kol yardımıyla hareket ederek istenilen bilgiye ulaşır. Şekil 8.1 Hareketli kafalı disk mekanizması. Disk yüzeyi mantıksal olarak izlere(track) bölünmüştür. Bilgi okuma yazma kafasının altında bulunan ize otomatik olarak kaydedilir ya da o iz üzerinden okunur. Çeşitli yapıda disk mekanizmaları mevcuttur. Örneğin, sabit kafalı
diskler ya da hareketli kafalı diskler gibi. Sabit kafalı disklerde her disk için bir kafa mevcuttur. Diskler bu kafaların önünde hareketlidir. Böylece izden ize daha hızlı hareket edilir. Ancak kafa sayısı arttığı için bu diskler oldukça pahalıdır. Hareketli kafalı disklerde ise, her disk üzerinde hareket edebilen bir tek okuma-yazma kafası bulunur. Okuma-yazma kafasının az olması sebebiyle bu diskler sabit kafalı disklere göre daha ucuzdur. 8.2 Boş Alan Yönetimi Disk üzerinde bulunan dosyalar silindiğinde, silinen dosyaların boşalttığı alanları tekrar kullanılması gerekmektedir. Bu nedenle, işletim sistemleri disk üstündeki boş alanların yönetimiyle ilgili bir "boş alan listesi" tutar. Bir dosya, kaydedilmek istendiğinde işletim sistemi bu liste üzerinden dosyanın yerleşeceği en uygun boşluğu bulur ve dosya buraya kaydedilir. Daha sonra bu alan boş alan listesinden çıkartılır. Bir dosya silindiğinde ise, silinen dosyanın boşalttığı alan boş alan listesine eklenir. İkincil bellek üzerindeki boş alanların listesini tutmak için işletim sistemlerinde kullanılan çeşitli yöntemler vardır. Bu yöntemler aşağıda açıklanmıştır. 8.2.1 - Bit Vektör Yöntemi Bit vektör yönteminde boş alan listesi bir bit haritası şeklinde tutulur. Bilgi bulunan yerler 1, boş olan yerler 0ile gösterilir (Bazı işletim sistemlerinde bunun tersi de olabilir). Örneğin disk üstünde 2,3,4,5,8,9,10,11,17 nolu alanların boş olduğunu kabul edilirse, bu yönteme göre bit vektörü şu şekilde olur. 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 1... Bu yöntemin temel avantajı basit olması ve ardarda gelen boş alanların kolaylıkla bulunabilmesidir. 8.2.2 - Bağlantılı Liste Yöntemi Boş alanların tutulması ile ilgili işletim sistemlerinin kullandığı diğer bir yöntem ise bağlantılı liste yöntemidir. Bu yönteme göre boş alan kendisinden sonra gelen boş alanı gösteren bir işaretleyici(pointer) tutar. Şekil 8.2 Bağlantılı liste yöntemi. 8.2.3 - Gruplama Yöntemi Kullanılan bir diğer yöntem de gruplamadır. Bu yöntemde birbirlerini takip eden
boş alanlar gruplanır ve grubun ilk elemanın adresi bir önceki boş alan grubunun son elamanında tutulur. Grubun ilk elemanı kendisinden sonra kaç tane boş alan olduğu bilgisini tutar. 8.2.4 - Sayma Yöntemi İkinci bellek üzerinde bulunan ilk boşluk alanda, tüm boş alanların ve bunları takip eden boşlukların adres ve sayıları tutulur. 8.3 Yerleşim Metodları İkincil bellek üzerine bir çok dosya kaydedilir. Bu nedenle disk üzerindeki boş alanların yönetimi ne kadar önemliyse, kaydedilecek dosyaların disk üzerine en verimli şekilde yerleştirilmesi de o derece önemlidir. İşletim sistemlerinin ikincil bellek üzerine bilgi yerleştirmek için kullandıkları üç çeşit metod bulunmaktadır. Bu metodlar aşağıda açıklanmaktadır. 8.3.1 - Yanyana Yerleşim Yanyan yerleşim metodunda, her dosya disk üzerinde birbirini takip eden adreslerde bulunur. Bu yerleşim yöntemiyle yerleştirilmiş olan dosya, ilk blok adresi ve uzunluğuyla tanımlanır. Örneğin bir dosya n blok uzunluğunda ve b adresinden başlayarak yerleştirilmişse, dosyanın yerleştiği alan b, b+1, b+2,.b+(n-1). Bu durum Şekil 8.2'de görülmektedir. Örneğin, listedeki dene dosyası 14 nolu bloktan başlayarak, sıra ile 14,15,16 numaralı bloklarda yerleştirilmiştir. dene dosyası 14 nolu blok adresi ile başlamaktadır ve toplam uzunluğu üç bloktur.
Şekil 8.3 Sıralı yerleşim. 8.3.2 - Bağlantılı Yerleşim Bağlantılı yerleşim tekniğinde, her dosya parçalara ayrılarak değişik yerlerdeki disk bloklarına yerleştirilebilir. Dizinler dosyanın ilk ve son bloğunun bulunduğu adresleri gösteren bir işaretliyiciye(pointer) sahiptir. Aynı zamanda, dosyanın yerleştiği her blok dosya bilgisinin yanında kendisinden sonra gelen bloğu gösteren bir işaretliyiciye de sahiptir. Şekil 8.3'de görülen araba dosyası 9 nolu bloktan başlayıp 23 nolu blokta sona ermektedir. 9 nolu blok kendinden sonraki 16 nolu bloğun numarasını tutar. Benzer şekilde, diğer bloklar da kendisiden sonra gelen bloğun numarasını tutarlar. MS-DOS, OS/2 ve MS Windows tabanlı işletim sistemleri bu yöntemi kullanırlar.
Şekil 8.4 Bağlantılı yerleşim. 8.3.3 - İndeksli Yerleşim İndekli yerleşimde her dosya için bir indeks bloğu oluşturulmuştur. Dizinler dosyaların indeks blok adresini tutar. Bu indeks bloğunda dosyanın yerleşmiş olduğu her bloğun adresi vardır. Böylece her bloğa direkt olarak ulaşabilir. Şekil 8.4'de görülen deneme dosyasının indeks bloğu 19 nolu bloktur. 19 nolu blokta deneme dosyasının yerleşmiş olduğu blokların numaraları bulunmaktadır.
Şekil 8.5 İndeksli yerleşim. İndeks blokları üç tür yöntemle tutulabilir. Bu yöntemler sırasıyla : Bağlantılı Şema : İndeks bloğu bir disk bloğundan oluşur. Böylece dosyaya direkt olarak bu disk bloğundan ulaşılır. Eğer dosya bir disk bloğuna sığmayacak kadar büyükse ikinci bir indeks bloğu kullanılır. İlk indeks bloğunun son adres boşluğunda ikinci indeks bloğunun adresi bulunur. Çok-seviyeli Şema : Bağlantılı şemanın farklı bir gösterimidir. Bu yöntemde çeşitli seviyelerde indeks blokları bulunur. Dosya veri bloklarının adresleri ilk seviyedeki indeks bloğundan başlayarak yerleştirilir. Eğer ikinci bir indeks bloğu kullanılacaksa bu indeks bloğu ikinci seviye indeks bloğu olur. İlk seviye indeks bloğu bu ikinci seviye indeks bloğunun adresini de içerir. Birleştirilmiş Şema : BSD UNIX sisteminde kullanılan bir yaklaşımdır. Bu yöntemde dosya indeks bloğu içindeki ilk 15 işaretleyici, dolaylı blok ve direk blok olmak üzere iki gruba ayrılmıştır. Şekil 8.6'da bu yöntem görülmektedir. İlk 12 işaretleyici direkt blok bölümüne aittir. Dosya eğer 12 bloktan küçük ise dosya yerinin belirtilmesi için bu işaretleyiciler kullanılır. Geri kalan 3 işaretleyi ise dolaylı blok bölümüdür. Bu bölüm tek dolaylı blok, çift dolaylı blok ve üçlü dolaylı blok olmak üzere üçe ayrılır. Tek dolaylı blok : Bir indeks bloğunun adresini tutar.
Çift dolaylı blok : Dosya eğer birden fazla indeks bloğuna sahipse bu işaretleyici kullanılır. Bu işaretleyici, dosyanın sahip olduğu indeks bloklarının adresini tutan bir indeks bloğunun adresini tutar. Üçlü dolaylı blok : Dosyanın sahip olduğu indeks bloklarının sayısı eğer bir indeks bloğuyla gösterilemiyor ve ikinci ya da üçüncü bir indeks bloğu kullanılıyorsa, indeks bloklarının yerini gösterecek bu indeks blokları için bir indeks bloğu oluşturulur. Bu indeks bloğunun adresi bu işaretleyicide tutulur. Şekil 8.6 Birleştirilmiş Şema yöntemi.
8.4 Disk Çizelgelemeleri İkincil bellek üzerinde çok sayıda okuma/yazma işlemi yapılmaktadır. Okuma/yazma işlemlerinin çok hızlı gerçekleştirilmesi gerekmektedir. Disk hızını belirleyen üç etken vardır. Bunlar; Sistem öncelikle kafayı uygun iz ya da silindir üzerine hareket ettirir. Bu harekete " ARAMA " geçen süreyede " ARAMA SÜRESİ " denir Kafa doğru iz üzerinde, fakat iz üzerinde blok kafanın bulunduğu yere uzak ise, bu iz üzerindeki bloğun okuma yazma kafasına gelinceye kadar geçen süreye " GİZLİLİK ZAMANI " denir. Son olarak bilgi diskten okunarak ana belleğe transfer edilinceye kadar geçen süreye de "TRANSFER SÜRESİ " denir. Bir diskin okuma/yazma isteğine cevap verme süresi bu üç sürenin toplamıyla bulunur. Arama süresinin kısa olması ve kafanın istenilen bloğa hızlı ulaşabilmesi için, çeşitli disk çizelgeleme algoritmaları gerçekleştirilmiştir. Bu algoritmalardan bazıları aşağıda verilmiştir. İlk gelen ilk hizmet disk çizelgeleme algoritması SCAN disk çizelgeleme algoritması C-LOOKdisk çizelgeleme algoritması C-SCAN disk çizelgeleme algoritması SSTF disk çizelgeleme algoritması 8.4.1 İlk Gelen İlk Hizmet Disk Çizelgelemesi İlk gelen ilk hizmet disk çizelgelemesi en basit disk çizelgelemesidir. Disk kuyruğundaki sıraya göre okuma-yazma kafası izler üzerinde hareket ettirilir. Örnek : Disk kuyruğu : 68,123, 57, 128, 44, 184, 95, 32 Okuma-Yazma Kafası başlama konumu: 78 izde. Bu algoritmaya göre gerçekleştirilecek olan işlem şu sırayla olacaktır. 78. izde bulunan okuma-yazma kafası önce 68. ize sonra sırayla 123, 57, 128, 44, 184, 95 ve 32 izlere hareket edecektir. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir. Simülasyonda okuma-yazma kafası başlangıçta 90 izde bulunmaktadır. Kutulara okuma-yazma kafasının gitmesini istediğiniz izlerin numaralarını girin.
Simülatör 8.1 - İlk gelen ilk hizmet disk çizelgeleme algoritması simülatörü. 8.4.2 Scan Disk Çizelgelemesi SCAN disk çizelgeleme algoritmasında okuma yazma kafası bulunduğu konumdan (başlama konumu) sıfırıncı iz yönüne doğru hareket ederek, bu alan içinde bulunan işlemleri gerçekleştirir. Sıfırıncı ize ulaştıktan sonra son iz yönünde hareket etmeye başlar. Son iz yönüne doğru hareket ederken başlama konumu ile son iz arasındaki izler üzerinde hareket eder. Örnek : Disk kuyruğu : 68,123, 57, 128, 44, 184, 95, 32 Okuma-Yazma Kafası başlama konumu: 78 iz. Bu algoritmaya göre gerçekleştirilecek olan işlem şu sırayla olacaktır. 78. izde bulunan okuma-yazma kafası önce 68. ize sonra sırayla 57, 44, 32 ve ordan 0 ize hareket eder. Daha sonra sırasıyla başlama konumu olan 78. izden sonraki 95, 123, 128 ve 184 üncü izler üzerine hareket eder. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir. Simülasyonda okuma-yazma kafasının başlama konumu 90 izdir. Kutulara okumayazma kafasının gitmesini istediğiniz izlerin numaralarını girin.
Simülatör 8.2 - SCAN disk çizelgeleme algoritması simülatörü 8.4.3 C-Scan Disk Çizelgelemesi C-Scan disk çizelgeleme algoritmasında okuma-yazma kafası bulunduğu konumdan son iz yönünde hareket ederek bu alan içinde bulunan işlemleri gerçekleştirir. Daha sonra, son ize ulaştığında buradan hızlı bir şekilde ilk ize dönerek, ilk iz ile ilk konumu arasında kalan işlemleri yapar. Örnek : Disk kuyruğu : 68,123, 57, 128, 44, 184, 95, 32 Okuma-Yazma Kafası: 78 izde. Bu algoritmaya göre gerçekleştirilecek olan işlem şu sırayla olacaktır. 78. izde bulunan okuma-yazma kafası önce 95. ize sonra sırayla 123, 128 ve 184 üncü oradanda en son ize hareket edecektir. Daha sonra hızlı bir şekilde 0. ize geri dönerek sırayla 32, 44,57 ve oradan 68 ize hareket ederek işlemlerini tamamlayacaktır. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir. Simülasyonda okuma-yazma kafasının başlama konumu 90 izdir. Kutulara okuma-yazma kafasının gitmesini istediğiniz izlerin numaralarını girin.
Simülatör 8.4 - C-Scan disk çizelgeleme algoritması simülatörü 8.4.4 C-Look Disk Çizelgelemesi C-Look disk çizelgeleme algoritmasında, okuma yazma kafası başlama konumundan en son iz yönünde hareket eder. En son ize yakın en son işlem gerçekleştirildikten sonra, ilk ize en yakın işlemden başlayarak başlama konumundan önceki işlemleri yapar. Örnek : Disk kuyruğu : 68,123, 57, 128, 44, 184, 95, 32 Okuma-Yazma Kafası: 78 izde. Bu algoritmaya göre gerçekleştirilecek olan işlem şu sırayla olacaktır. 78. izde bulunan okuma-yazma kafası önce 95. ize sonra sırayla 123, 128 ve 184. izdeki işlemleri gerçekleştirir. Buradan, ilk konumu olan 78. izden önce bulunan 32, 44, 57 ve 68'inci izlere hareket ederek işlemlerini gerçekleştirir. Aşağıda bu algoritmayı gösteren bir simülasyon olayı gerçekleştirilmiştir.simülasyonda okuma-yazma kafasının başlama konumu 90 izdir. Kutulara okuma-yazma kafasının gitmesini istediğiniz izlerin numaralarını girin.
8.4.5 SSTF Disk Çizelgelemesi SSTF disk çizelgeleme algoritmasında okuma yazma kafası bulunduğu konumdan (başlama konumu), arama zamanının en düşük olduğu iz üzerine hareket ederek işlemlerini gerçekleştirir. Örnek : Disk kuyruğu : 68,123, 57, 128, 44, 184, 95, 32 Okuma-Yazma Kafası başlama konumu: 78 iz. Bu algoritmaya göre gerçekleştirilecek olan işlem şu sırayla olacaktır. 78. izde bulunan okuma-yazma kafası arama zamanı en düşük olan 68. ize hareket eder. Daha sonra sırasıyla 57, 44 ve 32 izler yönüde hareket eder. 32 izden sonra arama zamanı en düşük olan 95 ize hareket eder. Buradan da sırası ile 123, 128 ve 184 üncü izlere hareket eder. 9.1 - Giriş 9- DOSYA YÖNETİMİ Dosya: Dosya, bilgilerin ve programların saklandığı yerdir. Dizin: Dizin, bilgiler ve programlarla birlikte dosyalarında saklanabildiği yerlerdir. Dosya yönetimi işletim sisteminin sunduğu temel hizmetlerden biridir. Dosyalar, disk, disket, teyp gibi, çeşitli ikincil saklama alanlarında saklanır. Tüm bu saklama aygıtlarının kendine özel karakteristik yapısı vardır. İşletim sistemi, bu yapıya uygun dosya yönetimini gerekli aygıt üzerinde gerçekleştirir. 9.1.1 - Dosya İşlemleri İşletim sisteminin, dosyayla ilgili sunduğu hizmetler : 1- Dosya yaratılması Bir dosyanın yaratılması için iki adım vardır. Birincisi dosyanın disk üzerinde yerleştirilebileceği boş bellek alanı bulunur. İkinci olarakta dosyanın yerleşeceği dizin belirtilerek dosyaya, bir dosya adı verilir. 2- Dosyanın yazılması
Dosyanın, disk üzerindeki bir dizin içine yazılabilmesi için, işletim sistemi dosyanın yerleştirileceği dizini bulur. Her dizin, içine yazılan dosya bilgilerini tutan bir yazma işaretleyicisine sahiptir. Bu işaretleyiciye göre dosyanın yerleşeceği adres bloğu bulunur ve dosya bu yere yazılır. İşaretleyicinin bilgileri bu işlemden sonra güncellenir. 3- Dosyanın okunması Dosyanın disk üzerinde okunması için, işletim sistemi dosyanın yerleştiği dizini bulur. Her dizin, bir okuma işaretleyicisine sahiptir. Bu işaretleyici bilgisine göre dosya dizin üzerinden okunur. Bir çok işletim sisteminde, dizinlerde bulunan okuma ve yazma işaretleyicileri yerine aktif dosya pozisyon işaretleyicisi bulunur. Bu işaretleyici her iki işaretleyicinin yaptığı işi tek başına yapar. 4- Dosyanın yerinin yeniden düzenlenmesi Yeri yeniden düzenlenecek olan dosyaya ilişkin dizin bulunur. Bu dizinin aktif dosya işaretleyicisinde, belirtilen dosya ile konum bilgisi yeniden düzenlenir. 5- Dosyanın silinmesi Silinecek olan dosyaya ilişkin dizin bulunur. Aktif dosya işaretleyicisinden bu dosya ile ilgili olan yer çıkartılır. Böylece dosyanın bulunduğu yer, diğer dosyalar için kullanılabilir hale gelir. 9.1.2 - Dosya Tipleri İşletim sistemi değişik dosya tiplerini tanıyabilmelidir. Eğer bir işletim sistemi bir dosya tipini tanıyamıyorsa, o tipteki dosyalar ile ilgili çalıştırma, okuma-yazma gibi işlemleri gerçekleştiremez. Dosya tiplerinin belirtilmesi için kullanılan en yaygın yöntem dosya adının iki alana ayrılarak, son üç karakter ile dosyanın tipini gösterilmesidir. Tablo 9.1 değişik dosya tipleri, uzantıları ve işlevleri görülmektedir. Tablo 9.1 Genel dosya tipleri Dosya Tipi Uzantısı İşlevi Çalıştırılabilir dosya exe,com,bin yada hiçbiri makina dili programı olarak çalıştırılmaya hazır
Nesne dosyası obj, o makina diline çevrilmiş fakat bağlanmamış Kaynak kodu dosyası Toplu işlem dosyası c, p, pas, f77, asm, a, java bat, sh çeşitli programlama dillerinin kaynak kodları komut yorumlayıcılar için komutlar Metin dosyası txt, rtf dokümalar ya da metin belgeleri Kelime işlem dosyası wp, tex, rrf, doc çeşitli kelime işlemci formatındaki belgeler Kütüphane dosyası Yazıcı ya da görüntü dosyası Arşiv dosyası lib, a ps, dvi, gif arc, zip, tar programcılar için oluşturulmuş rutin kütüphaneleri Yazıcı için oluşturulmuş binary ya da ASCII biçimindeki dosyalar bir ya da birden fazla dosyanın sıkıştırılarak bir tek dosya içinde toplanmasıyla oluşan dosyalar 9.1.3 - Dizin İşlemleri İşletim sistemi dizin yapısıyla ilgili aşağıdaki hizmetleri sunar. 1- Bir dizin içindeki dosyanın aranması. 2- Bir dizin içine yeni dosyaların yaratılması. 3- Dizin içinde gerekli olmayan dosyaların silinmesi. 4- Dizinin listelenmesi. 5- Dizinin yedeklenmesi. 6- Bir dizin içindeki dosya isminin değiştirilmesi. 9.2 Erişim Yöntemleri Dosyalar verileri saklarlar. Bir dosyanın kullanılması istenildiğinde mutlaka o dosyaya erişilmeli ve dosyadan okunmalıdır. Dosya erişimi için çeşitli metodlar geliştirilmiştir. Bu metodlar sırayla aşağıda incelenecektir. 9.2.1 - Sıralı Erişim
Dosya içerisine veriler belirli bir sıra ile yazılır. Her kayıt bir önceki kayıttan sonra gelir. Dosya yazma işlemi, yazma işaretleyicisinin (writer pointer) bulunduğu noktadan itibaren gerçekleştirilir. Yazma tamamlandıktan sonra işaretleyici otomatik olarak bu kaydın sonuna gelir. Dosya okuma işleminde, okuma işaretleyicisinin (reader pointer) bulunduğu konumdan sonraki bilgi okunur. İşaretleyicinin değeri otomatik olarak artar. Bu erişim türü sıralı erişim olarak bilinir. Bu erişim türünü kullanan bazı sistemlerde n kayıt ileri ya da n kayıt geri gidilebilir. Şekil 9.1'de sıralı erişim yapısı görülmektedir. Şekil 9.1 Sıralı Erişim 9.2.2 - Doğrudan Erişim Doğrudan erişim tekniğinde disk üzerindeki her dosya numaralandırılmış blok sıralarına kaydedilir. Bu erişim tekniğiyle rastgele seçilmiş bloklara ulaşılarak okunup - yazılabilir. 9.2.3 - İndeksli Erişim İndeksli erişim tekniğinde, disk üzerindeki dosyaların listesi bir blokta tutulur. Bu bir kitabın indeks sayfasına benzetilebilir. Kitap içinde ulaşmak istediğimiz konuyu önce indeksten bulup oradan da sayfa numarasını alırız. Bu yöntemde de ulaşılmak isteden dosya önce indeks bloğuna bakılarak yeri bulunur. Daha sonra dosyaya ulaşılır. 9.3 Dizin Yapısı Bilgisayarlarda kullanılan dosya sistemi oldukça büyük ve karmaşık yapıdadır. Bazı bilgisayarlarda yüzlerce dosya sabit disk üzerinde saklanır. Bu dosyaların iyi bir şekilde yönetilmesi için düzenli bir organizasyona ihtiyaç vardır. Bu organizasyon iki şekilde yapılır. Birincisi sabit diski küçük parçalara bölmek, ikincisi ise dosyaları dizin adı verilen sanal bölgelerde saklamaktır. Dizinler, sahip oldukları dosyaların adlarını, disk üzerindeki yerlerini, boyutunu ve tipini saklarlar. Çeşitli dizin yapıları bulunmaktadır. Bunlar aşağıda açıklanmaktadır. 9.3.1 - Tek Seviyeli Dizinler Tek seviyeli dizinler, en basit dizin yapısıdır. Tüm dosyalar aynı dizin içerisinde bulunur. Bu yapı Şekil 9.2'de gösterilmiştir. Bu dizin yapısında her dosyanın ismi farklı olmak zorundadır. Farklı dizinler içerisinde aynı isimli dosyalar bulunabilir.
Şekil 9.2 Tek seviyeli dizin yapısı. 9.3.2 - İki Seviyeli Dizinler Iki seviyeli dizinlerde her kullanıcı kendi dizinine sahip olabilir. Bu dizinler aynı yapıdadırlar. Fakat içerisindeki dosyalar, dizinin kullanıcıları tarafından oluşturulmuş farklı dosyalardır. Dosyaların isimleri benzerlik gösterebilir. Hatta aynısı olabilir. Fakat kullanıcı dizinleri, diğer bir yaklaşımla aynı düzey seviyesindeki dizinler farklı isimlerde olmalıdır. Bu yapı Şekil 9.3'de görülmektedir. 9.3.3 - Ağaç Yapılı Dizinler Şekil 9.3 İki seviyeli dizin yapısı. Her kullanıcı kendi dizin ve alt dizinlerini tanımlayabilir. Bu tür dizinlerde her dosya kendi konumunu belirleyen bir dizin yoluna sahiptir. Bu yapıda, farklı dizinler içerisinde olmak kaydıyla aynı dosya ve alt dizin isimleri kullanılabilir.aynı düzeydeki dizinlerin isimleri birbirinden farklı olmak zorundadır. Bu yapı Şekil 9.4'de görülmektedir.
Şekil 9.4 Ağaç yapılı dizin yapısı. 9.3.4 - Periyodik Olmayan Grafik Yapılı Dizinler Periyodik olmayan grafik yapılı dizinlerde dosya ve alt dizinler paylaştırılmıştır. Paylaştırılmış olan bu dosya ve dizinler üzerinde aynı anda birden fazla kişi çalışabilir. Aynı zamanda, bu yapılı dizinlerde, paylaştırılmış olan bir dosya başka kopyası oluşturulmadan aynı anda birden fazla dizin içine yerleştirilebilir. Örneğin, Şekil 9.5'de kökte Cenk ve Aslı isiminde iki dizin bulunmaktadır. Bu dizinlerin ikisi de draft adında bir alt dizine sahiptir. Bu alt dizin içinde bulunan A.doc isimli dosya paylaştırılmış bir dosya olup her iki alt dizin içinde de gözükmektedir. Paylaştırılmış olan dosyaya şekilde görülen diğer bir örnek Sim.java dosyasıdır. Bu yapıda alt dizinlerde içindeki dosyalar ile birlikte paylaştırılabilir. Yine Şekil 9.5'deki prog isimli alt dizin paylaştırılmış bir dizindir. UNIX işletim sistemi bu dizin yapısını kullanmaktadır.
Şekil 9.5 Periyodik olmayan grafik yapılı dizin yapısı. 9.3.5 - Grafik Yapılı Dizinler İki seviyeli bir dizin yapısında kullanıcılara kendi alt dizinlerini yaratma yetkisi verilirse, oluşturulan alt dizinlerle beraber ağaç yapılı bir dizin yapısı ortaya çıkar. Aynı durum ağaç yapılı dizinler içinde geçerlidir. Ağaç yapılı dizinler içinde, dizinler arası paylaşım yapılır ya da bağlantılar oluşturulursa ortaya Şekil 9.6'daki dizin yapısı çıkar. Bu yapıdaki dizinlere "grafik yapılı dizinler" denir.
9.4 Dosya Koruma Şekil 9.6 Grafik yapılı dizin yapısı. Bir dosya iki önemli nedenden dolayı korunur. 1. Fiziksel zararlar güvenirlilik (reliability) 2. İzinsiz kullanımlar koruma (protection) Bilgisayar sistemlerinde dosyalar fiziksel zararlara karşı yedeklenerek (back-up) korunur. İzinsiz kullanımlar için gerçekleştirilecek olan koruma, bilgisayar sisteminin büyüklüğüne göre değişir. Küçük ya da tek kullanıcılı sistemlerde koruma disketi bilgisayardan ayırmak ya da bilgisayarı kilitlemekle istenilen koruma gerçekleştirilmiş olur. Büyük boy bilgisayar sistemlerinin bazılarında dosyalara, dosyayı oluşturandan başkası giremez. Bazılarında ise oluşturulan dosyalara herkes girebilir. Bu ikisi de istenmeyen durumlardır. Bu tür sistemlerde esas olan dosyalara kontrollü bir erişimin sağlanmasıdır. Dosya Koruma (file protection) mekanizması kontrollü erişimi sağlar. Bir dosyaya aşağıdaki işlevler için kontrollü bir erişim sağlanabilir: Okuma (read) Yazma (write) Çalıştırma (execute) Ekleme (insert) Silme (delete) Bu işlevlere ek olarak yeniden adlandırma (rename), kopyalama (copy) ya da düzenleme (edit) işlemleri içinde kontrollü erişim sağlanabilir.
9.5 Uyum Semantik Uyum semantik, dosyaların paylaştırıldığı bir dosya sisteminin değerlendirilmesinde kullanılan önemli bir ölçüttür. Bu semantik, paylaştırılmış olan bir dosya üzerinde bir kullanıcı tarafından bir değişiklik yapıldığında, diğer kullanıcını tarafından görülebilmesini belirtir. 9.5.1 UNIX Semantik UNIX sistemi aşağıdaki uyum semantiğini kullanır. Açık olan bir dosya üzerinde bir kullanıcı tarafından değişiklik yapılırsa, değişiklik aynı anda bu dosyayı kullanan diğer kullanıcıya gösterilir. Dosya içindeki aktif bölgeyi gösteren işaretleyicinin paylaştırıldığı bir mod vardır. Bu işaretleyicinin değişmesinden tüm kullanıcılar anında etkilenir. 9.5.2 Oturum Semantik Oturum semantiği aşağıdaki gibi işlem yapar. Açık olan bir dosya üzerinde bir kullanıcı tarafından değişiklik yapılırsa, değişiklik aynı anda bu dosyayı kullanan diğer kullanıcıya gösterilmez. Dosya kapatıldığında, yapılan değişiklikler diğer kullanıcılar için görünür olur. Eğer diğer kullanıcılar bu değişiklikleri görmek isterlerse, o anki açık olan dosyayı kapatmaları ve dosyayı yeniden açmaları gerekmektedir. 9.5.3 Değiştirilemez Paylaştırılmış Dosya Semantik Bir diğer yaklaşımda değiştirilemez paylaştırılmış dosya sistemidir. Bir dosya, kendisini oluşturan tarafından bir kere paylaştırılır ve bir daha değiştirilemez. Değiştirilemez dosyalar iki önemli özelliğe sahiptir. Dosyaların isimleri bir daha kullanılamaz ve içerikleri bir daha değiştirilemez. 10.1 - Koruma 10 - KORUMA ve GÜVENLİK Başlangıç olarak çok-programlı işletim sistemleri için düşünülen koruma (protection) mekanizması, bir bilgisayar sisteminde programlara, işlemlere ve
kullanıcı kaynaklarına erişim kontrolü sağlar. Geniş sistemlerde koruma mekanizmasının gerçekleştirilmesinin başlıca sebeplerini ; Sistem içindeki mevcut kullanıcıların ve misafir kullanıcılarının haklarını belirleme Kötü amaçlı kullanımları engelleme Güvenirliliği arttırmak, şeklinde özetlenebilir. Koruma mekanizmasının üç yönü vardır : Kimlik Kanıtlama (Authentication) : Kimin ne yaptığının bilinmesidir. Yetki Belirleme (Autharization Determination) : Kullanıcının neyi yapıp neyi yapmayacağının bilinmesidir. Bunun için bir veritabanına ihtiyaç vardır. Erişim Engelleme (Access Enforcement): Sistem içerisine yasal olmayan girişlerin engellenmesidir. 10.1.1 - Kimlik Kanıtlama (Authentication) Koruma işlemi, genellikle şifrelerle yapılır. Zayıf bir korunma şeklidir. Şifre, kullanıcı tarafından tanımlanan ve sisteme giriş için kullanılan gizli bir bilgidir. Şifre bazen sistem tarafından da tanımlanabilir. Hatta bazı durumlarda şifrenin bir kısmını kullanıcı tanımlar, bir kısmını da işletim sistemi tanımlar. Şifre bilgisi, işletim sistemi tarafından şifrelenerek saklanır. Kullanıcılar tarafından doğrudan okunur bir bilgi değildir. 10.1.2 - Yetki Belirleme (Autharization Determination) Bilgisayar sistemi, nesneler (objects) ve yetki örgüsünden (domains) oluşur. Nesne (Object): Donanım nesneleri (MİB, bellek bölümleri, yazıcılar, diskler gibi.) ile yazılım nesnelerinin (dosyalar, programlar gibi.) genel adıdır. Her nesne kendini bilgisayar sistemindeki diğer nesnelerden ayırt edecek bir isime sahiptir. İşlevler (operations) nesnelere bağlı olarak tanımlanırlar. Örneğin, MİB nde nesneler sadece işlenir. Ana bellek bölümlerinde (memory segment) nesneler sadece okunur ya da yazılır. Dosyalar oluşturulur, açılır, okunur, yazılır, kapatılır ya da silinir. Programlar okunur, yazılır, çalıştırılır veya silinir.
Yetki Örgüsü (domain): Yetki örgüsü temelde üç kavramı içerir. Yetki örgüsü, kullanıcılar olabilir. Nesne erişimleri, kullanıcı tanımlamasına bağlı olabilir. Yetki örgüsü, işlemler olabilir. Yetki örgüsü, prosedürler olabilir. Yetki Belirleme, satırların yetki örgüsünü, sütunların nesneleri temsil ettiği erişim matris tablosu ile temsil edilir. Genel olarak işlemler kullanmaya yetkili oldukları kaynaklara ulaşabilmelidir. Bununla birlikte, herhangi bir zaman diliminde bir işlem ulaşmaya yetkili olduğu tüm kaynaklar yerine, sadece o anki görevini tamamlamasına yardımcı olacak kaynaklara ulaşmalıdır. Bu durum " ihtiyaç kadar bilmek (need-to-know)" prensibi olarak bilinir. Örneğin, bir k işlemi, T prosedürünü koşturmak istediğinde, T prosedürüne, k işleminin sahip olduğu tüm değer ve değişkenler yerine, T prosedürünün işlemini tamamlamasını sağlayacak olan değişkenlerin ve değerlerin gönderilmesi gibi. 10.1.3 - Erişim Engelleme Bu tür sistemlerde, erişim kontrol bilgileri ile yetki ve tanımlama bilgilerine erişimi engelleyen bir sistem vardır. Böylece sistemin sadece bu bölümü korunur. Korumayı sağlayan bu bölüm güvenlik çekirdeği (security kernel) olarakta isimlendirilir. 10.2 - Erişim Matris Yetki Belirleme için Tablo 10.1 görüldüğü gibi bir erişim matris tablosu hazırlanır. Bu tabloda, genel olarak satırlar yetki örgüsünü, sütunlar da nesneleri temsil eder. Her hücre, bir yetki örgüsünün(domain) bir nesne üzerindeki hakkını gösterir. Örneğin, yetki örgüsünde yer alan D3'ün yetkili olduğu nesneler F2 ve F3 dosyaları ile yazıcıdır. D3 yetki örgüsü, bu nesnelerden F2 dosyası için okuma, F3 dosyası için çalıştırma, yazıcı için de yazdırma yetkilerine sahiptir.
Tablo 10.1 Erişim Matris Tablosu Yetki örgüleri nesneler üzerinde belirli haklara sahip olabildikleri gibi, yetki örgüleri üzerinde de bir takım yetkilere sahip olabilirler. Bu yetkiler "anahtarlama" ya da "kontrol" şeklinde olabilir. Tablo 10.2 yetki örgülerinin hem nesneler hem de diğer yetki örgüleri üzerindeki yetkilerini gösterir. Örneğin D3 yetki örgüsü D4 yetki örgüsünü kontrol yetkisine sahiptir. D4 yetki örgüsü D1 yetki örgüsünün yetkilerini kullanabilecek "anahtarlama" hakkına sahiptir. Tablo 10.2 Yetki örgülerinin nesne olarak yer aldığı erişim matris tablosu
10.2.1 - Evrensel Tablo Erişim matris uygulamasının en basit şekli, ayrıntılı tablo tekniğidir. Bu yöntemde her bilgi < Yetki Örgüsü, Nesne, Kullanıcı Yetkileri > bilgilerinden oluşur. Tüm bilgiler tek bir tablo üzerinde tutulduğu için, bu tablonun boyutu ve hacmi oldukça büyüktür. Tablonun büyük olmasından dolayı ana belleğe sığmayabilir. Bu tablonun yönetiminde sanal bellek teknikleri kullanılır. Bu teknikte karşılaşılan bir diğer zorluk ise, özel grupların oluşturulamamasıdır. Örneğin, bir nesne herkes tarafından okunacaksa bu yetkinin herkesin yetkilerine ayrı ayrı girilmesi gerekir. 10.2.2 - Nesne Erişim Listeleri Her nesne için, hangi yetki örgülerinin, hangi yetkilere sahip olduğunu gösteren listeler hazırlanır. Genel şekli her nesne bir < yetki örgüsü, yetkileri> listesine sahiptir. Erişim listeleri tekniği oldukça basittir ve hemen hemen tüm dosyalama sistemlerinde kullanılır. Örneğin, Tablo 10.3 'de "Tez" dosya nesnesi üzerinde, hangi kullanıcıların ne tür yetkilere sahip olduğuna dair bir liste görülmektedir. Bu listede yer alan kullanıcılar yalnızca kendilerine verilen hakları kullanabilirler. Tablo 10.3 Nesne Erişim Listesi 10.2.3 - Yetki Örgüsü Yetenek Listeleri Her yetki örgüsünün, hangi nesneleri, hangi yetkilerle kullanabileceğini gösteren listeler hazırlanır. Her yetki örgüsü < nesne, yetkileri > ni içeren yetenek listesi adı verilen bir listeye sahiptir. Yetenek örgüsü işlemleri, yetki örgüsü yetenek listesine doğrudan erişemezler. Bu listenin kullanımını işletim sistemi yönetir. Örneğin, Tablo 10.4'de "Ali" isimli yetki örgüsünün, hangi nesneler üzerinde hangi yetkileri olduğu görülmektedir. Tablo 10.4 Yetki Örgüsü Yetenek Listesi
10.2.4 - Kilit-Anahtar Mekanizması Nesne erişim listeleri ile yetki örgüsü yetenek listelerinin birleştirilmesinden oluşturulmuş bir mekanizmadır. Her nesne, kilit diye adlandırılan bir bit örüntü (pattern) listesine sahiptir. Benzer olarakta, her yetki örgüsüde (domain) anahtar diye adlandırılan bir bit örüntü (pattern) listesine sahiptir. Bu teknikte bir işlemin gerçekleştirilebilmesi için, işlemi yapacak olan yetki örgüsü, kullanacağı nesnenin kilidine karşılık gelen anahtara sahip olmalıdır. Bu kilit - anahtar listeleri işletim sistemi tarafından yönetilir ve kullanıcının bu listelere doğrudan ulaşmasına izin verilmez. 10.2.5 - Karşılaştırma Nesne erişim listesi tekniğinde, olağan (default) olarak, herkes için bir nesneye ulaşım hakkı vardır. Yetki örgüsü yetenek listesi tekniğinde ise, olağan olarak kullanıcı yetenek listesinde belirtilen nesneler dışında herhangi bir nesneye ulaşamaz. Kullanıcılara ulaşım yetkileri verilmediği sürece o nesneler kullanılamaz. Bu nedenle, kullanıcı yetenekleri sistem güvenliği (security) içinde kullanılırlar. 10.3 - Güvenlik Koruma (protection), genel olarak, bilgisayar sistemlerinde programlara erişimin ve veri depolama işlemlerinin kontrolünü sağlayan bir iç sistemdir. Bunun yanında bilgisayar sistemine dışarıdan gelebilecek (yetkili olmayan personelin kullanması, disketin başka bir sistemde kullanımı gibi ) çevresel etkilerden de korunması gerekir. Bu tür sorunlar işletim sistemi tarafından çözümlenemezler. İşletim sistemi tarafından karşılaşılabilecek en büyük güvenlik sorunu, yetkili olmayan personelin sistemi kullanmasıdır. İşletim sistemleri bu sorunu kimlik kanıtlama (authentication) tekniği ile çözümlemeye çalışırlar. Bu yöntem üç şekilde gerçekleştirilebilir :
Kullanıcı egemen : Kullanıcı bir tanımlama anahtarına ya da kartına sahiptir. Kullanıcı bilgisi : Kullanıcı kendini tanımlayan bir bilgiye ya da şifreye sahiptir. Kullanıcı özelliği : Kullanıcının parmak izi, göz retinası ya da imzası kullanılır. Bu yöntemler içinde en yaygın olarak kullanılanı, şifre ile kullanıcı tanımlamasının yapılmasıdır. Güvenliğin bu yöntemle sağlandığı bilgisayar sistemlerinde kullanıcı, işletim sistemine daha önceden tanımlanmış, bir şifreye sahiptir. Bu şifreyi yazarak sisteme girer ve o şifre için tanımlanmış olan yetkilere sahip olur. Kullanıcı değişik yetkileri bulunan farklı şifrelere sahip olabilir. Çeşitli şifre oluşturma teknikleri vardır. Bunlardan en genel olanları : Şifrelerin tanımlanması, şifreyi kullanacak olan kullanıcı tarafından yapılır. Bu durumda kullanıcı kendisinin hatırlayabileceği bir bilgiyi şifre olarak seçtiği için bu şifrelerin kırılması oldukça kolaydır. Şifrelerin tanımlanması, işletim sistemi tarafından yapılır. Bu durumda tanımlanan şifrenin kullanıcı tarafından hatırlanması oldukça zor olduğundan bu şifreler bir tarafa yazılarak saklanır. Bu da güvenliği azaltır. Şifrelerin bir bölümünü kullanıcı, diğer bir bölümünü de işletim sistemi tanımlar. Bu durum güvenliği oldukça arttırır. Güvenlik açısından ortaya çıkan bir diğer sorun ise oluşturulan şifrelerin gizliliğinin sağlanmasıdır. Oluşturulan şifreler gizli dosyalarda saklanabileceği gibi; çözümlenmesi zor çeşitli matematiksel fonksiyonlar kullanılarak şifre dosyaları oluşturulup bu şekilde de saklanabilir. Sistem güvenliğinin sağlanması için işletim sistemlerinin kullandığı başka tekniklerde bulunmaktadır. İşlemcik (thread) izleme bunlardan bir tanesidir. Bu tekniğe göre, sisteme giriş yapmak isteyen kullanıcı şifresini yazar eğer girilen şifre doğru ise sisteme giriş yapar. Eğer girilen şifre yanlış ise kullanıcıdan şifresini bir daha girmesi istenir. Yanlış girilmeye devam edilirse, bu kullanıcı ya sisteme hiç giremez ya da misafir kullanıcı olarak sisteme bağlanır. Kullanılan bir diğer teknik ise log dosyalarının tutulmasıdır. Bu dosyalara, zaman, kullanıcı ve yapılan işlem kaydedilir. Eğer bir güvenlik sorunuyla karşılaşılırsa, yapılan işlemler, yapılış zamanı ve kullanıcıları bu dosyalardan tesbit edilebilir.