Perbedaan Process dengan Thread

Post image

Apa itu process dan apa itu thread?

Saya awalnya bingung untuk membedakan kedua hal ini. Setelah membaca berbagai macam artikel, ini adalah tulisan yang saya hasilkan dari pembelajaran saya.

Mengenal Program dan Process

Sekarang kita berkenalan dengan program. Apa itu program?

Program adalah sekumpulan instruksi komputer, disimpan dalam storage pada komputer dan sifatnya pasif. Instruksi yang mudah dibaca manusia kita sebut dengan source code. Source code tersebut, butuh diterjemahkan ke instruksi mesin menggunakan compiler, yang menghasilkan executable file.

Sekarang, anda adalah programmer. Ketika anda membuat kode yang berisi instruksi demi instruksi, kemudian di compile ke sebuah binary, itu adalah program.

Kemudian, apa itu process?

Ketika program tersebut di eksekusi dan dimuat ke dalam memori di OS, itu disebut dengan process. Process memuat beberapa informasi yang disimpan di dalam komputer yang kita sebut Process Control Block (PCB).

Umumnya PCB menyimpan id process, nomor process, status process, penghitung program, register dan file yang sedang dibuka. PCB ini disimpan di area memori yang dilindungi sehingga user tidak dapat melihat hal ini.

Process dan Thread


Membuat Beberapa Process

Program bisa saja memiliki beberapa process sekaligus yang berjalan (child process). Process dapat membuat sebuah child process menggunakan sistem call (syscall) yang disebut dengan fork.

Fork digunakan untuk membuat process lain, tidak menggunakan argumen apapun dan memiliki return process id. Fork membuat child process berjalan brsamaan dengan main process (process yang membuat panggilan fork).

Process dan Thread

Contoh mudah dari process adalah google chrome. Apabila kita membuka tab baru, maka tab tersebut merupakan process lain dari main process.

Process dan Thread

Sebuah process dapat memiliki beberapa thread sekaligus untuk mengeksekusi tugas-tugas yang berbeda.

Apa itu Thread?

Thread adalah bagian dari process yang mengeksekusi beberapa tugas dari process. Sebuah process dapat memiliki banyak thread yang dapat berjalan bersamaan. Setiap thread memiliki thread stack-nya sendiri dan dapat berkomunikasi dengan thread lain dalam sebuah process. Thread lebih ringan dan cepat daripada process.

Contohnya apabila kita memiliki aplikasi, maka aplikasi tersebut memiliki main thread yang dapat membuat lebih banyak thread untuk melakukan tugas yang berbeda.

Process dan Thread

Komunikasi dan Sharing Data

Terdapat perbedaan cara komunikasi dan sharing data antara process dengan thread.

Process merupakan entity yang isolated dan tidak dapat berbagi data maupun informasi. Process menggunakan mekanisme Inter Process Communication (IPC) untuk komunikasi, secara signifikan hal ini juga akan meningkatkan jumlah panggilan syscall.

IPC merupakan suatu mekanisme pertukarang data antara satu process dengan process lain. Terdapat dua cara yang dilakukan IPC seperti shared memory dan message passing. Detail dari hal-hal tersebut saya bahas di sini Mengenal Inter-Process Communitation.

Sedangkan thread, apabila merupakan thread dari suatu process yang sama, maka dia bisa berkomunikasi melalui data, kode, dan file. Hal ini lebih sedikit membutuhkan panggilan sistem (syscall) atau bahkan tidak perlu.

Process dan Thread


Perbedaan Lain dari Process dan Thread

  1. Process merupakan program yang sedang dieksekusi sedangkan thread merupakan bagian dari sebuah process
  2. Process memakan lebih banyak waktu dalam pembuatan maupun prosess terminatenya daripada thread
  3. Process mengkonsumsi lebih banyak resource (memori, io, dll) dibanding thread
  4. Process tidak dapat berbagi memori (heap) sedangkan thread dapat berbagi memori dalam process yang sama atau process memiliki memorinya masing-masing sedangkan thread dapat sharing memori di process yang sama
  5. Thread menggunakan data, code dan file yang di sharing secara general sedangkan process menggunakan mekanisme IPC untuk melakukan komunikasi

Reference

comments powered by Disqus

You May Also Like