Aygıt sürücüsü - Device driver

Olarak işlem , bir alet sürücüsü , bir bir bilgisayar programı veren veya belirli bir tür kontrol cihazı , bir bağlı olduğu bilgisayar veya otomat . Bir sürücü bir yazılım sağlar arayüzü için donanım sağlayan cihazlar işletim sistemlerini donanımıyla ilgili kesin detayları kullanılıyor bilmek gerek kalmadan erişim donanım fonksiyonlarına ve diğer bilgisayar programları.

Bir sürücü , donanımın bağlandığı bilgisayar veri yolu veya iletişim alt sistemi aracılığıyla aygıtla iletişim kurar. Bir zaman çağıran program çağırır rutini sürücüsü, cihaza sürücü sorunları komutları. Aygıt, verileri sürücüye geri gönderdiğinde, sürücü, orijinal arama programındaki rutinleri başlatabilir.

Sürücüler donanıma bağlıdır ve işletim sistemine özeldir. Genellikle gerekli herhangi bir asenkron zamana bağlı donanım arabirimi için gereken kesme işlemeyi sağlarlar .

Amaç

Aygıt sürücülerinin temel amacı, bir donanım aygıtı ile onu kullanan uygulamalar veya işletim sistemleri arasında çevirmen olarak hareket ederek soyutlama sağlamaktır . Programcılar, son kullanıcının kullandığı donanımdan bağımsız olarak daha yüksek seviyeli uygulama kodu yazabilir. Örneğin, bir seri bağlantı noktasıyla etkileşime girmek için üst düzey bir uygulama , "veri gönder" ve "veri al" için iki işleve sahip olabilir. Daha düşük bir düzeyde, bu işlevleri uygulayan bir aygıt sürücüsü, bir kullanıcının bilgisayarında kurulu olan belirli seri bağlantı noktası denetleyicisi ile iletişim kuracaktır. Bir 16550 UART'ı kontrol etmek için gereken komutlar, bir FTDI seri port dönüştürücüyü kontrol etmek için gereken komutlardan çok farklıdır , ancak her donanıma özgü aygıt sürücüsü, bu ayrıntıları aynı (veya benzer) yazılım arabiriminde özetler .

Gelişim

Bir aygıt sürücüsü yazmak, donanımın ve yazılımın belirli bir platform işlevi için nasıl çalıştığının derinlemesine anlaşılmasını gerektirir . Sürücüler, çalışmak için donanım işlevlerine düşük düzeyde erişim gerektirdiğinden, sürücüler genellikle yüksek ayrıcalıklı bir ortamda çalışır ve bir şeyler ters giderse sistem işletim sorunlarına neden olabilir. Buna karşılık, modern işletim sistemlerindeki kullanıcı düzeyindeki yazılımların çoğu , sistemin geri kalanını büyük ölçüde etkilemeden durdurulabilir. Aygıt hatalı programlanmışsa , kullanıcı modunda çalışan sürücüler bile sistemi çökertebilir . Bu faktörler, sorunları teşhis etmeyi daha zor ve tehlikeli hale getirir.

Bu nedenle, sürücü yazma görevi genellikle donanım geliştirme şirketleri için çalışan yazılım mühendislerine veya bilgisayar mühendislerine düşer . Bunun nedeni, donanımlarının tasarımı hakkında çoğu yabancıdan daha iyi bilgiye sahip olmalarıdır. Ayrıca, müşterilerinin donanımlarını optimum bir şekilde kullanmasını garanti etmek geleneksel olarak donanım üreticisinin çıkarına kabul edildi. Tipik olarak Mantıksal Aygıt Sürücüsü (LDD) işletim sistemi satıcısı tarafından yazılırken Fiziksel Aygıt Sürücüsü (PDD) aygıt satıcısı tarafından uygulanır. Bununla birlikte, son yıllarda, satıcı olmayanlar, esas olarak ücretsiz ve açık kaynaklı işletim sistemleriyle kullanım için özel cihazlar için çok sayıda aygıt sürücüsü yazdılar . Bu gibi durumlarda donanım üreticisinin cihazın nasıl iletişim kurduğu hakkında bilgi vermesi önemlidir. Bu bilgi tersine mühendislikle öğrenilebilse de , donanımda bu, yazılımdan çok daha zordur.

Microsoft , sürücü geliştirme için Windows Sürücü Çerçevesi (WDF) adlı yeni bir çerçeve oluşturarak, kötü yazılmış aygıt sürücülerinden kaynaklanan sistem kararsızlığını azaltmaya çalıştı . Bu, belirli sürücü türlerinin (özellikle aygıtlarıyla iletişim kurmak için ileti tabanlı bir protokol uygulayanların) kullanıcı modu sürücüleri olarak geliştirilmesini teşvik eden Kullanıcı Modu Sürücü Çerçevesini (UMDF) içerir . Bu tür sürücüler arızalanırsa, sistem kararsızlığına neden olmazlar. Çekirdek Modu Sürücü Çerçevesi (KMDF) modeli çekirdek modu aygıt sürücüleri geliştirilmesini sağlamak için devam eder ancak girişimleri I iptali / Ç işlemleri, güç yönetimi ve fiş dahil nedeni problemlerine bilinen fonksiyonlar standart uygulamalarını sağlamak oyun cihazı desteği.

Apple , macOS üzerinde sürücü geliştirmek için I/O Kit adı verilen açık kaynaklı bir çerçeveye sahiptir .

In Linux ortamlarında, programcılar parçaları olarak aygıt sürücülerini inşa edebilirsiniz kernel yüklenebilir olarak ayrı ayrı modüllerin , ya da (örneğin USB cihazları gibi çekirdek arayüzleri mevcut cihazların belirli türleri için) kullanıcı modu sürücüler olarak. Makedev , ttyS (terminal), lp ( paralel bağlantı noktası ), hd (disk), döngü ve ses (bunlar mikser , sıralayıcı , dsp ve ses içerir) dahil olmak üzere Linux'taki aygıtların bir listesini içerir .

Microsoft Windows .sys dosyaları ve Linux .ko dosyaları yüklenebilir aygıt sürücüleri içerebilir. Yüklenebilir aygıt sürücülerinin avantajı, yalnızca gerektiğinde yüklenip ardından kaldırılabilmeleri, böylece çekirdek belleğinden tasarruf edilmesidir.

Çekirdek modu ve kullanıcı modu

Aygıt sürücüleri, özellikle modern Microsoft Windows platformlarında, çekirdek modunda ( x86 CPU'larda Ring 0 ) veya kullanıcı modunda (x86 CPU'larda Ring 3) çalışabilir . Bir sürücüyü kullanıcı modunda çalıştırmanın birincil yararı, kötü yazılmış bir kullanıcı modu aygıt sürücüsü, çekirdek belleğinin üzerine yazarak sistemi çökertemeyeceğinden, geliştirilmiş kararlılıktır. Öte yandan, kullanıcı/çekirdek modu geçişleri genellikle önemli bir performans yükü yükler, bu nedenle çekirdek modu sürücüleri düşük gecikmeli ağ iletişimi için tercih edilir hale getirir.

Çekirdek alanına, kullanıcı modülü tarafından yalnızca sistem çağrıları kullanılarak erişilebilir. UNIX kabuğu veya diğer GUI tabanlı uygulamalar gibi son kullanıcı programları, kullanıcı alanının bir parçasıdır. Bu uygulamalar, çekirdek destekli işlevler aracılığıyla donanımla etkileşime girer.

Uygulamalar

Modern donanım ve işletim sistemlerinin çeşitliliği nedeniyle, sürücüler birçok farklı ortamda çalışır. Sürücüler şunlarla arayüz oluşturabilir:

Aygıt sürücüleri için ortak soyutlama düzeyleri şunları içerir:

  • Donanım için:
    • Doğrudan arayüz oluşturma
    • Bir cihaz kontrol kaydına yazma veya okuma
    • Daha yüksek seviyeli bir arayüz kullanma (örn. Video BIOS )
    • Başka bir alt düzey aygıt sürücüsünün kullanılması (örneğin, disk sürücülerini kullanan dosya sistemi sürücüleri)
    • Tamamen farklı bir şey yaparken donanımla çalışmayı simüle etmek
  • Yazılım için:
    • İşletim sisteminin donanım kaynaklarına doğrudan erişmesine izin verme
    • Yalnızca ilkelleri uygulamak
    • Sürücü olmayan yazılım için bir arayüz uygulamak (örneğin TWAIN )
    • Bazen oldukça yüksek seviyeli bir dil uygulamak (örn. PostScript )

Bu nedenle, belirli bir donanım için doğru aygıt sürücülerini seçmek ve kurmak, genellikle bilgisayar sistem yapılandırmasının önemli bir bileşenidir.

Sanal aygıt sürücüleri

Sanal aygıt sürücüleri, aygıt sürücülerinin belirli bir türevini temsil eder. Özellikle sanallaştırma ortamlarında, örneğin bir Microsoft Windows bilgisayarında bir DOS programı çalıştırıldığında veya örneğin bir Xen ana bilgisayarında bir konuk işletim sistemi çalıştırıldığında, bir donanım aygıtını taklit etmek için kullanılırlar . Konuk işletim sisteminin donanımla iletişim kurmasını sağlamak yerine, sanal aygıt sürücüleri tam tersi bir rol üstlenir ve bir donanım parçasını taklit eder, böylece konuk işletim sistemi ve sanal bir makine içinde çalışan sürücüleri gerçek donanıma erişim yanılsamasına sahip olabilir. Konuk işletim sisteminin donanıma erişme girişimleri, örneğin işlev çağrıları gibi ana bilgisayar işletim sistemindeki sanal aygıt sürücüsüne yönlendirilir  . Sanal aygıt sürücüsü, kesintiler gibi simüle edilmiş işlemci düzeyindeki olayları da sanal makineye gönderebilir .

Sanal cihazlar, sanallaştırılmamış bir ortamda da çalışabilir. Örneğin, sanal bir özel ağ ile bir sanal ağ bağdaştırıcısı kullanılırken iSCSI ile bir sanal disk aygıtı kullanılır . Sanal aygıt sürücülerine iyi bir örnek Daemon Tools olabilir .

VxD'ler , VLM'ler ve VDD'ler gibi çeşitli sanal aygıt sürücüleri türleri vardır.

Açık kaynak sürücüleri

Yaygın olarak kullanılan aygıt sürücülerinin Solaris açıklamaları:

  • fas: Hızlı/geniş SCSI denetleyicisi
  • hme: Hızlı (10/100 Mbit/s) Ethernet
  • isp: Diferansiyel SCSI denetleyicileri ve SunSwift kartı
  • glm: (Gigabaud Bağlantı Modülü) UltraSCSI denetleyicileri
  • scsi: Küçük Bilgisayar Seri Arabirimi (SCSI) aygıtları
  • sf: soc+ veya socal Fiber Kanal Tahkim Döngüsü (FCAL)
  • soc: SPARC Storage Array (SSA) denetleyicileri ve kontrol cihazı
  • socal: FCAL için seri optik kontrolörler (soc+)

API'ler

tanımlayıcılar

PCI veri yolu veya USB üzerindeki bir aygıt, her biri 4 onaltılık sayıdan oluşan iki kimlikle tanımlanır . Satıcı kimliği, cihazın satıcısını tanımlar. Cihaz kimliği, o üreticiden/satıcıdan belirli bir cihazı tanımlar.

Bir PCI aygıtında genellikle aygıtın ana yongası için bir kimlik çifti ve ayrıca yonga üreticisinden farklı olabilecek satıcıyı tanımlayan bir alt sistem kimlik çifti bulunur.

Ayrıca bakınız

Referanslar

Dış bağlantılar