Thread Pada Sistem Operasi Windows
1.Thread
• Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
• Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
• Kadang disebut sebagai proses ringan (lightweight).
• Unit dasar dari dari sistem utilisasi pada processor (CPU).
• Dalam thread terdapat: ID Thread, Program Counter, Register dan Stack.
• Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama.
2.Single-Threading dan Multi-Threading Single
Threading adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller. Multi-Threading adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.
3. Keuntungan Multi-Threading
• Responsive; tanggap: Multi-Threading mengizinkan program untuk berjalan terus walau-pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
• Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses.Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
• Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
• Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
4. Kerugian Multi-Threading
• Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace memory.
• Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove (ditambah), tapi malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang dibutuhkan ketika terjadi pergantian thread yang berjalan.
• Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.
5. Model-Model Threading
1. Kernel-level threading; thread ini dibuat oleh pengguna yang berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel. Ini merupakan implementasi (penerapaan) paling sederhana dari threading.
• Thread kernel didukung langsung oleh sistem operasi.
• Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space.
• Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
2. User-level threading; sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat dilakukan dengan sangat cepat.
• Thread pengguna didukung kernel serta diimplementasikan dengan pustaka (library) thread pada tingkatan pengguna.
• Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
• Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.
6. Thread dalam Sistem Operasi
• Sistem operasi telah mendukung proses multithreading.
• Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
• Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna
THREADS PADA WINDOWS
Windows mengunakan Win32 API sebagai API utama dalam hampir semua sistem operasi Microsoft. Selain itu windows mengimplementasi model relasi One-to-One, dimana terdapat satu kernel thread yang berasosiasi dengan masing – masing user thread. Thread pada windows secara umum mempunyai komponen sebagai berikut :
• Thread ID
• Register set
• User stack dan kernel stack
• Private storage area.
Register set, stacks dan private data storage disebut sebagai context dari sebuah thread. Struktur data utama dari sebuah thread :
• ETHREAD (executive thread block)
• KTHREAD (kernel thread block)
• TEB (thread environment block)
Bagian penting dari ETHREAD adalah KTHREAD, Process ID, Thread start address. Blok KTHREAD merupakan pointer yang merujuk pada kernel thread (KTHREAD), Process ID juga merupakan suatu pointer yang menunjuk pada proses utama yang memiliki thread tersebut dan Thread start address adalah alamat dari rutin awal thread.
KTHREAD (kernel thread block)
KTHREAD menyimpan informasi yang dibutuhkan oleh kernel untuk dapat melakukan penjadwalan dan sinkronisasi thread. Pada KTHREAD juga terdapat kernel stack, yang mana akan digunakan ketika thread berjalan pada kernel mode. Juga terdapat pointer yang menunjuk TEB.
TEB (thread environment block)
TEB menyimpan informasi image loader dan beberapa DLLs dari windows. Komponen - komponen ini berjalan pada user mode, maka dibutuhkan suatu struktur data yang dapat dimanipulasi(writable) pada user mode. Oleh karena itu, tidak seperti KTHREAD dan ETHREAD yang berada pada kernel space, TEB berada pada user space.
Proses Pembentukan Thread
Sebelum sebuah thread dibuat, diperlukan stack dan context dimana thread akan dijalankan. Proses pembentukan stack dilakukan dengan pemanggilan fungsi CreateThread. Fungsi ini terdapat dalam Kernel32.dll. Process manager akan mengalokasikan space untuk object dari thread yang baru dan memanggil kernel untuk membuat kernel thread block. Berikut ini langkah – langkah pembentukan thread :
1. Memanggil fungsi CreateThread membuat stack untuk thread pada user-level.
2. Thread's hardware context diinilisasi oleh CreateThread.
3. Fungsi NtCreateThread dipanggil untuk membuat executive thread object.
NtCreateThread memanggil fungsi PspCreateThread dan menjalankan proses – proses berikut :
• Thread count pada program/proses akan dinaikan 1.
• Executive thread block (ETHREAD) dibuat dan diinisialisasi.
• Thread ID dibuat untuk thread yang baru
• TEB di setup (user- mode)
• Thread start address pada user-mode disimpan dalam ETHREAD
• Fungsi KelnitThread dipanggil untuk membuat KTHREAD block.
KelnitThread mengalokasikan kernel stack dan inisialisasi machinedependent hardware context termasuk didalamnya context, trap, dan exception frames.
• Thread access token di set sesuai dengan proces acces token dan akan dicek apakah program/proces tersebut memiliki hak untuk membuat thread atau tidak. Proses cek ini akan selalu berhasil jika thread yang diciptakan bersifat lokal, dimana thread yang diciptakan masih berada dalam program/proces yang sama. Kemungkinan gagal jika thread yang akan dibuat untuk program/proces yang lain.
4. Thread baru diinformasikan oleh CreateThread kepada Windows subsystem dan subsystem melakukan beberapa proses setup untuk thread yang baru.
5. Thread handle dan thread ID dikembalikan kepada proses/program yang membuat thread tersebut.
6. Thread dijalankan.
KESIMPULAN
Windows dalam mengimplementasikan thread memakai model One-to-One. Sehingga windows mendukung multithreading. Win32 API adalah pustaka thread yang digunakan oleh windows. Struktur data utama dalam thread windows : ETHREAD (executive thread block), KTHREAD (kernel thread block) yang keduanya berada pada kernel-level dan TEB (thread environment block) yang berada pada user-level.
DAFTAR PUSTAKA
• http://en.wikipedia.org/wiki/Windows_API
• http://en.wikipedia.org/wiki/Thread_(computer_science)
• https://vivimargaretha494.wordpress.com/2015/10/01/thread-pada-sistem-operasi-2/
• Silberschatz, A., Galvin, P., Gagne, G. 2004. Operating Systems Concepts with Java. Sixth Edition. John Wiley & Sons. hal 181 - 212
Tidak ada komentar:
Posting Komentar