Proses dan Thread
PROSES DAN THREAD
Dalam blog ini akan dijelaskan tentang proses dan thread untuk membiarkan komputer melakukan lebih dari satu kegiatan pada satu waktu, proses dan thread memberikan layanan besar, tetapi ada perbedaan antara mereka dalam cara mereka beroperasi. Semua program yang berjalan pada komputer menggunakan setidaknya satu proses atau thread . Proses dan thread membiarkan saklar prosesor lancar antara beberapa tugas sambil berbagi sumber daya komputer.
Konsep Proses
• Program yang sedang dieksekusi
• Proses tidak hanya sekedar suatu kode program (text
section),
melainkan meliputi beberapa aktivitas yang bersangkutan
seperti
program counter dan stack.
• Sebuah proses juga melibatkan stack yang berisi data
sementara
(parameter fungsi/metode, return address, dan variabel
lokal) dan
data section yang menyimpan variabel-variabel global.
• Proses adalah sebuah program yang dieksekusi yang
mencakup program counter, register, dan variabel di
dalamnya.
• Sistem Operasi mengeksekusi proses dengan dua cara
yaitu Batch System yang mengeksekusi jobs dan Timeshared
System yang mengatur pengeksekusian program
pengguna (user) atau tasks.
• Sistem operasi UNIX mempunyai system call fork yang
berfungsi untuk membuat proses baru
•Proses yang memanggil system call fork ini akan dibagi
jadi dua, proses induk dan proses turunan yang identik.
Terminasi Proses
• Suatu proses diterminasi ketika proses tersebut telah
selesai
mengeksekusi perintah terakhir serta meminta sistem operasi
untuk
menghapus perintah tersebut dengan menggunakan system call
exit.
• Proses dapat mengembalikan data keluaran kepada proses induknya melalui system call wait
Status Proses
• Running: status yang dimiliki pada saat instruksi-instruksi
dari
sebuah proses dieksekusi.
• Waiting: status yang dimiliki pada saat proses menunggu
suatu
sebuah event seperti proses M/K.
• Ready: status yang dimiliki pada saat proses siap untuk
dieksekusi
oleh prosesor.
• New: status yang dimiliki pada saat proses baru saja
dibuat.
• Terminated: status yang dimiliki pada saat proses telah
selesai
dieksekusi.
Proses Control Block
Setiap 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 spesifik, termasuk hal-hal di
bawah
ini:
Status Proses
Program counter
CPU Register
Informasi Manajemen Memori
Informasi pencatatan
Proses Thread
• Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu 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
gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data
dari network.
• Situasi dimana sebuah aplikasi diperlukan untuk
menjalankan beberapa tugas yang serupa
• Contohnya adaah sebuah web server yang dapat mempunyai
ratusan klien yang mengaksesnya 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.
Thread Dalam Proses
• 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
Keuntungan Thread
1. 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.
2. Berbagi sumber daya : thread berbagi memori dan sumber
daya
dengan thread lain yang dimiliki oleh proses yang sama.
Keuntungannya adalah mengizinkan sebuah aplikasi untuk
mempunyai beberapa thread yang berbeda dalam lokasi memori
3. 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.
4. 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).
Multithreading
• Thread pengguna: Thread yang pengaturannya dilakukan oleh
pustaka thread pada tingkatan pengguna. Karena pustaka yang
menyediakan fasilitas untuk pembuatan dan penjadwalan
thread,
thread pengguna cepat dibuat dan dikendalikan.
• Thread Kernel: Thread yang didukung langsung oleh kernel.
Pembuatan, penjadwalan dan manajemen thread dilakukan oleh
kernel pada kernel space. Karena dilakukan oleh sistem
operasi,
proses pembuatannya akan lebih lambat jika dibandingkan
Model Multithreading
1. Model MANY TO ONE
2. Model ONE TO ONE
3. Model MANY TO MANY
Multithreading Models
1. Many-to-One Model
• Memetakan banyak user-level thread ke satu kernel thread
• Pengaturan thread dilakukan di user space
• Efisien tetapi ia mempunyai kelemahan yang sama dengan user thread
• Tidak dapat berjalan secara pararel pada multiprocessor
2. One-to-One Model■ Memetakan setiap user thread ke kernel thread
■ Menyediakan lebih banyak concurrency dibandingkan Manyto-One model
■ Keuntungannya sama dengan keuntungan kernel thread
■ Kelemahannya setiap pembuatan user thread membutuhkan pembuatan kernel thread yang dapat menurunkan performa dari sebuah aplikasi
■ Sistem operasi yang mendukung One-to-One model adalah
Windows NT dan OS/2
Pustaka Thread
• Pustaka Thread atau yang lebih familiar dikenal dengan
Thread Library
bertugas untuk menyediakan API (API (Application Programming
Interface))
untuk programmer dalam menciptakan dan memanage thread. Ada
dua cara
dalam mengimplementasikan pustaka thread :
a. Menyediakan API dalam level pengguna tanpa dukungan dari
kernel sehingga
pemanggilan fungsi tidak 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.
b. Menyediakan API di level kernel yang didukung secara
langsung oleh sistem
operasi. Pemanggilan fungsi call akan melibatkan system call
ke kernel.
• Ada tiga pustaka thread yang sering digunakan saat ini,
yaitu: POSIX
Pthreads, Java, dan Win32. Implementasi POSIX standard dapat
dengan
cara user level dan kernel level, sedangkan Win32 adalah
kernel level. Java
API thread dapat diimplementasikan oleh Pthreads atau Win32.
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 thread yang 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.
PENJADWALAN THREAD
• Begitu dibuat, thread baru dapat dijalankan dengan
berbagai
macam penjadwalan. Kebijakan penjadwalanlah yang menentukan
setiap proses, di mana proses tersebut akan ditaruh dalam
daftar
proses sesuai proritasnya dan bagaimana ia bergerak dalam
daftar proses tersebut.
Comments
Post a Comment