Anda di halaman 1dari 58

Sistem Operasi 2009

Pertemuan 4
Thread, SMP & Microkernel

Husni
Lab. Sistem Komputer & Jaringan
Teknik Informatika Univ. Trunojoyo
Ikhtisar

• Thread: Kepemilikan sumber daya dan


Eksekusi
• Symmetric Multiprocessing (SMP).
• Microkernel
• Studi kasus thread & SMP:
– Windows
– Solaris
– Linux

2
Proses & Thread (1)
• Proses memiliki dua karakteristik:
– Resource ownership (kepemilikan sumber
daya) – proses mempunyai ruang alamat
virtual untuk menangani image proses yang
didefinisikan dalam PCB
– Scheduling-execution (penjadwalan-
eksekusi) – Mengikuti suatu path eksekusi
(trace), ada pergatian dari satu proses ke
lainnya
• Dua karakteristik ini diperlakukan secara
independen oleh sistem operasi.
3
Proses & Thread (2)

• Unit dari dispatching diacu sebagai


thread atau lightweight process
• Unit dari kepemilikan sumber daya diacu
sebagai proses atau task

4
Multithreading
• Kemampuan dari
SO untuk
mendukung
banyak (multiple),
concurrent path
eksekusi di dalam
suatu proses
tunggal.

5
Pendekatan Thread Tunggal
• MS-DOS mendukung
proses pengguna
tunggal & thread
tunggal.
• Beberapa UNIX,
mendukung banyak
proses pengguna (user
process) tetapi hanya
mendukung satu
thread per-proses.
6
Pendekatan Multithreading
• Java run-time
environment (JRE)
merupakan proses
tunggal dengan banyak
thread
• Banyak proses &
thread dijumpai di
Windows, Solaris, &
versi modern dari UNIX
(termasuk Linux)
7
Proses

• Suatu ruang alamat virtual yang


memegang process image
• Akses terproteksi ke
– Processor,
– Proses lain,
– File,
– Sumber daya I/O

8
Thread dalam Proses

• Setiap thread mempunyai


– Status eksekusi (running, ready, dll.)
– Konteks thread tersimpan saat tidak berjalan
(not running)
– Stack eksekusi
– Beberapa storage statis per-thread bagi
variabel lokal
– Akses terhadap memory & sumber daya dari
prosesnya (semua thread dari proses saling
berbagi pakai)
9
Satu Pandangan…

• Salah satu cara memandang thread


adalah sebagai suatu program counter
independen yang beroperasi di dalam
proses.

10
Thread vs. Proses

11
Keuntungan dari Thread
• Pembuatan thread baru lebih cepat dari
pada proses baru
• Penghentian thread lebih singkat daripada
penghentian proses
• Switching antara dua thread lebih singkat
daripada switching antar proses
• Thread dapat berkomunikasi satu sama
lain
– Tanpa memanggil kernel

12
Thread di Sistem Single-User

• Kerja foreground & background


• Pemrosesan asynchronous
• Kecepatan eksekusi
• Struktur program modular

13
Penanganan Thread

• Tindakan yang mempengaruhi semua


thread di dalam proses
– SO harus mengelola ini pada level proses.
• Contoh:
– Mensuspend suatu proses berarti
mensuspend semua thread dari proses
tersebut
– Menghentikan suatu proses akan
menghentikan semua thread di dalam proses
tersebut
14
Aktifitas Menyerupai Proses

• Thread mempunyai status eksekusi dan


dapat sinkron satu dengan lainnya.
– Menyerupai proses
• Ada dua aspek penting dalam
fungsionalitas thread:
– Status
– Sinkronisasi

15
Status Eksekusi Thread

• Status berasosiasi dengan perubahan


dalam status thread
– Spawn (thread yang lain)
– Block
• Isu: akan memblock thread lain atau semua
thread
– Unblock
– Finish (thread)
• Mendealokasikan konteks register dan stack

16
Contoh: Remote Procedure Call

• Anggap:
– Suatu program yang mengerjakan dua remote
procedure call (RPC)
– Terhadap dua host berbeda
– Untuk mendapatkan hasil gabungan

17
RPC dengan Thread Tunggal

18
RPC - Satu Thread per Server

19
Multithreading pada Uniprocessor

20
Adobe PageMaker

21
Kategori Implementasi Thread

• User Level Thread (ULT)

• Kernel level Thread (KLT) juga disebut:


– kernel-supported threads
– lightweight processes.

22
User-Level Thread

• Semua manajemen
thread dikerjakan
oleh aplikasi
• Kernel is not aware
of keberadaan
thread.

23
Hubungan antara ULT
Status Thread & Proses

24
Kernel-Level Thread

• Kernel memelihara
informasi konteks bagi
proses & thread
– Manajemen thread
dilakukan oleh kernel,
bukan aplikasi
• Scheduling dilakukan
pada basis thread
• Windows menggunakan
pendekatan ini
25
Keuntungan dari KLT

• Kernel dapat secara simultan menjadwal


banyak thread dari proses yang sama
pada banyak processor.
• Jika satu thread dalam suatu proses
diblock, kernel dapat menjadwal thread
yang lain dari proses yang sama.
• Rutin kernel sendiri dapat dibuat
multithread.

26
Kerugian dari KLT

• Transfer kontrol dari satu thread ke


lainnya di dalam proses yang sama
mengharuskan switch modus ke kernel

27
Pendekatan Gabungan

• Pembuatan thread
dikerjakan dalam ruang
pengguna (user space)
• Bagian terbesar dari
scheduling &
sinkronisasi thread
dalam aplikasi

• Contoh: Solaris
28
Hubungan antara Thread & Proses

29
Symmetric Multiprocessing

• Secara tradisional, komputer ditampilkan


sebagai mesin sequential.
– Processor mengeksekusi satu demi satu
instruksi (satu pada satu waktu) secara urut
(sequence)
– Setiap instruksi adalah suatu urutan operasi
• Dua pendekatan popular untuk
penyediaan parallelism
– Symmetric MultiProcessors (SMP)
– Clustering (tidak dibahas di kuliah ini)
30
Kategori Sistem Komputer (1)

• Single Instruction Single Data (SISD)


stream
– Processor tunggal mengeksekusi stream
intruksi tunggal untuk beroperasi pada data
yang disimpan dalam memory tunggal
• Single Instruction Multiple Data (SIMD)
stream
– Setiap instruksi dieksekusi pada himpunan
data berbeda oleh processor berbeda

31
Kategori Sistem Komputer (2)

• Multiple Instruction Single Data (MISD)


stream (Tidak pernah diimplementasikan)
– Serangkaian data ditransmisikan ke suatu
himpunan processor, masing-masing
mengeksekusi rangkaian instruksi berbeda
• Multiple Instruction Multiple Data (MIMD)
– Sekumpulan processor secara simultan
mengeksekusi rangkaian instruksi berbeda pada
kumpulan data berbeda

32
Arsitektur Processor Parallel

33
Symmetric Multiprocessing

• Kernel dapat berjalan pada processor


manapun
– Memungkinkan bagian-bagian kernel berjalan
secara paralel
• Biasanya setiap processor melakukan
self-scheduling dari pool proses atau
thread yang tersedia

34
Organisasi SMP (Typical)

35
Rancangan SO Multiprocessor

• Isu rancangan utama mencakup


– Proses atau thread concurrent simultan
– Scheduling (penjadwalan)
– Synchronization (sinkronisasi)
– Manajemen Memory
– Reliability dan Fault Tolerance

36
Microkernel

• Microkernel merupakan suatu inti SO kecil


yang menyediakan fondasi bagi ekstensi-
ekstensi modular.
• Pertanyaan besar: seberapa kecil
harusnya suatu kernel agar dapat disebut
sebagai microkernel
– Haruskah driver ada dalam user space?
• Dalam teori, pendekatan ini memberikan
fleksibilitas & modularitas derajat tinggi.
37
Arsitektur Kernel

38
Rancangan Microkernel:
Manajemen Memory

Manajemen memory level bawah (low-


level): Memetakan setiap page virtual ke
frame fisik
– Sebagian besar tugas manajemen memory
terjadi dalam user space

39
Rancangan Microkernel:
Komunikasi Antar Proses (IPC)

• Komunikasi antar proses (Interprocess


Communication) atau thread dalam suatu
SO mikrokernel adalah melalui message.
• Suatu message menyertakan:
– Header yang mengidetifikasi proses
pengiriman dan penerimaan, dan
– Body yang mengandung data langsung,
pointer ke suatu block data, atau beberapa
informasi kontrol mengenai proses.

40
Rancangan Microkernal:
Manajemen I/O & interrupt

• Di dalam mikrokernel, adalah mungkin


menangani interupsi hardware sebagai
message dan menyertakan port I/O dalam
ruang alamat.
– Proses user-level tertentu dilewatkan ke
interrupt & kernel memelihara pemetaan
tersebut.

41
Keuntungan dari
Organisasi Microkernel
• Interface seragam pada request dibuat
oleh suatu proses.
• Extensibility
• Flexibility
• Portability
• Reliability
• Dukungan sistem terdistribusi
• Sistem operasi berorientasi obyek
42
Studi Kasus:
Pendekatan thd Proses
• Terhadap proses, beda OS beda bentuk
dukungannya.
– Bagaimana proses dinamakan
– Apakah thread disediakan
– Bagaimana proses direpresentasikan
– Bagaimana sumber daya proses diproteksi
– Mekanisme apa yang digunakan bagi
komunikasi & sinkronisasi antar proses
– Bagaimana proses dihubungkan satu dengan
lainnya
43
Proses Windows

• Proses & service disediakan oleh kernel


Windows relatif sederhana dan bertujuan
umum (simple & general purpose)
– Diimplementasikan sebagai obyek
– Proses executable dapat mengandung satu
atau lebih thread
– Obyek proses & thread punya kemampuan
sinkronisasi built-in.

44
Hubungan Proses & Resource

45
Obyek Proses Windows

46
Obyek Thread Windows

47
Status Thread

48
Dukungan SMP Windows
• Thread dapat berjalan pada processor
apapun
– Tetapi aplikasi dapat membatasi persamaan
• Pertalian soft
– Dispatcher mencoba untuk melewatkan suatu
thread ready ke processor yang sama saat
berjalan terakhir.
– Ini membantu reuse data masih dalam yang cache
memory processor dari eksekusi thread
sebelumnya.
• Pertalian hard
– Suatu aplikasi membatasi thread untuk processor
tertentu 49
Solaris

• Solaris mengimplementasikan dukungan


thread multilevel yang dirancang untuk
menyediakan fleksibilitas dalam
mengeksploitasi sumber daya processor.
• Proses menyertakan ruang alamat
pengguna, stack, & PCB

50
Proses Solaris

• Solaris memanfaatkan empat konsep


thread-related:
– Process: memasukkan ruang alamat
pengguna, stack dan PCB.
– Thread user-level: unit eksekusi user-created
di dalam suatu proses.
– Lightweight process: suatu pemetaan antara
thread ULT & kernel.
– Thread kernel

51
Hubungan Proses & Thread

52
Unix vs Solaris Tradisional

Solaris replaces
the processor state
block with a list of
LWPs

53
Struktur Data LWP

• Suatu pengenal LWP


• Prioritas dari LWP ini
• Suatu signal mask
• Nilai-nilai tersimpan dari register user-level
• Kernel stack bagi LWP ini
• Penggunaan resource & profiling data
• Pointer ke thread kernel yang bersesuaian
• Pointer ke struktur proses
54
Status Thread Solaris

55
Tugas (task) Linux

• Proses atau task direpresentasikan oleh


suatu struktur data task_struct
• Ini mengandung sejumlah kategori,
termasuk:
– Status
– Informasi penjadwalan (scheduling)
– Pengenal (identifier)
– Komunikasi antar-proses (IPC)
– Dan lain-lain
56
Model Proses/Thread Linux

57
Tugas Pertemuan 4

• Uraikan jawaban Problems 3.1 & 3.2, 4.1


& 4.2
• Baca tutorial Thread Programming di Java
& C/C++, buat rangkumannya, sebutkan
sumber bacaan anda secara jelas!
• Jelaskan tentang Mikrokernel, mencakup
kelebihannya, kinerja, rancangan,
manajemen memory, komunikasi antar
proses, manajemen I/O & Interupsi!
58

Anda mungkin juga menyukai