BAB 2
LANDASAN TEORI
2.1
Sistem Operasi
Sistem operasi adalah bagian yang sangat penting bagi semua sistem komputer. Secara umum, sistem komputer terbagi atas hardware, sistem operasi, program aplikasi, dan user. Hardware terdiri atas CPU, memori dan I/O device yang merupakan resourceresource 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.
Komponen-komponen
sistem
komputer
tersebut
ditunjukkan oleh gambar 2.1 User
User
User
1
2
3
compiler
assembler
text editor
......
User 4
......
database system
Program-program Aplikasi
Sistem Operasi Hardware
Gambar 2.1 Komponen-Komponen sistem komputer
Universitas Sumatera Utara
2.1.1
Definisi Sistem Operasi
Ada beberapa definisi yang dapat diberikan untuk sistem operasi, antara lain: 1. Software yang mengontrol hardware, hanya berupa program biasa (seperti beberapa file pada DOS). 2. Program yang menjadikan hardware lebih mudah untuk digunakan. 3. Kumpulan program yang mengatur kerja hardware (seperti: mengatur memori, printer dll). 4. Resource Manager atau resource allocator (seperti: mengatur memori, printer dll). 5. Sebagai program pengontrol (program yang digunakan untuk mengontrol program yang lainnya). 6. Sebagai Kernel, yaitu program yang terus-menerus running selama komputer dihidupkan. 7. Sebagai guardian, yaitu mengatur atau menjaga komputer dari berbagai kejahatan komputer.
2.1.2
Peranan Sistem Operasi
Peranan sistem operasi pada komputer adalah sebagai berikut: 1. Sebagai antarmuka (interface atau jembatan penghubung) antara user dengan hardware. 2. Memungkinkan adanya pemakaian bersama hardware maupun data antar user. 3. Pengatur penjadwalan resource bagi user (seperti: pemakaian CPU dan I/O secara bergantian, dengan adanya memori manager dapat mengakses program besar hanya dengan memori kecil).
Universitas Sumatera Utara
4. Menyediakan fasilitas sistem operasi (seperti: menyediakan fasilitas interrupt).
2.1.3
Tujuan Adanya Sistem Operasi
Tujuan adanya sistem operasi, yaitu: 1. Menunjukkan lingkungan dimana seorang user dapat mengeksekusi programprogramnya. 2. Membuat sistem komputer nyaman untuk digunakan. 3. Mengefisienkan hardware komputer.
2.1.4
Sejarah Singkat Perkembangan Sistem Operasi
Perkembangan sistem operasi sangat dipengaruhi oleh perkembangan hardware, yaitu: 1. Generasi ke-satu (1940) a. Komponen utama berupa tabung hampa udara. b. Sistem komputer belum menggunakan sistem operasi. c. Semua operasi komputer dilakukan secara manual melalui plugboards, dan hanya bisa digunakan untuk menghitung (+, - dan *). 2. Generasi ke-dua (1950) a. Komponen utama berupa transistor. b. Sistem operasi berfungsi terutama sebagai pengatur pergantian antar job agar waktu instalasi job berikutnya lebih efisien. Dalam masa ini muncul konsep batch system (semua job sejenis dikumpulkan jadi satu). c. Input memakai punch card.
Universitas Sumatera Utara
3. Generasi ke-tiga (1960) a. Komponen utama berupa IC. b. Berkembang konsep-konsep: i.
Multiprogramming, satu prosesor mengerjakan banyak program yang ada di memori utama.
ii.
Multiprocessing, satu job dikerjakan oleh banyak prosesor untuk meningkatkan utilitas.
iii.
Spooling (Simultaenous Peripheral Operation On Line), bertindak sebagai buffer saja, dan mampu menerima pesanan meskipun belum akan dikerjakan.
iv.
Device Independence, masing-masing komponen memiliki sifat yang saling berbeda (misal: tiap-tiap printer memiliki driver).
v.
Time Sharing atau multitasking.
vi.
Real time system, berguna sebagai kontrol bagi mesin-mesin.
4. Generasi ke-empat (1970) a. Komponen utama berupa VLSI (Very Larga Scale Integrated Sircuit). b. Ditandai dengan berkembangnya konsep general purpose system, sehingga sistem operasi menjadi sangat kompleks, mahal dan sulit dipelajari. 5. Generasi ke-lima (pertengahan 1970-an hingga sekarang) a. PC makin populer. b. Ditandai dengan berkembangnya sistem operasi untuk jaringan komputer dengan tujuan: data sharing, hardware sharing dan program sharing. c. User interface, semakin user friendly tanpa harus mengorbankan kinerja sistem.
Universitas Sumatera Utara
2.1.5
Sudut Pandang Sistem Komputer
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. 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 layananlayanan sistem komputer. Pandangan terhadap sistem komputer sebagai berlapis atau hierarki seperti terlihat pada gambar 2.2
Universitas Sumatera Utara
Pemakai awam
Aplikasi Utilitas-utilitas Sistem operasi Perangkat Keras Sistem Komputer
Pemrogram
Perancang sistem operasi
Gambar 2.2 Hierarki 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.
2.2
Struktur Sistem Operasi
2.2.1
Komponen-Komponen Sistem
Sistem operasi memiliki komponen-komponen sebagai berikut: 1. Manajemen Proses
Universitas Sumatera Utara
Sistem operasi memberikan tanggapan terhadap manajemen proses untuk aktivitasaktivitas sebagai berikut: a. Pembuatan atau penghapusan proses yang dibuat oleh user atau sistem. b. Suspensi dan asumsi proses. c. Kelengkapan mekanisme untuk sinkronisasi proses. d. Kelengkapan mekanisme untuk komunikasi proses. e. Kelengkapan mekanisme untuk pengendalian deadlock. 2. Manajemen Memori Utama Sistem operasi memberikan tanggapan terhadap manajemen memori utama untuk aktivitas-aktivitas sebagai berikut: a. Menjaga danm emelihara bagian-bagianmemori yang sedang digunakan dan dari yang menggunakan. b. Memutuskan proses-proses mana saja yang harus dipanggil ke memori jika masih ada ruang di memori. c. Mengalokasikan dan mendealokasikan ruang memori jika diperlukan. 3. Manajemen Memori Sekunder Sistem operasi memberikan tanggapan terhadap manajemen penyimpanan sekunder untuk aktivitas-aktivitas sebagai berikut: a. Pengaturan ruang kosong. b. Alokasi penyimpanan. c. Penjadwalan disk.
Universitas Sumatera Utara
4. Manajemen I/O Sistem operasi memberikan tanggapan terhadap manajemen I/O untuk aktivitasaktivitas sebagai berikut: a. Sistem buffer-chaching. b. Antarmuka device-driver secara umum. c. Driver untuk device hardware-hardware tertentu. 5. Manajemen File Sistem operasi memberikan tanggapan terhadap manajemen file untuk aktivitas– aktivitas sebagai berikut: a. Pembuatan dan penghapusan file. b. Pembuatan dan penghapusan direktori. c. Primitif-primitif yang mendukung untuk manipulasi file dan direktori. d. Pemetaan file ke memori sekunder. e. Backup file ke media penyimpanan yang stabil (nonvolatil).
2.2.2
Pelayanan Sistem Operasi
Sistem operasi harus dapat melayani programmer sehingga dapat melakukan pemograman dengan mudah. 1. Eksekusi Program Sistem harus dapat memanggil program ke memori dan menjalankannya. Program tersebut harus dapat mengakhiri eksekusinya dalam bentuk normal atau abnormal (indikasi error).
Universitas Sumatera Utara
2. Operasi-Operasi I/O Pada saat running program kemungkinan dibutuhkan I/O, mungkin berupa file atau peralatan I/O. Agar efisien dan aman, maka user tidak boleh mengontrol I/O secara langsung, pengontrolan dilakukan oleh sistem operasi. 3. Manipulasi Sistem File Meliputi pembuatan, penghapusan, read dan write. 4. Komunikasi Komunikasi dibutuhkan jika beberapa proses saling tukar-menukar informasi. Ada 2 cara yang dapat dilakukan, yaitu tukar-menukar data oleh beberapa proses dalam satu komputer dan tukar-menukar data oleh beberapa proses dalam komputer yang berbeda melalui sistem jaringan. Komunikasi dilakukan dengan cara berbagi memori atau dengan cara pengiriman pesan. 5. Mendeteksi Kesalahan Untuk masing-masing kesalahan, sistem operasi harus memberikan aksi yang cocok agar komputasinya menjadi konsisten.
2.2.3
System Call
Pada dasarnya, system call dapat dikelompokkan dalam 5 kategori sebagai berikut: 1. Kontrol Proses. Hal-hal yang dilakukan: a. Mengakhiri (end) dan membatalkan (abort); b. Mengambil (load) dan eksekusi (execute); c. Membuat dan mengakhiri proses;
Universitas Sumatera Utara
d. Menentukan dan mengeset atribut proses; e. Wait for time; f.
Wait event, signal event;
g. Mengalokasikan dan membebaskan memori. Contoh: Sistem opasi pada MS-DOS menggunakan sistem single-tasking yang memiliki command interpreter yang akan bekerja pada saat start. Karena singletasking, maka akan menggunakan metode yang sederhana untuk menjalankan program dan tidak akan membuat proses baru. 2. Manipulasi File. Hal-hal yang dilakukan: a. Membuat dan menghapus file; b. Membuka dan menutup file; c. Membaca, menulis dan mereposisi file; d. Menentukan dan mengeset atribut file; 3. Manipulasi Device Hal-hal yang dilakukan: a. Meminta dan membebaskan device; b. Menentukan dan mengeset atribut device; 4. Informasi Lingkungan Hal-hal yang dilakukan: a. Mengambil atau mengeset waktu atau tanggal; b. Mengambil atau mengeset sistem data; c. Mengambil atau mengeset proses, file dan atribut-atribut device;
Universitas Sumatera Utara
5. Komunikasi Hal-hal yang dilakukan: a. Membuat dan menghapus sambungan komunikasi; b. Mengirim dan menerima pesan; c. Mentransfer status informasi; Ada 2 model komunikasi, yaitu: 1. Message-passing Model. a. Informasi saling ditukarkan melalui fasilitas yang telah ditentukan oleh sistem operasi. Bagan dari model komunikasi ini dapat dilihat pada gambar 2.3 pada halaman berikutnya. 2. Shared-memory Model. a. Proses-proses menggunakan map memory untuk mengakses daerah-daerah di memori dengan proses-proses yang lain. Bagan dari model komunikasi dapat dilihat pada gambar 2.4 Proses A
M
Proses B
M
2
Kernel
M
Gambar 2.3 Model Komunikasi Message Passing
Universitas Sumatera Utara
Proses A 1 shared memory
Proses B
2
Kernel
Gambar 2.4 Model Komunikasi Shared Memory
2.2.4
Sistem Program
Sistem program adalah masalah yang relatif kompleks, namun dapat dibagi menjadi beberapa kategori, antara lain: 1. Manipulasi File, meliputi: membuat, menghapus, meng-copy, rename, print, dump, list pada file dan direktori. 2. Status Informasi, meliputi: tanggal, waktu (jam, menit, detik), penggunaan memori atau disk space, banyaknya user. 3. Modifikasi File, Ada beberapa editor yang sanggup digunakan sebagai sarana untuk menulis atau memodifikasi file yang tersimpan pada disk atau tape.
Universitas Sumatera Utara
4. Bahasa Pemograman yang Mendukung, meliputi: compiler, assembler dan interpreter untuk beberapa bahasa pemograman (seperti: Fortran, Cobol, Pascal, Basic, C, dan LISP). 5. Pemanggilan dan Eksekusi Program, pada saat program di-compile, maka harus dipanggil ke memori untuk dieksekusi. Suatu sistem biasanya memiliki absolute loader, melokasikan loader, linkage editor, dan overlay loader. Juga dibutuhkan debugging system untuk bahasa tingkat tinggi. 6. Komunikasi, sebagai mekainisme untuk membuat hubungan virtual antar proses, user dan sistem komputer yang berbeda. 7. Program-Program Aplikasi, sistem operasi harus mendukung program-program yang berguna untuk menyelesaikan permasalahan secara umum, atau membentuk operasi-operasi secara umum, seperti kompiler, pemformat teks, paket plot, sistem basis data, spreadsheet, paket analisis statistik, dan games.
2.2.5 Struktur Sistem Operasi Sistem komputer modern yang semakin kompleks dan rumit memerlukan sistem operasi yang dirancang dengan sangat hati-hati agar dapat berfungsi secara optimum dan mudah untuk dimodifikasi.
2.2.6
Struktur Sederhana
Ada sejumlah sistem komersial yang tidak memiliki struktur yang cukup baik. Sistem operasi tersebut sangat kecil, sederhana dan memiliki banyak keterbatasan. Salah satu contoh sistem tersebut adalah MS-DOS. MS-DOS dirancang oleh orang-orang yang tidak
Universitas Sumatera Utara
memikirkan akan kepopuleran software tersebut. Sistem operasi tersebut terbatas pada hardware sehingga tidak terbagi menjadi modul-modul seperti terlihat pada gambar 2.5. Karena Intel 8088 tidak menggunakan dual-mode sehingga tidak ada proteksi hardware. Oleh karena itu, orang mulai enggan menggunakannya.
Program Aplikasi
Program Sistem Resident
MS-DOS device drivers
ROM BIOS device drivers
Gambar 2.5 Struktur sistem MS-DOS
Contoh lainnya adalah UNIX. Sistem operasi UNIX juga terbatas pada hardware. UNIX hanya terbagi atas 2 bagian, yaitu Kernel dan program sistem. Kernel terbagi menjadi beberapa antarmuka dan device driver. Kernel ini berisi sistem file, penjadwalan CPU, manajemen memori dan fungsi sistem operasi lainnya yang ada pada system call. Program sistem meminta bantuan kernel untuk memanggil fungsi-fungsi dalam kompilasi dan manipulasi file.
Universitas Sumatera Utara
users shell dan perintah-perintah; compiler dan interpreter; system libraries; Antarmuka system call ke kernel sistem file; swapping; sistem blok I/O; disk & tape drivers;
sinyal; pengendali terminal; sistem karakter I/O; terminal drivers;
terminal controllers terminals
sistem file; swapping; sistem blok I/O; disk & tape drivers;
device controllers disks & tapes
memory controllers memory fisik
Gambar 2.6 Struktur sistem UNIX
2.2.7
Monolithic System
Pada dasarnya, sistem monolitic merupakan struktur sederhana yang dilengkapi dengan operasi dual-mode. Pelayanan (system call) yang diberikan oleh sistem operasi model ini dilakukan dengan cara mengambil sejumlah parameter pada tempat yang telah ditentukan sebelumnya, seperti register atau stack, dan kemudian mengeksekusi suatu instruksi trap tertentu pada monitor mode. Tatanan ini memberikan suatu struktur dasar dari sistem operasi sebagai berikut: 1. Program utama yang meminta service procedure 2. Kumpulan service procedure yang dibawa oleh system call 3. Kumpulan utility procedure yang membantu service procedure
Universitas Sumatera Utara
Program Utama
Service Procedure
Utility Procedure
Gambar 2.7 Model struktur monolithic Pada model ini, tiap-tiap system call memiliki satu service procedure. Utility procedure mengerjakan segala sesuatu yang dibutuhkan oleh beberapa service procedure, seperti mengambil data dari user program. Pembagian procedure menjadi 3 lapisan ini seperti terlihat pada Gambar 2.7.
2.2.8
Pendekatan Terlapis (Layered Approach)
Teknik pendekatan terlapis pada dasarnya dibuat dengan cara membentuk sistem operasi menjadi bentuk modular. Dengan menggunakan pendekatan top-down, semua fungsi ditentukan dan dibagi menjadi komponen-komponen. Modularisasi sistem dilakukan dengan cara memecah sistem operasi menjadi beberapa lapis (tingkat). Lapisan terendah (lapis-0) adalah hardware dan lapisan teratas (lapisan N) adalah user interface. Tiap – tiap lapisan diimplementasikan hanya dengan menggunakan operasi-operasi yang disediakan oleh lapisan yang lebih rendah. Sistem operasi yang menggunakan sistem ini adalah: UNIX termodifikasi, THE, Venus dan OS2.
Universitas Sumatera Utara
lapisan ke-M
operasi-operasi baru
operasi-operasi tersembunyi
lapisan ke (M-1)
operasi-operasi yang ada
Gambar 2.8 Lapisan Sistem Operasi Lapis-5 : user program Lapis-4 : buffering untuk I/O device Lapis-3 : operator-console device driver Lapis-2 : manajemen memori Lapis-1 : penjadwalan CPU Lapis-0 : hardware
Gambar 2.9 Struktur “THE” Lapis-6 : user program Lapis-5 : device driver dan scheduler Lapis-4 : virtual memory Lapis-3 : I/O channel Lapis-2 : penjadwalan CPU Lapis-1 : instruksi interpreter Lapis-0 : hardware
Gambar 2.10 Struktur “Venus”
Universitas Sumatera Utara
Aplikasi
Aplikasi
Aplikasi
antarmuka pemograman aplikasi
ekstensi API
Kernel sistem - memory management - task dispatching - device management
device driver
device driver
device driver
device driver
Gambar 2.11 Struktur OS/2
2.2.9
Mesin Virtual (Virtual Machine)
Konsep dasar dari mesin virtual ini tidak jauh berbeda dengan pendekatan terlapis, hanya saja konsep ini memberikan sedikit tambahan berupa antarmuka yang menghubungkan hardware dengan kernel untuk tiap-tiap proses. Meskipun konsep ini cukup baik, namun sulit untuk diimplementasikan karena sistem menggunakan metode dual-mode. Mesin virtual hanya dapat berjalan pada monitor-mode jika berupa sistem operasi, sedangkan mesin virtual itu sendiri berjalan dalam bentuk user-mode. Konsekuensinya, baik virtual monitor-mode maupun virtual user-mode harus dijalankan melalui physical user mode. Hal ini menyebabkan adanya transfer dari user-mode ke monitor-mode pada mesin nyata, yang juga akan menyebabkan adanya transfer dari virtual user-mode ke virtual monitor-mode pada mesin virtual.
Universitas Sumatera Utara
Keuntungannya adalah bahwa konsep tersebut sepenuhnya melakukan proteksi, sehingga keamanan resource, terutama untuk resource-resource yang digunakan secara bersama-sama, akan terjamin. Contoh sistem operasi yang memakai mesin virtual adalah IBM VM system.
2.2.10 Client-Server Model Trend dari sistem operasi modern adalah memindahkan kode ke lapisan yang lebih tinggi dan menghapusnya sebanyak mungkin dari sistem operasi sehingga akan meninggalkan kernel yang minimal. Konsep ini biasanya diimplementasikan dengan cara menjadikan fungsi-fungsi yang ada pada sistem operasi menjadi user proses. Jika suatu proses minta untuk dilayani, misalkan saja satu blok file, maka user proses (disini dinamakan: client proses) mengirim permintaan tersebut ke server proses. Server proses akan melayani permintaan tersebut kemudian mengirimkan jawabannya kembali. Pada model ini, semua pekerjaan kernel ditekankan pada pengendalian komunikasi antara client dan server. Dengan membagi sistem operasi menjadi beberapa bagian, dimana tiap-tiap bagian menjadi lebih sederhana dan dapat diatur. Selain itu, oleh karena semua server berjalan pada user-mode proses, dan bukan merupakan monitor mode, maka server tidak dapat mengakses hardware secara langsung. Akibatnya, jika terjadi kerusakan pada file server, maka pelayanan file akan terganggu. Namun hal ini tidak akan sampai menganggu sistem lainnya.
Universitas Sumatera Utara
client proses
client proses
proses server
terminal server
..........
file server
memory server
user mode
monitor mode
kernel
client meminta pelayanan dengan cara mengirim pesan ke server proses
Gambar 2.12 Model Client-Server
2.3
Sinkronisasi
Andaikan ada permasalahan producer-consumer sebagai berikut: Producer dimodifikasi: repeat ... . menghasilkan item pada nextp ... . while (counter = 0) do no_op; buffer [in] := nextp; in := (in + 1) mod n; counter := counter + 1; until false; Consumer dimodifikasi: repeat
Universitas Sumatera Utara
while (counter = 0) do no_op; nextc := buffer [out]; out := (out + 1) mod n; counter := counter - 1; ... . mengkonsumsi item pada nextp ... . until false; Meskipun kedua rutin producer dan consumer tersebut benar secara terpisah, namun keduanya tidak akan berfungsi dengan benar pada saat dieksekusi secara simultan (sinkron atau bersamaan). Misalkan nilai variabel counter=5, dan producer-consumer mengeksekusi instruksi : counter := counter + 1; counter := counter – 1;
Eksekusi kedua instruksi tersebut akan menyebabkan nilai counter akan menjadi 4, 5, atau 6. Padahal nilai yang benar mestinya adalah 5 yang akan diberikan jika producer dan consumer dijalankan secara terpisah. Sebagai penjelasan, instruksi “counter := counter+1” dapat diimplementasikan dengan menggunakan bahasa mesin sebagai berikut: register_1 := counter; register_1 := register_1 + 1; counter
:= register_1;
Universitas Sumatera Utara
dengan register_1 adalah register lokal CPU. Demikian juga “counter := counter-1” dapat diimplementasikan: register_2 := counter; register_2 := register_2 + 1; counter
:= register_2;
dengan register_2 adalah register lokal CPU. Meskipun register_1 dan register_2 ini secara fisik mungkin sama, namun ingat bahwa nilainya akan disimpan dan diambil kembali oleh pengendali interrupt. Secara berurutan terlihat: T0:
producer
mengeksekusi
register_1 := counter
(register_1 = 5)
T1:
producer
mengeksekusi
register_1 := register_1 + 1 (register_1 = 6)
T2:
consumer
mengeksekusi
register_2 := counter
T3:
consumer
mengeksekusi
register_2 := register_2 - 1 (register_2 = 4)
T4:
producer
mengeksekusi
counter := register_1
(counter = 6)
T5:
consumer
mengeksekusi
counter := register_2
(counter = 4)
(register_2 = 5)
Terlihat bahwa akan timbul nilai counter yang salah, yaitu 4, yang berarti ada 4 buffer yang penuh, padahal kenyataannya adalah 5 buffer yang penuh. Namun jika pernyataan pada T4 dan T5 dibalik, maka akan timbul nilai counter = 6. Situasi dimana beberapa proses mengakses dan memanipulasi data yang sama secara simultan, dan hasil dari eksekusi tergantung pada suatu urutan tertentu disebut dengan race condition.
Universitas Sumatera Utara
2.3.1
Masalah Critical Section
Critical Section adalah suatu bagian yang berisi sejumlah variabel yang akan di-share (dipengaruhi dan mempengaruhi) proses yang lain. Secara umum, penyelesaian critical section harus memenuhi 3 syarat: 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 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 ijin untuk mengerjakan critical section, hingga permintaan itu dipenuhi.
2.3.2
Semaphore
Semaphore adalah salah satu cara menangani critical section. Semaphore S merupakan variabel bertipe integer yang diakses dengan 2 standar operasi atomic, yaitu wait dan signal. Operasi-operasi ini diwakili dengan P (wait) dan V(signal), sebagai berikut: wait(S)
:
while S < 0 do no_op; S := S – 1;
signal(S) :
S := S + 1;
Universitas Sumatera Utara
Misalkan ada 2 proses yang sedang berjalan secara simultan, yaitu proses P1 dengan pernyataan S1 dan proses P2 dengan S2. Andaikan kita mengharapkan S2 baru akan dijalankan hanya setelah S1 selesai. Hal ini dapat dilakukan dengan menggunakan bantuan sempahore synch (dengan nilai awal = 0) yang akan di-share oleh kedua proses. Untuk Proses P1: S1; signal (synch); Untuk Proses P2: wait(synch); S2; Karena nilai awal untuk variabel „synch‟ adalah nol, maka P2 akan mengeksekusi S2 hanya setelah P1 mengerjakan instruksi „signal(synch)‟ setelah eksekusi S1. Salah satu kerugian dari penggunaan sempahore di atas adalah adanya busy waiting. Apabila suatu proses menempati critical section, dan ada proses lain yang ingin masuk critical section, maka akan terjadi iterasi secara terus-menerus. Hal ini akan menimbulkan masalah pada sistem yang menggunakan konsep multiprogramming. Untuk menghindari busy waiting, dilakukan modifikasi pada operasi wait dan signal. Jika suatu proses sedang mengeksekusi operasi wait, maka nilai semaphore menjadi tidak positif. Pada saat ini, proses akan memblok dirinya sendiri dan ditempatkan pada waiting queue. Proses yang sedang diblok akan menunggu hingga sempahore S direstart, yaitu pada saat beberapa proses yang lain mengeksekusi operasi signal. Suatu proses akan direstart dengan operasi wakeup, yang akan mengubah proses dari keadaan
Universitas Sumatera Utara
waiting ke ready. Untuk mengimplementasikan hal ini, sempahore dirancang dalam bentuk record:
type sempahore = record; value: integer; L: list of process; end; Var S : sempahore;
2.3.3 Dining Philosophers Problem Dining Philosophers Problem merupakan salah satu masalah klasik dalam sinkronisasi. Dining Philosohers Problem dapat diilustrasikan sebagai berikut, terdapat lima orang filsuf yang sedang duduk mengelilingi sebuah meja. Terdapat lima mangkuk mie di depan masing-masing filsuf dan satu sumpit di antara masing-masing filsuf. Para filsuf menghabiskan waktu dengan berpikir (ketika kenyang) dan makan (ketika lapar). Ketika lapar, filsuf akan mengambil dua buah sumpit (di tangan kiri dan tangan kanan) dan makan. Namun adakalanya, hanya diambil satu sumpit saja. Jika ada filsuf yang mengambil dua buah sumpit, maka dua filsuf di samping filsuf yang sedang makan harus menunggu sampai sumpit ditaruh kembali. Hal ini dapat diimplementasikan dengan wait dan signal.
Universitas Sumatera Utara
repeat wait (sumpit[i]); wait (sumpit [i+1 mod 5]); ... makan ... signal (sumpit[i]); signal (sumpit[i+1 mod 5]); ... berpikir ... until false
Gambar 2.13 Struktur proses filsuf ke-i
Gambar 2.14 Lima filsuf dalam satu meja makan Meskipun solusi ini menjamin bahwa tidak ada 2 tetangga yang makan bersamasama, namun masih mungkin terjadi deadlock, yaitu jika tiap-tiap filsuf lapar dan mengambil sumpit kiri, maka semua nilai sumpit=0, dan kemudian tiap-tiap filsuf akan mengambil sumpit kanan, maka akan terjadi deadlock. Ada beberapa cara untuk menghindari deadlock, antara lain: 1. Mengijinkan paling banyak 4 orang filsuf yang duduk bersama-sama pada satu meja. 2. Mengijinkan seorang filsuf mengambil sumpit hanya jika kedua sumpit itu ada.
Universitas Sumatera Utara
3. Menggunakan suatu solusi asimetrik, yaitu filsuf pada nomor ganjil mengambil sumpit kiri dulu baru sumpit kanan. Sedangkan filsuf yang duduk di kursi genap mengambil sumpit kanan dulu baru sumpit kiri.
2.4
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.
2.4.1
Model Deadlock
Urutan kejadian pengoperasian perangkat masukan/keluaran adalah: 1. Meminta (request), yaitu meminta pelayanan perangkat masukan / keluaran.
Universitas Sumatera Utara
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.
P0
R0
R1
P1 (a)
(b)
Gambar 2.15 Graph meminta sumber daya dan alokasi sumber daya
Gambar 2.15 (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.
Universitas Sumatera Utara
P0 R0
R0 P1
Gambar 2.16 Graph deadlock dua proses dan dua sumber daya
2.4.2 Metode-Metode Mengatasi Deadlock Terdapat empat syarat untuk terjadinya deadlock, yaitu: 1. Mutual Exclution Condition Tiap sumber daya saat itu diberikan pada tepat satu proses.
Gambar 2.17 Mutual Exlution Condition 2. Kondisi genggam dan tunggu (hold and wait condition) Proses-proses yang sedang mengenggam sumber daya, menunggu sumber dayasumber daya baru.
Universitas Sumatera Utara
Gambar 2.18 Kondisi Genggam Dan Tunggu 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.
Gambar 2.19 Kondisi Non-Preemtion
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.
Universitas Sumatera Utara
Gambar 2.20 Kondisi Menunggu Secara Sirkuler
Ketiga syarat pertama merupakan syarat perlu (necessary conditions) 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.4.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.
Universitas Sumatera Utara
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.
2.5
Model
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
Universitas Sumatera Utara
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. 5. 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.
Dalam pembuatan model, proses pembuatan model tidak dapat digambarkan secara pasti, namun ada petunjuk yang dapat digunakan yaitu sebagai berikut: 1. Pemecahan masalah melalui penyederhanaan. 2. Menyatakan objek dengan persyaratan yang jelas karena objek sangat menentukan model. 3. Mencari analog-analog dan sistem atau model yang sudah ada untuk mempermudah konstruksi. 4. Menentukan komponen-komponen yang akan dimasukkan ke dalam model. 5. Menentukan variabel, konstanta dan parameter, hubungan fimgsional serta konstrain dari fungsi-fungsi kriterianya. 6. Untuk membuat model matematik hams dipikirkan cara untuk menyatakan masalah secara numerik jika ingin disimulasikan dengan komputer.
Universitas Sumatera Utara
7. Nyatakan dengan simbol-simbol. 8. Menuliskan persamaan matematikanya. 9. Bila model terlalu rumit, terdapat beberapa cara untuk menyederhanakan model seperti : a. Buat harga variabel menjadi parameter. b. Eliminasi / kombinasikan variabel-variabel. c. Asumsikan linieritas. d. Tambahkan asumsi dan batasan yang ketat. e. Perjelas batasan sistem. Sebelum menentukan model yang akan dibuat, lebih dahulu perlu mempelajari sistemnya. Sistem yang ada seringkali sangat kompleks, tapi model diusahakan dibuat sesederhana mungkin. Salah satu cara untuk mempelajari sistem adalah dengan menuangkan informasi-informasi dari sistem tersebut ke dalam bentuk diagram. Untuk menilai model apakah dapat dianggap "baik" sebenarnya cukup sulit, tetapi pada dasarnya kriteria suatu model yang baik dapat diuraikan sebagai berikut: 1. Mudah dimengerti pemakaiannya. 2. Harus mempunyai tujuan yang jelas. 3. Dinyatakan secara jelas dan lengkap. 4. Mudah dikontrol dan dimanipulasi oleh pemakai. 5. Mengandung pemecahan masalah yang penting dan jelas. 6. Mudah diubah dan mempunyai prosedur modifikasi. 7. Dapat berkembang dari sederhana menjadi kompleks
Universitas Sumatera Utara
2.6
Simulasi
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. 7. Meramalkan kelakuan sistem yang akan datang yaitu pengaruh yang dihasilkan oleh perubahan-perubahan sistem atau perubahan operasinya.
2.7
Simulasi Sistem Diskrit
Dalam pendekatan diskrit pada sistem simulasi, perubahan keadaan (state) dalam sistem fisik direpresentasikan oleh sebuah seri dari perubahan diskrit atau kejadian (event) pada waktu instan yang spesifik dan model yang demikian dikenal sebagai model kejadian
Universitas Sumatera Utara
diskrit (discrete event models). Waktu dan keadaan adalah dua properti penting yang digunakan untuk mendeskripsikan model simulasi. Tingkah laku dinamis dari sistem dipelajari dengan meneliti beberapa variasi dari keadaan sistem sebagai sebuah fungsi. Kemudian mengumpulkan dan menganalisa sistem statistik. Kejadian yang mengubah keadaan sistem dihasilkan pada waktu yang berbeda dan jalan pintas dari waktu direpresentasikan dengan sebuah internal clock yang diinkremen dan dibangun dengan program simulasi (simulator). Waktu simulasi dapat dikembangkan dalam dua jalan. Metoda pertama adalah interval-oriented simulation atau uniform time increment method (fixed time increment atau synchoronous method) dimana clock dikembangkan dari waktu t ke t + t dimana t adalah sebuah inkremen waktu tertentu yang teratur (uniform fixed time increment). Metoda kedua adalah event-oriented simulation atau variabel time increment method (next-event time increment atau asynchoronous method) dimana clock diinkremen dari waktu t sampai kejadian berikutnya (next event). Perubahan keadaan dibuat pada waktu kejadian t, waktu kejadian berikutnya t‟, dan proses ini berulang terus.
2.8 Visual Basic 6.0
2.8.1. Mengenal MS-Visual Basic 6.0 Visual Basic adalah salah satu bahasa pemrograman komputer. Bahasa pemrograman adalah perintah - perintah yang dimengerti oleh komputer untuk melakukan tugas-tugas tertentu. Bahasa pemrograman Visual Basic, yang dikembangkan oleh Microsoft sejak
Universitas Sumatera Utara
tahun 1991, merupakan pengembangan dari pendahulunya yaitu bahasa pemrograman BASIC (Beginner’s All-purpose Symbolic Instruction Code)yang dikembangkan pada era 1950-an. Visual Basic merupakan salah satu Development Tool yaitu alat bantu untuk membuat berbagai macam program komputer, khususnya yang menggunakan sistem operasi Windows. Visual Basic merupakan salah satu bahasa pemrograman komputer yang mendukung objek(Object Oriented Programming = OOP).
2.8.2. Memulai Program Visual Basic 6.0 Untuk memulai program Visual Basic, ada beberapa cara, yaitu: 1. Double klik icon Visual Basic 6.0 pada desktop 2. Klik Start + Programs + Microsoft Visual Studio+ Microsoft Visual Basic 6.0. Tampilan dasar MS-Visual Basic 6.0
Gambar 2.21 Tampilan Dasar MS-Visual Basic 6.0
Universitas Sumatera Utara
Langkah umum membuat Program Aplikasi (perancangan dari atas ke bawah): 1. Gambar komponen dan atur tata letak dalam Form 2. Tentukan properti pada setiap komponen 3. Tulis kode program yang dianggap perlu 4. Mengompilasi program (Run + Start / F5). Beberapa komponen MS-Visual Basic 6.0: 1. Project Project adalah sekumpulan modul (dalam file berahiran .VBP). Terdapat tiga icon, yaitu icon View Code, icon View Object dan icon Toggle Folders. 2. Form Form adalah suatu objek yang dipakai sebagai tempat bekerja program aplikasi atau tempat meletakkan objek-objek lainnya. 3. Toolbox Toolbox adalah kotak alat yang berisikan icon-icon objek tertentu. 4. Properties Properties biasanya digunakan untuk menentukan setting suatu objek 5. Kode Program Kode Program adalah serangkaian tulisan perintah yang akan dilaksanakan jika suatu objek dijalankan. 6. Event Event adalah peristiwa atau kejadian yang diterima oleh suatu objek, misalnya klik, drag, tunjuk dll.
Universitas Sumatera Utara
7. Metode Metode adalah suatu set perintah seperti halnya fungsi dan procedure, tetapi sudah tersedia dalam suatu objek. Seperti halnya properti. 8. Module Module dapat disejajarkan dengan form, tetapi tidak mengandung objek dan bentuk standart. Modul dapat berisi beberapa kode program atau procedure yang dapat digunakan dalam program aplikasi.
Universitas Sumatera Utara