• Tidak ada hasil yang ditemukan

Cancellat ion

Dalam dokumen BAHAN KULIAH SISTEM TERDISTRIBUSI (Halaman 43-47)

BAB 2. KOMUNI KASI 27

3.1 K onsep P r oses

3.2.6 Cancellat ion

Thread cancellat ion adalah t ugas unt uk memberhent ikan t hread sebelum ia menyelesaikan t ugasnya. Sebagi cont ohnya jika dalam program java kit a hendak memat ikan Java Virt ual Machine (JVM) maka sebelum JVM-nya dimat ikan maka seluruh t hread yang berjalan dihent ikan t erlebuh dahulu. Thread yang akan diberhent ikan biasa disebut t ar get t hread.

Pemberhent ian t arget t hread dapat t erjadi melalui dua cara yang berbeda: ² Asynchronous cancellat ion: suat u t hread seket ika it u juga

memberhen-t ikan memberhen-t argememberhen-t memberhen-t hread.

² Defered cancellat ion: t arget t hread secara perodik memeriksa apakah dia harus berhent i, cara ini memper bolehkan t arget t hread unt uk mem-berhent ikan dirinya sendiri secara t erurut .

Hal yang sulit dari pemberhent ian t hread ini adalah ket ika t erjadi sit u-asi dimana sumber daya sudah dialoku-asikan unt uk t hread yang akan diber-hent ikan. Selain it u kesulit an lain adalah ket ika t hread yang diberdiber-hent ikan sedang meng-updat e dat a yang ia bagi dengan t hread lain. Hal ini akan men-jadi masalah yang sulit apabila digunakan asynchronous cancellat ion. Sist em operasi akan mengambil kembali sumber daya dari t hread yang diberhent ikan t et api seringkali sist em operasi t idak mengambil kembali semua sumber daya dari t hread yang diberhent ikan.

Alt ernat ifnya adalah dengan menggunakan de¤ered cancellat ion. Cara kerja dari de¤ered cancellat ion adalah dengan menggunakan sat u t hread yang berfungsi sebagai pengindikasi bahwa t arget t hread hendak diberhen-t ikan. Tediberhen-t api pemberhendiberhen-t ian hanya akan diberhen-t erjadi jika diberhen-t argediberhen-t diberhen-t hread memeriksa apakah ia harus berhent i at au t idak. Hal ini memperbolehkan t hread unt uk memeriksa apakah ia harus berhent i pada wakt u dimana ia dapat diberhen-t ikan secara aman yang aman. Pdiberhen-t hread merujuk diberhen-t ersebudiberhen-t sebagai cancelladiberhen-t ion point s.

BAB 3. PROSES 44

Pada umumnya sist em operasi memperbolehkan proses at au t hread un-t uk diberhenun-t ikan secara asynchr onous. Teun-t api Pun-t hread API menyediakan deferred cancellat ion. Hal ini berar t i sist em operasi yang mengimplemen-t asikan Pmengimplemen-t hread API akan mengizinkan deferred cancellamengimplemen-t ion.

3.2.7 Penanganan Sinyal

Sebuah sinyal digunakan di sist em UNI X unt uk not ify sebuah proses kalau suat u perist iwa t elah t erjadi. Sebuah sinyal dapat dit er ima secara synchro-nous at au asynchrosynchro-nous t ergant ung dari sumber dan alasan kenapa perist iwa it u memberi sinyal.

² Semua sinyal (asynchronous dan synchronous) mengikut i pola yang sama:

² Sebuah sinyal dimunculkan oleh kejadian dari suat u persit iwa. ² Sinyal yang dimunculkan t ersebut dikirim ke proses.

² Sesudah dikirim, sinyal t ersebut harus dit angani.

Cont oh dari sinyal synchronous adalah ket ika suat u proses melakukan pengaksesan memori secarai ilegal at au pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi t ersebut . Cont oh dari sinyal asynchronous misalnya kit a mengirimkan sinyal unt uk memat ikan prosesden-gan keyboar d (ALT-F4) maka sinyal asynchr onous dikirim keproses t ersebut . Jadi ket ika suat u sinyal dimunculkan oleh perist iwa diluar proses yang sedang berjalan maka proses t ersebut menerima sinyal t ersebut secara asynchronous.

Set iap sinyal dapat dit angani oleh salah sat u dari dua penerima sinyal: ² Penerima sinyal yang merupakan set awal dari sist em operasi.

² Penerima sinyal yang dide…nisikan sendiri ole user.

Penanganan sinyal pada program yang hanya memakai t hread t unggal cukup mudah yait u hanya dengan mengirimkan sinyal ke prosesnya. Tet api mengirimkan sinyal lebih rumit pada program yang mult it hreading, karena sebuah proses dapat memiliki beberapa t hread.

BAB 3. PROSES 45

² Mengirimkan sinyal ke t hread yang dit uju oleh sinyal t ersebut . ² Mengirimkan sinyal ke set iap t hread pada proses t ersebut . ² Mengirimkan sinyal ke t hread t ert ent u dalam proses.

² Menugaskan t hread khusus unt uk menerima semua sinyal yang dit u-jukan pada proses.

Cara unt uk mengirimkan sebuah sinyal t ergant ung dari jenis sinyal yang dimunculkan. Sebagai cont oh sinyal synchronous perlu dikirimkan ke t hread yang memunculkan sinyal t ersebut bukan t hread lain pada proses t ersebut . Tet api sit uasi dengan sinyal asynchronous menjadi t idak jelas. Beberapa sinyal asynchronous sepert i sinyal yang berfungsi unt uk memat ikan proses (cont oh: alt -f4) harus dikirim ke semua t hread. Beberapa versi UNI X yang mult it hreading mengizinkan t hr ead menerima sinyal yang akan ia t erima dan menolak sinyal yang akan ia t olak. Karena it u sinyal asynchronouns hanya dikirimkan ke t hread yang t idak memblok sinyal t ersebut . Solaris 2 mengim-plement asikan pilihan ke-4 unt uk menangani sinyal. Windows 2000 t idak menyediakan fasilit as unt uk mendukung sinyal, sebagai gant inya Windows 2000 menggunakan asynchronous procedur e calls (APCs). Fasilit as APC memperbolehkan user t hread unt uk memanggil fungsi t ert ent u ket ika user t hread menerima not i…kasi perist iwa t ert ent u.

3.2.8 T hr ead Pools

Pada web server yang mult it hreading ada dua masalah yang t imbul:

² Ukuran wakt u yang diperlukan unt uk mencipt akan t hread unt uk melayani permint aan yang diajukan t erlebih pada kenyat aannya t hread dibuang ket ika ia seket ika sesudah ia menyelesaikan t ugasnya.

² Pembuat an t hread yang t idak t erbat as jumlahnya dapat menurunkan performa dari sist em.

Solusinya adalah dengan penggunaan T hread Pools, cara kerjanya adalah dengan membuat beberapa t hread pada proses st art up dan menempat kan mereka ke pools, dimana mer eka duduk diam dan menunggu unt uk bekerja. Jadi ket ika server menerima permint aan maka maka ia akan membangunkan

BAB 3. PROSES 46

t hread dar i pool dan jika t hread t ersedia maka permint aan t ersebut akan dilayani. Ket ika t hread sudah selesai mengerjakan t ugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila t idak t hread yang t ersedia pada saat dibut uhkan maka server menunggu sampai ada sat u t hread yang bebas.

Keunt ungan t hread pool:

² Biasanya lebih cepat unt uk melayani permint aan dengan t hread yang ada dibanding dengan menunggu t hread baru dibuat .

² Thread pool membat asi jumlah t hread yang ada pada suat u wakt u. Hal ini pent ingpada sist em yang t idak dapat mendukung banyak t hread yang berjalan secara concurrent .

Jumlah t hread dalam pool dapat t ergant ung dari jumlah CPU dalam sist em, jumlah memori …sik, dan jumlah permint aan klien yang concurrent .

B ab 4

Dalam dokumen BAHAN KULIAH SISTEM TERDISTRIBUSI (Halaman 43-47)

Dokumen terkait