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.
• 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 (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 (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
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.
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.
Referensi :
Tidak ada komentar:
Posting Komentar