Thread pada Sistem Operasi: Difference between revisions
Created page with "border|rightThread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter, register set, dan stack. Sebuah Thread berbagi cod..." |
|||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[File:Thread1.jpg| | [[File:Thread1.jpg|thumb]] | ||
Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter, register set, dan stack. Sebuah Thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. | |||
Thread juga sering disebut ''lightweight process''. Sebuah proses tradisional atau ''heavy weight'' process mempunyai thread tunggal yang berfungsi sebagai pengendali. | Thread juga sering disebut ''lightweight process''. Sebuah proses tradisional atau ''heavy weight'' process mempunyai thread tunggal yang berfungsi sebagai pengendali. | ||
| Line 43: | Line 44: | ||
==Model Thread== | ==Model Thread== | ||
===Model Many to One=== | ===Model Many to One=== | ||
[[File:Thread2.jpg| | [[File:Thread2.jpg|thumb]] | ||
Model ini dimana beberapa user thread memilki relasi dengan satu kerel thread. dengan ini thread kernel kan menjalankan satu user thread pada satu saat. Namun kelemahan model ini adalah ketika kernel thread terkena lock oleh user thread, dan user thread lainnya harus menunggu kernel thread untuk menyelesakan tugas pada thread yang saat itu. Contoh library Green thread yang menggunakan model ini dan berjalan di pada Java Runtime Environment. Namun karena thread blocking tersebut model ini mulai di tinggalkan. | Model ini dimana beberapa user thread memilki relasi dengan satu kerel thread. dengan ini thread kernel kan menjalankan satu user thread pada satu saat. Namun kelemahan model ini adalah ketika kernel thread terkena lock oleh user thread, dan user thread lainnya harus menunggu kernel thread untuk menyelesakan tugas pada thread yang saat itu. Contoh library Green thread yang menggunakan model ini dan berjalan di pada Java Runtime Environment. Namun karena thread blocking tersebut model ini mulai di tinggalkan. | ||
====Kelebihan==== | ====Kelebihan==== | ||
| Line 49: | Line 50: | ||
====Kekurangan==== | ====Kekurangan==== | ||
*Multithread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu. Model ini ada pada Solaris Green dan GNU Portable. | *Multithread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu. Model ini ada pada Solaris Green dan GNU Portable. | ||
===Model One to One=== | ===Model One to One=== | ||
[[File:Thread3.jpg| | [[File:Thread3.jpg|thumb]] | ||
Model ini dimana setiap user thread memilki relasi dengan hanya satu kernel thread. sehinggal user thread memiliki jumlah yang sama dengan jumlah kernel thread. dengan ini jika salah satu thread kernel sedang di block, thread lain bisa berjalan secara parallel. Namun kekurangan dari model ini adalah sistem akan menanggung beban yang berat jika jumlah kernel thread terlalu banyak. Model ini banyak digunakan oleh sistem operasi Microsoft Windows, Linux/GNU, dan Apple MacOS. | Model ini dimana setiap user thread memilki relasi dengan hanya satu kernel thread. sehinggal user thread memiliki jumlah yang sama dengan jumlah kernel thread. dengan ini jika salah satu thread kernel sedang di block, thread lain bisa berjalan secara parallel. Namun kekurangan dari model ini adalah sistem akan menanggung beban yang berat jika jumlah kernel thread terlalu banyak. Model ini banyak digunakan oleh sistem operasi Microsoft Windows, Linux/GNU, dan Apple MacOS. | ||
====Kelebihan==== | ====Kelebihan==== | ||
| Line 56: | Line 58: | ||
====Kekurangan==== | ====Kekurangan==== | ||
*Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model ini ada pada Windows NT dan OS/2. | *Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model ini ada pada Windows NT dan OS/2. | ||
===Model Many to Many=== | ===Model Many to Many=== | ||
[[File:Thread4.jpg| | [[File:Thread4.jpg|thumb]] | ||
Model ini dimana terdapat banyak user thread dan setiap threadnya dapat dijalankan oleh salah satu thread yang di kernel space. Kernel thread memilki jumlah yang sama atau lebih sedikit dari jumlah user thread. dalam model ini sangat flexible dibandingkan dengan model sebelumnya namun untuk programmer untuk mengimplementasikannya lebih sulit. | Model ini dimana terdapat banyak user thread dan setiap threadnya dapat dijalankan oleh salah satu thread yang di kernel space. Kernel thread memilki jumlah yang sama atau lebih sedikit dari jumlah user thread. dalam model ini sangat flexible dibandingkan dengan model sebelumnya namun untuk programmer untuk mengimplementasikannya lebih sulit. | ||
====Kelebihan==== | ====Kelebihan==== | ||
| Line 64: | Line 67: | ||
====Kekurangan==== | ====Kekurangan==== | ||
*Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Model ini ada pada Solaris, IRIX, dan Digital UNIX. | *Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Model ini ada pada Solaris, IRIX, dan Digital UNIX. | ||
===Cancellation=== | ===Cancellation=== | ||
Thread cancellation ialah pemberhentian thread sebelum tugasnya selesai. Umpama, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan biasa disebut target thread.Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda:Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. | Thread cancellation ialah pemberhentian thread sebelum tugasnya selesai. Umpama, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan biasa disebut target thread.Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda:Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. | ||