Manajemen proses adalah komponen utama dalam sistem operasi modern. Tugas utamanya mencakup mengelola siklus hidup proses, penjadwalan, komunikasi antar proses, dan alokasi sumber daya. Topik khusus seperti sinkronisasi dan deadlock akan dibahas lebih lanjut karena berkaitan erat dengan pengelolaan sumber daya antar proses.
A. PENGELOLAAN SIKLUS HIDUP PROSES
Proses merupakan konsep inti dalam sistem operasi. Sistem operasi bertanggung jawab atas pengelolaan siklus hidup proses-proses yang berjalan di atasnya. Pengelolaan siklus hidup proses meliputi penciptaan proses, penghentian proses, serta pengalihan eksekusi proses.
1. Penciptaan Proses
Penciptaan proses dalam sistem operasi melibatkan serangkaian langkah yang dilakukan oleh sistem operasi untuk membuat dan memulai eksekusi program baru. Proses ini melibatkan alokasi sumber daya, inisialisasi data, dan penentuan status proses.
2. Penghentian Proses
Penghentian proses dapat terjadi secara normal (karena aplikasi selesai) atau secara paksa (karena kesalahan). Saat penghentian normal, OS mengembalikan hasil ke proses induk, menghapus rekaman proses dari antrean dan memori, membebaskan sumber daya yang digunakan, lalu menjalankan penjadwalan untuk memilih proses berikutnya.
3. Pengalihan Eksekusi Proses
Pengalihan eksekusi memungkinkan beberapa proses berbagi satu CPU dengan berganti-ganti proses dan menghindari konflik.
B. PENJADWALAN PROSES
Selain mengelola siklus hidup proses, sistem operasi bertanggung jawab untuk melakukan penjadwalan proses.
1. Definisi dan Komponen Penjadwalan Proses
Penjadwalan proses dapat didefinisikan sebagai kumpulan kebijakan dan mekanisme sistem operasi yang mengatur urutan dan jangka waktu eksekusi proses-proses yang aktif. Penjadwalan bertugas memilih proses, menentukan kapan, serta berapa lama proses tersebut boleh menggunakan prosesor.
2. Kriteria Penjadwalan Proses
Dalam melakukan penjadwalan proses, sistem operasi mempertimbangkan sejumlah faktor untuk mengoptimalkan kinerja:
- Keadilan (Fairness): Proses-proses harus diperlakukan sama secara adil, tidak selalu berarti jatah waktu yang sama, namun memastikan tidak terjadi starvation (proses tidak terlayani dalam jangka waktu lama).
- Efisiensi (Processor Utilization): Penjadwalan menjaga agar prosesor terpakai secara terus-menerus selama masih ada proses aktif di ready queue. Proses yang menunggu I/O akan diblokir dan tidak memboroskan siklus prosesor.
- Waktu Tanggapan (Response Time): Diusahakan seminimal dan sependek mungkin. Pada sistem interaktif, ini adalah durasi antara input pengguna dan output sistem. Pada sistem real-time, ini adalah durasi antara terjadinya event dan tanggapan sistem.
- Waiting Time: Durasi waktu yang dihabiskan suatu proses dalam ready queue. Algoritma penjadwalan yang baik menghasilkan rata-rata waiting time yang kecil.
- Turnaround Time: Durasi waktu dari saat suatu proses mulai aktif dalam sistem sampai proses tersebut selesai. Ini adalah penjumlahan durasi eksekusi proses, durasi menunggu di ready queue, dan durasi proses terblokir (durasi terblokir umumnya tidak diperhitungkan dalam analisis). Rata-rata turnaround time yang kecil lebih dikehendaki.
- Throughput: Rata-rata proses yang dapat diselesaikan per satuan waktu. Algoritma penjadwalan yang baik memiliki nilai throughput yang tinggi, memastikan prosesor bekerja terus-menerus dan meminimalkan hal-hal yang tidak berkaitan langsung dengan penyelesaian tugas proses, seperti process switching yang terlalu sering.
3. Strategi Dasar Penjadwalan
Strategi penjadwalan proses secara umum dibedakan menjadi dua kelompok besar: non-preemptive dan preemptive.
- Non-preemptive (run-to-completion): Pada strategi ini, begitu proses telah berjalan, sistem operasi maupun proses lain tidak dapat mengambil alih eksekusi prosesor. Pengalihan hanya dapat terjadi jika proses yang running sudah selesai, baik secara normal maupun abnormal.
- Preemptive: Pada strategi preemptive, sistem operasi dan proses lain dapat mengambil alih eksekusi prosesor tanpa harus menunggu proses yang sedang running menyelesaikan tugasnya.
4. Algoritma Penjadwalan
Algoritma Penjadwalan Non-Preemptive
- FIFO (First In First Out) / FCFS (First Come First Serve): Algoritma ini non-preemptive dan tidak berprioritas. Setiap proses diberi jadwal eksekusi berdasarkan urutan waktu kedatangannya, dan begitu proses mendapatkan jatah eksekusi, ia akan dijalankan sampai selesai.
- SJF (Shortest Job First): SJF adalah penjadwalan non-preemptive tanpa prioritas yang mengasumsikan waktu eksekusi (burst time) proses diketahui. Proses dengan waktu burst time paling pendek akan dijadwalkan terlebih dahulu dan dieksekusi sampai selesai.
- HRRN (Highest Response Ratio Next): HRRN adalah penjadwalan non-preemptive yang menggunakan prioritas dinamis. Algoritma ini memperbaiki SJF dengan mempertimbangkan tidak hanya waktu layanan, tetapi juga jumlah waktu tunggu proses.
Algoritma Penjadwalan Preemptive
- RR (Round Robin): RR adalah penjadwalan preemptive tanpa prioritas.
- SRT (Shortest-Remaining Time): SRT adalah penjadwalan preemptive yang menggunakan prioritas dinamis, melengkapi SJF.
- PS (Priority Scheduling): PS adalah algoritma penjadwalan preemptive di mana setiap proses diberi nilai prioritas (statis atau dinamis).
- GS (Guaranteed Scheduling): GS adalah penjadwalan preemptive dengan prioritas dinamis yang bertujuan menjamin setiap N pemakai mendapatkan (1/N) waktu prosesor.
- MLQ (Multi Level Queues): MLQ adalah penjadwalan preemptive di mana proses-proses dibagi ke dalam kelompok dan ditempatkan pada antrean yang berbeda.
- MFQ (Multi Level Feedback Queues): MFQ adalah algoritma penjadwalan preemptive dengan prioritas dinamis berdasarkan jumlah quantum time.
C. KOMUNIKASI ANTAR PROSES
Munculnya konsep sistem operasi multitasking memungkinkan sejumlah proses aktif bersamaan. Proses-proses ini pada hakikatnya saling memengaruhi karena menggunakan prosesor dan memori yang sama. Meskipun proses memiliki ruang alamat logika yang independen dan terisolasi dari proses lain (ditangani oleh OS dengan bantuan Memory Management Unit - MMU), ada kalanya proses-proses ini perlu bekerja sama, sehingga sistem operasi harus menyediakan fasilitas komunikasi antar proses (Inter Process Communication - IPC).
Ada dua model utama komunikasi antar proses yang saling bekerja sama yaitu:
- Model Bertukar Pesan (Message Passing)
- Model Berbagi Pakai Memori (Shared Memory)
1. Komunikasi Langsung vs Komunikasi Tidak Langsung
- Komunikasi Langsung: Alamat identitas atau alamat penerima dinyatakan secara eksplisit dalam sintaks pengiriman pesan, misalnya Send (pesan, proses tujuan).
- Komunikasi Tidak Langsung: Pengiriman dan penerimaan pesan dilakukan menggunakan perantara yang disebut mailbox atau port.
2. Implementasi Message Buffer pada Message Passing
Message buffer memungkinkan pengiriman pesan secara asinkron, di mana pengirim tidak perlu menunggu penerima siap, sehingga dapat melanjutkan aktivitasnya. Selain itu, message buffer juga berguna jika terjadi kesalahan transmisi data, karena pesan dapat dikirim ulang dari buffer.
D. SINKRONISASI PROSES
1. Konsep Sinkronisasi
Sinkronisasi memastikan operasi berjalan secara sinkron pada proses-proses konkuren yang saling memengaruhi, sehingga terjamin kelangsungan operasinya serta keabsahan status sumber daya yang dimanipulasi bersama.
2. Implementasi Sinkronisasi
Mekanisme sinkronisasi bertugas mengoordinasikan eksekusi critical section dari proses-proses yang terlibat. Implementasi sinkronisasi umumnya dilakukan pada tiga lapisan sistem komputer: aplikasi pengguna, perangkat keras, dan sistem operasi.
Sinkronisasi Aplikasi Pengguna
Pada program aplikasi, kode tambahan harus ditambahkan sebagai implementasi mekanisme sinkronisasi. Kode tambahan ini disebut entry section dan exit section, yang diletakkan mengapit bagian kode yang diidentifikasi sebagai critical section. Entry section berfungsi untuk memastikan mutual exclusive dengan menguji apakah proses dapat melanjutkan ke critical section-nya. Exit section berfungsi untuk memastikan sifat progress, yaitu jika proses sudah selesai mengeksekusi critical section-nya, ia tidak boleh menghalangi proses lainnya untuk melanjutkan ke critical section-nya.
Sinkronisasi Perangkat Keras
Implementasi entry section dan exit section pada aplikasi pengguna memiliki masalah serius, yaitu kompleksitasnya meningkat drastis untuk menangani banyak proses dan masalah busy waiting yang memboroskan siklus CPU. Untuk menyederhanakan dan mengatasi busy waiting, dapat digunakan variabel kunci (lock) yang bernilai benar (true) atau salah (false).
Sinkronisasi Sistem Operasi
Untuk mengoptimalkan pemakaian prosesor dan meniadakan busy waiting, sinkronisasi membutuhkan campur tangan rutin sistem operasi. Hal ini dilakukan dengan menyediakan fungsi atau rutin sistem operasi yang dapat dipanggil pada entry section dan exit section.
E. MASALAH KLASIK KONKURENSI
Berikut adalah beberapa masalah klasik konkurensi yang membutuhkan mekanisme sinkronisasi:
- Masalah Bounded-Buffer (Producer-Consumers): Diasumsikan terdapat buffer dengan kapasitas terbatas. Produser mengisi buffer, sedangkan consumer memindahkan atau menghapus isi buffer. Masalah timbul jika buffer penuh (bagi produser) atau kosong (bagi consumer).
- Masalah Readers and Writers: Sebuah data (berkas atau rekaman basis data) digunakan bersama oleh sejumlah proses. Beberapa proses melakukan operasi baca (read), sementara yang lain melakukan operasi tulis (write). Jika semua proses hanya membaca, tidak ada masalah. Namun, jika ada satu saja proses yang melakukan operasi tulis, masalah dapat muncul.
- Masalah Dining Philosopher: Masalah ini menunjukkan masalah yang muncul ketika terjadi pengalokasian beberapa sumber daya untuk beberapa proses yang dapat berakibat deadlock atau starvation.
- Masalah Sleeping Barber: Masalah konkurensi klasik ini menganalogikan kondisi di tempat potong rambut dengan satu kursi potong dan sejumlah n kursi tunggu. Jika tidak ada pelanggan, tukang potong rambut akan tidur. Jika ada pelanggan masuk, tukang potong harus dibangunkan. Pelanggan lain akan menunggu di kursi tunggu jika tersedia, atau pergi jika tidak ada kursi kosong. Masalahnya adalah bagaimana mengatur agar tidak terjadi race condition antara proses tukang potong dan proses pelanggan.
F. PENANGAN DEADLOCK
Pada sebuah sistem komputer di mana terdapat beberapa proses yang berjalan secara konkuren, seringkali terjadi persaingan dalam memperebutkan sumber daya yang digunakan sehingga dapat menyebabkan seluruh proses yang terlibat tidak dapat melanjutkan eksekusinya. Kondisi ini disebut dengan deadlock, yaitu kondisi di mana dua proses atau lebih tidak dapat meneruskan eksekusinya karena saling menunggu aksi ataupun sumber daya yang digunakan oleh proses lainnya.
Deadlock hanya terjadi ketika proses-proses hendak mengakses lebih dari satu sumber daya secara eksklusif dan terjadi persaingan memperoleh sumber daya tersebut dengan proses-proses lainnya.
Ada empat kondisi syarat terjadinya deadlock, yang semuanya harus terpenuhi secara simultan:
- Mutual Exclusion Condition: Sumber daya hanya dapat digunakan oleh satu proses dalam satu waktu.
- Hold and Wait Condition: Proses yang sedang menggunakan satu sumber daya, menunggu untuk menggunakan sumber daya lain.
- Non-Preemption Condition: Sumber daya yang sedang digunakan sebuah proses tidak dapat diambil secara paksa.
- Circular Wait Condition: Terdapat rantai sirkular dari dua atau lebih proses, masing-masing menunggu sumber daya yang sedang dikuasai proses lainnya.
Deadlock dapat menghambat kerja sistem komputer, sehingga perlu ditangani dengan baik. Penanganan deadlock dapat dilakukan dengan tiga model pendekatan:
- Prevention dan Avoidance: Mencegah dan menghindari kondisi-kondisi yang menyebabkan terjadinya deadlock.
- Detection dan Recovery: Membuat mekanisme deteksi dan pemulihan sistem terhadap keadaan deadlock.
- Mengabaikan masalah: Menganggap deadlock tidak pernah terjadi di sistem (misalnya pada UNIX, diasumsikan deadlock sangat jarang terjadi).
Pencegahan deadlock dapat dilakukan pada masing-masing kondisi yang menyebabkannya:
- Kondisi mutual exclusion dapat dihindari dengan menerapkan kebijakan untuk hanya memakai sumber daya yang dapat digunakan secara konkuren, meskipun ini tidak selalu dapat diterapkan pada setiap sumber daya.
- Kondisi hold and wait dapat dihindari dengan mengalokasikan seluruh sumber daya yang diperlukan suatu proses sebelum proses tersebut mulai dieksekusi.
- Kondisi non-preemption dapat dihindari dengan mengkondisikan jika suatu proses tidak dapat mendapatkan suatu sumber daya dengan segera, sumber daya yang sedang digunakannya harus dilepas dahulu.
- Untuk kondisi circular wait, deadlock dapat dihindari dengan memberikan nomor urut untuk semua sumber daya. Jika suatu proses meminta sumber daya yang sedang digunakan oleh proses lain, hal tersebut hanya diizinkan jika sumber daya yang diminta memiliki nomor urut lebih tinggi dari semua sumber daya yang sedang dikuasainya.
Secara prinsip, kondisi deadlock dapat dihindari dengan memastikan bahwa sistem selalu dalam status aman (safe state). Cara ini memastikan agar setiap alokasi suatu sumber daya tidak membuat sistem menjadi tidak aman (unsafe). Mekanisme penghindaran deadlock ini membutuhkan setiap proses menyatakan jumlah maksimum setiap jenis sumber daya yang diperlukannya, dan algoritma deadlock-avoidance secara dinamis memeriksa status alokasi sumber daya untuk memastikan tidak akan ada kondisi circular-wait.
KESIMPULAN
Manajemen proses adalah pilar utama dalam fungsi sistem operasi modern, yang memungkinkan eksekusi program yang efisien. Dari penciptaan proses yang melibatkan serangkaian langkah detail dengan overhead yang signifikan, hingga penghentian yang memerlukan pelepasan sumber daya yang cermat, setiap tahap siklus hidup proses dirancang untuk menjaga integritas dan kinerja sistem. Pengalihan eksekusi proses, yang dipicu oleh berbagai event internal dan eksternal, adalah mekanisme krusial untuk multitasking,
Penjadwalan proses adalah seni dan ilmu dalam mengalokasikan waktu prosesor secara adil dan efisien di antara banyak proses yang bersaing. Berbagai kriteria penjadwalan seringkali saling bertentangan,
Komunikasi antar proses (IPC) sangat penting untuk memungkinkan proses-proses yang terisolasi untuk berkolaborasi.
Terakhir, sinkronisasi proses adalah mekanisme vital untuk mencegah race condition dan menjaga konsistensi data saat sumber daya dibagi pakai secara konkuren. Penanganan deadlock, melalui pencegahan, penghindaran, atau deteksi dan pemulihan, sangat penting untuk menjaga stabilitas sistem.
Komentar
Posting Komentar