thread & semaphore

Post on 21-Jun-2015

128 Views

Category:

Documents

13 Downloads

Preview:

Click to see full reader

TRANSCRIPT

M. ARIF RAHMAN : 070411100083MOH NASIR : 070411100103MOCH. CHOIRUL R : 070411100101MALIKUL HAMZAH : 070411100092MAMANG SETIAWAN : 070411100093NIKMATUL AKBAR : 070411100117

thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan

multithreading adalah cara komputer untuk membagibagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek sepertimenjalakan beberapa task secara bersamaan walaupun otaknya hanya satu

Responsif. Berbagi sumber daya. Ekonomis. Utilisasi arsitektur multiprosesor.

Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsitidak melalui system call. Jadi, jika kita memanggil fungsi yang sudah ada di pustaka, maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan system call.

Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan melibatkan system call ke kernel

Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM).

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

Pada web server yang multithreading ada dua masalah yang timbul:

a. Ukuran waktu yang diperlukan untuk menciptakan thread yang melayani permintaan yang diajukan pada kenyataannya thread dibuang seketika sesudah ia menyelesaikan tugasnya.

b. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Keuntungan thread pool adalah:a. Biasanya lebih cepat untuk melayani

permintaan dengan thread yang ada dibandingkan menunggu thread baru dibuat.

b. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent.

a. Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP ( lightweight process) yang tersedia.

b. System Contention Scope (SCS). SCS berfungsi untuk memilih satu dari banyak thread, kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).

Kemampuan dari SO untuk mendukung banyak (multiple), concurrent path eksekusi di dalam suatu proses tunggal.

MS-DOS mendukung proses pengguna tunggal & thread tunggal.

• Beberapa UNIX, mendukung banyak proses pengguna (user process) tetapi hanya mendukung satu thread per-proses.

• Java run-time environment (JRE) merupakan proses tunggal dengan banyak thread

• Banyak proses & thread dijumpai di Windows, Solaris, & versi modern dari UNIX (termasuk Linux)

• Semaphore:– Suatu nilai integer (bilangan bulat) yang

digunakan untuk pensinyalan (signalling) antar proses.

• Hanya tiga operasi dapat dikerjakan pada suatu semaphore, semuanya bersifat atomik:

– initialize – Decrement (semWait) – increment (semSignal)

sistem sinyal yang digunakan untuk berkomunikasi secara visual.

Digunakan untuk menyelesaikan masalah sinkronisasi secara umum.

1. Binary semaphore . Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif

2. Counting semaphore . Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan memanfaatkan binary semaphore

• Antrian (queue) digunakan untuk menangani proses yang menunggu (waiting) pada semaphore

– Dalam urutan bagaimana proses dihapus dari antrian?

• Semaphore Kuat menggunakan FIFO• Semaphore Lemah tidak menentukan

urutan penghapusan dari antrian

Operasi standar pada semafor (dalam bahasa pemrograman C):

void kunci(int sem_value) {

while(sem_value <= 0);sem_value--;

}void buka(int sem_value) {

sem_value++;}

top related