Bagaimana Pelayan Web Dengar Permintaan Baru?
Apabila belajar tentang pelayan web dan cara mereka bekerja, anda mungkin ingin tahu jika mereka sentiasa mendengar permintaan atau jika mereka menunggu sehingga mereka menerima permintaan untuk bertindak. Dengan itu, jawatan SuperUser Q & A hari ini mempunyai jawapan untuk memuaskan rasa ingin tahu pembaca.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Petikan dari skrin xmodulo / Linux (Flickr).
Soalan
Pembaca SuperUser user2202911 ingin mengetahui bagaimana pelayan web mendengar permintaan baru:
Saya cuba memahami butiran 'tahap yang lebih mendalam' mengenai bagaimana pelayan web berfungsi. Saya ingin tahu jika pelayan, katakan Apache, sebagai contoh, terus mengundi untuk permintaan baru atau jika ia berfungsi oleh beberapa jenis sistem gangguan. Sekiranya ia mengganggu, apakah yang mencetuskan gangguan? Adakah kad pemandu rangkaian?
Bagaimanakah pelayan web mendengar permintaan baru??
Jawapan
Penyumbang SuperUser Greg Bowser mempunyai jawapan untuk kami:
Jawapan ringkas adalah sejenis sistem gangguan. Pada dasarnya, mereka menggunakan menyekat I / O, yang bermaksud mereka tidur (blok) sambil menunggu data baru.
- Pelayan membuat soket mendengar dan kemudian menghalang sementara menunggu sambungan baru. Sepanjang masa ini, kernel meletakkan proses menjadi tidur terganggu menyatakan dan menjalankan proses lain. Ini adalah satu perkara penting; dengan proses pemilihan secara berterusan akan membuang sumber CPU. Kernel dapat menggunakan sumber sistem dengan lebih cekap dengan menghalang proses tersebut sehingga ada pekerjaan yang perlu dilakukan.
- Apabila data baru tiba di rangkaian, kad rangkaian mengeluarkan gangguan.
- Melihat bahawa terdapat gangguan dari kad rangkaian, kernel, melalui pemacu kad rangkaian, membaca data baru dari kad rangkaian dan menyimpannya dalam ingatan. (Ini mesti dilakukan dengan cepat dan secara amnya dikendalikan di dalam pengendali interrupt.)
- Kernel memproses data yang baru tiba dan mengaitkannya dengan soket. Proses yang menyekat pada soket itu akan ditandakan runnable, bermakna bahawa ia kini layak untuk dijalankan. Ia tidak semestinya berjalan dengan serta-merta (kernel mungkin memutuskan untuk menjalankan proses lain lagi).
- Pada masa lapangnya, kernel akan membangunkan proses pelayan web yang disekat. (Memandangkan kini boleh dilaraskan.)
- Proses pelayan web terus dijalankan seolah-olah tidak ada masa yang berlalu. Panggilan sistem penyekatnya kembali dan ia memproses sebarang data baru. Kemudian pergi ke langkah 1.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.