Apa itu thread
... ???
Mungkin ada
banyak orang yang bingung akan apa itu thread, dalam postingan saya kali ini,
saya akan membahas tentang apa itu thread, tentunya berdasarkan ilmu yang saya
dapat saya akan sharing kepada pembaca semuanya.
Oke langsung saja
... thread merupakan sebuah proses, lalu apa bedanya dengan proses biasa ???
Thread merupakan
sebuah alur kontrol dari suatu proses, bisa diibaratkan thread adalah anak /
pendukung sebuah proses berjalan. Thread sendiri ada 2 macam, diantranya ada
single thread dan multi thread, bedanya terletak pada proses yang dapat
dijalankan pada sekali putaran jalan thread. Jika single thread berarti ada
sekali event yang dijalankan pada thread tersebut, sedangkan multi thread
kebalikannya, akan ada beberapa event yang terjadi dalam satu thread. Contoh single thread adalah OS MS-DOS, sedangkan cotoh multi thread adalah OS Windows, Linux, Mac OS. Proses
jalannya sebuah thread ini (terlebih untuk multi thread) berjalan bebarengan
sejajar antara thread satu dn thread yang lainnya, jadi membuat proses jadi
lebih efisien dan cepat.
=> Thread :
1. Merupakan alur kontrol dari suatu
proses.
2. Merupakan unit dasar dari penggunaan
CPU dan sering disebut dengan lightweight process.
3. Ruang alamat atau IP address digunakan
secara bersama-sama dari proses yang menciptakannya.
4. Memiliki akses langsung ke segmen data
dari prosesnya.
5. Dapat saling berkomunikasi dengan
thread lain dalam satu proses.
6. Hampir tidak memiliki overhead.
7. Perubahan pada thread utama seperti
pembatalan atau perubahan prioritas dapat mempengaruhi tingkah laku thread lain
dalam satu proses.
8. Pembentukan thread membutuhkan waktu
yang lebih sedikit.
9. Waktu yang dibutuhkan untuk mengakhiri
thread lebih sedikit.
10. Lebih mudah dan cepat melakukan swicth
antar thread daripada switch antar proses.
=> sedangkan proses :
1. Merupakan program yang sedang di
eksekusi.
2. Proses mencakup program counter, yaitu
sebuah stack untuk menyimpan alamat dari instruksi yang selanjutnya akan di
eksekusi dan di registrasi.
3. Memiliki ruang alamat atau IP address
masing-masing.
4. Dari satu proses dengan proses lainnya
harus menggunakan komunikasi. Seperti metode-metode IPC.
5. Memiliki overhead.
6. Hanya dapat mengendalikan proses
turunannya.
7. Perubahan pada parent proses tidak mempengaruhi
proses turunannya.
8. Pembentukan proses membutuhkan waktu
yang lebih lama.
9. Waktu yang dibutuhkan untuk mengakhiri
proses lebih lama.
Dari perbandingannya diatas,
dapat dilihat bahwa thread lebih unggul daripada proses biasa, bisa disimpulkan
bahwa thread itu lebih efektif dan efisien. Namun dibalik keunggulan thread tersebut
ada beberapa hal yang bisa merugikan user yaitu jika kita menunda satu proses
maka sama saja kita menunda satu kelompok thread yang berjalan pada proses
tersebut, dan jika kita menghentikan proses maka sama saja kita menghentikan
semua thread yang ada di proses tersebut, karena thread merupakan bagian dari
proses.
Jika ada multi thread maka juga ada pula multi proses / multi tasking, yaitu sebuah metode dimana banyak pekerjaan /
proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah
komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam
satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk
satu pekerjaan tersebut. Sedangkan Multi thread adalah suatu kemampuan yang
memungkinkan beberapa kumpulan instruksi atau proses dapat dijalankan secara
bersamaan dalam sebuah program. Satu kumpulan instruksi yang akan dieksekusi
secara independen dinamakan thread.
Ada beberapa level pada thread, diantaranya :
1. User-level
threading, yaitu sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread
dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching
proses dapat dilakukan dengan sangat cepat.
2. Kernel-level
threading, yaitu thread ini dibuat oleh pengguna yang berkorespondensi 1-1 dengan
entitas-entitas yang terjadwalkan yang berada di kernel. Ini merupakan
implementasi (penerapaan) paling sederhana dari threading.
Selain itu thread juga mempunyai banyak tipe, diantaranya :
1. Model
Many-to-One, yaitu memetakan beberapa thread tingkatan pengguna ke sebuah
thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna
sehingga menjadi efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel
pada satu saat. Jadi
Multiple thread tidak dapat berjalan secara paralel pada multiprosesor.
2. Model One-to-One, yaitu memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.
3. Model Many-to-Many, yaitu banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.
2. Model One-to-One, yaitu memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.
3. Model Many-to-Many, yaitu banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.
Sekian pembahasan saya mengenai apa itu thread. Semoga dengan informasi yang saya share ini bisa bermanfaat bagi teman-teman pembaca semuanya.
Baca juga versi thread (implementasi thread) di bahasan saya selanjutnya :
http://berandailmukita.blogspot.com/2014/11/konfigurasi-thread.html
http://berandailmukita.blogspot.com/2014/11/konfigurasi-thread.html
No comments:
Post a Comment