Langsung ke konten utama

Konsep Thread Sistem Operasi


Konsep Thread

Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. 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. 

Perbedaan antara proses dengan thread tunggal (single-threaded) dengan proses dengan thread yang banyak (multi-threaded) adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. 

Keuntungan Thread

1. Responsi

Membuat aplikasi yang interaktif menjadi multihreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image. 

2. Berbagi Sumber Daya

Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.  

3. Ekonomi

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 untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.

4. Utilisasi Arsitektur Multiprocessor
Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu (satusatuan waktu pada CPU biasa disebut time slice atau quantum).

Multithreading

1. Thread Pengguna 

Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.

2. Thread Kernel 

Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.


Contoh Multithreading

Banyak perangkat lunak yang berjalan pada PC 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 network. Situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Contohnya adalah sebuah web server yang dapat mempunyai ratusan klien yang mengaksesnya secara concurrent. 

Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. 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.


Model Multithreading


1. Model Many-to-One

Model ini memetakan banyak user-level thread ke satu kernel thread. Pengaturan thread dilakukan di user space. Model ini efisien tetapi ia mempunyai kelemahan yang sama dengan user thread serta tidak dapat berjalan secara pararel pada multiprocessor. 

2. Model One-to-One

Model ini memetakan setiap user thread ke kernel thread, menyediakan lebih banyak concurrency dibandingkan many-to-one mode. Keuntungannya sama dengan keuntungan kernel thread sedangkan kelemahannya setiap pembuatan user thread membuatuhkan pembuatan kernel thread yang dapat menurunkan performa dari sebuah aplikasi. Sistem operasi yang mendukung one-to-one model ini adalah windows NT dan OS/2

3. Model Many-to-Many

Multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread Jumlah kernel thread dapat spesifik untuk sebagian aplikasi atau sebagian mesin Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Ketika suatu thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. Sistem operasi yang mendukung model ini adalah solaris, irix, dan digital unix.


Pustaka Thread

Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library bertugas untuk menyediakan API (Application Programming Interface) untuk programmer dalam menciptakan dan memanage thread. Ada dua cara dalam mengimplementasikan pustaka thread :

  • Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system call. Jadi, jika kita memanggil fungsi yang sudah ada di pustaka, maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan system call.
  • Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan melibatkan system call ke kernel.
Ada tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX Pthreads, Java, dan Win32. Implementasi POSIX standard dapat dengan cara user level dan kernel level, sedangkan Win32 adalah kernel level. Java API thread dapat diimplementasikan oleh Pthreads atau Win32.


Pembatalan Thread

Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu dalam database dan menemukan serta mengembalikan hasilnya, thread sisanya akan dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.

Pemberhentian target Thread dapat dilakukan dengan 2 cari :
  • Asynchronous cancellation : Suatu thread seketika itu juga membatalkan target thread.
  • Deferred cancellation : Suatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.

Penjadwalan Thread

Begitu dibuat, thread baru dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan penjadwalan yang menentukan setiap proses, di mana proses tersebut akan ditaruh dalam daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar proses tersebut.

Untuk menjadwalkan thread, sistem dengan model mulithreading many to many atau many to one menggunakan :
  • Process Contention Scope (PCS) : Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP (lightweight process) yang tersedia.
  • System Contention Scope (SCS) : SCS berfungsi untuk memilih satu dari banyak thread, kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).

Komentar

Postingan populer dari blog ini

Evaluasi UI (Usability & User Experience)

Apa itu Usability? Jacob Nielson, usability didefinisikan sebagai kemampuan sistem untuk memenuhi kebutuhan pengguna dengan 5 atribut penilaian, yaitu learnability, efficiency, memorability, errors, dan satisfaction. Pressman, usability merupakan tingkatan kemampuan antarmuka aplikasi dapat digunakan untuk mempermudah hidup pengguna. Santoso, usability merupakan derajat kemampuan sebuah aplikasi untuk membantu pengguna menyelesaikan sebuah tugas. ISO 9241-11 (Bevan, 1995), mendefinisikan usability merupakan sejauh mana suatu produk dapat digunakan oleh pengguna tertentu untuk mencapai target yang ditetapkan dengan effectiveness, efficiency dan satisfaction. Kenapa sih Usability itu Penting? Memudahkan pengguna Aplikasi mudah dipelajari Aplikasi harus berjalan sesuai fungsinya Berdampak Pada Faktor Kesuksesan Menarik minat penggunanya Alat Uji Usability SUS (System Usability Scale) : SUS merupakan kuesioner yang sederhana dan paling dapat diandalkan. QUIS (Questionnaire for User Int...

Implementasi HTML Bootstrap Design Web ke WordPress

Kemunculan WordPress lebih memudahkan proses perancangan blog. Sebelum adanya WordPress, banyak developer Website yang menggunakan HTML statis bagi merancang blog. Namun, kini para developer sudah mulai beralih menggunakan tampilan yang terdapat di WordPress. Meskipun saat ini tak masalah jika tetap menggunakan HTML statis, tetapi tak ada salahnya bukan jika mempertimbangkan pindah ke WordPress. Kenapa? Karena dengan WordPress, Kamu dapat merancang dan mengelola blog lebih gampang. WordPress menyediakan tema, plugin, widget, dan beragam fitur lainnya yang mempermudah Kamu mengelola blog tanpa berurusan dengan coding. Bagi kamu selaku pemilik blog yang masih menggunakan HTML statis telah seharusnya disarankan sebaiknya Kamu mulai mempertimbangkan untuk melakukan convert HTML ke WordPress. Selain mempermudah Kamu bagi mengelola, WordPress pun mempunyai banyak fitur yang lebih fleksibel ditambah maupun dikurangi diperbandingkan dengan HTML statis. Ada tiga macam cara convert HTML ke WordP...

Logika Fuzzy (Model Sugeno dan Tsukamoto)

Logika Fuzzy adalah metodologi sistem kontrol pemecahan masalah yang cocok digunakan untuk diimplementasikan pada berbagai sistem, mulai dari sistem yang sederhana, sistem kecil, embedded system, jaringan PC, multichannel atau workstation berbasis akuisisi data dan sistem kontrol. Logika ini  merupakan suatu logika yang memiliki nilai kekaburan atau kesamaran antara benar atau salah. Logika Fuzzy sering digunakan dalam bidang elektronika. Konsep logika ini pertama kali diperkenalkan oleh Prof. Lotfi Astor Zadeh pada tahun 1962. A. Model Sugeno Model Sugeno adalah metode interfensi fuzzy untuk aturan yang dipresentasikan dalam bentuk IF-THEN, output yang dihasilkan sistem tidak berupa himpunan fuzzy, tetapi berupa konstanta atau persamaan linear. Sebagai fungsi keanggotaan dari konsekuen, Michio Sugeno mengusulkan penggunaan singleton. Singleton adalah sebuah himpunan fuzzy dengan fungsi keanggotaan yang pada titik tertentu mempunyai sebuah nilai dan 0 diluar titik tersebut. Du...