Pengantar Objek Pengontrol

Seperti namanya, objek pengontrol biasanya mewakili pengontrol perangkat fisik dengan perangkat yang terpasang. Driver non-WDM tingkat terendah untuk sekumpulan perangkat serupa yang dikoordinasikan oleh pengontrol fisik dapat membuat objek pengontrol dan menggunakannya untuk menyinkronkan operasi I/O antara perangkat yang terpasang. Driver mengimplementasikan rutinitas ControllerControl dan memanggil rutinitas dukungan objek pengontrol manajer I/O.

Catatan

Penggunaan objek pengontrol tidak didukung dalam driver WDM.

Umumnya, driver menggunakan objek pengontrol untuk menyinkronkan operasi ke perangkat yang terpasang jika kriteria berikut menahan:

  • Pengontrol tidak melakukan operasi panjang tanpa mengganggu, sehingga driver tidak perlu membuat utas khusus perangkat atau menggunakan utas pekerja sistem.

  • Perangkat yang terhubung ke pengontrol serupa. Artinya, mereka bukan perangkat dengan properti fisik atau fungsionalitas operasional yang sama sekali berbeda, seperti perangkat keyboard dan mouse yang dapat dihubungkan ke keyboard dan pengontrol perangkat tambahan.

  • Driver dirancang agar monolitik: berlapis tunggal sehubungan dengan pengontrol perangkat dan perangkat fisik yang terpasang, daripada dirancang sebagai driver port (untuk pengontrol) dengan satu atau beberapa driver kelas (untuk perangkat yang terpasang) yang berlapis di atas driver port.

Driver perangkat dengan saluran I/O dan sekumpulan objek perangkat logis juga dapat menggunakan objek pengontrol untuk menyinkronkan operasi I/O mereka antara atau di antara saluran perangkat tersebut.

Objek pengontrol tidak memiliki nama dan dengan demikian bukan target permintaan I/O. Ini hanyalah mekanisme sinkronisasi untuk membuat serial I/O dari sekumpulan objek perangkat. Karena objek pengontrol tidak memiliki nama, objek tidak terlihat oleh subsistem yang dilindungi mode pengguna, yang tidak dapat membuat permintaan I/O perangkat tanpa mendapatkan handel untuk objek file yang mewakili objek perangkat target. Objek pengontrol juga tidak terlihat oleh driver tingkat yang lebih tinggi, yang tidak dapat melampirkan objek perangkat mereka sendiri ke objek pengontrol. Dengan kata lain, manajer I/O maupun driver tingkat yang lebih tinggi tidak dapat mengatur IRP yang meminta I/O pada perangkat yang diwakili oleh objek pengontrol. Permintaan I/O selalu dikeluarkan untuk objek perangkat. Hanya pengandar yang dapat menggunakan objek pengontrol.

Sinkronisasi dan I/O Tumpang Tindih

Driver monolitik perangkat fisik dengan fitur seperti pengontrol disk "AT" tidak diperlukan untuk menggunakan objek pengontrol untuk menyinkronkan operasi I/O perangkat mereka. Misalnya, penulis driver dapat mencoba sesuatu seperti teknik sinkronisasi berikut alih-alih menggunakan objek pengontrol:

  • Siapkan objek perangkat bernama untuk mewakili perangkat yang menjadi target permintaan I/O.

  • Pertahankan informasi status (mungkin sekumpulan bendera Perangkat Sibuk di setiap ekstensi perangkat atau dalam satu ekstensi perangkat) yang menunjukkan objek perangkat mana yang menjadi target operasi I/O saat ini.

  • Lakukan operasi I/O untuk objek perangkat yang saat ini sibuk dan antrekan ulang IRP masuk untuk objek perangkat lain hingga IRP saat ini selesai.

Teknik sinkronisasi sebelumnya menserialisasikan pemrosesan IRP untuk semua objek perangkat target driver. Perhatikan bahwa ini juga memaksa driver untuk menyelesaikan IRP saat ini sebelum rutinitas StartIo-nya dapat mulai memproses IRP berikutnya, yang sayangnya menurunkan performa driver.

Jika operasi perangkat tertentu dapat tumpang tindih, menggunakan objek pengontrol dapat meningkatkan throughput I/O driver, karena teknik sinkronisasi ini memungkinkan driver untuk menentukan apakah itu dapat tumpang tindih operasi tepat sebelum mengatur perangkat fisik. Misalnya, pengontrol disk mungkin memungkinkan driver untuk tumpang tindih mencari pada satu disk dengan operasi baca/tulis pada disk lain.

Selain itu, menggunakan objek pengontrol adalah cara yang relatif mudah untuk menyinkronkan operasi I/O untuk lebih dari satu objek perangkat target melalui satu perangkat fisik, seperti pengontrol disk "AT". Menggunakan objek pengontrol memungkinkan driver monolitik untuk menyinkronkan operasi I/O di sekumpulan objek perangkat bernama tanpa harus mempertahankan status tentang setiap perangkat dan pengontrol perangkat dalam satu atau beberapa ekstensi perangkat, dan tanpa harus mengantre ulang RUN.

Namun, beberapa perangkat yang dirancang untuk tumpang tindih operasi I/O, seperti pengontrol serial dupleks penuh atau adaptor bus-master, umumnya memiliki driver yang mengatur antrean internal untuk RUN.