You are on page 1of 25

Konsep Thread

Referensi : Pengantar Sistem Operasi Komputer, Masyarakat Digital Gotong Royong (MDGR), 2006, http://bebas.vlsm.org/ v06/ Kuliah/ SistemOperasi/ BUKU/ Operating System Concepts, Abraham Silberschatz, Peter Galvin, Greg Gagne. Seventh Edition, John Wiley, 2005

Definisi (1)
Merupakan sebuah status eksekusi (running, ready, dll.) Sering disebut dengan lightweight process Merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama.

Definisi (2)
Single-threading Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Multi-threading Sebuah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas pada satu satuan waktu.

Single dan Multi-Threading

Contoh (1)
Pada umumnya, perangkat lunak yang berjalan pada komputer modern dirancang secara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari internet.

Contoh (2)
Terkadang ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya secara bersamaan. Jika web server berjalan sebagai proses yang memiliki thread tunggal (Single-threading) maka ia hanya dapat melayani satu klien pada pada satu waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani.

Contoh (3)
Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.

Benefit
Responsiveness Resource Sharing Economy Utilization of Multi-Processor Architectures

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.

Thread Pengguna (User Threads)


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. Thread pengguna biasanya dapat cepat dibuat dan dikendalikan

Thread Kernel (Kernel Threads)


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.

Model Multi-threading
Many-to-One One-to-One Many-to-Many

Many-to-One
Memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat.

One-to-One
Memetakan setiap thread tingkatan pengguna ke thread kernel. Model ini menyediakan lebih banyak concurrency dibandingkan model Many-to-One.

Many-to-Many
Mengelompokkan banyak thread pengguna untuk dipetakan ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. Mengijinkan sistem operasi untuk membuat sejumlah thread kernel.

Penggunaan Thread (1)


Model Many-to-One mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. Model One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas).

Penggunaan Thread (2)


Model Many-to-Many tidak memiliki kelemahan seperti kedua model sebelumnya. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat berjalan secara pararel pada multiprocessor. Jika suatu ketika thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.

Thread Cancellation (1)


Thread cancellation ialah pemberhentian thread sebelum tugasnya selesai. Misalnya jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan disebut sebagai target thread.

Thread Cancellation (2)


Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda: Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. Deferred cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

Thread Pools
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.

Contoh Thread Pools (1)


Pada web server yang multithreading ada dua masalah yang timbul : Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Contoh Thread Pools (2)


Solusinya adalah dengan penggunaan Thread Pools. Cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani.

Contoh Thread Pools (3)


Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas.

Keuntungan Thread Pools


Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.

Ada pertanyaan ?

You might also like