Giriş/Çıkış Sistemi Giriş/Çıkış Sistemi Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Giriş/Çıkış (G/Ç) birimleri, verilerin, kullanıcı ile bilgisayar ortamı arasında aktarılmasına ya da bu ortamda saklanmasına yarayan birimlere verilen genel addır. Veri aktarım Veri saklama İşletim sistemleri, veri aktarım amaçlı G/Ç işlemlerini kütük kavramı ile özdeşleştirirler. Veri saklama işlemleri kütük yönetim sisteminin, G/Ç sistemini bir alt katman olarak kullanması sayesinde gerçekleştirilir. 2 Giriş/Çıkış Birimlerinin Konumu Giriş/Çıkış Sistemi İşletim sistemi, sürücülerde yapılan işlemlere doğrudan müdahale etmez. G/Ç programlama, arabirim programlama olarak algılanmalıdır. G/Ç programlamada genel olarak 3 yaklaşım vardır: Seçmeli G/Ç programlama Kesilmeli G/Ç programlama Doğrudan Bellek Erişim düzeneği ile programlama 3 4 Sürücü-Arabirim Bağlantısı Ardıl (Serial) ve Koşut (Parallel) Bağlantı Sürücü-arabirim arası bağlantılar veriyi damga tabanında aktarırlar. Sürücüler arabirimden uzakta olabilir. Bu uzaklık, arabirim-sürücü arası bağlantı türünün izin verdiği en büyük uzaklığı geçemez. Bağlantı türünü, Maliyet Verilerin sürücüde saklanış biçimi belirler. 5 6
Ardıl Bağlantı Biçimleri Zamanuyumsuz ardıl iletişimde aktarılan damga bitlerinin başına ve sonuna başlama (start) ve durma (stop) bitleri eklenir. Zamanuyumlu ardıl iletişimde ise, gönderici ve alıcı birimlerin birbirleriyle sürekli zamanuyumlu kalmalarını sağlayan ve damgalar arasında gerektikçe iletilen, özel zamanuyumlama damgaları (SYNC) kullanılır. Tek/Çift Yönlü İletişim İki birim arasında yapılan iletişim, hep göndericiden alıcıya doğru gerçekleşirse yapılan iletişime tek yönlü (simplex) iletişim denir. Örnek: Radyo iletişimi İletişim her iki yönde de olabiliyorsa çift yönlü (duplex) iletişim denir. Tam Çift Yönlü (full duplex) Örnek: Telefon konuşması, terminal arabirimi Yarı Çift Yönlü (half duplex) Örnek: Telsiz konuşması 7 8 Arabirim/Sürücü Arası Bağlantı Standartları G/Ç sürücüsü ile arabirimin, her ikisi de aynı firma tarafından üretiliyorsa, genelde aralarındaki bağlantı biçimi ile iletişim protokolu da bu firmaya özel olmaktadır. Fakat farklı firmalar tarafından üretilen ürünler arasında standart bağlantılar geliştirmek gereklidir. Bu standartlar bağlantının ayrıntılarını tanımlamalıdır. Bağlantının (ardıl, koşut gibi) türü, Bağlantı ucu, kablo gibi fiziksel bağlantı öğelerinin özellikleri, İletilen bitleri simgeleyen elektriksel imlerin gerilim, akım düzeylerini, İletişim akışının denetlenmesinde kullanılan protokolu ayrıntıları. Giriş/Çıkış Arabirimi Görünümü Arabirimler güdüm yazmaçları aracılığıyla programlanabilen anlayışlı birimlerdir. Durum yazmaçları, arabirim tarafından yürütülen aktarım işlem akışının ve sonuçlarının izlendiği yazmaçlardır. 9 10 Giriş/Çıkış Arabirimi Kullanımı Verilerin ana bellekten arabirim yastığına (yazma) ya da arabirim yastığından ana belleğe (okuma) taşınması, G/Ç yordamlarının denetiminde gerçekleşir. Verilerin arabirim ile sürücüler arasında aktarımı ise, arabirim tarafından, kendiliğinden yerine getirilir. Örnek: Terminal ekranından bir karakter görüntülenmek istendiğinde, karakter kodunun terminal arabirimi çıkış yastığına yazılması yeterlidir. Arabirim yastığına yazılan damganın ekrana aktarılması (görüntülenmesi), arabirim tarafından kendiliğinden gerçekleştirilir. Güdüm, Durum Yazmaçları Arabirim üstünde yer alan güdüm yazmaç(lar)ı: Arabirimin yerine getirebildiği bir dizi işlev arasından birinin seçilmesi, Sürücü üzerinde yerine getirilmesi istenen işlemlerin arabirime bildirilmesi amacıyla kullanılır. Durum yazmaçları, güdüm yazmaçları ile belirtilen işlemlerin akış ve sonuçlarına, işlem hatalarına ilişkin bilgilerin tutulduğu yazmaçlardır. Örnek: Sabit diskte ize gitme ve okuma/yazma işlemlerinin sonuçları durum yazmacında görünür. 11 12
Güdüm,Durum Yazmaçları Yazmaç ve yastıkların herbirinin, genelde ana bellek adres evreninin dışında, G/Ç adres evreni olarak adlandırılan adres evreni içinde bir adresleri (kimlikleri) bulunur. Arabirim yazmaç ve yastıklarının herbiri G/Ç kapısı (I/O port) olarak adlandırılır. Eğer bir sürücüye, bir seferde: bir damga aktarılabiliyorsa bu sürücüyle ilgili G/Ç birimine damga tabanlı; en az bir öbek aktarılabiliyorsa bu sürücüyle ilgili G/Ç birimine öbek tabanlı G/Ç birimi denmektedir. G/Ç Yastıkları Damga tabanlı bir G/Ç arabirimi düzeyinde en az bir damgalık, öbek tabanlı bir arabirim düzeyinde ise, en az bir öbeklik G/Ç yastığı bulunur. Bu yastıklar özellikle sabit disklerde bulunan ön bellek (cache) ile karıştırılmamalıdır. Ön bellek aktarım işlemlerini hızlandırmak amacıyla kullanılır. 13 14 Terminal Arabirimi Terminal Arabiriminde Ekrandan Görüntüleme ascii kodlu bir damganın, terminal ekranından görüntülenebilmesi için: Arabirim Güdüm yazmacına, terminal sürücü ile; 7 bit damga boyu, bir stop bit, çift eşlik sayısı ve 9600 bps hızında iletişim kurmayı sağlayan; gönderme ve alma işlemlerine arabirimi açan (10000111) değerinin yazılması, TR durum bitiyle, arabirimin gönderime hazır olduğunu sınayıp, sözkonusu damga kodunu arabirim Çıkış yastığına yazmak gereklidir. 15 16 Disket Arabirimi Disket Sürücüden Okuma 17 Disket sürücü üzerinde n inci izdeki m kimlikli, 512 byte lık bir öbeğin ana belleğe aktarılabilmesi için: 1. Arabirim İz Kimliği yazmacı içine (n) değerinin yazılması, 2. Sektör Kimliği yazmacının içine (m) değerinin yazılması, 3. Güdüm yazmacının içine okuma-yazma kafasının n inci ize götürecek güdümün (01100001 değerinin) yazılması, 4. SC durum biti aracılığıyla kafanın ize gittiğinin algılanması, 5. Güdüm yazmacının içine okuma işlemini başlatacak güdümün (10100001 değerinin) yazılması, 6. RDY durum bitinin kurulmasıyla, sürücüden okunan sektörün ilk damganın G/Ç yastığına aktarılması 7. G/Ç yastığındaki damganın okunması ile sonraki damganın G/Ç yastığına aktarma işlemine başlanması, 8. 6 ve 7 adımdaki işlemlerin, sektörün diğer baytları için de (512 kez) yinelenmesi gereklidir. 18
Seçmeli G/Ç Programlama Seçmeli G/Ç programlamanın temel ilkesi, aktarım yapılan birimin, istenen işlem gerçekleşene, ya da aranan koşul oluşana değin sürekli sınanmasıdır. Sürücü yordamı, işlem akışını şöyle yönetir: G/Ç arabirim durum yazmacının içeriği, bir AİB yazmacına okunur. AİB yazmacındaki değer üzerinde ilgili durum biti sınanır. İlgili durum biti kurulu ise, gerekli işlemler yapılır. İlgili bitin kurulu olmadığı durumlarda ise durum yazmacı yeniden okunarak sınama işlemleri sürdürülür. Birden Fazla Arabirimle Seçmeli G/Ç Programlama G/Ç birimlerinin birden çok olduğu durumlarda, tüm arabirimlerin durum yazmaçları sırayla okunur. Hazır durumda olanların gerektirdikleri hizmetler (hizmet yordamlarına sapılarak) sağlanır. Arabirimlerin durum yazmaçlarının sırayla sınanması arabirimlerin taranması olarak adlandırılır. İki ya da daha çok G/Ç biriminin aynı anda hizmet istemleri söz konusu olduğunda, hangi birime daha önce hizmet verileceği sorunu ortaya çıkar. G/Ç birimleri arasında bir öncelik sıralaması gerekir. 19 20 Seçmeli G/Ç Programlamada Öncelik Sıralaması Seçmeli G/Ç Programlama Sorunları Seçmeli G/Ç programlama yönteminde, rasgele gelişen olayları izlemek için arabirim durum yazmaç bitlerini sürekli sınamak gerekmektedir. Örnek: Terminal arabiriminde, girilen bir damganın arabirimden sürücüye ulaşmasının yaklaşık 1 ms sürdüğünü varsayalım. Durum yazmaçlarını kontrol etme işleminin yaklaşık 1 mikrosaniye zamanda işletildiği varsayılırsa, AİB, durum yazmaçlarını yaklaşık 1000'er kez sınayacaktır. Seçmeli G/Ç programlama, ana işlem biriminin verimsiz kullanımına neden olan bir yöntemdir. 21 22 Kesilme Düzeneği Kesilme Yordamına Sapış G/Ç arabirimlerinin rasgele anlarda ortaya çıkan hizmet istemlerinin hemen ele alınabilmesi, o an işletilmekte olan programın kesilerek sözkonusu hizmetle ilgili yordama sapılması ile mümkündür. Ana işlem biriminin, işletmekte olduğu bir programı rasgele bir anda keserek özel bir yordama sapmasına kesilme denir. Kesilme, ana işlem birimine G/Ç arabirimlerinden ulaşan kesilme istem imleri aracılığıyla gerçekleşir. 23 24
Kesilme Düzeneği Kesilme istem imleri ana işlem birimine kesilme girişleri üzerinden uygulanır. İşleyicilerin genelde tek bir kesilme girişleri bulunur. Ana işlem birimi kesilme girişi, denetim birimi tarafından sınanır. Denetim birimi her komut işletimi sırasında, saat periyotlarının birinde, örneğin uygula evresinin son saat periyodunda, kesilme girişini sınar. G/Ç arabirimlerinin kesilme istemleri, arabirimlerin bazı durum yazmaç bitleriyle simgelenir. Örnek: Terminal arabirimindeki RR (almaya hazır), TR (göndermeye hazır) bitleri Kesilme Yordamına Sapma Geri dönüş adresinin saklanmasından sonra ikinci aşama kesilme yordamına sapma aşamasıdır. Kesilme yordamına sapmada değişik işleyici mimarileri farklı yöntemler kullanırlar. Genelde kullanılan yöntem, kesilmeler ile eşleşmiş değişmez bir ana bellek sözcükleri (kesilme vektörü) üzerinden, dolaylı adresleme yoluyla kesilme yordamına sapma yöntemidir. Kesilme vektörleri, sistem işletime açıldığında sistem programları tarafından, kesilme hizmet yordamlarının başlangıç adresleriyle günlenir. Kesilme yordamından dönüş iret türü komutlarla olur. 25 26 80x86 İşleyicilerde Kesilme Düzeneği 80x86 İşleyicilerde Kesilme Düzeneği IF (interrupt flag) biti, sti (set interrupt flag) ve cli (clear interrupt flag) makina komutlarıyla kurulup sıfırlanır. Her bir kesilme için, 2 byte kesim (CS), 2 byte kesim içi göreli adres (IP) değerini tutmak üzere, ana bellekte 4 byte lık dolaylı adresleme konumu bulunur. Ana belleğin 0-3FF adres aralığındaki 1 KB'lık kesimi, 256 değişik türe ilişkin 4'er baytlık kesilme vektörlerine ayrılır. Kesilme vektörlerinden ilk beş tanesi engellenemez kesilme girişinin, iç kesilmelerin ya da INT, INTO gibi özel yazılım kesilmelerinin kullanımına ayrılmıştır. 27 28 Kesilme Maske Düzeneği Kesilme Maske Düzeneği Kesilme girişi, denetim birimine, ana işlem birimi program durum sözcüğü (PSW) adlı yazmacın özel bir bitiyle denetlenen bir anahtarlama düzeneği üzerinden bağlanır. Kesilme imleri, bu bitin kurulu olmadığı durumlarda denetim birimine ulaşamaz ve dolayısıyla komut işletim akışını değiştiremezler. Anılan bu anahtarlama düzeneği, kesilme maske düzeneği olarak bilinir. Ana işlem birimi içinde bulunan ve kesilme istemlerini genel olarak denetleyen bu maske düzeneğine genel maske, arabirimler düzeyinde yer alan düzeneklere ise yerel maske düzenekleri denir. 29 30
Kesilme Türleri Kaynağına göre İç kesilme (Sıfıra bölme hatası, Görüntü bellek kesilmesi) Dış kesilme (G/Ç arabirimlerinden gelen kesilmeler) Engellenebilmesine göre Engellenir kesilme Engellenemez kesilme (Güç kaynağından gelen kesilme) Oluşturulma yöntemine göre Donanım kesilmeleri Yazılım kesilmeleri Kesilme Önceliği Denetleme Birimi Arabirim önceliklerinin sistem yazılımları aracılığıyla değiştirilebilmesi daha esnek bir çözüm sağlayacaktır. Kesilme Önceliği Denetleme Birimi (KÖDB), kesilme önceliğinin işletim içinde devingen olarak değiştirilebilmesine olanak verir. Kesilme yordamlarının, maskeleme yükünden arındırılarak yalınlaşmasını ve kısalmasını sağlar. Arabirimler kesilme istemlerini, AİB yerine bu öncelik denetleme birimine gönderirler. Daha sonra bu birim, kesilme istem imini AİB ye ulaştırır. AİB nin kurduğu istem alındı imi de, arabirimler yerine bu birime gönderilir. 31 32 Kesilme Önceliği Denetleme Biriminin Konumu Kesilme Önceliği Denetleme Birimi Örneği 1 2 3 33 34 Kesilme Önceliği Denetleme Birimi Yazmaçları Kesilme İstem Yazmacının (KİY) bitleri, arabirimlerden gelen kesilme istemleriyle kurulmakta ve arabirim istemini çektiğinde sıfırlanmaktadır. Süren Hizmet Yazmacı (SHY), kesilme yordamına sapılan (kesilme hizmeti süren) arabirimleri belirlemek için kullanılır. Bu yazmaçlar, KÖDB nin içerdiği kesilme istem girişi kadar bitten oluşurlar. Öncelik denetleme biriminin içerdiği tüm kesilme girişlerinin bir önceliği bulunmaktadır. Kesilme Önceliği Denetleme Birimi Yazmaçları Programlanır yazmaçlar, kesilme yordamları başlangıç adreslerini saklamak ve giriş önceliklerini belirlemek amacıyla kullanılırlar. Alındı iminin gelmesiyle kesilme önceliği denetleme birimi, o anda en öncelikli birimin yordam başlangıç adresini (ya da parametresini) veri yolu üzerinden ana işlem birimine ulaştırır. 35 36
Kesilme Önceliği Denetleme Birimi Kesilme Yordamlarının İç İçe İşletilmesi 8 girişli bir KÖDB için, sıfırıncı girişin en öncelikli, yedinci girişin en düşük öncelikli olduğu bir durum düşünelim. Üçüncü girişten bir istem geldiğinde, KİY in üçüncü biti kurulur ve AİB ye kesilme istemi yollanır. Alındı imi geldiğinde, üçüncü girişe bağlı arabirimin kesilme yordamı başlangıç adres bilgisi AİB ye ulaştırılırken, SHY nin üçüncü biti kurulur. Üçüncü girişin hizmet yordamı çalışırken: İkinci girişten kesilme istemi gelirse, hizmet yordamı kesilir. İkinci giriş için hizmet yordamına sapma süreci yinelenir. Dördüncü girişten kesilme istemi gelirse, çalışan hizmet yordamının bitirilmesi beklenir, AİB ye kesilme istemi gönderilmez. 37 38 Kesilme Önceliği Denetleme Birimi ile Terminal G/Ç Sistemi İşletim Sistemlerinde G/Ç Katmanları 39 40 Aygıt Sürücüler (Device Drivers) Aygıttan Bağımsız G/Ç (Device-Independent I/O) (a) Standart bir aygıt sürücü arayüzü olmadan (b) Standart bir aygıt sürücü arayüzü kullanarak 41 42
Aygıttan Bağımsız G/Ç İşlemi User-Space I/O Software Bir ağ kartına gönderilecek veri, önce kullanıcı adres uzayından çekirdek adres uzayına taşınır ve sonra ağ kartı arabirimine aktarılır. 43 44 Doğrudan Bellek Erişimi Denetleme Birimi G/Ç arabirimleri ile ana bellek arasındaki veri aktarımını, AİB yi dışarıda tutarak gerçekleştirebilmek için doğrudan bellek erişim (DBE) düzeneğinden yararlanılır. Bu düzenekle, arabirimlerden ana belleğe, ana bellekten arabirimlere veriler, DBE denetleme birimi olarak adlandırılan bir birimin yardımıyla aktarılır. DBE denetleme birimi, AİB nin bellek erişimiyle ilgili işlevlerini yüklenebilen yardımcı bir işleyicidir. DBE denetleme birimi ile AİB nin ana belleğe erişimini paylaşma sorunu, AİB nin efendi konumunda bulunduğu, efendi-köle ilişkisi içinde çözülür. Doğrudan Bellek Erişimi Denetleme Birimi Arabirimler, bağlı oldukları sürücülerle ve ana bellek arası veri aktarımı istemlerini, DBE denetleme birimine yaparlar. DBE denetleme birimi, yol kullanım istemi girişini kurarak ana işlem biriminden adres ve veri yollarının kullanım hakkını ister. AİB, yol kullanım istemi girişini, komut işletiminin belirli bir periyodunda sınar. Giriş üzerinde istemi simgeleyen bir gerilim düzeyi saptarsa, adres ve veri yolları ile ilişkisini keser. Bu durumu, yol kullanım istemi alındısı çıkışını kurarak DBE denetleme birimine belirtir. 45 46 Doğrudan Bellek Erişimi Denetleme Birimi Doğrudan Bellek Erişimi Denetleme Biriminin Konumu DBE denetleme birimlerinin, aynı anda birden çok arabirime hizmet sunabilmek için birden çok aktarım istem girişi ve istem alındısı çifti bulunur. İstem-alındı çiftleri genellikle doğrudan bellek erişim kanalı olarak adlandırılır. Herbir kanal için bir adres yazmacı ve sayaç çifti bulunmak zorundadır. Güdüm yazmaçları, her kanal için işlem izin, yön, sürekli/kesikli aktarım bitleri gibi güdüm bitleri içerirler. Durum yazmaçları, kanallarla ilgili sayaçların sıfırlanması durumunda kurulan durum bitlerinden oluşur. 47 48