İŞLETİM SİSTEMLERİ ISE 206 DR. TUĞRUL TAŞCI
Dersin Amacı Bilgisayar sistemlerinin temel organizasyonunu tanımak İşletim sistemlerinin ana bileşenlerini öğrenmek Çeşitli bilgisayar sistemlerini genel özellikleriyle öğrenmek Yaygın olarak kullanılan işletim sistemlerini tanımak
Ders Kapsamı ve İşleyiş Planı Giriş Temel Bilgiler Bilgisayar Sistemi ve İşleyişi İşletim Sistemi Kavramları Proses Yönetimi Proses ve Thread Senkronizasyon CPU Scheduling Deadlock Bellek Yönetimi Ana Bellek Sanal Bellek Depolama Yönetimi Büyük Depolama Yapısı Dosya Sistemi Ara Yüzü Dosya Sistemi İşleyişi Giriş-Çıkış Sistemleri Koruma ve Güvenlik Koruma Güvenlik İleri Konular Sanal Makineler Dağıtık Sistemler Vaka Çalışmaları Linux Windows Tarihi Perspektif
Depolama Aygıtları – Erişim Hızları ve Kapasiteleri Manyetik Disk < 10 TB ns 20 – 150 MB/s Katı Hal (Solid State) Diski < 1 TB – ns 500 MB/s Ana Bellek (RAM) < 64 GB 80 – 250 ns 1000 – 5000 MB/s Tampon Bellek (Cache) < 16 MB 0.5 – 25 ns 5000 – MB/s Register < 1 KB 0.25 – 0.5 ns – MB/s
Program – Proses – Thread Basit bir Thread Örneği Komut İkili (Binary) Onaltılı (Hexadecimal) LOAD a A LOAD b B SUM a,b F STORE a+b C Tanımlar Program Belirli işlemleri yapmak üzere tasarlanmış ve bir depolama biriminde saklanan çalıştırılabilir komut dizisi. Proses Programın ana belleğe yüklenmiş ve işleyen örneği. İlgili aktiviteler: Başlatma, sonlandırma, senkronizasyon, iletişim, sonsuz döngü sonlandırma. Thread Belli bir işi yürütmeyi amaçlayan küçük ölçekli proses.
İşletim Sistemi Nedir? Ne yapar? İşletim sistemi bilgisayar donanımı ile kullanıcı arasındaki etkileşimi sağlayan bir yazılım programıdır. Bilgisayar sistemini kullanıma uygun hale getirir. İşletim sistemi, kullanıcı düzeyindeki yazılım programlarının çalıştırılabilmesi için zemin oluşturur. Bilgisayar donanımının etkin şekilde kullanımını sağlar. İşletim sistemi bir kaynak paylaşımcısıdır. Etkin ve adil kullanım için çakışan kaynak kullanım isteklerini yönetir. İşletim sisteminin iki temel fonksiyonu mevcuttur: Soyutlama (Abstraction) / & Hakemlik (Arbitration)
İşletim Sisteminin Soyutlama & Hakemlik İşlevleri için Örnekler Intel ve AMD işlemcilerini destekleme. (Soyutlama) Uygulamalar arasında geçiş yapma. (Hakemlik) Uygulamalar için ayrılmış belleği paylaştırma. (Hakemlik) Video konferans uygulamasının tanımlı web kameralarını kullanmasını sağlama. (Soyutlama) Farklı sabit disklere erişim sağlama. (Soyutlama) Ağ üzerinden veri/mesaj gönderme ve alma. (Soyutlama & Hakemlik)
Bellek Yönetimi Amaçları ve Bellek Yönetimi Aktiviteleri Bellek organizasyonunun çeşitli yollarını öğrenmek Sayfalama(paging) ve bölümleme(segmentation) gibi bellek yönetim tekniklerini öğrenmek Sanal bellek, proses değiş-tokuşu (swapping), fragmentasyon gibi kavramları öğrenmek Şu anda belleğin hangi kısımlarının, hangi prosesler tarafından kullanıldığını tespit etmek Hangi proseslerin, proses parçalarının (thread) ya da verilerin belleğe yazılması ya da bellekten okunmasına karar vermek Gerekli olan durumlarda bellek ayırmak (allocation) ya da ayrılmış olan belleği geri almak (deallocation)
Komut İşletim Döngüsü (Fetch- Decode-Execute Cycle) ve Temel Kavramlar Komut bellekten getirilir. Komut çözülür, bu diğer ilişkili verilerin bellekten getirilmesini gerektirebilir. Komut işletilir. Bu işlem sonunda sonucun belleğe yazılması gerekebilir. Bellek yönetim birimi yalnızca bellek adreslerini bilir. Bunların hangi işlemler sonucunda oluştuğuyla ilgilenmez. Bellek ve register’lar sadece CPU tarafından doğrudan erişilebilen depolama birimleridir. Bellek adreslerini argüman olarak alan komutlar bulunurken, disk adreslerini alan komutlar bulunmaz. İşlenmesi gereken veri bellekte değil ise, işlenmek üzere belleğe yüklenmesi gerekir.
Bellek Yönetimi Temel Kavramlar İşlemci üzerinde yer alan register’lar genellikle bir saat frekansında CPU tarafından erişilebilir durumda olur.bir saat frekansında Birçok işlemci bir saat frekansında register içeriği üzerinde bir ya da daha fazla basit işlem yapabilir. Register için olan zaman dilimi bellek için geçerli değildir. Bir bellek çevriminin tamamlanması için genellikle birkaç saat frekansının geçmesi gerekir. Bu durumda, komut yürütürken işleyeceği verinin bulunmaması nedeniyle işlemcinin beklemesi gerekir. Bellek erişimi register erişimine göre oldukça yavaş olduğu için bu istenmeyen bir durumdur. Bunun için işlemci ile bellek arasında tampon bellekler (cache) kullanılır. Bellek yönetiminde önemli olan, sadece erişim zamanı değil aynı zamanda, kullanıcı programlarının sistem programları için ya da başka kullanıcı programları için ayrılan belleğe erişmekten korumaktır.
İşlemci Saat Frekansı İşlemci performansı günümüzde çoğunlukla yongalarının (chip) hızı ile verilmektedir. Buna işlemci saat frekansı denir. Teorik olarak saat frekansı büyük olan işlemcinin birim zamanda daha fazla işlem yaptığı söylenebilir. Ancak başka etkenler de vardır. Hz (Hertz) saniyenin tersidir. (1/s) 1 GHz = 10 9 Hz = Hz Örnek : 3.2 GHz Intel Core i5 3.2 GHz işlemci saniyede işlem döngüsüne girebilme kapasitesine sahiptir. Her bir işlem döngüsünde işlemci belli sayıda ( 32 / 64) bit değeri üzerinde değişklik yapabilir.
Bellek Yönetimi Proses Belleği Bellek yönetiminde her proses için ayrı bir bellek bloğu bulunur. Bunun için iki register’a ihtiyaç duyulur. İlgili prosesin bellek bloğunun başlangıç (base) ve bitiş (limit) adresleri bu register’larda tutulur. Kernel modda çalışan İşletim sistemi hem sistem hem de kullanıcı programları için ayrılmış bellek programlarına erişim hakkına sahiptir. Böylelikle bir problem olduğunda, müdahale edebilir durumda olur Limit : Base :
Bellek Adreslem e İşlemcinin ürettiği adresler mantıksal (sanal) adres olarak tanımlanır. Memory Address Register’a yüklenmiş olan adres (bellek biriminin okuduğu adres) ise fiziksel adres olarak tanımlanır. Base register – Relocation register olarak düşünülür. İşlemcinin ürettiği adrese bu değer eklenir ve fiziksel adres hesaplanır. Kullanıcı programı fiziksel adresi bilmez, sadece mantıksal adrese bilir, tüm işlemleri bu adres üzerinden yapar.
Dinamik Yükleme (Dynamic Loading) ve Bağlama (Linking) Dinamik yüklemede, bir alt program gerekli olduğunda yüklenir. Bütün alt programlar diskteki bir tabloda tutulur. Bir alt programa ihtiyaç duyulduğunda, çağrılır ve bellekteki yerleşim değişiklikleri tabloya bakılarak yürütülür. Dinamik yüklemede gerekli olan bellek miktarı fiziksel bellekle sınırlı değildir. Böylelikle bellek yönetiminde etkinlik sağlanır. Dinamik bağlama, sistem kütüphanelerinin çalışma zamanında belleğe yüklenmesi işlemidir.
Process Swapping (Proses Değiş- Tokuşu) Bir prosesin yürütülebilmesi için belleğe yüklenmiş olması gerekir. Bununla birlikte, proses ikincil bir depolama biriminde tutulup, tekrar belleğe yüklenip işletilebilir. Swapping, belleğin yürütülen prosesler için yetmediği zamanlarda kullanılan bir yöntemdir. Yüksek öncelikli prosesler belleğe yüklendiğinde, düşük öncelikli olanlar geçici olarak diske yazılıp, öncekiler sonlandırıldığında tekrar belleğe yüklenip işletilirler. Swapping işleminin dezavantajı, disk erişim hızının belleğe göre oldukça düşük olmasıdır. Eğer çok sayıda swapping işlemi olursa, bu durum kullanıcıya yavaşlama olarak yansır.
Contiguous (Bitişik-düzen Bellek Ayrımı Bellek yönetiminde, sistem proseslerine ve kullanıcı proseslerine ayrılan bellek blokları bulunur. Bitişik düzen bellek ayrımında, kullanıcı prosesleri için bloklar ardışık hücrelerin birleşiminden oluşur. Bitişik düzen bellek ayrımı, etkin bir yöntem değildir. Bu yöntem kullanıldığında, bellekte atıl kapasite oluşurken, bazı prosesler için gerekli alan ayrılamadığından performans problemleri yaşanma olasılığı artar.
Memory Paging (Bellek Sayfalama) Paging, prosesler için ayrılan bloklara ait hücrelerin bitişik olma zorunluluğunu ortadan kaldıran bir yöntemdir. Paging yönteminde, bir sayfa tablosu bulunur. Prosese ait ilgili kısmın adresi bu tabloda tutulur ve bu tablo okunarak erişilir. Sayfalamada bellek erişimi olduğu için hız oldukça önemli bir faktördür. Her işletim sistemi kendi sayfalama yöntemine sahiptir. Performans problemi yaşanmaması açısından, çoğunlukla sayfa bilgilerini tutan özel register’lar kullanılır. Günümüzde kullanılan sistemlerde iki ya da 3 seviyeli sayfalama tabloları kullanılabilmektedir. Mantıksal Bellek Sayfa 0 Sayfa 1 Sayfa 2 Sayfa 3 Sayfa Tablosu Fiziksel Bellek 0 1Sayfa 0 2 3Sayfa 2 4Sayfa Sayfa 3
Bellek Fragmantasyonu (Fragmentation) Bellek üzerinde bulunan ancak bitişik düzende olmayan kullanılabilir boş alanlara (Dış Fragmentasyon) denilir. Bellek üzerinde herhangi bir proses için ayrılmış bellek bloğundaki kullanılmayan boş alan olarak tanımlanır. (İç Fragmentasyon) Prosesler, bellek üzerinde daha büyük boyutlu bloklara taşınarak boş alanlar kullanılabilir hale getirilir. Proses 1 Proses 2 Proses 3 Proses 4 İşletim Sistemi Global Değişkenler Dinamik Değişkenler Metin Kod BellekProses 3
Belllek Bölümleme (Segmentation) Bölümleme (ya da segmentasyon) belleği etkin kullanmak için başvurulan bir yöntemdir. Birçok güncel sistemde bölümleme(segmentation) ve sayfalama(paging) birlikte kullanılmaktadır. Kullanıcı programı, ana program, global değişkenler, metin, dinamik değişkenler gibi mantıksal segmentlere ayrılır. Her bir segmente ait adres ve boyut bilgisi bir tabloda tutulur. Gerektiğinde erişilerek kullanılır. Ortak kullanılan segmentler olabilir. Örneğin, birden çok web sayfası açıldığında metin bilgileri ortak bir segmentten okunarak işlenir. Global Değişkenler Dinamik Değişkenler Metin Kod Proses 3
Bellek Koruma (Memory Protection) Bellek koruma işlemi, yetkili olmayan bir prosesin bir bellek alanına erişmemesini sağlamak için kullanılan yöntemdir. Bellek koruma, genellikle segmentasyon ile birlikte yapılır. Her segmentin adres ve boyutunun tutulduğu tabloda ayrıca o segmente erişimin mümkün olup olmadığı ( valid / invalid), o segmente dair okuma (read), yazma (write), çalıştırma(execute) işleminin yapılıp yapılamayacağı tanımlanır. Eğer, segmentasyon tablosunda tanımlı izinler dışında bir erişim girişimi olduğu taktirde sistem bir hata üretir ve işlemci çalışması sonlandırılır.
Faydalı Bağlantılar Bellek Segmentasyonu Bellek Sayfalama Bellek Yönetimi Sanal Bellek