Sürücü nedir?

sürücü, işletim sistemiyle cihazın iletişim kurmasını sağlayan bir yazılım bileşenidir. Örneğin, bir uygulamanın bir cihazdan veri okuması gerektiğinde, işletim sistemi tarafından uygulanan bir işlevi çağırır. Ardından işletim sistemi, sürücü tarafından uygulanan bir işlevi çağırır. Genellikle cihazın üreticisi tarafından geliştirilen sürücü, verileri almak için cihaz donanımıyla nasıl iletişim kuracaklarını bilir. Sürücü verileri aldığında işletim sistemine geri verir ve ardından uygulamaya geri verir.

Bir uygulama, işletim sistemi ve sürücü arasındaki etkileşimi gösteren diyagram.

Tanımı genişletme

Bu açıklama sürücü kavramını basitleştirir. Dikkate alınması gereken bazı noktalar şunlardır:

  • Cihaz üreticisi sürücüyü her zaman geliştirmez. Bir cihaz yayımlanmış bir donanım standardına uyarsa, Microsoft sürücüyü yazabilir, bu nedenle cihaz tasarımcısının bunu sağlaması gerekmez.

  • Tüm sürücüler bir cihazla doğrudan iletişim kurmaz. Genellikle, bir sürücü yığınına katmanlanmış birkaç sürücü G/Ç isteğinde yer alır.

    Yığını görselleştirmenin geleneksel yolu, bu diyagramda gösterildiği gibi ilk katılımcının en üstte, son katılımcının ise altta olmasıdır. Yığındaki bazı sürücüler isteği bir biçimden diğerine dönüştürür. Bu sürücüler doğrudan cihazla iletişim kurmaz. Bunun yerine, isteği değiştirir ve daha alt katmanlardaki sürücülere iletirler.

    Bir uygulama, işletim sistemi, üç sürücü ve bir cihaz arasındaki iletişimi gösteren diyagram.

    • İşlev sürücüsü: Cihazla doğrudan iletişim kuran sürücü, işlev sürücüsü olarak adlandırılır.

    • Filtre sürücüsü: Yardımcı işlem yapan sürücüler filtre sürücüleriolarak adlandırılır.

    Daha fazla bilgi için bkz . Sürücü yığınları.

  • Bazı filtre sürücüleri G/Ç istekleriyle ilgili bilgileri gözlemler ve kaydeder ancak bunlarda yer almaz. Örneğin, bazı filtre sürücüleri, yığındaki diğer sürücülerin G/Ç isteğini doğru işlediğinden emin olmak için doğrulayıcı görevi görür.

Tanımı iyileştirmek için sürücü, işletim sistemi ile cihaz arasındaki iletişimi gözlemleyen veya bu iletişime katılan herhangi bir yazılım bileşenidir.

Yazılım sürücüleri

Bu genişletilmiş tanım daha doğru ancak yine de eksik. Bazı sürücüler hiçbir donanım cihazıyla ilişkili değildir.

Temel işletim sistemi veri yapılarına erişen bir araç yazmanız gerekiyorsa, aracı iki bileşene bölebilirsiniz. İlk bileşen kullanıcı modunda çalışır ve kullanıcı arabirimini sunar. İkinci bileşen çekirdek modunda çalışır ve çekirdek işletim sistemi verilerine erişir. Kullanıcı modunda çalışan bileşene uygulama adı verilir. Çekirdek modunda çalışan bileşene yazılım sürücüsü adı verilir. Yazılım sürücüsü bir donanım cihazıyla ilişkilendirilmiyor.

Bu diyagramda çekirdek modu yazılım sürücüsüyle iletişim kurarak kullanıcı modu uygulaması gösterilmektedir.

Bir uygulama ile yazılım sürücüsü arasındaki ilişkiyi gösteren diyagram.

Yazılım sürücüleri her zaman çekirdek modunda çalışır. Bunlar öncelikli olarak yalnızca çekirdek modunda kullanılabilen korumalı verilere erişmek için yazılır. Tüm cihaz sürücülerinin çekirdek modu verilerine ve kaynaklarına erişmesi gerekmez, bu nedenle bazı cihaz sürücüleri kullanıcı modunda çalışır.

İşlemci modları hakkında daha fazla bilgi için bkz. Kullanıcı modu ve çekirdek modu.

Otobüs sürücüleri

Başka bir sürücü türü de veri yolu sürücüsü'dir. Veri yolu sürücülerini anlamak için cihaz düğümlerini ve cihaz ağacını anlamanız gerekir.

Cihaz ağaçları, cihaz düğümleri ve veri yolu sürücüleri hakkında bilgi için bkz. Cihaz düğümleri ve cihaz yığınları.

İşlev sürücüleri hakkında daha fazla bilgi

Açıklama şu ana kadar işlev sürücüsünü fazla basitleştiriyor. Açıklama şu ana kadar işlev sürücüsünün cihazla doğrudan iletişim kuran sürücü olduğunu belirtir. Bu deyim, doğrudan Çevre Birimi Bileşeni Ara Bağlantısı (PCI) veri yolu'na bağlanan bir cihaz için geçerlidir. PCI cihazının işlev sürücüsü, cihazdaki bağlantı noktası ve bellek kaynaklarına eşlenen adresleri alır. İşlev sürücüsü, bu adreslere yazarak cihazla doğrudan iletişim kurar.

Çoğu durumda, bir cihaz doğrudan PCI veri yolu'na bağlanmaz. Bunun yerine, cihaz PCI veri yolu'na bağlı bir konak veri yolu bağdaştırıcısına bağlanır. Örneğin, BIR USB tost makinesi, USB ana bilgisayar denetleyicisi olarak adlandırılan bir ana bilgisayar veri yolu bağdaştırıcısına bağlanır. Bu denetleyici PCI veri yolu ile bağlantılıdır. USB tost makinesinin bir işlev sürücüsü ve USB ana bilgisayar denetleyicisinin de bir işlev sürücüsü vardır.

Tost makinesinin işlev sürücüsü, USB ana bilgisayar denetleyicisi için işlev sürücüsüne bir istek göndererek dolaylı olarak tost makinesiyle iletişim kurar. ARDıNDAN USB ana bilgisayar denetleyicisinin işlev sürücüsü, tost makinesiyle iletişim kuran USB ana bilgisayar denetleyicisi donanımıyla doğrudan iletişim kurar.

USB tost makinesi sürücüleri, USB ana bilgisayar denetleyicisi sürücüsü ve PCI veri yolu arasındaki etkileşimi gösteren Diyagramı.