18.07.2013 Views

Thread, SMP & Microkernel - Komputasi

Thread, SMP & Microkernel - Komputasi

Thread, SMP & Microkernel - Komputasi

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!