PERANGKAT LUNAK SIMULASI ALGORITMA BANKER
TUGAS AKHIR
MUHAMMAD IBNU 132406224
PTOGRAM STUDI D-3 TEKNIK INFORMATIKA DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2017
PERANGKAT LUNAK SIMULASI ALGORITMA BANKER TUGAS AKHIR
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh Ahli Madya MUHAMMAD IBNU
132406224
PTOGRAM STUDI D-3 TEKNIK INFORMATIKA DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2017
PERNYATAAN
PERANGKAT LUNAK SIMULASI ALGORITMA BANKER
TUGAS AKHIR
Saya mengakui bahwa tugas akhir ini adalah hasil karya sendiri. Kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Januari 2017
Muhammad Ibnu 132406224
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpah karunia-Nya penulis dapat menyelesaikan penyusunan tugas akhir ini dengan judul Perangkat Lunak Simulasi Algoritma Banker.
Selama membangun aplikasi berbasis android hingga selesainya Tugas Akhir ini penulis banyak mendapat bantuan, dorongan, serta motivasi baik secara langsung maupun tidak. Maka pada kesempatan ini, penulis mengucapkan terima kasih kepada :
1. Ibund Yuhasnita Nst., dan Ayahanda Rizal Syahputra yang telah memberikan dukungan, doa, cinta dan kasih sayang yang tiada tanding.
2. Bapak Drs. Pengarapen Bangun, M.Si, selaku Dosen Pembimbing yang senantiasa membimbing penulis hingga Tugas Akhir ini selesai.
3. Bapak Dr.Kerista Sebayang, M.Si, selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.
4. Bapak Prof. Dr. Tulus, Vordipl. Math., M.Si., Ph.D. selaku Ketua Departemen Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.
5. Ibu Dr. Elly Rosmaini, M.Si, selaku Ketua Program Studi D3 Teknik Informatika FMIPA.
6. Seluruh Sahabat dan Rekan, yang selalu mendukung dan memberikan doa serta semangat dalam mengerjakan Tugas Akhir ini.
Akhir kata, semoga Tugas Akhir ini dapat memberi manfaat dan menambah wawasan maupun pengetahuan kita.
PERANGKAT LUNAK SIMULASI ALGORITMA BANKER
ABSTRAK
.
Perangkat Lunak Simulasi Algoritma Banker ini meliputi materi yang berisi tentang apa saja bagian dari simulasi dalam banker, algoritma Banker memodelkan sebuah bank di kota kecil yang berurusan dengan sekumpulan nasabah yang memohon kredit. Analogi dari algoritma Banker dengan sistem operasi adalah, nasabah merupakan proses-proses yang sedang berjalan, uang (dana yang dimiliki bank) merupakan sumber daya, dan bankir merupakan sistem operasi. Setiap nasabah memiliki batas kredit.
Dengan Perangkat Lunak Simulasi Algoritma Banker ini diharapkan dapat membantu seseorang untuk lebih mengenal dan mempelajari mengenai algoritma banker itu sendiri.
DAFTAR ISI
Halaman
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK iv
DAFTAR ISI v
BAB I PENDAHULUAN 1
1.2 Perumusan Masalah 2
1.3 Tujuan Dan Manfaat Penulisan 2
1.4 Penghambat Masalah 3
1.5 Metodologi Penyelesaian Masalah 3
BAB 2 LANDASAN TEORI 5
2.1 Sistem Operasi 5
2.1.1 Definisi System Operasi 5
2.1.2 Sejarah Perkembang System Operasi 6
2.1.3 Fungsi Dan Sasaran System Operasi 10
2.1.4 Sumber Daya System Computer 12
`` 2.1.5 Sistem Computer Dalam Beragam Sudut Pandang 13
2.2 Proses 15
2.2.1 Deskripsi Proses 15
2.2.1.1 Multiprogramming ( Multitasking ) 15
2.2.1.2 Multiprocessing 17
2.2.1.3 Distributed Processing 17
2.2.2 Diagram State Proses 17
2.2.2.1 Diagram State Dasar ( Tiga Keadaan Dasar) 17
2.2.2.2 Diagram State Lanjut (Lima Keadaan ) 19
2.2.3 Tabel - Tabel Untu Proses 22
2.2.4 Tahap – Tahap Penciptaan Proses 23
2.3 Deadlock 23
2.3.1 Model Deadlock 24
2.3.2 Syarat – Syarat Terjadinya Deadlock 25
2.3.3 Pencegahan Deadlock 27
2.3.3.1 Meniadakan Mutual Exclusion 27
2.3.3.2 Meniadakan Syarat Hold And Wait 28
2.3.3.3 Meniadakan Kondisi Non – Preemption 29
2.3.3.4 Menidakan Kondisi Menunggu Sikuler 29
2.3.4 Penghindaran Deadlock 30
2.3.4.1 State Selamat Dan State Tak Selamat 31
2.3.4.2 Algoritma Banker 31
2.3.4.2.1 Safety Algorithm 34
2.3.4.2.2 Resource Request Algorithm 35
2.3.5 Pemulihan Deadlock 36
2.4 Penjadwalan Proses 36
2.5 Manejemen Memori 38
2.6 Model Dan Simulasi 39
BAB III PEMBAHASAN DAN PERANCANGAN 42
3.1 Pembahasan 42
3.1.1 Alur Kerja Prangkat Lunak 42
3.1.2 Pembuatan Objek Gambar Simulasi 44
3.1.3 Cara Kerja Algoritma Banker 46
3.2 Perancangan 50
3.2.1 Form Splash Screen 51
3.2.2 Form Input 51
3.2.3 Form Simulasi 52
3.2.4 Form Note ( Laporan ) 54
3.2.5 Form About 55
3.3 Perancangan Help 56
BAB VI ALGORITMA DAN IMPLEMENTASI 58
4.1 Algoritma 58
4.2 Implementasi Perangkat Lunak 62
4.2.1 Spesifikasi Hardware Dan Software 62
4.2.2 Pengujian Program 63
BAB V KESIMPULAN DAN SARAN 69
5.1 Kesimpulan 69
5.2 Saran 69
DAFTAR PUSTAKA 71
BAB I
PENDAHULUAN
1.1 Latar Belakang
Suatu proses disebut deadlock jika proses menunggu satu kejadian tertentu yang tidak akan pernah terjadi. Sekumpulan proses berkondisi deadlock bila setiap proses yang ada di kumpulan itu menunggu suatu kejadian yang hanya dapat dilakukan proses lain yang juga berada di kumpulan itu. Deadlock terjadi ketika proses-proses mengakses secara ekslusif sumber daya, sedang menggenggam sumber daya dan meminta sumber daya lain (yang sedang dipegang oleh proses lain). Salah satu metode untuk mencegah deadlock adalah algoritma Banker.
Algoritma Banker dikemukakan oleh Edsger W.Dijkstra dan merupakan salah satu metode untuk menghindari deadlock. Algoritma ini disebut algoritma Banker karena memodelkan sebuah bank di kota kecil yang berurusan dengan sekumpulan nasabah yang memohon kredit. Analogi dari algoritma Banker dengan sistem operasi adalah, nasabah merupakan proses-proses yang sedang berjalan, uang (dana yang dimiliki bank) merupakan sumber daya, dan bankir merupakan sistem operasi. Setiap nasabah memiliki batas kredit. Apabila seorang nasabah telah mencapai batas kredit pinjaman, maka diasumsikan nasabah tersebut telah menyelesaikan semua permasalahan bisnisnya dan dapat mengembalikan semua pinjamannya kepada bank. Setiap nasabah dapat memohon kredit pada suatu waktu dan bankir dapat menyetujui atau menolak permohonan
untuknya dan menunggu selama waktu berhingga sampai permohonannya dapat disetujui. Bankir hanya memberikan permintaan yang menghasilkan state selamat.
Permohonan kredit yang akan menghasilkan state tidak selamat secara berulang ditolak sampai permohonan tersebut dapat dipenuhi. Persetujuan atau penolakan permohonan kredit ditentukan dengan menggunakan algoritma Safety dan algoritma Resource Request.
Berdasarkan uraian di atas, penulis ingin merancang suatu perangkat lunak yang mampu untuk mensimulasikan proses kerja dari algoritma Banker dengan judul “Perangkat Lunak Simulasi Algoritma Banker”.
1.2 Perumusan Masalah
Uraian masalah dari judul tugas akhir ini adalah:
1. bagaimana menerapkan algoritma Banker yang terdiri dari algoritma Safety dan algoritma Resource Request untuk menentukan keputusan apakah sumber daya dipinjamkan atau tidak.
2. bagaimana membuat atau menggambar objek-objek simulasi dan merancang animasi pergerakan objek dalam sebuah perangkat lunak simulasi.
1.3 Tujuan dan Manfaat Penulisan
Tujuan penyusunan tugas akhir ini adalah untuk merancang suatu perangkat lunak simulasi algoritma Banker.
Manfaat dari penyusunan tugas akhir ini, yaitu :
1. Untuk membantu pemahaman mengenai algoritma Banker.
2. Perangkat lunak juga dapat digunakan sebagai fasilitas pendukung dalam proses belajar mengajar, terutama mengenai mata kuliah Sistem Operasi.
1.4 Pembatasan Masalah
Adapun batasan-batasan yang diberikan agar penyelesaian masalah tidak terlalu kompleks adalah sebagai berikut:
1. Input dari perangkat lunak adalah,
a. Jumlah tipe resource minimal 1 dan maksimal 5.
b. Available, menunjukkan resource-resource yang tersedia untuk setiap tipe, memiliki batasan nilai minimal 1 dan maksimal 100.
c. Maximum, mendefinisikan jumlah resource maksimum yang dialokasikan untuk setiap nasabah, memiliki batasan nilai minimal 1 dan maksimal 30.
2. Kondisi simulasi (kondisi awal, permohonan resources, besarnya resources dan pengembalian resources) dapat di-input oleh user atau dihasilkan secara acak (random) oleh komputer.
3. Jumlah tempat pelayanan nasabah (counter) dibatasi sebanyak 5 buah.
4. Perangkat lunak akan menampilkan laporan mengenai data-data nasabah yang melakukan transaksi.
5. Laporan tersebut dapat disimpan ke dalam bentuk text file.
6. Kecepatan animasi dapat diatur secara manual.
7. Waktu atau lamanya proses simulasi dapat di-input oleh user dan dibatasi maksimal 3 digit.
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 proses kerja dari algoritma Banker.
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 algoritma Banker dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0.
f. Menguji perangkat lunak dan memperbaiki kesalahan (error) yang muncul.
BAB II
LANDASAN TEORI
2.1 Sistem Operasi
2.1.1 Definisi Sistem Operasi
Secara umum, sebuah sistem komputer terbagi atas hardware, sistem operasi, program aplikasi, dan user. Hardware terdiri atas CPU, memori dan I/O device yang merupakan resources dasar. Program aplikasi berisi compiler, basis data, games dan program-program bisnis, yang merupakan suatu cara atau alat dimana resource-resource akan diakses untuk menyelesaikan masalah user.
Ada beberapa definisi yang dapat diberikan untuk sistem operasi, antara lain:
a. Software yang mengontrol hardware, hanya berupa program biasa (seperti beberapa file pada DOS).
b. Program yang menjadikan hardware lebih mudah untuk digunakan.
c. Kumpulan program yang mengatur kerja hardware (seperti: mengatur memori, printer dll).
d. Resource Manager atau resource allocator (seperti: mengatur memori, printer dll).
e. Sebagai program pengontrol (program yang digunakan untuk mengontrol program yang lainnya).
f. Sebagai Kernel, yaitu program yang terus-menerus running selama komputer dihidupkan.
g. Sebagai guardian, yaitu mengatur atau menjaga komputer dari berbagai kejahatan komputer. [3]
2.1.2 Sejarah Perkembangan Sistem Operasi
Sistem operasi telah berevolusi sejak komputer diciptakan. Perkembangan sistem komputer dibagi menjadi empat kurun waktu (generasi). Perkembangan sistem komputer melibatkan perkembangan perangkat keras dan sistem perangkat lunak. [1]
a. Generasi Pertama (1945 – 1955)
Merupakan awal pengembangan sistem komputasi elektronik, mengganti gagasan-gagasan mesin komputasi mekanis. Manusia memerlukan perangkat komputasi untuk memperluas kemampuannya.
Manusia mempunyai batasan komputasi yaitu : 1. Kecepatan penghitung manusia terbatas.
2. Manusia sangat mudah membuat kesalahan.
3. Komputer mekanis mempunyai dua penyebab kelemahan yaitu, 4. Kecepatan komputasi dibatasi inersia bagian-bagian yang bergerak.
5. Transmisi informasi alat-alat mekanis tidak praktis, susah dipakai serta tak handal.
Pada generasi ini belum ada sistem operasi, sistem komputer diberi instruksi yang harus dikerjakan secara langsung. [1]
b. Generasi Kedua (1955 – 1965)
Komputer masa ini adalah batch processsing system. Job dikumpulkan dalam satu rangkaian kemudian dieksekusi secara berurutan. Pada awal kurun ini, sistem komputer belum dilengkapi sistem operasi, tapi beberapa fungsi dasar sistem operasi telah ada, misalnya FMS (Fortran Monitoring System) dan IBSYS.
Keduanya merupakan bagian yang fungsinya merupakan komponen sistem operasi. Pada 1964, IBM mengeluarkan keluarga komputer System/360. Beragam kelas komputer S/360 dirancang agar kompatibel secara perangkat keras. S/360 menggunakan sistem operasi OS/360. System 360 berevolusi menjadi System 370.
[1]
c. Generasi Ketiga (1965 – 1980)
Perkembangan sistem operasi berlanjut, dikembangkan untuk melayani banyak pemakai interaktif sekaligus. Pemakai-pemakai interaktif berkomunikasi dengan komputer lewat terminal secara online (secara langsung dihubungkan) ke komputer. Sistem komputer menjadi :
1. Multiuser, yaitu digunakan banyak orang sekaligus.
2. Multiprogramming, yaitu melayani banyak program sekaligus.
Multiprogramming berarti komputer melayani banyak proses / job (program yang dijalankan) sekaligus pada satu waktu. Cara yang dilakukan untuk ini adalah mempartisi memori menjadi beberapa bagian, dengan satu bagian memori adalah satu job berbeda. Saat satu job menunggu operasi masukan / keluaran selesai, job lain dapat menggunakan pemroses. Teknik ini meningkatkan efisiensi pemroses. Teknik ini memerlukan perangkat keras khusus untuk mencegah satu job mengganggu job lain.
Karena pemakai-pemakai berinteraksi dengan komputer, komputer harus menanggapi permintaan-permintaan pemakai secara cepat, atau akan menyebabkan produktivitas pemakai menurun drastis. Untuk kebutuhan itu dikembangkan timesharing.
Timesharing merupakan varian dari multiprogramming, dimana tiap pemakai mempunyai satu terminal on-line dengan pemroses hanya memberi layanan pada pemakai yang aktif secara bergantian secara cepat. Pemakai-pemakai akan merasa dilayani terus-menerus, padahal sebenarnya digilir per satuan waktu yang singkat. Karena sumber daya digunakan bersama sering menimbulkan bottleneck, maka dikembangkan spooling.
Spooling membuat peripheral seolah-olah dapat digunakan bersama-sama sekaligus, dapat diakses secara simultan, yaitu dengan cara menyediakan beberapa partisi memori. Saat terdapat permintaan layanan peripheral, langsung diterima dan data disimpan lebih dulu di memori yang disediakan (berupa antrian), kemudian dijadwalkan agar secara nyata dilayani oleh peripheral.
Usaha pengembangan timesharing yang penting adalah sistem CTSS (di MIT), sistem TSS (oleh IBM), Multics, CP/CMS. Setelah itu muncul sistem operasi yang lebih diterima secara umum yaitu UNIX. [1]
d. Generasi Keempat (1980 – 199x)
Sistem operasi tidak lagi hanya untuk satu mode, tapi banyak mode, yaitu mendukung batch processsing, timesharing dan (soft) real-time applications. [1]
Generasi ini ditandai dengan berkembang dan meningkatnya kemampuan komputer desktop (komputer pribadi) dan teknologi jaringan. Jaringan TCP/IP telah mulai digunakan secara luas oleh kalangan militer, peneliti dan perguruan tinggi.
1. Network Operating System
Sistem operasi diperuntukkan bagi jaringan komputer dimana pemakai menyadari keberadaan komputer-komputer yang terhubung. Pada generasi ini juga telah dituntut kenyamanan dalam mengoperasikan sistem komputer.
Komputer yang makin ampuh telah sanggup untuk memberi antarmuka grafis yang nyaman. Komputer pribadi telah dinyamankan dengan GUI (Graphical User Interface) yaitu antarmuka komputer yang berbasiskan grafis yang interaktif dan menarik. GUI ini dimulai dengan X Windows hasil penelitian di MIT, kemudian Macintosh, Sun View, kemudian disusul Microsoft Windows dan sebagainya.
Pada tahun 1990 dimulasi era komputasi tersebar (distributed computing) dimana komputasi-komputasi tidak lagi terpusat (di satu titik), tapi dipecah menjadi subkomputasi-subkomputasi yang dieksekusi di banyak komputer sehingga tercapai kinerja lebih baik. Aplikasi-aplikasi saat ini telah menghendaki adanya kemampuan jaringan.
2. Distributed Operating System
Sistem operasi diperuntukkan bagi jaringan komputer, dimana pemakai tidak perlu menyadari keberadaan komputer-komputer yang terhubung.
Pengalokasian kerja sudah secara otomatis dilaksanakan pada sistem operasi.
Pemakai memandang jaringan komputer sebagai satu uniprosesor besar, walau sebenarnya terdiri dari banyak prosesor (komputer) yang tersebar. [1]
2.1.3 Fungsi dan Sasaran Sistem Operasi
Sistem operasi mempunyai dua fungsi utama, yaitu :
1. Pengelola seluruh sumber daya sistem komputer (sebagai resource manager).
Mengelola seluruh sumber daya yang terdapat pada sistem komputer.
2. Sistem operasi sebagai penyedia layanan (sebagai extended / virtual machine).
Sistem operasi menyediakan sekumpulan layanan (disebut system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan atau pemanfaatan sumber daya sistem komputer.
Sistem operasi mempunyai fungsi-fungsi minor yang merupakan penjabaran dua fungsi utama. Fungsi-fungsi minor sistem operasi antara lain,
1. Mengimplementasikan antarmuka untuk pemakai.
2. Memungkinkan pemakaian bersama perangkat keras di antara banyak pemakai.
3. Memungkinkan pemakai-pemakai data secara bersama.
4. Mencegah pemakai-pemakai saling mengganggu satu dengan lainnya 5. Menjadwalkan pemakaian sumber daya.
6. Memberi fasilitas masukan / keluaran.
7. Memulihkan kesalahan-kesalahan.
8. Menghitung penggunaan sumber daya.
9. Mengorganisasi data agar pengamanan dan cepat diakses.
10. Menangani komunikasi jaringan.
Untuk memenuhi semua fungsi, sistem operasi mempunyai subsistem antara lain, 1. Manajemen proses.
2. Manajemen memori.
3. Manajemen berkas (sistem manajemen berkas).
4. Manajemen perangkat masukan / keluaran.
5. Pengamanan sistem.
6. Sistem komunikasi.
7. dan sebagainya.
Menurut William Stallings, sistem operasi mempunyai tiga sasaran, yaitu:
1. Kenyamanan.
Sistem operasi harus membuat penggunaan komputer menjadi lebih nyaman.
2. Efisiensi.
Sistem operasi menjadikan penggunaan sumber daya sistem komputer secara efisien.
3. Mampu Berevolusi.
Sistem operasi harus dibangun sehingga memungkinkan dan memudahkan pengembangan, pengujian dan pengajuan fungsi-fungsi yang baru tanpa menganggu layanan yang dijalankan sistem komputer. [1]
2.1.4 Sumber Daya Sistem Komputer
Sumber daya sistem komputer adalah semua komponen di sistem komputer yang dapat memberi manfaat. Sumber daya ini terdiri dari: [1]
1. Sumber daya fisik.
2. Sumber daya abstrak.
2.1.4.1 Sumber Daya Fisik
Sumber daya fisik misalnya : 1. Keyboard, bar-code reader.
2. Mouse, joystrick, light-pen, track-ball, touch-screen, dan perangkat-perangkat penunjuk (pointing devices) lain.
3. Floopy disk drive, harddisk, tape drive, optical disk, CD-ROM drive dan perangkat-perangkat penyimpan data sekunder lain.
4. Layar monitor baik CRT, LCD dan perangkat-perangkat display lain.
5. Printer.
6. Modem, ethernet card, PCMCIA dan alat-alat untuk komunikasi lain.
7. Memori akses acak (RAM = Random Access Memory), chace memory, register, dan memori-memori volatile lain.
8. Perangkat-perangkat multimedia seperti kamera, sound card, radio dan sebagainya.
9. Perangkat-perangkat grafis seperti digitizer, scanner, plotter dan sebagainya.
10. Perangkat-perangkat pengendalian proses yang terhubung ke komputer yaitu sensor-sensor dan aktuator-aktuator.
11. dan sebagainya. [1]
2.1.4.1 Sumber Daya Abstrak
Sumber daya abstrak terdiri dari : a. Data.
1. Semaphore untuk pengendalian sinkronisasi proses-proses.
2. PCB (Process control block) untuk mencatat dan mengendalikan proses.
3. Tabel segmen, tabel page, i-node, FAT (File Allocation Table) adalah tabel untuk mencatat penggunaan sektor di disk. Untuk menjaga kemungkinan kerusakan maka dibuat beberapa salinan FAT. Rusaknya FAT juga mengakibatkan data-data di disk tidak dapat diakses.
4. Berkas (file) untuk penyimpanan data atau program.
b. Program.
Program berupa kumpulan instruksi yang dapat dijalankan sistem komputer untuk melakukan suatu pekerjaan. Program dapat berupa utilitas atau aplikasi untuk mencapai tujuan komputasi (pengolahan) tertentu.
Pada dasarnya semua yang terdapat atau terhubung ke sistem komputer adalah sumber daya. Seluruh sumber daya harus dapat dimanfaatkan secara efektif dan efisien. Pemanfaatan harus benar dan mempunyai efisiensi setinggi mungkin, merupakan sasaran yang harus dicapai sistem operasi. [1]
2.1.5 Sistem Komputer dalam Beragam Sudut Pandang
Pandangan ke sistem komputer dapat dikelompokkan menjadi tiga yaitu : 1. Pemakai terdiri dari pemakai awam (end user) dan administrator sistem.
Pemakai awam menggunakan aplikasi tertentu, tidak berkepentingan dengan arsitektur komputer. Pemakai memandang sistem komputer dalam antarmuka yang disediakan aplikasi. Aplikasi dikembangkan pemrogram aplikasi.
Administrator bertugas agar sistem berfungsi secara benar dan optimal. [1]
2. Pemrogram.
Bila pemrogram aplikasi mengembangkan aplikasi dengan menggunakan kumpulan instruksi mesin secara langsung, maka pemrogram bertanggung jawab sepenuhnya untuk mengendalikan perangkat keras komputer. Tugas ini amat kompleks. Untuk mempermudah pemrogram, sekumpulan fasilitas disediakan sistem operasi. Pemrogram menggunakan fasilitas ini dalam mengembangkan aplikasi, mengelola berkas, dan mengendalikan masukan / keluaran, tak perlu menulis atau membuat sendiri.
Sistem operasi menyembunyikan rincian operasi perangkat keras dan menyediakan antarmuka yang nyaman untuk menggunakan perangkat. Sistem operasi bertindak sebagai mediator, mempermudah pemrogram. Sistem operasi juga memberi cara program aplikasi mengakses dan menggunakan fasilitas-fasilitas dan layanan-layanan sistem komputer. [1]
Pandangan terhadap sistem komputer sebagai berlapis atau hirarki seperti terlihat pada gambar 2.1 di bawah ini :
Aplikasi Utilitas-utilitas Sistem operasi
Perangkat Keras Sistem Komputer
Pemakai awam
Pemrogram
Perancang sistem operasi
Gambar 2.1 Hirarki Pandangan terhadap Sistem Komputer 3. Perancang sistem operasi.
Perancang sistem operasi harus membuat sistem operasi yang dapat mempermudah dan menyamnakan terutama untuk pemrogram aplikasi membuat aplikasi-aplikasi. [1]
2.2 Proses
Proses adalah entitas dinamis. Proses berisi instruksi dan data, program counter dan semua register pemroses, dan stack berisi data sementara seperti parameter rutin, alamat pengiriman dan variabel-variabel lokal. Istilah lain untuk proses adalah task. [1]
2.2.1 Deskripsi Proses
Proses merupakan konsep pokok di sistem operasi. Konsep ini pertama kali dipakai di sistem operasi Multics tahun 60-an. Tema utama perancangan sistem operasi semuanya berkaitan dengan manajemen proses.
Terdapat beragam definisi proses. Salah satunya adalah 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 di sistem dan mengalokasikan sumber daya ke proses-proses sesuai kebijaksanaan untuk memenuhi sasaran sistem. Abstraksi proses merupakan hal mendasar dalam manajemen program-program kongruen.
Beberapa istilah berkaitan dengan proses, antara lain:
1. Multiprogramming (multitasking).
2. Multiprocessing.
3. Distributed processing / computing. [1]
2.2.1.1 Multiprogramming (Multitasking)
Multiprogramming adalah manajemen banyak proses pada satu pemroses.
Multiprocessing telah digunakan untuk suatu konsep, yaitu komputer dengan banyak pemroses di satu sistem komputer dengan masing-masing pemroses melakukan pemrosesan secara independen.
Saat ini, kebanyakan komputer pribadi, workstation adalah sistem pemroses tunggal yang menjalankan sistem operasi multiprogramming (multitasking) seperti MS-Windows 3.0, MS-Windows NT, OS/2 dan Macintosh System 7. Banyak proses dijalankan bersamaan, masing-masing proses mendapat bagian memori dan kendali tersendiri. Sistem operasi mengalih-alihkan pemroses di antara proses-proses tersebut.
Program-program yang dijalankan sebenarnya bersifat:
1. Saling tak bergantung (independen).
Proses terpisah satu dari lainnya dan tidak saling berpengaruh.
2. Satu program pada satu saat (one program at any instant).
Pada satu waktu sesungguhnya hanya satu proses yang dilayani pemroses menggunakan interleave bukan overlap di antara program-program.
Dilakukan interleave (saling melanjutkan/bersambung). Dalam pandangan
pemakai, proses-proses seolah beroperasi secara bersamaan karena pengalihan proses-proses dilakukan secara cepat. Pemroses (level pemrosesan) mengeksekusi satu proses tiap saat dan secara cepat beralih ke proses-proses lain secara bergiliran. Karena pengalihan dilakukan dengan cepat, maka tidak disadari pemakai sehingga menimbulkan efek paralel semu (pseudoparallelism). [1]
2.2.1.2 Multiprocessing
Multiprocessing adalah manajemen banyak proses dalam komputer multiprocessor (terdapat banyak pemroses di dalamnya). Dulunya sistem ini hanya terdapat di sistem besar, mainframe dan minikomputer. Saat ini komputer workstation telah dapat dilengkapi multiprocessor. Sistem operasi Microsoft Windows NT, UNIX, Linux menyediakan dukungan multiprocessing. [1]
2.2.1.3 Distributed Processing
Distributed Processing adalah manajemen banyak proses yang dieksekusi di banyak sistem komputer yang tersebar (terdistribusi). Trend masa datang adalah menuju komputasi tersebar (distributed computing). Banyak riset dan pengembangan sistem operasi tersebar di antaranya AMOEBA, MACH, dan sebagainya. [1]
2.2.2 Diagram State Proses
2.2.2.1 Diagram State Dasar (Tiga Keadaan Dasar)
Proses melewati serangkaian state diskrit. Beragam kejadian dapat menyebabkan perubahan state proses. Tabel 2.1 mendaftarkan state-state dasar yang dialami proses. Proses dapat berada di salah satu dari tiga state dasar. [1]
Tabel 2.1 Tiga State Dasar Proses
Status Deskripsi
Running Pemroses sedang mengeksekusi instruksi proses itu.
Ready Proses siap (ready) dieksekusi, tapi pemroses tidak tersedia untuk eksekusi proses ini.
Blocked Proses menunggu kejadian untuk melengkapi tugasnya.
Contoh:
Proses menunggu:
- Selesainya operasi perangkat masukan/keluaran.
- Tersedianya memori.
- Tibanya pesan jawaban.
- dsb.
Hubungan ketiga state dasar digambarkan dengan diagram state. [1]
READY RUNNING
BLOCKED Eve
oc nt
curs Event
wait
Dispatch Completion
Submit
Timeout
Gambar 2.2 Diagram State Tiga State Dasar Proses
Gambar 2.2 menunjukkan transisi di antara state-state selama siklus hidup proses.
1. Proses yang baru diciptakan akan segera mempunyai state ready.
2. Proses ber-state running menjadi blocked karena sumber daya yang diminta belum tersedia atau meminta layanan perangkat masukan/keluaran sehingga menunggu kejadian muncul. Proses menunggu kejadian alokasi sumber daya atau selesainya layanan perangkat masukan/keluaran (event wait).
3. Proses ber-state running menjadi ready karena penjadwal memutuskan eksekusi proses lain karena jatah waktu untuk proses tersebut telah habis (time-out).
4. Proses ber-state blocked menjadi ready saat sumber daya yang diminta/diperlukan telah tersedia atau layanan perangkat masukan/keluaran selesai (event occurs).
5. Proses ber-state ready menjadi running karena penjadwal memutuskan penggunaan pemroses untuk proses itu karena proses yang saat itu running berubah state-nya (menjadi ready atau blocked) atau telah menyelesaikan sehingga disingkirkan dari sistem. Proses menjadi mendapatkan jatah pemroses.
2.2.2.2 Diagram State Lanjut (Lima Keadaan)
Penundaan (suspension) adalah operasi penting dan telah diterapkan dengan beragam cara. Penundaan biasanya berlangsung singkat. Penundaan sering dilakukan sistem untuk memindahkan proses-proses tertentu guna mereduksi beban sistem selama beban puncak.
Proses yang ditunda (suspended process) tidak berlanjut sampai proses lain me-resume. Untuk jangka panjang, sumber daya-sumber daya proses
dibebaskan (dilucuti). Keputusan membebaskan sumber daya-sumber daya bergantung sifat masing-masing sumber daya. Memori utama seharusnya segera dibebaskan begitu proses tertunda agar dapat dimanfaatkan proses lain. Resuming (pengaktifan kembali) proses yaitu menjalankan proses dari titik (instruksi) dimana proses ditunda.
Operasi suspend dan resume penting, sebab:
1. Jika sistem berfungsi secara buruk dan mungkin gagal, maka proses-proses dapat di-suspend agar di-resume setelah masalah diselesaikan.
Contoh:
Pada proses pencetakan, bila tiba-tiba kertas habis maka proses di-suspend.
Setelah kertas dimasukkan kembali, proses pun dapat di-resume.
2. Pemakai yang ragu/kawatir mengenai hasil proses dapat men-suspend proses [bukan membuang (abort) proses]. Saat pemakai yakin proses akan berfungsi secara benar maka dapat me-resume (melanjutkan kembali di instruksi saat di- suspend) proses yang di-suspend.
3. Sebagai tanggapan terhadap fluktuasi jangka pendek beban sistem, beberapa proses dapat di-suspend dan di-resume saat beban kembali ke tingkat normal.
Gambar 2.3 menunjukkan modifikasi diagaram state dengan memasukkan kejadian suspend dan resume. Dua state baru dimasukkan sehingga membentuk diagram 5 state, yaitu:
1. Suspendedready.
2. Suspendedblocked.
Penundaan dapat diinisialisasi oleh proses itu sendiri atau proses lain.
1. Pada sistem monoprocessor, proses running dapat men-suspend dirinya sendiri karena tak ada proses lain yang juga running yang dapat memerintahkan suspend.
2. Pada sistem multiprocessor, proses running dapat di-suspend proses running lain pada pemroses berbeda. Proses ready hanya dapat di-suspend oleh proses lain.
Pada proses blocked, terdapat transisi menjadi suspendedblocked. Pilihan ini dirasa aneh. Apakah tidak cukup menunggu selesainya operasi masukan/keluaran atau kejadian yang membuat proses ready atau suspendedready? Bukankah state blocked, readyblocked, suspendedblocked sama-sama tidak mendapat jatah waktu pemroses? Kenapa dibedakan? Alasannya, karena penyelesaian operasi masukan/keluaran bagi proses blocked mungkin tak pernah terjadi atau dalam waktu tak terdefinisikan sehingga lebih baik di-suspend agar sumber daya-sumber daya yang dialokasikan untuk proses tersebut dapat digunakan proses-proses lain.
Untuk kondisi ini, lebih baik sumber daya-sumber daya yang dipegang proses yang berkondisi seperti ini dipakai proses-proses lain.
Proses blocked di-suspend sistem atau secara manual menjadi suspendedblocked. Bila akhirnya operasi masukan/keluaran berakhir maka segera proses suspendedblocked mengalami transisi. Karena resume dan suspend mempunyai prioritas tinggi maka transisi segera dilakukan. Suspend and resume dapat digunakan untuk menyeimbangkan beban sistem saat mengalami lonjakan di atas normal. [1]
READY RUNNING
BLOCKED Eve
oc nt
curs Event
wait
Dispatch Completion
Submit
Timeout
Suspended Ready
Suspended Blocked State-state
di-suspend.
State-state aktif.
Resume Suspend
Resume Suspend
I/O completion, atau event completion.
Gambar 2.3 Diagram Lima State
2.2.3 Tabel-Tabel untuk Proses
Tiap proses mempunyai state yang perlu diperhatikan sistem operasi.
Sistem operasi mencatat state proses dengan beragam tabel atau senarai, antara lain:
1. Tabel informasi manajemen memori,
Tabel informasi manajemen memori untuk menjaga keutuhan memori utama dan memori sekunder. Tabel ini memuat informasi berikut:
a. Alokasi memori utama yang dipakai proses.
b. Alokasi memori sekunder yang dipakai proses (bila menggunakan manajemen memori dengan swapping).
c. Atribut segmen memori utama dan sekunder.
d. Informasi-informasi lain yang digunakan untuk pengelolaan memori.
2. Tabel informasi manajemen masukan/keluaran.
Tabel ini untuk mengelola perangkat masukan/keluaran. Pada satu saat, perangkat masukan/keluaran digunakan proses tertentu, perlu dijaga agar proses lain tidak memakainya. Sistem operasi perlu mengetahui status operasi masukan/keluaran dan lokasi memori utama yang digunakan untuk transfer data.
a. Tabel informasi sistem file.
Tabel ini berisi informasi mengenai ekstensi file, lokasi pada memori sekunder, status saat itu dan menyimpan atribut-atribut file lainnya.
b. Tabel proses.
Tabel proses mengelola informasi proses di sistem operasi, lokasinya di memori.
Keempat tabel saling berhubungan. Proses ditempatkan di memori utama di lokasi tertentu, proses mempunyai satu ruang alamat tersendiri. Ruang alamat yang digunakan proses disebut citra proses (process image) karena selain seluruh kode biner program, proses ditambahi atribut-atribut lain berkaitan penempatannya pada suatu lokasi memori dan status eksekusi pada saat itu. [1]
2.2.4 Tahap-Tahap Penciptaan Proses
Penciptaan proses dapat disebabkan beragam sebab. Penciptaan proses ini meliputi beberapa tahap. Tahap-tahap penciptaan proses adalah sebagai berikut:
1. Beri satu identifier unik ke proses baru. Isian baru ditambahkan ke tabel proses utama yang berisi satu isian per proses.
2. Alokasikan ruang untuk proses.
3. PCB (Program Control Block) harus diinisialisasi.
4. Kaitan-kaitan antar tabel dan senarai yang cocok dibuat.
5. Bila diperlukan struktur data lain maka segera buat struktur data itu. [1]
2.3 Deadlock
Proses disebut deadlock jika proses menunggu satu kejadian tertentu yang tak akan pernah terjadi. Sekumpulan proses berkondisi deadlock bila setiap proses yang ada di kumpulan itu menunggu suatu kejadian yang hanya dapat dilakukan proses lain yang juga berada di kumpulan itu. Proses menunggu kejadian yang tidak akan pernah terjadi. Deadlock terjadi ketika proses-proses mengakses secara ekslusif sumber daya. Semua deadlock yang terjadi melibatkan persaingan memperoleh sumber daya ekslusif oleh dua proses atau lebih.
Proses dikatakan sebagai mengalami starvation bila proses-proses itu menunggu alokasi sumber daya sampai tak berhingga, sementara proses-proses lain dapat memperoleh alokasi sumber daya. Starvation disebabkan bias pada kebijaksanaan atau strategi alokasi sumber daya. Kondisi ini harus dihindari karena tidak adil tetapi dikehendaki penghindaran dilakukan seefisien mungkin.
[1]
2.3.1 Model Deadlock
Urutan kejadian pengoperasian perangkat masukan/keluaran adalah:
1. Meminta (request), yaitu meminta pelayanan perangkat masukan / keluaran.
2. Memakai(use), yaitu memakai perangkat masukan/keluaran.
3. Melepaskan(release), yaitu melepaskan pemakaian perangkat masukan / keluaran.
Misalnya, terdapat dua proses P0 dan P1 dan dua sumber daya R0 dan R1.
P
0R
0P
1R
1(a) (b)
Gambar 2.4 Graph meminta sumber daya dan alokasi sumber daya
Gambar 2.4 (a) P0 meminta sumber daya R0, ditandai busur (edge) berarah dari proses P0 ke sumber daya R0. Gambar 2.15 (b) sumber daya R1 dialokasikan ke P1, ditandai busur berarah dari sumber daya R1 ke proses P1. Kemudian terjadi skenario berikut,
- P0 sambil masih menggenggam R0, meminta R1. - P1 sambil masih menggenggam R1, meminta R0.
Kejadian ini mengakibatkan deadlock karena sama-sama akan saling menunggu.
Deadlock tidak hanya terjadi pada dua proses dan dua sumber daya, deadlock dpat terjadi dengan melibatkan lebih dari dua proses dan dua sumber daya. [1]
P0
R0
P1
R1
Gambar 2.5 Graph deadlock dua proses dan dua sumber daya
2.3.2 Syarat-Syarat Terjadinya Deadlock
Coffman, menyatakan empat syarat terjadinya deadlock, yaitu:
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 dan menunggu sumber daya-sumber daya baru. Kondisi hold and wait condition dapat dilihat pada gambar 2.6. [11]
P1 P2
R2
Held by Held by
Wait
Held by
R1
Wait
Held by
R3
P3
Gambar 2.6 Skema hold and wait condition 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 harus secara eksplisit dilepaskan dari proses yang mengenggamnya.
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.
[1]
2.3.3 Pencegahan Deadlock
Havender, J.W dalam bukunya berjudul ‘Avoiding Deadlock in Multitasking Systems’ mengemukakan jika sembarang syarat dari keempat syarat tak terpenuhi maka tidak akan terjadi deadlock. Havender menyarankan starategi- strategi berikut untuk meniadakan syarat-syarat tersebut, yaitu:
1. Tiap proses harus meminta sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.
2. Jika proses telah sedang memegang sumber daya tertentu, untuk permintaan berikutnya proses harus melepas dulu sumber daya yang dipegangnya. Jika diperlukan, proses meminta kembali sekaligus dengan sumber daya yang baru.
3. Beri pengurutan linear terhadap tipe-tipe sumber daya pada semua proses, yaitu jika proses telah dialokasikan suatu tipe sumber daya, proses hanya boleh meminta sumber daya-sumber daya tipe pada urutan yang berikutnya.
[1]
2.3.3.1 Meniadakan Mutual Exclusion
Deadlock disebabkan terdapatnya pengaksesan ekslusif sumber daya. Jika tidak ada sumber daya eksklusif ke satu proses tunggal, maka akan tak pernah dijumpai deadlock. Cara yang dapat ditempuh untuk mengakali pengaksesan
eksklusif adalah spooling perangkat-perangkat yang harus didedikasikan ke suatu proses. Pengaksesan sumber daya seolah-olah tidak eksklusif walau sebenarya tetap eksklusif, hanya sekarang diantrikan di disk. Job-job di antrian spooler dilayani satu per satu. Terdapat masalah terhadap teknik ini adalah:
- Tidak setiap sumber daya eksklusif dapat di-spooling, misalnya tabel proses.
- Kompetisi terhadap ruang disk untuk spooling dapat menuntun ke deadlock. Abstraksi ini sebenarnya kembali terjadi kondisi yang mengharuskan mutual exclusion hanya di level lebih bawah menjadi mutual exclusion untuk suatu lokasi memori bukan lagi satu perangkat.
Mutual Exclusion benar-benar tidak dapat dihindari. [1]
2.3.3.2 Meniadakan Syarat Hold and Wait
Metode untuk meniadakan syarat hold and wait dapat dilakukan dengan:
1. Mengalokasikan semua sumber daya atau tidak sama sekali.
Proses hanya dilayani permintaannya bila semua sumber daya yang diperlukan tersedia. Teknik ini berbasis pada semua atau tidak sama sekali.
a. Jika semua sumber daya tersedia, proses dialokasikan yang diperlukan dan berjalan sampai selesai.
b. Jika tidak tersedia sedikitnya satu sumber daya maka proses harus menunggu sampai semua sumber daya yang dperlukan tersedia untuk dialokasikan kepadanya.
Masalah yang dihadapi dalam teknik ini adalah:
a. Sukar mengetahui lebih dulu semua sumber daya yang diperlukan suatu proses karena di awal proses tidak diketahui berapa sumber daya yang akan diperlukan.
b. Cara ini dapat menjadi tidak efisien.
2. Hold and Release.
Genggam dan lepaskan (hold and release), yaitu setiap kali terjadi permintaan suatu sumber daya maka proses harus melepas sumber daya lain yang telah digunakan. Jadi pada satu saat, hanya ada atu sumber daya yang dialokasikan untuk proses. Masalah yang dihadapi adalah teknik ini tidak mungkin sebab terdapat proses yang mensyaratkan harus memegang beberapa sumber daya sekaligus. Misalnya, menggambar pada plotter memerlukan plotter serta disk untuk menyimpan data gambar yang di-plot. [1]
2.3.3.3 Meniadakan Kondisi Non-Preemption
Peniadaan non-preemption mencegah proses-proses lain harus menunggu.
Seluruh proses menjadi preemption, sehingga tidak ada tunggu-menunggu.
Masalah: Tidak mungkin meniadakan non-preemptive.
Misalnya: Saat proses A menulis ke printer, tiba-tiba dihentikan proses B yang juga akan menulis ke printer yang sama. Bila dimungkinkan kondisi preemption ini maka kedua proses akan mencetak secara tak benar. [1]
2.3.3.4 Meniadakan Kondisi Menunggu Sirkuler
Kondisi ini dapat ditiadakan dengan bermacam cara, antara lain:
1. Proses hanya dibolehkan menggenggam satu sumber daya pada satu saat.
Jika memerlukan sumber daya kedua, proses harus melepas sumber daya pertama (sama dengan hold and release).
2. Penomoran global semua sumber daya.
Proses dapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Cara ini tidak akan menimbulkan siklus.
Masalahnya, tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak. [1]
2.3.4 Penghindaran Deadlock
Gagasan dasar penghindaran deadlock adalah hanya memberi akses ke permintaan sumber daya yang tidak mungkin menimbulkan deadlock. Strategi ini biasanya diimplementasikan dengan pengalokasi sumber daya memeriksa dampak-dampak pemberian akses ke suatu permintaan.
1. Jika pemberian akses sumber daya tidak mungkin menuju deadlock, sumber daya diberikan ke peminta.
2. Jika tidak aman (memungkinkan terjadinya deadlock), proses yang meminta di-suspend sampai suatu waktu permintaannya aman diberikan. Kondisi ini biasanya terjadi setelah satu sumber daya atau lebih yang semula dipegang oleh proses-proses aktif lain dilepaskan.
Agar dapat mengevaluasi safe-nya state sistem individu, penghindaran deadlock mengharuskan semua proses menyatakan jumlah kebutuhan sumber daya maksimum sebelum eksekusi. Begitu eksekusi dimulai, tiap proses meminta
sumber daya saat diperlukan sampai batas maksimum yang dinyatakan di awal.
Proses-proses yang menyatakan kebutuhan sumber daya melebihi kapasitas total sistem tidak dapat dieksekusi.
Pengalokasi sumber daya mencatat jumlah sumber daya teralokasi dan jumlah sumber daya masing-masing tipe, serta mencatat jumlah sumber daya tersisa yang diklaim tetapi belum diminta proses. Proses yang meminta sumber daya yang tak tersedia harus menunggu sementara. Jika sumber daya yang diminta tersedia, pengalokasi sumber daya memeriksa apakah pmberian dapat menuntun ke deadlock dengan memeriksa apakah proses-proses yang telah aktif dapat secara selamat selesai. Jika dapat berakhir secara selamat, state sistem setelah alokasi adalah selamat (safe), maka sumber daya dialokasikan ke proses yang meminta.
Jika pemberian sumber daya mempunyai potensi menuntun ke deadlock, maka pengalokasi sumber daya men-suspend proses yang meminta sampai sumber daya dapat diberikan dengan selamat. [1]
2.3.4.1 State Selamat dan State Tak Selamat
State dinyatakan sebagai state selamat (safe state) jika tidak deadlock dan terdapat cara untuk memenuhi semua permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses-proses secara hati-hati mengikuti suatu urutan tertentu. [3]
State dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua permintaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan. [3]
2.3.4.2 Algoritma Banker
Algoritma Banker dikemukakan oleh Edsger W.Dijkstra dan merupakan sebuah strategi untuk menghindari deadlock. Algoritma ini disebut algoritma Banker karena memodelkan banker di kota kecil yang berurusan dengan sekumpulan nasabah yang memohon kredit.
Algoritma ini mencegah terjadinya deadlock dengan memutuskan apakah menyetujui atau menunda permintaan sumber daya oleh proses. Ketika sebuah proses meminta sumber daya, maka permintaan tersebut harus diperiksa oleh bankir. Analogi dari algoritma Banker dengan sistem operasi adalah
1. Nasabah merupakan proses-proses yang sedang berjalan.
2. Uang (dana yang dimiliki bank) merupakan sumber daya.
3. Bankir merupakan sistem operasi.
Dalam algoritma Banker, setiap nasabah memiliki batas kredit dan apabila seorang nasabah telah mencapai batas kredit pinjaman maksimum, maka diasumsikan nasabah tersebut telah menyelesaikan semua permasalahan bisnisnya dan dapat mengembalikan semua pinjamannya kepada bank. Tetapi ada kalanya, seorang nasabah dapat menyelesaikan semua permasalahan bisnisnya dan mengembalikan semua pinjamannya kepada bank sebelum mencapai batas kredit maksimum.
Bankir adalah seorang peminjam yang konservatif. Ketika sebuah proses meminta peminjaman sumber daya, bankir melihat buku bank dengan cermat dan
berusaha untuk memutuskan apakah peminjaman tersebut dapat menyebabkan keadaan deadlock (setelah peminjaman tersebut disetujui).
Keputusan bankir dibuat dengan berpura-pura menyetujui peminjaman sumber daya dan kemudian menganalisis keadaan sistem. Setelah peminjaman, akan terdapat sejumlah sumber daya tersisa di dalam sistem. Kita asumsikan masing-masing proses meminta batas maksimum sumber daya. Jika bankir memiliki cukup sumber daya yang tersisa untuk memastikan bahwa semua proses dapat berakhir dengan aman. Ini menunjukkan keadaan berada dalam safe state dan peminjaman disetujui.
Tetapi apabila setelah peminjaman, bankir tidak dapat menjamin semua proses dapat berakhir dengan semestinya, maka ini disebut unsafe state. Dalam kasus ini, peminjaman akan ditunda atau diblok hingga peminjaman tidak menyebabkan unsafe state pada sistem.
Pada algoritma Banker ini, kondisi mutual exclusion, hold-and-wait, dan no-preemption diijinkan dan proses-proses melakukan klaim penggunaan sumber daya –sumber daya yang diperlukan. Proses-proses diizinkan mengenggam sumber daya-sumber daya sambil meminta dan menunggu sumber daya-sumber daya lain serta sumber daya-sumber daya itu tidak diijinkan untuk di-preempt proses lain.
Proses-proses dapat meminta satu sumber daya pada satu waktu. Sistem operasi dapat memberikan akses sumber daya atau menolak permintaan. Jika ditolak, proses masih mengenggam sumber daya yang telah dialokasikan
untuknya dan menunggu selama waktu tak berhingga sampai permintaannya dapat diberikan.
Sistem hanya memberikan permintaan yang menghasilkan state selamat.
Permintaan proses yang akan menghasilkan state tak selamat secara berulang ditolak sampai permintaan dapat dipenuhi. Tentunya karena sistem selalu memelihara agar dalam safe state, cepat atau lambat (yaitu dalam waktu yang berhingga) semua permintaan dapat dipenuhi dan semua proses dapat berakhir. [1]
2.3.4.2.1 Safety Algorithm
Algoritma ini adalah algoritma yang dipakai untuk menentukan apakah sebuah sistem berada dalam keadaan safe state atau unsafe state.
Algoritma ini dipakai oleh bankir untuk memeriksa keadaan sistem setelah peminjaman, apakah berada dalam kondisi safe atau tidak. Apabila berada dalam kondisi safe, maka ini berarti sumber daya yang tersisa dapat menjamin pemenuhan pinjaman oleh semua proses yang masih aktif, semua proses akan berakhir dengan aman dan tidak akan menyebabkan deadlock. Apabila kondisi unsafe, maka ini berarti terdapat kemungkinan untuk terjadinya deadlock. [8]
Safety algorithm adalah sebagai berikut:
1. STEP 1: initialize a. Work := Available;
b. for i = 1,2,...,n
set Finish[i] = false 2. STEP 2: find i such that both
a. Finish[i] is false b. Need_i <= Work
c. if no such i, goto STEP 4
3. STEP 3: Work := Work + Allocation_i a. Finish[i] = true
b. goto STEP 2
4. STEP 4: if Finish[i] = true for all i, system is in safe state
2.3.4.2.2 Resource Request Algorithm
Algoritma ini dipakai bankir untuk menentukan apakah peminjaman sumber daya disetujui atau tidak. Algoritma ini dieksekusi oleh sistem setiap terjadinya permintaan peminjaman atas sumber daya oleh proses.
Implementasi algoritma ini adalah dengan berpura-pura memberikan pinjaman kepada proses dan menganalisis keadaan setelah pinjaman (sumber daya dan proses yang tersisa) dengan Safety Algorithm. Apabila menghasilkan keadaan safe, maka pinjaman disetujui. Bila tidak, maka pinjaman diblokir atau ditunda.
[8]
Resource Request Algorithm adalah sebagai berikut:
0. STEP 0: P_i makes Request_i for resources 1. STEP 1: if Request_i <= Need_i
goto STEP 2
else ERROR
2. STEP 2: if Request_i <= Available goto STEP 3 else suspend P_i
3. STEP 3: pretend to allocate requested resources a. Available := Available - Request_i
b. Allocation_i := Allocation_i + Request_i;
c. Need_i := Need_i - Request_i 4. STEP 4: if pretend state is SAFE
then do a real allocation and P_i proceeds Else
restore the original state and suspend P_i
2.3.5 Pemulihan Deadlock
Beberapa cara yang dapat dilakukan untuk memulihkan keadaan deadlock adalah:
1. Mengakhiri (terminate) semua proses yang deadlock.
2. Mem-backup semua proses yang deadlock dan me-restart semua proses tersebut.
3. Mengakhiri (terminate) proses-proses yang deadlock secara berturut-turut hingga tidak ada deadlock.
4. Mengakhiri (terminate) pengalokasian resource-resource secara berturut-turut hingga tidak ada deadlock.
Proses-proses yang diakhiri dipilih dengan kriteria-kriteria sebagai berikut:
1. Memiliki waktu proses (yang telah berjalan) kecil.
2. Jumlah keluaran sedikit.
3. Mempunyai estimasi sisa waktu eksekusi terbesar.
4. Jumlah total sumber daya terkecil yang telah dialokasikan.
5. Memiliki prioritas terkecil. [3]
2.4 Penjadwalan Proses
Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer. Penjadwalan bertugas untuk memutuskan :
1. Proses yang harus berjalan.
2. Kapan dan selama berapa lama proses itu berjalan.
Kinerja untuk mengukur dan optimasi kerja penjadwalan antara lain : 1. Adil (fairness)
2. Efisiensi
3. Waktu tanggap (response time) 4. Turn around time
5. Throughput.
Terdapat tiga tipe penjadwal berada secara bersama-sama pada sistem operasi yang kompleks yaitu :
1. Penjadwal jangka pendek (short-term scheduller).
Penjadwal ini bertugas menjadwalkan alokasi pemroses di antara proses- proses ready di memori utama.
2. Penjadwal jangka menengah (medium-term scheduller).
Penjadwal jangka menengah berfungsi untuk menangani proses-proses swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses yang tertunda.
3. Penjadwal jangka panjang (long-term scheduller).
Penjadwal jangka panjang bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, perangkat masukan / keluaran), program-program berprioritas rendah.
Terdapat dua strategi penjadwalan yaitu : 1. Penjadwalan Nonpreemptive
Begitu proses diberi jatah waktu pemroses maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.
2. Penjadwalan Preemptive
Saat proses diberi jatah waktu pemroses maka pemroses dapat diambil alih proses lain sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu. [1]
2.5 Manajemen Memori
Organisasi dan manajemen memori sangat mempengaruhi kinerja komputer. Manajemen memori melakukan tugas penting dan kompleks yang berkaitan dengan :
1. Memori utama sebagai sumber daya yang harus dialokasikan dan dipakai bersama di antara sejumlah proses yang aktif. Agar dapat memanfaatkan pemroses dan fasilitas masukan / keluaran secara efisien, maka diinginkan memori yang dapat menampung sebanyak mungkin proses.
2. Upaya agar pemrogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer.
Manajemen memori mempunyai fungsi berikut :
1. Mengelola informasi memori yang dipakai dan tidak dipakai.
2. Mengalokasikan memori ke proses yang memerlukan.
3. Mendealokasikan memori dari proses yang telah selesai.
4. Mengelola swapping antara memori utama dan disk.
Dengan keberadaan banyak ruang milik proses-proses di memori utama secara bersama, maka sistem operasi harus mendukung dua kebutuhan yang saling bertentangan yaitu :
1. Pemisahan ruang-ruang alamat, yaitu memisahkan ruang alamat menjadi blok- blok dengan ukuran tertentu agar dapat ditempati oleh proses.
2. Pemakaian bersama memori, yaitu sistem operasi harus memungkinkan beberapa aplikasi untuk menggunakan memori secara bersamaan agar pekerjaan cepat selesai.
Manajer memori harus memaksakan isolasi ruang-ruang alamat tiap proses agar mencegah proses aktif atau proses yang ingin berlaku ‘jahat’ mengakses dan merusak ruang alamat proses lain. Manajer memori di lingkungan multiprogramming melakukan dua hal, yaitu :
1. Proteksi memori dengan isolasi ruang-ruang alamat secara disjoint.
2. Pemakaian bersama memori, yang memungkinkan proses-proses untuk bekerja sama dalam mengakses daerah memori bersama. [1]
2.6 Model dan Simulasi
Model adalah representasi dari suatu objek (benda) atau ide-ide dalam bentuk yang lain. Model juga dapat didefenisikan sebagai suatu gambaran, abstraksi atau imajinasi suatu sistem nyata. Ataupun berupa suatu abstraksi dunia nyata yang pada akhirnya dapat digunakan untuk mengambil keputusan. Model berisi informasi-informasi tentang sesuatu yang dibuat dengan tujuan untuk mempelajari sistem yang sebenarnya. Model dapat berupa tiruan dari suatu benda, sistem atau peristiwa sesungguhnya yang hanya mengandung informasi-informasi yang dipandang penting untuk ditelaah. Model yang dibuat dapat berguna untuk:
1. Membantu dalam berpikir, model menyajikan deskripsi yang sistematis tentang suatu sistem sehingga dapat mempermudah mempelajari sistem tersebut.
2. Membantu untuk berkomunikasi atau mempermudah menjelaskan tentang suatu sistem kepada orang lain.
3. Sebagai alat latihan, untuk melatih ketrampilan orang-orang yang berhubungan dengan sistem sebenarnya yang dimodelkan. Contohnya : Simulator dalam dunia penerbangan, ini digunakan untuk melatih seorang calon pilot yang dalam taraf belajar, belum boleh mengemudikan pesawat yang sebenarnya, tetapi belajar mengemudikan suatu model yang mewakili
pesawat dan juga mengoperasikan model tersebut terhadap suatu model lapangan terbang, udara, lingkungan terbang dan sebagainya.
4. Sebagai alat prediksi terhadap kelakuan sistem untuk waktu yang akan datang, yaitu pengaruh-pengaruh yang ingin diketahui jika ada perubahan sistem atau operasi sistem dan membantu dalam melakukan percobaan, dalam hal melakukan percobaan atau eksperimen tidak mungkin langsung dilaksanakan atau diadakan secara praktis karena biaya yang mahal dan bahaya atau resiko yang tinggi.
Sebelum menentukan model yang akan dibuat, terlebih dahulu dipelajari sistemnya. Sistem yang ada seringkali sangat kompleks, tapi model diusahakan dibuat sesederhana mungkin
Simulasi adalah proses merancang model dari suatu sistem yang sebenarnya, mengadakan percobaan-percobaan terhadap model tersebut dan mengevaluasi hasil percobaan tersebut. Adapun manfaat dari simulasi adalah sebagai berikut :
1. Menjelaskan kelakuan sistem.
2. Menirukan bekerjanya suatu sistem melalui melalui suatu model.
3. Memecahkan suatu persoalan matematik dengan analisis numerik.
4. Mempelajari dinamika suatu sistem.
5. Memberikan suatu deskripsi perilaku sistem dalam perkembangan sejalan dengan bertambahnya waktu.
6. Membangun teori atau hipotesa yang mempertanggungjawabkan kelakuan dari sistem yang diamati.
BAB III
PEMBAHASAN DAN PERANCANGAN
3.1 Pembahasan
Pembahasan perancangan perangkat lunak simulasi algoritma Banker mencakup alur kerja perangkat lunak, pembuatan objek gambar simulasi dan proses kerja algoritma Banker yang terdiri atas algoritma Safety dan algoritma Resource Request. Masing-masing pembahasan akan dibahas dalam sub bab berikut ini.
3.1.1 Alur Kerja Perangkat Lunak
Perangkat lunak simulasi algoritma Banker dimulai dengan menampilkan splash screen yang berisi nama perangkat lunak dan nama penyusun tugas akhir sebagai pembuat program. Selanjutnya, akan muncul form input. Dalam form ini, user dapat memilih banyak tipe resource yang dimiliki bank, memasukkan nama resource (yang diasumsikan berupa mata uang yang dimiliki bank), besar resource yang dimiliki bank dan mengatur keadaan awal simulasi customer.
Keadaan awal simulasi berupa batas maksimum dan besar alokasi resource customer pada saat simulasi akan dimulai. Keadaan awal bersifat optional, artinya dapat di-input atau tidak di-input. Apabila tidak di-input, maka perangkat lunak menganggap tidak ada customer yang berada di dalam bank ketika simulasi akan dimulai dan perangkat lunak akan menghasilkan kondisi-kondisi berikutnya secara acak.
Selanjutnya, pilih ’Mulai Simulasi Banker’ untuk memulai proses
kredit di dalam bank dengan menerapkan algoritma Banker. Setiap transaksi yang terjadi di dalam simulasi dapat ditampilkan ke layar ataupun tidak. Transaksi yang terjadi di dalam simulasi berupa permohonan kredit (request), pemenuhan permohonan kredit (approved), penundaan permohonan kredit (pending) dan pengembalian kredit (return).
Penggunaan algoritma Banker (algoritma Resource Request dan algoritma Safety) untuk memutuskan apakah permohonan kredit disetujui (approved) atau permohonan kredit ditunda (pending) juga akan dirincikan proses kerjanya. User juga dapat memilih tombol ’History Transaksi’ untuk menampilkan catatan transaksi yang telah terjadi dalam simulasi. Ketika simulasi sedang berjalan, user dapat menekan tombol ’Stop’ untuk menghentikan proses simulasi untuk sementara dan menekan tombol ’Play’ kembali untuk melanjutkan proses simulasi. Hal ini dimaksudkan agar user dapat mengamati dan mengikuti proses yang sedang terjadi. Alur kerja perangkat lunak dapat digambarkan dalam bentuk State Transition Diagram (STD) seperti terlihat pada gambar 3.1 berikut.
Windows (Operating System)
Form Splash Screen
Form Input
Form About
Form Note (Laporan)
Form Simulasi
Jalankan program Muncul Form Splash Screen Tekan ‘Keluar’
Kembali ke windows
Tunggu beberapa saat Muncul Form
Input
Tekan ‘Mulai Simulasi Banker’
Muncul Form Simulasi Tekan ‘Keluar’
Kembali ke form input
Tekan ‘About’
Muncul Form About Tekan ‘Keluar’
Kembali ke form input
Terjadi transaksi atau tekan
‘History Laporan’
Muncul Form Note / Laporan Tekan ‘Keluar’
Kembali ke form simulasi
Gambar 3.1 State Transition Diagram (STD) Program
3.1.2 Pembuatan Objek Gambar Simulasi
Perangkat lunak simulasi ini menggunakan objek gambar untuk merepresentasikan variabel-variabel yang terdapat dalam simulasi algoritma Banker ini. Pembuatan objek gambar simulasi dilakukan dengan menggunakan aplikasi Adobe Photoshop CS 8.0. Objek-objek yang terdapat dalam simulasi algoritma Banker beserta representasi objek gambarnya adalah sebagai berikut:
1. Bankir.
Bankir merupakan variabel yang berfungsi untuk memutuskan apakah permohonan kredit disetujui atau ditunda / ditolak. Objek gambar yang merepresentasikan bankir dapat dilihat pada gambar 3.2.
Gambar 3.2 Gambar Bankir 2. Kasir.
Kasir merupakan variabel pelengkap yang berfungsi untuk memberikan uang kepada customer apabila permohonan kredit disetujui. Objek gambar yang merepresentasikan kasir dapat dilihat pada gambar 3.3.
Gambar 3.3 Gambar Kasir
3. Customer.
Customer merupakan variabel yang berfungsi untuk memohon kredit kepada bank. Objek gambar yang merepresentasikan customer dapat dilihat pada gambar 3.4, 3.5 dan 3.6.
Gambar 3.4 Gambar Customer-1
Gambar 3.5 Gambar Customer-2
Gambar 3.6 Gambar Customer-3 4. Uang.
Uang merupakan variabel yang berfungsi sebagai resource. Objek gambar yang merepresentasikan uang dapat dilihat pada gambar 3.7.
Gambar 3.7 Gambar Uang
5. Gambar pelengkap lainnya, seperti: gambar keadaan di dalam bank, meja bankir, meja kasir, dan beberapa gambar lainnya.