Jadual Kandungan
Dalam model I/O dipacu isyarat Dalam , aplikasi menggunakan isyarat untuk memandu I/O dan memasang fungsi pemprosesan isyarat Proses terus berjalan tanpa menyekat.
I/O tak segerak (Nod) Ideal (Nod)
I/O tak segerak sebenar
Simulasi berbilang benang bagi I/O tak segerak
Rumah hujung hadapan web tutorial js Mari kita bincangkan tentang pelbagai model I/O dalam Node

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Feb 07, 2022 pm 05:56 PM
node

Artikel ini akan membincangkan pelbagai model I/O dalam Nod, dan memperkenalkan model I/O yang menyekat, model I/O yang tidak menyekat dan I/O tak segerak yang tidak menyekat membantu semua orang!

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Kami mengambil permintaan rangkaian IO sebagai contoh Pertama, kami memperkenalkan proses biasa pelayan memproses permintaan IO rangkaian lengkap:

Mari kita bincangkan tentang pelbagai model I/O dalam Node.

Aplikasi memperoleh hasil operasi, yang biasanya terdiri daripada dua peringkat berbeza:

  • Menunggu data siap

  • Menyalin data daripada kernel ke proses

Di bawah, kami mengambil fungsi recvfrom sebagai contoh untuk menerangkan pelbagai model IO

Menyekat I/O model ( menyekat I/O)

Menyekat panggilan bermakna sebelum hasil panggilan dikembalikan, utas semasa akan digantung dan utas panggilan boleh hanya tunggu selesai semua operasi di peringkat kernel sistem Selepas itu, panggilan akan ditamatkan.

Menyekat I/O menyebabkan CPU menunggu I/O dan membazirkan kepingan masa CPU.

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Model I/O tidak menyekat (I/O tidak menyekat)

Berbanding dengan yang terdahulu,

I/O tidak menyekat Kembali terus tanpa data Untuk mendapatkan data, anda perlu cuba membaca data sekali lagi melalui deskriptor fail

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Bukan-

panggilan menyekat untuk mendapatkan pulangan (Bukan data jangkaan sebenar), kepingan masa CPU boleh digunakan untuk memproses perkara lain, yang boleh meningkatkan prestasi dengan ketara.

Tetapi masalah yang datang dengannya ialah operasi sebelumnya bukanlah I/O yang lengkap, dan hasil yang dikembalikan bukanlah data perniagaan yang dijangkakan, tetapi hanya status panggilan tak segerak.

Untuk mendapatkan data yang lengkap, aplikasi perlu berulang kali memanggil operasi IO untuk mengesahkan sama ada operasi ini telah dipanggil

Polling Beberapa strategi pengundian biasa adalah seperti berikut

Sibuk mengundi

Ini adalah cara yang paling primitif dan berprestasi paling rendah. Ia menyemak status I/O melalui panggilan berulang untuk mendapatkan data lengkap

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Kelebihan: Pengaturcaraan mudah

Kelemahan: CPU sentiasa digunakan dalam tinjauan pendapat, yang juga menjejaskan prestasi pelayan, kerana pelayan masih perlu bertindak balas selepas anda membuat tinjauan pendapat

Model pemultipleksan I/O (pemultipleksan I/O)

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Dalam model pemultipleksan I/O, ia akan digunakan fungsi Pilih atau Tinjauan atau fungsi Epoll (disokong oleh kernel selepas Linux 2.6), kedua-dua fungsi ini juga akan menyebabkan proses disekat, tetapi ia berbeza daripada menyekat I/O.

Tiga fungsi ini boleh menyekat berbilang operasi I/O pada masa yang sama, dan boleh mengesan fungsi I/O berbilang operasi baca dan berbilang operasi tulis pada masa yang sama sehingga data boleh dibaca atau ditulis Fungsi operasi I/O sebenarnya dipanggil.

Perbezaan antara tiga mekanisme pemultipleksan I/O adalah seperti berikut

  • pilih

Disebabkan memilih Tatasusunan 1024 panjang digunakan untuk menyimpan status fail, jadi sehingga 1024 deskriptor fail boleh dikesan serentak

  • pungutan suara

Sedikit bertambah baik berbanding dengan pilihan Penggunaan senarai terpaut mengelakkan had panjang 1024 dan mengelakkan semakan traversal yang tidak diperlukan. >epoll/ kqueue

  • ialah mekanisme pemberitahuan acara I/O yang paling berkesan di bawah Linux Jika tiada acara I/O dikesan semasa pengundian, ia akan tidur sehingga berlaku peristiwa untuk membangkitkan benang. Ia benar-benar memanfaatkan pemberitahuan acara dan melaksanakan panggilan balik dan bukannya melintasi pertanyaan (penerangan fail), jadi ia tidak membazir CPU

Ringkasan: Pada asasnya, Undian masih lagi operasi segerak

, kerana aplikasi masih menunggu untuk I/O kembali sepenuhnya, dan semasa menunggu, ia sama ada merentasi keadaan perihalan fail atau tidur untuk menunggu peristiwa itu berlaku.

Mari kita bincangkan tentang pelbagai model I/O dalam Node

Model I/O dipacu isyarat

Dalam model I/O dipacu isyarat Dalam , aplikasi menggunakan isyarat untuk memandu I/O dan memasang fungsi pemprosesan isyarat Proses terus berjalan tanpa menyekat.

Apabila data sedia, program akan menerima isyarat SIGIO dan boleh memanggil fungsi operasi I/O dalam fungsi pemprosesan isyarat untuk memproses data.

Ringkasan: Setakat ini, model I/O dipacu isyarat lebih selaras dengan keperluan tak segerak kami Program ini akan melaksanakan logik perniagaan lain secara tak segerak sementara menunggu data.

Tetapi! ! ! Ia masih disekat semasa proses menyalin data dari kernel ke ruang pengguna, yang bukan revolusi lengkap (tak segerak).

I/O tak segerak (Nod) Ideal (Nod)

I/O tak segerak ideal kami hendaklah panggilan tidak menyekat yang dimulakan oleh aplikasi, tanpa perlu mendapatkan data melalui tinjauan pendapat , tidak perlu menunggu sia-sia semasa fasa penyalinan data, tetapi selepas I/O selesai, ia boleh dihantar ke aplikasi melalui isyarat atau fungsi panggil balik, di mana aplikasi boleh melaksanakan logik perniagaan lain.

Mari kita bincangkan tentang pelbagai model I/O dalam Node

I/O tak segerak sebenar

Sebenarnya, platform Linux secara asalnya menyokong I/O tak segerak (AIO), tetapi pada masa ini AIO tidak sempurna, jadi apabila melaksanakan pengaturcaraan rangkaian konkurensi tinggi di bawah Linux, model pemultipleksan I/O digunakan terutamanya.

Di bawah Windows, I/O tak segerak sebenar dilaksanakan melalui IOCP.

Simulasi berbilang benang bagi I/O tak segerak

Di bawah platform Linux, Node menggunakan kumpulan benang untuk membenarkan beberapa utas melakukan penyekatan I/O atau bukan- menyekat pusingan I/O Pemerolehan data diselesaikan dengan membuat pertanyaan, membenarkan benang berasingan melakukan pengiraan, dan menghantar keputusan I/O melalui komunikasi antara benang, dengan itu merealisasikan simulasi I/O tak segerak.

Malah, lapisan bawah penyelesaian tak segerak IOCP di bawah platform Windows juga dilaksanakan menggunakan kumpulan benang Perbezaannya ialah kumpulan benang yang terakhir dihoskan oleh kernel sistem.

Kita sering mengatakan bahawa Nod adalah satu benang, tetapi sebenarnya ia hanya boleh dikatakan bahawa JS dilaksanakan dalam satu utas, sama ada ia ialah *nix atau platform windows , lapisan bawah menggunakan kumpulan benang untuk menyelesaikan operasi I/O.

Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!

Atas ialah kandungan terperinci Mari kita bincangkan tentang pelbagai model I/O dalam Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Mar 28, 2023 pm 07:28 PM

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Bagaimana untuk memadam nod dalam nvm Bagaimana untuk memadam nod dalam nvm Dec 29, 2022 am 10:07 AM

Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Bagaimana untuk melakukan pencerminan Docker perkhidmatan Node? Penjelasan terperinci tentang pengoptimuman melampau Bagaimana untuk melakukan pencerminan Docker perkhidmatan Node? Penjelasan terperinci tentang pengoptimuman melampau Oct 19, 2022 pm 07:38 PM

Dalam tempoh ini, saya sedang membangunkan perkhidmatan dinamik HTML yang biasa kepada semua kategori dokumen Tencent Untuk memudahkan penjanaan dan penggunaan akses kepada pelbagai kategori, dan untuk mematuhi trend beralih ke awan, saya sedang mempertimbangkan. menggunakan Docker untuk membetulkan kandungan perkhidmatan dan mengurus versi produk secara seragam. Artikel ini akan berkongsi pengalaman pengoptimuman yang saya kumpulkan dalam proses perkhidmatan Docker untuk rujukan anda.

Analisis mendalam tentang alat pengurusan proses Node 'pm2' Analisis mendalam tentang alat pengurusan proses Node 'pm2' Apr 03, 2023 pm 06:02 PM

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi? Mar 05, 2025 pm 05:57 PM

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Mari kita bincangkan tentang cara menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku. Mari kita bincangkan tentang cara menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku. Dec 02, 2022 pm 09:06 PM

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

Apa yang perlu dilakukan jika npm nod gyp gagal Apa yang perlu dilakukan jika npm nod gyp gagal Dec 29, 2022 pm 02:42 PM

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Pengesahan berasaskan token dengan Angular dan Node Pengesahan berasaskan token dengan Angular dan Node Sep 01, 2023 pm 02:01 PM

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

See all articles