Selasa, 24 Maret 2020

THREAD


THREAD
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. 
Thread merupakan unit dasar dari penggunaan CPU yang terdiri dari Thread_ID, program counter, register set, dan stack dan thread disebut juga lightweight process. Secara umum kita bisa simpulkan bahwa, Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari pengguna (responsif), pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. Akan tetapi, multithread juga dapat merugikan pengguna. Salah satunya, jika digunakan secara berlebihan, multithreading akan berdampak pada pemborosan resource dan CPU yang dialokasikan untuk switching threads.
 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.

Keuntungan
1        Tanggap: Multithreading mengizinkan program untuk berjalan terus walau pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.

2        Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.

3        Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.

4      Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu. User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan manajemen yang tidak didukung oleh kernel.
Keadaan thread yang dapat kita ketahui seperti:


  1. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat. 
  2. runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM dan memanggil run() method untuk membuat objek. 
  3. block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya: sleep() atau suspend(). 
  4. dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop() method dipanggil.


Thread pada OS seperti, Threads di dalam Solaris 2 sudah dilengkapi dengan library mengenai API-API untuk pembuatan dan managemen thread. Di dalam Solaris 2 terdapat juga level tengah thread. Di antara level pengguna dan level kernel thread terdapat proses ringan/ lightweight (LWP). Setiap proses yang ada setidaknya mengandung minimal satu buah LWP. Library thread memasangkan beberapa thread level pengguna ke ruang LWP-LWP untuk diproses, dan hanya satu user-level thread yang sedang terpasang ke suatu LWP yang bisa berjalan. Sisanya bisa diblok mau pun menunggu untuk LWP yang bisa dijalankan.


Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
  • Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
  • Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
  • Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.

Proses adalah suatu program yang sedang dieksekusi. Suatu proses meliputi:
·         Program counter
Tempat untuk menyimpan alamat suatu proses yang akan dieksekusi selanjutnya
·         Stack
tempat penyimpanan temporary data yang dibutuhkan selama program dieksekusi
·         Data section
mengandung variabel global dari suatu proses


Itu kan dibahas secara khusus, tapi kalo secara informal; proses adalah program dalam eksekusi. Suatu proses itu merupakan lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global.
Keadaan proses itu seperti di bawah ini:


·         New                      : Proses sedang dikerjakan/ dibuat.
·         Running              : Instruksi sedang dikerjakan.
·         Waiting               : Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/Oatau penerimaan sebuah tanda/ signal).
·         Ready                  : Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
·         Terminated      : Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.

Dari pernyataan dan pengertian antara thread dan proses maka kita bisa simpulkan bahwa perbedaan thread dengan prose situ adalah thread berbeda dengan proses karena thread memiliki address space yang sama yang artiya mereka berbagi variable global. karenanya masing2 thread dapat saling mengakses virtual address, membaca, menulis bahkan menghentikan thread lain. Sedangkan proses bisa dimiliki oleh user dan kemungkinan proses tersebut menunggu atau ditahan proses yang lain. proses selalu dimiliki oleh satu user sehingga mereka dapat saling bekerja sama tidak saling berbenturan.
Multithreading
Contoh  Multithreading
·         Web browser : memiliki satu thread untuk display image, dan thread yang lain untuk mengambil data dari network.
·         Web server : menerima request dari client untuk halaman web, image, sound, dll. Web server melayani client secara bersamaan (concurrent).

Single thread dan multi thread 
1. Single thread: process hanya mengeksekusi satu thread saja pada satu waktu.    
2. Multi thread: process dapat mengeksekusi sejumlah thread dalam sata waktu.




Keuntungan Multithreading
*      Responsif
o   Multithreading memungkinkan suatu program running walaupun sebagian program di-block atau menjalankan operasi yang lain.
*      Resource Sharing
o   Thread dalam suatu proses yang sama dapat men-share memori dan resource dengan thread yang lain. Mengijinkan sebuah aplikasi untuk memiliki beberapa thread yang berbeda dalam lokasi memori yang sama
*      Ekonomis
o   Alokasi memori dan resource untuk pembuatan proses memiliki cost yang mahal. Dalam hal context-switch, lebih ekonomis bila dilakukan dengan thread context-switch.
*      Utilisasi CPU
o   Meningkatkan kinerja pada arsitektur multiprocessor, dimana thread running secara paralel pada prosesor yang berbeda.

User Threads
  • Implementasi thread di level pengguna (dengan menggunakan pustaka/library thread).
  • Pustaka menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
  • Keuntungan : Dapat lebih cepat dibuat dan dikendalikan karena tanpa campur tangan kernel
  • Kelemahan : salah 1 thread pengguna menjalankan blocking system call maka mengakibatkan seluruh proses diblok

Kernel Threads
  • Didukung langsung oleh sistem operasi
  • Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space
  • Keuntungan :
    • jika thread menjalankan blocking system call kernel dpt menjalankan thread lain di aplikasi untuk melakukan eksekusi.
    • Pada lingkungan multiprosesor, kernel dapat menjadwal thread-thread pada prosesor yang berbeda
  • Kelemahan : lebih lambat daripada user kernel

Model MultiTrading:

One to one: Memetakan setiap user thread ke dalam 1 kernel threa.


Kelebihan: Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam multiprosesor .
Kekurangan: Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem.
Model ini ada pada Windows NT dan OS/2.

One to Many: memetakan beberapa tingkatan thread user hanya ke satu buah kernel thread.


Kelebihan: Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi lebih efisien.
Kekurangan: multi thread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.

Model ini ada pada Solaris Green dan GNU Portable.

Many to Many : Membolehkan setiap tingkatan user thread dipetakan ke banyak kernel thread.

Kelebihan: 
* Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Dan ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan:
* Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Model ini ada pada Solaris, IRIX, dan Digital UNIX.

Thread pada OS Windows dengan task manager:

1.      -Bagian Proses yang sedang berjalan.

2.      -Bagian Performa 

3.      -Bagian Histori pada aplikasi

4.      -Bagian pada Startus

5.      -Bagian Users

6.      -Bagian Details




7.      Bagian service



REFERENSI :
Pertemuan 4 - Threads









Tidak ada komentar:

Posting Komentar