Rumah > Tutorial sistem > LINUX > Penjelasan terperinci tentang model peranti Linux (1)_Konsep asas

Penjelasan terperinci tentang model peranti Linux (1)_Konsep asas

WBOY
Lepaskan: 2024-02-15 15:54:02
ke hadapan
1251 orang telah melayarinya

1 Dalam artikel "The Overall Architecture of the Linux Kernel", Wowo menyebut bahawa kernel Linux menyokong hampir semua peranti perkakasan dengan fungsi yang berbeza di dunia, yang juga merupakan kelebihan Linux. Walau bagaimanapun, ini juga menyebabkan separuh daripada kod dalam kernel Linux menjadi pemacu peranti Dengan peningkatan pantas peranti perkakasan, jumlah kod pemacu peranti juga berkembang dengan pesat. Pada pendapat saya, fenomena ini memusnahkan konsep "kesederhanaan itu indah" dan menjadikan kernel Linux sangat kembung, tidak kemas dan sukar untuk diselenggara. Walau bagaimanapun, Wowo juga memahami bahawa ini bukan kesalahan Linux, kerana Linux adalah kernel makro dan mesti menghadapi kepelbagaian peranti dan melaksanakan pemacu yang sepadan.

Untuk mengurangkan kerumitan pembangunan pemacu Linux yang disebabkan oleh kepelbagaian peranti dan melaksanakan fungsi seperti palam panas peranti dan pengurusan kuasa, kernel Linux memperkenalkan konsep model peranti (juga dipanggil model pemacu). Model peranti mengelaskan dan meringkaskan peranti perkakasan, dan kemudian mengabstrakkan satu set struktur data standard dan antara muka. Dengan cara ini, pembangunan pemacu menjadi mudah dan hanya memerlukan pengisian dan pelaksanaan struktur data yang ditentukan oleh kernel.

Artikel ini akan bermula daripada konsep asas model peranti, dan menerangkan secara beransur-ansur pelaksanaan dan penggunaan model peranti Linux melalui analisis kod kernel yang sepadan.

2. Konsep asas model peranti Linux

2.1 Konsep Bas, Kelas, Peranti dan Pemandu Peranti
Angka berikut ialah contoh topologi perkakasan biasa untuk sistem terbenam:


Penjelasan terperinci tentang model peranti Linux (1)_Konsep asasTopologi perkakasan menerangkan tiga daripada empat konsep penting dalam model peranti Linux: Bas, Kelas dan Peranti (yang keempat ialah Pemacu Peranti, yang akan dibincangkan kemudian).

Bus: Linux percaya (anda boleh merujuk kepada komen struct bus_type dalam include/linux/device.h) bahawa bas ialah saluran untuk pertukaran maklumat antara CPU dan satu atau lebih peranti. Untuk memudahkan abstraksi model peranti, semua peranti harus disambungkan ke bas (sama ada bas dalaman CPU, bas maya atau "Bas platform").

Kelas: Dalam model peranti Linux, konsep Kelas sangat serupa dengan Kelas dalam pengaturcaraan berorientasikan objek Ia terutamanya mengumpul peranti dengan fungsi atau atribut yang serupa, supaya satu set peranti yang boleh digunakan dalam berbilang aplikasi boleh diabstraksikan. . Struktur data dan fungsi antara muka dikongsi antara peranti. Oleh itu, pemandu yang dimiliki oleh peranti yang dimiliki oleh Kelas yang sama tidak lagi perlu mentakrifkan sumber awam ini berulang kali dan boleh mewarisi terus daripada Kelas tersebut.

Peranti: mengabstrak semua peranti perkakasan dalam sistem, menerangkan namanya, atribut, Bas bawahan, Kelas bawahan dan maklumat lain.

Pemacu Peranti: Model peranti Linux menggunakan Pemacu untuk mengabstrak pemacu peranti perkakasan, yang termasuk pelaksanaan antara muka yang berkaitan dengan pemulaan peranti dan pengurusan kuasa. Pembangunan pemacu dalam kernel Linux pada asasnya berkisar pada abstraksi ini (melaksanakan fungsi antara muka yang ditentukan).

Nota: Apakah itu Bas Platform?

Terdapat jenis peranti dalam komputer yang disambungkan terus ke CPU melalui pengawal peranti masing-masing, dan CPU boleh mengaksesnya (atau mengakses pengawalnya) melalui operasi pengalamatan biasa. Kaedah sambungan ini bukanlah sambungan bas dalam erti kata tradisional. Walau bagaimanapun, model peranti harus bersifat universal, jadi Linux mencipta Bas Platform rekaan untuk dipasang pada peranti ini.


2.2 Idea teras model peranti
Idea teras model peranti Linux ialah (untuk mencapai tujuan xxx melalui cara xxx):

1. Gunakan dua struktur data, Peranti (peranti struct) dan Pemacu Peranti (peranti_pemandu struct), untuk menerangkan peranti perkakasan dari dua perspektif "untuk apa ia digunakan" dan "cara menggunakannya" masing-masing. Ini menyatukan format untuk menulis pemacu peranti dan menukar pembangunan pemacu daripada soalan esei kepada mengisi tempat kosong, sekali gus memudahkan pembangunan pemacu peranti.

2. Juga gunakan dua struktur data Peranti dan Pemacu Peranti untuk merealisasikan plug-and-play (pertukaran panas) peranti perkakasan.

Dalam kernel Linux, selagi mana-mana Pemacu Peranti dan Peranti mempunyai nama yang sama, kernel akan melaksanakan fungsi pemula (probe) dalam struktur Pemacu Peranti, yang akan memulakan peranti dan menjadikannya tersedia.

Untuk kebanyakan peranti boleh tukar panas, Pemacu Peranti mereka sentiasa wujud dalam kernel. Apabila peranti tidak dipalamkan, struktur Perantinya tidak wujud, jadi Pemacunya tidak menjalankan operasi pemula. Apabila peranti dimasukkan, kernel akan mencipta struktur Peranti (dengan nama yang sama seperti Pemacu), yang akan mencetuskan pelaksanaan Pemacu. Ini adalah konsep plug and play.

3 Selesaikan kebergantungan antara peranti melalui struktur pokok jenis "Bus–>Peranti" (lihat legenda dalam Bab 2.1), dan kebergantungan ini amat penting dalam proses seperti menghidupkan dan mematikan kuasa, pengurusan kuasa, dsb.
Bayangkan peranti dipasang pada bas Untuk memulakan peranti, bas yang dipasang mesti dimulakan terlebih dahulu. Jelas sekali, jika terdapat banyak peranti dalam sistem dan kebergantungan adalah sangat kompleks, kernel mahupun pembangun pemacu tidak akan dapat mengekalkan hubungan ini.
Struktur pokok dalam model peranti boleh mengendalikan pergantungan ini secara automatik. Sebelum memulakan peranti, kernel akan menyemak sama ada peranti bergantung pada peranti atau bas lain. Jika ia bergantung, ia akan menyemak sama ada objek bergantung telah dimulakan bertemu. Perkara yang perlu dilakukan oleh pembangun pemacu ialah memaklumkan kernel tentang kebergantungan peranti semasa menulis pemacu peranti.

4 Gunakan struktur Kelas dan perkenalkan konsep berorientasikan objek ke dalam model peranti, yang boleh mengabstrakkan ciri umum sepenuhnya, mengurangkan pertindihan buruh dalam proses pembangunan pemandu, dan mengurangkan beban kerja.

Atas ialah kandungan terperinci Penjelasan terperinci tentang model peranti Linux (1)_Konsep asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:lxlinux.net
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan