Teknik Informatika | Pengertian, Contoh, Perbedaan, dan Penggunaan Proses

A. Pengertian Process

Process pada Sistem Operasi berisikan instruksi, program counter, data, register pemroses, alamat pengiriman, stack data dan variabel pendukung lainnya. Berikut ini beberapa pengertian tentang process, diantaranya adalah

  1. Process adalah sebuah konsep utama pada sistem operasi, sehingga masalah manajemen process adalah masalah utama pada perancangan sistem operasi.
  2. Process adalah program yang sedang dieksekusi.
  3. Process adalah unit kerja terkecil yang secara individu mempunyai sumber daya dan dijadwalkan oleh sistem operasi.

Untuk kegiatan process, sistem operasi berperan untuk mengelola segala process pada sistem dan mengalokasikan sumber daya ke process tersebut. Berbagai process berjalan secara bersamaan, dimana setiap process mendapatkan bagian-bagian memori dan kendali sendiri-sendiri (peran SO), sehingga setiap process (program) memiliki 2 prinsip di bawah ini :

  1. Independent, adalah program-program tersebut berdiri sendiri, tidak saling bergantung dan terpisah.
  2. One program at any instant, adalah hanya satu process yang dilayani oleh pemroses pada satu waktu.

Pada multiprogramming, teknik penanganan process adalah dengan menjalankan satu process dan secara cepat berpindah ke process lainnya (bergiliran), sehingga menumbulkan efek paralel semu (pseudoparallelism).

B. Status Process

Meskipun pada setiap process terdiri dari suatu kesatuan yang terpisah, tetapi adakalanya process-process tersebut butuh saling berinteraksi. Satu process dapat dibangkitkan dari output process lainnya sebagai input.

Saat process dieksekusi, akan terjadilah perubahan status. Status process diartikan sebagai bagian dari aktivitas process yang sedang berlangsung pada saat itu. Status-status process terdiri atas :

  1. New: process yang sedang dibuat
  2. Running: process yang sedang dijalankan
  3. Waiting: process sedang menunggu beberapa event (kejadian) yang akan terjadi (seperti penyelesaian input output atau penerimaan sebuah signal / tanda)
  4. Ready: process sedang menunggu untuk diprocess oleh prosesor
  5. Terminated: process telah selesai menjalankan tugasnya (selesai dieksekusi)

Di bawah ini adalah gambar dari perubahan status process:

Gambar 1 : Perubahan Status Process

C. Process Control Block (PCB)

Setiap process direpresentasikan / digambarkan oleh sistem operasi dengan menggunakan Process Control Block (PCB), seperti yang terlihat pada gambar di samping.
Informasi yang terdapat pada setiap process meliputi :

  1. Status Process : New, ready, running, waiting dan terminated.
  2. Program Counter : Mengindikasikan alamat (address) dari perintah selanjutnya untuk dijalankan untuk process ini.
  3. CPU Registers : Register beragam dalam jumlah dan jenisnya tergantung pada rancangan arsitektur komputer yang bersangkutan. Register tersebut terdiri dari accumulator, stack pointer, index register, general-purposes register, ditambah code information pada kondisi apa pun.
  4. Informasi Penjadwalan CPU : Informasi ini berisikan prisoritas dari sebuah process, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya.
  5. Informasi Manajemen Memori : Informasi ini berisikan nilai (basis) dan limit register, page table, atau segment table tergantung dari sistem memori yang digunakan oleh sistem operasi.
  6. Informasi Accounting : Informasi ini berisikan jumlah CPU dan real time yang digunakan, account numbers, time limits, jumlah job maupun process, dan lain sebagainya.
  7. Informasi Status Input Output : Informasi ini berisikan deretan input output device (seperti tape driver) yang dialokasikan untuk process tersebut, deretan file yang dibuka, dan lain sebagainya.

Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt. Pada gambar di bawah ini, ditunjukkan switching process dari satu process ke process selanjutnya.

Gambar 3 : Perpindahan CPU dari satu process ke process lainnya

D. Perbedaan Process dengan Thread

Sebelum menjelaskan mengenai perbedaan antara process dan thread kita harus memahami terlebih dahulu posisi keduanya saat program dieksekusi. Gambaran secara umumnya adalah sebagai berikut.

  1. Program awalnya berupa teks source code,
  2. Program tersebut kemudian di-compile atau di-interpret menjadi bentuk biner,
  3. Program tadi kemudian dijalankan dan dimuat di dalam memori (RAM).
  4. Program yang dijalankan tersebut kemudian menjadi satu atau lebih process.
  5. Process-process ini umumnya saling independen,
  6. Thread berperan sebagai subset/bagian dari process.
  7. Thread lebih mudah berkomunikasi satu sama lain dibanding process
  8.  Thread lebih rentan mengalami masalah yang disebabkan oleh thread lain dalam process yang sama.

Keuntungan dan kerugian process dan thread adalah sebagai berikut :

Proses

  1. Process berisi operasi yang berat
  2. Masing-masing process memiliki ruang memori sendiri. Komunikasi antar process lambat karena masing-masing process memiliki alamat memori yang berbeda 
  3. Context Switch antar-process lebih mahal (membutuhkan sumber daya lebih banyak) 
  4. Process tidak berbagi memori dengan process lain 

Thread

  1. Thread berisi operasi yang lebih ringan
  2. Thread menggunakan memori dari processnya
  3. Komunikasi antar-thread bisa lebih cepat dari komunikasi antar-process karena masing-masing thread dalam process yang sama memiliki memory yang sama dengan processnya.
  4. Context Switch antar-thread dalam satu process relatif lebih murah (tidak membutuhkan sumber daya yang banyak)
  5. Thread berbagi memory dengan thread lain dalam satu process

E. Pemilihan Penggunaan Process atau Thread

Ketika membuat program yang mengeksekusi beberapa tugas dalam satu waktu, seorang programmer dihadapkan pada pilihan apakah berbasis thread saja atau perlu berbasis process yang berbeda. Perbedaan antara keduanya sudah dijelaskan pada bab sebelumnya.

Untuk memahaminya dapat kita ambil contoh dari program yang sering kita pakai, Google Chrome misalnya.
Saat Google mendesain peramban Chrome, mereka harus menentukan bagaimana cara untuk menangani banyak tugas berbeda yang membutuhkan interaksi dengan komputer, komunikasi, dan sumber daya dari jaringan pada satu waktu.

Masing-masing tab atau jendela pada peramban berkomunikasi dengan beberapa server di internet untuk mengambil data berupa teks, program, gambar, suara, video, dan data lainnya kemudian data tersebut di-render untuk kemudian ditampilkan dan dapat diakses oleh user secara interaktif. Sebagai tambahan, peramban dapat membuka banyak jendela, masing-masing memiliki tugas yang jumlahnya banyak.

Google perlu menentukan bagaimana menangani pemisahan masing-masing tugas. Mereka kemudian memilih untuk menjadikan masing-masing jendela di Chrome sebagai process yang berbeda, berbeda dengan kebanyakan peramban lain yang memilih untuk menggunakan thread yang berbeda saja.

Hal ini membuat Google memperoleh banyak keuntungan. Menjalankan masing-masing jendela sebagai process yang berbeda melindungi keseluruhan aplikasi dari bug dan glitch pada mesin render sekaligus membatasi akses antar mesin render dan antara mesin render bagian sistem yang lain.

Mengisolasi sebuah program JavaScript dalam satu process mencegah program tersebut untuk berjalan dengan terlalu banyak CPU time dan memori serta mencegah keseluruhan peramban menjadi tidak merespon.

Untuk Menjalankan satu process pada masing-masing jendela memang dibutuhan memori dan sumber daya yang lebih banyak dibanding dengan konsep multi-threading saja. Akan tetapi, Google telah memperkirakan bahwa pendekatan mereka akan berhasil mengurangi beban memori secara keseluruhan, meski pada awalnya kebutuhan memori dan sumber dayanya besar.

Penggunaan process-process yang berbeda dibanding dengan multi-thread memiliki keuntungan ketika memori/RAM mulai penuh. Jendela yang tidak aktif akan secara otomatis diturunkan priority-nya oleh sistem operasi dan dapat disimpan sementara dalam disk ketika RAM dibutuhkan oleh process yang lain.

Hal ini menjadikan jendela yang dibuka oleh pengguna menjadi lebih responsif. Jika masing-masing jendela dibuat berbasis thread, pemisahan seperti ini akan lebih sulit.

Berikut ini adalah gambar process Chrome yang dapat dilihat di Task Manager pada windows, masing-masing process juga memiliki beberapa thread yang berjalan.

F. Daftar Pustaka

https://www.blackblaze.com/blog/whats-the-diff-programs-processes-and-threads/
https://www.stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread/

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *