comment 0

User level thread vs Kernel level thread

Sebelum kita memasuki bahasan mengenai user dan kernel level thread, ada baiknya kita mengenal terlebih dahulu apa itu thread dan proses.

Process (proses) merupakan bagian pokok dari sebuah sistem operasi. Secara sederhana, proses dapat diartikan sebagai sebuah program yang dieksekusi. Proses merupakan unit kerja terkecil yang secara individu memiliki berbagai sumber daya dan dijadwalkan sistem operasi. Sistem operasi mengelola semua proses di sistem dan mengalokasikan sumber daya ke proses sesuai kebutuhan.

Thread adalah sebuah alur kontrol sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.

Thread sendiri dapat digolongkan menjadi beberapa jenis :

Kernel-Level Threads

Untuk membuat konkurensi lebih efisien, pelaksanaan sebuah proses bisa dipisahkan menjadi beberapa thread. Dengan demikian, Sistem Operasi akan mengeksekusi suatu thread dan proses. Semua operasi thread diimplementasikan dalam kernel dan Sistem Operasi menjadwalkan semua thread dalam sistem. Sistem operasi yang memajanemen thread disebut kernel-level thread (NT) atau light weight processes (Solaris).

Dalam metode ini, kernel mengetahui dan memanajemen thread. Tidak ada runtime system yang diperlukan dalam kasus ini. Kernel memiliki thread table yang menjaga thread tetap berjalan pada sistem. Selain itu, kernel juga mempertahankan traditional process table untuk melacak proses. Sistem operasi kernel menyediakan system call untuk membuat dan mengelola thread.

keuntungan:

  • Karena kernel memiliki pengetahuan penuh dari semua thread, Scheduler dapat memutuskan untuk memberikan lebih banyak waktu untuk proses yang memiliki sejumlah besar thread dari proses memiliki sejumlah kecil thread.
  • thread-level kernel yang sangat baik untuk menerapkan blok secara kontinu.

kekurangan:

  • Kernel level thread bekerja secara lambat dan tidak efisien. Misalnya, operasi thread ratusan kali lebih lambat dibandingkan dengan user-level thread.
  • Karena kernel harus mengelola dan menjadwal thread serta proses. Ini memerlukan full thread control block (TCB) untuk setiap thread untuk menjaga informasi tentang thread. Akibatnya ada overhead yang signifikan dan meningkat dalam kompleksitas kernel.

User-Level Thread

Untuk membuat thread yang efisien dan cepat, mereka perlu diterapkan pada tingkat pengguna. Thread pada tingkat pengguna dikelola sepenuhnya oleh sistem run-time (library user-level) kernel. User-Level single-thread berukuran kecil dan cepat, setiap thread diwakili oleh PC, register, stack, dan small thread control block. Membuat thread baru, switiching antara thread, dan sinkronisasi thread dilakukan melalui pemanggilan prosedur. i.e ada keterlibatan kernel. User-level thread yang seratus kali lebih cepat dari Kernel-Level thread.

keuntungan:

  • Keuntungan yang paling jelas dari teknik ini adalah bahwa paket user-level thread dapat diimplementasikan pada sistem operasi yang tidak mendukung thread.
  • thread pada level user tidak memerlukan modifikasi untuk sistem operasi.
  • Representasi sederhana: Setiap thread diwakili hanya dengan PC, register, stack dan blok kontrol kecil, semua disimpan dalam ruang alamat proses pengguna.
  • Manajemen sederhana: Ini berarti bahwa menciptakan sebuah thread, beralih antara thread dan sinkronisasi antara thread semua bisa dilakukan tanpa intervensi dari kernel.
  • Cepat dan Efisien: Thread switching tidak jauh lebih mahal daripada panggilan prosedur.

kekurangan:

  • User Level Thread bukan solusi sempurna seperti segala sesuatu yang lain. Karena, User Level Thread tidak terlihat ke OS mereka tidak terintegrasi dengan baik dengan OS. Akibatnya, OS dapat membuat keputusan yang buruk seperti penjadwalan proses dengan thread yang menganggur, menghalangi proses yang dimulai thread I / O meskipun proses memiliki thread lain yang dapat berjalan dan unscheduling proses dengan thread yang memegang kunci. Pemecahan ini membutuhkan komunikasi antara antara kernel dan thread user-tingkat manajer.
  • kurangnya koordinasi antara thread dan kernel sistem operasi. Oleh karena itu, proses secara keseluruhan mendapat satu waktu slice irrespect apakah proses memiliki satu thread atau 1000 thread dalam. Terserah setiap thread untuk melepaskan kontrol untuk thread lainnya.
  • User Level Thread memerlukan sistem panggilan non-blocking, yaitu sebuah kernel multithreaded. Jika tidak, seluruh proses akan diblokir di kernel, bahkan jika ada benang runable tersisa di proses. Misalnya, jika satu thread menyebabkan kesalahan halaman, blok proses.

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *