Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
Giriş/Çıkış Yönetimi İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
2
G/Ç yönetimi İşletim sisteminin tasarımı ve faaliyetinin önemli bir bileşenidir. G/Ç aygıtları çok çeşitlidir. Bunları denetlemek için değişik yöntemler vardır. Ayrıca yeni tür aygıtlara da uyumluluk gerekir. Aygıtlar portlar, veri yolları, aygıt denetleyicilerle bağlanırlar. Aygıt sürücüleri aygıt detaylarını kapsüller. G/Ç altsistemine tekdüze erişim arayüzü sağlarlar. Sürücü olmadan bir aygıtın çoğu özelliğini kullanamayabiliriniz.
3
G/Ç Aygıtlarının Sınıflandırılması
Blok aygıtları Bilgi sabit boyutlu bloklarda saklanır. Blok boyutları bayt aralığında değişebilir. G/Ç, blokları okuyarak/bloklara yazarak yapılır. Sabit diskler (HDD-SSD), CD/DVD ROM’lar, USB flash diskler bu kategoridedir. Karakter aygıtları G/Ç, karakterler şeklinde yapılır, bloklar yoktur. Terminaller, yazıcılar, fare, joystick, çizim tabletleri bu kategoridedir.
4
Bazı Aygıtlar ve Veri Aktarım Oranları
5
Tipik bir PC Veri Yolu Yapısı
6
Aygıt Denetleyicileri
Şu işleri yapan elektronik kart (PC) veya birimlerdir (anaçatı sistemler). Seri bit akımından gelen verileri bloklama Disk kolunu hareket ettirme, CRT tüplerini yürütme vb. durumlar için analog sinyal oluşturma G/Ç komutlarını yerini getirme Disk CPU Bellek Denetleyici Denetleyici Denetleyici Sistem veri yolu Ana Kart
7
Programlanmış G/Ç İşlemci bir süreç adına bir G/Ç modülüne bir G/Ç komutu gönderir. Süreç devam etmeden önce işlemin tamamlanmasını meşgulde bekler. (busy waiting)
8
Kesme Güdümlü G/Ç İşlemci bir süreç adına G/Ç komutu gönderir.
Süreç askıya alınır ve G/Ç başlar. İşlemci bu arada başka bir süreç çalıştırabilir. Denetleyici sürücüden seri olarak bir bloğu denetleyicinin dahili tamponuna bit bit okur. Okuma hatası olmadığını doğrulamak için checksum hesaplanır. G/Ç bittiğinde, işlemciye G/Ç bitişini bildiren bir kesme gönderilir. İşletim sistemi denetleyicinin tamponunu bellek tamponuna bir anda bir bayt veya kelime olarak okur.
9
Doğrudan Bellek Erişimi (Direct Memory Access – DMA)
Bir G/Ç aygıtının belleğe doğrudan erişimine imkan vermektir. DMA modülü de G/Ç aygıtı ve ana bellek arasındaki veri değiş-tokuşunu denetler. İşlemci bir veri bloğunun aktarımı için DMA modülüne bir istek (blok adresi, bellek adresi ve aktarılacak bayt sayısı) gönderir ve kendi işine bakar. Bütün blok aktarıldığında DMA modülü işlemciye kesme gönderir. İşletim sistemi devraldığında disk bloğunu belleğe kopyalaması gerekmez, zaten belleğe aktarılmıştır. DMA birimi veriyi doğrudan bellekten G/Ç aygıtına aktarabilir. DMA biriminin işi bitene kadar işlemciye veri yolunu kullandırtmamasına çevrim çalma (cycle stealing) denir. Talimat yürütme çevrimi kesilmez, askıya alınır.
10
Doğrudan Bellek Erişimi
DMA daha az sayıda kesme içerir. (genelde doğrulama için 1 kez) Eğer aygıtın hiç dahili tamponu yoksa kesme güdümlü G/Ç her karakter için bir kesmeye ihtiyaç duyabilir.
11
G/Ç Donanımı Aygıtlar G/Ç talimatlarıyla yönetilir.
Aygıtların genelde aygıt sürücüsünün komutları, adresleri, yazılacak veya okunacak verileri yerleştirdiği yazmaçları vardır. Gelen veri (data-in), giden veri (data-out), durum ve denetim yazmaçları Aygıtların doğrudan G/Ç talimatları ve bellek eşlenmiş G/Ç tarafından kullanılan adresleri vardır. Aygıt verileri ve komut yazmaçları işlemcinin adres uzayına eşlenmiştir. Bu eşleme bilhassa geniş adres uzayları içindir. (grafik içeren uygulamalar)
12
Aygıt G/Ç Bağlantı Noktası Konumları
G/Ç Adres Menzili (Onaltılık) Aygıt 000 – 00F DMA denetleyici 020 – 021 Kesme denetleyici 040 – 043 Zamanlayıcı (timer) 200 – 20F Oyun denetleyici (joystick vb.) 2F8 – 2FF Seri bağlantı noktası (ikincil) 320 – 32F Hard disk denetleyici 378 – 37F Paralel bağlantı noktası 3D0 – 3DF Grafik denetleyici 3F0 – 3F7 Disket sürücü denetleyici 3F8 – 3FF Seri bağlantı noktası (birincil)
13
Uygulama G/Ç Arayüzü G/Ç sistem çağrıları genel (generic) sınıflardaki aygıt davranışlarını kapsüllerler. Aygıt-sürücü katmanı çekirdekle G/Ç denetleyicileri arasındaki farkı gizler. Yeni aygıtlar zaten kodlanmış protokollerle iletişim kurar. Her İS kendi G/Ç alt sistem yapısı ve aygıt sürücü çerçeve yapısına (framework) sahiptir.
14
Bir Çekirdek (Kernel) G/Ç Yapısı
15
Saat ve Zamanlayıcılar
O anki zamanı, geçen zamanı ve zamanlayıcı sağlarlar. Normal hassasiyeti saniyenin yaklaşık 1/60’ ı kadardır. Bazı sistemlerde yüksek hassasiyetli zamanlayıcılar bulunur. Zamanlama ve periyodik kesmeler için programlanabilir aralık zamanlayıcı kullanılır.
16
Vektörlü G/Ç Bir sistem çağrısının çok sayıda G/Ç işlemi yapmasını sağlar. Dağıt – topla mantığıyla çalışan bu yöntem, çok sayıda bireysel G/Ç çağrısından daha iyidir. Değişme (context switching) ve sistem çağrısı ek iş yükünü azaltır. Bazıları atomiktir, okuma/yazma olurken çok sayıda ipliğin verileri değiştirmesinin önlenmesi gibi.
17
Çekirdek G/Ç Alt Sistemi
Zamanlama: Bazı G/Ç aygıt başına kuyruklu sıralama ister. Bazı işletim sistemleri adil davranmaya çalışırken bazıları hizmet kalitesi (Quality of Service) geliştirir. Tamponlama: Aygıtlar arası aktarımda veriyi bellekte saklamaktır. Aygıt hızının ve aktarım boyutunun tutarsızlığıyla başa çıkma ve kopyalama semantiğini muhafaza etme amaçlanır. Çift tamponlamada verinin iki kopyası vardır. Önbellekleme: Aygıtın verinin bir kopyasına sahip olduğu, başarımı arttıran ve hızlı çalışan bir yapıdır. Bazen tamponlama ile birlikte kullanılır. Kuyruklama (Spooling): Eğer aygıt bir anda sadece bir isteğe hizmet ediyorsa aygıtın çıktısını bekletir. (Yazdırma) Aygıt rezervasyonu: Bir aygıta ayrıcalıklı erişim sağlar. Tahsis ve tahsisin bitişi için sistem çağrıları kullanılır. Ölümcül kilitlenme riski söz konusudur.
18
Hata Yönetimi ve G/Ç Koruması
İşletim sistemi disk okuma, aygıtın müsait olmaması, geçici yazma başarısızlıkları gibi olumsuzluklardan geri dönebilir. İşlemin tekrarlanması gibi Bazı sistemlerde hata sıklıkları kaydedilir, yeniden denemelerle artan hata sıklığındaki aygıtların kullanımı durdurulur. Bir G/Ç isteği başarısız olduğunda bir hata numarası veya kodu dönmelidir. Sistem hata kayıtları problem raporlarını içerir. Bütün G/Ç talimatları imtiyazlı olarak tanımlandığından kullanıcı süreçleri geçersiz G/Ç talimatlarıyla kazara veya kasten normal işleyişi bozmaya çalışabilir. Bu yüzden G/Ç sistem çağrıları üzerinden yapılmalıdır. Bellek eşlenmiş ve G/Ç bağlantı noktası konumları da korunmalıdır.
19
Güç Yönetimi G/Ç alanına çok girmese de alakası çoktur.
Bilgisayarlar ve aygıtlar elektrik kullandıklarından ısı üretirler ve sıklıkla soğutulmaları gerekir. İşletim sistemleri güç kullanımını yönetip geliştirebilir. Bulut hesaplama ortamları sunucular arasında sanal makineleri taşıdığından başarısız güç yönetimi bütün sistemlerin tahliyesine ve kapanmalarına yol açabilir. Mobil sistemlerde güç yönetimi işletim sisteminin öncelikli meselelerindedir.
20
Güç Yönetimi Mesela Android bileşen seviyesinde güç yönetimi sağlar.
Bileşenler arasındaki ilişkileri anlar, fiziksel aygıt topolojisini gösteren aygıt ağacı oluşturur. Aygıt sürücüsü aygıtın kullanımda olup olmadığını takip eder. Kullanılmayan bileşen kapatılır. Ağaç dalındaki bütün aygıtlar kullanılmıyorsa dal toptan kapatılır. Aygıtın uyumasını engelleyen uyandırma kilitleri vardır. Aygıtı çok derin bir uykuya yatıran güç çökmesi de kullanılır. Bir aygıt bu durumdaysa sadece harici bir etmene (düğmeye basma, gelen çağrı vb.) cevap verecek kadar uyandırılır.
21
Başarımı Geliştirme G/Ç sistemin başarımında ilk planda yer alır. Aygıt sürücüsünü çalıştırma için işlemci talebi, çekirdek G/Ç kodu, kesme nedeniyle iş değişimi, veri kopyalama başarımı doğrudan etkiler. Ağ trafiği de ayrıca uğraştırıcıdır. Başarımı arttırmak için iş değişimi, veri kopyalama ve kesmeler azaltılmalıdır. Geniş aktarımlar, akıllı denetleyiciler, akıllı donanım aygıtları, DMA ile sağlanabilir. En yüksek iş hacmi için işlemci, bellek, veri yolu ve G/Ç başarımı dengelenmelidir. Kullanıcı modu süreçler çekirdek ipliklerine taşınabilir.
22
Aygıt Durum Tablosu Örneği
23
Kullanıcı uzayı yazılımı
G/Ç Yazılımı Yapısı Donanım Kesme işleyicler Aygıt sürücüleri Aygıttan bağımsız yazılım Kullanıcı uzayı yazılımı G/Ç isteği G/Ç cevabı G/Ç sistem çağrıları (kütüphane) Adlandırma, koruma, bloklama, tamponlama, tahsis Aygıt yazmaçlarını ayarla; durumu kontrol et G/Ç tamamlandığında sürücüyü uyandır. G/Ç işlemini yap
24
Kullanıcı Uzayı G/Ç Yazılımı
G/Ç prosedürlerinin (sistem çağrıları gibi) kütüphanesi şeklindedir. Okunan baytlar = read(dosya tanımlayıcı, tampon, okunacak baytlar) Kuyruklama (spooling) ile sanal G/Ç aygıtları oluşturulabilir.
25
Aygıttan Bağımsız G/Ç Yazılımı
Farklı aygıt sürücüleri için tekdüze bir arayüz tanımlanabilir. Aygıt isimlendirme: Belli aygıt sürücülerine sembolik aygıt isimleri eşlemektir. Çok kullanıcılı bir sistemde bütün kullanıcıların bütün G/Ç aygıtlarına erişimine izin vermeyerek aygıtı korumanız gerekir. Farklı aygıtlar için fiziksel blok boyutları farklılık gösterir, bu yüzden aygıttan bağımsız blok boyutu için aynı mantıksal blok boyutu verilir. Disk gibi blok aygıtlarında yer tahsisi Çoğu işletim sistemi bu kapsamda CD/DVD ROM, flash disk gibi atanmış aygıtları tahsis etme ve serbest bırakabilmektedir. Bozuk bir bloğa rastlandığında sürücü G/Ç isteğini defalarca tekrarlar ve eğer veri alınamazsa bir hata mesajı gönderir.
26
Aygıt Sürücüleri Genelde aygıt veya aygıt sınıfı başına bir sürücü tanımlıdır. Aygıt sürücüleri G/Ç komutlarını yürütür, G/Ç aygıtının durumunu kontrol eder (yazıcıda kağıt var mı, toner/mürekkep bitti mi vb.) ve G/Ç isteklerini kuyruğa alır.
27
Kesme İşleyicileri (Interrupt Handlers)
Bir G/Ç yerine getirildiğinde G/Ç bitene kadar süreç askıya alınır. G/Ç bittiğinde donanım bir kesmeye yol açar ve yürütme özel bir rutine (kesme işleyiciye) yönlendirilir. Kesme işleyici üst katmanlara bunu geçmek üzere aygıt sürücüsüne bildirir.
28
Denetim Akışı Bilgisayarın açılmasından itibaren işlemciler aynı işi yapar, bir anda bir talimat olmak üzere bir talimatlar dizisini yorumlar/çalıştırır. Bu diziye işlemcinin denetim akışı (control flow) denir. Fiziksel denetim akışı <başlangıç> inst1 inst2 inst3 … instn <kapanış> Zaman
29
Denetim Akışını Değiştirme
Denetim akışını değiştirmek için atlamalar ve dallar, çağırma ve dönme program durumundaki değişimlere karşılık verilir. Kullanışlı bir sistem için bunlar yetersiz kalır zira sistem durumundaki disk veya ağdan veri gelmesi, sıfıra bölme talimatı, kullanıcının klavyeden Ctrl+C’ ye basması, sistem zamanlayıcının süresinin dolması tarzı değişikliklere bu mekanizmalarla karşılık vermek zordur. Bu yüzden istisnai (exceptional) denetim akışı sağlayan mekanizmalar gerekir.
30
İstisnai Denetim Akışı
Bir bilgisayar sisteminin bütün seviyelerinde yer alır. İstisnalar (exceptions) düşük seviyededir ve bir sistem olayına karşılık olarak denetim akışında değişime neden olur. Donanım ve İS yazılımının birleşimi ile tanımlanır. Süreç değişimi yüksek seviyededir, İS yazılımı ve donanım zamanlayıcıyla birlikte tanımlanır. Sinyaller yüksek seviyededir ve İS yazılımı tarafından tanımlanır. Yerel olmayan atlamalar yüksek seviyededir, setjmp() ve longjmp() C çalışma zamanı kütüphanesi tarafından tanımlanır.
31
İstisnalar (Exceptions)
Bir olaya (işlemci durumu değişikliği vb.) karşılık olarak denetimin işletim sistemi çekirdeğine verilmesidir. Sıfıra bölme, aritmetik taşma (overflow), sayfa hatası, G/Ç isteğinin tamamlanması, bellek erişim ihlali (NullReferenceException) Kullanıcı kodu Çekirdek kodu Olay İstisna I_current I_next İstisna işleyici tarafından istisna işlenir. I_current ’ a dön I_next’ e dön Çık
32
İstisna Tabloları Her olay türünün kendine ait bir istisna numarası vardır. Bu numara istisna tablosunun indeks değeridir. (kesme vektörü de denir) Her k türünden bir istisna olduğunda, k işleyicisi (handler)çağırılır. İstisna numaraları 0. istisna işleyicinin kodu İstisna Tablosu 1. istisna işleyicinin kodu 1 2. istisna işleyicinin kodu 2 ... n-1 ... n-1. istisna işleyicinin kodu
33
Asenkron İstisnalar (Kesmeler)
İşlemcinin haricinde olan olaylar yüzünden olur. İşlemcinin kesme pini ayarlanarak belirtilir. İşleyici (handler) «sonraki» talimata döner. Zamanlayıcı (timer) kesmesi: Milisaniye mertebesinde, harici bir zamanlayıcı çipi kesme tetikler. Bu sayede çekirdek kullanıcı programlarından denetimi geri alır. Harici aygıttan gelen G/Ç kesmesi: Klavyeden Ctrl+C’ ye basmak, ağdan/diskten bir paketin/verinin gelmesi vb. durumlarda olur.
34
Senkronize İstisnalar
Bir talimatı yürütme sonucunda oluşan olaylar sebep olur. Tuzaklar: Kastidir, sistem çağrıları, durma noktası, özel talimatlar bu türdendir. Denetimi «sonraki» talimata devreder. Hatalar: Kasti değildir ama geri dönülmesi muhtemeldir. Sayfa hatalarından dönülebilmekle birlikte koruma hatalarından dönülemez. Ondalıklı sayı istisnaları da bu türdendir. Hata veren talimat ya tekrar çalıştırılır veya çıkılır. Çıkışlar (Abort): Kasti değildir ve geri dönüşü yoktur. Geçersiz işlem, parite hatası, makine denetimi bu türdendir. Mevcut programdan çıkmak dışında bir seçenek yoktur.
35
Sayfa Hatası Örneği Kullanıcı bellek konumuna yazmak ister, bellek sayfası disktedir. int a[1000]; main () { a[500] = 13; } 80483b7: c d d movl $0xd,0x8049d10 Kullanıcı kodu Çekirdek kodu İstisna: sayfa hatası movl Diskten belleğe sayfa kopyala Dön ve movl’ yi yeniden çalıştır
36
Geçersiz Bellek Referansı Hatası Örneği
Kullanıcı tahsis edilmemiş belleğe erişmeye kalkar. Sürece SIGSEGV sinyali gönderilir ve süreç «bölütleme hatası» ile çıkar. int a[1000]; main () { a[5000] = 13; } 80483b7: c e d movl $0xd,0x804e360 Kullanıcı kodu Çekirdek kodu İstisna: sayfa hatası movl Geçersiz adresi teşhis et Sürece sinyal gönder
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.