Thread merupakan konteks eksekusi yang terjadwal yang memungkinkan program untuk mengeksekusi beberapa tugas secara bersamaan. Terdapat tiga jenis utama thread, yaitu kernel thread, user-space thread satu-ke-satu, dan user-space thread banyak-ke-satu. Kernel thread berjalan langsung di kernel, sedangkan user-space thread diimplementasikan sebagai pustaka di ruang pengguna. User-space thread satu-ke-satu memiliki satu kernel thread untuk setiap
English for Proficiency Certification (EPC) - Modul 2 - Further Exercises and...
MODUL 4 SISTEM OPERASI: THREADS
1. MODUL 4 SISTEM OPERASI
Threads
1. Pokok Bahasan
1. Threads
2. Implementasi Multiple Threads pada sebuah prosesor
3. Komunikasi Multiple Threads
4. Scheduling
2. Threads
2.1 Definisi
Thread adalah sebuah konteks eksekusi yang terjadwal
o Program counter, stack, register
Program sederhana menggunakan satu thread per proses
Terdapat pula program multi-threaded.
o Multiple threads berjalan pada ruamg alamat proses yang sama
Mengapa Perlu Thread?
o Abstraksi yang paling populer untuk concurrency
o Abstraksi yang lebih ringan daripada proses
o Semua thread dalam satu proses berbagi memori, deskriptor file dll.
o Memungkinkan satu proses untuk menggunakan multiple CPU atau core
o Memungkinkan program untuk overlap I/O dan komputasi
o Memiliki manfaat yang sama dengan S.O menjalankan emacs dan gcc secara
serentak.
o Mis. Threaded web server melayani client secara serentak :
2. for ( ; ; ) {
fd = accept_client ( ) ;
thread_create ( se r vi c e _ c l i e nt , &fd);
}
o Kebanyakan kernel memiliki threads juga
o Biasanya paling tidak satu kernel thread untuk tiap proses.
Jenis Thread
Kernel thread
One to one user-space thread
Many to one
Many to many
Jangan dicampurkan dengan hardware threads/SMT/Hyperthreading Pada ini CPU memberikan lebih
banyak sumber daya fisik untuk thread
Thread package API
• t i d thread_create (void (*fn) (void * ) , void * ) ;
- Create a new thread, run fn with arg
• void thread_exit ( ) ;
- Destroy currentthread
• void thread_join ( t i d th rea d );
- Wait for thread thread to exit
2.2 Kernel thread
Merupakan konteks eksekusi multiple (multiple execution context) di dalam kernel
o Seperti dalam Java Virtual machine (JVM)
Dapat mengimplementasikan thread_create sabagai sebuah system call
Lebih cepat dari sebuah proses tapi lebih berat
Tidak berkaitan atau menyatakan apapun tentang user space
o Memerlukan pergantian konteks (context switch) dari/ke proses user.
3. Arsitektur Kernel
o Berapa banyak stack terdapat pada kernel?
o Unix edisi 6 memiliki satu kernel stack per proses.
Pada stack yang manakah penjadwal thread (thread scheduler) berjalan? Jawab: Pada
thread pertama (#1)
dua thread untuk setiap context switch.
o S.O lain (mis Barrelfish) memiliki satu kernel stack per CPU
4. 2.3 User-spaceThreads
Diimplementasikan sebagai pustaka tingkat user (user-level library )a.k.a green threads
o Satu kernel thread per proses
o thread_create, thread_exit dll hanyalah fungsi pustaka
Mengimplementasikan user-level threads
Mengalikasikan sebuah stack baru untuk tiap thread_create
Mengantrikan threads yang dapat dijalankan (runnable threads)
Mengganti pemanggilan sistem jaringan (networking system call) (read/write/dll)
o Bila operasi akan mem-blok, mengganti (switch) dan berjalan (run) pada thread yang berbeda
Menjadwalkan sinyal timer periodik (settimer)
o Pindah ke thread lain pada sinyal timer (preemption)
Contoh server web multi_threaded :
o Thread memanggil read untuk mendapatkan data dari web browser remote
Opsi pada User Space Threads:
Mengimplementasikan threads didalam sebuah proses (satu kernel thread)
Multiple kernel threads dalam sebuah proses
Kombinasi keduanya
Many –to-one threads
Pustaka thread (thread libraries) awal (dulu) :
o Green Thread (Original Java VM)
o GNU portable thread
Sering disebut sebagai thread level user murni (“pure user-level thread)
o Alias thread ringan (lightweight thread)
o Tidak diperlukan dukungan kernel
5. One-to-one User Threads
Tiap user thread adalah/memiliki sebuah kernel thread
Ekuivalen dengan :
o Lebih dari 1 proses berbagi satu addrece space
Package thread S.O. paling moderen:
o Linnux, Solaris, Windows XP, MacOSX, etc
6. Perbandingan
User-level threads
Murah untuk dibuat dan di-destroy
Cepat dalam pergantian konteks (context switch)
Dapat memblok keseluruhan proses (tidak hanya system call)
One-to-one threads
Menggunakan memori (kernel stack)
Lambat untuk melakukan switch
Gampang dijadwalkan
Menangani blocking dengan baik
7. Many-to-many Threads
Me-multiplex-kan user-level thread dalam beberapa kernel-level thread.
Satu langkah untuk sebuah multiprosesor
Dapat “menempelkan” user thread kepada kernel thread untuk meningkatkan kinerja/
prediksi.
Cost untuk migrasi thread “menarik”
Kuis 4.1 : Gambarkan bagan Jenis-jenis Thread dan berikan penjelasannya serta ilustrasi masing
masing jenis thread tsb.
Sumber :
http://www.inf.tu-dresden.de/index.php?node_id=1312&ln=en
http://spcl.inf.ethz.ch/Teaching/2016-osnet/
http://www.scs.stanford.edu/17wi-cs140/notes/