(ULT) Kernel-Level Thread (KLT)

advertisement
Thread, SMP,
dan
Microkernel
(Pertemuan ke-5)
Agustus 2010
Pokok Bahasan
• Pokok Bahasan:
– Thread, SMP, dan Microkernel
• Sub Pokok Bahasan:
– Multithreading
– Fungsionalitas thread
– Jenis-jenis thread
• TIU:
– Mahasiswa dapat memahami konsep dasar Thread,
SMP, dan Microkernel
• TIK:
– Mahasiswa dapat menjelaskan prinsip multithreading
– Mahasiswa dapat menjelaskan fungsionalitas thread
– Mahasiswa dapat menjelaskan jenis-jenis thread
Bahasan:




Proses dan Thread
SMP
Microkernel
Bedah OS:
 Windows
 Solaris
 Linux
Sistem Operasi/20100830 #3
Agenda:
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
• Status thread
• Sinkronisasi thread
– Contoh aplikasi: Adobe PageMaker
– Jenis thread:
• User-Level Thread (ULT)
• Kernel-Level Thread (KLT)
• Kombinasi ULT dan KLT
– Model thread lainnya
• Relasi Satu ke Banyak
• Relasi Banyak ke Banyak
• SMP
• Microkernel
• Bedah OS
Sistem Operasi/20100830 #4
Konsep Proses
• Kepemilikan resource:
– Process memerlukan ruang alamat virtual untuk menyimpan
process image
– Process image = program + data + stack + PCB
– Unit terkecil yang dapat memiliki resource adalah proses atau
task
– Resource = memori, I/O channel, I/O device, file, CPU, dll
• Penjadualan/eksekusi:
– Mengikuti jalur eksekusi (trace)
– Eksekusi suatu proses bisa secara interleaving (selang-seling)
dengan proses lain
Thread = pecahan dari suatu proses yang dapat dijadualkan atau
dieksekusi = lightweight process (LWP)
Sistem Operasi/20100830 #5
Multithreading (1)
• Merupakan kemampuan sistem operasi dalam
mengeksekusi banyak thread yang berasal dari
sebuah proses
• OS tradisional:
– Satu proses hanya terdiri dari satu thread
– MS-DOS: hanya satu proses dan tiap proses hanya
satu thread
– UNIX tradisional: banyak proses, tetapi tiap proses
hanya satu thread
• OS modern:
– Banyak proses dan tiap proses terdiri dari banyak
thread
– Misal: Windows, Solaris, Linux, Mach, dan OS/2
Sistem Operasi/20100830 #6
Multithreading (2)
Sistem Operasi/20100830 #7
Apa yang dimiliki oleh Thread ?
• Status eksekusi thread (running, ready,
dll.)
• Simpanan konteks thread (pada saat tidak
running)
• Stack eksekusi
• Beberapa storage statis untuk menyimpan
variabel lokal
• Hak akses ke memori dan resource yang
dimiliki oleh proses
– Memori dan resource digunakan bersamasama oleh semua thread dari sebuah proses
(share)
Sistem Operasi/20100830 #8
Model Thread
• Thread Control Block (TCB) = isi register + prioritas + info thread
lainnya
Sistem Operasi/20100830 #9
Threads sharing
• Thread menempati ruang alamat memori yang
sama
• Tiap thread dapat mengakses data yang sama
• Jika suatu thread mengubah data di memori,
maka thread yang lain dapat mengetahui
perubahan data tersebut
• Jika sebuah thread sedang membuka suatu file,
maka thread yang lain juga dapat membaca isi
file tersebut
Sistem Operasi/20100830 #10
Apa keuntungan dari penerapanThread
• Pembentukan suatu thread jauh lebih cepat
daripada pembentukan proses baru
– Penelitian menunjukkan pembentukan thread 10x
lebih cepat daripada pembentukan proses
• Terminasi suatu thread jauh lebih cepat daripada
terminasi proses
• Perpindahan eksekusi antar thread jauh lebih
cepat
• Antar thread dapat berkomunikasi tanpa
melibatkan kernel
– Sebagai efek dari penggunaan share memori dan file
Sistem Operasi/20100830 #11
Contoh Penggunaan Thread (1)
• Aktifitas foreground dan background
– MS Excell: tiap satu tugas dilakukan oleh satu thread:
•
•
•
•
Tampilkan menu
Baca inputan dari user
Eksekusi perintah user
Update data
• Pemrosesan Asynchronous
– MS Word: proteksi data jika listrik tiba-tiba padam
• Ada thread yang tugasnya khusus untuk melakukan
penyimpanan data dari RAM ke harddisk secara periodik
• Jadual thread langsung dikendalikan oleh sistem operasi
Sistem Operasi/20100830 #12
Contoh Penggunaan Thread (2)
• Percepatan eksekusi
– Ada thread yang bertugas melakukan pengolahan
data dan dalam waktu bersamaan ada thread yang
bertugas mengambil data berikutnya yang akan diolah
– File server
• Setiap ada request dari user dibentuk sebuah thread baru
• Bila request telah selesai, maka thread diterminasi
• Struktur program Modular
– Thread diterapkan pada aplikasi dengan berbagai
macam aktifitas dan bermacam-macam input dan
output
Sistem Operasi/20100830 #13
Bagaimana OS mengatur Thread ?
• Level thread:
– Eksekusi setiap thread diatur dengan
penjadualan
• Level proses:
– Suatu proses yang di-suspend akan
menyebabkan semua thread proses tersebut
juga di-suspend bersama-sama
• Sebagai konsekuensi dari penggunaan ruang
memori bersama (share)
– Terminasi suatu proses akan berakibat semua
threadnya juga diterminasi
Sistem Operasi/20100830 #14
Apakah status Thread sama dengan
status Proses ?
• Mirip (ready, running, blocked), kecuali status
suspend
• Operasi pada thread:
– Spawn = pembentukan thread
• Otomatis thread terbentuk saat proses terbentuk
• Thread bisa dibentuk oleh thread lain dalam satu proses
• Thread baru berada pada antrian ready
– Block
• Thread diblok bila menunggu suatu event
• Register user, PC, dan stack pointer disimpan
– Unblock
• Bila event datang  thread menjadi ready
– Finish
• Tugas thread telah selesai  register dan stack dihapus
Sistem Operasi/20100830 #15
Remote Procedure Call (RPC) dengan
Single Thread pada Uniprocessor
• RPC merupakan cara berinteraksi antara 2 buah program
yang dieksekusi pada mesin yang sama/berbeda dengan
menggunakan semantik dan sintaks procedure call/return
• Keterangan gambar:
– Sebuah program melakukan 2 buah RPC pada 2 buah host/server
berbeda untuk mendapatkan suatu hasil gabungan
– Kedua RPC harus dilakukan secara bergantian  lama
Sistem Operasi/20100830 #16
Remote Procedure Call (RPC) dengan
banyak Thread pada Uniprocessor
• Request dari thread A dan thread B dapat dieksekusi hampir
bersamaan pada server yang berbeda
• Hasil lebih cepat dibanding hanya dengan single thread
Sistem Operasi/20100830 #17
Multithreading pada Uniprocessor
• Pada uniprogramming suatu thread bisa dieksekusi bila thread
yang sedang dieksekusi ter-blok atau karena time out
• Mirip dengan proses
Sistem Operasi/20100830 #18
Sinkronisasi Thread
• Thread menggunakan ruang alamat
memori yang sama  bila terjadi
perubahan data pada suatu resource dapat
mempengaruhi thread yang lain
• Bagaimana agar antar thread tidak saling
mengganggu dan tidak saling
memperebutkan resource ?
– Digunakan metode sinkronisasi yang mirip
dengan sinkronisasi yang digunakan pada
proses
Sistem Operasi/20100830 #19
Agenda:
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
• Status thread
• Sinkronisasi thread
– Contoh aplikasi: Adobe PageMaker
– Jenis thread:
• User-Level Thread (ULT)
• Kernel-Level Thread (KLT)
• Kombinasi ULT dan KLT
– Model thread lainnya
• Relasi Satu ke Banyak
• Relasi Banyak ke Banyak
• SMP
• Microkernel
• Bedah OS
Sistem Operasi/20100830 #20
Contoh aplikasi multithread:
Adobe PageMaker
• Adobe PageMaker
merupakan aplikasi untuk
menulis, merancang, dan
menghasilkan desktop
publishing
• Aplikasi berjalan pada shared
system pada sistem operasi
OS/2
• Terdiri dari 3 thread yang
selalu aktif:
– Service thread
– Event-handling thread
– Screen-redraw thread
Sistem Operasi/20100830 #21
Mengapa Adobe PageMaker dirancang
terdiri dari beberapa Thread ?
• Sistem operasi OS/2 kurang responsif
dalam menangani window (jendela) jika
terdapat data (message) masuk yang
memerlukan pemrosesan serius
– Aplikasi yang memanggil subroutine untuk
nge-print akan menyebabkan data (message)
yang dibutuhkan oleh aplikasi lain terlambat
diterima  performansi menurun
– Solusi pada Adobe PageMaker:
• Beberapa operasi yang memerlukan banyak waktu
ditangani oleh service thread (initialization, import,
autoflow, dan printing)
Sistem Operasi/20100830 #22
Agenda:
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
• Status thread
• Sinkronisasi thread
– Contoh aplikasi: Adobe PageMaker
– Jenis thread:
• User-Level Thread (ULT)
• Kernel-Level Thread (KLT)
• Kombinasi ULT dan KLT
– Model thread lainnya
• Relasi Satu ke Banyak
• Relasi Banyak ke Banyak
• SMP
• Microkernel
• Bedah OS
Sistem Operasi/20100830 #23
Jenis Thread
• User-Level Thread (ULT)
– Semua manajemen thread dilakukan oleh
program aplikasi
– Tidak ada code program untuk mengatur
thread pada program kernel
• Kernel-Level Thread (KLT)
= kernel supported threads = lightweight
process
– Semua manajemen thread dilakukan oleh
kernel
– Tidak ada code program untuk mengatur
thread pada program aplikasi
Sistem Operasi/20100830 #24
User-Level Thread (ULT)
–
–
–
–
(1)
• Jumlah thread sudah
direncanakan sejak membuat
program aplikasi
• Terdapat thread library pada kode
program
• Relasi antara thread user:thread
kernel adalah M:1
• Isi thread library adalah kode
program untuk:
Membentuk dan menghapus thread
Melewatkan pesan dan data antar thread
Menjadualkan eksekusi thread
Menyimpan dan mengambil konteks thread
• Contoh OS: POSIX (Pthread), Mach (C-thread), dan
Solaris 2 (UI-thread)
Sistem Operasi/20100830 #25
User-Level Thread (ULT)
(2)
• Prosedur eksekusi ULT
– Mula-mula program aplikasi dieksekusi hanya dengan
satu thread
– Pada saat aplikasi tersebut dieksekusi thread
berikutnya dibuat (bila diperlukan)
• Pembuatan thread baru dilakukan dengan cara memanggil
utility yang ada di thread library
• Pada saat library dieksekusi  konteks (user register, PC, dan
stack pointer) thread yang sedang running disimpan
– Thread library membuat struktur data baru untuk
setiap thread yang dibentuk
• Setelah thread library selesai  konteks thread yang akan
dieksekusi diambil
Sistem Operasi/20100830 #26
Contoh hubungan antara status ULT
dengan status Proses
Sistem Operasi/20100830 #27
Keterangan
•
Gambar a:
–
–
•
(1)
Proses B terdiri dari 2 thread (thread 1 dan thread 2)
Status proses B adalah running sama dengan status
thread 2, sedangkan status thread 1 adalah ready
Gambar b:
–
–
–
Proses B terblok akibat thread 2 yang sedang running
melakukan system call
Status thread 2 masih tetap berstatus running dilihat
dari sisi thread library
Saat proses B kembali running, thread mana yang
akan dieksekusi ???
Sistem Operasi/20100830 #28
Keterangan
•
(2)
Gambar c:
Proses B berubah status dari running ke ready akibat
jatah waktunya telah habis
Status thread 1 dan thread 2 tidak berubah
Thread 2 masih tetap berstatus running dilihat dari sisi
–
–
–
thread library
–
•
Saat proses B kembali running, thread mana yang akan
dieksekusi ???
Gambar d:
–
–
–
Eksekusi thread 2 telah sampai pada tahap dimana
diperlukan hasil dari thread 1, maka status thread 2
berubah dari running menjadi blocked
Giliran eksekusi diberikan pada thread 1
Status proses B tetap running
Sistem Operasi/20100830 #29
Kelebihan ULT dibanding KLT
• Pergantian thread (thread switching) tidak
melibatkan kernel, sehingga overhead akibat
perubahan 2 buah mode switch (user ke kernel
dan kernel ke user) dapat dihindari
• Algoritma penjadualan eksekusi thread suatu
aplikasi bisa berbeda dengan aplikasi yang lain
– Lebih fleksibel
– Tidak tergantung dengan algoritma penjadualan untuk
proses
• ULT dapat dijalankan pada sistem operasi
berbeda-beda, karena tidak bergantung pada
kernel
Sistem Operasi/20100830 #30
Kekurangan ULT dibanding KLT
• Jika sebuah thread pada sebuah proses
melakukan system call akan menyebabkan
semua thread pada proses tersebut tidak
dapat dieksekusi (semua terhenti)
• Penggunaan multiprocessor tidak dapat
dimanfaatkan secara maksimal
– Dalam satu saat kernel hanya mengijinkan
satu thread saja yang dapat dieksekusi untuk
setiap proses
Sistem Operasi/20100830 #31
Solusi terhadap kekurangan ULT
• Aplikasi dipecah-pecah menjadi banyak proses, setiap satu
proses satu thread saja
– Kerugian: overhead akibat mode switching meningkat
– Apa manfaat solusi ini ?
• Mengubah system call yang menyebabkan proses terblok
menjadi system call yang tidak menyebabkan proses
terblok
– Ada routine yang khusus untuk memeriksa status I/O device
sibuk atau tidak (disebut dengan jacket routine)
– Thread yang memerlukan I/O device cukup memanggil jacket
routine
– Bila I/O sibuk, thread masuk ke status blocked dan giliran
eksekusi diberikan pada thread lainnya (status proses tetap
running)
– Demikian seterusnya hingga didapatkan status I/O device
ready
Sistem Operasi/20100830 #32
Agenda:
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
• Status thread
• Sinkronisasi thread
– Contoh aplikasi: Adobe PageMaker
– Jenis thread:
• User-Level Thread (ULT)
• Kernel-Level Thread (KLT)
• Kombinasi ULT dan KLT
– Model thread lainnya
• Relasi Satu ke Banyak
• Relasi Banyak ke Banyak
• SMP
• Microkernel
• Bedah OS
Sistem Operasi/20100830 #33
Kernel-Level Thread (KLT)
• Jumlah thread sudah
direncanakan sejak membuat
program aplikasi
• Kernel menangani isi konteks
proses dan setiap thread
• Penjadualan bukan berbasis
pada proses tetapi berbasis
pada thread
• Relasi antara thread user :
thread kernel adalah 1:1
• Model KLT digunakan pada
sistem operasi Windows NT,
Windows 2000, Solaris 2,
BeOS, Tru64 UNIX, OS/2
Sistem Operasi/20100830 #34
Kelebihan KLT dibanding ULT
• Thread-thread yang berasal dari sebuah
proses dapat dieksekusi pada prosesor
berbeda secara bersamaan
• Thread yang melakukan service call tidak
menyebabkan proses terblok, thread
lainnya dalam satu proses masih dapat
dieksekusi
• Routine kernel dapat terdiri dari banyak
thread
Sistem Operasi/20100830 #35
Kekurangan KLT dibanding ULT
• Perpindahan eksekusi dari satu thread ke
thread lainnya menyebabkan overhead
akibat mode switch
• Algoritma penjadualan eksekusi suatu
aplikasi harus mengikuti algoritma
penjadualan sistem operasi
– Tidak fleksibel
• KLT tidak dapat dijalankan pada sistem
operasi berbeda-beda, karena tergantung
pada kernel masing-masing
Sistem Operasi/20100830 #36
Perbandingan Latency (µS) antara ULT,
KLT, dan Single Process/thread (1)
• Hasil diperoleh dengan uniprocessor VAX dan sistem
operasi UNIX-like
• Benchmark yang digunakan:
– Null Fork
• Waktu yang diperlukan untuk membuat, menjadualkan,
mengeksekusi sebuah proses/thread yang memanggil prosedur null
secara lengkap
• Prosedur null = prosedur fork (membuat proses/thread baru)
– Signal-Wait
• Waktu yang diperlukan oleh sebuah proses/thread untuk memberi
signal pada proses/thread yang sedang menunggu kondisi
Sistem Operasi/20100830 #37
Perbandingan Latency (µS) antara ULT,
KLT, dan Single Process/thread (2)
• Analisis:
– Latency pada KLT jauh lebih baik daripada
latency pada sebuah proses/thread tunggal
– Latency pada ULT jauh lebih baik daripada
latency pada KLT
– Hasil bergantung pada jenis aplikasi yang
diujikan
– Bila digunakan aplikasi yang lebih banyak
memerlukan kernel mode bisa jadi KLT lebih
baik daripada ULT
Sistem Operasi/20100830 #38
Agenda:
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
• Status thread
• Sinkronisasi thread
– Contoh aplikasi: Adobe PageMaker
– Jenis thread:
• User-Level Thread (ULT)
• Kernel-Level Thread (KLT)
• Kombinasi ULT dan KLT
– Model thread lainnya
• Relasi Satu ke Banyak
• Relasi Banyak ke Banyak
• SMP
• Microkernel
• Bedah OS
Sistem Operasi/20100830 #39
Kombinasi ULT dan KLT
• Pembentukan thread dilakukan
pada aplikasi (user space)
• Penjadualan dan sinkronisasi
dilakukan pada level aplikasi
• Beberapa thread ULT dari
sebuah aplikasi dipetakan ke
sejumlah thread KLT
(jumlahnya sama atau lebih
kecil)
• Relasi antara thread user :
thread kernel adalah M:N
• Model kombinasi digunakan
pada sistem operasi Solaris 2,
IRIX, HP-UX, dan Tru64 UNIX
Sistem Operasi/20100830 #40
Kelebihan kombinasi ULT dan KLT
• Programmer dapat mengatur jumlah KLT
berdasarkan aplikasi atau mesin yang akan
digunakan untuk mendapatkan hasil optimum
• Beberapa thread dari sebuah aplikasi dapat
dieksekusi secara bersamaan pada sistem
multiprocessor
• Thread yang melakukan system call (perlu I/O
device) tidak menyebabkan proses terblok
• Performansinya lebih baik dibanding ULT
maupun KLT
Sistem Operasi/20100830 #41
Relasi antara Thread dan Proses
• Macam-macam relasi antara thread:proses adalah sbb:
Sistem Operasi/20100830 #42
Relasi Satu ke Banyak (1:M)
• Satu thread dapat berpindah-pindah dari satu ruang
alamat memori yang satu ke ruang alamat memori yang
lain
– Bahkan bisa berpindah dari satu komputer ke komputer yang lain
• Digunakan pada sistem terdistribusi
• Contoh sistem operasi: Clouds (Ra) dan Emerald
• Dari sisi user, thread dipandang sebagai unit aktifitas,
sedangkan proses merupakan ruang alamat virtual yang
dilengkapi dengan PCB
• Informasi yang dibawa saat thread berpindah tempat
adalah: controlling terminal, parameter global, dan
petunjuk penjadualan (misal prioritas)
• Kelebihan:
– User atau programmer tidak perlu tahu detail dari
lingkungan distribusi yang akan digunakan
Sistem Operasi/20100830 #43
Relasi Banyak ke Banyak (M:N)
• Digunakan konsep domain dan thread:
– Domain: entitas statis yang terdiri dari ruang alamat
dan port sebagai pintu masuk/keluar pesan
– Thread: eksekusi tunggal yang terdiri dari stack
eksekusi, status prosesor, dan informasi penjadualan
• Banyak thread dapat dieksekusi ke dalam sebuah
domain
• Sebuah thread dapat berpindah dari satu domain
ke domain yang lain
• Diterapkan pada sistem operasi eksperimen TRIX
Sistem Operasi/20100830 #44
Referensi:
[STA09] Stallings, William. 2009. Operating
System: Internal and Design Principles.
6th edition. Prentice Hall
Sistem Operasi/20100830 #45
Download