Proses
Konsep Proses dalam system operasi Semua komputer modern dapat melakukan berbagai macam pekerjaan pada saat yang bersamaan. Selama user menjalankan program, komputer juga dapat melakukan pekerjaan lain seperti membaca data dari disk, atau mencetak ke printer. Pada sistem multiprograming, komputer biasanya menjalankan program secara bergantian dalam jumlah puluhan atau ratusan setiap detiknya. Padahal komputer hanya menjalankan satu program pada satu waktu tertentu. Itulah sebabnya kenapa dalam waktu satu detik komputer menjalankan banyak program. Kondisi inilah yang dinamakan parallelism atau pseudoparallelism. Kondisi ini sangat sulit sehingga selama puluhan tahun para perancang sistem operasi berusaha mengembangkan suatu model sehingga paralellism dapat ditangani dengan mudah.
Proses Pada model ini semua program yang berjalan pada komputer termasuk didalamnya sistem operasi diorganisasikan sebagai sejumlah proses yang berjalan secara sequential (berurutan). Tanenbaum berpendapat bahwa proses adalah sebuah program yang dieksekusi yang termasuk didalamnya program counter, register, dan variabel. Perbedaan antara proses dan program Misalkan ada pembuat kue yang ingin membuat kue ulang tahun. Orang tersebut melibatkan resep, dapur dan sejumlah input seperti telur, gula, tepung, vanilli dan lain sebagainya. Resep itu di analogikan sebagai program karena dia merupakan kumpulan step yang harus dilalui (Algoritma) Orang yang membuat kue dianalogikan sebagai CPU yang melakukan pengolahan Proses itu adalah aktivitas yang dilakukan seperti membaca resep, memadukan setiap bahan, memanggang kue Sekarang bayangkan pada saat yang bersamaan anak si pembuat kue datang menangis sambil mengatakan habis disengat lebah. Pembuat kue langsung menandai sampai tahap mana step dilakukan (state proses disimpan) kemudian melakukan pekerjaan yang lebih penting yaitu melakukan pertolongan. Setelah semuanya bisa ditangani maka dia kembali membuat kue dan memulai dari step terakhir yang ditinggalkan.
Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu. Gambar menunjukkan diagram status proses. Status proses terdiri dari : a. New: proses sedang dibuat. b. Running: proses sedang dieksekusi. c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal). d. Ready: proses menunggu jatah waktu dari CPU untuk diproses. e. Terminated: proses telah selesai dieksekusi.
Process Control Block (PCB) Masing-masing proses direpresentasikan oleh Sistem Operasi dengan menggunakan Process Control Block (PCB) Informasi yang terdapat pada setiap proses meliputi : a. Status Proses. New, ready, running, waiting dan terminated. b. Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebut. c. CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang bersangkutan. Register- Register tersebut terdiri-atas: accumulator, index register, stack pointer, dan register serbaguna dan beberapa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt. d. Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya. e. Informasi Manajemen Memori. Informasi tersebut berisi nilai (basis) dan limit register, page table, atau segment table tergantung pada sistem memory yang digunakan oleh SO. f. Informasi Accounting. Informasi tersebut berisi jumlah CPU dan real time yang digunakan, time limits, account numbers, jumlah job atau proses, dll. g. Informasi Status I/O. Informasi tersebut berisi deretan I/O device (seperti tape driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll.
Antrian Penjadwalan Penjadwalan direpresentasikan dalam bentuk antrian yang disimpan sebagai linkedlist dan berisi pointer awal dan akhir PCB. Tiap-tiap PCB memiliki suatu pointer field yang menunjuk ke proses berikutnya. Jenis-jenis antrian penjadwalan adalah sebagai berikut : • Job Queue. Semua proses yang masuk pada suatu sistem akan diletakkan ke dalam job queue. • Ready Queue. Sedangkan proses-proses yang ada di memori utama dan menunggu untuk dieksekusi diletakkan pada suatu list yang disebut dengan ready queue. • Device Queue. Deretan proses yang sedang menunggu peralatan I/O tertentu disebut dengan device queue.Setiap proses dapat berpindah dari satu antrian ke antrian lain.
Terdapat dua bentuk penjadwal, yaitu: a. Longterm-Scheduler (job scheduler), menyeleksi proses-proses mana yang harus dibawa ke ready queue. b. Short-term Scheduler (CPU scheduler), memilih proses-proses yang siap untuk dieksekusi, dan mengakolakasikan CPU ke salah satu dari proses-proses tersebut. Deadlock Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber dayayang dipegang oleh proses tersebut. Dengan kata lain setiap proses dalam set menunggu untuksumber yang hanya dapat dikerjakan oleh proses lain dalam set yang sedang menunggu.
Deadlock
Mengapa terjadi Menurut Coffman (1971) ada empat kondisi yang dapat mengakibatkan terjadinya Deadlock, yaitu: Mutual Eksklusif: hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut. Memegang dan menunggu: proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama Tidak ada Preemption: sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan Circular Wait: kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya
Cara Penanggulangan Mengabaikan Deadlock Mendeteksi dan memperbaiki Menghindari dengan protocol sehingga sistem tidak masuk ke area deadlock Memastikan bahwa hanya salah satu kondisi yang penting tidak dapat menunggu