Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah maksud linux io?

Apakah maksud linux io?

藏色散人
藏色散人asal
2023-03-24 09:43:502425semak imbas

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.

Apakah maksud linux 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:

Apakah maksud linux io?

IO Rangkaian:

Apakah maksud linux io?

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:

Apakah maksud linux io?

Ambil permintaan pengguna untuk fail index.html sebagai contoh untuk menggambarkan

Apakah maksud linux io?

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:

peringkat Pertama:

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.

Aplikasi panggilan berada dalam keadaan di mana ia tidak lagi menggunakan CPU dan hanya menunggu jawapan, jadi ini sangat cekap dari perspektif pemprosesan.

Ini juga merupakan model IO yang paling ringkas Tidak ada masalah untuk menggunakannya apabila FD biasanya kurang dan cepat siap.

Tidak menyekat segerak

Selepas panggilan sistem tidak menyekat dipanggil, proses tidak disekat dan kernel kembali ke proses dengan serta-merta data belum siap lagi, ralat akan dikembalikan.
Selepas proses kembali, ia boleh melakukan perkara lain sebelum membuat panggilan sistem.

Apakah maksud linux io?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.

Apakah maksud linux io?

Pseudokod yang menerangkan pemultipleksan IO:

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.

Apakah maksud linux io?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:

Apabila urutan pengguna memanggil

panggilan sistem, ia boleh mula melakukan perkara lain serta-merta, benang pengguna tidak menyekat Apakah maksud linux io?

Inti memulakan fasa pertama IO: menyediakan data. Apabila kernel menunggu sehingga data sedia, ia akan menyalin data daripada penimbal kernel ke penimbal pengguna

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_readUrutan pengguna membaca data dalam penimbal pengguna dan melengkapkan operasi perniagaan seterusnya

  • Berbanding dengan IO segerak, IO tak segerak tidak dilaksanakan secara berurutan.
  • 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:

    • 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).

    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.

    • Gunakan aio_read atau aio_write untuk memulakan operasi IO tak segerak dan gunakan aio_error untuk menyemak status menjalankan operasi IO.

    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.

    Apakah maksud linux io?

    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!

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
Artikel sebelumnya:Apakah tty1 di bawah linuxArtikel seterusnya:Apakah tty1 di bawah linux