Sistem Operasi 4 “Threads” Antonius Rachmat C, C S.Kom, S Kom M.Cs
Th Thread d • Definisi: D fi i i unit it dasar d d i penggunaan CPU. dari CPU • Thread terdiri dari: – thread ID, ID program counter, counter register, register dan stack. stack
• Thread juga sering disebut Lightweight process. • Thread berbagi: – code section, data section, files dan sumber daya dengan thread lain yang termasuk dalam proses yang sama. sama
• Proses tradisional ( Heavyweight process ) mempunyai thread tunggal
Single and Multithreaded Processes
Thread Life Cycles y
Keuntungan Thread • Responsiveness : pada aplikasi yang interaktif dapat membuat program terus berjalan meskipun bagian dari program tersebut diblok atau sedang menjalankan operasi yang panjang g : sebuah aplikasi p dapat p mempunyai p y • Resource sharing beberapa thread yang berbeda dalam sebuah alamat memori yang sama karena Thread berbagi memori dan sumber daya dari proses yang memilikinya. • Economy: E k karena mahal h l untuk t k mengalokasikan l k ik memorii dan sumber daya untuk pembuatan proses. Alternatifnya adalah dengan pengunaan thread, akan lebih ekonomis untuk membuat sebuah thread daripada menggunakan memory baru. • Utilization of multiproccesor architectures: dalam p , dimana setiap p thread dapat p arsitektur multiprosesor, berjalan secara pararel pada prosesor yang berbeda.
Multicore programming challenges h ll • Dividing activities • Threads balance • Data splitting • Testing and debugging
M lih Multithreading di S Server
SingleSingle g -core
Multi--core (paralel) Multi
F k Fakta • Pembuatan Proses lebih berat dan p Thread lama daripada • Pada Solaris: – Pembuatan P b t proses 30x 30 lebih l bih llama daripada Thread – Context Switch Proses 5x lebih lama daripada CT Thread
User Threads • User threads didukung diatas kernel dan diimplementasikan oleh thread library pada level user. • Library b mendukung d k pembuatan b thread, h d penjadwalan, dan manajemen tanpa dukungan langsung dari kernel. • Karena kernel tidak menyadari adanya user-level threads maka pembuatan semua thread dan penjadwalan dilakukan di dalam user space tanpa intervensi dari kernel. • Three primary thread libraries: – POSIX Pthreads – Win32 threads – Java threads
K Kernel l Th Threads d • Kernel threads didukung secara langsung dari sistem operasi. Pembuatan thread, penjadwalan, dan manajemen dilakukan oleh sistem operasi,
– secara umum kernel threads lebih lambat untuk dibuat dibanding user thread.
• Keuntungan: g
– SO dapat menjadwalkan thread lain jika ada salah satu thread yang di block p menjadwalkan j thread-thread p pada multi – SO dapat processor
• Examples – – – –
Windows XP/2000 Solaris Linux Mac OS X
M lih Multithreading di model d l • Many to One Model memetakan p user-level threads ke satu beberapa kernel threads. • Examples: – Solaris Green Threads – GNU Portable Threads
M Many to one • Efficient karena irit kernel thread • All of user threads may blocked if a thread makes a blocking system call • Multiple M lti l user thread th d unable bl to t run in i parallel on multiprocessors
M lih Multithreading di model d l • One to One model d l memetakan tiap user thread ke tiap kernel thread. thread • Examples – Windows NT/XP/2000 – Linux – Solaris 9 and later
• Keuntungan: g – More concurrency – Multiple threads can run in parallel in multiprocessors – Overhead in creating kernel thread related to user thread
M lih Multithreading di model d l • Many to many model memetakan banyak user-level thread ke <= kernel thread • User Use dapat membuat memb at banyak ban ak thread, masing2 kernel thread dpt jalan di lingkungan multiprocessor • Allows the operating system to create a sufficient number of kernel threads • Tidak terlalu overhead • Examples – Solaris prior to version 9 – Windows NT/2000 with the ThreadFiber package g
Th Thread d Lib Libraries i • Thread library provides programmers g and managing g g with API for creating threads • Two primary ways of implementing – Library entirely in user space – Kernel-level library supported by the OS
Threading issue: cancellation ll i • Th Thread d cancellation ll ti adalah d l h sebuah b h tugas t untuk t k memberhentikan thread sebelum thread tersebut se esa selesai. – Contoh: JVM akan mematikan seluruh thread sblm end
• Thread yang akan diberhentikan disebut target th thread. d • Dua skenario thread cancellationn : – Asynchronous cancellation : satu thread memberhentikan target thread seketika itu juga. – Deferred cancellation : target thread secara periodik dapat mengecek apakah ia harus berhenti, berhenti skenario ini memberi kesempatan kepada target thread untuk memberhentikan dirinya sendiri.
Kesulitan Thread C Cancellation ll i • Asynchronous: Jika thread yg akan g dimatikan,, thread tersebut sedang mengupdate data. • Alternatifnya: Deferred Cancellation
Signal handling • Sebuah sinyal digunakan di sistem UNIX untuk memberitahu sebuah proses kalau peristiwa tertentu sedang terjadi (mis: perubahan state thread, error, interrupt). • Pola sinyal bisa asynchronous / synchronous y – Sebuah sinyal diaktifkan oleh munculnya suatu peristiwa. – Sinyal yang diaktifkan dikirim ke proses. – Sesudah dikirim, sinyal tersebut harus ditangani.
Si Signal lh handling dli • Sinyal Synchronous: – Sinyal dimunculkan oleh proses dan dikirim juga ke proses yang melakukan operasi tersebut – Ketika K tik ada d pengaksesan k memory ilegal il l atau t divison by zero
• Sinyal Sin al As Asynchronous: nch ono s – Sinyal dimunculkan oleh peristiwa diluar proses tersebut – Ketika ada proses menutup window (ALT + F4)
Si Signal lh handling dli • Penerima Pene im sinyal in l bisa: bi
– Diatur oleh sistem operasi – Didefinisikan oleh user
• Pada single thread penanganan sinyal mudah,, tapi p multithreading g sulit,, krn 1 proses memiliki lbh dr 1 thread • Kemungkinan sinyal dikirim ke: – Thread yg dituju – Setiap thread pd proses tersebut – Ke thread tertentu pd proses tersebut
Th Thread dP Pools l • Create a number of threads in a pool where they await work • Advantages: – Usually slightly faster to service a request with an existing thread than create a new thread – Allows the number of threads in the application(s) to be bound to the size of the pool
Windows XP Threads • Implements the one-to-one mapping, kernell level l • Each thread contains – – – – –
A thread ID Registers set Stack Separate user and kernel stacks Private data storage area
• The register set, set stacks, stacks and private storage area are known as the context of the threads • The p primary y data structures of a thread include: – ETHREAD (executive thread block) – kernel space – KTHREAD (kernel thread block) – kernel space – TEB (th (thread d environment i t bl block) k) – user space
Th Thread d priorities i ii • THREAD_PRIORITY_IDLE • THREAD_PRIORITY_LOWEST THREAD PRIORITY LOWEST • THREAD_PRIORITY_BELOW_NORMAL • THREAD_PRIORITY_NORMAL • THREAD_PRIORITY_ABOVE_NORMAL THREAD PRIORITY ABOVE NORMAL • THREAD_PRIORITY_HIGHEST • THREAD_PRIORITY_TIME_CRITICAL
Li Linux Thread Th d • Th Threads d pada d linux li mulai l i digunakan di k di k kernell versi 2.2 • Threads lebih dianggap sebagai tasks • Linux menyediakan 2 system call yg g dgn g Thread : berhubungan – fork(): duplikasi proses, dimana proses anak independen – clone(): mirip seperti fork(), fork() namun selain meng meng-copy copy proses yang memanggilnya, method ini membuat proses baru yang berbagi address space yang sama dengan proses yang memanggilnya, sehingga sama persis dgn induknya
• Context Switch Linux lebih cepat
J Java Threads Th d • Java threads are managed by the JVM • Java threads may be created by: – Extending E t di Th Thread d class l – Implementing the Runnable interface
J Java Threads Th d • Keunggulan K l JJava Threads Th d adalah: d l h – JVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan – Semua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk t k di dieksekusi k k i oleh l h JVM (1 (1-10) 10) – Jika ada 2 thread yang prioritasnya sama digunakan sama, dig nakan algoritma algo itma First Fi st In First Fi st Out (FIFO)
Contoh “extend Thread”
L i Lainnya
Implements p Runnable
H il Hasil
NEXT • Process Schedulling / Penjadwalan