İşletim Sistemi - I / O Yazılımları
G / Ç yazılımı genellikle aşağıdaki katmanlarda düzenlenir -
User Level Libraries- Bu, girdi ve çıktı gerçekleştirmek için kullanıcı programına basit bir arayüz sağlar. Örneğin,stdio C ve C ++ programlama dilleri tarafından sağlanan bir kitaplıktır.
Kernel Level Modules - Bu, aygıt sürücüsünün aygıt denetleyicisi ve aygıt sürücüleri tarafından kullanılan aygıttan bağımsız G / Ç modülleriyle etkileşim kurmasını sağlar.
Hardware - Bu katman, aygıt sürücüleriyle etkileşime giren ve donanımı canlı kılan gerçek donanım ve donanım denetleyicisini içerir.
I / O yazılımının tasarımındaki temel kavram, cihazı önceden belirtmek zorunda kalmadan herhangi bir I / O cihazına erişebilen programlar yazmanın mümkün olması gereken cihazdan bağımsız olması gerektiğidir. Örneğin, bir dosyayı girdi olarak okuyan bir program, her bir farklı aygıt için programı değiştirmeden disketteki, sabit diskteki veya CD-ROM'daki bir dosyayı okuyabilmelidir.
Aygıt sürücüleri
Aygıt sürücüleri, belirli bir aygıtı işlemek için bir işletim sistemine takılabilen yazılım modülleridir. İşletim Sistemi, tüm G / Ç aygıtlarını işlemek için aygıt sürücülerinden yardım alır. Aygıt sürücüleri, aygıta bağlı kodu kapsüller ve kodun aygıta özgü yazmaç okuma / yazma içermesini sağlayacak şekilde standart bir arabirim uygular. Aygıt sürücüsü, genellikle aygıtın üreticisi tarafından yazılır ve aygıtla birlikte bir CD-ROM'da teslim edilir.
Bir aygıt sürücüsü aşağıdaki işleri gerçekleştirir -
- Yukarıdaki cihazdan bağımsız yazılımdan gelen talebi kabul etmek.
- G / Ç almak ve vermek ve gerekli hata işlemeyi gerçekleştirmek için cihaz denetleyicisiyle etkileşim kurun
- İsteğin başarıyla yerine getirildiğinden emin olmak
Bir aygıt sürücüsünün bir isteği nasıl ele aldığı aşağıdaki gibidir: Bir N bloğunu okumak için bir isteğin geldiğini varsayalım. Bir istek geldiğinde sürücü boştaysa, isteği hemen yerine getirmeye başlar. Aksi takdirde, sürücü başka bir istekle zaten meşgulse, yeni isteği bekleyen istekler kuyruğuna yerleştirir.
İşleyicileri kes
Bir kesme hizmet rutini veya ISR olarak da bilinen bir kesinti işleyici, bir yazılım parçası veya daha spesifik olarak bir işletim sistemindeki veya daha spesifik olarak, bir kesintinin alınmasıyla yürütülmesi tetiklenen bir aygıt sürücüsündeki bir geri arama işlevidir.
Kesme gerçekleştiğinde, kesme prosedürü, kesmeyi işlemek için gereken her şeyi yapar, veri yapılarını günceller ve bir kesintinin olmasını bekleyen süreci uyandırır.
Kesme mekanizması bir adresi kabul eder - küçük bir setten belirli bir kesme işleme yordamı / işlevi seçen bir sayı. Çoğu mimaride bu adres, kesme vektör tablosu adı verilen bir tabloda depolanan bir ofsettir. Bu vektör, özel kesme işleyicilerinin bellek adreslerini içerir.
Cihazdan Bağımsız G / Ç Yazılımı
Aygıttan bağımsız yazılımın temel işlevi, tüm aygıtlarda ortak olan G / Ç işlevlerini gerçekleştirmek ve kullanıcı düzeyindeki yazılıma tek tip bir arabirim sağlamaktır. Tamamen cihazdan bağımsız yazılım yazmak zor olsa da, tüm cihazlar arasında ortak olan bazı modülleri yazabiliriz. Aşağıda, aygıttan bağımsız I / O Yazılımının işlevlerinin bir listesi verilmiştir -
- Aygıt sürücüleri için tek tip arabirim
- Cihaz adlandırma - Büyük ve Küçük cihaz numaralarına eşlenen anımsatıcı adlar
- Cihaz koruması
- Cihazdan bağımsız bir blok boyutu sağlama
- Arabelleğe alma çünkü bir aygıttan gelen veriler son hedefte saklanamaz.
- Blok cihazlarda depolama tahsisi
- Özel cihazların tahsis edilmesi ve serbest bırakılması
- Hata Bildirimi
Kullanıcı Alanı I / O Yazılımı
Bunlar, çekirdeğin işlevselliğine erişmek için daha zengin ve basitleştirilmiş arayüz sağlayan veya nihayetinde aygıt sürücüleriyle etkileşimli olan kitaplıklardır. Kullanıcı düzeyindeki G / Ç yazılımlarının çoğu, bir çoklu programlama sistemindeki özel G / Ç aygıtlarıyla başa çıkmanın bir yolu olan bekletme sistemi gibi bazı istisnalar dışında kitaplık prosedürlerinden oluşur.
G / Ç Kitaplıkları (örn. Stdio), işletim sistemi yerleşik aygıttan bağımsız G / Ç yazılımına bir arabirim sağlamak için kullanıcı alanı içindedir. Örneğin putchar (), getchar (), printf () ve scanf (), C programlamasında bulunan kullanıcı seviyesi G / Ç kitaplığı stdio örneğidir.
Çekirdek G / Ç Alt Sistemi
Kernel I / O Subsystem, G / Ç ile ilgili birçok hizmet sağlamaktan sorumludur. Aşağıda verilen hizmetlerden bazıları verilmiştir.
Scheduling- Kernel, onları yürütmek için iyi bir sıra belirlemek üzere bir dizi G / Ç isteği planlar. Bir uygulama engelleyen bir G / Ç sistem çağrısı yayınladığında, istek o aygıt için kuyruğa yerleştirilir. Kernel I / O zamanlayıcı, genel sistem verimliliğini ve uygulamaların deneyimlediği ortalama yanıt süresini iyileştirmek için kuyruk sırasını yeniden düzenler.
Buffering - Kernel I / O Subsystem, şu adıyla bilinen bir bellek alanını korur: bufferiki cihaz arasında veya bir uygulama işlemiyle bir cihaz arasında aktarılırken verileri depolayan. Tamponlama, bir veri akışının üreticisi ve tüketicisi arasındaki hız uyuşmazlığıyla başa çıkmak veya farklı veri aktarım boyutlarına sahip cihazlar arasında uyum sağlamak için yapılır.
Caching- Çekirdek, verilerin kopyalarını tutan hızlı bellek bölgesi olan önbelleği korur. Önbelleğe alınmış kopyaya erişim, aslına erişimden daha etkilidir.
Spooling and Device Reservation- Biriktirme, yazıcı gibi, araya eklenmiş veri akışlarını kabul edemeyen bir aygıt için çıktıyı tutan bir arabellektir. Bekletme sistemi, sıradaki biriktirme dosyalarını teker teker yazıcıya kopyalar. Bazı işletim sistemlerinde biriktirme, bir sistem arka plan programı süreci tarafından yönetilir. Diğer işletim sistemlerinde, bir çekirdek içi iş parçacığı tarafından işlenir.
Error Handling - Korumalı bellek kullanan bir işletim sistemi, birçok türde donanım ve uygulama hatalarına karşı koruma sağlayabilir.