PROSES
Konsep
Proses
Sebuah proses adalah suatu program yang sedang
dieksekusi. Proses lebih dari sebuah kode program tetapi juga mencakup program
counter, stack, dan sebuah data section. Seiring berjalannya waktu dan tuntutan
teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada
proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk
menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading
adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan
sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan
beberapa task secara bersamaan walaupun otaknya hanya satu.
Multiprocessing merupakan penggunaan dua atau lebih
CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk
menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti
CPU. Sedangkan multithreading adalah cara pengeksekusian yang mengizinkan
beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi
dapat dijalankan secara independen.
Keuntungan dari sistem yang menerapkan multithreading dapat kita
kategorikan menjadi 4 bagian:
1. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun
sebagian dari program sedang diblok atau melakukan operasi lain yang panjang.
Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna
sementara thread yang lain berusaha
menampilkan gambar.
2. Berbagi sumber daya. Beberapa
thread yang melakukan proses yang sama akan
berbagi sumber
daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa
thread yang berbeda dalam lokasi memori yang sama.
3. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian
memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena
thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis
untuk membuat thread dan context switching thread. Akan susah mengukur
perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan
pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread.
Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan
pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan
context switching thread.
4. Utilisasi arsitektur multiprosesor. Keuntungan
dari multithreading dapat sangat meningkat pada arsitektur multiprosesor,
dimana setiap thread dapat berjalan secara paralel di atas procesor yang
berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread
secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan
ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU
pada satu-satuan waktu.
De…nisi Proses
Secara
tidak langsung, proses merupakan program yang sedang dieksekusi. Menurut
Silberschatz, suatu proses adalah lebih dari sebuah kode program, yang
terkadang disebut text section. Proses jugamencakup program counter, yaitu
sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi
selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack
yang berisikan data-data yang dibutuhkan selama proses dieksekusi seperti
parameter metoda, alamat return dan variabel lokal, dan sebuah data section
yang menyimpan variabel global.
Sama
halnya dengan Silberschatz, Tanenbaum juga berpendapat bahwa proses adalah
sebuah program yang dieksekusi yangmencakup program counter, register, dan
variabel di dalamnya. Kami tekankan bahwa program itu sendiri bukanlah sebuah
proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas
yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas
aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut
yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan
agar sebuah proses dapat dieksekusi.
Untuk
mempermudah kita membedakan program dengan proses, kita akan menggunakan
analogi yang diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang
ingin membuat kue ulang tahun untuk anaknya. Tukang kue tersebut memiliki resep
kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue ulang tahun
di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan
lainnya. Dalam analogi ini, resep kue ulang tahun adalah sebuah program, si
tukang kue tersebut adalah prosesor (CPU), dan bahan-bahan untuk membuat kue
tersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang
kue untuk membaca resep, mengolah bahan, dan memanggang kue tersebut.
Walau
dua proses dapat dihubungkan dengan program yang sama, program tersebut
dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna
dapat menjalankan salinan yang berbeda pada mail program, atau pengguna yang
sama dapat meminta banyak salinan dari program editor. Tiap-tiap proses ini
adakah proses yang berbeda dan walau bagian text-section adalah sama, data section-nya
bervariasi. Adalah umum untuk memiliki proses yang menghasilkan banyak proses
begitu ia bekerja.
Status
Proses
Bila sebuah proses dieksekusi,
maka statusnya akan berubah-ubah. Status dari sebuah proses mencerminkan
aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah
status-status yangmungkin dimiliki sebuah proses menurut Tanenbaum:
- Running: pada saat menggunakan CPU pada suatu waktu.
- Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi.
- Blocked: tidak dijalankan sampai event dari luar, yang berhubungan dengan proses tersebut terjadi.
Sedangkan menurut Silberschatz,
terdapat lima macam jenis status yang mungkin dimiliki oleh suatu proses:
ü New: status yang
dimiliki pada saat proses baru saja dibuat.
ü Running: status
yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi.
ü Waiting: status yang dimiliki pada saat proses
menunggu suatu event (contohnya: proses I/O).
ü Ready: status
yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
ü Terminated: status yang dimiliki pada saat
proses telah selesai dieksekusi.
Nama-nama
tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem
operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, pada
sistem operasi tertentu lebih baik menggambarkan keadaan/status proses. Penting
untuk diketahui bahwa hanya satu proses yang dapat berjalan pada prosesor mana
pun pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau
waiting. Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada
gambar berikut.
Ada tiga kemungkinan bila sebuah
proses memiliki status running:
- Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
- Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
- Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.
Proses
Control Block
Tiap
proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB)
- juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi
yang berhubungan dengan sebuah proses yang spesi…k, termasuk hal -hal di bawah ini:
- Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
- Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
- CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan
proses tersebut berjalan/bekerja dengan
benar setelahnya. Tiap proses digambarkan dalam sistem operasi oleh sebuah
process control block (PCB) - juga disebut sebuah control block. Sebuah PCB
ditunjukkan dalam berikut. PCB berisikan banyak bagian dari informasi yang
berhubungan dengan sebuah proses yang spesi…k, termasuk hal-hal di bawah ini:
- Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
- Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
- CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
- Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
- Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah job atau proses, dan banyak lagi.
- Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
- PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
Thread
Thread
merupakan unit dasar dari penggunaan CPU, yang terdiri dari 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 heavyweight process mempunyai thread tunggal yang berfungsi
sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses
dengan thread yang banyak adalah proses dengan thread yang banyak dapat
mengerjakan lebih dari satu tugas pada satu satuan waktu.
Banyak perangkat
lunak yang berjalan pada PC modern dirancang secara multi-threading. Sebuah
aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa
thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser
mempunyai thread untuk menampilkan gam bar atau tulisan sedangkan thread yang
lain berfungsi sebagai penerima data dari network.
STATUS
PROSES
Kadang
kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa
tugas yang serupa. Sebagai contohnya sebuah web server Dapat mempunyai ratusan
klien yangmengaksesnya secara concurrent. Kalau web server berjalan sebagai
proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu
klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan
permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani.
Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini
maka sebuah web server akan membuat thread yang akan mendengar permintaan
klien, ketika permintaan lain diajukan maka web server akan menciptakan thread
lain yang akan melayani permintaan tersebut.
Java
mempunyai pengunaan lain dari thread. Perlu diketahui bahwa Java tidak
mempunyai konsep asynchronous. Sebagai contohnya kalau program java mencoba
untuk melakukan koneksi ke server maka ia akan berada dalam keadaan block state
sampai koneksinya jadi (dapat dibayangkan apa yang terjadi apabila servernya
mati). Karena Java tidak memiliki konsep asynchronous maka solusinya adalah
dengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread
lain yang pertamanya tidur selamabeberap waktu (misalnya 60 detik) kemudian
bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah
thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi
ke server, kalau thread tersebutmasih dalam keadaan mencoba untuk melakukan
koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut
untuk mencoba melakukan koneksi ke server.
Keuntungan
Thread
Keuntungan dari program yang
multithreading dapat dipisah menjadi empat kategori:
- Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
- Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
- Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.
- Utilisasi arsitektur multiprocessor: Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu -satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).
User
dan Kernel Thread
User
Thread
User thread
didukung di atas kernel dan diimplementasi oleh thread library pada user level.
Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan
managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari
user-level thread maka semua pembuatan dan penjadualan thread dilakukan di user
space tanpa intervensi dari kernel. Oleh karena itu, user-level thread biasanya
cepat untuk dibuat dan diatur. Tetapi user threadmempunyai kelemahan yaitu
apabila kernelnyamerupakan thread tunggal maka apabila salah satu user-level
thread menjalankan blocking system call maka akan mengakibatkan seluruh proses
diblok walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut.
Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris
threads.
Kernel
Thread
Kernel thread
didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen
thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread
dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih
lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh
kernel, karena itu jika sebuah thread menjalankan blocking system call maka
kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi.
Keuntungan lainnya adalah pada lingkunganmultiprocessor, kernel dapatmenjadual
thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung
kernel thread adalah Windows NT, Solaris, Digital UNIX.
Multithreading
Model
Many to one Model
Many-to-One
model memetakan banyak user-level thread ke satu kernel thread. Pengaturan
thread dilakukan di user space, oleh karena itu ia e…sien tetapi ia mempunyai
kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread
yang dapat mengakses thread pada suatu waktu makamultiple thread tidak dapat
berjalan secara pararel pada multiprocessor. Userlevel thread yang
diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan
Many-to-One model.
One
to one Model
One-to-Onemodel
memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak
concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan
keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user
thread membutuhkan pembuatan kernel thread. Karena pembuatan thread dapat
menurunkan performa dari sebuah aplikasi maka implmentasi dari model ini
membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang
mendukung One-to-One model adalah Windows NT dan OS/2.
Many
to many Model
Many-to-many model multiplexes
banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama
banyaknya dengan user-level thread. Jumlah kernel thread dapat spesi…k untuk
sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer
ntuk membuat user thread sebanyak yang iamau tetapi concurrency tidak dapat
diperoleh karena hanya satu thread yang dapat dijadual oleh kernel pada suatu
waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus
hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi
(dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas).
Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer
dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan
dapat bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread
menjalankan blocking system call maka kernel dapat menjadualkan thread lain
untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah
Solaris, IRIX, dan Digital UNIX.
Fork
dan Exec System Call
Ada dua
kemungkinan dalam system UNIX jika fork dipanggil oleh salah satu thread dalam
proses:
- Semua thread diduplikasi.
- Hanya thread yang memanggil fork.
Kalau thread
memanggil exec System Call maka program yang dispesi...kasi di parameter exec
akan mengganti keseluruhan proses termasuk thread dan LWP. Penggunaan dua versi
dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika
sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program
yang dispesi…kasi di parameter exec akan mengganti seluruh proses. Pada kasus
ini cukup hanya mengganti thread yang memanggil fork. Tetapi jika proses yang
terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya
menduplikasi seluruh thread.
Cancellation
Thread
cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan
tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan Java
Virtual Machine (JVM) maka sebelum JVM-nya dimatikan maka seluruh thread yang
berjalan dihentikan terlebuh 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.
- Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Hal yang sulit
dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya
sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan
lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia
bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila
digunakan asynchronous cancellation. Sistem operasi akanmengambil kembali
sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi
tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.
Alternatifnya
adalah dengan menggunakan de¤ered cancellation. Cara kerja dari de¤ered
cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai
pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian
hanya akan terjadi jika target threadmemeriksa apakah ia harus berhenti atau
tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti
pada waktu dimana ia dapat diberhentikan secara aman yang aman. Pthreadmerujuk
tersebut sebagai cancellation points.
Pada umumnya
sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara
asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini
berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan
deferred cancellation.
Penanganan Sinyal
Sebuah sinyal
digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah
terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous
tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal.
- Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama.
- Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.
- Sinyal yang dimunculkan tersebut dikirim ke proses.
- Sesudah dikirim, sinyal tersebut harus ditangani.
Contoh dari
sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori
secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke
proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous
misalnya kitamengirimkan sinyal untuk mematikan proses dengan keyboard
(ALT-F4)maka sinyal asynchronous dikirim ke proses tersebut. Jadi ketika suatu
sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalan maka
proses tersebut menerima sinyal tersebut secara asynchronous. Setiap sinyal
dapat ditangani oleh salah satu dari dua penerima sinyal:
- Penerima sinyal yang merupakan set awal dari sistem operasi.
- Penerima sinyal yang dide…nisikan sendiri ole user.
Penanganan
sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya
dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit
pada program yang multithreading, karena sebuah proses dapat memiliki beberapa
thread. Secara umum ada empat pilihan kemana sinyal harus dikirim:
- Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.
- Mengirimkan sinyal ke setiap thread pada proses tersebut.
- Mengirimkan sinyal ke thread tertentu dalam proses.
- Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.
Cara untuk mengirimkan
sebuah sinyal tergantung dari jenis sinyal yang dimunculkan. Sebagai contoh
sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut
bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal
asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal
yang berfungsi untuk mematikan proses (contoh: alt-f4) harus dikirim ke semua
thread. Beberapa versi UNIX yang multithreading mengizinkan thread menerima
sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu
sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal
tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal.
Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya
Windows 2000 menggunakan asynchronous procedure calls (APCs). Fasilitas APC memperbolehkan
user thread untuk memanggil fungsi tertentu ketika user thread menerima
noti…kasi peristiwa tertentu.
Thread
Pools
Pada web server
yang multithreading ada dua masalah yang timbul:
- Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.
- Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.
Solusinya adalah
dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa
thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk
diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka
maka ia akan membangunkan thread dari pool dan jika thread tersedia maka
permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan
tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak
thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu
thread yang bebas.
Keuntungan
thread pool:
- Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
- Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistemyang tidak dapatmendukung banyak thread yang berjalan secara concurrent. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori …sik, dan jumlah permintaan klien yang concurrent.
Tidak ada komentar:
Posting Komentar