BAB 3. PROSES
Proses
3.1 Konsep Proses
      Jika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah  pertanyaan yaitu mengenai istilah apa yang tepat untuk menyebut semua  kegiatan yang dilakukan oleh CPU. Sistem batch mengeksekusi jobs  sebagaimana suatu sistem time-share menggunakan program pengguna (user  programs) atau tasks. Bahkan pada sistem dengan pengguna tunggal pun,  seperti padaMicrosoftWindows dan Macintosh OS, seorang pengguna mampu  menjalankan beberapa program pada saat yang sama, contohnya Word  Processor, Web Browser, dan paket e-mail. Bahkan jika pengguna hanya  dapat menjalankan satu program pada satu waktu, sistem operasi perlu  untuk mendukung aktivitas program internalnya sendiri, seperti managemen  memori.
Dalam banyak hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses.
Istilah  job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini.  Walau kami sendiri lebih menyukai istilah proses, banyak teori dan  terminologi sistem operasi dikembangkan selama suatu waktu ketika  aktivitas utama sistem operasi adalah job processing. Akan membingungkan  jika kita menghindari penggunaan istilah yang telah diterima oleh  masyarakat yang memasukkan kata job hanya karena proses memiliki istilah  job sebagai pengganti atau pendahulunya.
3.1.1 Definisi Proses
      Secara tidak langsung, proses merupakan program yang sedang dieksekusi.  Menurut Silberschatz, suatu proses adalah lebih dari sebuah kode  program, yang terkadang disebut text section. Proses jugamencakup  program counter, yaitu sebuah stack untuk menyimpan alamat dari  instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses  pada umumnya juga memiliki sebuah stack yang berisikan data-data yang  dibutuhkan selama proses dieksekusi seperti parameter metoda, alamat  return dan variabel lokal, dan
sebuah data section yang menyimpan  variabel global. Sama halnya dengan Silberschatz, Tanenbaum juga  berpendapat bahwa proses adalah sebuah program yang dieksekusi  yangmencakup program counter, register, dan variabel di dalamnya. Kami  tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu
program  adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan  didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif,  dengan sebuah program counter yang menyimpan alamat instruksi selanjut  yang akan dieksekusi dan seperangkat sumber daya (resource) yang  dibutuhkan agar sebuah proses dapat dieksekusi. Untuk mempermudah kita  membedakan program dengan proses, kita akan menggunakan analogi yang  diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin  membuat kue ulang tahun untuk anaknya. Tukang kue tersebut memiliki  resep kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue  ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk  vanila dan bahan-bahan lainnya. Dalam analogi ini, resep kue ulang tahun  adalah sebuah program, si tukang kue tersebut adala prosesor (CPU), dan  bahan-bahan untuk membuat kue tersebut adalah data input. Sedangkan  proses-nya adalah kegiatan sang tukang kue untuk membaca resep, mengolah  bahan, dan memanggang kue tersebut.
Walau dua proses dapat  dihubungkan dengan program yang sama, program tersebut dianggap dua  urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat  menjalankan salinan yang berbeda pada mail program, atau pengguna yang  sama dapat meminta banyak salinan dari program editor. Tiap-tiap proses  ini adakah proses yang berbeda dan walau bagian text-section adalah  sama, data section-nya bervariasi. Adalah umum untuk memiliki proses  yang menghasilkan banyak proses begitu ia bekerja.
3.1.2 Status Proses
      Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status  dari sebuah proses mencerminkan aktivitas atau keadaan dari proses itu  sendiri. Berikut ini adalah status-status yangmungkin dimiliki sebuah  proses menurut Tanenbaum:
-  Running: pada saat menggunakan CPU pada suatu waktu.
-  Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi.
-  Blocked: tidak dijalankan sampai event dari luar, yang berhubungan  dengan proses tersebut terjadi.  Sedangkan menurut Silberschatz,  terdapat lima macam jenis status yang mungkin dimiliki oleh suatu  proses:
-  New: status yang dimiliki pada saat proses baru saja dibuat.
-  Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi.
-  Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O).
-  Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
-  Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.
     Nama-nama tersebut adalah berdasar opini, istilah tersebut  bervariasi di sepanjang sistem operasi. Keadaan yang mereka gambarkan  ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentu lebih  baik menggambarkan keadaan/status proses. Penting untuk diketahui bahwa  hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu  waktu. Namun, banyak proses yang dapat berstatus ready atau waiting.  Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada  gambar  3.1 Ada tiga kemungkinan bila sebuah proses memiliki status  running:
Gambar~3.1: Status proses
-  Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
-  Jika waktu yang disediakan oleh OS untuk proses tersebut sudah  habis maka akan terjadi interrupt dan proses tersebut kini berstatus  Ready.
-  Jika suatu event terjadi pada saat proses dieksekusi (seperti ada  request I/O) maka proses tersebut akan menunggu event tersebut selesai  dan proses berstatus Waiting.