Saya baru saja mempelajari pengembangan driver Linux dan saya memiliki pertanyaan konseptual, yang menurut saya akan membantu pendatang baru lainnya dalam pengembangan kernel juga.
Saya membaca buku Driver Perangkat Linux dan saya telah menyelesaikan hingga Ch. 3 dari buku. Sampai sekarang, saya telah melihatnya dengan mengeluarkan open
, close
dan perintah lain ke file di /dev
folder, ruang pengguna dapat mengakses fungsi kernel.
Metode lain untuk berbagi kontrol adalah melalui file di /sys
, tempat membaca atau menulis dari sys
file dapat berkomunikasi dengan driver.
Saya ingin tahu apa yang akan menjadi kasus penggunaan untuk setiap metode? Apakah mereka 2 pendekatan untuk tugas yang sama? Apakah seseorang memiliki batasan atas yang lain? Dapatkah seseorang membagikan contoh praktis di mana yang satu mungkin berguna daripada yang lain?
Saya telah membaca pertanyaan lain di sini dan mereka menjelaskan dev
dan sys
. Meskipun hal itu bermanfaat, saya ingin mendapatkan sedikit pengetahuan yang lebih mendalam tentang bagaimana keduanya berbeda dan harus digunakan.
Jawaban yang Diterima:
Sangat kasar:
/dev
berisi node perangkat, yang dalam sistem Unix sebelumnya adalah satu-satunya cara untuk berinteraksi dengan kernel. Ada dua jenis ini, blokir perangkat dan karakter perangkat. API yang sesuai diarahkan untuk sesuatu yang memungkinkan I/O berbasis blok (semacam disk) atau I/O berbasis karakter (misalnya port serial).
/sys
(dan /proc
) ditambahkan kemudian, mungkin terinspirasi oleh Plan 9 OS. Mereka menyediakan subpohon direktori lengkap, dan entri file dalam subpohon ini berisi teks yang menjelaskan status internal modul kernel saat dibaca, atau, saat ditulis, mengatur status internal.
Jadi aplikasi tipikalnya adalah:
Anda ingin menulis driver kernel untuk beberapa jenis perangkat penyimpanan? Gunakan /dev
node untuk mengakses perangkat itu sendiri, dan /sys
(atau /proc
) entri untuk menyempurnakan cara penyimpanan diakses.