Teknologi yang mendasari mendukung Java Nio dan Nodejs
Seperti yang kita semua tahu, beberapa dukungan untuk Java Nio dan Nio2 telah ditambahkan ke versi Java terbaru. Pada saat yang sama, salah satu keunggulan yang paling dipuji dari tumpukan teknologi NodeJS adalah IO berkinerja tinggi. Jadi topik yang akan kita bahas hari ini adalah teknologi yang mendasari yang mendukung teknologi ini.
Satu pertanyaan untuk ditanyakan sebelum memulai adalah:
Mengapa NodeJs dan Java NiO2 tidak muncul sebelumnya?
Jawaban: Saya pribadi berpikir bahwa teknologi dukungan yang mendasarinya belum matang.
Jadi, apa arti teknologi yang mendasarinya? Ya, saya pikir banyak orang telah menduga bahwa itu adalah teknologi sistem operasi. Dua konsep yang diusulkan dalam artikel ini, Java NiO2 dan Nodejs, semuanya adalah teknologi negara-pengguna atau teknologi lapisan aplikasi, dan teknologi lapisan aplikasi ini dijalankan pada OS. Pada saat yang sama, dengan kemajuan sistem operasi, model pemrograman yang dapat didukung juga lebih kaya. Dapat dikatakan bahwa kedua teknologi ini sepenuhnya berkembang untuk menerapkan dividen yang dibawa oleh kemajuan sistem operasi. Secara umum, teknologi yang pertama kali menikmati bonus ini harus C/C ++, karena sebagian besar kemajuan terbaru dalam OS memberikan panggilan sistem, dan C/C ++ adalah yang paling nyaman untuk menerapkan panggilan sistem ini, tetapi juga yang paling kompleks. Untuk mendapatkan kinerja yang sama, platform lain harus terus berkembang dan mengemas sehingga pengguna dapat menggunakan dividen ini. Setelah platform itu mandek dan memperbarui, inilah saatnya platform ini untuk menurun. Semakin nyaman untuk merangkum, semakin ramah bagi pengguna, dan semakin banyak orang yang menggunakannya. Meskipun banyak orang dapat dengan cepat menulis kode berdasarkan platform ini, mereka sering tidak memahami esensi karena mereka pada dasarnya tidak memahami motivasi dan prinsip -prinsip teknologi ini. Teknologi yang kami diskusikan di bawah ini adalah teknologi yang mendasari yang terkait dengan kedua teknologi ini.
Tidak peduli desain OS mana, 5 model IO berikut sangat penting.
1. Memblokir I/O.
2. Nonblocking I/O.
3. I/O Multiplexing (Pilih, Polling dan Epoll)
4. Sinyal Drive I/O (SIGIO)
5. Asynchronous I/O (fungsi POSIX AIO_)
1. Memblokir I/O.
Seperti yang ditunjukkan pada gambar, keuntungan dari model IO ini adalah mudah diprogram dan juga salah satu model IO paling awal yang didukung oleh OS. Kerugiannya adalah bahwa sistem memanggil eksekusi utas dinamis pengguna blok, menghasilkan waktu CPU yang terbuang dan efisiensi IO rendah.
2. Nonblocking I/O.
Seperti yang ditunjukkan pada gambar, peningkatan model IO ini adalah bahwa IO tidak memblokir, tetapi membutuhkan pemungutan suara yang panjang, yang juga membuang siklus clock CPU.
3. I/O Multiplexing (Pilih, Polling dan Epoll)
Seperti yang ditunjukkan pada gambar, model IO ini adalah model IO paling stabil yang disediakan oleh OS hari ini. Sebagian besar aplikasi utama dibangun di atas model IO ini, seperti nodeJs. Namun, platform ini sering menambahkan lapisan enkapsulasi ke model ini untuk secara langsung mendukung AIO.
4. Sinyal Drive I/O (SIGIO)
Seperti yang ditunjukkan pada gambar, data mencatat bahwa model IO ini tidak memiliki keunggulan kinerja dalam perbandingan Model 3 dan jarang digunakan oleh desainer karena ketidakstabilan dalam dukungan sistem.
5. Asynchronous I/O (fungsi POSIX AIO_)
Seperti yang ditunjukkan pada gambar, model IO ini adalah AIO yang paling sempurna, dan model pemrograman juga paling sederhana, tetapi ada sangat sedikit OS yang dapat mendukung model dengan sempurna. Informasi online menunjukkan bahwa Linux melakukan upaya dalam hal ini. Setelah OS membuat kemajuan dalam aspek ini, kerangka kerja pemrograman, platform, dan model pemrograman mungkin masih perlu disederhanakan.
Meskipun model ini jarang didukung oleh OS, itu tidak berarti bahwa tidak ada model AIO seperti itu sekarang. Banyak kerangka kerja telah melakukan aspek ini dan disimulasikan AIO dalam mode pengguna, memungkinkan pengguna untuk lebih memperhatikan kode logika bisnis.
6. Sinkron asinkron, memblokir dan tidak memblokir
Sinkron dan asinkron adalah untuk interaksi antara aplikasi dan kernel. Data dibaca dan kemudian pengembalian sinkron, dan pengembaliannya tidak sinkron. Pemblokiran dan non-blocking adalah untuk proses dan utas. Utas baca atau tulis menunggu dalam mode pemblokiran, daripada mode pemblokiran, utas baca atau tulis segera mengembalikan nilai status.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.