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.
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
Stack berisi data sementara seperti parameter fungsi, alamat
pengembalian, dan variabel lokal.
· Bagian Data: Berisi variabel global.
· Heap Section
· 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
·
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.









