BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam sistem operasi, lebih dari satu proses dapat bekerja bersama untuk mencapai tujuan yang diinginkan. Agar tujuan tercapai secara benar, proses-proses tersebut harus mensinkronkan kegiatan-kegiatannya sehingga terkendali dengan baik untuk menghindari kondisi deadlock.
Kasus producer-consumer digunakan sebagai ilustrasi pembahasan sinkronisasi. Kasus producer-consumer berisi masalah mutual-exclusion dan sinkronisasi. Kasus ini sering juga disebut sebagai bounded-buffer problem (masalah buffer dengan jumlah terbatas). Kasus ini dapat diilustrasikan sebagai berikut, terdapat produsen (ilustrasi dari proses yang menyimpan informasi ke buffer) menghasilkan barang (ilustrasi dari informasi) dan konsumen (ilustrasi dari proses yang mengambil informasi dari buffer) yang akan menggunakan barang yang dihasilkan produsen. Keduanya mempunyai market (ilustrasi dari buffer) bersama dan berukuran tetap. Karena ukuran market terbatas, petaka (bencana) dapat terjadi untuk producer dan consumer. Masalah bagi producer terjadi ketika market telah penuh, sementara producer ingin meletakkan barang ke market yang telah penuh itu. Sedangkan masalah bagi consumer terjadi ketika consumer ingin mengambil barang sementara market telah/sedang kosong.
Berdasarkan uraian di atas, penulis ingin merancang suatu perangkat lunak yang mampu untuk mensimulasikan kasus producer-consumer dan menunangkannya dalam tugas akhir dengan judul “Perangkat Lunak Simulasi Producer-Consumer Problem”.
1.2 Perumusan Masalah
Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah:
1. bagaimana menerapkan metode sleep and wakeup untuk mencegah deadlock dan semaphore untuk mensinkronkan proses antara producer dan consumer dalam simulasi.
2. bagaimana membuat gambar dan animasi untuk mensimulasikan Producer-Consumer Problem.
1.3 Tujuan dan Manfaat Penulisan
Tujuan penyusunan tugas akhir (skripsi) ini adalah untuk merancang suatu perangkat lunak simulasi Producer-Consumer Problem.
Manfaat dari penyusunan tugas akhir (skripsi) ini, yaitu:
1. Membantu pemahaman terhadap Producer-Consumer Problem.
2. Mendukung dalam proses belajar mengajar, terutama mengenai topik sinkronisasi proses dalam mata kuliah Sistem Operasi.
1.4 Pembatasan Masalah
Supaya masalah tidak terlalu luas dan karena keterbatasan kemampuan penulis, maka perangkat lunak diberi pembatasan sebagai berikut:
1. Metode yang digunakan untuk menyelesaikan permasalahan producer-consumer adalah metode sleep and wakeup dan metode sempahore.
2. Input perangkat lunak dapat dimasukkan secara manual oleh user atau dapat juga dihasilkan secara acak (random) oleh komputer.
3. Jumlah producer dibatasi minimal 1 orang dan maksimal 6 orang.
4. Jumlah consumer dibatasi minimal 1 orang dan maksimal 6 orang.
5. Batas maksimum dan minimum dalam 1 kali produksi dapat ditentukan, minimal 1 item dan maksimum 100 item.
6. Batas maksimum dan minimum dalam 1 kali konsumsi dapat ditentukan, minimal 1 item dan maksimum 100 item.
7. Lama produksi dan konsumsi diatur oleh komputer secara acak.
8. Dalam proses simulasi, buffer diasumsikan sebagai sebuah market.
9. Batas maksimum dan minimum ukuran dari market (mewakili buffer) dapat ditentukan, minimal 1 item dan maksimal 100 item.
10. Jenis item dibatasi sebanyak 5 jenis.
11. Perangkat lunak akan menampilkan proses yang terjadi dalam bentuk animasi gambar.
12. Perangkat lunak akan menampilkan laporan mengenai proses-proses yang terjadi. Laporan proses-proses yang terjadi dapat disimpan.
13. Kecepatan animasi dapat diatur secara manual.
14. Batas waktu simulasi dapat di-input.
1.5 Metodologi Penyelesaian Masalah
Langkah-langkah pembuatan perangkat lunak ini antara lain:
a. Membaca dan mempelajari buku-buku yang berhubungan dengan Sistem Operasi.
b. Mempelajari Producer-Consumer Problem.
c. Mempelajari teknik-teknik dasar pemrograman dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0.
d. Merancang interface untuk perangkat lunak simulasi.
e. Merancang suatu perangkat lunak simulasi Producer-Consumer Problem dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0.
f. Menguji perangkat lunak dan memperbaiki kesalahan (error) yang muncul.