SIMULASI READERS AND WRITERS PROBLEM DENGAN MENGGUNAKAN METODE SEMAPHORE DAN METODE SLEEP
AND WAKE-UP
SKRIPSI
OCTAVIANUS SIANTURI 081401047
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2018
SIMULASI READERS AND WRITERS PROBLEM DENGAN MENGGUNAKAN METODE SEMAPHORE DAN METODE SLEEP AND WAKE-UP
SKRIPSI
Diajukan untuk melengkapi tugas akhir dan memenuhi syarat mencapai gelar Sarjana Komputer
OCTAVIANUS SIANTURI 081401047
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2018
PERSETUJUAN
Judul : SIMULASI READERS AND WRITERS PROBLEM
DENGAN MENGGUNAKAN METODE SEMAPHORE DAN METODE SLEEP AND WAKE-UP
Kategori : SKRIPSI
Nama : OCTAVIANUS SIANTURI
Nomor Induk Mahasiswa : 081401047
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
(FASILKOM-TI) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, 03 Agustus 2018 Komisi Pembimbing :
Pembimbing II, Pembimbing I,
Herriyance, S.T, M.Kom Dr. Poltak Sihombing, M. Kom
NIP: 198010242010121002 NIP: 196203171991031001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer
NIP. 196203171991031001
PERNYATAAN
SIMULASI READERS AND WRITERS PROBLEM DENGAN MENGGUNAKAN METODE SEMAPHORE DAN METODE SLEEP AND WAKE-UP
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan,
OCTAVIANUS SIANTURI 081401047
PENGHARGAAN
Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa atas limpahan rahmat, kasih dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Pada pengerjaan skripsi dengan judul Simulasi Readers and Writers dengan Menggunakan Metode Semaphore dan Metode Sleep And Wake-up, penulis menyadari bahwa banyak campur tangan pihak yang turut membantu dan memotivasi dalam pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:
1. Bapak Prof. Dr. Runtung Sitepu, S.H, M.Hum, selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom, selaku Ketua Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
4. Bapak Herriyance, S.T, M.Kom selaku Sekretaris Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
5. Bapak Dr. Poltak Sihombing, M.Kom dan Bapak Herriyance, S.T, M.Kom selaku dosen pembimbing yang telah memberikan arahan dan motivasi kepada penulis dalam pengerjaan skripsi ini.
6. Ibu Dr. Maya Silvi Lydia, M.Sc dan Ibu Sri Melvani Hardi, S.Kom, M.Kom sebagai dosen penguji yang telah memberikan saran dan kritik kepada penulis dalam penyempurnaan skripsi ini.
7. Seluruh dosen Program Studi S1 Ilmu Komputer Fasilkom-TI USU dan semua pegawai Program Studi S1 Ilmu Komputer Fasilkom-TI USU.
8. Ayahanda G. Sianturi dan Ibunda N. Butarbutar yang telah memberikan do’a, dukungan, perhatian serta kasih sayang yang tulus serta pengorbanan yang tidak ternilai harganya.
9. Teman-teman seperjuangan mahasiswa S1-Ilmu Komputer stambuk 2008, Johannes
Davidson, Brikson Barus dan teman-teman lain yang telah memberikan motivasi, arahan dan perhatiannya.
10. Teman-teman Komunitas Logic : Gunalan, Rivai, Samuel, Septian Maihadi, Septian DC, Angga, Herman, Elieser, dan lain – lain yang selalu memberikan pencerahan, pengarahan, dan membuat suasana pengerjaan skripsi lebih menyenangkan.
11. Adik-adik angkatan 2009, 2010 dan 2011 yang telah membakar semangat untuk menyelesaikan penyelesaian skripsi ini.
12. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.
Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan, oleh karena itu penulis menerima saran dan kritik yang bersifat membangun demi kesempurnaan skripsi ini.
Sehingga dapat bermanfaat bagi kita semuanya.
Medan, 3 Agustus 2018
Octavianus Sianturi
ABSTRAK
Pada awalnya kebanyakan orang memakai konsep-konsep sinkronisasi yang sederhana yang didukung oleh hardware, seperti pemakaian interrupt atau pemakaian rutin-rutin yang mungkin telah diimplementasi oleh hardware. Pada tahun 1967, Djikstra mengajukan suatu konsep pemakaian suatu variable integer untuk menghitung banyaknya proses yang sedang aktif atau yang sedang tidak aktif. Tipe dari variable ini dinamakan semaphore.
Kebanyakkan semaphore juga digunakan untuk sinkronisasi dalam komunikasi antar device perangkat. Pada kasus readers and writers berisi masalah mutual-exclusion dan sinkronisasi. Kasus ini dapat diilustrasikan sebagai berikut, terdapat writers (ilustrasi dari proses yang menyimpan informasi ke database) menghasilkan item (ilustrasi dari informasi) dan readers (ilustrasi dari proses yang mengambil informasi dari database) yang akan menggunakan item yang dihasilkan writers. Keduanya mempunyai database (ilustrasi dari buffer) bersama dan berukuran tetap. Karena ukuran database terbatas, petaka (bencana) dapat terjadi untuk readers dan writers. Masalah bagi writers terjadi ketika database telah penuh, sementara writers ingin meletakkan barang ke database yang telah penuh itu. Sedangkan masalah bagi writers terjadi ketika writers ingin mengambil barang sementara database telah/sedang kosong.
Katakunci : Semaphore, Sleep and Wake-up, Sistem Operasi, Readers and Writers, Mutual-exclusion, Sinkronisasi.
Readers And Writers Problem Simulation by Using Semaphore Method and Sleep And Wake-up Method
ABSTRACT
Initially most people wear simple synchronization concepts which supported by hardware, like usage of routine usage or interrupt which implementation could have by hardware. In the year 1967, Djikstra raise a concept of an integer variable to count to the number of process which is active or which is not is active. Type of this variable is named by semaphore. semaphore is also used for synchronization in communications between device.
In the case of Readers and Writers contains The problem of mutual-exclusion and synchronization. This case can be illustrated as follows, there are writers (illustrations of processes that store information do buffers) make item (illustrations of information) and readers (illustrated from a process that retrieves information from a buffer) that will use item produced by writers. Both have a shared and fixed-size database (illustration of buffers). Since database size is limited, disasters can occur for readers and writers. The problem for writers occurs when the database is full, while the writers wants to put the item into the already full database. While the problem for the readers occurs when the readers wants to take the item while the database has / is empty.
Keywords: Semaphore, Sleep and Wake-up, Operating System, Readers and Writers, Mutual-exclusion, Synchronization.
DAFTAR ISI
Halaman
Persetujuan i
Pernyataan ii
Penghargaan iii
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x
Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Tujuan Penelitian 2
1.4 Manfaat Penelitian 2
1.5 Batasan Masalah 2
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 4
Bab 2 Landasan Teori 7
2.1 Sistem Operasi 7
2.2 Komponen Sistem Operasi 8
2.3 Proses 11
2.3.1 Keadaan Proses 12
2.3.2 Process Control Block (PCB) 14
2.3.3 Threads 15
2.4 Kongkurensi (Kebersamaan) 16
2.5 Sinkronisasi 17
2.5.1 Race Condition 17
2.5.2 Masalah Critical Section 19
2.5.3 Metode Semaphore 20
2.5.4 Metode Sleep and Wake-up 23
2.5.5 Kasus Readers and Writers 23
2.5.5.1 Penyelesaian dengan Sleep And Wake-up 24
2.5.5.2 Penyelesaian dengan Semaphore 26
2.5.5.3 Perbedaan antara Sleep and Wake-up dengan Semaphore
28
2.6 Deadlock 29
2.6.1 Syarat-Syarat Terjadinya Deadlock 31
2.6.2 Metode Mengatasi Deadlock 32
2.6.3 Metode Pencegahan Deadlock 33
2.6.4 Metode Penghindaran Deadlock 35
2.7 Animasi 38
Bab 3 Analisis Dan Perancangan Sistem 39
3.1 Analisis Sistem 39
3.1.1 Analisis Masalah 39
3.1.2 Analisis Persyaratan 40
3.1.2.1 Analisis Persyaratan Fungsional 40 3.1.2.2 Analisis Persyaratan Nonfungsional 41
3.1.3 Analisis Proses Aplikasi Simulasi 42
3.1.3.1 Penggambaran Objek Animasi 43 3.1.3.2 Proses Simulasi Readers and Writers Problem 46
3.1.4 Algoritma Pengaturan Pergerakan 48
3.1.4.1 Algoritma Pengaturan Pergerakan Writers 48 3.1.4.2 Algoritma Pengaturan Pergerakan Readers 52
3.2 Perancangan Sistem 56
3.2.1 Form Input 57
3.2.2 Form Simulasi 59
3.2.3 Form Tabel 60
3.2.4 Form Log 61
3.2.5 Form About 62
Bab 4 Implementasi dan Pengujian Sistem 64
4.1 Implementasi Sistem 64
4.1.1 Form Input 64
4.1.2 Form Simulasi 65
4.1.3 Form Tabel 66
4.1.4 Form Log 67
4.1.5 Form About 68
4.2 Hasil Pengujian Sistem Simulasi 69
Bab 5 Kesimpulan Dan Saran 77
5.1 Kesimpulan 77
5.2 Saran 77
Daftar Pustaka 79 Lampiran 81
Daftar Tabel
Halaman
2.1 Tabel Deadlock 35
3.1 Tabel Gambar Objek Simulasi 44
DAFTAR GAMBAR
Halaman
2.1 Diagram Keadaan Proses 13
2.2 Process Control Block 15
2.3a Race Condition 18
2.3b Race Condition 19
2.4 Skema Solution masalah Readers and Writers dengan Sleep and Wake-up
25 2.5 Skema Solution masalah Readers and Writers dengan
Semaphore
26
2.6a Deadlock 30
2.6b Deadlock 30
2.7 Graph Deadlock 31
2.9 Contoh Animasi Keyframe 38
3.1 Diagram Ishikawa Analisis Masalah 40
3.2 Diagram Hierarki 43
3.3 Rancangan Form Input 57
3.4 Rancangan Form Simulasi 59
3.5 Rancangan Form Tabel Simulasi 61
3.6 Rancangan Form Log/Laporan 62
3.7 Rancangan Form About 63
4.1 Form Input 65
4.2 Form Simulasi 66
4.3 Form Tabel 67
4.4 Form Log 68
4.5 Form About 68
4.6 Form Input (Pengujian Program) 69
4.7 Form Simulasi sebelum proses simulasi dimulai 70 4.8 Form Simulasi ketika writers berada dalam keadaan tidur (sleep) 70 4.9 Form Simulasi ketika readers berada dalam keadaan tidur (sleep) 71
4.10 Form Log Hasil Simulasi 75
4.11 Form Tabel Hasil Simulasi 76
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam sistem operasi, proses - proses dapat bekerja bersama untuk mencapai tujuan yang dibutuhkan. Agar tujuan tercapai secara benar, proses-proses tersebut harus mensinkronkan kegiatan - kegiatannya sehingga terkendali dengan baik untuk tidak mengalami kondisi deadlock.
Permasalahan readers and writers digunakan sebagai ilustrasi pembahasan sinkronisasi. Permasalahan readers and writers berisi masalah mutual-exclusion dan sinkronisasi. Permasalahan ini sering juga disebut sebagai bounded-buffer problem (masalah buffer dengan jumlah terbatas). Permasalahan ini dapat digambarkan sebagai berikut, terdapat penulis (ilustrasi dari proses yang menyimpan informasi ke buffer) menghasilkan buku (ilustrasi dari informasi) dan pembaca (ilustrasi dari proses yang mengambil informasi dari buffer) yang akan memakai buku yang dihasilkan penulis.
Keduanya mempunyai database (ilustrasi dari buffer) bersama dan berukuran tetap. Karena ukuran database terbatas, petaka (bencana) dapat terjadi untuk readers dan writers.
Masalah bagi writers terjadi ketika database telah penuh, sementara writers ingin meletakkan buku ke database yang telah penuh itu. Sedangkan masalah bagi readers terjadi ketika readers ingin mengambil barang sementara database telah/sedang kosong.
Berdasarkan hal tersebut, penulis ingin merancang aplikasi yang mampu untuk mensimulasikan readers and writers problem dengan menggunakan metode Semaphore dan metode Sleep and Wake-up.
1.2 Rumusan Masalah
Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah Bagaimana mencegah deadlock pada proses antara readers dan writers dalam simulasi dengan menggunakan metode sleep and wake-up untuk mencegah dan metode semaphore untuk mensinkronkan.
1.3 Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk merancang suatu aplikasi simulasi Readers and Writers Problem dengan menerapkan metode semaphore dan metode sleep and wake-up.
1.4 Manfaat Penelitian Manfaat dari penelitian ini, yakni :
1. Memberi pemahaman terhadap Readers and Writers Problem.
2. Mendukung dalam proses pemahaman, terutama mengenai topik sinkronisasi proses - proses dalam perkuliahan Sistem Operasi.
1.5 Batasan Masalah
Batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini sebagai berikut :
1. Metode sleep and wakeup dan metode semaphore yang digunakan untuk mengatasi permasalahan readers and writers problem.
2. Untuk input pada aplikasi dapat dimasukkan secara manual atau secara acak (random) oleh pengguna.
3. Batas jumlah readers minimal 1 orang dan maksimal 6 orang.
4. Batas jumlah writers minimal 1 orang dan maksimal 6 orang.
5. Batas maksimal dan minimal dalam 1 kali penulisan dapat ditentukan dengan minimal 1 item sampai maksimum 100 item.
6. Batas maksimal dan minimal dalam 1 kali pembacaan dapat ditentukan dengan minimal 1 item sampai maksimum 100 item.
7. Lama proses membaca dan menulis diatur oleh aplikasi secara acak.
8. Dalam simulasi buffer diilustrasikan sebagai sebuah database.
9. Batas maksimal dan minimal ukuran dari database (buffer) dapat ditentukan dengan minimal 1 item sampai maksimal 100 item.
10. Jenis item hanya terdapat sebanyak 5 jenis.
11. Aplikasi akan menampilkan proses yang terjadi dalam bentuk animasi gambar.
12. Aplikasi akan menampilkan laporan (log) mengenai proses-proses yang terjadi selama simulasi.
13. Animasi dapat diatur kecepatannya secara manual.
14. Lama waktu proses simulasi dapat di-input-kan secara manual.
1.6 Metodologi Penelitian
Metodelogi penelitian yang akan digunakan adalah :
1. Studi Literatur
Penulisan ini dimulai dengan pengumpulan bahan – bahan referensi dari berbagai sumber seperti buku, jurnal ilmiah, makalah, halaman web, dan lain- lain yang berkaitan dengan sistem operasi dan readers and writers problem sehingga tercapai tujuan dari penulisan tugas akhir ini.
2. Analisis dan Perancangan Sistem
Pada tahap ini dilakukan analisis kebutuhan terhadap sistem dan menjadi dasar untuk perancangan sistem disertai pembuatan flowchart, diagram unified modeling language (UML), design interface, dan pseudocode.
3. Implementasi Sistem
Pada tahap ini dilakukan implementasi sistem sesuai rancangan yang telah dibangun sebelumnya.
4. Pengujian Sistem
Pada tahap ini dilakukan pengujian terhadap sistem yang dibangun. Apakah sistem dapat melakukan simulasi sesuai dengan yang diinginkan dan memperbaiki kesalahan (error) yang muncul.
5. Dokumentasi dan Laporan Akhir
Melakukan dokumentasi hasil implementasi dan pengujian sistem secara tertulis dalam bentuk laporan skripsi.
1.7 Sistematika Penulisan
Untuk membuat penulisan ini lebih terstruktur, maka penulisan ini dibagi menjadi lima, yaitu sebagai berikut ini :
BAB 1 : PENDAHULUAN
Pada bab ini berisi penjelasan mengenai latar belakang masalah, perumusan masalah, tujuan penelitian, manfaat penelitian, metodelogi penelitian, dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Pada bab ini berisi penjelasan mengenai teori yang berkaitan dengan penelitian, diantaranya yaitu teori sistem operasi, teori proses, teori kongkurensi, teori sinkronisasi, metode semaphore, metode sleep and wake- up, dan teori – teori lainnya.
BAB 3 : ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini berisi penjelasan mengenai analisis masalah dan segala hal yang berkaitan dengan sistem yang dibangun, serta menjelaskan cara kerja sistem , kemudian dilanjutkan dengan perancangan antarmuka sistem.
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini berisi penjelasan mengenai implementasi sistem dengan menggunakan bahasa pemrograman Microsoft Visual Studio 2012 (C#) berdasarkan tahapan perancangan sistem, kemudian dilakukan pengujian sistem dengan perancangan yang dilakukan pada sebelumnya.
BAB 5 : KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan yang diperoleh dalam penelitian dan saran yang diberikan untuk pengembangan lebih lanjut.
BAB II
LANDASAN TEORI
2.1 Sistem Operasi
Sistem operasi adalah antarmuka utama yang digunakan dalam berhubungan dengan sistem komputer. Sebelum ada sistem operasi, orang hanya dapat mengoperasikan komputer dengan menggunakan sinyal analog dan sinyal digital. Seiring dengan perkembangan pengetahuan dan teknologi, maka bermunculanlah berbagai sistem operasi yang menyediakan lingkungan untuk mengoperasikan komputer secara lebih mudah (user friendly). Untuk lebih memahami sistem operasi maka ada sebaiknya perlu dipahami terlebih dahulu beberapa konsep – konsep dasar mengenai sistem operasi itu sendiri.
Pengertian sistem operasi secara umum adalah sebagai resource manager yaitu pengelola seluruh sumber daya yang terdapat pada sistem komputer dan sebagai extended machine yaitu menyediakan sekumpulan layanan ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber daya sistem komputer.
Sistem operasi memiliki 3 sasaran utama sebagai berikut :
1. Kenyamanan, membuat penggunaan komputer menjadi lebih nyaman 2. Efisiensi, penggunaan sumber daya sistem komputer secara efisien.
3. Evolusi, sistem operasi harus dibangun sehingga memungkinkan dan memudahkan pengembangan, pengujian dan pengajuan sistem – sistem yang baru.
2.2 Komponen Sistem Operasi
Menurut Abraham Silberschatz, Peter Baer Galvin, dan Greg Gagne (2005,hal: 82-89), pada umumnya sebuah sistem operasi modern mempunyai komponen sebagai berikut:
1. Manajemen Proses.
Proses adalah satu program yang sedang dalam keadaan eksekusi. Suatu proses membutuhkan satu atau beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, atau perangkat- perangkat Input/Output (I/O). Sistem operasi bertanggung jawab atas aktivitas - aktivitas yang berkaitan dengan manajemen proses sebagai berikut :
a. Pembuatan dan penghapusan proses pengguna dan sistem proses.
b. Penundaan atau pelanjutan proses.
c. Penyedia mekanisme untuk :
Sinkronisasi antar proses.
Komunikasi antar proses.
penanganan deadlock.
2. Manajemen Memori Utama.
Memori utama atau lebih dikenal sebagai memori adalah suatu array besar yang terdiri dari word atau byte, yang ukurannya dapat mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri. Memori utama berfungsi sebagai tempat penyimpanan yang akses datanya digunakan oleh CPU atau perangkat I/O. Memori utama merupakan tempat penyimpanan data yang sementara (volatile), artinya data dapat hilang begitu sistem dimatikan. Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen memori seperti:
a. Melacak pemakaian ruang memori (siapa dan berapa besar?).
b. Memilih program – program mana yang akan di-load ke memori ketika bisa digunakan.
c. Alokasi dan dealokasi ruang memori sesuai yang dibutuhkan.
3. Manajemen Penyimpanan Sekunder.
Data yang disimpan dalam memori utama bersifat sementara dan ukurannya sangat kecil jika dibandingkan dengan keseluruhan data yang terdapat dalam komputer. Oleh karena itu, untuk meyimpan keseluruhan data dan program komputer dibutuhkan secondary storage yang bersifat non-volatile dan mampu menampung banyak data.
Contoh dari secondary storage adalah harddisk, disket, dan lain-lain. Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan disk-management, yakni :
Manajemen ruang kosong.
Alokasi penyimpanan.
Penjadwalan disk.
4. Manajemen Sistem Input/Output (I/O).
Fungsi ini sering disebut device manager, dimana sistem operasi menyediakan "device driver" yang umum sehingga operasi I/O dapat seragam (membaca atau menuliskan data tanpa mempedulikan mekanisme kerja yang berbeda dari perangkat-perangkat I/O yang ada). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas pada harddisk, CD-ROM dan floppy disk. Komponen untuk sistem I/O terdiri dari : a. Sistem Buffer : menampung sementara data dari/ke I/O devices.
b. Spooling: melakukan penjadwalan pemakaian I/O sistem supaya pemakaian I/O lebih efisien (antrian).
c. Driver: penerjemah instruksi antara sistem operasi dan I/O untuk dapat melakukan operasi tertentu. Setiap perangkat keras I/O memiliki driver yang berbeda-beda.
5. Manajemen Berkas.
Berkas adalah kumpulan informasi yang dibuat dengan tujuan tertentu. Berkas disimpan dalam struktur yang bersifat hirarkis, seperti direktori. Dalam manajemen berkas, sistem operasi bertanggung jawab dalam melakukan :
a. Pembuatan dan penghapusan berkas.
b. Pembuatan dan penghapusan direktori.
c. Mendukung manipulasi berkas dan direktori.
d. Memetakan berkas pada secondary storage.
e. Backup berkas ke media penyimpanan yang permanen (non-volatile).
6. Sistem Proteksi.
Proteksi berkenaan dengan mekanisme untuk mengontrol akses yang dilakukan oleh program, prosesor, atau pengguna ke sistem sumber daya. Mekanisme proteksi harus:
a. membedakan antara penggunaan yang sudah diberi izin dan yang belum.
b. menetapkan pembatasan atau pengaturan yang telah ditentukan (specify the controls to be imposed).
c. menyediakan tata cara pelaksanaan (provide a means of enforcement).
7. Sistem Terdistribusi (Jaringan).
Sistem ini untuk mendukung penggunaan jaringan. Sistem ini umumnya kini telah terpadu dalam sistem operasi karena kebutuhan kinerjanya serta kebutuhan komputasi
telah menghendaki kemampuan ini terdapat di dalam sistem komputer. Sistem ini menyediakan akses pengguna ke bermacam sumber-daya sistem. Sistem ini membawa keuntungan dalam hal sebagai berikut :
a. Peningkatan kecepatan komputasi (computation speed-up).
b. Peningkatan penyediaaan data (increased data availability).
c. Peningkatan keandalan (enhanced reliability).
8. Sistem Command – Interpreter.
Sistem Operasi menunggu instruksi dari pengguna (command driven). Program yang membaca instruksi dan mengartikan control statements (keinginan pengguna) umumnya disebut control-card interpreter atau command-line interpreter atau UNIX shell. User Interface sangat bervariasi dari satu sistem operasi ke sistem operasi yang lain dan disesuaikan dengan tujuan dan teknologi I/O devices yang ada. Contohnya:
Command Line Interface (CLI), Graphical User Interface (GUI), dan lain-lain.
2.3 Proses
Proses merupakan konsep pokok dalam sistem operasi. Konsep ini pertama kali dipakai di sistem operasi Multics pada tahun 60-an. Hal yang penting dalam perancangan sistem operasi semuanya berkaitan dengan manajemen proses.
Terdapat beragam definisi proses. Salah satunya adalah suatu program yang sedang dieksekusi. Proses merupakan unit kerja terkecil yang secara individu memiliki sumber daya – sumber daya dan dijadwalkan sistem operasi. Sistem operasi mengelola semua proses dalam komputer dan mengalokasikan sumber daya ke proses-proses sesuai kebijaksanaan yang digunakan / diterapkan untuk memenuhi sasaran sistem.
Program sendiri bukanlah suatu proses. Suatu program adalah satu entitas pasif/statis yang terletak di dalam suatu file, seperti isi dari sebuah berkas yang disimpan dalam disket. Suatu proses merupakan suatu entitas aktif/dinamis karena dalam keadaan tereksekusi, dengan sebuah program counter yang menunjuk pada instruksi selanjutnya untuk dijalankan dan seperangkat sumber daya/resource yang berkenaan dengannya.
Walau lebih dari satu proses dapat dihubungkan dengan sebuah program yang sama, program tersebut dianggap merupakan urutan- urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adalah proses yang berbeda walaupun bagian tulisan text yang dikerjakan adalah sama.
Adalah hal yang umum untuk memiliki proses yang menghasilkan banyak proses saat suatu proses tersebut dieksekusi.
2.3.1 Keadaan Proses
Pada saat proses dieksekusi, proses tersebut dapat berubah statusnya (state). Status dari sebuah proses didefinisikan oleh aktivitas yang sedang bekerja dalam proses tersebut.
Status dari suatu proses berupa sebagai berikut : 1. New : Proses baru saja dibuat.
2. Running : Pemroses sedang mengeksekusi intruksi proses tersebut.
3. Waiting (blocked) : Proses sedang menunggu sejumlah event/kejadian untuk melengkapi tugasnya. Contoh proses menunggu :
Selesainya operasi perangkat masukan/keluaran (I/O)
Tersedianya memori
Tibanya pesan jawaban
4. Ready : Proses siap (ready) dieksekusi, tapi pemroses belum tersedia untuk eksekusi proses ini sama dengan proses sedang menunggu jatah waktu dari pemroses untuk dieksekusi.
5. Terminated : Proses telah selesai dieksekusi.
Penting untuk disadari bahwa hanya satu proses dapat berjalan pada suatu prosesor pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau waiting. Diagram keadaan proses dangan status-status tersebut dapat dilihat pada gambar berikut ini (Silberschatz, 2005, hal: 135).
Gambar 2.1 Diagram keadaan Proses
2.3.2 Process Control Block (PCB)
Parameter-parameter suatu proses dicatat dalam bagian yang biasanya disebut process control block (PCB). PCB berisikan informasi – informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal – hal di bawah ini :
1. Status proses, yaitu keadaan pada proses: new, ready, running, waiting, halted, dan juga banyak lagi.
2. Program counter, suatu stack yang berisikan alamat (address) berikutnya yang akan dieksekusi oleh proses tersebut.
3. CPU register, register tersebut termasuk accumulator, register indeks, stack pointer, general – purpose register, ditambah code information pada kondisi apapun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
4. Informasi penjadwalan CPU, informasi ini berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya.
5. Informasi manajemen memori, dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
6. Informasi pencatatan, berupa informasi jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job/proses, dan banyak lagi.
7. Informasi status I/O, termasuk daftar dari perangkat I/O yang digunakan pada proses ini, daftar berkas – berkas yang sedang diakses, dan banyak lagi.
Gambaran suatu process control block (PCB) dapat dilihat pada gambar 2.2 sebagai berikut (Silberschatz, 2005, hal: 136).
Gambar 2.2 Process Control Block
2.3.3 Threads
Thread adalah abstraksi dari unit aktivitas (penjadwalan). Sebuah proses dapat memiliki lebih dari satu thread. Sistem yang memungkinkan lebih dari satu thread dieksekusi secara bersamaan disebut multithreading. Pada multiprocessors, thread-thread dalam satu proses dapat berjalan secara paralel dalam waktu yang sama.
Thread (sering disebut Light Weight Process (LWP)) adalah unit dasar utilisasi pemroses dan berisi program counter, register set, dan stack space. Thread-thread dalam satu proses berbagi (memakai bersama) bagian kode, data dan sumber daya sistem operasi seperti file dan signal. Multithreading merupakan upaya meningkatkan kinerja sistem komputer, disebabkan oleh sebagai berikut :
1. Penciptaan thread baru lebih cepat dibanding penciptaan proses baru.
2. Terminasi thread lebih cepat dibanding pengakhiran proses.
3. Pengalihan ke thread lain di satu proses lebih cepat dibanding beralih dari satu proses ke proses lain.
4. Thread-thread pada satu proses dapat berbagi kode, data dan sumber daya lain secara nyaman dan efisien dibanding proses-proses terpisah.
2.4 Kongkurensi (Kebersamaan)
Kongkurensi merupakan landasan umum dalam perancangan suatu sistem operasi. Proses- proses disebut kongkuren jika proses-proses (lebih dari 1 proses) berada pada saat yang sama. Proses-proses konkuren dapat sepenuhnya tak bergantung dengan lainnya tapi dapat juga saling berinteraksi/kerjasama. Proses – proses yang berinteraksi memerlukan sinkronisasi/koordinasi agar terkendali dengan baik.
Kongkurensi meliputi hal-hal berikut : 1. Alokasi waktu pemroses untuk proses-proses.
2. Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
3. Komunikasi antar proses.
4. Sinkronisasi aktivitas banyak proses.
Kongkurensi dapat muncul pada 3 konteks yang berbeda, yaitu:
1. Banyak aplikasi (multiple application)
Multiprogramming memungkinkan banyak proses sekaligus sehingga terdapat banyak aplikasi yang dijalankan pada sistem komputer. Banyak proses ini juga sangat berguna untuk sistem komputer tunggal (single user) karena sambil menunggu proses selesainya layanan (misal transfer berkas oleh modem atau pencetakan oleh printer) pemakai dapat berinteraksi dengan aplikasi lain seperti aplikasi game atau mengetik pada text editor.
2. Aplikasi terstruktur
Pengembangan prinsip – prinsip perancangan modular dan pemrograman terstruktur adalah suatu aplikasi dapat secara efektif diimplementasikan sebagai sekumpulan proses aplikasi. Dengan sekumpulan proses – proses, maka tiap proses mempunyai satu layanan khusus yang ditentukan.
3. Strukturisasi sistem operasi
Keunggulan-keunggulan strukturisasi dapat juga diaplikasikan ke pemrograman sistem. Beberapa sistem operasi terbaru yang dipasarkan dan dalam riset telah diimplementasikan sebagai sekumpulan proses.
2.5 Sinkronisasi
Akses-akses yang dilakukan secara bersamaan ke data yang sama dapat menyebabkan data menjadi tidak konsisten. Untuk menjaga agar data tetap konsisten, maka dibutuhkan suatu mekanisme untuk memastikan data yang diminta oleh proses yang bekerja selalu dalam keadaan aktual. Hal inilah yang melatarbelakangi munculnya sinkronisasi dalam sistem operasi.
2.5.1 Race Condition
Dalam sistem operasi terdapat race condition, yang merupakan sebuah kondisi dimana terdapat 2 atau lebih proses membaca atau menulis data/variabel yang digunakan bersama dan hasilnya tergantung dari proses mana yang terakhir menggunakan data tersebut.
Misalkan ada sebuah algoritma read (x), x = x + 1, dan write (x) yang akan diakses oleh 2 proses yaitu P1 dan P2. Masalah terjadi ketika P1 membaca input variabel yang digunakan
bersama, yaitu x (merupakan critical section) dan mulai operasi penambahan, kemudian P2 juga membaca input variabel tersebut sebelum P1 dapat menampilkannya ke layar monitor.
Gambar 2.3a Race Condition
Proses P1 membaca nilai variabel x yang diinputkan, misal : 3
Proses P1 menjalankan operasi penambahan sehingga x bertambah 1, menjadi 4
Proses P2 membaca nilai variabel x yang diinputkan, misal : 5. Terjadi masalah untuk P1 karena variabel x yang seharusnya 4 menjadi 5
Proses P2 menjalankan operasi penambahan sehingga x bertambah 1, menjadi 6
Proses P1 mencetak variabel x yang hasilnya adalah 6 yang merupakan nilai yang salah bagi P1, seharusnya 4.
Proses P2 mencetak variabel x yang hasilnya adalah 6 yang merupakan nilai yang benar bagi P2.
Untuk mengatasi race condition adalah dengan meyakinkan bahwa hanya ada 1 proses saja yang akan mengeksekusi critical section. Dengan kata lain, proses akan mengeksekusi critical section secara sekuensial (berurutan), tidak secara paralel (bersamaan) yang disebut mutual exlusion.
Gambar 2.3b Race Condition
Mutual exclusion dapat dikerjakan dengan membuat eksekusi seluruh critical section menjadi eksekusi tunggal di data / variabel yang digunakan bersama sehingga tidak dapat dikerjakan oleh proses yang lain pada saat yang sama. Eksekusi tunggal ini disebut dengan atomic action.
2.5.2 Masalah Critical Section
Critical Section adalah bagian dari proses yang memerlukan mutual exclusion.
Secara umum, penyelesaian critical section harus memperhatikan 3 kondisi, yaitu:
1. Mutual exclusion, jika suatu proses sedang mengerjakan critical section, maka tidak boleh ada proses lain yang masuk (mengerjakan) critical section tersebut.
2. Progress, jika tidak ada suatu proses yang mengerjakan critical section dan ada beberapa proses yang akan masuk ke critical section, maka hanya proses-proses yang sedang berada pada entry-section saja yang boleh berkompetisi dan mengerjakan critical section.
3. Bounded Waiting, besarnya waktu tunggu dari suatu proses yang akan memasuki critical section sejak proses itu meminta izin untuk mengerjakan critical section, hingga permintaan itu dipenuhi.
2.5.3 Metode Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra (1965) untuk menangani permasalahan critical section. Untuk berbagi pakai sumber daya, proses harus memecahkan masalah mutual exclusion. Sedangkan untuk bekerja sama dalam suatu tugas, proses harus masalah pen-signal-an. Oleh karena itu muncul variabel sederhana yang disebut semaphore. Prinsip dasar semaphore adalah dua atau lebih proses bekerja sama dengan signal yang sederhana, misal proses dipaksa untuk berhenti di tempat yang ditunjuk sampai menerima suatu signal khusus. Untuk mengirim signal lewat semaphore, proses mengeksekusi signal yang sederhana. Untuk menerima signal lewat semaphore, proses mengeksekusi operasi wait() yang sederhana. Jika signal yang bersangkutan belum dikirimkan, maka proses ditunda sampai pengiriman datang.
Semaphore dapat dianalogikan dengan sebuah kunci yang tergantung pada gantungan. Ketika proses memanggil wait(); hal ini berarti kita sedang mencari kunci di gantungan. Jika kunci ada di gantungan, maka kunci diambil dan pemanggil wait() akan melanjutkan tugasnya. Jika kunci tersebut tidak ada, maka pemanggil wait() akan menunggu di sekitar gantungan sampai kunci dipasangkan kembali ke gantungan.
Pemanggil signal() yang akan menempatkan kunci kembali di gantungan. Semaphore memiliki 2 sifat, yaitu :
1. Semaphore dapat diinisialisasi dengan nilai non-negatif.
2. Terdapat 2 operasi terhadap semaphore, yaitu :
Operasi Down / operasi wait() mengurangkan nilai semaphore. Jika nilai semaphore menjadi negatif maka proses yang mengeksekusi wait() diblok.
procedure wait (var sem : semaphore);
begin
enter_kernel;
sem.count = sem.count - 1;
if sem.count < 0 then begin
place the current task on the sem.blocked_list;
call dispatcher - choose another task to run;
end; (*if*) leave_kernel;
end; (*wait*)
Operasi Up / operasi signal() menambahkan nilai semaphore. Jika nilai semaphore menjadi negatif maka proses yang diblok oleh operasi wait() dibebaskan (tidak diblok lagi).
procedure signal (var sem : semaphore);
begin
enter_kernel;
sem.count = sem.count + 1;
if sem.blocked_list is non-empty then
remove a task from the top of the blocked queue and place it on the top of priority queue - i.e. mark it ready call dispatcher (if pre-emptive task switch is to occur);
end; (*if*)
leave_kernel;
end; (*signal*)
Sebelum masuk ke critical section, proses melakukan operasi wait. Bila berhasil maka proses masuk critical section. Bila tidak berhasil maka proses di-block pada semaphore itu.
Proses yang di-block akan dapat melanjutkan kembali bila proses sudah keluar dari critical section dan melakukan operasi signal sehingga menjadikan proses yang di-block ready dan berlanjut hingga operasi wait berhasil.
2.5.4 Metode Sleep and Wake-up
Permasalahan yang terjadi dalam multithreading dapat dikendalikan dengan sinkronisasi.
Sinkronisasi tersebut akan memastikan thread - thread mana saja yang akan dieksekusi
terlebih dulu dan menyimpan data eksekusi sehingga pada saat prosesnya tiba data tersebut dapat dipanggil dan eksekusinya dapat dilanjutkan. Metode sleep and wake-up merupakan metode sinkronisasi yang paling sederhana (Kumar, 2004). Metode ini mempunyai 2 tahapan sebagai berikut :
1. Sleep merupakan suatu system call yang menyebabkan pemanggilnya masuk ke state blocked.
2. Wake-up merupakan suatu system call yang membangunkan proses yang sedang blocked (membuat proses yang memanggil menjadi ready).
Prosedurnya yakni proses akan diblok/tidur (sleep) ketika tidak dapat memasuki critical section-nya dan akan dibangunkan (wake-up)/ready manakala sumber daya yang diperlukan telah tersedia. Kedua rutin tersebut bersifat atomic yaitu dimana saat rutin dieksekusi maka tidak ada interupsi yang dapat menghentikanya.
2.5.5 Kasus Readers and Writers
Masalah readers and writers adalah salah satu masalah sinkronisasi klasik yang sering digunakan untuk mendiskusikan dan membandingkan berbagai cara untuk menyelesaikan masalah sinkronisasi. Secara singkat, masalah ini terjadi ketika ada beberapa pembaca dan penulis ingin mengakses suatu berkas pada saat bersamaan.
Perkiraan dalam readers and writers problem adalah sebagai berikut:
1. Terdapat 2 proses menggunakan suatu buffer yang dipakai bersama dan berukuran tetap.
2. Satu proses adalah writers yang meletakkan data ke buffer.
3. Proses lain adalah readers yang mengambil data dari buffer.
Masalah readers and writers dapat dikembangkan menjadi masalah yang memiliki m buah penulis dan n buah pembaca. Karena buffer terbatas, masalah berikut dapat terjadi, yaitu:
1. Masalah untuk writers.
Masalah terjadi ketika buffer telah penuh, sementara writers ingin meletakkan data ke buffer yang telah penuh itu.
2. Masalah untuk readers.
Masalah terjadi ketika readers ingin mengambil data sementara buffer telah/sedang kosong.
Kedua proses perlu sinkronisasi agar keduanya dapat terhindar dari masalah.
2.5.5.1 Penyelesaian Kasus Readers and Writers dengan Sleep and Wake-up
Penyelesaian ini memiliki dua rutin, yaitu sleep dan wake-up. Kedua rutin bersifat atomik, yaitu saat rutin dieksekusi maka tak ada interupsi yang dapat mengganggunya. Sleep adalah rutin yang menyebabkan pemanggil di-blocked, ditunda sampai proses lain membangunkan (wake-up). Wake-up adalah rutin untuk membangunkan proses yang sedang berada dalam status sleeping. Wake-up mempunyai satu parameter, yaitu proses yang dibangunkan.
Solusi penyelesaian dengan sleep and wake-up adalah sebagai berikut:
1. Solusi untuk masalah writers.
Writers memanggil sleep begitu mengetahui database/buffer telah penuh saat writers akan menyimpan data ke buffer. Writers tidak lagi aktif kecuali dibangunkan (wake-up), proses lain (readers) yang memberitahu bahwa satu item atau lebih sudah
diambil dari database/buffer sehingga terdapat ruang bagi writers untuk menyimpan data ke database/buffer.
2. Solusi untuk masalah readers.
Readers memanggil sleep begitu mengetahui database/buffer telah kosong saat readers mengambil item. Readers tidak lagi aktif kecuali dibangunkan (wake-up) proses lain (writers) yang memberitahu bahwa database/buffer telah terisi satu item atau lebih sehingga terdapat data yang dapat diambil readers dari database/buffer.
const B = 100;
var
count : interger;
Buffer : array [0..B-1] of jenis_item;
procedure write_item;
(* menulis item baru *) procedure put_item;
(* meletakkan item ke buffer *) procedure read_item;
(* membaca item *) procedure remove_item;
(* mengambil item dari buffer *) procedure writers;
begin
write_item;
if count = B then sleep();
put_item;
count = count + 1;
if count = 1 then
wakeup(readers);
end;
procedure readers;
begin
if count = 0 then sleep();
remove_item;
count = count - 1;
if count = B-1 then wakeup(writers);
read_item;
end;
Gambar 2.4 Skema solution masalah Readers and Writers dengan Sleep and Wake-up
2.5.5.2 Penyelesaian dengan Semaphore
Semaphore digunakan untuk mem-blocked writers atau readers lain ketika salah satu writers atau readers sedang berada dalam database/buffer.
var
no_writers; io_permission : semaphore;
readers : record
in_progress : integer;
update_permission : integer;
end;
(* All Semaphore have an initial count = 1 and the semaphore
queue is initially empty. The initial value of
readers.in_progress is 0 *) procedure write;
begin
wait(no_writers);
wait(io_permission);
carry out the actual write operation;
signal(io_permission);
signal(no_writers);
end; (* write *) procedure read;
begin
(* first the funny bit to make access fair for writers - i.e. not to lock them out for too long. *)
wait(no_writers);
signal(no_writers);
(* now the protection to update the number of readers accessing the database *)
wait(readers.update_permission);
if readers.in_progress = 0 then
wait(readers.update_permission);
readers.in_progress = readers.in_progress + 1;
signal(readers.update_permission);
now carry out the actual read operations;
(* now decrement the number of readers in progress and check to see if there are any still left. if not then signal that all io is finished *)
wait(readers.update_permission);
readers.in_progress = readers.in_progress - 1;
if readers.in_progress = 0 then signal(readers.io_permission);
signal(readers.update_permission);
end; (* read *)
Gambar 2.5 Skema solution masalah Readers and Writers dengan Sempahore
2.5.5.3 Perbedaan antara Sleep and Wake-up dengan Semaphore
Perbedaan antara Sleep and Wake-up dengan Semaphore adalah sebagai berikut:
1. Fungsi dari masing-masing metode.
a. Metode Sleep and Wake-up mencegah masalah yang terjadi ketika database/buffer berada dalam keadaan penuh (sementara writers ingin meletakkan data ke dalam database/buffer) dan database/buffer berada dalam keadaan kosong (sementara readers ingin mengambil data dari database/buffer).
b. Semaphore digunakan untuk mencegah writers dan readers mengakses dan meng-update nilai database/buffer secara bersamaan, sehingga nilai database/buffer menjadi tidak akurat.
2. Cara kerja dari masing-masing metode.
a. Cara kerja Sleep and Wake-up: writers memanggil sleep begitu mengetahui database/buffer penuh saat writers akan meletakkan data ke database/buffer.
Writers tidak lagi aktif kecuali jika dibangunkan (wake-up) readers yang memberitahu bahwa satu atau lebih item telah diambil dari database/buffer
sehingga akan terdapat ruang bagi writers untuk meletakkan data ke database/buffer tersebut. Readers memanggil sleep begitu mengetahui database/buffer telah kosong saat readers mengambil item. Readers tidak lagi aktif kecuali jika dibangunkan (wake-up) oleh writers yang memberitahu bahwa database/buffer telah terisi satu atau lebih item sehingga terdapat data yang dapat diambil readers dari database/buffer..
b. Cara kerja Semaphore : menjalankan operasi wait (s = s – 1) ketika akan memasuki database/buffer dan operasi signal (s = s + 1) setelah keluar dari database/buffer. Bila ada salah satu variabel yang ingin masuk ke database/buffer, ketika variabel lain sedang di dalam database/buffer (nilai s <
0), maka variabel tersebut akan di-block hingga variabel yang masuk ke database/buffer melakukan operasi signal untuk menaikkan nilai s.
2.6 Deadlock
Definisi deadlock adalah jika proses menunggu suatu kejadian tertentu yang tak akan pernah terjadi. Sekumpulan proses berkondisi deadlock bila setiap proses yang ada di kumpulan menunggu suatu kejadian yang hanya dapat dilakukan proses lain yang juga berada di kumpulan itu. Proses menunggu kejadian yang tak akan pernah terjadi. Urutan kejadian pengoperasian peralatan masukan / keluaran :
Meminta (request) : meminta pelayanan perangkat masukan/keluaran.
Memakai (use) : memakai perangkat masukan/keluaran.
Melepaskan (release) : melepaskan pemakaian perangkat masukan/keluaran.
Sebagai contoh terdapat model deadlock 2 proses dan 2 sumber daya. Misalkan 2 proses sebagai P0 dan P1, sementara 2 sumber daya sebagai R0 dan R1. P0 meminta sumber daya R0. Sumber daya R1 dialokasikan ke P1.
Gambar 2.6a Deadlock
Skenario yang menimbulkan deadlock adalah dimana P0 dialokasikan R0 dan P1 dialokasikanR1.
Gambar 2.6b Deadlock
Kemudian P0 sambil masih menggenggam R0, meminta R1 dan P1 sambil masih menggenggam R1, meminta R0. Maka terjadilah deadlock karena sama – sama akan saling menunggu. Terjadinya deadlock ditandai dengan adanya graph yang berbentuk lingkaran seperti berikut ini.
Gambar 2.7 Graph Deadlock
2.6.1 Syarat-Syarat Terjadinya Deadlock
Menurut Coffman (1971), ada empat syarat terjadinya deadlock, yakni : 1. Kondisi mutual exclusion (mutual exclution condition).
Tiap sumber daya saat itu diberikan pada tepat satu proses.
2. Kondisi genggam dan tunggu (hold and wait condition).
Proses – proses yang sedang mengenggam sumber daya, menunggu sumber daya – sumber daya baru.
3. Kondisi non-preemption (non-preemption condition).
Sumber daya – sumber daya yang sebelumnya diberikan tidak dapat diambil paksa dari proses itu. Sumber daya – sumber daya tersebut harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
4. Kondisi menunggu secara sirkuler (circular wait condition).
Harus terdapat rantai sirkuler dari dua proses atau lebih, masing – masing menunggu sumber daya yang digenggam oleh anggota berikutnya pada rantai itu.
Ketiga syarat pertama merupakan syarat perlu (necessary condition) bagi terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi di atas, tak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock. Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu kondisi saja tidak terpenuhi, maka deadlock tidak terjadi.
2.6.2 Metode Mengatasi Deadlock
Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yakni : 1. Mengabaikan adanya deadlock.
2. Memastikan bahwa deadlock tidak akan pernah ada dengan metode pencegahan, yaitu mencegah empat syarat terjadinya deadlock agar deadlock tidak akan pernah terjadi atau metode menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.
3. Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:
a. Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
b. Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.
2.6.3 Metode Pencegahan Deadlock
Metode ini merupakan metode yang paling sering digunakan. Metode pencegahan dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencegahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk.
Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber
daya yang secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akan menyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu dengan mengantrikan job-job pada antrian dan akan dilayani satu-satu.
Beberapa masalah yang mungkin terjadi adalah:
1. Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool 2. Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlock Hal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutual exclusion benar-benar tidak dapat dihilangkan.
Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih menjanjikan.
Jika suatu proses yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlock dapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat memulai prosesnya. Masalah yang mungkin terjadi:
1. Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses.
2. Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses yang telah memintanya dari awal.
Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka suatu proses
dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena hasil dari suatu proses yang dihentikan menjadi tidak baik.
Cara terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat dua pendekatan, yaitu:
1. Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu waktu, jika menginginkan sumber daya lain maka sumber daya yang dimiliki harus dilepas.
2. Membuat penomoran pada proses-proses yang mengakses sumber daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi permintaannya harus dibuat terurut.
Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki satu proses adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan.
Sedangkan dengan penomoran masalah yang dihadapi adalah tidak terdapatnya suatu penomoran yang dapat memuaskan semua pihak.
Secara ringkas pendekatan yang digunakan pada metode pencegahan deadlock dan masalah-masalah yang menghambatnya, terangkum dalam tabel dibawah ini (Robert Betz,2001).
Tabel 2.1. Tabel Deadlock
Syarat Langkah Kelemahan
Mutual Exclusion Spooling sumber daya Dapat menyebabkan chaos Hold and Wait Meminta sumber daya di awal Sulit memperkirakan di
awal dan tidak optimal
No forced
resource release (no pre-emption)
Mengambil sumber daya di tengah proses
Hasil proses tidak akan baik
Circular Wait Penomoran permintaan sumber daya
Tidak ada penomoran yang memuaskan semua pihak
2.6.4 Metode Penghindaran Deadlock
Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya akan diberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.
Kondisi Aman (Safe state)
Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
Kondisi Tak Aman (Unsafe state)
Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan.
Gambar 2.8 Safe State, Unsafe State dan Deadlock
2.6.5 Mendeteksi dan Memulihkan Deadlock
Deteksi deadlock adalah teknik untuk menentukan apakah deadlock terjadi serta mengidentifikasi proses – proses dan sumber daya – sumber daya yang terlibat deadlock.
Periode yang biasa dilakukan adalah memonitor permintaan dan pelepasan sumber daya.
Bila sistem terdapat deadlock maka deadlock harus diputuskan. Biasanya beberapa proses akan kehilangan sebagian atau semua kerja yang telah dilakukan. Hal ini lebih baik daripada terjadinya deadlock yang berarti semua proses tidak menghasilkan apapun.
Teknik pemulihan yang biasa digunakan adalah menghilangkan (suspend/kill) proses – proses dari sistem dan pengajuan kembali sumber daya yang dipegang proses – proses tersebut. Proses yang dihilangkan biasanya cacat tetapi proses lain dapat menyelesaikan prosesnya. Pendekatan – pendekatan berikut dapat dilakukan untuk pemulihan deadlock :
Singkirkan semua proses yang terlibat deadlock.
Backup semua proses yang terlibat deadlock ke suatu check point yang didefinisikan sebelumnya dan jalankan kembali proses itu.
Secara berurutan abaikan proses – proses sampai deadlock tidak terjadi lagi. Urutan proses yang dipilih untuk disingkirkan berdasar kriteria biaya minimum.
Secara berurutan preempt sumber daya – sumber daya sampai tidak ada deadlock lagi. Proses yang kehilangan sumber daya karena preemption harus dikembalikan (roll-back) ke titik sebelum memperoleh sumber daya.
Kriteria pemilihan proses yang akan disingkirkan (suspend/kill) :
Waktu pemrosesan yang dijalankan paling kecil.
Jumlah baris keluaran yang diproduksi paling kecil.
Mempunyai estimasi sisa waktu eksekusi terbesar.
Jumlah total sumber daya terkecil yang telah dialokasikan.
Prioritas terkecil.
Dalam penyingkiran proses, sistem harus mengembalikan berkas-berkas yang telah dimodifikasi oleh proses-proses yang disingkirkan ke keadaan asli karena berpengaruh terhadap konsistensi data sistem itu.
2.7 Animasi
Animasi adalah pergerakan dari objek dalam ruangan dua atau tiga dimensi. Pergerakan dihitung untuk menghasilkan tiap gambar dengan memindahkan sedikit objek. Teknik ini dipakai pada kartun animasi tradisional dan untuk menghasilkan efek khusus tertentu.
Keyframming (in-betweening atau tweening) adalah teknik yang biasanya dipakai dalam kartun animasi. Pada keyframming, kartunis utama membuat pandangan utama sedangkan kartunis lainnya membuat gambar yang terletak di antaranya. Teknik keyframming dengan animator komputer membuat fungsi frame inbetweens secara otomatis.
Dengan keyframe tidak hanya dapat menganimasikan posisi, orientasi dan menskala objek tetapi juga warnanya bahkan ketebalan kabut dalam pandangan. Program yang bagus memungkinkan animator untuk mengontrol dan mengubah secara virtual semua parameter tampilan dengan cara keyframe.
Gambar 2.9 Contoh Animasi Keyframe
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Untuk dapat memahami kebutuhan sistem dan gambaran fungsi – fungsi yang akan dikerjakan sistem simulasi, maka dilakukan analisis dan perancangan sistem. Dalam analisi dan perancangan sistem akan membahas mengenai alur kerja perangkat lunak simulasi, penggambaran objek simulasi dan proses simulasi Readers and Writers Problem. Masing- masing pembahasan akan dibahas dalam beberapa sub bab berikut ini.
3.1.1 Analisis Masalah
Diagram Ishikawa (fishbone diagram) biasanya disebut juga diagram sebab akibat yang biasanya digunakan untuk mengidentifikasi masalah yang ada pada sistem yang akan dirancang. Dengan diagram ini kita dapat mengidentifikasi, mengeksplorasi dan menggambarkan suatu masalah dengan mengikutsertakan sebab dan akibat dari permasalahan dalam visual grafis. Dengan demikian proses pencapaian sistem akan sangat dibantu dengan adanya Diagram Ishikawa ini.
Gambar 3.1 Diagram Ishikawa Analisis Masalah
3.1.2 Analisis Persyaratan
Analisis persyaratan merupakan tahapan yang penting, yaitu menentukan persyaratan dari sistem seperti kebutuhan dari pengguna. Analisis persyaratan terbagis atas dua, yaitu analisis persyaratan fungsional dan analisis persyaratan nonfungsional.
3.1.2.1 Analisis Persyaratan Fungsional
Segala sesuatu yang harus dipenuhi sistem untuk mencapai tujuannya merupakan bagian dari persyaratan fungsional. Berikut ini merupakan beberapa persyaratan fungsional sistem yang akan dibangun, antara lain :
1. File gambar objek animasi yang digunakan berformat JPEG (*.jpg) dan memiliki perbedaan pada setiap keadaan seperti berjalan ke bawah, berjalan ke atas, keadaan sedang tidur, dan keadaan bangun.
2. Metode semaphore dan Sleep and Wake-up yang digunakan harus mampu menghindari terjadinya deadlock selama proses simulasi berjalan.
3. Aplikasi simulasi harus mampu melakukan acak/random nilai input-an setiap variabel – variabel yang ada.
3.1.2.2 Analisis Persyaratan Nonfungsional
Persyaratan nonfungsional meliputi performa, mudah untuk dipelajari dan digunakan, hemat biaya, dokumentasi, manajemen kualitas, dan kontrol.
1. Performa
Aplikasi yang akan dibangun harus dapat menunjukkan hasil dari proses simulasi readers and writers problem yang dilakukan oleh sistem.
2. Mudah dipelajari dan digunakan
Aplikasi yang akan dibangun harus sederhana agar mudah dipelajari oleh pengguna (user).
3. Hemat biaya
Aplikasi yang dibangun tidak memerlukan perangkat tambahan ataupun perangkat pendukung dalam proses eksekusinya.
4. Dokumentasi
Aplikasi yang akan dibangun dapat mencatat dan menampilkan laporan proses yang telah terjadi selama proses simulasi berlangsung.
5. Manajemen kualitas
Aplikasi yang akan dibangun harus memiliki kualitas yang baik.
6. Kontrol
Aplikasi yang dibangun harus memiliki message error (pesan error) jika pengguna tidak lengkap memasukkan input-an dan input-an yang dimasukkan tidak sesuai dengan sistem.
3.1.3 Analisis Proses Aplikasi Simulasi
Aplikasi simulasi Readers and Writers Problem dimulai dengan tampilan form input. Form input berfungsi untuk mengatur kondisi – kondisi setiap komponen pada simulasi.
Komponen - komponen yang dapat diatur antara lain sebagai berikut :
1. Pengaturan pada Writers, yaitu jumlah writer, batas maksimum dan minimum bagi writer dalam satu kali write.
2. Pengaturan pada Readers, yaitu jumlah reader, batas maksimum dan minimum bagi reader dalam satu kali read.
3. Pengaturan pada Database, yaitu batas ukuran maksimum dan minimum pada database/buffer.
4. Pengaturan lain, yaitu jenis item, batas waktu dan kecepatan proses simulasi.
Setelah pengaturan pada form input, proses simulasi dapat dimulai dengan menekan tombol ’Simulasi’. Selanjutnya, form simulasi akan muncul. Ketika proses simulasi sedang berjalan, user dapat menghentikan untuk sementara proses simulasi dengan menekan tombol ’Stop’. User juga dapat melihat laporan proses yang terjadi dalam simulasi dengan menekan tombol ’Log’. Laporan juga disediakan dalam bentuk tabel.
Alur kerja pada aplikasi simulasi ini dapat digambarkan dalam bentuk Diagram Hierarki, seperti terlihat pada gambar 3.2 berikut.
Gambar 3.2 Diagram Hierarki
3.1.3.1 Penggambaran Objek Animasi
Dalam simulasi Reader and Writers Problem terdapat objek/variabel animasi yang diillustrasikan dalam bentuk objek gambar statis. Variabel dalam simulasi ini adalah readers, writers dan database. Penggambaran variabel tersebut dilakukan dengan menggunakan GNU image manipulation program (GIMP). Variabel beserta illustrasi objek gambarnya dapat dilihat pada tabel 3.1 berikut ini.
Tabel 3.1 Tabel Gambar Objek Simulasi
Gambar Keterangan
Gambar writers berjalan ke bawah (tampak depan).
Gambar writers berjalan ke atas (tampak belakang).
Gambar writers dalam keadaan tidur (sleep).
Gambar writers dalam keadaan bangun (wake-up)
Gambar Keterangan
Gambar readers berjalan ke bawah (tampak depan).
Gambar readers berjalan ke atas (tampak belakang).
Gambar readers dalam keadaan tidur (sleep).
Gambar Keterangan
Gambar readers dalam keadaan bangun (wake-up)
3.1.3.2 Proses Simulasi Readers and Writers Problem
Proses simulasi Readers and Writers Problem adalah sebagai berikut:
1. Writers aktif menulis dan menambahkan item/data ke database (buffer). Aksi ini akan menambah jumlah item ke dalam database.
2. Readers aktif mengambil item/data dari database (buffer) dan membaca item/data.
Aksi ini akan mengurangi jumlah item ke dalam database.
3. Apabila database telah penuh(mencapai batas maksimal), maka writers akan tidur (memanggil aksi sleep).
4. Apabila readers mengambil item/data dari database dan writers dalam keadaan tidur (sleep), maka readers akan membangunkan (wake-up) writers.
5. Apabila database kosong (mencapai batas minimal), maka readers akan tidur (memanggil aksi sleep).
6. Apabila writers meletakkan item/data ke database dan readers dalam keadaan tidur (sleep), maka writers akan membangunkan (wake-up) readers.
Keenam poin di atas merupakan inti dari kejadian – kejadian yang terjadi di dalam simulasi Readers and Writers Problem. Pencegahan kondisi deadlock (writers ingin