Thread, SMP & Microkernel - Komputasi
Thread, SMP & Microkernel - Komputasi
Thread, SMP & Microkernel - Komputasi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Sistem Operasi 2009<br />
Pertemuan 4<br />
<strong>Thread</strong>, <strong>SMP</strong> & <strong>Microkernel</strong><br />
H u s n i<br />
Lab. Sistem Komputer & Jaringan<br />
Teknik Informatika Univ. Trunojoyo
Ikhtisar<br />
• <strong>Thread</strong>: Kepemilikan sumber daya dan<br />
Eksekusi<br />
• Symmetric Multiprocessing (<strong>SMP</strong>).<br />
• <strong>Microkernel</strong><br />
• Studi kasus thread & <strong>SMP</strong>:<br />
– Windows<br />
– Solaris<br />
– Linux<br />
2
Proses & <strong>Thread</strong> (1)<br />
• Proses memiliki dua karakteristik:<br />
– Resource ownership (kepemilikan sumber<br />
daya) – proses mempunyai ruang alamat<br />
virtual untuk menangani image proses yang<br />
didefinisikan dalam PCB<br />
– Scheduling-execution (penjadwalaneksekusi)<br />
– Mengikuti suatu path eksekusi<br />
(trace), ada pergatian dari satu proses ke<br />
lainnya<br />
• Dua karakteristik ini diperlakukan secara<br />
independen oleh sistem operasi.<br />
3
Proses & <strong>Thread</strong> (2)<br />
• Unit dari dispatching diacu sebagai<br />
thread atau lightweight process<br />
• Unit dari kepemilikan sumber daya diacu<br />
sebagai proses atau task<br />
4
• Kemampuan dari<br />
SO untuk<br />
mendukung<br />
banyak (multiple),<br />
concurrent path<br />
eksekusi di dalam<br />
suatu proses<br />
tunggal.<br />
Multithreading<br />
5
Pendekatan <strong>Thread</strong> Tunggal<br />
• MS-DOS mendukung<br />
proses pengguna<br />
tunggal & thread<br />
tunggal.<br />
• Beberapa UNIX,<br />
mendukung banyak<br />
proses pengguna (user<br />
process) tetapi hanya<br />
mendukung satu<br />
thread per-proses.<br />
6
Pendekatan Multithreading<br />
• Java run-time<br />
environment (JRE)<br />
merupakan proses<br />
tunggal dengan banyak<br />
thread<br />
• Banyak proses &<br />
thread dijumpai di<br />
Windows, Solaris, &<br />
versi modern dari UNIX<br />
(termasuk Linux)<br />
7
Proses<br />
• Suatu ruang alamat virtual yang<br />
memegang process image<br />
• Akses terproteksi ke<br />
– Processor,<br />
– Proses lain,<br />
– File,<br />
– Sumber daya I/O<br />
8
<strong>Thread</strong> dalam Proses<br />
• Setiap thread mempunyai<br />
– Status eksekusi (running, ready, dll.)<br />
– Konteks thread tersimpan saat tidak berjalan<br />
(not running)<br />
– Stack eksekusi<br />
– Beberapa storage statis per-thread bagi<br />
variabel lokal<br />
– Akses terhadap memory & sumber daya dari<br />
prosesnya (semua thread dari proses saling<br />
berbagi pakai)<br />
9
Satu Pandangan…<br />
• Salah satu cara memandang thread<br />
adalah sebagai suatu program counter<br />
independen yang beroperasi di dalam<br />
proses.<br />
10
<strong>Thread</strong> vs. Proses<br />
11
Keuntungan dari <strong>Thread</strong><br />
• Pembuatan thread baru lebih cepat dari<br />
pada proses baru<br />
• Penghentian thread lebih singkat daripada<br />
penghentian proses<br />
• Switching antara dua thread lebih singkat<br />
daripada switching antar proses<br />
• <strong>Thread</strong> dapat berkomunikasi satu sama<br />
lain<br />
– Tanpa memanggil kernel<br />
12
<strong>Thread</strong> di Sistem Single-User<br />
• Kerja foreground & background<br />
• Pemrosesan asynchronous<br />
• Kecepatan eksekusi<br />
• Struktur program modular<br />
13
Penanganan <strong>Thread</strong><br />
• Tindakan yang mempengaruhi semua<br />
thread di dalam proses<br />
– SO harus mengelola ini pada level proses.<br />
• Contoh:<br />
– Mensuspend suatu proses berarti<br />
mensuspend semua thread dari proses<br />
tersebut<br />
– Menghentikan suatu proses akan<br />
menghentikan semua thread di dalam proses<br />
tersebut<br />
14
Aktifitas Menyerupai Proses<br />
• <strong>Thread</strong> mempunyai status eksekusi dan<br />
dapat sinkron satu dengan lainnya.<br />
– Menyerupai proses<br />
• Ada dua aspek penting dalam<br />
fungsionalitas thread:<br />
– Status<br />
– Sinkronisasi<br />
15
Status Eksekusi <strong>Thread</strong><br />
• Status berasosiasi dengan perubahan<br />
dalam status thread<br />
– Spawn (thread yang lain)<br />
– Block<br />
• Isu: akan memblock thread lain atau semua<br />
thread<br />
– Unblock<br />
– Finish (thread)<br />
• Mendealokasikan konteks register dan stack<br />
16
Contoh: Remote Procedure Call<br />
• Anggap:<br />
– Suatu program yang mengerjakan dua remote<br />
procedure call (RPC)<br />
– Terhadap dua host berbeda<br />
– Untuk mendapatkan hasil gabungan<br />
17
RPC dengan <strong>Thread</strong> Tunggal<br />
18
RPC - Satu <strong>Thread</strong> per Server<br />
19
Multithreading pada Uniprocessor<br />
20
Adobe PageMaker<br />
21
Kategori Implementasi <strong>Thread</strong><br />
• User Level <strong>Thread</strong> (ULT)<br />
• Kernel level <strong>Thread</strong> (KLT) juga disebut:<br />
– kernel-supported threads<br />
– lightweight processes.<br />
22
User-Level <strong>Thread</strong><br />
• Semua manajemen<br />
thread dikerjakan<br />
oleh aplikasi<br />
• Kernel is not aware<br />
of keberadaan<br />
thread.<br />
23
Hubungan antara ULT<br />
Status <strong>Thread</strong> & Proses<br />
24
Kernel-Level <strong>Thread</strong><br />
• Kernel memelihara<br />
informasi konteks bagi<br />
proses & thread<br />
– Manajemen thread<br />
dilakukan oleh kernel,<br />
bukan aplikasi<br />
• Scheduling dilakukan<br />
pada basis thread<br />
• Windows menggunakan<br />
pendekatan ini<br />
25
Keuntungan dari KLT<br />
• Kernel dapat secara simultan menjadwal<br />
banyak thread dari proses yang sama<br />
pada banyak processor.<br />
• Jika satu thread dalam suatu proses<br />
diblock, kernel dapat menjadwal thread<br />
yang lain dari proses yang sama.<br />
• Rutin kernel sendiri dapat dibuat<br />
multithread.<br />
26
Kerugian dari KLT<br />
• Transfer kontrol dari satu thread ke<br />
lainnya di dalam proses yang sama<br />
mengharuskan switch modus ke kernel<br />
27
Pendekatan Gabungan<br />
• Pembuatan thread<br />
dikerjakan dalam ruang<br />
pengguna (user space)<br />
• Bagian terbesar dari<br />
scheduling &<br />
sinkronisasi thread<br />
dalam aplikasi<br />
• Contoh: Solaris<br />
28
Hubungan antara <strong>Thread</strong> & Proses<br />
29
Symmetric Multiprocessing<br />
• Secara tradisional, komputer ditampilkan<br />
sebagai mesin sequential.<br />
– Processor mengeksekusi satu demi satu<br />
instruksi (satu pada satu waktu) secara urut<br />
(sequence)<br />
– Setiap instruksi adalah suatu urutan operasi<br />
• Dua pendekatan popular untuk<br />
penyediaan parallelism<br />
– Symmetric MultiProcessors (<strong>SMP</strong>)<br />
– Clustering (tidak dibahas di kuliah ini)<br />
30
Kategori Sistem Komputer (1)<br />
• Single Instruction Single Data (SISD)<br />
stream<br />
– Processor tunggal mengeksekusi stream<br />
intruksi tunggal untuk beroperasi pada data<br />
yang disimpan dalam memory tunggal<br />
• Single Instruction Multiple Data (SIMD)<br />
stream<br />
– Setiap instruksi dieksekusi pada himpunan<br />
data berbeda oleh processor berbeda<br />
31
Kategori Sistem Komputer (2)<br />
• Multiple Instruction Single Data (MISD)<br />
stream (Tidak pernah diimplementasikan)<br />
– Serangkaian data ditransmisikan ke suatu<br />
himpunan processor, masing-masing<br />
mengeksekusi rangkaian instruksi berbeda<br />
• Multiple Instruction Multiple Data (MIMD)<br />
– Sekumpulan processor secara simultan<br />
mengeksekusi rangkaian instruksi berbeda pada<br />
kumpulan data berbeda<br />
32
Arsitektur Processor Parallel<br />
33
Symmetric Multiprocessing<br />
• Kernel dapat berjalan pada processor<br />
manapun<br />
– Memungkinkan bagian-bagian kernel berjalan<br />
secara paralel<br />
• Biasanya setiap processor melakukan<br />
self-scheduling dari pool proses atau<br />
thread yang tersedia<br />
34
Organisasi <strong>SMP</strong> (Typical)<br />
35
Rancangan SO Multiprocessor<br />
• Isu rancangan utama mencakup<br />
– Proses atau thread concurrent simultan<br />
– Scheduling (penjadwalan)<br />
– Synchronization (sinkronisasi)<br />
– Manajemen Memory<br />
– Reliability dan Fault Tolerance<br />
36
<strong>Microkernel</strong><br />
• <strong>Microkernel</strong> merupakan suatu inti SO kecil<br />
yang menyediakan fondasi bagi ekstensiekstensi<br />
modular.<br />
• Pertanyaan besar: seberapa kecil<br />
harusnya suatu kernel agar dapat disebut<br />
sebagai microkernel<br />
– Haruskah driver ada dalam user space?<br />
• Dalam teori, pendekatan ini memberikan<br />
fleksibilitas & modularitas derajat tinggi.<br />
37
Arsitektur Kernel<br />
38
Rancangan <strong>Microkernel</strong>:<br />
Manajemen Memory<br />
Manajemen memory level bawah (lowlevel):<br />
Memetakan setiap page virtual ke<br />
frame fisik<br />
– Sebagian besar tugas manajemen memory<br />
terjadi dalam user space<br />
39
Rancangan <strong>Microkernel</strong>:<br />
Komunikasi Antar Proses (IPC)<br />
• Komunikasi antar proses (Interprocess<br />
Communication) atau thread dalam suatu<br />
SO mikrokernel adalah melalui message.<br />
• Suatu message menyertakan:<br />
– Header yang mengidetifikasi proses<br />
pengiriman dan penerimaan, dan<br />
– Body yang mengandung data langsung,<br />
pointer ke suatu block data, atau beberapa<br />
informasi kontrol mengenai proses.<br />
40
Rancangan Microkernal:<br />
Manajemen I/O & interrupt<br />
• Di dalam mikrokernel, adalah mungkin<br />
menangani interupsi hardware sebagai<br />
message dan menyertakan port I/O dalam<br />
ruang alamat.<br />
– Proses user-level tertentu dilewatkan ke<br />
interrupt & kernel memelihara pemetaan<br />
tersebut.<br />
41
Keuntungan dari<br />
Organisasi <strong>Microkernel</strong><br />
• Interface seragam pada request dibuat<br />
oleh suatu proses.<br />
• Extensibility<br />
• Flexibility<br />
• Portability<br />
• Reliability<br />
• Dukungan sistem terdistribusi<br />
• Sistem operasi berorientasi obyek<br />
42
Studi Kasus:<br />
Pendekatan thd Proses<br />
• Terhadap proses, beda OS beda bentuk<br />
dukungannya.<br />
– Bagaimana proses dinamakan<br />
– Apakah thread disediakan<br />
– Bagaimana proses direpresentasikan<br />
– Bagaimana sumber daya proses diproteksi<br />
– Mekanisme apa yang digunakan bagi<br />
komunikasi & sinkronisasi antar proses<br />
– Bagaimana proses dihubungkan satu dengan<br />
lainnya<br />
43
Proses Windows<br />
• Proses & service disediakan oleh kernel<br />
Windows relatif sederhana dan bertujuan<br />
umum (simple & general purpose)<br />
– Diimplementasikan sebagai obyek<br />
– Proses executable dapat mengandung satu<br />
atau lebih thread<br />
– Obyek proses & thread punya kemampuan<br />
sinkronisasi built-in.<br />
44
Hubungan Proses & Resource<br />
45
Obyek Proses Windows<br />
46
Obyek <strong>Thread</strong> Windows<br />
47
Status <strong>Thread</strong><br />
48
Dukungan <strong>SMP</strong> Windows<br />
• <strong>Thread</strong> dapat berjalan pada processor<br />
apapun<br />
– Tetapi aplikasi dapat membatasi persamaan<br />
• Pertalian soft<br />
– Dispatcher mencoba untuk melewatkan suatu<br />
thread ready ke processor yang sama saat<br />
berjalan terakhir.<br />
– Ini membantu reuse data masih dalam yang cache<br />
memory processor dari eksekusi thread<br />
sebelumnya.<br />
• Pertalian hard<br />
– Suatu aplikasi membatasi thread untuk processor<br />
tertentu<br />
49
Solaris<br />
• Solaris mengimplementasikan dukungan<br />
thread multilevel yang dirancang untuk<br />
menyediakan fleksibilitas dalam<br />
mengeksploitasi sumber daya processor.<br />
• Proses menyertakan ruang alamat<br />
pengguna, stack, & PCB<br />
50
Proses Solaris<br />
• Solaris memanfaatkan empat konsep<br />
thread-related:<br />
– Process: memasukkan ruang alamat<br />
pengguna, stack dan PCB.<br />
– <strong>Thread</strong> user-level: unit eksekusi user-created<br />
di dalam suatu proses.<br />
– Lightweight process: suatu pemetaan antara<br />
thread ULT & kernel.<br />
– <strong>Thread</strong> kernel<br />
51
Hubungan Proses & <strong>Thread</strong><br />
52
Unix vs Solaris Tradisional<br />
Solaris replaces<br />
the processor state<br />
block with a list of<br />
LWPs<br />
53
Struktur Data LWP<br />
• Suatu pengenal LWP<br />
• Prioritas dari LWP ini<br />
• Suatu signal mask<br />
• Nilai-nilai tersimpan dari register user-level<br />
• Kernel stack bagi LWP ini<br />
• Penggunaan resource & profiling data<br />
• Pointer ke thread kernel yang bersesuaian<br />
• Pointer ke struktur proses<br />
54
Status <strong>Thread</strong> Solaris<br />
55
Tugas (task) Linux<br />
• Proses atau task direpresentasikan oleh<br />
suatu struktur data task_struct<br />
• Ini mengandung sejumlah kategori,<br />
termasuk:<br />
– Status<br />
– Informasi penjadwalan (scheduling)<br />
– Pengenal (identifier)<br />
– Komunikasi antar-proses (IPC)<br />
– Dan lain-lain<br />
56
Model Proses/<strong>Thread</strong> Linux<br />
57
Tugas Pertemuan 4<br />
• Uraikan jawaban Problems 3.1 & 3.2, 4.1<br />
& 4.2<br />
• Baca tutorial <strong>Thread</strong> Programming di Java<br />
& C/C++, buat rangkumannya, sebutkan<br />
sumber bacaan anda secara jelas!<br />
• Jelaskan tentang Mikrokernel, mencakup<br />
kelebihannya, kinerja, rancangan,<br />
manajemen memory, komunikasi antar<br />
proses, manajemen I/O & Interupsi!<br />
58