İlk önce sürücünün ne olduğunu tanımlamanız gerekir. Bir cihazı (kameranız gibi) veya bir alt sistemi (bir dosya sistemi gibi) kontrol eden bir program veya alt rutin olarak tanımlayacağım. Bunu doğrudan sistem programı aracılığıyla mı yoksa çekirdek sunucular mı yoksa kullanıcı-arazi işlemleri yoluyla mı yapması, esasen bu anlamsal soru için esas teşkil etmemelidir.
Bazı durumlarda Linux, yalnızca gerçek "sürücünün" bir aygıt ağacı olduğu yazılımda yazılmış genel bir protokol sağlar. Bu, bir donanım parametresi yapılandırması ve hangi sürücüyü oluşturan yazılımı kullanmasıdır.
Genel olarak, sürücü arayüzleri ve protokolleri, cihaz ağaçları veya udev kuralları tarafından tanımlandığı şekilde yüklenen çekirdek modülleri kullanılarak gerçekleştirilir. Bir çekirdek modülü tam anlamıyla bir süreç veya kütüphane değildir.
Bir kütüphane, verilen herhangi bir işleme yüklenebilecek statik bir kod kümesidir. Modern işletim sistemleri bu kütüphaneleri paylaşılan hafızaya yüklüyor. Bir işlemin kendisi, herhangi bir sayıda paylaşılan kütüphaneye bağlanabilir.
Bir işlem, sistem programının veya çekirdeğinin sistem belleği ve işlemci zamanı gibi kaynaklar tahsis ettiği çalışan bir programdır. Çekirdek modülleri bu deseni kendileri takip edebilir veya izlemeyebilir veya etmeyebilir, ancak Linux altında bir defacto işlemi olarak görülmez
Bu yüzden sorunuzu cevaplamak için bir sürücünün bir süreç olması gerekmez, olabilir. Kod bir kütüphanede bulunabilse de, sürücü çekirdek modüller veya kullanıcı alanı işlemleri biçiminde çekirdek olsun olmasın, yine de bir program aracılığıyla belleğe yüklenir.
Bir sürücünün bütünlüğünün gerçekte ne olduğunu düşünürsek, anlamsal bir argüman haline gelir. Bir sürücünün her zaman bir program olduğunu söyleyebilirsiniz, ancak bazen cihaz ağaçlarında olduğu gibi değildir, aslında işlemin ve modülün her ikisini de oluşturmak için kütüphaneleri kullandığı bir kullanıcı süreci, aygıt ağacı dosyası, udev kuralları ve çekirdek modülü olabilir. Bir sürücünün mantığı.