Perbedaan program dan proses/task di sistem operasi


Kita mengenal program dalam dunia komputer. Program terdiri dari rangkaian instruksi yang dibuat untuk memenuhi satu fungsi tertentu. Program dapat dibuat dengan menggunakan berbagai bahasa pemrograman. Dari bahasa pemrograman tingkat tinggi, seperti C++ dan Java hingga bahasa pemrograman tingkat rendah, seperti bahasa Assembly* (saya menolak untuk menuliskannya bahasa rakitan dengan alasan yang sama saya tidak mau menyebutkan C++ sebagai “C tambah tambah”).

Dengan bahasa apapun itu, program pasti diubah ke dalam urutan simbol (string) 1 dan 0 agar dapat dijalankan oleh komputer.

Sistem operasi modern biasanya memiliki kemampuan untuk menjalankan lebih dari satu program dalam satu waktu (walaupun ini sebenarnya ilusi untuk komputer dengan satu prosesor). Kemampuan ini disebut multiprogramming.

Dalam sistem operasi, untuk mendapatkan kesan lebih dari satu program berjalan dalam satu waktu, program dieksekusi secara bergantian (interleave) dalam waktu yang relatif sangat cepat. Suatu program tidak harus selesai terlebih dahulu sebelum program lain menggantikannya untuk dijalankan oleh CPU. Meskipun program yang belum selesai ini berhenti, sistem operasi memastikan bahwa program ini akan mendapatkan gilirannya lagi nanti (dengan syarat tidak terdapat kesalahan dalam program ini).

Dengan pergantian yang seperti ini, sebuah program harus mengingat saat terakhir ia dijalankan. Hal ini disebabkan saat dijalankan, program bekerja dengan data, file, dan berada dalam posisi tertentu. Semua ini akan hilang jika program tidak menyimpannya. Agar program tidak harus kembali lagi dari awal ketika mendapatkan jatah CPU-nya kembali, semua “data kerja” program tadi disimpan di sebuah struktur data yang disebut dengan PCB (Process Control Block). Di Linux (saya benar-benar bermaksud Linux dan bukan GNU/Linux), PCB ini adalah sebuah struct yang bernama task_struct.

Nah, yang disebut dengan proses/task itu adalah program + PCB. Artinya bisa juga disebutkan secara sederhana bahwa program itu disimpan di hard disk, sementara proses itu disimpan di RAM (artinya sedang dijalankan).

[* masih banyak yang salah menyebutkan bahasa Assembly sebagai bahasa Assembler. Bahasa Assembly adalah bahasanya. Adapun Assembler adalah “compiler”-nya]

 

 


One response to “Perbedaan program dan proses/task di sistem operasi”

Leave a Reply