THREADS WINDOWS 7
Pada bagian ini dibahas
bagaimana implementasi, penjadwalan dan sikronisasi threads pada sistem operasi
Windows 7. Model yang digunakan oleh windows 7 adalah one-to-one model dan
mengimplementasi Win32 API dan mengalami sedikit perubahan penyempurnaan agar
dapat mengeksekusi proses dengan lebih efektif dan efisien.
PENJADWALAN THREADS pada WINDOWS 7
Jumlah thread yang dibuat
oleh process dapat lebih dari satu. Thread – thread yang dibuat oleh process
harus dapat dijalankan sesuai dengan kebutuhan process tersebut. Tugas sistem
operasi untuk mengatur dan melakukan penjadwalan agar thread – thread yang
dibutuhkan mendapat waktu yang cukup untuk dieksekusi oleh CPU. Windows 7
dalam melakukan penjadwalan
thread memakai pendekat Hal ini dimaksudkan untuk memenuhi
persyaratan desain berikut untuk sistem multimode:
- Memberikan preferensi untuk pekerjaan pendek.
- Memberikan preferensi ke I / O proses terikat.
- Cepat menetapkan sifat proses dan jadwal proses yang sesuai.
Beberapa FIFO antrian yang digunakan dan
operasi adalah sebagai berikut:
- Sebuah proses baru diposisikan pada akhir antrian FIFO tingkat atas.
- Pada tahap beberapa proses mencapai kepala antrian dan diberikan CPU.
- Jika proses ini selesai ia meninggalkan sistem.
- Jika proses sukarela relinquishes kontrol ia meninggalkan jaringan antrian, dan ketika proses menjadi siap kembali memasuki sistem pada tingkat antrian yang sama.
- Jika proses menggunakan semua waktu kuantum, itu adalah pra-empted dan diposisikan pada akhir antrian tingkat berikutnya yang lebih rendah.
- Ini akan berlanjut sampai proses selesai atau mencapai antrian tingkat dasar.
Ø Pada
tingkat dasar antrian proses beredar di mode round robin sampai mereka
menyelesaikan dan meninggalkan sistem.
Ø Opsional,
jika blok proses untuk I / O, itu ‘dipromosikan’ satu tingkat, dan ditempatkan
pada akhir antrian tertinggi berikutnya. Hal ini memungkinkan I / O proses
terikat untuk disukai oleh scheduler dan memungkinkan proses untuk ‘melarikan
diri’ antrian tingkat dasar.
Windows memilih thread yang akan dijalankan
berdasarkan prioritas dari thread tersebut. Secara default prioritas dari
thread diturunkan dari process yang membuat thread tersebut. Windows
menggunakan 32 level prioritas, dibagi menjadi 3 :
- 16 level real-time (16 – 31)
- 15 level variabel ( 1 – 15)
- 1 level sistem (0)
Meskipun secara default thread mewarisi
prioritasnya dari process yang membuatnya, prioritas ini dapat diubah dengan
memanggil fungsi SetThreadPriority. Kernel
melakukan perubahan dan penyesuaian prioritas thread secara
dinamis tergantung dari keadaan thread, CPU bound atau IO bound.
SINKRONISASI WINDOWS 7
Windows mengatur proses
sinkronisasi pada kernel dengan menggunakan interupt mask. Ketika kernel
mengakses data global, maka semua interupt yang mungkin akan mengakses data
tersebut akan dihentikan. Pada sistem multiprocessor, digunakan spinlock untuk
sinkronisasi thread pada kernel. Thread yang memegang spinlock akan bersifat
nonpreemtive. Sinkronisasi diluar kernel, windows menyediakan dispatcher
objects. Critical section, semaphore, event dan mutex termasuk mekanisme yang
digunakan dalam dispatcher objects.
Dispatcher object memiliki 2
kemungkinan state yaitu signaled atau nonsignaled. Signaled menandakan object
tersedia dan thread dapat menggunakan object tersebut. Nonsignaled, object
tidak tersedia dan thread tidak dapat menggunakan object tersebut. Proses
ketika thread akan mengakses shared data, thread akan mengecek state dari
dispatcher object.
Jika dispatcher object
berada pada nonsignaled state, state dari thread akan menjadi waiting state
danthread dimasukkan dalam antrian. Ketika state dari dispatcher object berubah
menjadi signaled state, dispatcher object akan melihat antrian. Jika ada thread
yang menunggu untuk menggunakan object tersebut, maka state dari thread
tersebut dirubah menjadi ready state.
KESIMPULAN
Windows 7 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. Penjadwalan threads pada windows bersifat preemtive dan berbasis
prioritas. Thread dengan prioritas tinggi dapat menginterupsi thread dengan
prioritas lebih rendah. Windows menggunakan interupt mask pada sinkronisasi
kernel dan spinlock pada sistem multiprocessor.
Tidak ada komentar:
Posting Komentar