GNU/Linux >> Belajar Linux >  >> Linux

Linux – Kapan Menggunakan /dev Dan /sys Untuk Komunikasi Userspace-kernel?

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.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Bash =~ Regex Dan Https://regex101.com/?

  1. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  2. Kapan Menggunakan /dev/random Vs /dev/urandom?

  3. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  1. Apa itu file /dev/zero dan /dev/null di Linux?

  2. Kapan saya harus menggunakan #!/bin/bash dan kapan #!/bin/sh?

  3. kernel:menonaktifkan /dev/kmem dan /dev/mem