Thread Dalam Sistem Operasi
Thread
Single & Multithreaded Processes |
Proses dengan thread tunggal – proses menjalankan satu tugas pada satu waktu
Sistem operasi modern – multithread – proses menjalankan banyak tugas/thread pada satu waktu. Contoh : secara bersamaan mengetik dan menjalankan pemeriksaan ejaan di dalam proses yang sama
- Multithread pada satu prosesor – dijalankan bergantian dengan waktu yang sangat cepat sehingga tampak bersamaan.
- Multithread pada multi prosesor – benar-benar dijalankan secara bersamaan.
- Hyper threading (HT) – teknologi simultan multithreading oleh Intel menjalankan banyak thread secara bersama-sama pada tiap inti prosesor, sistem operasi mengalamatkan 2 virtual prosesor OS harus mendukung pemrosesan multiprosesor.
Suatu Thread (atau lightweight process disingkat LWP) berisi :
-Thread ID
-Program counter
-Register set
-Stack space
Suatu Thread bersama thread-thread lainnya bisa berbagi :
-Code section
-Data section
-Operating system resources
Perbedaan Thread Dengan Proses
Thread adalah bagian dari suatu proses, tiap proses mempunyai informasi status dan sumber daya sendiri, thread berbagi informasi status dan sumber daya dengan thread yang lain dalam satu proses, tiap proses mempunyai alamat yang berbeda, sedangkan thread berbagi alamat yang sama. Pergantian antar threads lebih cepat daripada antar proses
Contoh Multithreading
-Web Browser : memiliki satu thread untuk display image, dan thread yang lain untuk mengambil data dari network.
-Web Server : menerima request dari client untuk halaman web, image, sound, dll. Web server melayani client secara bersamaan (concurrent).
Keuntungan Multithreading
1. Responsif
Multithreading memungkinkan suatu program running walaupun sebagian program di-block atau menjalankan operasi yang lain.
2. Resource Sharing
Thread dalam suatu proses yang sama dapat men-share memori dan resource dengan thread yang lain. Mengijinkan sebuah aplikasi untuk memiliki beberapa thread yang berbeda dalam lokasi memori yang sama
3. Ekonomis
Alokasi memori dan resource untuk pembuatan proses memiliki cost yang mahal. Dalam hal context-switch, lebih ekonomis bila dilakukan dengan thread context-switch.
4. Utilisasi CPU
Meningkatkan kinerja pada arsitektur multiprocessor, dimana thread running secara paralel pada prosesor yang berbeda.
User Threads
Implementasi thread di level pengguna (dengan menggunakan pustaka/library thread).
Pustaka menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
-Keuntungan : Dapat lebih cepat dibuat dan dikendalikan karena tanpa campur tangan kernel
-Kelemahan : salah 1 thread pengguna menjalankan blocking system call maka mengakibatkan seluruh proses diblok
Kernel Threads
Didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space
-Keuntungan :
Jika thread menjalankan blocking system call kernel dpt menjalankan thread lain di aplikasi untuk melakukan eksekusi. Pada lingkungan multiprosesor, kernel dapat menjadwal thread-thread pada prosesor yang berbeda
-Kelemahan :
Lebih lambat daripada user kernel
Model-model Multithreading
a. Many-to-One
b. One-to-One
c. Many-to-Many
a. Many-to-One (User level Threading)
Many to One Model |
Memetakan beberapa user thread ke satu kernel thread. Hanya 1 thread pengguna yang dapat mengakses thread kernel pada satu saat = Multi thread tidak dapat berjalan secara paralel pada multiprosesor
b. One-to-One
One to One Model |
Masing-masing user-level thread dipetakan ke kernel thread
Keuntungan : keuntungan thread kernel
Kelemahan : setiap pembuatan user thread memerlukan jg pembuatan kernel thread sehingga dapat menurunkan kinerja aplikasi = jumlah thread dibatasi oleh sistem
c. Many-to-Many
Many to Many Model |
Memungkinkan banyak user-level thread dipetakan ke banyak kernel thread. Memungkinkan sistem operasi membuat jumlah kernel thread yang mencukupi.
Keuntungan : dapat berjalan pada multiprosesor
Cancellation
Pemberhentian thread sebelum tugasnya selesai. Target thread : thread yang akan diberhentikan dapat terjadi melalui dua cara :
-Asynchronous Cancellation : suatu thread seketika itu juga memberhentikan target thread.
-Deferred Cancellation : target thread memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Penanganan Sinyal
Sinyal dimunculkan oleh suatu kejadian, sinyal tersebut dikirim ke proses, kemudian ditangani. Sinyal diterima secara synchronous / asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal
Contoh synchronous : Pembagian dengan nol, sinyal dikirim ke proses yg melakukan operasi tsb
Contoh asynchronous : Sinyal untuk mematikan proses dengan keyboard (Alt+F4)
Dimunculkan oleh peristiwa di luar proses yang sedang berjalan
Thread Pools
Masalah multithreading : pembuatan thread terlalu banyak menurunkan performa sistem. Solusi : membuat sejumlah thread pada saat startup dan menempatkannya ke dalam pool. Ketika server menerima request, thread dipanggil. Jika selesai, thread kembali ke pool. Keuntungan : lebih cepat dan membatasi jumlah thread yang ada pada suatu waktu
Thread specific data
Thread yang dimiliki oleh suatu proses memang berbagi data tetapi setiap thread mungkin membutuhkan duplikat dari data tertentu untuk dirinya sendiri dalam keadaan tertentu. Data ini disebut thread-specific data.
0 Comments