THREAD

Apa Itu Thread?

Thread 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. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.

Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu.


Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.

Thread Sharing
• Thread menempati ruang alamat memori yang sama

• Tiap thread dapat mengakses data yang sama

• Jika suatu thread mengubah data di memori, maka threadyang lain dapat mengetahuin perubahan data tersebut

• Jika sebuah thread sedang membuka suatu file, maka threadyang lain juga dapat membaca isi file tersebut

Status Thread
Spawn :
Otomatis thread terbentuk saat proses terbentuk

Thread bisa dibentuk oleh thread lain dalam satu proses

Thread baru berada pada antrian ready

Block :
Thread di block bila menuggu suatu event

Unblock :
Bila event yang dibutuhkan sudah datang, maka thread -> ready

Finish :
Thread telah selesai dieksekusi

Thread Pools
Pada aplikasi yang multithreading ada 2 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.
Solusinya adalah dengan penggunaan thread pools, cara kerjanya adalah dengan membuat beberapa thread pada proses ketika startup dan menempatkan thread-thread tersebut  ke pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika aplikasi menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka aplikasi menunggu sampai ada 1 thread yang bebas.

Keuntungan thread pool :

Bisa 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 mendukung pada sistem yang tidak bisa mendukung banyak thread


Model Multithreading
Dukungan thread disediakan pada tingkat user yaitu user threads dan kernel threads.

User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur secara langsung oleh sistem operasi.

Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:

Model One to One:
Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel.

Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.

Keuntungannya sama dengan keuntungan thread kernel.

Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel.

Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini jumlah thread dibatasi oleh sistem.

Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.


Model Many To One:
Model 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.

Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor.

Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One
Model Many to One

Model Many To Many:
Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna thread.

Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin.

Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu.

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).

Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor.

Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.


Keuntungan Thread
Responsif :
Aplikasi yg multithreading dapat meningkatkan respons terhadap user

Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan user untuk menampilkan video, sementara thread lain berusaha menampilkan image.

Berbagi Sumber Daya :
Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

Ekonomis :
Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber
daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber
daya proses yang memilikinya maka akan lebih ekonomis

Utilisasi arsitektur multiprocessor:
Keuntungan dari multithreading dapat sangat meningkat pada
arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang

Comments

Popular posts from this blog

HANDHELD

PENJELASAN DMA (Direct Memory Acces)

APA ITU SISTEM INFORMASI?