Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Di manakah peranti aksara linux diletakkan?

Di manakah peranti aksara linux diletakkan?

青灯夜游
青灯夜游asal
2023-04-07 16:29:571743semak imbas

Peranti aksara Linux diletakkan dalam direktori "/dev". Peranti aksara merujuk kepada peranti yang hanya boleh dibaca dan ditulis bait demi bait Secara amnya, setiap peranti aksara atau peranti sekat akan sepadan dengan fail peranti dalam direktori "/dev", dan setiap fail peranti mesti mempunyai utama/ Peranti dengan. nombor peranti kecil yang sama dan nombor peranti utama adalah peranti yang serupa dan menggunakan pemacu yang sama.

Di manakah peranti aksara linux diletakkan?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

1 Klasifikasi pemacu peranti Linux

Sistem Linux membahagikan peranti kepada tiga kategori: Peranti aksara, peranti sekat dan rangkaian Peranti , antara tiga kategori ini, peranti aksara adalah agak mudah. ​​Aplikasi mengakses peranti aksara melalui fail peranti aksara. Jika anda berminat dengan peranti sekat dan peranti rangkaian, anda boleh merujuk kepada maklumat yang berkaitan dan memperoleh pemahaman yang mendalam mengenainya.

Di manakah peranti aksara linux diletakkan?


2. Apakah peranti watak?

Peranti aksara merujuk kepada peranti yang hanya boleh membaca dan menulis bait demi bait Data tertentu dalam peranti tidak boleh dibaca secara rawak dan data mesti dibaca mengikut susunan. Peranti aksara ialah peranti berorientasikan aliran termasuk tetikus, papan kekunci, port bersiri, konsol dan LED.

Di manakah peranti aksara linux diletakkan?

Secara amnya, setiap peranti aksara atau peranti sekat akan sepadan dengan fail peranti dalam direktori /dev, dan setiap fail peranti mesti mempunyai utama/ Peranti dengan nombor peranti kecil dan nombor peranti utama yang sama adalah peranti yang serupa dan menggunakan pemacu yang sama.

Atur cara peringkat pengguna Linux menggunakan pemacu untuk mengendalikan peranti aksara atau menyekat peranti melalui fail peranti.

Anda boleh menggunakan perintah

cat /proc/devices

untuk melihat nombor peranti utama pemacu peranti yang sedang dimuatkan.

Di manakah peranti aksara linux diletakkan?

Anda boleh melihat nombor peranti utama dan kecil bagi semua fail peranti dengan melaksanakan arahan

ls -l

dalam direktori /dev:

Di manakah peranti aksara linux diletakkan?

Terangkan fail peranti biasa seperti berikut:

/dev/hd[a-t]:IDE设备

/dev/sd[a-z]:SCSI设备

/dev/fd[0-7]:标准软驱

/dev/md[0-31]:软raid设备

/dev/loop[0-7]:本地回环设备

/dev/mem:内存

/dev/null:无限数据接收设备,相当于黑洞

/dev/zero:无限零资源

/dev/tty[0-63]:虚拟终端

/dev/ttyS[0-3]:串口

/dev/lp[0-3]:并口

/dev/console:控制台

/dev/fb[0-31]:framebuffer

/dev/cdrom => /dev/hdc

/dev/modem => /dev/ttyS[0-9]

/dev/pilot => /dev/ttyS[0-9]

3.

Terdapat dua cara untuk mencipta fail peranti Salah satunya adalah melalui panggilan sistem mknod(). daripada arahan Parameter ialah nama fail peranti, parameter kedua ialah jenis peranti, contohnya, c mewakili peranti aksara, dan parameter ketiga dan keempat ialah nombor peranti utama dan nombor peranti kecil bagi fail peranti, seperti 231 dan 0. Gabungan nombor peranti utama dan nombor peranti kecil secara unik menentukan peranti Nombor peranti utama bagi jenis peranti yang sama adalah sama, tetapi nombor peranti kecil adalah berbeza nombor peranti kecil yang berbeza Nombor peranti boleh mengaitkan fail peranti dengan pemandu.

nama fail mknod jenis major minor

  • nama fail: nama fail peranti yang akan dibuat
  • jenis: jenis peranti, c mewakili a aksara Peranti, b mewakili peranti blok;
  • utama: nombor peranti utama; > 4. Bagaimana untuk menerangkan peranti aksara?
  • Inti Linux mengabstrak struktur cdev untuk mewakili peranti aksara ditakrifkan dalam yang paling kritikal ialah struktur operasi_fail, yang melaksanakan aksara set operasi peranti.

Linux menggunakan struktur operasi_fail untuk mengakses fungsi pemacu Nama setiap ahli struktur ini sepadan dengan panggilan sistem.

Apabila proses pengguna melakukan operasi seperti membaca dan menulis pada fail peranti, sistem memanggil untuk mencari pemacu peranti yang sepadan melalui nombor peranti utama fail peranti, dan kemudian membaca fungsi yang sepadan penunjuk struktur data ini, dan kemudian memindahkan kawalan ke fungsi Ini adalah prinsip asas bagaimana pemacu peranti Linux berfungsi.

struct cdev {
        struct kobject kobj;   //  内嵌内核对象
        struct module *owner;  //该字符设备所在的内核模块
        const struct file_operations *ops; //文件操作结构体
        struct list_head list;  //已注册字符设备链表
        dev_t dev; //由主、次设备号构成的设备号
        unsigned int count;//同一主设备号的次设备号的个数
};

5 Antara muka antara peranti aksara dan sistem fail

struct file_operations {
       struct module *owner;
       loff_t (*llseek) (struct file *, loff_t, int);
       ssize_t (*read) (struct file *, char *, size_t, loff_t *);
       ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
       int (*readdir) (struct file *, void *, filldir_t);
       unsigned int (*poll) (struct file *, struct poll_table_struct *);
       int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
       int (*mmap) (struct file *, struct vm_area_struct *);
       int (*open) (struct inode *, struct file *);
       int (*flush) (struct file *);
       int (*release) (struct inode *, struct file *);
       int (*fsync) (struct file *, struct dentry *, int datasync);
       int (*fasync) (int, struct file *, int);
       int (*lock) (struct file *, int, struct file_lock *);
       ssize_t (*readv) (struct file *, const struct iovec *, unsigned long,loff_t *);
       ssize_t (*writev) (struct file *, const struct iovec *, unsigned long,    loff_t *);
    };

Seperti yang ditunjukkan dalam rajah, dalam kernel Linux, di bahagian paling kiri, struktur cdev digunakan untuk menerangkan peranti aksara dev_t digunakan untuk menentukan nombor peranti (dibahagikan kepada nombor peranti utama dan kecil). tentukan keunikan peranti aksara; melalui dev_t ahlinya File_operations ahli mentakrifkan fungsi antara muka yang disediakan oleh pemacu peranti aksara kepada sistem fail maya VFS, seperti buka biasa(), baca(), tulis(), dsb. Fungsi-fungsi ini sebenarnya mengendalikan peranti perkakasan.

Di manakah peranti aksara linux diletakkan?

Berdasarkan gambar sebelum ini, mari lihat gambar ini Pemacu peranti aksara dimuatkan ke dalam kernel dalam bentuk modul kernel Pertama, fungsi pemuatan modul adalah statik atau Secara dinamik memperoleh nombor peranti ; kemudian peranti aksara fungsi permulaan mewujudkan sambungan antara cdev dan operasi_fail , dan menambahkannya pada sistem melalui fungsi pendaftaran cdev untuk melengkapkan pendaftaran; apabila modul dipunggah, sepadan dengan pemuatan, cdev perlu dilog keluar dan nombor peranti dikeluarkan.

Dalam program pengguna, fungsi ini yang dilaksanakan oleh pemacu dalam kernel boleh dipanggil melalui panggilan sistem seperti open(), read(), write(), dll. Dengan cara ini, laluan antara mod pengguna dan pemacu kernel dibuka.

6 Tulis pemacu peranti aksara ringkas

Di manakah peranti aksara linux diletakkan?

Seperti yang ditunjukkan dalam rajah, tulis aksara. pemacu peranti Terdapat tiga langkah utama:

  1. pemulaan pemacu, yang dibahagikan kepada empat langkah dan dicapai dengan memanggil fungsi yang berkaitan.
  2. Laksanakan operasi peranti Operasi khusus bergantung pada fungsi yang ingin anda laksanakan di sini
  3. Log keluar pemandu.

Fungsi fungsi antara muka yang dipanggil adalah seperti berikut:

Di manakah peranti aksara linux diletakkan?

Fungsi pertama ialah fungsi peruntukan, yang digunakan secara dinamik untuk memori cdev dan memperuntukkannya ke ruang memori struktur.

Fungsi kedua ialah fungsi permulaan, yang memulakan ahli cdev dan mewujudkan perkaitan antara cdev dan operasi_fail.

Fungsi ketiga mendaftarkan objek peranti cdev, iaitu, menambah aksara peranti ke Dalam jadual peranti aksara, sama seperti semua orang mendaftar apabila mereka memasuki sekolah.

Fungsi keempat adalah untuk log keluar panggilan pemacu dan memadam objek cdev daripada sistem.

Fungsi kelima melepaskan memori yang diduduki oleh struktur data cdev.

6.1 Aplikasi dan keluaran nombor peranti

Peranti aksara atau peranti blok mempunyai nombor peranti utama dan A nombor peranti kecil. Nombor peranti utama digunakan untuk mengenal pasti pemacu yang disambungkan ke fail peranti dan menggambarkan jenis peranti. Nombor peranti kecil digunakan oleh pemandu untuk mengenal pasti peranti yang ia sedang beroperasi dan untuk membezakan peranti daripada jenis yang sama . Mohon nombor peranti semasa mendaftar, dan keluarkan nombor peranti semasa log keluar Sama seperti semua orang mempunyai ID pelajar semasa mereka mendaftar, dan ID pelajar ini dikeluarkan apabila mereka tamat pengajian dan keluar.

Di manakah peranti aksara linux diletakkan?

6.2 Pemindahan Ruang Pengguna dan Data Ruang Kernel

Apabila kita Apabila fungsi baca() dipanggil dalam program pengguna, ia jatuh ke dalam ruang kernel Malah, data dalam penimbal ruang kernel mesti disalin ke penimbal ruang pengguna melalui fungsi copy_to_user() kernel. apabila kita memanggil fungsi write() Apabila, kernel menyalin data ruang pengguna ke penimbal kernel dengan memanggil fungsi copy_from_user().

Di manakah peranti aksara linux diletakkan?

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Di manakah peranti aksara linux diletakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn