Thread pada Sistem Operasi
(Linux)
Apa itu Thread? Thread adalah
suatu alur terkecil dalam suatu proses dan dapat dijadwalkan oleh Sistem
Operasi itu sendiri. Thread dapat diartikan dengan suatu intruksi yang dapat
dilaksanakan secara bersamaan. Thread sering disebut dengan Lightweight Process.
Thread merupakan suatu unit
dasar dari penggunaan Central Processing Unit. Thread terdiri dari Thread ID,
Program Counter, Register Set dan Stack. Suatu Thread berbagi Cose Section, Data Section dan Sumber
Daya Sistem Operasi.
Ø Multithreading
Multithreading merupakan
gabungan dari beberapa proses thread yang digabungkan dan melakukan suatu
intruksi lebih dari satu dalam satu waktu. Single-Threading dan Multi-Threading
terlihat dari jumlah Thread nya. Seperti pada penyebutannya, untuk Single-Threading
hanya memiliki satu Thread dan untuk Multi-Threading lebih dari satu Thread.
·
User
Thread
Merupakan Thread yang diimplementasikan oleh thread
library pada user level dan didukung diatas kernel. Pada library menyediakan
fasilitas untuk pembuatan Thread, Penjadwalan Thread dan juga untuk mengatur
manajemen thread tanpa adanya dukungan dari Kernel.
·
Kernel
Thread
Kernel Thread bekerja pada kernel level. Kernel Thread
didukung langsung oleh Sistem Operasi. Untuk pembuatan, penjadwal serta
manajemen thread dilakukan langsung oleh kernel pada kernel space.
Terdapat tiga macam tipe hubungan antara user dan
kernel thread :
1.
Many
to One
Memetakan
beberapa threat tingkatan user ke sebuah thread kernel. Pada hal ini hanya satu
Thread user yang dapat mengakses kernel thread pada satu waktu.
2.
One
to One
Memetakan
setiap thread tingkatan user ke setiap thread dan menyediakan Concurrency lebih
banyak dibandikan model Many to One.
3.
Many
to Many
Mmultiplek dari banyak
thread tingkatan user ke kernel thread yang jumlahnya sedikit atau sama degan
tingkatan user.
Ø Thread
pada Linux
Pada saat awal kemuculan, Linux
tidak dilengkapi dengan threading pada kernelnya. Akan tetapi linux mendukung
suatu proses-proses entitas yang dapat dijadwalkan melalu clone() system calls.
Untuk sekrang, linux telah
mendukung penduplijasian proses menggunakan system call clone() dan fork(). Clone()
dan fork() berbeda dalam hal pembuatan copy dari proses yang dipanggil dimana
ia membuat sebuah proses yang terpisah yang berbagi address space dengan proses
yang dipanggil. Pembagian addres space ini dimungkinkan karena proses
direpresentasikan di dalam Kernel Linux.
Di dalam Kernel Linux setiap
proses direpresentasikan sebagai sebuah struktur data yang unik. Dalam hal ini,
daripada menciptakan yang baru maka struktur data hanya akan menunjuk ke tempat
dimana data berada. Jadi perbedaan nya ketika fork() di panggil maka proses
yang baru akan tercipta beserta duplikasi dari segala isi di struktur data di
parent proses. Namun jika clone() dipanggi, ia tidak menduplikasi parent proses
nya tetapi mencipyakan struktur data pada parent proses yang memungkinan child
proses untuk berbagi memori dan sumber daya dari parent proses nya.
Project Linux Thread menggunakan
System Call untuk mensimulasi Thread di user space. Akan tetapi hal ini
mempunyai kekurangan yaitu antara lain pada signal handling, penjadwalan dan
interproses singkronisasi.
Untuk meningkatkan
perkembangan dari Thread Linux dukungan kernel dan penulisan pustaka Thread
sangat diperlukan. Terdapat dua project yang membahas tentang kekurangan Thread
Linux itu sendiri yaitu :
1.
NGPT
(Next Generation POSIX Threads) dari IBM
2.
NPTL
(Native POSIX Thread Library) dari Red Hat
Pada Sistem Operasi Linux penggunaan istilah thread
ataupun proses sangat jarang dibandingkan dengan istilah task yang merujuk pada
pengatur atau pengontrolalan di dalam program.
Sumber Referensi :
Sumber Referensi :