Pembatalan Thread dan Penanganan Sinyal
Pembatalan Thread(Thread Cancellation)
Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh threadyang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu dalam database dan menemukan serta mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target Thread dapat dilakukan dengan 2 cara:
Asynchronous cancellation. Suatu thread seketika itu juga membatalkan target thread.
Deferred cancellation. Suatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.
Hal yang sulit dari pembatalan thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan dibatalkan. Selain itu kesulitan lain adalah ketika thread yang dibatalkan sedang meng- update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akan mengambil kembali sumber daya dari thread yang dibatalkan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang dibatalkan.
Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak dibatalkan. Tetapi pembatalan hanya akan terjadi jika target thread memeriksa apakah ia harus batal atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus batal pada waktu dimana ia dapat dibatalkan secara aman yang aman. Pthread merujuk sebagai cancellation points.
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk dibatalkan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan deferred cancellation.
Penanganan Sinyal (Signal handling)
Signal handling artinya sebuah sinyal yang digunakan untuk memberitahu sebuah proses kalau peristiwa tertentu sedang terjadi (misalkan : perubahan state thread, error, interrupt).
Sebuah sinyal diaktifkan oleh munculnya suatu peristiwa kemudian sinyal yang diaktifkan dikirim ke proses sesudah dikirim, sinyal tersebut harus ditangani.
Pola sinyal bisa asynchronous atau juga synchronous
• Sinyal Synchronous:
– Sinyal dimunculkan oleh proses dan dikirim juga ke proses yang melakukan operasi tersebut
– Ketika ada pengaksesan memory ilegal atau divison by zero
• Sinyal Asynchronous:
– Sinyal dimunculkan oleh peristiwa di luar proses tersebut
– Ketika ada proses menutup window (ALT + F4)
• Penerima sinyal dapat:
– Diatur oleh sistem operasi
– Didefinisikan oleh user
• Pada single thread penanganan sinyal mudah, tapi multithreading sulit, krn 1 proses memiliki lbh dr 1 thread
• Kemungkinan sinyal dikirim ke:
– Thread yg dituju
– Setiap thread pd proses tersebut
– Ke thread tertentu pd proses tersebut
Pembatalan Thread(Thread Cancellation)
Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh threadyang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu dalam database dan menemukan serta mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target Thread dapat dilakukan dengan 2 cara:
Asynchronous cancellation. Suatu thread seketika itu juga membatalkan target thread.
Deferred cancellation. Suatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.
Hal yang sulit dari pembatalan thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan dibatalkan. Selain itu kesulitan lain adalah ketika thread yang dibatalkan sedang meng- update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akan mengambil kembali sumber daya dari thread yang dibatalkan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang dibatalkan.
Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak dibatalkan. Tetapi pembatalan hanya akan terjadi jika target thread memeriksa apakah ia harus batal atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus batal pada waktu dimana ia dapat dibatalkan secara aman yang aman. Pthread merujuk sebagai cancellation points.
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk dibatalkan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan deferred cancellation.
Penanganan Sinyal (Signal handling)
Signal handling artinya sebuah sinyal yang digunakan untuk memberitahu sebuah proses kalau peristiwa tertentu sedang terjadi (misalkan : perubahan state thread, error, interrupt).
Sebuah sinyal diaktifkan oleh munculnya suatu peristiwa kemudian sinyal yang diaktifkan dikirim ke proses sesudah dikirim, sinyal tersebut harus ditangani.
Pola sinyal bisa asynchronous atau juga synchronous
• Sinyal Synchronous:
– Sinyal dimunculkan oleh proses dan dikirim juga ke proses yang melakukan operasi tersebut
– Ketika ada pengaksesan memory ilegal atau divison by zero
• Sinyal Asynchronous:
– Sinyal dimunculkan oleh peristiwa di luar proses tersebut
– Ketika ada proses menutup window (ALT + F4)
• Penerima sinyal dapat:
– Diatur oleh sistem operasi
– Didefinisikan oleh user
• Pada single thread penanganan sinyal mudah, tapi multithreading sulit, krn 1 proses memiliki lbh dr 1 thread
• Kemungkinan sinyal dikirim ke:
– Thread yg dituju
– Setiap thread pd proses tersebut
– Ke thread tertentu pd proses tersebut
Comments
Post a Comment