Bölüm 13: Giriş-Çıkış (I/O) Sistemleri Mehmet Demirci tarafından çevrilmiştir. Silberschatz, Galvin and Gagne 2013
Bölüm 13: Giriş-Çıkış (I/O) Sistemleri Genel bakış I/O donanımı Uygulama I/O arayüzü Çekirdek I/O altsistemi I/O isteklerini donanım işlemlerine dönüştürme STREAMS Performans 13.2 Silberschatz, Galvin and Gagne 2013
Hedefler İşletim sistemindeki I/O altsisteminin yapısı I/O donanımı ve karmaşıklığı I/O donanım ve yazılımının performansını etkileyen unsurlar 13.3 Silberschatz, Galvin and Gagne 2013
Genel Bakış I/O yönetimi, OS tasarımı ve gerçekleştiriminde temel bir bileşendir. Bilgisayar işleyişinde önemli yeri var I/O cihazları çok çeşitli Denetleme yöntemleri çeşitli Performans yönetimi Sık sık yeni türde cihazlar gelir Port (kapı), bus (veriyolu), aygıt denetçileri ile çeşitli aygıtlara bağlantı sağlanır. Device drivers (aygıt sürücüleri) aygıt ayrıntılarını içerir. I/O altsistemine tek tip aygıt erişim arayüzü sunulur. 13.4 Silberschatz, Galvin and Gagne 2013
I/O Donanımı I/O aygıtları çok çeşitlilik gösterir Depolama Aktarım Kullanıcı arayüzü Ortak kavramlar I/O cihazlarından gelen sinyaller bilgisayara arayüzden iletilir. Port Aygıtın bağlantı noktası Bus - daisy chain (papatya zinciri) veya ortak doğrudan erişim PCI bus PC ler ve sunucularda yaygındır, PCI Express (PCIe) Expansion (genişletme) bus daha yavaş cihazları bağlar Denetçi (Controller/host adapter) port, bus ve aygıtı işleten elektronik Entegre veya ayrı devre kartı olabilir İşlemci, mikrokod, özel bellek, bus denetçisi vs. içerir 13.5 Silberschatz, Galvin and Gagne 2013
Tipik PC Bus Yapısı 13.6 Silberschatz, Galvin and Gagne 2013
I/O Donanımı I/O komutları aygıtları kontrol eder Aygıtlarda genellikle registerlar vardır, aygıt sürücüsü bunlara komut, adres, veri yazar. Bunlar ile komuttan sonra okuma veya yazma işlemi yapılır. Data-in (veri giriş) register, data-out (veri çıkış) register, status (durum) register, control (denetleme) register Genellikle 1-4 byte, veya FIFO arabellek Aygıtların adresleri vardır, kullanım alanları: Doğrudan I/O komutları Memory-mapped I/O (belleğe eşlenen I/O) Aygıt verisi ve komut registerları işlemcinin adres alanına eşlenir Özellikle büyük adres alanları için (grafik) 13.7 Silberschatz, Galvin and Gagne 2013
Yoklama (Polling) Her byte I/O için 1. 0 olana kadar meşgul bitini durum registerından oku 2. Host okuma veya yazma bitini 1 yapar, yazma varsa veriyi veri çıkış registerına kopyalar 3. Host komut hazır bitini 1 yapar 4. Denetçi meşgul bitini 1 yapar, aktarımı gerçekleştirir 5. Aktarım bitince denetçi meşgul bitini, hata bitini, komut hazır bitini 0 yapar Adım 1: aygıttan I/O gelmesi için meşgul bekleme (busy-wait) döngüsü Aygıt hızlıysa mantıklı Aygıt yavaşsa verimsiz 13.9 Silberschatz, Galvin and Gagne 2013
Kesmeler Yoklama 3 komut döngüsünde gerçekleştirilebilir Durumu oku, durum bitini mantıksal and ile çıkart, sıfır değilse dallan Sıfır olmaması nadir durumsa daha verimli hale nasıl getirilir? CPU kesme istek hattı (interrupt-request line) I/O cihazı tarafından tetiklenir Her komuttan sonra işlemci tarafından denetlenir Kesme yöneticisi (interrupt handler) kesmeleri alır Kesme vektörü ile kesme doğru yöneticiye sevk edilir Başta ve sonda bağlam değiştirme Önceliğe dayalı Kesme zinciri (interrupt chaining) if more than one device at same interrupt number 13.10 Silberschatz, Galvin and Gagne 2013
Kesmeye Dayalı I/O Döngüsü 13.11 Silberschatz, Galvin and Gagne 2013
Intel Pentium Olay-Vektör Tablosu 13.12 Silberschatz, Galvin and Gagne 2013
Kesmeler Kesme mekanizması istisnalar için de kullanılır Süreci sonlandır, donanım hatası nedeniyle sistemi çökert Bellek erişim hatası olunca sayfa hatası gerçekleşir Trap sonucu çekirdek tetiklenir ve sistem çağrısı yürütülür Çok işlemcili sistemler kesmeleri eşzamanlı yönetebilir Sık, hassas zamanlama => hızlı olmalı 13.13 Silberschatz, Galvin and Gagne 2013
Doğrudan Bellek Erişimi Büyük veri aktarımı için faydalı DMA denetçisi gerektirir CPU yu atlayarak I/O aygıtı ile bellek arasında veri aktarımı OS, DMA komut bloğunu belleğe yazar Kaynak ve varış adresleri Okuma veya yazma modu Byte sayısı DMA denetçisine komut bloğunun yerini bildirir DMA denetçisi bus ı CPU dan alır Cycle stealing (döngü çalma) olur ama yine de daha verimli İşi bitince kesme üretir 13.14 Silberschatz, Galvin and Gagne 2013
DMA içi Altı Adımlı Süreç 13.15 Silberschatz, Galvin and Gagne 2013
Uygulama I/O Arayüzü I/O sistem çağrıları aygıt davranışlarını genel sınıflarla tanımlar Aygıt sürücüsü I/O denetçileri arasındaki farkları çekirdekten gizler Yeni aygıtlar hazır protokolleri kullanırsa fazladan iş çıkmaz Her OS kendi I/O altsistem ve aygıt sürücüsü yapısına sahiptir 13.16 Silberschatz, Galvin and Gagne 2013
Çekirdek I/O Yapısı 13.17 Silberschatz, Galvin and Gagne 2013
I/O Aygıtlarının Özellikleri 13.18 Silberschatz, Galvin and Gagne 2013
I/O Aygıtlarının Özellikleri I/O aygıtları kabaca şu sınıflara ayrılabilir Blok I/O Karakter I/O (Stream - akış) Belleğe eşlenen dosya erişimi Ağ soketleri I/O aygıtına özgü özellikleri kullanmak için arka kapılar bulunur Unix ioctl() çağrısı aygıtın denetleme registerına bitler ve veri registerına veri gönderir 13.19 Silberschatz, Galvin and Gagne 2013
Blok ve Karakter Aygıtları Disk drives Okuma, yazma, arama komutları Raw I/O, direct I/O, veya dosya sistemi erişimi Belleğe eşlenen dosya erişimi mümkün DMA Karakter aygıtları: klavye, fare, seri portlar get(), put() komutları Kütüphanelerle satır düzenleme 13.20 Silberschatz, Galvin and Gagne 2013
Ağ Aygıtları Linux, Unix, Windows içinde socket arayüzü vardır Ağ protokolünü ağ işletiminden ayırır select() işlevi barındırır Farklı yaklaşımlar (borular, FIFO lar, akışlar, kuyruklar, mesaj kutuları) 13.21 Silberschatz, Galvin and Gagne 2013
Saatler ve Zamanlayıcılar Şimdiki zaman, geçen zaman Normal çözünürlük saniyenin 1/60 ı civarında Programmable interval timer (programlanabilir aralık zamanlayıcı) kullanılır, periyodik kesmeler gelir ioctl() (UNIX) 13.22 Silberschatz, Galvin and Gagne 2013
Engellemeyen ve Asenkron I/O Blocking (engelleyen) - I/O bitene kadar süreç askıda Kullanımı ve anlaması kolay Bazen yetersiz Nonblocking (engellemeyen) - I/O çağrısı hızlı döner Kullanıcı arayüzü, veri kopyalama Çok threadli yapı kullanılır Okunan veya yazılan byte sayısını hızlıca döndürür select() ile verinin hazır olup olmadığı anlaşılır, sonra aktarım için read() veya write() Asynchronous (asenkron) - I/O yürütülürken süreç de çalışır Kullanımı zor I/O altsistemi I/O bitince sürece sinyal verir 13.23 Silberschatz, Galvin and Gagne 2013
İki I/O Yöntemi Synchronous Asynchronous 13.24 Silberschatz, Galvin and Gagne 2013
Vektörlü I/O Vektörlü I/O tek sistem çağrısının birkaç I/O işlemi yapmasına izin verir Unix readve()çağrısı okuma-yazma yapacak birden fazla arabellek alır Bu yöntem birden fazla tekli I/O çağrısından daha iyidir Bağlam değiştirme ve sistem çağrısı yükünü azaltır Bazı versiyonlar atomiklik sağlar 13.25 Silberschatz, Galvin and Gagne 2013
Çekirdek I/O Altsistemi Planlama I/O istek sıralamada cihaza özel kuyruk Bazı OS ler adil paylaşım algoritmaları kullanır Bazılarında Quality Of Service (hizmet kalitesi) (örn. IPQOS) Buffering cihazlar arasında aktarım sırasında veriyi bellekte tutma Aygıt hızları, aktarım boyutları arasında dengesizliğe karşı çözüm Çift buffering verinin iki kopyası Çekirdek ve kullanıcı Copy-on-write bazı durumlarda verimlilik için kullanılır 13.26 Silberschatz, Galvin and Gagne 2013
Aygıt Durum Tablosu 13.27 Silberschatz, Galvin and Gagne 2013
Çekirdek I/O Altsistemi Caching verinin kopyasının daha hızlı aygıtta tutulması Sadece bir kopyadır Performans için önemli Buffering ile birleştirilebilir Spooling (bekletme) aygıt için çıktı tutma Eğer aygıt sadece tek isteğe hizmet verebiliyorsa örn. yazdırma işlemi Aygıt rezervasyonu aygıta tek yerden erişim Atama ve atamayı kaldırma için sistem çağrıları Kilitlenmeye dikkat 13.29 Silberschatz, Galvin and Gagne 2013
I/O Koruma Kullanıcı süreci hatayla veya kasten normal işletimi bozmak için geçersiz I/O komutları gönderebilir. Bütün I/O komutları ayrıcalıklı olarak tanımlanmıştır. I/O sistem çağrılarıyla yapılmalıdır. 13.30 Silberschatz, Galvin and Gagne 2013
I/O için Sistem Çağrısı Kullanımı 13.31 Silberschatz, Galvin and Gagne 2013
Bölüm 13 Sonu Silberschatz, Galvin and Gagne 2013