Anda di halaman 1dari 88

MULTITHREADI

NG
POKOK BAHASAN
 MultiProgramming
 MultiProcessing
 Multithreading
DEFINISI
 Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer.
 Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi
pembagian sumberdaya seperti CPU.
 Multiprogramming merupakan teknik yang memperbolehkan lebih dari satu program siap
dieksekusi (proses) dan menyediakan kemampuan untuk berpindah dari satu proses ke proses
lain, meskipun proses sebelumnya belum selesai
 Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam
sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.
LATAR BELAKANG
 Pada saat ini, setiap sistem operasi harus memiliki kemampuan
untuk:
 Menyediakan lingkungan untuk menjalankan proses dalam bentuk
multiprogramming fashion.
 Bertindak sebagai service provider bagi sebagian besar layanan yang
diperlukan pengguna, seperti copying files, making new folders,
compressing information, sending and receiving messages from other
computers in the network, etc.
 Menyediakan user interface yang mudah digunakan dan menyenangkan
untuk bekerja.
WHY MULTITHREADING TODAY?

 Large performance gap between MEM and PROC.


 Too many transistors on chip
 More existing MT applications Today.
 Multiprocessors on a single chip.
 Long network latency.
CLASSICAL PROBLEM, 60’ &
70’
 I/O latency prompted multitasking
 IBM mainframes
 Multitasking
 I/O processors
 Caches within disk controllers
REQUIREMENTS OF MULTITHREADING

 Storage need to hold multiple context’s PC, registers, status word, etc.
 Coordination to match an event with a saved context
 A way to switch contexts
 Long latency operations must use resources not in use
PROCESSOR UTILIZATION VS.
LATENCY

R = the run length to a long latency event


L = the amount of latency
PROBLEM OF 80’
 Masalah itu ditinjau kembali karena munculnya workstation grafis
 Xerox Alto, TI Explorer
 Proses konkuren yang disisipkan untuk memungkinkan workstation menjadi
lebih responsif
 Proses ini bisa mendorong atau monitor tampilan, input, sistem file,
jaringan, dan pengolahan pengguna
 Perpindahan proses lambat, sehingga subsystems dilakukan microprogram
untuk mendukung multiple contexts
SCALABLE MULTIPROCESSOR
(90’)
 Dance hall – a shared interconnect with memory on one side and processors on
the other.
 Or processors may have local memory
 Prosesor tidak mengeksekusi kode sesuai dengan potensi perangkat
keras mereka
 late 70’s: performance lost to memory latency
 90’s: performance not in line with the increasingly complex parallel
hardware
 instruction issue bandwidth is increasing
 number of functional units is increasing
 instructions can execute out-of-order execution & complete in-order
 processor utilization was decreasing & instruction throughput not increasing in
proportion to the issue width
MULTIPROGRAMM
ING
MULTIPROGRAMMING
 Program adalah sekumpulan instruksi yang dipersiapkan untuk melakukan
tugas tertentu jika dieksekusi oleh komputer
 Program tidak harus online, namun tersimpan dalam flash memory atau media
penyimpan lainnya.
 A program is not an active entity. It is completely passive.
 The operating system creates a process from a program.
 To do so, it has to perform many activities, like assigning a name, allocating
space, (partially) loading the corresponding program, etc.
 Roughly speaking, A process is an active program.
 A process is created to run a program by using computer facilities; like a
human who is born to live his life.
 In a single-programming environment there exist at the most one process at
any given time; thus there is usually one ongoing activity at a time.
 That is, from many devices within the computer often one device is active at
any given time.
 This means, if a process has asked for a data to be entered by the user, the
system has to wait until this data is entered before being able to proceed.
 If this data entry takes one second the CPU could have done millions of
instructions if it did not have to wait.
 With single-programming the computer facilities are not used in an efficient
manner.
PROCESS’S LIFE CYCLE
Blocked for
Process I/O
birth Running Input/Output

I/O completed

Process
Termination

Figure 1: The life cycle of processes in single-programming environments

18
PROCESSOR WAIT RATIO
 If the average execution time of a program with single-
programming is e and the average I/O time is b, then the
following ratio is the CPU wait fraction (w). It is actually the
fraction of the time the CPU is idle.
b
w
eb

 For example, if execution time of programs is 10, of which 9


seconds is spent on I/O, then w = 9/10 = 0.9. This means, on
the average, 90% of the CPU time is wasted.

19
THE MULTIPROGRAMMING
CONCEPT
 Multiprogramming merupakan suatu teknik yang memperbolehkan lebih dari
satu program siap dieksekusi dan menyediakan kemampuan untuk berpindah
dari satu proses ke proses yang lain, meskipun proses sebelumnya belum
selesai
 Teknik ini mampu bekerja dalam single-processor (like our personal
computers) dan multiprocessor (such as large main frame) computers.
 Multiprogramming terutama diselesaikan oleh sistem operasi. Perangkat keras
menyediakan beberapa sirkuit tertentu yang dapat digunakan oleh sistem
operasi dalam rangka memfasilitasi multiprogramming.

20
MULTIPROGRAMMING AND
PCS
 Do we need multiprogramming for PCs?
 Yes. All PC users like to run many applications simultaneously. Nobody runs
for example an Internet explorer looking for an information while staring at the
monitor for the results for a long time.

21
MULTIPROGRAMMING
PRODUCTIVITY
 Multiprogramming increases system productivity. If CPU wait time
is represented by w in single-programming environment, the CPU
wait time decreases to approximately for a system running n
n
w
processes simultaneously.
 Example: If w = .9 then =0.59 ; meaning that if we have five processes
5
running simultaneously, thewCPU utilization is increased by (0.41-.10)*100 =
310%.
 By increasing the CPU utilization other device’s utilization is also
increased.

22
PROCESS STATE TRANSITION
DIAGRAM
 Siklus hidup dari proses multiprogramming tidak sama dengan
singleprogramming.
 Sebuah proses mungkin siap menggunakan CPU untuk
menjalankan program, sementara CPU menjalankan program lain.
 The basic states are thus Ready, Running, and Wait/Blocked. Wait
refers to a state in which the process is waiting for a device or an
event and Blocked is for the case the process is waiting for its I/O
to be completed by an I/O processor.

23
PROCESS’S LIFE CYCLE
Process
Termination

Running

A process is
picked to run
Preempted for the Needs I/O or
interest of others circumstance

Process birth
Wait/Blocked
Ready

Running obstacle is
vanished

Figure 2: Basic process state transition diagram in multiprogramming

24
REQUIREMENTS OF
MULTIPROGRAMMING
 Process Switching possibility: sistem harus dapat beralih dengan
aman dari satu proses ke proses yang lain. Ini disebut Context
switching.
 Direct Memory Access: I/O prosesor harus mampu langsung
mengakses memori utama tanpa gangguan dan konflik.
 The Interrupt System: I / O prosesor dan perangkat monitoring
harus mampu berkomunikasi secara aman dengan CPU.

25
MULTIPROCESSIN
G
MULTIPROCESSING
 Modern operating systems are multiprocessing
 Appear to do more than one thing at a time
 Three general approaches:
 Cooperative multiprocessing
 Preemptive multiprocessing
 Really having multiple processors

27
MULTIPROCESSORS AND
MULTIPROCESSING
 Hardware: Multiprocessor computers have become commodity products, e.g.,
quad-processor Pentium Pros, SGI and Sun workstations.
 Programming: Multithreaded programming is supported by commodity
operating systems, e.g., Windows NT, UNIX/Pthreads.
 Applications: Traditionally science and engineering. Now also business and
home computing.
 Problem: Difficulty of multithreaded programming compared to sequential
programming.

28
WHY BUY A
MULTIPROCESSOR?
 Multiple users.
 Multiple applications.
 Multitasking within an application.
 Responsiveness and/or throughput.

29
MULTIPROCESSOR
ARCHITECTURES
 Message-Passing Architectures
 Ruang alamat terpisah untuk setiap prosesor.
 Prosesor berkomunikasi melalui message passing.

 Shared-Memory Architectures
 Ruang alamat tunggal dipakai bersama oleh semua prosesor.
 Prosesor berkomunikasi melalui memory read/write.
 SMP or NUMA.
 Cache coherence is important issue.

30
MESSAGE-PASSING
ARCHITECTURE
memory memory ... memory

cache cache cache

processor processor ... processor

interconnection network

31
SINGLE VS. MULTITASKING
SHARED-MEMORY
ARCHITECTURE
processor
1
processor
2
... processor
N

cache cache cache

interconnection network

memory
1
memory
2
... memory
M

34
SHARED-MEMORY
ARCHITECTURE:
SMP AND NUMA
SMP = Symmetric Multiprocessor

 All memory is equally close to all processors.
 Typical interconnection network is a shared bus.
 Easier to program, but doesn’t scale to many processors.

 NUMA = Non-Uniform Memory Access


 Each memory is closer to some processors than others.
 a.k.a. “Distributed Shared Memory”.
 Typically interconnection is grid or hypercube.
 Harder to program, but scales to more processors.

35
SMP VERSUS NUMA
EXAMPLE: QUAD-PROCESSOR
PENTIUM PRO
 SMP, bus interconnection.
 4 x 200 MHz Intel Pentium Pro processors.
 8 + 8 Kb L1 cache per processor.
 512 Kb L2 cache per processor.
 Snoopy cache coherence.
 Compaq, HP, IBM, NetPower.
 Windows NT, Solaris, Linux, etc.

37
EXAMPLE: SGI ORIGIN 2000
 NUMA, hypercube interconnection.
 Up to 128 (64 x 2) MIPS R 10000 processors.
 32 + 32 Kb L1 cache per processor.
 4 Mb L2 cache per processor.
 Distributed directory-based cache coherence.
 Automatic page migration/replication.
 SGI IRIX with Pthreads.

38
MESSAGE-PASSING VERSUS SHARED-
MEMORY
ARCHITECTURES
 Model pemrograman SMA lebih mudah karena transfer data
ditangani secara otomatis.
 Message-Passing dapat efisien diimplementasikan pada memori
bersama, namun tidak sebaliknya.

39
MULTITHREADING
MULTITHREADING
 Multithreading programs appear to do more than one thing at a time
 Same ideas as multiprocessing, but within a single program
 More efficient than multiprocessing
 Java tries to hide the underlying multiprocessing implementation

 Multithreading, sebagai keturunan multiprogramming, telah menjadi bagian penting dari


semua sistem operasi modern.
WHY MULTITHREADING?
 Allows you to do more than one thing at once
 Play music on your computer’s CD player,
 Download several files in the background,
 while you are writing a letter

 Multithreading is essential for animation


 One thread does the animation
 Another thread responds to user inputs
MULTITHREADING DAN
KINERJA CPU
 Penciptaan thread baru lebih cepat dibanding penciptaan proses baru
 Terminasi thread lebih cepat dibanding terminasi proses
 Pengalihan ke thread lain dalam satu proses lebih cepat dibanding dari satu
proses ke proses yang lain
 Thread-thread dalam satu proses dapat berbagi kode, data, dan sumber daya
lain secara efisien dibanding proses yang terpisah
PENGERTIAN THREAD
 Thread, atau kadang-kadang disebut proses ringan (lightweight process/LWP), adalah unit
dasar dari utilisasi CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack.
Dan saling berbagi dengan thread lain dalam proses yang sama.
THREAD VS PROCESS
 Thread lebih ringan dibandingkan dengan proses
 Thread dapat berbagi data dan kode
 Switching antar Thread jauh lebih hemat CPU dari pada process
 Thread memungkinkan tugas yang berbeda yang akan dilakukan secara
bersamaan
WHY DO WE NEED THREADS?
 To enhance parallel processing
 To increase response to the user
 To utilize the idle time of the CPU
 Prioritize your work depending on priority
EXAMPLE
 Consider a simple web server
 The web server listens for request and serves it
 Jika server web tidak multithreaded, pengolahan permintaan akan berada di
antrian, sehingga meningkatkan waktu respon dan juga mungkin menggantung
server jika ada permintaan yang buruk.
 Dengan penerapan dalam lingkungan multithreaded, server web dapat
melayani beberapa permintaan secara bersamaan sehingga meningkatkan
waktu respon
 Thread sangat berguna untuk membuat proses yang interaktif; misalnya pada
permainan (game). Dengan menggunakan sejumlah thread, program tetap dapat
menggerakkan sejumlah objek sembari memberikan kesempatan pemakai untuk
melakukan tanggapan melalui keyboard.
 Web browser merupakan contoh lain penggunaan thread. Tanpa thread, Web browser akan
menghentikan segala tanggapan terhadap pemakai ketika perangkat lunak tersebut sedang
mengambil isi dari suatu URL.
KEUNTUNGAN
MULTITHREADING
 Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang
diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web
browser dapat melayani permintaan pengguna sementara thread yang lain berusaha
menampilkan gambar.
 Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi
sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa
thread yan berbeda dalam lokasi memori yang sama.
 Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya.
Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan
sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context
switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi
secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama
dibandingkan dengan thread.
 Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan
thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching
thread.
 Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat
pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas
procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread
secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel,
tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.
KONSEP THREAD
 Seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang
sebenarnya bisa diminimalisir pada proses.
 Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua
atau lebih task dalam waktu bersamaan
 Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses
berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan
(lightweight) atau kadang disebut thread.
 Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan
thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program
counter, himpunan
 Multithreading dianggap berkaitan erat dengan pengertian multi thread yang merupakan
jalannya beberapa proses dengan urutan yang cepat (multitasking) dalam satu program.
 Multithreading ini merupakaan teknik pada manipulasi data dimana node-node pada struktur
pohon data berisi penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur menjadi
lebih efisien.
 Multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan
sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan beberapa task
secara bersamaan walaupun otaknya hanya satu.
JENIS THREADS
 User level thread adalah thread yang tampak oleh programmer dan tidak
diketahui oleh kernel
 Kernel level thread didukung dan dikelola oleh kernel sistem operasi
USER THREAD
 Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread
pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk
pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan
dikendalikan.
KERNEL THREAD
 Thread Kernel: Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan
manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem
operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna
 Di dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor yang
berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang mendukung
kernel thread.
MODEL THREAD
 Perbedaan tipe dari model yang berhubungan dengan user dan kernel thread

- Model many to one


- Model one to one
- Model many to many
 Many to one
 Model many-to-one ini memetakan beberapa tingkatan
pengguna thread hanya ke satu buah kernel thread.
Manajemen proses thread dilakukan oleh (di ruang)
pengguna, sehingga menjadi efisien, tetapi apabila
sebuah thread melakukan sebuah pemblokingan
terhadap sistem pemanggilan, maka seluruh proses akan
berhenti (blocked).
 Kelemahan dari model ini adalah multihreads tidak
dapat berjalan atau bekerja secara paralel di dalam
multiprosesor dikarenakan hanya satu thread saja yang
bisa mengakses kernel dalam suatu waktu.
 One to one
 Model one-to-one memetakan setiap thread pengguna ke dalam
satu kernel thread. Hal ini membuat model one-to-one lebih
sinkron daripada model many-to-one dengan mengizinkan
thread lain untuk berjalan ketika suatu thread membuat
pemblokingan terhadap sistem pemanggilan; hal ini juga
mengizinkan multiple thread untuk berjalan secara parallel
dalam multiprosesor.
 Kelemahan model ini adalah dalam pembuatan thread pengguna
dibutuhkan pembuatan korespondensi thread pengguna. Karena
dalam proses pembuatan kernel thread dapat mempengaruhi
kinerja dari aplikasi maka kebanyakan dari implementasi model
ini membatasi jumlah thread yang didukung oleh sistem.
 Model one-to-one diimplementasikan oleh Windows NT dan
OS/2.
 Many to many
 Beberapa tingkatan thread pengguna dapat menggunakan
jumlah kernel thread yang lebih kecil atau sama dengan
jumlah thread pengguna. Jumlah dari kernel thread dapat
dispesifikasikan untuk beberapa aplikasi dan beberapa mesin
(suatu aplikasi dapat dialokasikan lebih dari beberapa kernel
thread dalam multiprosesor daripada dalam uniprosesor)
dimana model many-to-one mengizinkan pengembang untuk
membuat thread pengguna sebanyak mungkin, konkurensi
tidak dapat tercapai karena hanya satu thread yang dapat
dijadualkan oleh kernel dalam satu waktu.
 Model one-to-one mempunyai konkurensi yang lebih tinggi,
tetapi pengembang harus hati-hati untuk tidak membuat terlalu
banyak thread tanpa aplikasi dan dalam kasus tertentu
mungkin jumlah thread yang dapat dibuat dibatasi.
THREAD LIBRARY
 Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library bertugas untuk
menyediakan API untuk programmer dalam menciptakan dan memanage thread. Ada dua cara
dalam mengimplementasikan pustaka thread:
a. Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan
fungsi tidak melalui system call. Jadi, jika kita memanggil fungsi yang sudah ada di
pustaka, maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan
system call.
b. Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi.
Pemanggilan fungsi call akan melibatkan system call ke kernel.
 Ada tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX Pthreads, Java, dan
Win32.
 Implementasi POSIX standard dapat dengan cara user level dan kernel level, sedangkan
Win32 adalah kernel level. Java API thread dapat diimplementasikan oleh Pthreads atau
Win32.
PENJADWALAN THREAD
 Begitu dibuat, thread baru dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan
penjadwalanlah yang menentukan setiap proses, dimana proses tersebut akan ditaruh dalam
daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar proses tersebut.
 Untuk menjadwalkan thread, sistem dengan model mulithreading many to many atau many to
one menggunakan:
a. Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna untuk
berjalan pada LWP ( lightweight process) yang tersedia.
b. System Contention Scope (SCS). SCS berfungsi untuk memilih satu dari banyak thread,
kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).
STATIC VS DYNAMIC THREAD
 Static Thread. Jumlah thread yang akan dibuat ditentukan saat penulisan dan kompilasi
program. Tiap thread langsung dialokasikan stack tetap. Sederhana namun tidak fleksibel
 Dynamic Thread. Penciptaan dan penghancuran thread dulakukan secara “on-the-fly” saat
eksekusi, sehingga lebih fleksibel namun rumit.
PENANGANAN CRITICAL
SECTION
 Karena thread berbagi memory dan sumberdaya milik proses, maka pengaksesan sumberdaya
harus menggunakan critical regions untuk mencegah banyak thread mengakses sumberdaya
yang sama pada waktu bersamaan.
 Critical region umumnya diselesaikan dengan menggunakan mutex, semaphore, monitor, dan
bentukan lain
 Teknik paling sederhana adalah mutex, yang mirip semaphore biner (bernilai 0 atau 1) . Mutex
selalu di salahsatu state, yaitu locked atau unlocked
THREAD DI JAVA
 dalam pembuatan Thread ini ada 2 cara yaitu:
- Dengan mengimplementasikan Runnable Interface (java.lang.Runnable)
- Dengan meng-extends kan Thread Class (java.lang.Extends)
MULTITHREAD-
RUNNABLE.JAVA
MULTITHREAD.JAVA
COMMERCIAL MACHINES W/ MT
SUPPORT
 Intel Hyperthreding (HT)
 Dual threads
 Pentium 4, XEON

 Sun CoolThreads
 UltraSPARC T1
 4-threads per core

 IBM
 POWER5
IBM POWER5
HTTP://WWW.RESEARCH.IBM.COM/JOURNAL/RD/494/MATHIS.PDF
IBM POWER5
HTTP://WWW.RESEARCH.IBM.COM/JOURNAL/RD/494/MATHIS.PDF
MULTICORE
 Multiple processor cores on a chip
 Chip multiprocessor (CMP)
 Sun’s Chip Multithreading (CMT)
 UltraSPARC T1 (Niagara)
 Intel’s Pentium D
 AMD dual-core Opteron

 Also a way to utilize TLP, but


 2 cores  2X costs
 No good for single thread performacne

 Can be used together with SMT


CHIP MULTITHREADING
(CMT)
SUN ULTRASPARC T1
PROCESSOR

http://www.sun.com/servers/wp.jsp?tab=3&group=CoolThreads%20servers
8 CORES VS 2 CORES
 Is 8-cores too aggressive?
 Good for server applications, given
 Lots of threads
 Scalable operating environment
 Large memory space (64bit)
 Good for power efficiency
 Simple pipeline design for each core
 Good for availability
 Not intended for PCs, gaming, etc
SPECWEB 2005

IBM X346: 3Ghz Xeon


T2000: 8 core 1.0GHz T1 Processor
SUN FIRE T2000 SERVER
SERVER PRICING
 UltraSPARC • X86
 Sun Fire T1000 Server – Sun Fire X2100 Server
• Dual core
 6 core
AMD Opteron 175
1.0GHz T1 Processor • 2GB memory,
 2GB memory, 1x80GB disk
1x 80GB disk • List price: $2,295
 List price: $5,745

 Sun Fire T2000 Server – Sun Fire X4200 Server


• 2x Dual core
 8 core 1.0GHz
AMD Opteron 275
T1 Processor • 4GB memory,
 8GB DDR2 memory, 2x 73GB disk
2 X 73GB disk • List price: $7,595
 List price: $13,395
SEKIAN
SOAL LATIHAN
1. Tunjukkan dua contoh pemrograman dari multithreading yang dapat meningkatkan sebuah
solusi thread tunggal.
2. Tunjukkan dua contoh pemrograman dari multithreading yang tidak dapat meningkatkan
sebuah solusi thread tunggal.
3. Sebutkan dua perbedaan antara user level thread dan kernel thread. Saat kondisi bagaimana
salah satu dari thread tersebut lebih baik
4. Jelaskan tindakan yang diambil oleh sebuah kernel saat alih konteks antara kernel level thread.
5. Sumber daya apa sajakah yang digunakan ketika sebuah thread dibuat? Apa yang
membedakannya dengan pembentukan sebuah proses.
6. Tunjukkan tindakan yang diambil oleh sebuah thread library saat alih konteks antara user level
thread.
SOLUSI
 Nomor 1
 Dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna
sementara thread lain berusaha menampilkan image.
 Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya.
Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber
daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch
thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal
pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama
dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan
pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch
thread
 Nomor 3
 User Level Thread
 User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level.
Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen
thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka
semua pembuatan dan penjadualan thread dilakukan di user space tanpa intervensi dari kernel.
Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread
mempunyai kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah
satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh
proses diblok walaupun ada thread lain yang dapat jalan dalam aplikasi tersebut. Contoh user-
thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads.
 Kernel Level Thread
 Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan
managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread
dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat
dibandingkan user thread. Maka Kernel Level Thread dapat dikatakan lebih baik dari User
Level Thread adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan
blocking system call maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan
eksekusi. Kemudian pada lingkungan multiprocessor, kernel dapat menjadual thread-thread
pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah
Windows NT, Solaris, Digital UNIX.
 Nomor 4
 Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan
kernel thread lebih lambat dibandingkan user thread. Maka Kernel Level Thread dapat
dikatakan lebih baik dari User Level Thread adalah thread diatur oleh kernel, karena itu jika
sebuah thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain
di aplikasi untuk melakukan eksekusi. Kemudian pada lingkungan multiprocessor, kernel
dapat menjadual thread-thread pada processor yang berbeda.
 Sumber daya yang digunakan oleh sebuah thread dibuat yaitu berbagi memori dan berbagi
kode. Yang membedakan pembuatan thread dengan proses yaitu dalam pembuatan sebuah
proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah
dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang
memilikinya maka akan lebih ekonomis untuk dibuat dan context switch thread. Akan susah
untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan
pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan
thread.
 Thread Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan
managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level
thread maka semua pembuatan dan penjadualan thread dilakukan di user space tanpa
intervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan
diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread
tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan
mengakibatkan seluruh proses diblok walaupun ada thread lain yang dapat jalan dalam
aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan
Solaris threads.

Anda mungkin juga menyukai