Pada masa awal perkembangan komputer, kode instruksi program dibaca dari suatu kartu plong, kemudian disalin ke memori utama dan akhirnya dieksekusi langsung oleh prosesor. Dewasa ini kode-kode instruksi program disimpan sebagai berkas pada media penyimpanan sekunder seperti magnetic disk, floppy disk, CDROM ataupun DVDROM.

Kode-kode instruksi program tidak dapat dieksekusi langsung dari media penyimpanan. Ketia suatu program akan dieksekusi maka kode-kode instruksinya akan dibaca dari berkas dan disalinkan ke ruang memori utama. Selain untuk menyimpan kode-kode instruksi program, ruang memori yang dialokasikan diperlukan untum mencatat berbagai informasi yang terkait dengan eksekusi program seperti status eksekusinya, alamat kode instruksi yang sedang dieksekusi serta sumber daya komputer yang sedang digunakan seperti data, berkas, dan peranti I/O. Intinya, eksekusi suatu program bukan sekedar eksekusi kode-kode instruksi program tapi melibatkan pengelolaan informasi eksekusinya juga.

Multitasking Dan Konkurensi

Awalnya , proses-proses dijalankan secara sekuensial atau berurut. Suatu proses akan dieksekusi sampai selesai baru kemudian berpindah-pindah ke proses berikutnya. Sistem sekuensial demikian memiliki kelemahan, yaitu tingkat penggunaan atau utilitas prosesor yang rendah. Ini dikarenakan ketika suatu proses sedang melakukan operasi I/O, prosesor harus menunggu sampai operasi I/O tersebut selesai dan prosesor tidak dapat dialokasikan ke proses berikutnya karena proses yang sedang berjalan belum selesai.

Masalah utilitas prosesor yang rendah ini mendorong lahirnya konsep mutitasking atau multiprogramming pada sistem operasi. Sistem multitasking, yang merupakan subset dari sistem konkuren, berkebalikan dengan sistem sekuensial seperti pada gambar. Sistem konkuren sendiri dapat didefinisikan sebagai sistem yang memiliki sejumlah aktivitas yang sedang berjalan secara “bersamaan”

Kata “bersamaan” disini dapat memiliki sejumlah pengertian yang berbeda. Sebagai contoh, ambil kasus pada sekelompok tukang yang sedang mengerjakan suatu rumah. Ada tukang yang mengerjakan keramik, ada yang mengerjakan pintu, dan lainnya mengerjakan bagian atap. Intinya masing-masing mengerjakan aktivitas yang berbeda tapi bersamaan. Ini merupakan pengertian “bersamaan” yang pertama. Pada sistem komputer, sistem yang seperti demikian disebut dengan sistem paralel atau multiprocessing. Sebagai contoh adalah sistem komputer yang memiliki dua atau lebih prosesor ataupun juga satu prosesor yang multicore. Sistem paralel dikelompokkan sebaga subset dari sistem multitasking.

Istilah “bersamaan” dalam sistem konkuren dapat juga memiliki pengertian yang sedikit berbeda dengan penjelasan sebelumnya. Sebagai contoh, ambi kasus seorang tukang yang mendapat dua order pengerjaan rumah, misalkan rumah A dan rumab B. Karena masing-masing pemilik rumah menghendaki pengerjaan rumahnya dapat selesai secepatnya maka tukang tersebut harus menjadwal pengerjaan rumah A pada saat pagi dan siang hari, setelah itu dilanjutkan dengan mengerjakan rumah B pada saat sore dan malam. Jadi setiap hari tukang tersebut dikatan mengerjakan rumah A dan ruman B. Setelah setahun, kedua rumah tersebut selesai. Sang tukang dikatakan telah mengerjakan kedua rumah tersebut secara bersamaan.

Perhatikan, sekalipun dikatakan secara bersamaan, tetapi sesungguhnya yang terjadi adalah tukang tersebut membagi atau menjadwal waktunya secara bergantian mengerjakan sebagian kecil dalam mengerjakan rumah A dan rumah B. Pada sistem komputer, sistem yang demikian disebut dengan sistem multitasking, tetapi tidak dapat dikatakan sebagai sistem paralel, karena pemroses hanya berjumlah satu.

Dari penjelasan diatas, terlihat bahwa untuk membangun sistem yang multitasking, tidak harus senantiasa menggunakan komputer yang memiliki lebih dari satu prosesor. Kunci implementasi sistem multitasking terletak pada sistem operasi yang dapat melakukan penjadwalan penggunaan prosesor untuk sejumlah aktivitas sehingga konkurensi dapat tercapai. Hubungan antar sistem sekuensial, sistem konkuren, sistem multitasking dan sistem paralel dapat dilihat pada gambar dibawah. Sistem sekuensial dan sistem konkuren merupakan dua sistem yang terpisah satu sama lain. Sistem paralel merupakan subset dari sistem multitasking, yang artinya setiap sistem paralel pastilah sistem multitasking juga. Namun tidak semua sistem multitasking merupakan sistem paralel. Sistem multitasking sendiri merupakan subset dari sistem konkuren.

Hubungan Antar Sistem Konkuren Sistem Multitasking dan Sistem Paralel
Hubungan Antar Sistem Konkuren Sistem Multitasking dan Sistem Paralel

Konkurensi dan khususnya multitasking, dapat dicapai pada sistem uniprosesor (berprosesor tunggal) dengan menjadwal eksekusi proses-proses secara bergantian (interleaving) seperti gambar dibawah terlihat proses 1 , proses 2, dan proses 3 secara bergantian dieksekusi oleh prosesor. Pergantian antar proses berlangsung dengan cepat sekali, dalam order milidetik, sehingga pengguna komputer tidak akan menyadari terjadinya pergantian tersebut. Bagi pengguna semua proses tampak berjalan bersama.

Implementasi Konkurensi (multitasking) Pada Sistem Uniprosesor (a) dan Multiprosesor (b)
Implementasi Konkurensi (multitasking) Pada Sistem Uniprosesor (a) dan Multiprosesor (b)

Pada sistem multiprosesor, konkurensi diimplementasikan dengan menjalankan proses-proses secara bersamaan pada prosesor yang berbeda (overlapping) dan juga menjadwal proses-proses secara bergantian pada prosesor tertentu (interleaving) seperti gambar bagian b. Pada gambar tersebut diasumsikan terdapat dua prosesor. Terlihat pada saat proses 2 mulai melakukan eksekusi 1 juga masih terus melakukan eksekusi. Hal ini bisa terjadi karena eksekusi proses 1 dan proses 2 tersebut dilakukan pada prosesor yang berbeda (overlapping).