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!

Di Linux, pengurusan fail dan direktori menggunakan arahan LS, CD, MKDIR, RM, CP, MV, dan Pengurusan Kebenaran menggunakan arahan CHMOD, Chown, dan CHGRP. 1. Perintah pengurusan fail dan direktori seperti senarai terperinci LS-L, MKDIR-P membuat direktori secara rekursif. 2. Perintah Pengurusan Kebenaran seperti Kebenaran Fail Set Chmod755File, ChownUserFile mengubah pemilik fail, dan ChGRPGroupFile Change File Group. Perintah ini berdasarkan struktur sistem fail dan sistem pengguna dan kumpulan, dan mengendalikan dan mengawal melalui panggilan sistem dan metadata.

Maintenancemodeinlinuxisaspecialbootenvironmentforcriticalsystemmaintenancetasks.itallowsadministratorstoperformTaskslikeresettingPasswords, RepairingFilesystems, andRecoveringFrombootfailureSinaminiMinalenvirenment.ToentermoDeDenance.ToentermodeShoode.ToentermodeShoode.ToentermodeShoode.ToentermoDeShoode.ToentermodeShoode.ToentermodeShoode.ToentermodeShoode.Toentermode

Komponen teras Linux termasuk kernel, sistem fail, shell, pengguna dan ruang kernel, pemandu peranti, dan pengoptimuman prestasi dan amalan terbaik. 1) Kernel adalah teras sistem, menguruskan perkakasan, memori dan proses. 2) Sistem fail menganjurkan data dan menyokong pelbagai jenis seperti Ext4, BTRFS dan XFS. 3) Shell adalah pusat arahan untuk pengguna untuk berinteraksi dengan sistem dan menyokong skrip. 4) Ruang pengguna berasingan dari ruang kernel untuk memastikan kestabilan sistem. 5) Pemandu peranti menghubungkan perkakasan ke sistem operasi. 6) Pengoptimuman prestasi termasuk konfigurasi sistem penalaan dan mengikuti amalan terbaik.

Lima komponen asas sistem Linux adalah: 1. Kernel, 2. Perpustakaan Sistem, 3. Utiliti Sistem, 4. Antara Muka Pengguna Grafik, 5. Aplikasi. Kernel menguruskan sumber perkakasan, Perpustakaan Sistem menyediakan fungsi yang telah dikompilasi, utiliti sistem digunakan untuk pengurusan sistem, GUI menyediakan interaksi visual, dan aplikasi menggunakan komponen ini untuk melaksanakan fungsi.

Mod penyelenggaraan Linux boleh dimasukkan melalui menu grub. Langkah -langkah tertentu ialah: 1) Pilih kernel dalam menu grub dan tekan 'E' untuk mengedit, 2) Tambah 'Single' atau '1' pada akhir garis 'Linux', 3) Tekan Ctrl X untuk memulakan. Mod penyelenggaraan menyediakan persekitaran yang selamat untuk tugas seperti pembaikan sistem, penetapan semula kata laluan dan peningkatan sistem.

Langkah -langkah untuk memasukkan mod pemulihan Linux adalah: 1. Mulakan semula sistem dan tekan kekunci khusus untuk memasukkan menu Grub; 2. Pilih pilihan dengan (pemulihanMode); 3. Pilih operasi dalam menu Mod Pemulihan, seperti FSCK atau Root. Mod pemulihan membolehkan anda memulakan sistem dalam mod pengguna tunggal, melakukan pemeriksaan sistem fail dan pembaikan, mengedit fail konfigurasi, dan operasi lain untuk membantu menyelesaikan masalah sistem.

Komponen teras Linux termasuk kernel, sistem fail, shell dan alat biasa. 1. Kernel menguruskan sumber perkakasan dan menyediakan perkhidmatan asas. 2. Sistem fail menganjurkan dan menyimpan data. 3. Shell adalah antara muka bagi pengguna untuk berinteraksi dengan sistem. 4. Alat umum membantu menyelesaikan tugas harian.

Struktur asas Linux termasuk kernel, sistem fail, dan shell. 1) Sumber perkakasan pengurusan kernel dan gunakan UNAME-R untuk melihat versi. 2) Sistem fail ext4 menyokong fail dan log besar dan dibuat menggunakan mkfs.ext4. 3) Shell menyediakan interaksi baris arahan seperti BASH, dan menyenaraikan fail menggunakan LS-L.


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

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

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

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini