Dengan kata lain, apa kelebihan yang dimiliki Hybrid threading lebih dari 1: 1 (hanya kernel) dan N: 1 (hanya pengguna) threading?
Ini adalah tindak lanjut untuk Apa perbedaan antara utas tingkat pengguna dan utas tingkat kernel?
operating-systems
concurrency
os-kernel
Sheldon
sumber
sumber
Jawaban:
Saya pikir hybrid threading sangat mirip dengan thread pool .
Di kolam thread, Anda menggunakan kernel thread untuk mengeksekusi “tugas”, di mana bisa jauh lebih tinggi daripada . Keuntungan menggunakan satu utas untuk setiap tugas (hanya kernel threading) adalah Anda mengkonsumsi lebih sedikit sumber daya, seperti memori (baik virtual dan fisik) dan objek kernel (setidaknya dalam kasus spesifik utas Windows, tapi saya membayangkan OS lain serupa dalam kasus ini). Anda juga mendapatkan lebih sedikit switch konteks, yang meningkatkan kinerja (dalam kasus ideal, di mana Anda memiliki banyak thread yang berjalan seperti yang Anda miliki prosesor, Anda mungkin hampir tidak memiliki switch konteks).N M M N
Keuntungan dari threading hanya pengguna adalah Anda dapat memanfaatkan beberapa CPU atau beberapa core CPU. Dan jika satu blok tugas, Anda dapat membuat utas kernel lain untuk menggunakan CPU yang tersedia lebih efisien.
Jadi, Anda mendapatkan keuntungan dari kedua pendekatan, dengan mengorbankan beberapa penjadwalan mode pengguna tambahan.
Kerugian dari penjadwalan hanya kernel mungkin latensi lebih besar: jika semua utas sibuk dan Anda menambahkan tugas pendek baru, Anda mungkin menunggu lama sebelum mulai dijalankan.
sumber