multithreading
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
multiprogramming
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 Process birth Running Input/Output Process Termination Blocked for I/O I/O completed Figure 1: The life cycle of processes in single-programming environments
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. 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.
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. Of course, sometimes in the future we will have to switch back to the first process and resume (not restart) its computation.
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.
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 processes simultaneously. Example: If w = .9 then =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.
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.
Process’s life cycle Process birth Ready Wait/Blocked Process Termination Running A process is picked to run Needs I/O or circumstance Running obstacle is vanished Preempted for the interest of others Figure 2: Basic process state transition diagram in multiprogramming
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.
multiprocessing
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
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.
Why Buy a Multiprocessor? Multiple users. Multiple applications. Multitasking within an application. Responsiveness and/or throughput.
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.
Message-Passing Architecture . . . processor cache memory interconnection network
Single vs. Multitasking
Shared-Memory Architecture . . . processor 1 processor 2 processor N cache cache cache interconnection network . . . memory 1 memory 2 memory M
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.
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.
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.
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. How much of shared-memory programming model should be implemented in hardware? How efficient is shared-memory programming model? How well does shared-memory scale? Does scalablity really matter?
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 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: 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. 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: Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP ( lightweight process) yang tersedia. 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 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
sekian
Soal latihan Tunjukkan dua contoh pemrograman dari multithreading yang dapat meningkatkan sebuah solusi thread tunggal. Tunjukkan dua contoh pemrograman dari multithreading yang tidak dapat meningkatkan sebuah solusi thread tunggal. Sebutkan dua perbedaan antara user level thread dan kernel thread. Saat kondisi bagaimana salah satu dari thread tersebut lebih baik Jelaskan tindakan yang diambil oleh sebuah kernel saat alih konteks antara kernel level thread. Sumber daya apa sajakah yang digunakan ketika sebuah thread dibuat? Apa yang membedakannya dengan pembentukan sebuah proses. 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.