Sabtu, 24 Maret 2018

PENJELASAN PROSES DAN THREAD


Sebelum membahas mengenai proses sebaiknya kita membandingkan  terlebih dahulu perbedaan antara program dan proses karena sebagian orang masih menganggapnya sama.

Program vs Proses
Proses adalah program yang sedang dieksekusi. Sebagai contoh, ketika kita menulis sebuah program di C dan C ++ dan mengkompilasinya, compiler membuat kode biner. Kode asli dan kode Biner, keduanya adalah program. Ketika kita benar-benar menjalankan kode biner, itu menjadi sebuah proses.


Proses yang terjadi di memori :
Berikut  merupakan penjelasan proses yang terjadi di memori seperti pada diagram diatas :
·         Text
Proses A juga kadang-kadang dikenal sebagai Bagian Teks. Ini juga termasuk aktivitas saat ini yang diwakili oleh nilai penghitung program
·         Stack
Stack berisi data sementara seperti parameter fungsi, alamat pengembalian, dan variabel lokal.
·         Bagian Data: Berisi variabel global.
·         Heap Section
Merupakan memori yang dialokasikan secara dinamis untuk diproses selama waktu berjalan.

Atribut atau karakteristik dari proses
Sebuah proses akan mengikuti atribut :
1. ID Proses                          
Merupakan pengenal unik yang ditetapkan oleh sistem operasi
2. Status Proses                    
 Saat proses akan mulai bersiap  untuk diekseskusi, setelah membuat proses tersebut.
3. Register CPU                     
Seperti Penghitung Program (register CPU harus disimpan   dan dipulihkan ketika proses berganti dan di CPU).
5. Informasi akun
6. Informasi status I / O      
Misalnya perangkat yang dialokasikan untuk diproses, buka file, dll
7. Informasi penjadwalan CPU
 Misalnya Prioritas (Proses yang berbeda mungkin memiliki prioritas yang berbeda, misalnya proses singkat dapat diberi prioritas rendah dalam penjadwalan pertama pekerjaan terpendek)
States Process
1. New                           : Proses yang Baru Dibuat (atau) sedang dibuat.
2. Ready                        : Setelah proses penciptaan pindah ke status Siap, yaitu, proses siap untuk dieksekusi.
3. Run                            : Saat ini menjalankan proses dalam CPU (hanya satu proses di dalam satu waktu dapat eksekusi dalam satu prosesor).
4. Wait (or block)       : Saat permintaan proses untuk permintaan I / O.
5. Completed                : Proses Menyelesaikan eksekusinya.
6. Suspended Ready  : Ketika antrian siap menjadi penuh, beberapa proses dipindahkan untuk menangguhkan status siap
7. Suspended Block   : Saat antrian menunggu menjadi penuh.
Setelah memahami perbedaan antara proses dan program serta karakteristik dari proses sekarang akan dibahas antara proses dan thread

PENGERTIAN PROSES
     Sebuah proses, secara umum, adalah serangkaian terus menerus dari tindakan untuk mencapai hasil yang spesifik. Namun, dalam dunia komputer, proses adalah sebuah contoh dari mengeksekusi program komputer. Dengan kata lain, itu adalah konsep dari kejadian tunggal dari program komputer yang berjalan. Proses yang berjalan secara binar akan mengandung satu atau lebih thread.
Menurut jumlah thread yang terlibat dalam proses, ada dua jenis proses, yaitu proses single-thread dan proses multi-thread. Seperti namanya, proses tunggal-thread adalah proses yang hanya memiliki satu thread. Oleh karena itu, thread ini adalah sebuah proses, dan hanya ada satu aktivitas yang terjadi. Dalam proses multi-thread, ada lebih dari satu thread, dan ada lebih dari satu aktivitas yang terjadi
Dua atau lebih proses dapat berkomunikasi dalam setiap menggunakan komunikasi antar-proses lain. Tapi itu cukup sulit dan membutuhkan lebih banyak sumber daya. Ketika membuat proses baru programmer harus melakukan dua hal. Mereka adalah duplikasi proses induk dan alokasi memori dan sumber daya untuk proses baru. Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mencakup program counter, register, dan variabel di dalamnya [MDGR2006]. 
Proses yang dieksekusi mempunyai lima status yang terdiri dari:
a. new             : Pembentukan suatu proses
b. running      : Instruksi-instruksi yang sedang dieksekusi
c. waiting        : Proses menunggu untuk beberapa event yang terjadi
d. ready          : Proses menunggu untuk dialirkan ke pemroses (processor)
e. terminated : Proses telah selesai dieksekusi.

Process Control Block (PCB)
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
·          Status proses                       
Status yang mungkin adalah new, ready, running, waiting, halted, dan seterusnya.
·          Program counter    
Suatu penghitung yang mengindikasikan alamat dari instruksi selanjutnya yang akan dieksekusi untuk proses tersebut.
·          CPU register
 Register bervariasi dalam jumlah dan tipenya, tergantung pada arsitektur komputer. Register tersebut termasuk accumulator, index register, stack pointer, general–purposes register, ditambah informasi condition–code. Bersama dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar.
·          Informasi manajemen memori
 Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
·          Informasi pencatatan
 Informasi ini termasuk jumlah dari CPU dan waktu nyata yang digunakan, batas waktu, jumlah account, jumlah job atau proses, dan banyak lagi.
·          Informasi status I/O
 Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang
 lain.
PENGERTIAN THREAD
                  Dalam dunia IT, thread adalah pelaksanaan instruksi terkecil dari program komputer yang dapat dikelola secara independen sesuai dengan jadwal. Sebuah thread adalah jalan eksekusi sederhana dalam proses. Sebuah thread adalah sebagai proses kuat karena thread bisa melakukan proses apa saja yang bisa dilakukan. Sebuah thread adalah proses ringan dan membutuhkan sumber daya yang lebih sedikit. Thread dapat mulai dari membaca dan menulis ke variabel yang sama dan struktur data variabel. Thread dapat berkomunikasi antara thread dengan mudah.
Saat ini multi-threading telah menjadi pendekatan alami untuk banyak masalah.Sebuah pekerjaan besar dibagi menjadi beberapa bagian dan masing-masing ditugaskan untuk unit eksekusi yang disebut thread. Hal ini memerlukan kehati-hatian pemrograman karena thread berbagi struktur data yang dimodifikasi oleh thread lain pada satu waktu dan juga karena thread berbagi ruang alamat yang sama. Satu keuntungan lebih dari thread adalah bahwa thread menyediakan cara yang efisien dan efektif untuk mencapai paralelisme. 
BEBERAPA KEUNTUNGAN THREAD :
·          Responsif. Aplikasi interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar.
·         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.

PERBEDAAN THREAD DAN PROCESS
·         Pembentukan Thread membutuhkan waktu yang lebih sedikit daripada pembentukan process.
·         Membutuhkan waktu yang lebih sedikit untuk menhakhiri Thread daripada process.
·         Lebih mudah dan cepat untuk melakukan switch antar Thread daripada switch antar process.
·         Thread menggunakan secara bersama ruang alamat dari proses yang menciptakannya. Proses memiliki ruang alamat sendiri-sendiri.
·         Thread memiliki akses langsung ke segmen data dari prosesnya. Masing-masing proses memiliki salinan segmen data dari parent process-nya.
·         Thread dapat saling komunikasi dengan thread lain dalam satu process. Antar proses harus menggunakan komunikasi antar proses.
·         Thread hampir tidak memiliki overhead. Proses memiliki overhead.
·         Thread dapat memiliki pengaruh kontrol yang besar terhadap thread lain dalam satu proses. Proses hanya dapat mengendalikan proses anakannya.
·         Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat mempengaruhi tingkah laku thread lain dalam satu proses. Perubahan pada parent proses tidak mempengaruhi proses anakan.

KESIMPULAN :
Proses dan thread dua teknik yang digunakan oleh programmer untuk mengontrol prosesor dan pelaksanaan instruksi pada komputer dengan cara yang efisien dan efektif. Sebuah proses dapat berisi beberapa thread. Thread menyediakan cara yang efisien untuk berbagi memori meskipun beroperasi beberapa eksekusi dari proses. Oleh karena itu, thread merupakan alternatif untuk beberapa proses. Dengan tren yang berkembang menuju prosesor multi-core, thread akan menjadi alat yang paling penting dalam dunia programmer.




0 komentar:

Posting Komentar