18.07.2013 Views

Thread, SMP & Microkernel - Komputasi

Thread, SMP & Microkernel - Komputasi

Thread, SMP & Microkernel - Komputasi

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!