OVERVIEW
Thread arti harfiahnya adalah benang. Gitu juga kali ya dengan thread yang da di pelajaran SO. Ibarat benang yang ber-alur, Thread itu adalah alur kontrol dari sebuah proses. OS Komputer modern sekarang proses2nya biasanya (ya?) multithread. Jadi dalam sebuah proses terdapat lebih dari satu alur kontrol. Misalnya, sebuah web browser memiliki sebuah thread yang digunakan untuk men-display image atau text sementara thread yang lain digunakan untuk mendapatkan data dari network.
Thread juga disebut lightweight process, proses yang beratnya ringan (haha.. terjemahan ngasal ni..) gitu ya. kalau ada yang ringan, berarti da yang berat juga dong dong.. Iya, ternyata da juga yang disebut heavyweight process (yang beratnya berat.. halah..). trus pa bedanya?? kenapa thread disebut ringan?
setangkep za.. yang disebut heavyweignt adalah proses, kenapa? soalnya proses perlu untuk mesen memori, dan kerjaan ‘berat’ lainnya. Nah, kalau thread ga perlu pesan2 kaya gitu (kerjaan lebih ringan) karena diatinggal pakai resource-resouce punyanya proses gitu ya… jadinya lebih ringan deh…
MANFAAT MULTITHREADED
1. Responsif –> program dapat tetap berjalan meski sebagiannya sedang diblok. Program tetep bisa merespon user meski yang satunya lagi sibuk ngerjain yang lain… nah, kalo not responding ntu sebabnya apa ya… temenku nanya begitu tadi di kelas,, kira2 kenapa ya..?any idea..?
2. Resource sharing –> thread-thread saling berbagi memori dan resource lainnya. ga ngerti? tanya bosnya di sini.
3. ekonomis –> dengan alasan no.2
4. memanfaatkan arsitektur multiprosesor –> pada uni prosesor, meski sudah multithread, sebenernya yang running pada CPU pada satu waktu ttt itu hanya satu thread aja, makanya di buku dibilang sbg illusion of parallelism (ga bener2 paralel).
Nah, kalau multiprosesor, karena prosesornya da banyak, jadi thread yang bisa running juga da banyak, jadinya bener2 bisa running paralel. tar namanya apa ya?? the true paralelism.. hihi..
USER DAN KERNEL THREAD
–* user thread :
- implementasinya pakai librari
- librari mensupport pembuatan, penjadwalan, dan manajemen thread
- pembuatan, penjadwalan thread tidak da intervensi dari kernel
- karena itu dia jadi lebih cepat untuk dibuat (gpl, karena ga berhubungan ma sistem bukan c?)
–* kernel thread :
- implementasi langsung by OS
- kernel menyediakan pembuatan, penjadwalan, dan manajemen thread di kernel space.
- biasanya lebih lambat dari userthread
MODEL-MODEL MULTITHREADING
–* Model Many to One
many user to one kernel. Model ini memetakan banyak user thread ke satu kernel thread. ——piiit dulu———–nanya dong—
‘kenapa kita harus menghubungkan lagi user thread ke kernel thread? apakah permasalhan belum selesai dengan mengaturnya di user thread saja? Jadi mau ga mau si user thread itu harus berhubungan lagi bukan dengan kernel thread? kenapa kaya gitu? apa karena thread kernel lah yang nantinya akan berhubungan dengan hardware?’
Kelebihan :
- manajemen thread dilakukan di user space, jadi efisien
kekurangan :
- jika sebuah thead melakukan block system call, seluruh thread yang lain akan ikutan ke-blok.
–* Model One to One
memetakan setiap user thread ke kernel thread.
Kelebihan :
- thread lain masih bisa berjalan jika ada sebuah thread yang di-blok.
kekurangan :
- karena satu user thread harus berpasngan dengan satu kernel thread, jadi, setiap kali buat user thread baru, maka harus dibuat kernal thread baru, padahal..
- bikin kernel thread banyak2 bisa memperberat kerja sistem shg performa menurun
–* Model Many to Many
memetakan user-user thread ke kernel-kernel thread. Jumlah kernel thread lebih kecil atau sama dengan user thread (tanya kenapa?)
Cat : model ini mengambil yang baik2nya dari kedua model sebelumnya. User bisa membuat banyak user thread sesuai kebutuhan, dan kalau ada blocking system call, kernel tetep bisa menjalankan thread yang lain…
CANCELLATION
– menghentikan thread sebelum kerjanya selesai)
– contohnya : menekan tombol stop saat kita meload webpage
– thread yang akan di-cancel disebut target thread
– ada dua jenis cancellation :
1. Asynchronous
- ada satu thread khusus yang digunakan untuk men-terminate target thread segera tanpa basa basi.
- kerugian terjadi jika pembatalan dilakukan saat kita misalnya sedang meng-update data (kata Ibu bisa terjadi corrupt terhadap data, nah ini apa lagi ni).
2. Deferred
- yang ini lebih ramah nih..
- dia taaruf dulu sama target threadnya, ga langsung tembak,, hehe..
- maksudnya target thread di cek dulu kondisinya, sudahkah ia siap untuk menikah eh.. untuk di-terminate
- kalau sudah siap, ya ijab kabul aja.. eh.. ya di-terminate aja
- tapi target thread di-terminate langsung oleh dirinya sendiri (ga pake thread lain gitu ya)
THREAD POOL (pangkalan thread gituh?)
- kalau inget kata pool, inget pool bis DAMRI
- maksudnya tempat ngumpul gitu kali ya
- jadi thread pool tempat ngumpul thread
- ini bermanfaat misalnya pada server, setiap kali server menerima request, maka saat itu harus ada thread yang menanganinya. kan repot banget kalau harus buat thread terus sambil jalan.
-jadi dibuatlah semacam ‘pool’ — tempat mangkal– nya thread saat startup. kalau misalnya server dapet request, maka tinggal ‘membangunkan’ thread yang available di pool tadi.
— met belajar ! —
NB : tlg koreksi juga ya kalau ada yang ga bner.