Linux io merujuk kepada operasi fail; dalam Linux, fail ialah satu siri strim binari, jadi semasa pertukaran maklumat, kita semua melakukan operasi penghantaran dan penerimaan data pada strim ini sebagai operasi I/O; memandangkan Linux menggunakan mekanisme memori maya, kernel mesti diminta melalui panggilan sistem untuk menyelesaikan operasi IO.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
Apakah maksud linux io?
Kita semua tahu bahawa dalam dunia Linux, semuanya adalah fail.
Fail ialah aliran binari, sama ada Soket, FIFO, paip atau terminal, bagi kami, semuanya adalah aliran.
Dalam proses pertukaran maklumat, kita semua melakukan operasi penghantaran dan penerimaan data pada aliran ini, yang dirujuk sebagai operasi I/O.
Baca data daripada strim, sistem memanggil Baca, tulis data dan sistem memanggil Tulis.
Biasanya IO lengkap proses pengguna dibahagikan kepada dua peringkat:
IO Cakera:
IO Rangkaian:
Sistem pengendalian dan pemacu dijalankan dalam ruang kernel, dan aplikasi berjalan dalam ruang pengguna Kedua-duanya tidak boleh menggunakan penunjuk ke pindahkan data kerana Mekanisme memori maya yang digunakan oleh Linux mesti meminta kernel melalui panggilan sistem untuk menyelesaikan operasi IO.
Terdapat tiga jenis IO: memori IO, rangkaian IO dan cakera IO Biasanya apabila kita bercakap tentang IO, kita merujuk kepada dua yang terakhir.
Mengapa model IO diperlukan?
Jika anda menggunakan kaedah segerak untuk berkomunikasi, semua operasi dilaksanakan secara berurutan dalam urutan, jadi Kelemahannya adalah jelas:
- Oleh kerana operasi komunikasi segerak akan menyekat mana-mana operasi lain pada urutan yang sama, hanya selepas operasi ini selesai, operasi seterusnya boleh diselesaikan, jadi terdapat Sekatan segerak + berbilang benang (setiap Soket mencipta benang yang sepadan dengannya), tetapi bilangan benang dalam sistem adalah terhad, dan penukaran benang membuang masa, yang sesuai untuk situasi di mana terdapat sedikit Soket.
Model IO perlu muncul.
Model Linux IO
Sebelum menerangkan model Linux IO, mari kita fahami proses bacaan data sistem Linux:
Ambil permintaan pengguna untuk fail index.html sebagai contoh untuk menggambarkan
Konsep asas
Ruang dan kernel pengguna Ruang
Inti sistem pengendalian ialah kernel, yang bebas daripada aplikasi biasa dan mempunyai akses kepada ruang memori yang dilindungi dan semua kebenaran untuk mengakses peranti perkakasan asas.
- Untuk memastikan keselamatan kernel, proses pengguna tidak boleh mengendalikan kernel secara langsung Sistem pengendalian membahagikan ruang maya kepada dua bahagian, satu ruang kernel dan satu lagi ruang pengguna.
Penukaran Proses
Untuk mengawal pelaksanaan proses, kernel mesti mempunyai keupayaan untuk menangguhkan proses yang berjalan pada CPU dan menyambung semula proses yang digantung sebelum ini.
Tingkah laku ini dipanggil penukaran proses.
Oleh itu, boleh dikatakan sebarang proses berjalan dengan sokongan kernel sistem pengendalian dan berkait rapat dengan kernel.
Menyekat proses
Proses pelaksanaan, disebabkan peristiwa tertentu yang dijangka tidak berlaku, seperti kegagalan untuk meminta sumber sistem, menunggu penyempurnaan operasi tertentu, data baharu Jika ia masih belum tiba atau tiada kerja baharu yang perlu dilakukan, sistem akan secara automatik melaksanakan penyekatan primitif (Blok) untuk menukar dirinya daripada keadaan berjalan kepada keadaan menyekat.
Ia boleh dilihat bahawa penyekatan proses adalah tingkah laku aktif proses itu sendiri Oleh itu, hanya proses dalam keadaan berjalan (mendapatkan CPU) boleh mengubahnya menjadi keadaan tersekat.
Apabila proses memasuki keadaan menyekat, ia tidak menduduki sumber CPU.
Penerangan Fail
Penerangan Fail ialah istilah dalam sains komputer dan merupakan abstraksi yang digunakan untuk menyatakan rujukan kepada konsep.
Deskriptor fail ialah integer bukan negatif dalam bentuk Malah, ia adalah nilai indeks yang menunjuk ke jadual rekod fail yang dibuka oleh proses yang diselenggara oleh kernel untuk setiap proses.
- Apabila program membuka fail sedia ada atau mencipta fail baharu, kernel mengembalikan deskriptor fail kepada proses.
IO Cache
Operasi IO lalai untuk kebanyakan sistem fail ialah IO cache.
Proses membaca dan menulis adalah seperti berikut:
Kendalian baca: Sistem pengendalian menyemak sama ada penimbal kernel mempunyai data yang diperlukan Jika ia telah dicache, ia kembali terus daripada cache; cakera, kad rangkaian, dsb. Baca masuk, dan kemudian cache dalam cache sistem pengendalian; ruang kernel. Pada masa ini, operasi menulis telah selesai untuk program pengguna Bagi masa untuk menulis ke cakera, kad rangkaian, dsb., ia ditentukan oleh sistem pengendalian, melainkan arahan penyegerakan dipanggil secara eksplisit.
Dengan mengandaikan bahawa tiada data yang diperlukan dalam cache ruang kernel, proses pengguna membaca data daripada cakera atau rangkaian dalam dua peringkat:
Program kernel membaca data dari cakera, kad rangkaian, dll. ke cache ruang kernel; > Program pengguna menyalin data dari cache ruang kernel ke ruang pengguna.
Kelemahan IO yang dicache:
Semasa proses penghantaran data, berbilang operasi penyalinan data diperlukan dalam ruang alamat aplikasi dan ruang kernel. CPU dan overhed memori yang disebabkan oleh operasi penyalinan data ini adalah sangat besar. Sekatan segerakAplikasi ruang pengguna melaksanakan panggilan sistem, yang menyebabkan aplikasi menyekat dan tidak melakukan apa-apa sehingga data sedia dan data disalin daripada kernel ke proses pengguna , dan akhirnya proses memproses data Semasa dua peringkat menunggu data dan memproses data, keseluruhan proses disekat dan tidak boleh memproses IO rangkaian lain.
Ini juga merupakan model IO yang paling ringkas Tidak ada masalah untuk menggunakannya apabila FD biasanya kurang dan cepat siap.Tidak menyekat segerakSelepas panggilan sistem tidak menyekat dipanggil, proses tidak disekat dan kernel kembali ke proses dengan serta-merta data belum siap lagi, ralat akan dikembalikan.
Ulang proses di atas dan buat panggilan sistem dalam satu kitaran. Proses ini sering dipanggil pengundian.
Undian menyemak data kernel sehingga data sedia, kemudian menyalin data ke proses untuk pemprosesan data.
Perlu diingatkan bahawa semasa keseluruhan proses penyalinan data, proses itu masih disekat.
-
Dengan cara ini, anda boleh menetapkan Soket
dalam pengaturcaraan. Pemultipleksan IO
Pemultipleksan IO, ini ialah keupayaan proses untuk memaklumkan kernel terlebih dahulu, supaya Apabila kernel mendapati bahawa satu atau lebih keadaan IO yang ditentukan oleh proses sudah sedia, ia memberitahu proses. Membolehkan proses menunggu siri acara.
O_NONBLOCK
Kaedah pelaksanaan semasa penggunaan semula IO terutamanya termasuk Pilih, Tinjauan dan Epoll.
Pemandu isyarat
Mula-mula kami benarkan Socket memberi isyarat kepada Drive IO dan memasang fungsi pemprosesan isyarat Proses ini terus berjalan tanpa menghalang. Apabila data sedia, proses akan menerima isyarat SIGIO dan boleh memanggil fungsi operasi I/O dalam fungsi pemprosesan isyarat untuk memproses data.
Prosesnya adalah seperti berikut:
while(status == OK) { // 不断轮询 ready_fd_list = io_wait(fd_list); //内核缓冲区是否有准备好的数据 for(fd in ready_fd_list) { data = read(fd) // 有准备好的数据读取到用户缓冲区 process(data) }}
Dayakan fungsi IO pemacu isyarat soket
panggilan sistem Sigaction Laksanakan fungsi pemprosesan isyarat (tidak menyekat, kembali serta-merta)
Data sedia, jana isyarat Sigio dan maklumkan aplikasi untuk membaca data melalui panggilan balik isyarat
Terdapat masalah besar dengan kaedah IO ini: baris gilir isyarat dalam Linux adalah terhad Jika nombor ini melebihi, data tidak boleh dibaca
- Tidak menyekat tak segerak
Proses IO tak segerak adalah seperti berikut:
panggilan sistem, ia boleh mula melakukan perkara lain serta-merta, benang pengguna tidak menyekat
Inti akan menghantar isyarat kepada utas pengguna, atau memanggil semula utas pengguna Antara muka panggil balik berdaftar memberitahu urutan pengguna bahawa operasi Baca telah selesai
aio_read
Urutan pengguna membaca data dalam penimbal pengguna dan melengkapkan operasi perniagaan seterusnya- Berbanding dengan IO segerak, IO tak segerak tidak dilaksanakan secara berurutan.
- Pemandu isyarat memberitahu kami bila operasi IO boleh dimulakan oleh kernel (data dalam buffer kernel), manakala IO asynchronous dimaklumkan oleh kernel apabila operasi IO telah selesai (data sudah berada dalam ruang pengguna).
- Gunakan
aio_read
atauaio_write
untuk memulakan operasi IO tak segerak dan gunakanaio_error
untuk menyemak status menjalankan operasi IO.
Selepas proses pengguna membuat panggilan sistem aio_read
, tidak kira sama ada data kernel sedia atau tidak, ia akan dikembalikan terus kepada proses pengguna, dan kemudian proses mod pengguna boleh melakukan perkara lain .
Apabila data sedia, kernel terus menyalin data ke proses, dan kemudian menghantar pemberitahuan daripada kernel kepada proses.
Berbanding dengan IO dipacu isyarat, perbezaan utama IO tak segerak ialah:
IO tak segerak juga dipanggil IO dipacu peristiwa Dalam Unix, satu set fungsi perpustakaan ditakrifkan untuk akses tak segerak kepada fail, dan satu siri antara muka AIO ditakrifkan.
Pelaksanaan kernel semasa AIO dalam Linux hanya berkesan untuk fail IO Jika anda ingin melaksanakan AIO sebenar, anda perlu melaksanakannya sendiri.
Pada masa ini terdapat banyak perpustakaan IO tak segerak sumber terbuka, seperti libevent, libev dan libuv.
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah maksud linux io?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Lima komponen teras sistem operasi Linux adalah: 1. Kernel, 2. Perpustakaan Sistem, 3. Alat Sistem, 4. Perkhidmatan Sistem, 5. Sistem Fail. Komponen ini bekerjasama untuk memastikan operasi sistem yang stabil dan cekap, dan bersama -sama membentuk sistem operasi yang kuat dan fleksibel.

Lima elemen teras Linux adalah: 1. Kernel, 2. Antara muka baris arahan, 3. Sistem fail, 4. Pengurusan pakej, 5. Komuniti dan sumber terbuka. Bersama -sama, unsur -unsur ini menentukan sifat dan fungsi Linux.

Pengurusan dan keselamatan pengguna Linux boleh dicapai melalui langkah-langkah berikut: 1. Buat pengguna dan kumpulan, menggunakan arahan seperti Sudouseradd-M-GDevelopers-S/Bin/Bashjohn. 2. Besar membuat pengguna dan tetapkan dasar kata laluan, menggunakan arahan Loop dan Chpasswd. 3. Semak dan selesaikan kesilapan biasa, direktori rumah dan tetapan shell. 4. Melaksanakan amalan terbaik seperti dasar kriptografi yang kuat, audit biasa dan prinsip kuasa minimum. 5. Mengoptimumkan prestasi, gunakan sudo dan laraskan konfigurasi modul PAM. Melalui kaedah ini, pengguna boleh diuruskan dengan berkesan dan keselamatan sistem dapat ditingkatkan.

Operasi teras sistem fail dan pengurusan proses Linux termasuk pengurusan sistem fail dan kawalan proses. 1) Operasi sistem fail termasuk membuat, memadam, menyalin dan memindahkan fail atau direktori, menggunakan arahan seperti MKDIR, RMDIR, CP dan MV. 2) Pengurusan proses melibatkan proses permulaan, pemantauan dan pembunuhan, menggunakan arahan seperti ./my_script.sh&, atas dan membunuh.

Skrip shell adalah alat yang berkuasa untuk pelaksanaan perintah automatik dalam sistem Linux. 1) Skrip shell melaksanakan baris arahan mengikut baris melalui penterjemah untuk memproses penggantian pembolehubah dan penghakiman bersyarat. 2) Penggunaan asas termasuk operasi sandaran, seperti menggunakan arahan TAR untuk menyokong direktori. 3) Penggunaan lanjutan melibatkan penggunaan fungsi dan penyata kes untuk menguruskan perkhidmatan. 4) Kemahiran penyahpepijatan termasuk menggunakan set-x untuk membolehkan mod debugging dan set-e untuk keluar apabila arahan gagal. 5) Pengoptimuman prestasi disyorkan untuk mengelakkan subshells, menggunakan array dan gelung pengoptimuman.

Linux adalah sistem operasi multi-user, pelbagai tugas yang berasaskan UNIX yang menekankan kesederhanaan, modulariti dan keterbukaan. Fungsi terasnya termasuk: Sistem Fail: Dianjurkan dalam struktur pokok, menyokong pelbagai sistem fail seperti Ext4, XFS, BTRFS, dan menggunakan DF-T untuk melihat jenis sistem fail. Pengurusan Proses: Lihat proses melalui arahan PS, menguruskan proses menggunakan PID, yang melibatkan tetapan keutamaan dan pemprosesan isyarat. Konfigurasi Rangkaian: Tetapan fleksibel alamat IP dan menguruskan perkhidmatan rangkaian, dan gunakan sudoipaddradd untuk mengkonfigurasi IP. Ciri-ciri ini digunakan dalam operasi kehidupan sebenar melalui arahan asas dan automasi skrip lanjutan, meningkatkan kecekapan dan mengurangkan kesilapan.

Kaedah untuk memasukkan mod penyelenggaraan Linux termasuk: 1. Edit fail konfigurasi grub, tambah parameter "tunggal" atau "1" dan mengemas kini konfigurasi grub; 2. Edit parameter permulaan dalam menu Grub, tambah "Single" atau "1". Mod penyelenggaraan keluar hanya memerlukan memulakan semula sistem. Dengan langkah -langkah ini, anda boleh memasukkan mod penyelenggaraan dengan cepat apabila diperlukan dan keluar dengan selamat, memastikan kestabilan sistem dan keselamatan.

Komponen teras Linux termasuk kernel, shell, sistem fail, pengurusan proses dan pengurusan memori. 1) Sumber Sistem Pengurusan Kernel, 2) Shell menyediakan antara muka interaksi pengguna, 3) Sistem fail menyokong pelbagai format, 4) Pengurusan proses dilaksanakan melalui panggilan sistem seperti garpu, dan 5) Pengurusan memori menggunakan teknologi memori maya.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna
