Anda di halaman 1dari 58

Sistem Operasi CII2A2

Thread
(Pertemuan ke-3)

Tim Dosen Sistem Operasi

Prodi S1 Teknologi Informasi


Fakultas Informatika
Universitas Telkom
Maret 2023
Capaian Pembelajaran

• PLO-3: Menguasai konsep dasar sains dan/atau


matematika serta prinsip-prinsip informatika
dan komputer.
– CLO-1: Mahasiswa mampu menjelaskan
konsep-konsep utama dalam sistem operasi,
proses, thread dan sinkronisasi proses dengan
benar

Sistem Operasi – CII2A3/2023 # 1


Bahasan
• Proses dan Thread
– Multithreading 
– Fungsionalitas thread
➢ Status thread
➢ Sinkronisasi thread
– Jenis thread:
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
– Relasi antara Thread dan Proses
➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
– Multicore dan Multithreading
➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
– Bedah OS
Sistem Operasi – CII2A3/2023 # 2
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 – CII2A3/2023 # 3


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 – CII2A3/2023 # 4


Multithreading (2)

Sistem Operasi – CII2A3/2023 # 5


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 bersama-sama
oleh semua thread dari sebuah proses (share)

Sistem Operasi – CII2A3/2023 # 6


Model Thread

Thread Control Block (TCB) = isi register + prioritas + info thread lainnya
Sistem Operasi – CII2A3/2023 # 7
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 – CII2A3/2023 # 8


Bahasan
• Proses dan Thread
– Multithreading
– Fungsionalitas thread 
➢ Status thread
➢ Sinkronisasi thread
– Jenis thread:
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
– Relasi antara Thread dan Proses
➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
– Multicore dan Multithreading
➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
– Bedah OS
Sistem Operasi – CII2A3/2023 # 9
Apa Manfaat Thread?
• 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 – CII2A3/2023 # 10


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 – CII2A3/2023 # 11


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 – CII2A3/2023 # 12
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 – CII2A3/2023 # 13
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 – CII2A3/2023 # 14


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 – CII2A3/2023 # 15
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 – CII2A3/2023 # 16
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 – CII2A3/2023 # 17
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 – CII2A3/2023 # 18
Bahasan
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
➢ Status thread
➢ Sinkronisasi thread
– Jenis thread: 
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
– Relasi antara Thread dan Proses
➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
– Multicore dan Multithreading
➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
– Bedah OS
Sistem Operasi – CII2A3/2023 # 19
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 – CII2A3/2023 # 20
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 – CII2A3/2023 # 21
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 – CII2A3/2023 # 22


Contoh hubungan antara status ULT
dengan status Proses

Sistem Operasi – CII2A3/2023 # 23


Keterangan (1)
• Gambar a:
– 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 – CII2A3/2023 # 24


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 – CII2A3/2023 # 25


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 – CII2A3/2023 # 26


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 – CII2A3/2023 # 27


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 – CII2A3/2023 # 28


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 – CII2A3/2023 # 29


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 – CII2A3/2023 # 30


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 – CII2A3/2023 # 31


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 – CII2A3/2023 # 32
Perbandingan Latency (µS) antara
ULT, KLT, dan Single Process/thread (1)

• 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
• Dapat menjadi peluang/ide untuk TA ?!?!

Sistem Operasi – CII2A3/2023 # 33


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 – CII2A3/2023 # 34


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 – CII2A3/2023 # 35


Bahasan
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
– Jenis thread:
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
Materi→ – Relasi antara Thread dan Proses 
tambahan ➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
Materi→ – Multicore dan Multithreading
tambahan ➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
Materi→ – Bedah OS
tambahan ➢ Windows 8
➢ Solaris
➢ Linux
➢ Android
➢ Mac OS
Sistem Operasi – CII2A3/2023 # 36
Relasi antara Thread dan Proses

Macam-macam relasi antara thread:proses adalah sbb:

Sistem Operasi – CII2A3/2023 # 37


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 – CII2A3/2023 # 38


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 – CII2A3/2023 # 39
Bahasan
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
– Jenis thread:
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
– Relasi antara Thread dan Proses
➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
– Multicore dan Multithreading 
➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
– Bedah OS
➢ Windows 8
➢ Solaris
➢ Linux
➢ Android
➢ Mac OS
Sistem Operasi – CII2A3/2023 # 40
Performansi software dalam
multicore
• Hukum Amdahl:
(kasus: satu proses dlm multiprosesor)

f = bagian program yang bisa dieksekusi


secara paralel
1-f = bagian program yang hanya bisa
dieksekusi secara berurutan (serial)
N = jumlah prosesor
Sistem Operasi – CII2A3/2023 # 41
Percepatan (speedup) tanpa
Overhead

Speedup jika
bagian serial
= 0%, 2%,
5%, dan
10%)

Sistem Operasi – CII2A3/2023 # 42


Percepatan (speedup) dengan
Overhead

Speedup jika
bagian serial
= 5%, 10%,
15%, dan
20%)

Sistem Operasi – CII2A3/2023 # 43


Scaling Workload Database
pada Multi Prosesor

Sistem Operasi – CII2A3/2023 # 44


Contoh software Valve Game

Hybrid Threading untuk


Modul Render

Sistem Operasi – CII2A3/2023 # 45


Bahasan
• Proses dan Thread
– Multithreading
– Fungsionalitas thread
– Jenis thread:
➢ User-Level Thread (ULT)
➢ Kernel-Level Thread (KLT)
➢ Kombinasi ULT dan KLT
– Relasi antara Thread dan Proses
➢ Relasi Satu ke Banyak
➢ Relasi Banyak ke Banyak
– Multicore dan Multithreading
➢ Performansi software dalam multicore
➢ Contoh aplikasi: Software Valve Game
– Bedah OS 
➢ Windows 8
➢ Solaris
➢ Linux
➢ Android
➢ Mac OS
Sistem Operasi – CII2A3/2023 # 46
Proses pada Windows 8

• Diimplementasikan sebagai objek


• Proses executable dapat terdiri dari satu
thread atau lebih
• Proses dan objek thread mempunyai
kemampuan sinkronisasi built-in

Sistem Operasi – CII2A3/2023 # 47


Proses pada Windows dan
Resource-nya

Sistem Operasi – CII2A3/2023 # 48


Status Thread pada Windows

Sistem Operasi – CII2A3/2023 # 49


Solaris
• Proses terdiri dari ruang alamat user,
stack, dan PCB
• Jenis thread yang digunakan adalah User-
Level Thread (ULT)
• Mempunyai lightweight process (LWP)
• Kernel terdiri dari banyak thread

Sistem Operasi – CII2A3/2023 # 50


Proses dan Thread pada
Solaris

Sistem Operasi – CII2A3/2023 # 51


Struktur Proses pada UNIX Tradisional
dan Solaris

Sistem Operasi – CII2A3/2023 # 52


Status Thread Solaris

Sistem Operasi – CII2A3/2023 # 53


Model Proses/Thread pada Linux

Sistem Operasi – CII2A3/2023 # 54


Aplikasi pada Android

Sistem Operasi – CII2A3/2023 # 55


STD Aktifitas Status
pada Android

Sistem Operasi – CII2A3/2023 # 56


Referensi:

[STA18] Stallings, William. 2018. Operating System: Internal


and Design Principles. 9th edition. Prentice Hall

Sistem Operasi – CII2A3/2023 # 57

Anda mungkin juga menyukai