multithreading - elista:.

advertisement
 MultiProgramming
 MultiProcessing
 Multithreading
 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.
 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.
 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.
 I/O latency prompted multitasking
 IBM mainframes
 Multitasking
 I/O processors
 Caches within disk controllers
 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
R = the run length to a long latency event
L = the amount of latency
 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
 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
 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
birth
Blocked for
I/O
Running
Input/Output
I/O completed
Process
Termination
Figure 1: The life cycle of processes in single-programming environments
18
 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.
w
b
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
 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
 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 increases system productivity. If CPU
wait time is represented by w in single-programming
environment, the CPU wait time decreases to
n
approximately w for a system running n processes
simultaneously.
5
 Example: If w = .9 then w =0.59 ; meaning that if we have five
processes running simultaneously, the CPU utilization is increased
by (0.41-.10)*100 = 310%.
 By increasing the CPU utilization other device’s utilization is
also increased.
22
 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
Termination
Running
A process is
picked to run
Preempted for the
interest of others
Needs I/O or
circumstance
Process birth
Wait/Blocked
Ready
Running obstacle is
vanished
Figure 2: Basic process state transition diagram in multiprogramming
24
 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
 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
 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
 Multiple users.
 Multiple applications.
 Multitasking within an application.
 Responsiveness and/or throughput.
29
 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
memory
memory
cache
cache
processor
processor
...
memory
cache
...
processor
interconnection network
31
processor
1
processor
2
cache
cache
...
processor
N
cache
interconnection network
memory
1
memory
2
...
memory
M
34
 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, 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
 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
 Model pemrograman SMA lebih mudah karena transfer
data ditangani secara otomatis.
 Message-Passing dapat efisien diimplementasikan pada
memori bersama, namun tidak sebaliknya.
39
 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.
 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
 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
 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 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
 To enhance parallel processing
 To increase response to the user
 To utilize the idle time of the CPU
 Prioritize your work depending on priority
 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.
 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.
 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.
 User level thread adalah thread yang tampak oleh programmer dan
tidak diketahui oleh kernel
 Kernel level thread didukung dan dikelola oleh kernel sistem
operasi
 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.
 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.
 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.
 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.
 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 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.
 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
 dalam pembuatan Thread ini ada 2 cara yaitu:
- Dengan mengimplementasikan Runnable Interface (java.lang.Runnable)
- Dengan meng-extends kan Thread Class (java.lang.Extends)
 Intel Hyperthreding (HT)
 Dual threads
 Pentium 4, XEON
 Sun CoolThreads
 UltraSPARC T1
 4-threads per core
 IBM
 POWER5
 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
http://www.sun.com/servers/wp.jsp?tab=3&group=CoolThreads%20servers
 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
IBM X346: 3Ghz Xeon
T2000: 8 core 1.0GHz T1 Processor
 UltraSPARC
 Sun Fire T1000 Server
 6 core
1.0GHz T1 Processor
 2GB memory,
1x 80GB disk
 List price: $5,745
 Sun Fire T2000 Server
 8 core 1.0GHz
T1 Processor
 8GB DDR2 memory,
2 X 73GB disk
 List price: $13,395
•
X86
– Sun Fire X2100 Server
• Dual core
AMD Opteron 175
• 2GB memory,
1x80GB disk
• List price: $2,295
– Sun Fire X4200 Server
• 2x Dual core
AMD Opteron 275
• 4GB memory,
2x 73GB disk
• List price: $7,595
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.
 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.
Download