THREADS WINDOWS : PEMBUATAN, PENJADWALAN DAN SINKRONISASI Julius Bata Magister Ilmu Komputer Universitas Gadjah Mada

dokumen-dokumen yang mirip
THREADS PADA WINDOWS Julius Bata /

Operating System. Thread. Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan. Dosen : Caca E. Supriana, S.Si

Contoh (3) Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendeng

TUGAS SISTEM OPERASI

TUGAS SISTEM OPERASI

TUGAS Mata Kuliah : Sistem Terdistribusi

MAKALAH SISTEM OPERASI Perbedaan Proses dan Thread. Disusun Oleh : NOVITA ANGGRAINI PUTRI

SISTEM OPERASI THREAD DAN MULTITHREADING

Definisi (1) ready, dll.) Sering disebut dengan lightweight process. register set, dan stack. sama.

Thread. pada satu waktu. menjalankan banyak tugas/thread. yang sama

Perbedaan Anatara Thread dan Proses

Artikel Perbedaan Proses Dan Thread. Disusun Oleh : Nama : Rozy Putra Pratama NIM : Prodi : Sistem Informasi

THREAD Ulir utas thread

PROSES DAN THREADS DALAM SISTEM OPERASI

Rahmady Liyantanto liyantanto.wordpress.com

Bab 13. Konsep Penjadwalan

PERBEDAAN PROSES DAN THREAD PADA SISTEM INFORMASI

Sistem Operasi. Proses dan Thread

MANAJEMEN PROSES. Pointer State proses Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.

KONSEP PROSES (CONT.)

PROSES. Sistem Terdistribusi

Sistem Operasi PENGATURAN PROSES

TUGAS SISTEM OPERASI THREAD

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi. System Calls dan Thread

Proses dan Threads Dalam SISTEM OPERAS

SISTEM OPERASI ISG2B3 THREAD. Agus Setiawan Program Studi Sistem Informasi Fakultas Rekayasa Industri Telkom University

Secara tidak langsung, proses merupakan program yang sedang dieksekusi.

Definisi: unit dasar dari penggunaan CPU. Thread terdiri dari: thread ID, program counter, register, dan stack.

Bab 10. Konsep Proses

ARTIKEL PERBEDAAN PROSES DENGAN THREAD. Di susun Oleh: Nama : Sri Wahyuni Nim :

PROSES DAN THREAD. : Anggo Luthfi Yunanto. Nim : : sistem informasi

Thread Proses merupakan sebuah program yang mengeksekusi THREAD tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu t

Thread juga sering disebut Lightweight process. Proses tradisional ( Heavyweight process ) mempunyai thread tunggal

Process Control Block (PCB) Masing-masing proses Direpresentasikan oleh Sistem Operasi dengan menggunakan Process Control Block (PCB),

Sistem Operasi - PCB (process control block)

Andi Gustanto M / Kelas 22 / TI

Laporan Tugas Scheduling Pengantar Sistem Operasi

MODUL 5 MANAJEMEN PROSES (2) (PENJADWALAN PROSES)

Struktur Sistem Komputer

Dimana thread digunakan?

Perbedaan Kernell Linux dan Windows

Konsep Proses. Proses adalah suatu program yang sedang diesekusi (running) Pada saat proses berlangsung :

Struktur Sistem Komputer

Algoritma Penjadwalan 2

1.PCB (process control block)

Mahasiswa dapat memahami konsep dasar deskripsi dan kontrol pada proses

Bab 3: Proses-Proses. Konsep Proses

Operating System: An Overview. Ch. 3: Process Management. Ch. 3: Process Management

KONSEP PROSES STATUS PROSES

MODUL 4 KONSEP PROSES, KONKURENSI, MANAJEMEN PROSES (1) M. R A J A B F A C H R I Z A L - S I S T E M O P E R A S I - M O D U L 4

SISTEM OPERASI. Deskripsi Proses. Multiprogramming. Istilah dalam Proses. (multitasking) MANAJEMEN PROSES. Multiprogramming.

Sistem terdistribusi Processes, Threads and Virtualization pertemuan 3. Albertus Dwi Yoga Widiantoro, M.Kom.

Sekolah Tinggi Teknologi Adisutjipto Yogyakarta

Processes. Processes. SISTIM OPERASI (Operating System) IKI-20230

1.Proses control block dalam istilah lain Taks controlling block, Taks struct, atau Switchframe. Jelaskan dan berikan gambaran proses control block?

Kelas: Nilai (Diisi Dosen):... IF

Sistem Operasi Pertemuan 3 Deskripsi & Kendali Proses. H u s n i Lab. Sistem Komputer & Jaringan Teknik Informatika Univ.

A. Deskripsi Singkat. B. Tujuan Instruksional Umum (TIU) C. Bahasan. SILABUS MATA KULIAH Kode MK: Semester: Bobot SKS: 3. Matakuliah : SISTEM OPERASI

SISTEM OPERASI (MANAJEMEN PROSES)

BAB 4. SINKRONISASI & DEADLOCK

Sistem Operasi Pertemuan 4 Thread, SMP & Microkernel. H u s n i Lab. Sistem Komputer & Jaringan Teknik Informatika Univ.

Proses. - yaitu program yang sedang dieksekusi Proses merupakan satuan kerja terkecil yang secara individual dijadwalkan oleh sistem operasi

Perbedaan Proses dan Program

Modul ke: Sistem Operasi. Tipe penjadwalan di prosessor preemptive. Fakultas FASILKOM. Juliansyahwiran, S. Kom, MTI. Program Studi Sistem Informasi

Bab 3: Proses-Proses. Konsep Proses

STRUKTUR SISTEM OPERASI

Model Proses : 1. Sequential Process / bergantian 2. Multiprogramming 3. CPU Switching peralihan prosedur dalam mengolah 1 proses ke proses lainnya.

1. Mampu mengimplementasikan thread dalam sebuah aplikasi 2. Memahami kegunaan thread dalam aplikasi

Recap. Proses. Proses. Multiprogramming. Multiprocessing 9/16/2016. Ricky Maulana Fajri

Operating System: An O verview. Ch. 3: Process Management

Operating System. Scheduling. Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan. Dosen : Caca E. Supriana, S.Si

Mahasiswa dapat memahami konsep dasar deskripsi dan kontrol pada proses

Algoritma Penjadwalan pada Tinyos

Sistem Operasi Penjadwalan Proses

4. Apa yang dimaksud dengan user mode?(nilai 3) Jawab: Adalah kondisi pada saat program user (job) sedang dieksekusi oleh prosesor.

Konsed Dasar Penjadualan Proses

Deskripsi Penjadwalan Proses

Penjadualan Process Bagian 2

Sebagai Kordinator, yang memberikan fasilitas sehingga segala aktivitas yang kompleks dapat dikerjakan dalam urutan yang benar.

GARIS GARIS BESAR PROGRAM PENGAJARAN/GBPP (Rencana Kegiatan Belajar Mengajar)

STRUKTUR SISTEM OPERASI

Bab selanjutnya membahas tentang penggunaan thread pada java, thread bisa memiliki status new, runnable, block, dead.

Bab 6: Sinkronisasi Proses. Latar Belakang

Mata Kuliah : Sistem Operasi Kelas : Teknik Informatika 4

Prio Handoko, S.Kom., M.T.I.

Pertemuan #2: Proses dan Thread

Penjadualan CPU. Konsep Dasar Kriteria Penjadualan Algoritma Penjadualan Penjadualan Multiple-Processor Penjadualan Real-Time Evaluasi Algorithm

TUGAS MATA KULIAH SISTEM OPERASI ARTIKEL TENTANG PERBEDAAN PROSES DAN THREAD

4. SISTEM OPERASI TERDISTRIBUSI

Pengaturan Proses Dalam system operasi. proses

4 Implementasi Proses

RENCANA PROGRAM DAN KEGIATAN PEMBELAJARAN SEMESTER

1. New 2. Running 3. Waiting 4. Ready 5. Terminated

Konsep Dasar Kriteria Penjadualan Algoritma Penjadualan Penjadualan Multiple-Processor Penjadualan Real-Time Evaluasi Algorithm

7. Pengaturan Proses

B. Jawablah dengan ringkas dan lengkap. (Jawaban tidak lebih dari 10 kalimat) (Nilai 40) Solusi: kata kunci dalam huruf miring.

Penjadwalan Process. Konsep Dasar Penjadwalan Proses. Preemptive & Non-Preemtive Scheduling. Dispatcher.

Modul ke: Sistem Operasi. Tipe penjadwalan di prosessor non-preemptive. Fakultas FASILKOM. Juliansyahwiran, S. Kom, MTI.

Dukungan Sistem Operasi :

Apa yang akan dipelajari?

Transkripsi:

THREADS WINDOWS : PEMBUATAN, PENJADWALAN DAN SINKRONISASI Julius Bata Magister Ilmu Komputer Universitas Gadjah Mada juliusbata@gmail.com Abtraksi Sistem operasi bertugas untuk melakukan manajemen proses. Sebagian besar pekerjaan dari sistem operasi berhubungan dengan proses. Sejak penciptaan hingga penjadwalan proses, merupakan tanggung jawab dari sistem operasi. Sistem operasi modern(saat sekarang) sudah mendukung adanya multitasking dan multithreading. Windows merupakan salah satu sistem operasi yang mendukung sistem multitasking. Setiap proses dalam windows memiliki minimal satu buah thread didalamnya. Tulisan ini menggambarkan bagaimana implementasi thread pada sistem operasi windows. Bagian pertama akan menjelaskan thread secara umum dan pada bagian kedua akan dijelaskan pembuatan, penjadwalan dan sinkronisasi thread pada windows. Kata kunci : thread, windows thread, sinkronisasi thread, penjadwalan thread. 1. PENDAHULUAN Sistem operasi terdiri dari berbagai komponen penyusun. Tidak semua sistem operasi memiliki komponen penyusun yang sama. Salah satu komponen penyusun utama yang harus dimiliki oleh sistem operasi adalah manajemen process. Process didefinisikan sebagai program yang sedang dieksekusi. Process tidak hanya sekedar suatu kode program (text section), tetapi juga aktivitas yang sedang berlangsung yang ditunjukkan lewat nilai program counter dan isi dari register. Sebuah process juga melibatkan stack yang berisi data sementara (parameter fungsi/ metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel global [Silberschatz et al, 2004]. Suatu process minimal memiliki satu buah threads. Sistem operasi modern pada umumnya sudah mendukung multithread, process memiliki lebih dari satu threads dan dijalankan pada waktu yang sama. 1.1. Defenisi Threads Threads dapat didefenisikan sebagai suatu entitas dari process, yang mana waktu eksekusinya dijadwalkan oleh sistem operasi [Russinovich dan Solomon,2005]. Komponen utama threads adalah thread ID, program counter, set register dan stack. 1.2. Jenis Threads Terdapat 2 jenis threads yaitu kernel threads dan user threads. 1.2.1. Kernel threads Kernel threads merupakan threads yang dicipatakan dan berjalan pada kernel level. Penjadwalan dan manajemen dilakukan oleh kernel pada kernel level. Kernel threads sering disebut juga process yang ringan (Lightweight Process/LWP). Kernel threads lebih lambat process pembentukan dan penjadwalan jika dibandingan dengan user threads. Kernel threads mendukung multithreading dimana beberapa thread dapat dijalankan dalam waktu yang bersamaan. 1.2.2. User thread User threads merupakan threads yang berjalan pada user level. Pengaturan dan penjadwalan dari threads ini sepenuhnya dilakukan pada user level tanpa campur tangan dari kernel level. User threads secara umum lebih ringan dalam process pembentukan dan penjadwalan. Akan tetapi tidak dapat berjalan secara multi threading. 1.3. Relasi Threads Terdapat hubungan antara user threads dan kernel threads. Secara umum relasi ini terbagi menjadi 3 model [Silberschatz et al, 2004], yaitu :

1. Many-to-One Model Many-to-One model memetakan semua user threads ke dalam satu kernel threads. Manajemen pengaturan threads dilakukan pada user level sehingga kinerja lebih cepat. Kekurangannya adalah jika suatu threads melakukan blocking maka threads yang lain tidak dapat berjalan. Hanya satu threads yang dapat dijalankan pada satu waktu. Gambar 1. Many-to-One model [Silberschatz et al, 2004] 2. One-to-One Model Satu user thread memiliki satu kernel thread. Keuntungan dari model ini adalah lebih dari satu thread dapat berjalan secara bersamaan. Jika satu thread melakukan blocking, thread yang lain tetap dapat berjalan. Karena setiap penciptaan user thread harus dibarengi dengan kernel thread maka model ini cenderung lebih lambat dibandingkan dengan many-to-one. Gambar 2. One-to-One model[silberschatz et al, 2004] 3. Many-to-Many Model Memetakan beberapa user thread ke dalam sejumlah kernel thread, dimana jumlah kernel thread yang dapat digunakan sama atau lebih sedikit dari jumlah user thread. Pada model ini hanya satu thread yang dapat dijadwalkan oleh kernel thread dalam satu waktu. Gambar 3. Many-to-Many model[silberschatz et al, 2004] 2. THREADS WINDOWS Pada bagian ini dibahas bagaimana implementasi, penjadwalan dan sikronisasi threads pada sistem operasi Windows XP. Model yang digunakan oleh windows XP adalah one-to-one model dan mengimplementasi Win32 API [Silberschatz et al, 2004]. 2.1. Win32 API Win32 API merupakan salah satu pustaka threads(threads librabries). Win32 API merupakan API(Application Programming Interface) utama dari semua sistem operasi keluaran Microsoft [Silberschatz et al, 2004]. Win32 API menyediakan fungsi fungsi untuk membuat, memanipulasi threads. Berikut ini beberapa fungsi yang berkaitan dengan pembuatan threads :

Tabel 1. Fungsi fungsi threads pada Win32 API [Russinovich dan Solomon,2005] Fungsi Deskripsi CreateThread Menciptakan sebuah threads baru CreateRemoteThread Menciptakan sebuah threads baru pada process yang lain OpenThread Membuka thread yang ada ExitThread Menghentikan eksekusi thread secara normal TerminateThread Menghentikan sebuah threads GetCurrentProcessID Mengembalikan threads ID dari threads yang sedang dieksekusi GetThreadID Mengembalikan threads ID dari threads tertentu 2.2. Komponen Threads Thread pada windows secara umum mempunyai komponen sebagai berikut : thread ID, register set, user dan kernel stack dan private storage area. Register set, stacks dan private data storage disebut sebagai context dari sebuah thread [Silberschatz et al, 2004]. 2.3. Struktur Data Threads Tiga struktur data utama dari sebuah threads adalah ETHREAD, KTHREAD dan TEB [Russinovich dan Solomon,2005]. 2.3.1. ETHREAD (executive thread 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 process utama yang memiliki thread tersebut dan Thread start address adalah alamat dari rutin awal thread. Gambar 4. Struktur executive thread blok [Russinovich dan Solomon,2005]

2.3.2. KTHREAD (kernel threads blok) Gambar 5. Struktur kernel thread blok [Russinovich dan Solomon,2005] 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. 2.3.3. TEB (thread environtment 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. Gambar 6. Struktur thread environment blok [Russinovich dan Solomon,2005]

2.4. Pembuatan Threads Keberadaan threads tidak bisa terlepas dari process. Hal ini disebabkan karena threads berada atau menjadi bagian dari suatu process. Proses pembuatan threads menjadi bagian dari proses pembuatan suatu process. Thread membutuhkan stack dan context sebelum thread tersebut diciptakan[russinovich dan Solomon,2005]. Tugas untuk menyediakan 2 hal ini dipegang oleh fungsi CreateThreads. Ketika sebuah process akan membuat threads, maka CreateThreads akan dipanggil. Fungsi CreateThreads akan mengerjakan hal berikut : 1. Membuat user-mode stack untuk thread. 2. Thread hardware context diinisialisasi. 3. Memanggil fungsi NtCreateThread untuk membuat executive thread object. Pada tahap ini dihasilkan thread ID dan thread handle. NtCreateThread dalam prosesnya akan memanggil PspCreateThread dan menjalankan tahap tahap berikut : 1. Menaikan counter thread pada peocess object. 2. ETHREAD diciptakan dan diinisialisasi. 3. Thread ID digenerate. 4. TEB pada user-mode adress space di set-up. 5. ETHREAD menyimpan start address dari user-mode thread. 6. Fungsi KeInitThread dipanggil untuk melakukan set-up pada KTHREAD block. Selain itu, base priorities dari thread diset sesuai dengan base priorities dari process. Affinity dan quantum thread juga disesuaikan dengan process yang membuatnya. Selanjutnya mengalokasikan kernel stack untuk thread, inisialisasi machine-dependent hardware context termasuk didalamnya context, trap dan exception frame dari thread. Paling akhir, KeInitThread akan menginisialisasi state dari thread dan selesai tugas dari KeInitThread. 7. Thread access token diset pada process access token. Sekaligus akan dilakukan proses pengecekan apakan process yang membuat thread mempunyai hak untuk membuat thread atau tidak. Pengecekan ini selalu sukses jika thread dibuat dalam lngkungan lokal process. Jika thread yang dibuat berada pada process yang lain, maka ada kemungkinan gagal. 4. Thread sudah selesai dibuat. Thread yang baru dibuat akan berada dalam suspended state. Thread akan menunggu hingga seluruh tahapan pembuatan process selesai dikerjakan. Selanjutnya Kernel32.dll mengirim pesan kepada windows subsystem tentang adanya thread dan process baru. Windows subsystem melakukan beberapa proses set-up. Setelah itu maka thread diresume(pada awal terbentuk thread berada dalam suspended state) dan dijalankan. 2.5. Penjadwalan Threads 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. Pada bagian ini akan dibahas bagaimana windows melakukan penjadwalan thread. Windows dalam melakukan penjadwalan thread memakai pendekatan prioritas dan bersifat preemtive[russinovich dan Solomon,2005]. Thread dengan prioritas tertinggi pasti dijalankan dan dapat menghentikan/menginterupsi jalannya thread lain yang prioritasnya lebih rendah. Ketika menggunakan CPU,thread menghabiskan sejumlah waktu, ini disebut dengan quantum. Quantum adalah sejumlah waktu yang diberikan kepada thread untuk menggunakan CPU. Sifat penjadwalan windows yang preemtive memungkinkan suatu thread untuk diinterupsi, meskipun waktu quantumnya belum habis.

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[Russinovich dan Solomon,2005] : 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 [Silberschatz et al, 2004]. 2.5.1. State thread Terdapat 6 kemungkinan state dari sebuah thread, yaitu ready, standby, running, waiting, transition dan terminated. Ready state yaitu thread yang siap untuk dieksekusi. Thread yang berada pada ready state dengan prioritas tertinggi akan berpindah menjadi standby state. Ketika thread dieksekusi, thread tersebut berada pada running state. State waiting dimasuki thread ketika thread menunggu untuk dijadwalkan ulang. Ketika thread akan dieksekusi tetapi sumber daya yang diperlukan belum tersedia, maka thread tersebut akan berpindah pada state transition. Terminated state dimasuki thread ketika thread selesai dieksekusi. 2.5.2. Dispatcher database Gambar 7. State thread pada windows XP [Russinovich dan Solomon,2005] Kernel menyimpan suatu struktur data yang berisi informasi thread mana saja yang berada dalam waiting state untuk dieksekusi dan processor yang mengeksekusi thread. Struktur data ini dikenal dengan nama dispatcher database[russinovich dan Solomon,2005]. Gambar 8. Dispacther database [Russinovich dan Solomon,2005]

Dispacther membagi antrian dalam 32 level, yang juga merupakan prioritas dari tiap thread. Antrian disusun dari thread dengan prioritas tertinggi ke prioritas terendah. Dispacther akan mengecek dari antrian paling atas hingga paling bawah, untuk melihat apakah ada thread yang berada pada ready state. Jika ada dan processor yang bersesuaian tersedia maka thread akan dijalankan(berhubungan dengan processor affinity). Jika processor yang bersesuaian tidak tersedia maka thread tersebut dilewati dan dispacther melanjutkan pencarian thread lain yang siap untuk dijalankan. Jika tidak terdapat thread yang siap untuk dijalankan(ready state), maka dispatcher menjalankan satu thread khusus yang disebut dengan idle thread. 2.5.3. Skenario penjadwalan Pada prakteknya, terdapat beberapa skenario yang mungkin terjadi dalam penjadwalan[russinovich dan Solomon,2005]. a. Voluntary switch Sebuah thread (thread1) yang sedang berjalan dengan sukarela berpindah pada wait state dan membiarkan thread (thread2) pada antrian untuk dieksekusi. Setelah thread (thread2) selesai dieksekusi, thread (thread1) kembali dilanjutkan proses eksekusinya. b. Preemption Gambar 9. Voluntary switch [Russinovich dan Solomon,2005] Sifat penjadwalan Windows adalah preemtive, maka dimungkinkan sebuah thread menghentikan thread lain yang sedang dijalankan. Hal in dapat terjadi diantaranya disebabkan perubahan prioritas thread dan juga dapat disebabkan ketika sebuah thread dengan prioritas yang lebih tinggi sudah selesai berada dalam waiting state (resource yang dibutuhkan oleh thread tersebut sudah tersedia sehingga thread tersebut berpindah pada ready state). Thread yang diinterupsi eksekusinya akan masuk kembali ke antrian. Posisi thread ini akan berada pada awal antrian, bukan diekor antrian. Setelah thread yang menginterupsinya selesai dieksekusi, maka thread yang tadi interupsi akan melanjutkan eksekusinya. Thread ini melanjutkan quantum yang tersisa pada saat diinterupsi, jadi perhitungan quantum tidak dari awal lagi. Gambar 10. Preemtion [Russinovich dan Solomon,2005]

c. Quantum end Ketika suatu thread telah menghabiskan quantumnya, maka windows akan mengurangi prioritas dari thread tersebut dan mencari thread yang siap dan layak untuk dieksekusi. Jika terdapat thread dengan prioritas yang sama dalam atrian, maka thread yang baru saja dieksekusi akan diletakan pada posisi paling akhir (ekor) dari antrian. Thread tersebut akan berpindah dari running state ke waiting state. d. Termination Gambar 12. Quantum end [Russinovich dan Solomon,2005] Ketika thread selesai dikerjakan (dengan pemanggilan fungsi ExitThread atau TerminateThread) maka thread tersebut akan beralih dari running state ke terminated state. Thread tersebut akan dihapus dari daftar thread process dan data yang terkait dengan thread tersebut dilepaskan. 2.6. Sinkronisasi Thread Seperti yang telah disebutkan sebelumnya, suatu process dapat memiliki lebih dari satu threads. Threads threads ini menggunakan dan berbagi data yang sama (share data). Masalah yang timbul adalah adanya kemungkinan suatu data menjadi tidak konsisten ketika diakses oleh lebih dari satu threads pada waktu yang bersamaan. Mekanisme untuk mencegah dan mengatasi masalah ini adalah dengan sinkronisasi. 2.6.1. Critical section Salah satu cara dalam sinkronisasi adalah dengan menggunakan critical section. Terdapat suatu bagian dimana kode dalam thread menjadi critical, pada saat suatu thread menjalankan critical sectionnya maka thread yang lain tidak dapat menjalankan critical section miliknya[silberschatz et al, 2004]. Ketika thread keluar dari critical sectionnya, thread yang lain baru dapat menjalankan critical section miliknya. 2.6.2. Semaphore Semafor adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses melalui dua operasi standar, yaitu acquire() dan release(). Operasi acquire() akan melakukan decrement variabel semaphore sedangkan release() melakukan operasi increment. Ketika thread akan mengakses suatu share data, thread akan menjalankan operasi acquire(), sebaliknya ketika thread selesai mengakses share data maka akan menjalankan release(). Proses akses dan modifikasi nilai variabel semaphore oleh sebuah thread hanya boleh dilakukan oleh satu thread pada satu waktu. Selain itu ketika proses berjalan maka tidak boleh diinterupsi[silberschatz et al, 2004]. 2.6.3. Event Event adalah suatu cara yang digunakan oleh suatu thread untuk memberi tanda kepada thread yang lain. Event digunakan ketika thread mengakses data, thread tersebut akan memberi tanda kepada thread lain yang hendak mengakses data yang sama untuk menunggu(wait/sleep). Setelah selesai, thread tersebut memberi tanda kepada thread yang lain bahwa thread tersebut telah selesai dan data tersebut sudah dapat diakses oleh thread yang lain. 2.6.4. Mutexes Mutex dapat digambarkan sebagai sebuah kunci. Ketika thread akan mengakses data, thread tersebut membutuhkan kunci(mutex) untuk mengakses data tersebut. Setelah mendapat kunci dan selama mengakses data tersebut, thread akan melakukan penguncian(lock) sehingga thread yang lain tidak

dapat mengakses data tersebut. Selesai mengakses, thread akan membuka kunci, dan menyerahkan kunci(mutex) kepada thread yang lain. 2.6.5. Sinkronisasi windows Windows mengatur proses sinkronisasi pada kernel dengan menggunakan interupt mask[silberschatz et al, 2004]. 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[silberschatz et al, 2004]. 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 dan thread 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[silberschatz et al, 2004]. 3. 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. 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. Selain itu windows juga menyediakan dispatcher object. Critical section, semaphore, event dan mutex termasuk didalam dispatcher object. DAFTAR PUSTAKA [Russinovich dan Solomon,2005] Russinovich, M., and Solomon, D. Microsoft Windows, Internals Fourth Edition: Microsoft Windows Server 2003, Windows XP, and Windows 2000. Microsoft Press, 2005. [Silberschatz et al, 2004] Silberschatz, A., Galvin, P., Gagne, G. 2004. Operating Systems Concepts with Java. Sixth Edition. John Wiley & Sons.