THREAD
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa
perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan
respon dari user, pembagian sumber
daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur
multiprosesor.
Thread merupakan unit dasar dari
penggunaan CPU yang terdiri dari Thread_ID, program counter, register
set, dan stack dan thread disebut juga lightweight process. Secara
umum kita bisa simpulkan bahwa, Thread adalah sebuah alur kontrol dari sebuah
proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur
kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi
peningkatan respon dari pengguna (responsif), pembagian sumber daya proses,
ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur
multiprosesor. Akan tetapi, multithread juga dapat merugikan pengguna. Salah
satunya, jika digunakan secara berlebihan, multithreading akan berdampak pada
pemborosan resource dan CPU yang dialokasikan untuk switching threads.
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
1
Tanggap: Multithreading mengizinkan program untuk
berjalan terus walau pun pada bagian program tersebut di block atau sedang
dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat
mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
2
Pembagian sumber daya:
Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari
pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.
3
Ekonomis: Mengalokasikan
memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya,
karena thread membagi sumber daya
dari proses, ini lebih ekonomis untuk membuat threads.
4
Pemberdayaan arsitektur multiprosesor:
Keuntungann dari multithreading dapat
ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada
prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya
berpindah-pindah antara setiap thread
dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya
hanya satu thread yang berjalan di
setiap waktu. User thread didukung
oleh kernel dan diimplementasikan oleh thread
library ditingkat pengguna. Library mendukung
untuk pembentukan thread,
penjadualan, dan manajemen yang tidak didukung oleh kernel.
Keadaan
thread yang dapat kita ketahui seperti:
- new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat.
- runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM dan memanggil run() method untuk membuat objek.
- block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya: sleep() atau suspend().
- dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop() method dipanggil.
Thread pada OS seperti, Threads di
dalam Solaris 2 sudah dilengkapi dengan library mengenai API-API untuk pembuatan
dan managemen thread. Di dalam Solaris 2 terdapat juga level tengah thread. Di
antara level pengguna dan level kernel thread terdapat proses ringan/ lightweight
(LWP). Setiap proses yang ada setidaknya mengandung minimal satu buah LWP.
Library thread memasangkan beberapa thread level pengguna ke ruang LWP-LWP
untuk diproses, dan hanya satu user-level thread yang sedang terpasang ke suatu
LWP yang bisa berjalan. Sisanya bisa diblok mau pun menunggu untuk LWP yang
bisa dijalankan.
Ada
tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
- Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
- Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
- Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.
Proses adalah suatu
program yang sedang dieksekusi. Suatu proses meliputi:
·
Program
counter
Tempat untuk
menyimpan alamat suatu proses yang akan dieksekusi selanjutnya
·
Stack
tempat penyimpanan
temporary data yang dibutuhkan selama program dieksekusi
·
Data
section
mengandung variabel
global dari suatu proses
Itu kan dibahas
secara khusus, tapi kalo secara informal; proses adalah program dalam eksekusi.
Suatu proses itu merupakan lebih dari kode program, dimana kadang kala dikenal
sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi,
sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar
prosesor/ processor’s register. Suatu proses umumnya juga termasuk process
stack, yang berisikan data temporer (seperti parameter metoda, address yang
kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel
global.
Keadaan proses itu
seperti di bawah ini:
·
New
:
Proses sedang dikerjakan/ dibuat.
·
Running
:
Instruksi sedang dikerjakan.
·
Waiting
:
Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah
penyelesaian I/Oatau penerimaan sebuah tanda/ signal).
·
Ready
:
Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
·
Terminated
:
Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.
Dari pernyataan dan
pengertian antara thread dan proses maka kita bisa simpulkan bahwa perbedaan
thread dengan prose situ adalah thread berbeda dengan proses karena thread
memiliki address space yang sama yang artiya mereka berbagi variable global.
karenanya masing2 thread dapat saling mengakses virtual address, membaca,
menulis bahkan menghentikan thread lain. Sedangkan proses bisa dimiliki oleh
user dan kemungkinan proses tersebut menunggu atau ditahan proses yang lain.
proses selalu dimiliki oleh satu user sehingga mereka dapat saling bekerja sama
tidak saling berbenturan.
Multithreading
Contoh Multithreading
·
Web browser : memiliki satu thread
untuk display image, dan thread yang lain untuk mengambil data dari network.
·
Web server : menerima request dari
client untuk halaman web, image, sound, dll. Web server melayani client secara
bersamaan (concurrent).
Single thread dan multi thread
1. Single thread: process hanya
mengeksekusi satu thread saja pada satu waktu.
2. Multi thread: process dapat
mengeksekusi sejumlah thread dalam sata waktu.
Keuntungan Multithreading
o
Multithreading memungkinkan suatu
program running walaupun sebagian program di-block atau menjalankan operasi
yang lain.
o
Thread dalam suatu proses yang sama
dapat men-share memori dan resource dengan thread yang lain. Mengijinkan sebuah
aplikasi untuk memiliki beberapa thread yang berbeda dalam lokasi memori yang
sama
o
Alokasi memori dan resource untuk
pembuatan proses memiliki cost yang mahal. Dalam hal context-switch,
lebih ekonomis bila dilakukan dengan thread context-switch.
o
Meningkatkan kinerja pada arsitektur
multiprocessor, dimana thread running secara paralel pada prosesor yang
berbeda.
User Threads
- Implementasi thread di level pengguna (dengan menggunakan pustaka/library thread).
- Pustaka menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
- Keuntungan : Dapat lebih cepat dibuat dan dikendalikan karena tanpa campur tangan kernel
- Kelemahan : salah 1 thread pengguna menjalankan blocking system call maka mengakibatkan seluruh proses diblok
Kernel Threads
- Didukung langsung oleh sistem operasi
- Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space
- Keuntungan :
- jika thread menjalankan blocking system call kernel dpt menjalankan thread lain di aplikasi untuk melakukan eksekusi.
- Pada lingkungan multiprosesor, kernel dapat menjadwal thread-thread pada prosesor yang berbeda
- Kelemahan : lebih lambat daripada user kernel
Model MultiTrading:
One to one: Memetakan setiap user thread ke dalam 1 kernel threa.
Kelebihan: Model one-to-one lebih sinkron daripada model many-to-one
karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat
pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread
bisa berjalan secara parallel dalam multiprosesor .
Kekurangan: Dalam pembuatan user thread diperlukan pembuatan
korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread
dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi
model ini membatasi jumlah thread yang didukung oleh sistem.
Model ini ada pada Windows NT dan
OS/2.
One to Many: memetakan beberapa tingkatan thread user hanya ke satu
buah kernel thread.
Kelebihan: Managemen proses thread dilakukan oleh (di ruang) pengguna,
sehingga menjadi lebih efisien.
Kekurangan: multi thread tidak dapat berjalan atau bekerja secara
paralel di dalam multiprosesor karena hanya satu thread saja yang bisa
mengakses kernel dalam suatu waktu.
Model ini ada pada Solaris Green dan
GNU Portable.
Many to Many : Membolehkan setiap tingkatan user thread dipetakan ke
banyak kernel thread.
Kelebihan:
* Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Dan ketika suatu thread
menjalankan blocking system call maka kernel dapat menjadwalkan thread lain
untuk melakukan eksekusi.
Kekurangan:
* Developer dapat membuat user
thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya
satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Model ini ada pada Solaris, IRIX,
dan Digital UNIX.
Thread pada OS Windows dengan task
manager:
1.
-Bagian
Proses yang sedang berjalan.
2.
-Bagian
Performa
3.
-Bagian
Histori pada aplikasi
4.
-Bagian
pada Startus
5.
-Bagian Users
6.
-Bagian Details
7.
Bagian service
REFERENSI
:
Pertemuan 4 - Threads
















Tidak ada komentar:
Posting Komentar