379
Sistem Operasi Bahan Kuliah IKI-20230 Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49 Semester Ganjil 2003/2004 Mata Kuliah Sistem Operasi

Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

  • Upload
    buitu

  • View
    269

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Sistem Operasi

Bahan Kuliah IKI-20230

Gabungan Kelompok Kerja 21–28 Semester Genap2002/2003 dan 41–49 Semester Ganjil 2003/2004 Mata

Kuliah Sistem Operasi

Page 2: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Sistem Operasi: Bahan Kuliah IKI-20230oleh Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49 Semester Ganjil 2003/2004 MataKuliah Sistem Operasi

Revision: 1.9 EdisiDiterbitkan 24 Desember 2003Hak Cipta © 2003 oleh Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49 Semester Ganjil2003/2004 Mata Kuliah Sistem Operasi.

Silakan menyalin, mengedarkan, dan/ atau, memodifikasi bagian dari dokumen – $Revision: 1.9 $ – – yang dikarang olehGabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49 Semester Ganjil 2003/2004 Mata Kuliah SistemOperasi, sesuai dengan ketentuan "GNU Free Documentation Licenseversi 1.1" atau versi selanjutnya dari FSF (FreeSoftware Foundation); tanpa bagian "Invariant", tanpa teks "Front-Cover", dan tanpa teks "Back-Cover". Lampiran A ini>berisi salinan lengkap dari lisensi tersebut. Ketentuan iniTIDAK berlaku untuk bagian dan/ atau kutipan yang bukandikarang oleh Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49 Semester Ganjil 2003/2004 MataKuliah Sistem Operasi.

Catatan RevisiRevisi 1.9 24-12-2003 Revised by: Kelompok 49Versi rilis final buku OSRevisi 1.8 08-12-2003 Revised by: Kelompok 49Versi rilis beta buku OSRevisi 1.7 17-11-2003 Revised by: Kelompok 49Versi rilis alfa buku OSRevisi 1.5 17-11-2003 Revised by: Kelompok 49Penggabungan pertama seluruh pekerjaan kelompok 41 sampai kelompok 48. Masih ada beberapa gambar yang belum lengkap. Rujukan utama dan indeks juga belum ada.Revisi 1.4 08-11-2003 Revised by: Kelompok 49Pengubahan template versi 1.3 dengan template yang baru yang akan digunakan dalam versi 1.4-2.0Revisi 1.3.0.5 12-11-2003 Revised by: RMS46Revisi ini diedit oleh Rahmat M. Samik-Ibrahim: dipilah sesuai dengan sub-pokok bahasan yang ada.Revisi 1.3 30-09-2003 Revised by: RMS46Revisi ini diedit oleh Rahmat M. Samik-Ibrahim: melanjutkan perbaikan tata letak dan pengindeksan.Revisi 1.2 17-09-2003 Revised by: RMS46Revisi ini diedit oleh Rahmat M. Samik-Ibrahim: melanjutkan perbaikan.Revisi 1.1 01-09-2003 Revised by: RMS46Revisi ini diedit oleh Rahmat M. Samik-Ibrahim: melakukan perbaikan struktur SGML, tanpa terlalu banyak mengubah isi buku.Revisi 1.0 27-05-2003 Revised by: RMS46Kompilasi ulang, serta melakukan sedikit perapihan.Revisi 0.21.4 05-05-2003 Revised by: Kelompok 21Perapihan berkas dan penambahan entity.Revisi 0.21.3 29-04-2003 Revised by: Kelompok 21Perubahan dengan menyempurnakan nama file.Revisi 0.21.2 24-04-2003 Revised by: Kelompok 21Merubah Kata Pengantar.Revisi 0.21.1 21-04-2003 Revised by: Kelompok 21Menambahkan Daftar Pustaka dan Index.Revisi 0.21.0 26-03-2003 Revised by: Kelompok 21Memulai membuat tugas kelompok kuliah Sistem Operasi.

Page 3: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

PersembahanBuku ini dipersembahkandari Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan 41–49Semester Ganjil 2003/2004 Mata Kuliah Sistem Operasi,olehGabungan Kelompok Kerja 21–28Semester Genap 2002/2003 dan 41–49 Semester Ganjil 2003/2004 Mata Kuliah Sistem Operasi,untuksiapa saja yang ingin mempelajari Sistem Operasi. Tim penyusun buku ini ialah sebagai berikut:

Kelompok 21 (Koordinator)

Dhani Yuliarso, Fernan, Hanny Faristin, Melanie Tedja, Paramanandana D.M., Widya Yuwanda.

Kelompok 22

Budiono Wibowo, Agus Setiawan, Baya U.H.S., Budi A. Azis Dede Junaedi, Heriyanto, MuhammadRusdi.

Kelompok 23

Indra Agung, Ali Khumaidi, Arifullah, Baihaki A.S., Christian K.F. Daeli, Eries Nugroho, Eko Seno P.,Habrar, Haris Sahlan.

Kelompok 24

Adzan Wahyu Jatmiko, Agung Pratomo, Dedy Kurniawan, Samiaji Adisasmito, Zidni Agni.

Kelompok 25

Nasrullah, Amy S. Indrasari, Ihsan Wahyu, Inge Evita Putri, Muhammad Faizal Ardhi, Muhammad ZakiRahman, N. Rifka N. Liputo, Nelly, Nur Indah, R. Ayu P., Sita A.R.

Kelompok 26

Rakhmad Azhari, Adhe Aries, Adityo Pratomo, Aldiantoro Nugroho, Framadhan A., Pelangi, SatrioBaskoro Y.

Kelompok 27

Teuku Amir F.K., Alex Hendra Nilam, Anggraini W., Ardini Ridhatillah, R. Ferdy Ferdian, RiptaRamelan, Suluh Legowo, Zulkifli.

Kelompok 28

Christiono H, Arief Purnama L.K., Arman Rahmanto, Fajar, Muhammad Ichsan, Rama P. Tardan, UnedoSanro Simon.

Kelompok 41

Ahmad Furqan S K., Aristo, Obeth M S.

Kelompok 42

Puspita K S, Retno Amelia, Susi R, Sutia H.

Kelompok 43

Agus Setiawan, Adhita Amanda, Afaf M, Alisa Dewayanti, Andung J Wicaksono, Dian Wulandari L,Gunawan, Jefri Abdullah, M Gantino, Prita I.

Kelompok 44

Arnold W, Antonius H, Irene, Theresia B, Ilham W K, Imelda T, Dessy N, Alex C.

Page 4: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Kelompok 45

Bima Satria T, Adrian Dwitomo, Alfa Rega M, Boby, Diah Astuti W, Dian Kartika P, Pratiwi W, SBudianti S, Satria Graha, Siti Mawaddah, Vita Amanda.

Kelompok 46

Josef, Arief Aziz, Bimo Widhi Nugroho, Chrysta C P, Dian Maya L, Monica Lestari P, MuhammadAlaydrus, Syntia Wijaya Dharma, Wilmar Y Ignesjz, Yenni R

Kelompok 47

Bayu Putera, Enrico, Ferry Haris, Franky, Hadyan Andika, Ryan Loanda, Satriadi, Setiawan A, Siti PWulandari, Tommy Khoerniawan, Wadiyono Valens, William Hutama.

Kelompok 48

Amir Murtako, Dwi Astuti A, M Abdushshomad E, Mauldy Laya, Novarina Azli, Raja Komkom S.

Kelompok 49 (Koordinator)

Fajran Iman Rusadi, Carroline D Puspa.

4

Page 5: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Daftar IsiKata Pengantar...........................................................................................................................................i

1. Konsep Dasar Perangkat Komputer....................................................................................................1

1.1. Pendahuluan................................................................................................................................11.1.1. Komponen Sistem Komputer.........................................................................................11.1.2. Definisi Sistem Operasi..................................................................................................21.1.3. Kelas Komputer..............................................................................................................3

1.1.3.1. Klasifikasi Menurut Ukuran...............................................................................31.1.3.1.1. Grid Computer/Super Computer...........................................................31.1.3.1.2. Mainframe Computer............................................................................41.1.3.1.3. Mini Computer......................................................................................61.1.3.1.4. Workstation...........................................................................................61.1.3.1.5. Desktop Computer.................................................................................71.1.3.1.6. Desknote Computer...............................................................................71.1.3.1.7. Notebook Computer..............................................................................81.1.3.1.8. Handheld System...................................................................................81.1.3.1.9. Embedded System.................................................................................9

1.1.3.2. Klasifikasi Menurut Karakteristik......................................................................91.1.3.2.1. Single Processor / Uniprocessor............................................................91.1.3.2.2. Multiprocessor/Paralel System..............................................................91.1.3.2.3. Personal Computer................................................................................91.1.3.2.4. Distributed System..............................................................................101.1.3.2.5. Clustered System.................................................................................101.1.3.2.6. Real Time Systems/Sistem Waktu Nyata............................................11

1.1.3.3. Klasifikasi Menurut Jenis Data yang Diolah...................................................121.1.3.3.1. Digital Computer.................................................................................121.1.3.3.2. Analog Computer................................................................................121.1.3.3.3. Hybrid Computer.................................................................................12

1.1.4. Lingkungan Komputasi................................................................................................121.2. Struktur Sistem Komputer.........................................................................................................13

1.2.1. Operasi Sistem Komputer.............................................................................................131.2.2. Struktur I/O...................................................................................................................16

1.2.2.1. Direct Memory Access....................................................................................171.2.2.2. Bus...................................................................................................................17

1.2.3. Struktur Storage............................................................................................................181.2.3.1. Register............................................................................................................181.2.3.2. Cache Memory.................................................................................................181.2.3.3. Random Access Memory (RAM) - Main Memory..........................................181.2.3.4. Extension Memory...........................................................................................181.2.3.5. Secondary Storage...........................................................................................18

1.2.4. Hirarki Storage.............................................................................................................201.3. Proteksi Hardware dan Struktur Jaringan.................................................................................21

1.3.1. Proteksi Perangkat Keras..............................................................................................211.3.1.1. Dual Mode Operation......................................................................................211.3.1.2. I/O Protection...................................................................................................221.3.1.3. Memory Protection..........................................................................................22

v

Page 6: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

1.3.1.4. CPU Protection................................................................................................231.3.2. Struktur Jaringan..........................................................................................................23

1.3.2.1. Local Area Network.........................................................................................231.3.2.2. Wide Area Network.........................................................................................24

1.4. Rangkuman...............................................................................................................................251.5. Latihan......................................................................................................................................27

2. Konsep Dasar Sistem Operasi............................................................................................................28

2.1. Struktur Sistem Operasi............................................................................................................282.1.1. Komponen-komponen Sistem......................................................................................28

2.1.1.1. Manajemen Proses...........................................................................................282.1.1.2. Manajemen Memori Utama.............................................................................292.1.1.3. Manajemen Berkas...........................................................................................292.1.1.4. Manajemen SistemI/O ..................................................................................292.1.1.5. Manajemen Penyimpanan Sekunder................................................................292.1.1.6. Sistem Proteksi................................................................................................302.1.1.7. Jaringan............................................................................................................302.1.1.8.Command-Interpreter System..........................................................................30

2.2. Layanan Sistem Operasi, System Calls, dan System Program.................................................302.2.1. Layanan Sistem Operasi...............................................................................................312.2.2. System Calls.................................................................................................................322.2.3. System Program............................................................................................................35

2.3. Struktur Sistem..........................................................................................................................362.3.1. Struktur Sederhana.......................................................................................................372.3.2. Pendekatan Terlapis......................................................................................................372.3.3. Mikrokernel..................................................................................................................42

2.4. Mesin Virtual, Desain Sistem dan Implementasinya, dan System Generation.........................432.4.1. Mesin Virtual................................................................................................................43

2.4.1.1. Mesin Virtual Java...........................................................................................432.4.2. Desain Sistem dan Implementasinya............................................................................44

2.4.2.1. Mekanisme dan Kebijakan...............................................................................442.4.2.2. Implementasi....................................................................................................44

2.4.3. System Generation........................................................................................................442.5. Rangkuman...............................................................................................................................452.6. Latihan......................................................................................................................................452.7. Rujukan.....................................................................................................................................46

3. Proses dan Penjadwalan......................................................................................................................47

3.1. Konsep Proses...........................................................................................................................473.1.1. Definisi Proses..............................................................................................................473.1.2. Status Proses.................................................................................................................483.1.3. Process Control Block..................................................................................................493.1.4.Threads.........................................................................................................................51

3.2. Penjadwalan Proses...................................................................................................................523.2.1. Queue Scheduling.........................................................................................................523.2.2. Scheduler......................................................................................................................543.2.3. Context Switch.............................................................................................................56

3.3. Interaksi Proses.........................................................................................................................583.3.1. Proses yang Kooperatif.................................................................................................58

vi

Page 7: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

3.3.2. Masalah Produser/Konsumer........................................................................................583.4. Hubungan Antara Proses dan Client/Server Proses..................................................................61

3.4.1. Hubungan Antara Proses..............................................................................................613.4.1.1. Proses yang Kooperatif....................................................................................623.4.1.2. Komunikasi Proses Dalam Sistem...................................................................63

3.4.1.2.1. Sistem Penyampaian Pesan.................................................................643.4.1.2.2. Penamaan............................................................................................64

3.4.1.2.2.1. Komunikasi Langsung............................................................643.4.1.2.2.2. Komunikasi Tidak Langsung..................................................65

3.4.1.3. Sinkronisasi......................................................................................................663.4.1.4. Buffering..........................................................................................................663.4.1.5. Contoh Produser-Konsumer.............................................................................673.4.1.6. Mailbox............................................................................................................69

3.4.2. Client/Server System....................................................................................................703.4.2.1. Socket...............................................................................................................70

3.4.2.1.1. Server dan Thread...............................................................................703.4.2.1.2. Java Socket..........................................................................................703.4.2.1.3. RPC (Remote Procedure Call)............................................................723.4.2.1.4. Java RMI.............................................................................................72

3.4.2.1.4.1. Pembuatan Remote Objek......................................................723.4.2.1.4.2. Akses ke Remote Objek..........................................................72

3.5. Konsep Thread..........................................................................................................................733.5.1. Apa itu Thread..............................................................................................................733.5.2. Keuntungan Thread......................................................................................................743.5.3. User dan Kernel Threads..............................................................................................753.5.4. Multithreading Models.................................................................................................763.5.5. Fork dan exec System Call...........................................................................................783.5.6. Cancellation..................................................................................................................783.5.7. Penanganan Sinyal........................................................................................................793.5.8. Thread Pools.................................................................................................................803.5.9. Hal-Hal Lainnya dari Thread........................................................................................80

3.5.9.1. Thread-Specific Data.......................................................................................813.5.9.2. Pthreads............................................................................................................81

3.6. IlustrasiThreaddengan Linux dan Java....................................................................................813.6.1.Threaddengan Linux...................................................................................................813.6.2.Threaddengan Java......................................................................................................82

3.6.2.1. PembuatanThread...........................................................................................823.6.2.2. JVM danHost Operating System.....................................................................83

3.7. Penjadwal CPU.........................................................................................................................833.7.1. Konsep Dasar................................................................................................................833.7.2. Siklus Burst CPU-I/O...................................................................................................843.7.3. Penjadwalan CPU.........................................................................................................863.7.4. Penjadwalan Preemptive...............................................................................................863.7.5. Dispatcher.....................................................................................................................873.7.6. Kriteria Penjadwalan....................................................................................................873.7.7. Penjadwalan Preemptive...............................................................................................87

3.8. Algoritma Penjadwalan.............................................................................................................883.8.1.First-Come, First-Served..............................................................................................88

vii

Page 8: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

3.8.2.Shortest-Job First.........................................................................................................883.8.3.Priority .........................................................................................................................893.8.4.Round-Robin.................................................................................................................893.8.5.Multilevel Queue...........................................................................................................893.8.6.Multilevel Feedback Queue..........................................................................................89

3.9. Prioritas dan Multiprosesor.......................................................................................................903.9.1. Apa itu Prioritas............................................................................................................903.9.2. Multiprosesor................................................................................................................90

3.10. Sistem Waktu Nyata................................................................................................................913.10.1. Sistem Hard Real-Time..............................................................................................913.10.2. Sistem Soft Real-Time................................................................................................91

3.11. Rangkuman.............................................................................................................................943.11.1. Proses..........................................................................................................................943.11.2. Thread.........................................................................................................................943.11.3. Penjadwalan CPU.......................................................................................................95

3.12. Latihan....................................................................................................................................963.12.1. Proses..........................................................................................................................963.12.2. Thread.........................................................................................................................973.12.3. Penjadwalan CPU.......................................................................................................973.12.4. Client/Server System..................................................................................................98

3.13. Rujukan...................................................................................................................................98

4. Sinkronisasi dan Deadlock................................................................................................................100

4.1. Latar Belakang Sinkronisasi...................................................................................................1004.1.1. MasalahBounded Buffer............................................................................................1004.1.2. MasalahRace Condition.............................................................................................101

4.2. ProblemaCritical Section.......................................................................................................1014.2.1. PengertianCritical Section.........................................................................................1024.2.2. SolusiCritical Section................................................................................................103

4.2.2.1. Solusi untuk Dua Proses................................................................................1034.2.2.1.1. Algoritma 1.......................................................................................1054.2.2.1.2. Algoritma 2.......................................................................................1064.2.2.1.3. Algoritma 3.......................................................................................108

4.2.2.2. Solusi untuk Proses Jamak: Algoritma Tukang Roti.....................................1094.3. Sinkronisasi dengan Perangkat Keras dan Semafor................................................................110

4.3.1. Peran Hardware Dalam Proses Sinkronisasi..............................................................1104.3.2. Metode dalam sinkronisasi hardware.........................................................................1104.3.3.Processor Synchronous...............................................................................................1104.3.4.Memory Synchronous.................................................................................................1114.3.5. Instruksi Atomic.........................................................................................................1124.3.6. Semafor.......................................................................................................................113

4.3.6.1. Sejarah Semafor.............................................................................................1134.3.6.2. Konsep dan Pengertian Semafor....................................................................1134.3.6.3. Subrutin wait..................................................................................................1144.3.6.4. Subrutin signal...............................................................................................115

4.3.7. Macam - macam Semafor...........................................................................................1154.3.8. Masalah - Masalah Sinkronisasi yang Dapat Diselesaikan oleh Semafor..................116

4.3.8.1. Semafor menyelesaikan masalahcritical section.........................................116

viii

Page 9: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

4.3.8.2. Semafor menyelesaikan masalah sinkronisasi antar proses...........................1174.3.8.3. Solusi PembuatanCounting SemaphoredariBinary Semaphore..................1174.3.8.4. Semafor dalamProducer Consumer Problem..............................................1194.3.8.5. Semaphore dalam masalahReaders/Writers................................................1234.3.8.6. Semafor dalam masalahDining Philosophers..............................................123

4.3.9. Semafor di dalam Pemrograman................................................................................1244.3.9.1. Pemrograman windows..................................................................................1244.3.9.2. Pemrograman Javatm.......................................................................................125

4.4. MasalahBounded-Buffer.........................................................................................................1254.4.1. Pengertian Umum.......................................................................................................1254.4.2. Masalah Produsen-Konsumen....................................................................................1264.4.3. Sinkronisasi MasalahBounded-BufferMenggunakan Semafor.................................1264.4.4. Sinkronisasi pada Java................................................................................................130

4.5. MasalahReaders/WritersdanDining Philosophers...............................................................1324.5.1. Gambaran Umum MasalahReaders/Writers..............................................................1324.5.2. Solusi Dengan Pembaca Diprioritaskan.....................................................................1334.5.3. Solusi Dengan Penulis Diprioritaskan........................................................................1394.5.4. Solusi Dengan Pembaca Dan Penulis Mendapat Prioritas Secara Bergantian...........1424.5.5. MasalahDining Philosophers....................................................................................143

4.6.Critical Regiondan Monitor .................................................................................................1464.6.1. Pengantar....................................................................................................................1464.6.2. KonsepCritical Region..............................................................................................1464.6.3. KomponenCritical Region.........................................................................................1464.6.4. Cara KerjaCritical Region.........................................................................................1474.6.5. ImplementasiCritical RegiondalamBounded Buffer................................................1484.6.6. KeterbatasanCritical Region......................................................................................1484.6.7. Konsep Monitor..........................................................................................................1484.6.8. Variabel Kondisi.........................................................................................................1494.6.9. Implementasi Monitor dalamDining Philosophers...................................................1504.6.10. Keterbatasan Monitor...............................................................................................152

4.7. Deadlock.................................................................................................................................1524.7.1. Prinsip darideadlock..................................................................................................1524.7.2. Sumber Daya..............................................................................................................154

4.7.2.1. Sumber Daya yang Bisa Dipakai Berulang-Ulang........................................1544.7.2.2. Sumber Daya Sekali Pakai.............................................................................155

4.7.3. Kondisi untuk Terjadinyadeadlock............................................................................1554.7.4. Penanganandeadlock.................................................................................................156

4.7.4.1. Mengabaikan Masalahdeadlock....................................................................1564.7.4.2. Mendeteksi dan Memperbaiki........................................................................156

4.7.4.2.1. LewatPreemption..............................................................................1574.7.4.2.2. Lewat melacak kembali.....................................................................1574.7.4.2.3. Lewat membunuh proses yang menyebabkandeadlock....................157

4.7.4.3. Menghindarideadlock...................................................................................1574.7.4.3.1. Kondisi Aman....................................................................................1584.7.4.3.2. Algoritma Bankir...............................................................................158

4.7.4.4. Pencegahandeadlock.....................................................................................1594.8. Diagram Graf..........................................................................................................................160

4.8.1. Komponen Graf Alokasi Sumber Daya......................................................................160

ix

Page 10: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

4.8.2. DeteksiDeadlockBerdasarkan Graf Alokasi Sumber Daya......................................1624.8.3. Algoritma Graf Alokasi Sumber Daya untuk MencegahDeadlock...........................1654.8.4. DeteksiDeadlockdengan Menggunakan Graf Tunggu..............................................167

4.9. Rangkuman.............................................................................................................................1684.10. Latihan..................................................................................................................................169

5. Managemen Memori.........................................................................................................................175

5.1. Manajemen Memori................................................................................................................1755.1.1. Latar Belakang............................................................................................................1755.1.2. Pemberian Alamat......................................................................................................1755.1.3. Ruang Alamat Logika & Fisik...................................................................................1755.1.4. Pemanggilan Dinamis.................................................................................................1765.1.5. Penghubungan Dinamis dan Perpustakaan Bersama..................................................1775.1.6.Overlays......................................................................................................................178

5.2. Penukaran dan Alokasi Memori..............................................................................................1795.2.1. Penukaran...................................................................................................................1795.2.2. Pengalokasian Memori...............................................................................................181

5.2.2.1. Alokasi Memori Berkesinambungan.............................................................1815.2.2.2. Fragmentasi....................................................................................................183

5.3. Pemberian Halaman................................................................................................................1845.3.1. Metode Dasar..............................................................................................................1845.3.2. Dukungan Perangkat Keras........................................................................................1855.3.3. Proteksi.......................................................................................................................1855.3.4. Keuntungan dan Kerugian Pemberian Halaman.........................................................186

5.4. Struktur Tabel Halaman..........................................................................................................1865.4.1. Tabel Halaman............................................................................................................1885.4.2. Pemberian Page SecaraMultilevel .............................................................................1895.4.3. Tabel Halaman secaraInverted...................................................................................1915.4.4. Berbagi Halaman........................................................................................................192

5.5. Segmentasi..............................................................................................................................1925.5.1. Arsitektur Segmentasi................................................................................................1925.5.2. Saling Berbagi dan Proteksi.......................................................................................1935.5.3. Masalah dalam Segmentasi........................................................................................1945.5.4. Segmentasi dengan Pemberian Halaman....................................................................1945.5.5. Penggunaan Segmentasi.............................................................................................195

5.6. Pengantar Memori Virtual;Demand Paging...........................................................................1975.6.1. Pengertian...................................................................................................................1985.6.2. Keuntungan.................................................................................................................1995.6.3. Implementasi..............................................................................................................2005.6.4.Demand Paging..........................................................................................................200

5.6.4.1. Permasalahan padaDemand Paging..............................................................2005.6.4.2. Skema Bit Valid - Tidak Valid.......................................................................2015.6.4.3. Penanganan kesalahan halaman.....................................................................2015.6.4.4. Apa yang terjadi pada saat kesalahan ?..........................................................2025.6.4.5. KinerjaDemand Paging.................................................................................2025.6.4.6. Permasalahan Lain yang berhubungan denganDemand Paging...................2035.6.4.7. Persyaratan Perangkat Keras..........................................................................203

5.7. Aspek Permintaan Halaman: Pembuatan Proses.....................................................................204

x

Page 11: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

5.7.1. Copy-On-Write...........................................................................................................2045.7.2. Memory-Mapped Files...............................................................................................204

5.8. Konsep Dasar Pemindahan Halaman......................................................................................2065.8.1. Konsep Dasar..............................................................................................................206

5.9. Algoritma Pemindahan Halaman............................................................................................2085.9.1. Algoritma FIFO(First In First Out)...........................................................................2085.9.2. Algoritma Optimal......................................................................................................2095.9.3. Algoritma LRU(Least Recently Used)......................................................................2105.9.4. Algoritma Perkiraan LRU..........................................................................................2125.9.5. AlgoritmaCounting....................................................................................................2135.9.6. AlgoritmaPage Buffering...........................................................................................214

5.10. Strategi Alokasi Frame..........................................................................................................2145.10.1. AlokasiFrame..........................................................................................................214

5.10.1.1. JumlahFrameMinimum..............................................................................2145.10.1.2. Algoritma Alokasi........................................................................................2155.10.1.3. Alokasi Global lawan Lokal........................................................................215

5.10.2.Thrashing..................................................................................................................2165.10.2.1. PenyebabThrashing.....................................................................................2165.10.2.2. Membatasi EfekThrashing..........................................................................2175.10.2.3. ModelWorking Set.......................................................................................2185.10.2.4. Frekuensi Kesalahan Halaman.....................................................................219

5.11. Pertimbangan Lain................................................................................................................2205.11.1.Prepaging.................................................................................................................2205.11.2. Ukuran halaman........................................................................................................2205.11.3. JangkauanTLB .........................................................................................................2215.11.4. Tabel Halaman yang Dibalik....................................................................................2225.11.5. Struktur Program......................................................................................................2225.11.6. I/OInterlock.............................................................................................................2225.11.7. Pemrosesan Waktu Nyata.........................................................................................2235.11.8. Contoh pada Sistem Operasi....................................................................................2235.11.9. Windows NT.............................................................................................................2235.11.10. Solaris 2..................................................................................................................2235.11.11. Linux.......................................................................................................................224

5.12. Rangkuman...........................................................................................................................2255.13. Latihan..................................................................................................................................2265.14. Rujukan.................................................................................................................................227

6. Sistem Berkas.....................................................................................................................................228

6.1. Sistem Berkas..........................................................................................................................2286.1.1. Konsep Berkas............................................................................................................2286.1.2. Atribut berkas.............................................................................................................2286.1.3. Tipe berkas.................................................................................................................2296.1.4. Operasi Berkas............................................................................................................2296.1.5. Struktur Berkas...........................................................................................................2306.1.6. Metode Akses.............................................................................................................231

6.2. Struktur Direktori....................................................................................................................2316.2.1. Operasi Direktori........................................................................................................2316.2.2. Beberapa Struktur Direktori.......................................................................................232

xi

Page 12: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

6.2.2.1. Direktori Satu Tingkat(Single Level Directory)............................................2326.2.2.2. Direktori Dua Tingkat(Two Level) Direktori................................................2336.2.2.3. Direktori dengan Struktur Tree(Tree- Structured Directory)........................2336.2.2.4. Direktori dengan Struktur Graf Asiklik(Acyclic-Structured Directory))......2346.2.2.5. Direktori dengan Struktur Graf Umum..........................................................234

6.3. Konsep Mounting, Sharing, dan Proteksi................................................................................2346.3.1.Mounting.....................................................................................................................235

6.3.1.1.Mounting Overview........................................................................................2356.3.1.2. MemahamiMount Point................................................................................2356.3.1.3.MountingSistem Berkas, Direktori, dan Berkas...........................................236

6.3.2.Sharing.......................................................................................................................2376.3.2.1. Banyak Pengguna...........................................................................................2376.3.2.2.Remote File System........................................................................................2386.3.2.3.Cient-Server Model........................................................................................238

6.3.3. Proteksi.......................................................................................................................2386.3.3.1. Tipe Akses......................................................................................................2386.3.3.2. Kontrol Akses................................................................................................2396.3.3.3. Pendekatan Pengamanan Lainnya..................................................................240

6.4. Implementasi Sistem Berkas...................................................................................................2416.4.1. Struktur Sistem Berkas...............................................................................................2416.4.2. Implementasi Sistem Berkas......................................................................................244

6.4.2.1. Gambaran.......................................................................................................2456.4.2.2. Partisi danMounting......................................................................................2466.4.2.3. Sistem Berkas Virtual....................................................................................246

6.4.3. Implementasi Direktori...............................................................................................2486.4.3.1. Algoritma.......................................................................................................248

6.4.3.1.1.Linear List.........................................................................................2486.4.3.1.2.Hash Table.........................................................................................249

6.4.3.2. Direktori pada CP/M......................................................................................2496.4.3.3. Direktori pada MS-DOS................................................................................2506.4.3.4. Direktori pada UNIX.....................................................................................250

6.5.Filesystem Hierarchy Standard..............................................................................................2516.5.1. Pendahuluan...............................................................................................................2516.5.2. Sistem Berkas.............................................................................................................2516.5.3. Sistem BerkasRoot....................................................................................................252

6.5.3.1. Tujuan............................................................................................................2526.5.3.2. Persyaratan.....................................................................................................2526.5.3.3. Pilihan Spesifik..............................................................................................2536.5.3.4. /bin: Perintah biner dasar (untuk digunakan oleh semua pengguna).............2536.5.3.5. /boot: Berkas statik untuk me-load boot........................................................2536.5.3.6. /dev: Berkas peranti.......................................................................................2536.5.3.7. /etc: Konfigurasi sistemhost-specific............................................................2536.5.3.8. /home: Direktori home pengguna..................................................................2536.5.3.9. /lib: Pustaka dasar bersama dan modulkernel...............................................2546.5.3.10. /lib<qual>: Format alternatif dari pustaka dasar bersama............................2546.5.3.11. /media: Mount point mediaremovable.......................................................2546.5.3.12. /mnt:Mount pointuntuk sistem berkas yang di-mount secara temporer....2546.5.3.13. /opt: Aplikasi tambahan untuk paket peringkat lunak.................................254

xii

Page 13: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

6.5.3.14. /root: Direktorihomeuntukroot pengguna.................................................2546.5.3.15. /sbin: Sistem Biner.......................................................................................2546.5.3.16. /srv: Data untuk servis yang disediakan oleh sistem...................................2556.5.3.17. /tmp: Berkas-berkas temporer......................................................................255

6.5.4. Hirarki /usr..................................................................................................................2556.5.4.1. Tujuan............................................................................................................2556.5.4.2. Persyaratan.....................................................................................................2556.5.4.3. Pilihan spesifik...............................................................................................2556.5.4.4. /usr/X11R6: Sistem X Window, Versi 11 Release 6......................................2566.5.4.5. /usr/bin: Sebagian perintah pengguna............................................................2566.5.4.6. /usr/include: Direktori untukinclude-filesstandar.........................................2566.5.4.7. /usr/lib: Pustaka untuk pemrograman danpackage.......................................2566.5.4.8. /usr/lib<qual>: Format pustaka alternatif......................................................2576.5.4.9. /usr/local/share...............................................................................................2576.5.4.10. /usr/sbin: Sistem biner standar yang non-vital.............................................2576.5.4.11. /usr/share: Data arsitektur independen.........................................................2576.5.4.12. /usr/src: Kodesource....................................................................................257

6.5.5. Hirarki /var.................................................................................................................2576.5.5.1. Tujuan............................................................................................................2576.5.5.2. Persyaratan.....................................................................................................2586.5.5.3. Pilihan Spesifik..............................................................................................2586.5.5.4. /var/account:Log accountingproses..............................................................2586.5.5.5. /var/cache: Aplikasi datacache.....................................................................2596.5.5.6. /var/crash:System crash dumps....................................................................2596.5.5.7. /var/games: Data variabelgame....................................................................2596.5.5.8. /var/lib: Informasi status variabel..................................................................2596.5.5.9. /var/lock:Lockberkas....................................................................................2596.5.5.10. /var/log: Berkas dan direktorilog ...............................................................2606.5.5.11. /var/mail: Berkasmailboxpengguna...........................................................2606.5.5.12. /var/opt: Data variabel untuk /opt................................................................2606.5.5.13. /var/run: Data variabelrun-time..................................................................2606.5.5.14. /var/spool: Aplikasi dataspool....................................................................2606.5.5.15. /var/tmp: Berkas temporer yang diletakkan di dalamrebootsistem...........2606.5.5.16. /var/yp: Berkas database Network Information Service (NIS)....................260

6.6. Konsep Alokasi Blok Sistem Berkas......................................................................................2616.6.1. Metode Alokasi..........................................................................................................261

6.6.1.1.Contiguous Allocation...................................................................................2616.6.1.2.Linked Allocation...........................................................................................2626.6.1.3.Indexed Allocation.........................................................................................2646.6.1.4. Kinerja Sistem Berkas....................................................................................266

6.6.2. Manajemen Ruang Kosong........................................................................................2666.6.2.1.Bit Vector........................................................................................................2666.6.2.2.Linked List......................................................................................................2676.6.2.3.Grouping........................................................................................................2686.6.2.4.Counting.........................................................................................................269

6.6.3. Efisiensi dan Kinerja...................................................................................................2696.6.3.1. Efisiensi..........................................................................................................2696.6.3.2. Kinerja............................................................................................................269

xiii

Page 14: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

6.6.4.Recovery.....................................................................................................................2716.6.4.1. Pengecekan Rutin...........................................................................................2716.6.4.2.Backup dan Restore........................................................................................272

6.6.5.Log-Structured File System........................................................................................2736.7. Rangkuman.............................................................................................................................2736.8. Latihan....................................................................................................................................2746.9. Rujukan...................................................................................................................................275

6.9.1. Rujukan Buku:............................................................................................................2766.9.2. Rujukan Internet:........................................................................................................276

7. I/O........................................................................................................................................................277

7.1. Perangkat Keras I/O................................................................................................................2777.1.1. Prinsip-prinsip Perangkat Keras I/O...........................................................................277

7.1.1.1. Perangkat I/O.................................................................................................2777.1.1.2. Pengendali Perangkat.....................................................................................278

7.1.2. Polling.........................................................................................................................2787.1.3. Interupsi......................................................................................................................279

7.1.3.1. Mekanisme Dasar Interupsi...........................................................................2797.1.3.2. Fitur Tambahan pada Komputer Modern.......................................................2797.1.3.3.Interrupt Request Line...................................................................................2797.1.3.4.Interrupt Vector dan Interrupt Chaining........................................................2807.1.3.5. Penyebab Interupsi.........................................................................................280

7.1.4. DMA (Direct Memory Access)...................................................................................2807.1.4.1. Definisi...........................................................................................................2807.1.4.2. Transfer DMA................................................................................................2807.1.4.3.Handshaking..................................................................................................2817.1.4.4. Cara-cara Implementasi DMA.......................................................................281

7.2. Aplikasi Antarmuka I/O; Subsistem Kernel; Operasi Perangkat Keras..................................2817.2.1. Aplikasi Antarmuka I/O.............................................................................................282

7.2.1.1. Peralatan Blok dan Karakter..........................................................................2837.2.1.2. Peralatan Jaringan..........................................................................................2837.2.1.3. Jam danTimer................................................................................................2837.2.1.4.BlockingdanNonblocking I/O.......................................................................284

7.2.2.Kernel I/O Subsystem.................................................................................................2847.2.2.1. Penjadwalan I/O.............................................................................................2847.2.2.2.Buffering........................................................................................................2857.2.2.3.Caching..........................................................................................................2867.2.2.4.Spoolingdan Reservasi Perangkat.................................................................2867.2.2.5.Error Handling ..............................................................................................2877.2.2.6. Struktur DataKernel......................................................................................288

7.2.3. Penanganan Permintaan I/O.......................................................................................2897.3.I/O Streamsdan Kinerja I/O....................................................................................................290

7.3.1.I/O Streams.................................................................................................................2907.3.2. Kinerja I/O..................................................................................................................291

7.4. ManajemenDisk .....................................................................................................................2937.4.1. StrukturDisk...............................................................................................................2937.4.2. PenjadwalanDisk .......................................................................................................294

7.4.2.1. Penjadwalan FCFS.........................................................................................295

xiv

Page 15: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

7.4.2.2. Penjadwalan SSTF.........................................................................................2957.4.2.3. Penjadwalan SCAN.......................................................................................2977.4.2.4. Penjadwalan C-SCAN...................................................................................2987.4.2.5. Penjadwalan LOOK.......................................................................................2997.4.2.6. Penjadwalan C-LOOK...................................................................................3007.4.2.7. Pemilihan Algoritma PenjadwalanDisk........................................................301

7.5. Manajemen Disk;Swap, Struktur RAID; Kaitan Langsung dan Jaringan; ImplementasiPenyimpanan Stabil..............................................................................................................3017.5.1. Manajemen Disk.........................................................................................................3027.5.2. Managemen RuangSwap ..........................................................................................3037.5.3. Struktur RAID............................................................................................................304

7.5.3.1. Peningkatan Kehandalan dan Kinerja............................................................3057.5.3.2. Level RAID....................................................................................................305

7.5.4. Kaitan Disk.................................................................................................................3087.5.4.1.Host-Attached Storage...................................................................................3087.5.4.2.Storage-Area NetworkdanNetwork-Attached Storage.................................3087.5.4.3. Implementasi Penyimpanan Stabil.................................................................310

7.6. Perangkat Penyimpanan Tersier..............................................................................................3117.6.1. Macam-macam Struktur Penyimpanan Tersier..........................................................3117.6.2. Future Technology......................................................................................................3137.6.3. Aplikasi Antarmuka....................................................................................................3137.6.4. Masalah Kinerja..........................................................................................................314

7.7. Rangkuman.............................................................................................................................3157.7.1.I/O...............................................................................................................................3157.7.2. Disk.............................................................................................................................315

7.8. Latihan....................................................................................................................................316Daftar Pustaka................................................................................................................................317

8. Studi Kasus: GNU/Linux ..................................................................................................................318

8.1. Perangkat Lunak Bebas...........................................................................................................3188.1.1. Konsep bebas..............................................................................................................3188.1.2. Open source................................................................................................................3188.1.3. Public Domain............................................................................................................3198.1.4. Copylefted..................................................................................................................319

8.1.4.1. Non-copylefted..............................................................................................3198.1.4.2. GPL-covered..................................................................................................320

8.1.4.2.1. GNU..................................................................................................3208.1.4.2.2. Program GNU...................................................................................3208.1.4.2.3. Perangkat Lunak Semi-Bebas...........................................................3218.1.4.2.4. Perangkat Lunak Berpemilik.............................................................3218.1.4.2.5. Shareware..........................................................................................3228.1.4.2.6. Perangkat Lunak Komersial..............................................................322

8.2. Sejarah dan Rancangan Dasar GNU/Linux.............................................................................3228.2.1. Sejarah........................................................................................................................3228.2.2. Kernel Linux...............................................................................................................3238.2.3. Sistem Linux...............................................................................................................3238.2.4. Distribusi Linux..........................................................................................................3248.2.5. Lisensi Linux..............................................................................................................325

xv

Page 16: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

8.2.6. Prinsip Rancangan......................................................................................................3258.2.7. Prinsip Desain Linux..................................................................................................3258.2.8. Komponen Sistem Linux............................................................................................3268.2.9. Kernel.........................................................................................................................3268.2.10. Perpustakaan Sistem.................................................................................................3268.2.11. Utilitas Sistem..........................................................................................................327

8.3. Proses dan Memori..................................................................................................................3278.3.1. Manajemen Proses......................................................................................................327

8.3.1.1. Pendahuluan...................................................................................................3278.3.1.2. Proses dan thread...........................................................................................3288.3.1.3. Penjadualan....................................................................................................3298.3.1.4. Sinkronisasi Kernel........................................................................................3298.3.1.5. Penjadualan Proses.........................................................................................3318.3.1.6. Symmetric Multiprocessing...........................................................................332

8.3.2. Manajemen Memori...................................................................................................3338.3.2.1. Managemen Memori Fisik.............................................................................3338.3.2.2. Memori Virtual...............................................................................................3348.3.2.3. Demand Paging..............................................................................................3348.3.2.4. Swaping..........................................................................................................335

8.4. Sistem Berkas dan I/O Linux..................................................................................................3368.4.1. Sistem Berkas Linux...................................................................................................336

8.4.1.1. Sistem Berkas Virtual....................................................................................3368.4.1.2. Operasi-operasi Dalam Inode........................................................................3378.4.1.3. Sistem Berkas Linux......................................................................................3378.4.1.4. Pembagian Sistem Berkas Secara Ortogonal.................................................339

8.4.2. I/O Linux....................................................................................................................3408.5. Rangkuman.............................................................................................................................3428.6. Latihan....................................................................................................................................3438.7. Rujukan...................................................................................................................................344

A. GNU Free Documentation License...................................................................................................345

A.1. PREAMBLE..........................................................................................................................345A.2. APPLICABILITY AND DEFINITIONS ..............................................................................345A.3. VERBATIM COPYING.........................................................................................................346A.4. COPYING IN QUANTITY ...................................................................................................346A.5. MODIFICATIONS.................................................................................................................347A.6. COMBINING DOCUMENTS...............................................................................................348A.7. COLLECTIONS OF DOCUMENTS....................................................................................348A.8. AGGREGATION WITH INDEPENDENT WORKS............................................................349A.9. TRANSLATION....................................................................................................................349A.10. TERMINATION...................................................................................................................349A.11. FUTURE REVISIONS OF THIS LICENSE.......................................................................349A.12. How to use this License for your documents.......................................................................350

Indeks......................................................................................................................................................351

xvi

Page 17: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Daftar Tabel3-1. Tabel Flag dan Fungsinya...................................................................................................................826-1. Direktori/link yang dibutuhkan dalam /...........................................................................................2526-2. Direktori/link yang dibutuhkan dalam /...........................................................................................2536-3. Direktori/link yang dibutuhkan dalam /usr.......................................................................................2556-4. Direktori/link yang merupakan pilihan dalam /usr...........................................................................2556-5. Direktori/link yang dibutuhkan dalam /var.......................................................................................2586-6. Direktori/link yang dibutuhkan di dalam /var..................................................................................258

Daftar Gambar1-1. Abstraksi Komponen Sistem Komputer...............................................................................................11-2. Grid Computer......................................................................................................................................31-3. Mainframe Computer...........................................................................................................................41-4. Batch System........................................................................................................................................41-5. Multiprogram System...........................................................................................................................51-6. Mini Computer.....................................................................................................................................61-7. Workstation...........................................................................................................................................71-8. Desktop Computer................................................................................................................................71-9. Desknote Computer..............................................................................................................................71-10. Notebook Computer...........................................................................................................................81-11. Distributed System...........................................................................................................................101-12. Arsitektur Umum Komputer.............................................................................................................131-13. Arsitektur PC Modern......................................................................................................................141-14. Struktur I/O.......................................................................................................................................161-15. Struktur Harddisk.............................................................................................................................181-16. Struktur Optical Drive......................................................................................................................191-17. Hirarki storage..................................................................................................................................201-18. Dual Mode Operation.......................................................................................................................211-19. I/O Protection...................................................................................................................................221-20. Memory Protection...........................................................................................................................221-21. Local Area Network.........................................................................................................................231-22. Wide Area Network..........................................................................................................................243-1. Status Proses.......................................................................................................................................483-2. Process Control Block........................................................................................................................503-3. ............................................................................................................................................................503-4. Device Queue.....................................................................................................................................523-5. Diagram Antrian.................................................................................................................................533-6. Medium-term Scheduler.....................................................................................................................563-7. Context Switch...................................................................................................................................563-8. Thread.................................................................................................................................................733-9. Many-To-One.....................................................................................................................................763-10. One-To-One......................................................................................................................................763-11. Many-To-Many.................................................................................................................................773-12. Siklus Burst......................................................................................................................................84

xvii

Page 18: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

3-13. ..........................................................................................................................................................853-14. Grafik Hard Real-Time.....................................................................................................................923-15. Grafik Soft Real-Time......................................................................................................................924-1. Struktur Monitor...............................................................................................................................1494-2. Contoh Deadlock Sederhana............................................................................................................1524-3. Contoh Deadlock di Jembatan Gantung...........................................................................................1524-4. Contoh Deadlock di Persimpangan Jalan.........................................................................................1534-5. Kondisi Deadlock Dilihat dari Safe State.........................................................................................1584-10. Graf Alokasi Sumber Daya............................................................................................................1624-11. Graf dengandeadlock.....................................................................................................................1634-12. Tanpadeadlock...............................................................................................................................1644-13. Graf alokasi sumber daya dalam status aman................................................................................1664-14. Graf alokasi sumber daya dalam status tidak aman.......................................................................1664-15. Graf alokasi sumber daya...............................................................................................................1674-16. Graf tunggu.....................................................................................................................................1685-1. Memory Management Unit..............................................................................................................1765-2.Two-Pass Assembler.........................................................................................................................1785-3. Permasalahan alokasi penyimpanan dinamis...................................................................................1835-4. Penerjemahan Halaman....................................................................................................................1845-5.Struktur MMU ...............................................................................................................................1875-6. Skema Tabel Halaman 2 tingkat.......................................................................................................1885-7. Tabel Halaman secaraMultilevel......................................................................................................1905-8. Tabel Halaman secaraInverted........................................................................................................1925-9. Arsitektur Segmentasi......................................................................................................................1935-10. Segmentasi dengan Pemberian Halaman........................................................................................1945-11. Penggunaan Segmentasi dengan Pemberian Halaman pada MULTICS........................................1965-12. Penggunaan Segmentasi dengan Pemberian Halaman pada INTEL 30386...................................1975-13. Memori Virtual...............................................................................................................................1985-14. Bagan prosesmemory-mapped files...............................................................................................2055-15. Kondisi yang memerlukan Pemindahan Halaman.........................................................................2065-16. Pemindahan halaman......................................................................................................................2075-17. Contoh Algoritma FIFO.................................................................................................................2095-18. Contoh Algoritma Optimal.............................................................................................................2105-19. Contoh Algoritma LRU..................................................................................................................2115-20.Solar Page Scanner........................................................................................................................2246-1. Single Level Directory.....................................................................................................................2326-2. Two Level Directory.........................................................................................................................2336-3. Tree-Structured Directory................................................................................................................2336-4. Acyclic-Structured Directory...........................................................................................................2346-5. General Graph Directory..................................................................................................................2346-6. Mount Point......................................................................................................................................2366-7.Disk Organization............................................................................................................................2416-8.Layered File System..........................................................................................................................2426-9.Schematic View of Virtual File System.............................................................................................2476-10.A UNIX directory entry..................................................................................................................2506-11.Contiguous allocation....................................................................................................................2616-12.Linked allocation............................................................................................................................2636-13.Indexed allocation..........................................................................................................................264

xviii

Page 19: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

6-14. Ruang kosonglinked list................................................................................................................2676-15. Tanpaunified buffer cache..............................................................................................................2706-16. Menggunakanunified buffer cache.................................................................................................2706-17. Macam-macam lokasidisk-caching..............................................................................................2717-1. Model Bus Tunggal..........................................................................................................................2787-2. ProsesPolling ...................................................................................................................................2787-3. Struktur Kernel.................................................................................................................................2827-4. Spooling............................................................................................................................................2877-5. Strukturstream.................................................................................................................................2907-6. gambar komunikasi interkomputer...................................................................................................2927-7. Penjadwalan FCFS...........................................................................................................................2957-8. Penjadwalan SSTF...........................................................................................................................2967-9. Penjadwalan SCAN..........................................................................................................................2977-10. Penjadwalan C-SCAN....................................................................................................................2987-11. Penjadwalan LOOK.......................................................................................................................2997-12. Penjadwalan C-LOOK...................................................................................................................3007-13. Contoh Manajemen ruang swap: pemetaan swap segmen teks 4.3 BSD.......................................3047-14. Contoh Manajemen ruang swap: pemetaan swap segmen data 4.3 BSD.......................................3047-15. Level RAID....................................................................................................................................3077-16. RAID 0 + 1 dan 1 + 0.....................................................................................................................307

xix

Page 20: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Kata PengantarBuku ini merupakan hasil karya Gabungan Kelompok Kerja 21–28 Semester Genap 2002/2003 dan41–49 Semester Ganjil 2003/2004 Mata Kuliah Sistem Operasi Fakultas Ilmu Komputer UniversitasIndonesia (Fasilkom UI). Kelompok Kerja 21-28 mengawali penulisan buku ini dan Kelompok Kerja41-49 melakukan revisi dan perbaikan.

Penulisan buku ini bertujuan untuk mengatasi kelangkaan bahan kuliah berbahasa Indonesia, yang dapatdimanfaatkan sebagai rujukan oleh para peserta kuliah khususnya kuliah Sistem Operasi.

Sebagai pengantar Sistem Operasi, buku ini sengaja dirancang bagi siapa saja yang berminat untukmengetahui apa itu sebenarnya sistem operasi. Penulis mengawali buku ini dengan pengenalan KonsepDasar Perangkat Komputer yang ditulis dimuka pada Bab 1 sebagai awalan dalam mengenal komputerlebih jauh. Pada bab ini secara singkat dibahas mengnai keseluruhan komponen yang membangunkomputer. Konsep Dasar Sistem Operasi ditulis dalam Bab 2 sebagai gambaran umum sistem operasikomputer. Penjelasan lebih rinci mengenai sistem operasi diberikan pada Bab 3 sampai Bab 7. Sebagaitambahan, GNU/Linux sebagai salah satu sistem operasi yang ada saat ini, diulas pada Bab 8.

Tiap-tiap bab berisi soal-soal latihan agar pembaca dapat mengulas kembali pembahasan pada babtersebut dan mengevaluasi sejauh mana pengetahuan mengenai bab tersebut.

Gambar dipilih sedemikian rupa sehingga dapat memberikan ilustrasi yang membantu pembaca untuklebih memahami pembahasan.

Kami menyadari bahwa ini masih banyak kekurangannya. Silakan menyampaikan kritik/ tanggapan/usulan anda ke <writeme03 AT yahoogroups DOT com >.

i

Page 21: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

1.1. PendahuluanSebuah sistem operasi atau dalam bahasa asingnyaOperating Systemadalah sebuah program yangmengaturhardwarekomputer. Sistem operasi juga menyediakan fondasi untuk aplikasi di atasnya danbertindak sebagai penghubung antarauserdenganhardware. Setiap sistem operasi memiliki caranyamasing-masing untuk menyelesaikan tugasnya. Hal ini menimbulkan aneka ragam sistem operasi yangsangat menakjubkan.

1.1.1. Komponen Sistem KomputerSebelum memahami apa itu sistem operasi marilah kita lihat komponen-komponen sistem komputer.MenurutEDPS (Electronic Data Processing System)komponen sistem operasi dapat dibagi menjadi tigabagian yaituhardware/peripheral, softwaredanbrainware/user.

Hardwareatauperipheraladalah penyedia sumber daya untuk komputasi. Hardware merupakan bendayang konkret, dapat dilihat dan disentuh.

Softwareadalah sarana yang memberitahukanhardwareapa yang harus dikerjakannya. Berbeda denganhardware, softwareadalah sesuatu yang abstrak. Ia hanya dapat dilihat dari apa yang dilakukannyaterhadaphardware. Softwaredibagi lagi menjadi dua bagian yaitu sistem operasi dan program aplikasi.Sistem Operasi adalahsoftwareyang bertugas mengontrol dan mengkoordinasikan pengunaanhardwareuntuk berbagai Aplikasi untuk bermacam-macam pengguna. Sementara program aplikasi, adalahSoftwareyang menentukan bagaimana sumber daya digunakan untuk menyelesaikan masalah user.

Dan yang terakhir,brainware/useradalah pengguna komputer. Ia bisa berupa manusia, mesin lain, ataukomputer lain.

1

Page 22: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-1. Abstraksi Komponen Sistem Komputer

1.1.2. Definisi Sistem OperasiPengertian dari sistem operasi dapat dilihat dari berbagai sudut pandang. Dari sudut pandanguser,sistem operasi dapat dipandang sebagai alat untuk mempermudah penggunaan Komputer. Dalam hal inisistem operasi dirancang agar mudah digunakan, dengan sedikit memperhatikan performa danmengabaikan utilisasi sumber daya. Selain itu dalam lingkunganmulti-user,sistem operasi juga dapatdipandang sebagai alat untuk memaksimalkan penggunaan sumber daya komputer. Akan tetapi, dibeberapa komputer, sudut pandang user dapat dikatakan hanya sedikit atau tidak ada sama sekali.Misalnyaembedded computerpada peralatan rumah tangga seperti mesin cuci dan sebagainya mungkinsaja memiliki lampu indikator untuk menunjukkan keadaan sekarang, tetapi sistem operasi ini dirancanguntuk bekerja tanpa campur tangan user.

Dari sudut pandang sistem, sistem operasi dapat dipandang sebagai alat yang menempatkan sumber dayasecara efisien(Resource Allocator).Sistem Operasi adalah manager bagi sumber daya, yang menanganikonflik permintaan sumber daya secara efisien. Sistem operasi juga mengatur eksekusi aplikasi danoperasi dari alat I/O. Fungsi ini dikenal juga sebagaiControl Program.Lebih lagi, Sistem operasimerupakan suatu bagian program yang berjalan setiap saat yang dikenal dengan istilahkernel.

Dari sudut pandang tujuan sistem operasi, sistem operasi dapat dipandang sebagai alat yang membuat

2

Page 23: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

komputer lebih nyaman digunakan.(convenient) untuk menjalankan aplikasi dan menyelesaikanmasalah pengguna. Tujuan lain sistem operasi adalah membuat penggunaan sumber daya komputermenjadi efisien.

1.1.3. Kelas KomputerMenurut Gramacomp Team, sering terjadi kesalahan dalam membagi jenis-jenis komputer bahkan dikalangan para pakar sekalipun. Sering terjadi kelas-kelas komputer tidak dibagi menurut dasarpembagiannya, hingga artinya menjadi. campur aduk. Misalnya, masyarakat sering sekali menyebutPC(Personal Computer)sama dengandesktop.Padahal, hal ini adalah dua hal yang berbeda acuannya.Sebuahdesktophampir pastiPC,akan tetapiPC sangat mungkin bukandesktop,tapi bisa sajanotebook.

Kami membagi jenis komputer berdasarkan tiga dasar, yaitu ukuran, karakteristik, dan jenis data. Padakenyataanya dapat saja terjadi sebuah komputer dimasukkan dalam dua atau lebih kelas yang ada didasar klasifikasi yang sama. Hal ini dimungkinkan oleh perkembangan jaman. Misalkan, dahulu semuadesktopdisebutmicrocomputer,tetapi karena perkembangan jaman, istilahmicrocomputermenjadikurang spesifik (karena munculnyanotebook, handheld PC, desknote).

1.1.3.1. Klasifikasi Menurut Ukuran

Klasifikasi ini berdasarkan ukuran komputer, yang juga dapat menunjukkan seberapa besar sumber dayayang mungkin. Hal yang lebih penting lagi adalah ukuran daya komputasinya.

1.1.3.1.1. Grid Computer/Super Computer

Grid Computer/Super Computeradalah komputer dengan kemampuan lebih tinggi dari komputer-komputer lain pada masanya. Sekarang ini terdiri dari banyak komputer yang dikembangkan dalamsebuah computer-farm. Komputer jenis ini adalah pengembangan dari Mainframe dan Desktop.Komputer ini menggunakan banyak CPU untuk menghasilkan output maksimal. Kekuatan komputasiyang dimiliki komputer ini sangat menakjubkan dan juga sangat mahal, karena itu komputer semacamini biasanya digunakan untuk penelitian berskala besar, misalnya pembuatan pesawat terbang, misi luarangkasa.

Super Computerpertama yang dibuat manusia adalahCDC 6600.Yang paling terkenal mungkin adalahBeowulfmilik NASAyang tersusun atas 16PC Pentium 4 Xeon. Super Computertercepat saat ini (2003)adalah sebuahNEC earth-simulatormilik Jepang.

3

Page 24: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-2. Grid Computer

1.1.3.1.2. Mainframe Computer

Mainframe Computeradalah sebuah sistem komputer yang mengumpulkan device-device yang berfungsisama atau bermacam -macam yang disatukan dalam sebuah sistem yang saling berbagi.

Gambar 1-3. Mainframe Computer

Perkembangan sistem operasi dimulai dari sini dimana dimulai denganbatch systemdimanajob-jobyang mirip dikumpulkan dan dijalankan secara kelompok kemudian setelah kelompok yang dijalankantadi selesai maka secara otomatis kelompok lain dijalankan.

4

Page 25: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-4. Batch System

Pada perkembangan berikutnyaMultiprogrammed Systemdiperkenalkan. Dengan sistem inijob-jobdisimpan di main memory di waktu yang sama danCPU dipergunakan bergantian. Hal ini membutuhkanbeberapa kemampuan tambahan yaitu : PenyediaanI/O routineoleh sistem, Pengaturan memori untukmengalokasikanmemorypada beberapaJob,penjadwalanCPU untuk memilihjob mana yang akandijalankan, serta pengalokasianhardwarelain.

5

Page 26: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-5. Multiprogram System

Lebih jauh lagi, digunakanTime-Sharing System/Multitasking - Interactive Computing.Dengan sistemini CPU digunakan bergantian olehjob-jobdi memori dan di disk.CPU dialokasikan hanya padajob dimemory danjob dipindahkan dari dan ke disk. Hal ini membutuhkan terjadinya komunikasi antarauserdan sistem operasi, dimana ketika sistem operasi menyelesaikan satu perintah ia mencari perintahberikutnya dari user akibatnyaonline systemharus ada bagiuseruntuk mengakses data dan kode.

1.1.3.1.3. Mini Computer

Versi lebih kecil darimainframedengan lebih sedikit perlengkapan, biasanya hanya digunakan untuksatu tugas spesifik. Dikembangkan dengan sistem modul sehingga mudah digantikomponen-komponennya. Hal ini merupakan bentuk dasar dari desktop computer.

Gambar 1-6. Mini Computer

6

Page 27: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

1.1.3.1.4. Workstation

Suatu model darimainframedi mana sebuah komputer digunakan bersama-sama dalam satu waktudengan berpusat pada suatu kerja tertentu. Kadang sulit dibedakan dariMini Computer,karenaukurannya hampir sama. Komputer ini adalah model dasar dari jaringan.

Gambar 1-7. Workstation

1.1.3.1.5. Desktop Computer

Komputer jenis ini adalah komputer yang ukuran relatif kecil dan dapat diletakkan di meja. Komputer iniditujukan buat kenyamanan dan lebih reponsif bagi pengguna komputer. Berbagai sistem operasi dapatberjalan dalam komputer jenis ini.

Gambar 1-8. Desktop Computer

1.1.3.1.6. Desknote Computer

Sebuah hybrid antaraDesktopdanLaptop.Menggabungkan kemampuanDesktop (Processor Desktop)dan portabilitasLaptop.Mudah digunakan dan dipindahkan ke berbagai tempat yang memiliki catu dayalistrik tapi tidak teralu mudah dipindahkan atauportableuntuk tempat tanpa catu daya listrik (karenabaterainya cepat habis)

7

Page 28: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-9. Desknote Computer

1.1.3.1.7. Notebook Computer

Komputerportable(mudah dipindahkan) meniru konsepdesktoptetapi jauh lebih hemat dalampenggunaan daya listrik. Dapat digunakan di tempat tanpa catu daya listrik (baterai bertahan cukuplama). Lebih nyaman digunakan untuk bekerja di perjalanan atau pekerjaan yang menuntut fleksibilitastempat. Kadang masih sulit untuk menjalankan berbagai sistem operasi.

Gambar 1-10. Notebook Computer

1.1.3.1.8. Handheld System

Sistem genggam adalah sebutan untuk komputer-komputer dengan ukuran kecil ( bisa digenggam )dengan kemampuan tertentu. Beberapa contoh dari sistem ini adalahPalm Pilots, PDA,dan teleponseluler.

Isu yang berkembang tentang sistem genggam adalah bagaimana merancangsoftwaredanhardwareyang sesuai dengan ukurannya yang kecil.

Dari sisisoftware,hambatan yang muncul adalah ukuran memori yang terbatas dan ukuran monitor yangkecil. Kebanyakan sistem genggam pada saat ini memiliki memori berukuran 512 KB hingga 8 MB.Dengan ukuran memori yang begitu kecil jika dibandingkan dengan PC, sistem operasi dan aplikasi yangdiperuntukkan untuk sistem genggam harus dapat memanfaatkan memori secara efisien. Selain itumereka juga harus dirancang agar dapat ditampilkan secara optimal pada layar yang berukuran sekitar 5x 3 inci.

8

Page 29: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Dari sisihardware,hambatan yang muncul adalah penggunaan sumber tenaga untuk pemberdayaansistem. Tantangan yang muncul adalah menciptakan sumber tenaga ( misalnya baterai ) dengan ukurankecil tapi berkapasitas besar atau merancanghardwaredengan konsumsi sumber tenaga yang sedikit.

Secara umum, keterbatasan yang dimiliki oleh sistem genggam sesuai dengan kegunaan / layanan yangdisediakan. Sistem genggam biasanya dimanfaatkan untuk hal-hal yang membutuhkan portabilitas suatumesin seperti kamera, alat komunikasi, MP3 Player dan lain lain.

1.1.3.1.9. Embedded System

Mengacu pada sistem komputer yang bertugas mengendalikan tugas spesifik dari suatu alat seperti mesincuci digital, tv digital, radio digital. Terbatas dan hampir tak memiliki user-interface.Biasanyamelakukan tugasnya secarareal-timeMerupakan sistem paling banyak dipakai dalam kehidupan.

1.1.3.2. Klasifikasi Menurut Karakteristik

Klasifikasi ini berdasarkan ukuran sifat khas dari sebuah komputer. Biasanya berkaitan erat denganfungsinya.

1.1.3.2.1. Single Processor / Uniprocessor

Dalam suatu komputer terdapat hanya satu prosesor. Keuntungan dari sistem ini : Lebih mudahdiimplementasikan karena tidak perlu memperhatikan sinkronisasi antar prosesor, kemudahan kontrolterhadap prosesor karena sistem proteksi tidak, teralu rumit, dan cenderung murah (bukan ekonomis).

Perlu dicatat yang dimaksud satu buah prosesor ini adalah satu buah prosesor sebagaiCPU/ CentralProcessing Unit. Hal ini ditekankan sebab ada beberapa perangkat yang memang memiliki prosesortersendiri di dalam perangkatnya sepertiVGA Card AGP, Optical Mouse,dll.

1.1.3.2.2. Multiprocessor/Paralel System

Komputer ini memiliki lebih dari satu processor. Akibatnya meningkatkan jumlah suatu proses yangdapat diselesaikan dalam satu unit waktu (pertambahanthroughput). Perlu diingat hal ini tidak berartidaya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat adalah jumlah pekerjaanyang bisa dilakukannya dalam waktu tertentu.

Uang yang terpakai lebih sedikit karena prosesor -prosesor terdapat dalam satu komputer dan dapatmembagi peripheral(ekonomis) seperti disk dan catu daya listrik.

Jika satu processor mengalami suatu gangguan, maka proses yang terjadi masih dapat berjalan denganbaik karena tugas prosesor yang terganggu diambil alih oleh prosesor lain. Hal ini dikenal dengan istilahGraceful Degradation. Sistemnya sendiri dikenal bersifatfault tolerantataufail-soft system.

Ada dua jenismultiprocessor systemyaituSymmetric MultiProcessing (SMP)danAsymmetricMultiProcessing (ASMP).DalamSMPsetiap prosesor menjalankan salinan identik dari sistem operasidan banyak job yang dapat berjalan di suatu waktu tanpa pengurangan performance. Sementara itu dalamASMPsetiap prosesor diberikan suatu tugas yang spesifik. Sebuah prosesor bertindak sebagaiMasterprocessoryang bertugas menjadwalkan dan mengalokasikan pekerjaan pada prosesor lain yang disebutslave processors. Umumnya ASMP dipake pada sistem yang besar.

9

Page 30: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

1.1.3.2.3. Personal Computer

Sebuah komputer yang dirancang hanya digunakan oleh satu orang dalam suatu waktu. Harganyacenderung lebih murah dan biasanya mampu mengerjakan berbagai macam tugas.

1.1.3.2.4. Distributed System

Melaksanakan komputasi secara terdistribusi diantara beberapa prosesor. Hanya saja komputasinyabersifatLoosely coupled systemyaitu setiap prosesor mempunyai local memory sendiri. Komunikasiterjadi melalui bus atau jalur telepon. Keuntungannya hampir sama denganmultiprocessor,yaitu adanyapembagian sumber daya dan komputasi lebih cepat. Namun, pada distributed system juga terdapatkeuntungan lain, yaitu memungkinkan komunikasi antar komputer.

Terdiri atas dua model yaituClient-Server Systemsdi mana hampir seluruh proses dilakukan terpusat diserverberdasarkan permintaanclient . Model ini masih dibagi dua jenis lagi yaitucompute server systemdi mana server menyediakan sarana komputasi danfile server systemdi mana server menyediakan tempatpenyimpanan data.

Model yang lain adalahPeer-to-peer (P2P) Systembeberapa komputer saling bertukar data.

Contoh penerapanDistributed System: Small Area Network (SAN). Local Area Network (LAN),Metropolitan Area Network (MAN), Online Service (OL) / Outernet, Wide Area Network (WAN) /International Network (Internet).

Gambar 1-11. Distributed System

1.1.3.2.5. Clustered System

Secara umum, sistem kluster adalah gabungan dari beberapa sistem individual ( komputer ) yangdikumpulkan pada suatu lokasi, saling berbagi tempat penyimpanan data (storage), dan salingterhubung dalam jaringan lokal (Local Area Network).

Sistem kluster memiliki persamaan dengan sistem paralel dalam hal menggabungkan beberapa CPUuntuk meningkatkan kinerja komputasi. Jika salah satu mesin mengalami masalah dalam menjalankan

10

Page 31: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

tugas maka mesin lain dapat mengambil alih pelaksanaan tugas itu. Dengan demikian, sistem akan lebihandal danfault tolerantdalam melakukan komputasi.

Dalam hal jaringan, sistem kluster mirip dengan sistem terdistribusi (distributed system). Bedanya, jikajaringan pada sistem terdistribusi melingkupi komputer-komputer yang lokasinya tersebar maka jaringanpada sistem kluster menghubungkan banyak komputer yang dikumpulkan dalam satu tempat.

Dalam ruang lingkup jaringan lokal, sistem kluster memiliki beberapa model dalam pelaksanaannya :asimetris dan simetris. Kedua model ini berbeda dalam hal pengawasan mesin yang sedang bekerja.

Pengawasan dalam model asimetris menempatkan suatu mesin yang tidak melakukan kegiatan apapunselain bersiap-siaga mengawasi mesin yang bekerja. Jika mesin itu mengalami masalah maka pengawasakan segera mengambil alih tugasnya. Mesin yang khusus bertindak pengawas ini tidak diterapkan dalammodel simetris. Sebagai gantinya, mesin-mesin yang melakukan komputasi saling mengawasi keadaanmereka. Mesin lain akan mengambil alih tugas mesin yang sedang mengalami masalah.

Jika dilihat dari segi efisiensi penggunaan mesin, model simetris lebih unggul daripada model asimetris.Hal ini disebabkan terdapat mesin yang tidak melakukan kegiatan apapun selain mengawasi mesin lainpada model asimetris. Mesin yang ’menganggur’ ini dimanfaatkan untuk melakukan komputasi padamodel simetris. Inilah yang membuat model simetris lebih efisien.

Isu yang menarik tentang sistem kluster adalah bagaimana mengatur mesin-mesin penyusun sistemdalam berbagi tempat penyimpanan data (storage). Untuk saat ini, biasanya sistem kluster hanya terdiridari 2 hingga 4 mesin berhubung kerumitan dalam mengatur akses mesin-mesin ini ke tempatpenyimpanan data.

Isu di atas juga berkembang menjadi bagaimana menerapkan sistem kluster secara paralel atau dalamjaringan yang lebih luas (Wide Area Network). Hal penting yang berkaitan dengan penerapan sistemkluster secara paralel adalah kemampuan mesin-mesin penyusun sistem untuk mengakses data distoragesecara serentak. Berbagaisoftwarekhusus dikembangkan untuk mendukung kemampuan itu karenakebanyakan sistem operasi tidak menyediakan fasilitas yang memadai. Salah satu contohsoftware-nyaadalahOracle Parallel Serveryang khusus didesain untuk sistem kluster paralel.

Seiring dengan perkembangan pesat teknologi kluster, sistim kluster diharapkan tidak lagi terbatas padasekumpulan mesin pada satu lokasi yang terhubung dalam jaringan lokal. Riset dan penelitian sedangdilakukan agar pada suatu saat sistem kluster dapat melingkupi berbagai mesin yang tersebar di seluruhbelahan dunia.

1.1.3.2.6. Real Time Systems/Sistem Waktu Nyata

Sistem waktu nyata adalah suatu sistem yang mengharuskan suatu komputasi selesai dalam jangka waktutertentu. Jika komputasi ternyata belum selesai maka sistem dianggap gagal dalam melakukan tugasnya.

Sistem waktu nyata memiliki dua model dalam pelaksanaannya :hard real time systemdansoft real timesystem. Hard real time systemmenjamin suatu proses yang paling penting dalam sistem akan selesaidalam jangka waktu yang valid. Jaminan waktu yang ketat ini berdampak pada operasi dan perangkatkeras (hardware) yang mendukung sistem. Operasi I/O dalam sistem, seperti akses data kestorage,harus selesai dalam jangka waktu tertentu. Dari segi (hardware), memori jangka pendek (short-termmemory) atauread-only memory( ROM ) menggantikanhard-disksebagai tempat penyimpanan data.Kedua jenis memori ini dapat mempertahankan data mereka tanpa suplai energi. Ketatnya aturan waktudan keterbatasanhardwaredalam sistem ini membuat ia sulit untuk dikombinasikan dengan sistem lain,seperti sistim multiprosesor dengan sistemtime-sharing.

11

Page 32: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Soft real time systemtidak memberlakukan aturan waktu seketathard real time system.Namun, sistemini menjamin bahwa suatu proses terpenting selalu mendapat prioritas tertinggi untuk diselesaikandiantara proses-proses lainnya. Sama halnya denganhard real time system, berbagai operasi dalamsistem tetap harus ada batas waktu maksimum.

Aplikasi sistem waktu nyata banyak digunakan dalam bidang penelitian ilmiah, sistem pencitraan medis,sistem kontrol industri, dan industri peralatan rumah tangga. Dalam bidang pencitraan medis, sistemkontrol industri, dan industri peralatan rumah tangga, model waktu nyata yang banyak digunakan adalahmodelhard real time system. Sedangkan dalam bidang penelitian ilmiah dan bidang lain yang sejenisdigunakan modelsoft real time system.

1.1.3.3. Klasifikasi Menurut Jenis Data yang Diolah

Klasifikasi ini berdasarkan ukuran sifat data yang menjadi masukan bagi komputer.

1.1.3.3.1. Digital Computer

Komputer yang mengolah data berdasarkan input-input dari pulsa elektronik dan bersifat abstrak.

1.1.3.3.2. Analog Computer

Menurut Gramacomp Team, komputer ini adalah komputer yang mengolah data berdasarkan input-inputdari keadaan lingkungan komputer yang nyata seperti suhu, kelembaban, dll

1.1.3.3.3. Hybrid Computer

Gabungan komputer digital dan analog, mengolah data digital sekaligus data analog.

1.1.4. Lingkungan KomputasiLingkungan komputasi adalah suatu lingkungan di mana sistem komputer digunakan. Lingkungankomputasi dapat dikelompokkan menjadi empat jenis : komputasi tradisional, komputasi berbasisjaringan, dan komputasiembedded,serta komputasigrid .

Pada awalnya komputasi tradisional hanya meliputi penggunaan komputer meja (desktop) untukpemakaian pribadi di kantor atau di rumah. Namun, seiring dengan perkembangan teknologi makakomputasi tradisional sekarang sudah meliputi penggunaan teknologi jaringan yang diterapkan mulaidaridesktophingga sistem genggam. Perubahan yang begitu drastis ini membuat batas antara komputasitradisional dan komputasi berbasis jaringan sudah tidak jelas lagi.

Komputasi berbasis jaringan menyediakan fasilitas pengaksesan data yang luas oleh berbagai perangkatelektronik. Akses tersedia asalkan perangkat elektronik itu terhubung dalam jaringan, baik dengan kabelmaupun nirkabel.

Komputasiembeddedmelibatkan komputerembeddedyang menjalankan tugasnya secarareal-time.Lingkungan komputasi ini banyak ditemui pada bidang industri, penelitian ilmiah, dan lain sebagainya.

12

Page 33: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Komputasi model terbaru ini juga berbasis jaringan denganclustered system. Digunakansuper computeruntuk melakukan komputasinya. Pada model ini komputasi dikembangkan melaluipc-farm. Perbedaanyang nyata dengan komputasi berbasis jaringan adalah bahwa komputasi berbasisgrid dilakukanbersama-sama seperti sebuahmultiprocessordan tidak hanya melakukan pertukaran data seperti padakomputasi berbasis jaringan.

1.2. Struktur Sistem KomputerTidak ada suatu ketentuan khusus tentang bagaimana seharusnya struktur sistem sebuah komputer. Setiapahli dan desainer arsitektur komputer memiliki pandangannya masing-masing. Akan tetapi, untukmempermudah kita memahami detail dari sistem operasi di bab-bab berikutnya, kita perlu memilikipengetahuan umum tentang struktur sistem komputer.

1.2.1. Operasi Sistem KomputerSecara umum, sistem komputer terdiri atas CPU dan sejumlahdevice controlleryang terhubung melaluisebuahbusyang menyediakan akses ke memori. Umumnya, setiapdevice controllerbertanggung jawabatas sebuah hardware spesisfik. Setiapdevicedan CPU dapat beroperasi secara konkuren untukmendapatkan akses ke memori. Adanya beberapahardwareini dapat menyebabkan masalah sinkronisasi.Karena itu untuk mencegahnya sebuahmemory controllerditambahkan untuk sinkronisasi akses memori.

13

Page 34: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-12. Arsitektur Umum Komputer

Pada sistem komputer yang lebih maju, arsitekturnya lebih kompleks. Untuk meningkatkan performa,digunakan beberapa buahbus. Tiapbusmerupakan jalur data antara beberapadeviceyang berbeda.Dengan cara iniRAM, Prosesor, GPU (VGA AGP)dihubungkan olehbusutama berkecepatan tinggiyang lebih dikenal dengan namaFSB (Front Side Bus). Sementara perangkat lain yang lebih lambatdihubungkan olehbusyang berkecepatan lebih rendah yang terhubung denganbuslain yang lebih cepatsampai ke bus utama. Untuk komunikasi antar bus ini digunakan sebuahbridge.

Tanggung jawab sinkronisasibusyang secara tak langsung juga mempengaruhi sinkronisasi memoridilakukan oleh sebuahbus controlleratau dikenal sebagaibus master. Bus masterakan mengendalikanaliran data hingga pada satu waktu, bus hanya berisi data dari satu buahdevice.

Pada prakteknyabridgedanbus masterini disatukan dalam sebuahchipset.

14

Page 35: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-13. Arsitektur PC Modern

NB: GPU = Graphics Processing Unit;AGP= Accelerated Graphics Port;HDD = Hard Disk Drive;FDD = Floppy Disk Drive;FSB= Front Side Bus;USB= Universal Serial Bus;PCI = PeripheralComponent Interconnect;RTC= Real Time Clock;PATA= Pararel Advanced Technology Attachment;SATA= Serial Advanced Technology Attachment;ISA= Industry Standard Architecture;IDE =Intelligent Drive Electronics/Integrated Drive Electronics;MCA= Micro Channel Architecture;PS/2=Sebuahport yang dibangun IBM untuk menghubungkan mouse kePC;

Jika komputer dinyalakan, yang dikenal dengan namabooting,komputer akan menjalankanbootstrapprogramyaitu sebuah program sederhana yang disimpan dalam ROM yang berbentuk chipCMOS(Complementary Metal Oxide Semiconductor). Chip CMOS modern biasanya bertipeEEPROM(Electrically Erasable Programmable Read Only Memory),yaitu memorinon-volatile(takterhapus jika power dimatikan) yang dapat ditulis dan dihapus dengan pulsa elektronik. Lalubootsrapprogramini lebih dikenal sebagaiBIOS (Basic Input Output System).

15

Page 36: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Bootstrap programutama, yang biasanya terletak diMotherboardakan memeriksahardware-hardwareutama dan melakukan inisialisasi terhadap program dalamhardwareyang dikenal dengan namafirmware.

Bootstrap programutama kemudian akan mencari dan meloadkernelsistem operasi ke memori laludilanjutkan dengan inisialisasi sistem operasi.Dari sini program sistem operasi akan menunggu kejadiantertentu. Kejadian ini akan menentukan apa yang akan dilakukan sistem operasi berikutnya (event-driven).

Kejadian ini pada komputer modern biasanya ditandai dengan munculnyainterrupt dari software atauhardware, sehingga Sistem Operasi ini disebutInterrupt-driven. Interruptdarihardwarebiasanyadikirimkan melalui suatu signal tertentu, sedangkansoftwaremengiriminterrupt dengan caramenjalankansystem callatau juga dikenal dengan istilahmonitor call . System/Monitor callini akanmenyebabkantrap yaitu interrupt khusus yang dihasilkan oleh software karena adanya masalah ataupermintaan terhadap layanan sistem operasi.Trap ini juga sering disebut sebagaiexception.

Setiapinterrupt terjadi, sekumpulan kode yang dikenal sebagaiISR (Interrupt Service Routine)akanmenentukan tindakan yang akan diambil. Untuk menentukan tindakan yang harus dilakukan, dapatdilakukan dengan dua cara yaitupolling yang membuat komputer memeriksa satu demi satu perangkatyang ada untuk menyelidiki sumberinterrupt dan dengan cara menggunakan alamat-alamatISRyangdisimpan dalam array yang dikenal sebagaiinterrupt vectordi mana sistem akan memeriksaInterruptVectorsetiap kaliinterrupt terjadi.

Arsitektur interrupt harus mampu untuk menyimpan alamat instruksi yang di-interrupt . Pada komputerlama, alamat ini disimpan di tempat tertentu yang tetap, sedangkan padakomputer baru, alamat itudisimpan distackbersama-sama dengan informasi state saat itu.

1.2.2. Struktur I/OAda dua macam tindakan jika ada operasiI/O . Kedua macam tindakan itu adalah:

Setelah proses I/O dimulai, kendali akan kembali ke user program saat proses I/O selesai(Synchronous).Instruksi wait menyebabkan CPU idle sampaiinterrupt berikutnya. Akan terjadiWait loop(untukmenunggu akses berikutnya). Paling banyak satu proses I/O yang berjalan dalam satu waktu.

Setelah proses I/O dimulai, kendali akan kembali ke user program tanpa menunggu proses I/O selesai(Asynchronous). System call permintaan pada sistem operasi untuk mengizinkan user menunggu sampaiI/O selesai.Device-status table mengandung data masukkan untuk tiap I/O device yang menjelaskan tipe,alamat, dan keadaannya. Sistem operasi memeriksa I/O device untuk mengetahui keadaan device danmengubah tabel untuk memasukkaninterrupt.Jika I/O device mengirim/mengambil data ke/darimemory hal ini dikenal dengan nama (Direct Memory Access) DMA.

16

Page 37: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-14. Struktur I/O

1.2.2.1. Direct Memory Access

Digunakan untukI/O deviceyang dapat memindahkan data dengan kecepatan tinggi (mendekatifrekuensi bus memori).Device controllermemindahkan data dalam blok-blok dari buffer langsung kememory utama atau sebaliknya tanpa campur tangan prosesor.Interrupt hanya terjadi tiap blok bukantiap word atau byte data. Seluruh proses DMA dikendalikan oleh sebuah controller bernamaDMAController (DMAC). DMA Controllermengirimkan atau menerima signal dari memori danI/O device.Prosesor hanya mengirimkan alamat awal data, tujuan data, panjang data keDMA Controller . . Interruptpada prosesor hanya terjadi saat proses transfer selesai. Hak terhadap penggunaanbus memoryyangdiperlukanDMA controllerdidapatkan dengan bantuanbus arbiteryang dalam PC sekarang berupachipset Northbridge.

1.2.2.2. Bus

Suatu jalur transfer data yang menghubungkan setiapdevicepada komputer. Hanya ada satu buahdeviceyang boleh mengirimkan data melewati sebuah bus, akan tetapi boleh lebih dari satudeviceyang

17

Page 38: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

membaca data bus tersebut. Terdiri dari dua buah model:Synchronous busdi mana digunakan denganbantuan clock tetapi berkecepatan tinggi, tapi hanya untuk device berkecepatan tinggi juga;Asynchronous busdigunakan dengan sistemhandshaketetapi berkecepatan rendah, dapat digunakanuntuk berbagai macamdevice.

1.2.3. Struktur StorageHal penting yang perlu diingat adalah program adalah bagian dari data.

1.2.3.1. Register

Tempat penyimpanan beberapa buah datavolatileyang akan diolah langsung di prosesor yangberkecepatan sangat tinggi. Register ini berada di dalam prosesor dengan jumlah yang sangat terbataskarena fungsinya sebagai tempat perhitungan/komputasi data

1.2.3.2. Cache Memory

Tempat penyimpanan sementara (volatile ) sejumlah kecil data untuk meningkatkan kecepatanpengambilan atau penyimpanan data di memori oleh prosesor yang berkecepatan tinggi. Dahulucachedisimpan di luar prosesor dan dapat ditambahkan. Misalnyapipeline burstcache yang biasa ada dikomputer awal tahun 90-an. Akan tetapi seiring menurunnya biaya produksidieatauwafer dan untukmeningkatkan kinerja,cacheditanamkan di prosesor. Memori ini biasanya dibuat berdasarkan desainstatic memory.

1.2.3.3. Random Access Memory (RAM) - Main Memory

Tempat penyimpanan sementara sejumlah datavolatileyang dapat diakses langsung oleh prosesor.Pengertian langsung di sini berarti prosesor dapat mengetahui alamat data yang ada di memori secaralangsung. Sekarang,RAMdapat diperoleh dengan harga yang cukup murah dangan kinerja yang bahkandapat melewaticachepada komputer yang lebih lama.

1.2.3.4. Extension Memory

Tambahan memory yang digunakan untuk membantu proses-proses dalam komputer, biasanya berupabuffer. Peranan tambahan memori ini sering dilupakan akan tetapi sangat penting artinya untuk efisiensi.Biasanya tambahan memori ini memberi gambaran kasar kemampuan dari perangkat tersebut, sebagaicontoh misalnya jumlahVGA memory, soundcard memory.

1.2.3.5. Secondary Storage

Media penyimpanan data yang non-volatile yang dapat berupaFlash Drive, Optical Disc, MagneticDisk, Magnetic Tape.Media ini biasanya daya tampungnya cukup besar dengan harga yang relatifmurah.Portability-nyajuga relatif lebih tinggi.

18

Page 39: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-15. Struktur Harddisk

19

Page 40: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-16. Struktur Optical Drive

1.2.4. Hirarki StorageDasar susunan sistem storage adalah kecepatan, biaya, sifat volatilitas.Cachingmenyalin informasi kestorage mediayang lebih cepat; Main memory dapat dilihat sebagai cache terakhir untuksecondarystorage. Menggunakan memory berkecepatan tinggi untuk memegang data yang diakses terakhir.Dibutuhkancache management policy. Cachejuga memperkenalkan tingkat lain di hirarki storage. Halini memerlukan data untuk disimpan bersama-sama di lebih dari satu level agar tetap konsisten.

20

Page 41: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-17. Hirarki storage

1.3. Proteksi Hardware dan Struktur Jaringan

1.3.1. Proteksi Perangkat Keras

1.3.1.1. Dual Mode Operation

Membagi sumber daya sistem yang memerlukan sistem operasi untuk menjamin bahwa program yangsalah tidak menyebabkan program lain berjalan salah juga. Menyediakan dukunganhardwareuntukmembedakan minimal dua mode operasi yaitu:User Mode- Eksekusi dikendalikan oleh user;Monitor/Kernel/System Mode- Eksekusi dikendalikan oleh sistem operasi. Instruksi tertentu hanyaberjalan di mode ini.(Privileged Instruction).Ditambahkan sebuah bit penanda operasi. Jika terjadiinterrupt,makahardwareberpindah kemonitor mode.

21

Page 42: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-18. Dual Mode Operation

1.3.1.2. I/O Protection

Semua instruksi I/O umumnyaPrivileged Instruction(kecuali pada DOS, dan program tertentu). Harusmenjamin user program tidak dapat mengambil alih kontrol komputer dimonitor mode.

Gambar 1-19. I/O Protection

1.3.1.3. Memory Protection

Harus menyediakan perlindungan terhadap memori minimal untukinterrupt vectordaninterrupt serviceroutine. Ditambahkan dua register yang menentukan di mana alamat legal sebuah program bolehmengakses, yaitubase registeruntuk menyimpan alamat awal yang legal danlimit registeruntukmenyimpan ukuran memori yang boleh diakses Memori di luar jangkauan dilindungi.

22

Page 43: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-20. Memory Protection

1.3.1.4. CPU Protection

Timermelakukaninterrupt setelah perioda waktu tertentu untuk menjamin kontrol sistem operasi.Timerditurunkan setiap clock. Ketika timer mencapai nol, sebuah Interrupt terjadi. Timer biasanya digunakanuntuk mengimplementasikan pembagian waktu. Timer dapat juga digunakan untuk menghitung waktusekarang walaupun fungsinya sekarang ini sudah digantikanReal Time Clock (RTC). (System ClockTimer terpisah dari Pencacah Waktu).Timersekarang secarahardwarelebih dikenal sebagaiSystemTimer/ CPU Timer. Load TimerjugaPrivileged Instruction.

1.3.2. Struktur Jaringan

1.3.2.1. Local Area Network

Muncul untuk menggantikan komputer besar. Dirancang untuk melingkupi suatu daerah yang kecil.Menggunakan peralatan berkecepatan lebih tinggi daripadaWAN . Hanya terdiri atas sejumlah kecilkomputer.

23

Page 44: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-21. Local Area Network

1.3.2.2. Wide Area Network

Menghubungkan daerah yang lebih luas. Lebih lambat, dihubungkan olehrouter melalui jaringantelepon.

24

Page 45: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Gambar 1-22. Wide Area Network

1.4. RangkumanSistem operasi telah berkembang selama lebih dari 40 tahun dengan dua tujuan utama. Pertama, sistemoperasi mencoba mengatur aktivitas-aktivitas komputasi untuk memastikan pendayagunaan yang baikdari sistem komputasi tersebut. Kedua, menyediakan lingkungan yang nyaman untuk pengembangan danjalankan dari program.

Pada awalnya, sistem komputer digunakan dari depan konsol. Perangkat lunak seperti assembler, loader,linkerdan compiler meningkatkan kenyamanan dari sistem pemrograman, tapi juga memerlukan waktuset-up yang banyak. Untuk mengurangi waktu set-up tersebut, digunakan jasa operator danmenggabungkan tugas-tugas yang sama (sistem batch).

Sistem batch mengizinkan pengurutan tugas secara otomatis dengan menggunakan sistem operasi yangresident dan memberikan peningkatan yang cukup besar dalam utilisasi komputer. Komputer tidak perlulagi menunggu operasi oleh pengguna. Tapi utilisasi CPU tetap saja rendah. Hal ini dikarenakanlambatnya kecepatan alat-alat untuk I/O relatif terhadap kecepatan CPU. Operasi off-line dari alat-alat

25

Page 46: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

yang lambat bertujuan untuk menggunakan beberapa sistem reader-to-tape dan tape-to-printer untuk satuCPU. Untuk meningkatkan keseluruhan kemampuan dari sistem komputer, para developermemperkenalkan konsep multiprogramming .

Dengan multiprogramming, beberapa tugas disimpan dalam memori dalam satu waktu; CPU digunakansecara bergantian sehingga menambah utilisasi CPU dan mengurangi total waktu yang dibutuhkan untukmenyelesaikan tugas-tugas tersebut. Multiprogramming, yang dibuat untuk meningkatkan kemampuan,juga mengizinkan time sharing . Sistem operasi yang bersifat time-shared memperbolehkan banyakpengguna untuk menggunakan komputer secara interaktif pada saat yang bersamaan.

PC adalah mikrokomputer yang dianggap lebih kecil dan lebih murah dibandingkan komputermainframe. Sistem operasi untuk komputer-komputer seperti ini diuntungkan oleh pengembangan sistemoperasi untuk komputer mainframe dalam beberapa hal. Namun, semenjak penggunaan komputer untukkeperluan pribadi, maka utilisasi CPU tidak lagi menjadi perhatian utama. Karena itu, beberapa desainuntuk komputer mainframe tidak cocok untuk sistem yang lebih kecil.

Paralel System mempunyai lebih dari satu CPU yang mempunyai hubungan yang erat; CPU-CPUtersebut berbagi bus komputer, dan kadang-kadang berbagi memori dan perangkat yang lainnya. Sistemseperti itu dapat meningkatkan throughput dan reliabilititas.

Sistem hard real-time sering kali digunakan sebagai alat pengontrol untuk applikasi yang dedicated.Sistem operasi yang hard real-time mempunyai batasan waktu yang tetap yang sudah didefinisikandengan baik.Pemrosesan harus selesai dalam batasan-batasan yang sudah didefinisikan, atau sistem akangagal.

Sistem soft real-time mempunyai lebih sedikit batasan waktu yang keras, dan tidak mendukungpenjadwalan dengan menggunakan batas akhir. Pengaruh dari internet dan World Wide Webbaru-baru initelah mendorong pengembangan sistem operasi modern yang menyertakan web browser serta perangkatlunak jaringan dan komunikasi sebagai satu kesatuan.

Multiprogramming dan sistem time-sharing meningkatkan kemampuan komputer dengan melampauibatas operasi (overlap) CPU dan I/O dalam satu mesin. Hal seperti itu memerlukan perpindahan dataantara CPU dan alat I/O, ditangani baik dengan polling atau interrupt-drivenakses ke I/O port, ataudengan perpindahan DMA. Agar komputer dapat menjalankan suatu program, maka program tersebutharus berada di memori utama (main memory).

Memori utama adalah satu-satunya tempat penyimpanan yang besar yang dapat diakses secara langsungoleh prosessor, merupakan suatu array dari word atau byte, yang mempunyai ukuran ratusan sampaijutaan ribu. Setiap word memiliki alamatnya sendiri. Memori utama adalah tempat penyimpanan yangvolatile, dimana isinya hilang bila sumber energinya (energi listrik) dimatikan. Kebanyakan sistemkomputer menyediakan secondary storage sebagai perluasan dari memori utama. Syarat utama darisecondary storage adalah dapat menyimpan data dalam jumlah besar secara permanen.

Secondary storage yang paling umum adalah disk magnetik, yang meyediakan penyimpanan untukprogram mau pun data. Disk magnetik adalah alat penyimpanan data yang nonvolatile yang jugamenyediakan akses secara random. Tape magnetik digunakan terutama untuk backup, penyimpananinformasi yang jarang digunakan, dan sebagai media pemindahan informasi dari satu sistem ke sistemyang lain.

Beragam sistem penyimpanan dalam sistem komputer dapat d isusun dalam hirarki berdasarkankecepatan dan biayanya. Tingkat yang paling atas adalah yang paling mahal, tapi cepat. Semakinkebawah, biaya perbit menurun, sedangkan waktu aksesnya semakin bertambah (semakin lambat).

26

Page 47: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 1. Konsep Dasar Perangkat Komputer

Sistem operasi harus memastikan operasi yang benar dari sistem komputer. Untuk mencegah penggunaprogram mengganggu operasi yang berjalan dalam sistem, perangkat keras mempunyai dua mode: modepengguna dan mode monitor. Beberapa perintah (seperti perintah I/O dan perintah halt) adalah perintahkhusus, dan hanya dapat dijalankan dalam mode monitor. Memori juga harus dilindungi dari modifikasioleh pengguna. Timer mencegah terjadinya pengulangan secara terus menerus (infinite loop). Hal-haltersebut (dual mode, perintah khusus, pengaman memori, timer interrupt ) adalah blok bangunan dasaryang digunakan oleh sistem operasi untuk mencapai operasi yang sesuai.

1.5. Latihan

1. Sebutkan tiga tujuan utama dari sebuah sistem operasi!

2. Apakah keuntungan utama dari multiprogramming?

3. Apakah perbedaan utama antara komputer mainframe dengan PC?

4. Untuk jenis operasi apakah DMA itu berguna? Jelaskan jawabannya!

5. Sebutkan kendala-kendala yang harus diatasi oleh programmer dalam menulis sistem operasi untuklingkungan waktu nyata!

6. Jelaskan perbedaan antara symmetric dan asymmetric multiprocessing. Sebutkan keuntungan dankerugian dari sistem multiprocessor.

7. Beberapa CPU menyediakan lebih dari dua mode operasi. Sebutkan dua kemungkinan penggunaandari mode tersebut?

8. Sebutkan dua kegunaan dari memory cache! Problem apakah yang dapat dipecahkan dan jugamuncul dengan adanya cache tersebut?

9. Apakah perbedaan antara trap dan interrupt? Sebutkan penggunaan dari setiap fungsi tersebut

10.Sebutkan 3 kelas komputer menurut jenis datanya!

27

Page 48: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

2.1. Struktur Sistem OperasiMenurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, memandang atau mengartikan apa itu sistemOperasi bisa diketahui dari beberapa hal, diantaranya dengan mengetahui komponen-komponensistemnya dan layanan yang disediakan oleh sistem operasi.

2.1.1. Komponen-komponen SistemPada kenyataannya tidak semua sistem operasi mempunyai struktur yang sama. Namun menurut AviSilberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah sistem operasi modern mempunyaikomponen sebagai berikut:

• Manajemen Proses

• Manajemen Memori Utama

• Manajemen Berkas

• Manajemen Sistem I/O

• Manajemen Penyimpanan Sekunder

• Sistem Proteksi

• Jaringan

• Command-Interpreter System

Sedangakan menurut A.S.Tananbaum, Sistem Operasi mempunyai empat komponen utama, yaitumanajemen proses,input/output,manajemen memori dan sistem berkas.

2.1.1.1. Manajemen Proses

Proses adalah sebuah program yang sedang dijalankan (dieksekusi). Sebuah proses membutuhkanbeberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupaCPU time,memori, berkas - berkas, dan perangkat-perangkat I/O. Sistem operasi mengalokasikan sumberdaya-sumber daya tersebut saat proses itu diciptakan atau sedang diproses/dijalankan. Ketika prosestersebut berhenti dijalankan, sistem operasi akan mendapatkan kembali semua sumber daya yang bisadigunakan kembali.

Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen prosesseperti:

• Membuat dan menghapus prosesuser dan sistem proses.

• Menunda atau melanjutkan proses.

• Menyediakan mekanisme untuk proses sinkronisasi.

• Menyediakan mekanisme untuk proses komunikasi.

28

Page 49: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

• Menyediakan mekanisme untuk penanganandeadlock

2.1.1.2. Manajemen Memori Utama

Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte,yang ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamattersendiri. Memori utama berfungsi sebagai tempat penyimpanan instruksi / data yang akses datanyadigunakan oleh CPU dan perangkatI/O .Memori utama termasuk tempat penyimpanan data yang yangbersifat volatile - tidak permanen (sementara), artinya data akan hilang kalau komputer dimatikan.

Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen memoriseperti:

• Menjagatrack dari memori yang sedang digunakan dan siapa yang menggunakannya.

• Memilih program yang akan di-load ke memori.

2.1.1.3. Manajemen Berkas

Berkas adalah kumpulan informasi yang berhubungan, sesuai dengan tujuan pembuat berkas tersebut.Umumnya berkas merepresentasikan program dan data. Berkas dapat mempunyai struktur yang bersifathirarkis (direktori, volume, dll.). Sistem operasi mengimplementasikan konsep abstrak dari berkasdengan mengatur media penyimpanan massa, misalanyatapesdan disk

Sistem operasi bertanggung jawab dalam aktivitas yang berhubungan dengan manajemen berkas :

• Pembuatan dan penghapusan berkas.

• Pembuatan dan penghapusan direktori.

• Mendukung manipulasi berkas dan direktori.

• Memetakan berkas kesecondary-storage

• Mem-back upberkas ke media penyimpanan yang permanen(non-volatile).

2.1.1.4. Manajemen Sistem I/O

Sering disebutdevice manager. Menyediakandevice driveryang umum sehingga operasiI/O dapatseragam (membuka, membaca, menulis,menutup). Contoh: pengguna menggunakan operasi yang samauntuk membaca berkas pada perangkat keras,CD-ROM danfloppy disk.

Komponen Sistem Operasi untuk sistemI/O :

• Penyangga : menampung sementara data dari/ ke perangkatI/O .

• Spooling:melakukan penjadualan pemakaianI/O sistem supaya lebih efisien (antrian dsb.).

• Menyediakandriver: untuk dapat melakukan operasi "rinci" (detail) untuk perangkat kerasI/Otertentu.

29

Page 50: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

2.1.1.5. Manajemen Penyimpanan Sekunder

Data yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat kecil. Oleh karenaitu, untuk meyimpan keseluruhan data dan program komputer dibutuhkan penyimpanan sekunder yangbersifat permanen dan mampu menampung banyak data, sebagaiback updari memori utama. Contohdari penyimpanan sekunder adalahhard-disk, disket, dll.

Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen disk seperti:

• free-space management

• alokasi penyimpanan

• penjadwalan disk

2.1.1.6. Sistem Proteksi

Proteksi mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh program, prosesor, ataupengguna ke sistem sumber daya. Mekanisme proteksi harus:

• membedakan antara penggunaan yang sudah diberi izin dan yang belum.

• Menspesifikasi kontrol untuk dibebankan/ diberi tugas.

• Menyediakan alat untuk pemberlakuan sistem.

2.1.1.7. Jaringan

Sistem terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori, atauclock. Tiap prosesormempunyai memori dan clock tersendiri. Prosesor-prosesor tersebut terhubung melalui jaringankomunikasi Sistem terdistribusi menyediakan akses pengguna ke bermacam sumber-daya sistem. Aksestersebut menyebabkan peningkatan kecepatan komputasi dan meningkatkan kemampuan penyediaandata.

2.1.1.8. Command-Interpreter System

Sistem Operasi menunggu instruksi dari pengguna(command driven). Program yang membaca instruksidan mengartikan control statements umumnya disebut:control-card interpreter,command-line interpreterdan terkadang dikenal sebagaishell. Command-Interpreter Systemsangat bervariasi dari satu sistemoperasi ke sistem operasi yang lain dan disesuaikan dengan tujuan dan teknologi perangkatI/O yang ada.Contohnya:CLI, Windows, Pen-based (touch),dan lain-lain.

30

Page 51: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

2.2. Layanan Sistem Operasi, System Calls, dan SystemProgram

2.2.1. Layanan Sistem OperasiLayanan sistem operasi dirancang untuk membuat pemrograman menjadi lebih mudah.

1. Pembuatan Program

Sistim operasi menyediakan berbagai fasilitas yang membantu programer dalam membuat programseperti editor. Walaupun bukan bagian dari sistim operasi, tapi layanan ini diakses melalui sistimoperasi.

2. Eksekusi Program

Sistem harus bisa me-load program ke memori, dan menjalankan program tersebut. Program harusbisa menghentikan pengeksekusiannya baik secara normal maupun tidak (adaerror)

3. Operasi I/O

Program yang sedang dijalankan kadang kala membutuhkan I/O. Untuk effisiensi dan keamanan,user biasanya tidak bisa mengatur peranti I/O secara langsung, untuk itulah sistem operasi harusmenyediakan mekanisme dalam melakukan operasi I/O.

4. Manipulasi Sistem Berkas

Program harus membaca dan menulis berkas, dan kadang kala juga harus membuat dan menghapusberkas.

5. Komunikasi

Kadang kala sebuah proses memerlukan informasi dari proses yang lain.Ada dua cara umum dimanakomunikasi dapat dilakukan. komunikasi dapat terjadi antara proses dalam satu komputer, atauantara proses yang berada dalam komputer yang berbeda, tetapi dihubungkan oleh jaringankomputer.Komunikasi dapat dilakukan denganshare-memoryataumessage-passsing, dimanasejumlah informasi dipindahkan antara proses oleh sistem operasi.

6. DeteksiError

Sistem operasi harus selalu waspada terhadap kemungkinanerror. Error dapat terjadi di CPU danmemori perangkat keras, I/O, dan di dalam program yang dijalankan user. Untuk setiap jeniserrorsistem operasi harus bisa mengambil langkah yang tepat untuk mempertahankan jalannya proseskomputasi. Misalnya dengan menghentikan jalannya program, mencoba kembali melakukan operasiyang dijalankan, atau melaporkan kesalahan yang terjadi agar pengguna dapat mengambil langkahselanjutnya.

31

Page 52: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Disamping pelayanan diatas, sistem operasi juga menyediakan layanan lain. Layanan ini bukan untukmembantu user tapi lebih pada mempertahankan efisiensi sistem itu sendiri. Layanan tambahan itu yaitu :

1. Alokasi Sumber Daya

Ketika beberapa user menggunakan sistem atau beberapa program dijalankan secara bersamaan,sumber daya harus dialokasikan bagi masing-masing user dan program tersebut.

2. Accounting

Kita menginginkan agar jumlah user yang menggunakan sumber daya, dan jenis sumber daya yangdigunakan selalu terjaga. Untuk itu maka diperlukan suatu perhitungan dan statistik. Perhitungan inidiperlukan bagi seseorang yang ingin merubah konfigurasi sistem untuk meningkatkan pelayanan.

3. Proteksi

Layanan proteksi memastikan bahwa segala akses ke sumber daya terkontrol. Dan tentu sajakeamanan terhadap gangguan dari luar sistem tersebut. Keamanan bisa saja dilakukan denganterlebih dahulu mengidentifikasi user. Ini bisa dilakukan dengan memintapassswordbila inginmenggunakan sumber daya.

2.2.2. System CallsBiasanya tersedia sebagai instruksi bahasaassembly. Beberapa sistem mengizinkan system calls dibuatlangsung dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh : C, C++) telahdidefenisikan untuk menggantikan bahasaassemblyuntuk sistem pemrograman.

Tiga metode umum yang digunakan dalam memberikan parameter kepada sistem operasi

• Melalui register

• Menyimpan parameter dalamblockatau tabel pada memori dan alamatblock tersebut diberikansebagai parameter dalamregister

• Menyimpan parameter (push) ke dalamstack(oleh program), dan melakukanpop off padastack(olehsistem operasi)

Gambar : Memberikan parameter melalui tabel

32

Page 53: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York: John Wiley &Son.Inc , page 65

Jenis System Calls

1. Kontrol Proses

System callsyang berhubungan dengan kontrol proses antara lain ketika penghentianpengeksekusian program. Baik secara normal (end) maupun tidak normal (abort). Selama prosesdieksekusi kadang kala diperlukan untuk meload atau mengeksekusi program lain, disini diperlukanlagi suatusystem calls. Juga ketika membuat suatu proses baru dan menghentikan sebuah proses.Ada jugasystem callsyang dipanggil ketika kita ingin meminta dan merubah atribut dari suatuproses.

MS-DOS adalah contoh dari sistemsingle-tasking. MS-DOS menggunakan metode yang sederhanadalam menjalankan program dan tidak menciptakan proses baru. Program di-load ke dalam memori,kemudian program dijalankan.

Gambar : Eksekusi MS-Dos

Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York:John Wiley &Son.Inc , page 68

Barkeley Unix adalah contoh dari sistemmulti-tasking. Command interperetermasih tetap bisadijalankan ketika program lain dieksekusi.

Gambar : Multi program pada Unix

33

Page 54: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York:John Wiley &Son.Inc , page 69

2. Manajemen Berkas

System callsyang berhubungan dengan berkas sangat diperlukan. Seperti ketika kita ingin membuatatau menghapus suatu berkas. Atau ketika ingin membuka atau menutup suatu berkas yang telahada, membaca berkas tersebut, dan menulis berkas itu.System callsjuga diperlukan ketika kita inginmengetahui atribut dari suatu berkas atau ketika kita juga ingin merubah atribut tersebut. Yangtermasuk atribut berkas adalah nama berkas, jenis berkas, dan lain-lain

Ada jugasystem callsyang menyediakan mekanisme lain yang berhubungan dengan direktori atausistim berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu spesifik berkas.Contohnya membuat atau menghapus suatu direktori, dan lain-lain

3. Manajemen Peranti

Program yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak useryang menggunakan sistem, maka jika memerlukan tambahan sumber daya maka harus memintaperanti terlebih dahulu. Dan setelah selesai penggunakannnya harus dilepaskan kembali. Ketikasebuah peranti telah diminta dan dialokasikan maka peranti tersebut bisa dibaca, ditulis, ataudireposisi.

4. InformasiMaintenance

Beberapasystem callsdisediakan untuk membantu pertukaran informasi antara user dan sistemoperasi. Contohnyasystem callsuntuk meminta dan mengatur waktu dan tanggal. Atau memintainformasi tentang sistem itu sendiri, seperti jumlah user, jumlah memori dan disk yang masih bisadigunakan, dan lain-lain. Ada jugasystem callsuntuk meminta informasi tentang proses yangdisimpan oleh sistem dan system calls untuk merubah (reset) informasi tersebut.

5. Komunikasi

34

Page 55: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Dua model komunikasi

• message-passing

pertukaran informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan olehsistem operasi.

• shared-memory

Proses menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaraninformasi dengan membaca dan menulis data pada memori tersebut

Gambar : Mekanisme komunikasi

Sumber: Silberschatz,et.al, Operating System Concepts,6th e, .2003, New York:John Wiley &Son.Inc, page 72

Dalammessage-passing, sebelum komunikasi dapat dilakukan harus dibangun dulu sebuahkoneksi.Untuk itu diperlukan suatusystem callsdalam pengaturan koneksi tersebut, baik dalammenghubungkan koneksi tersebut maupun dalam memutuskan koneksi tersebut ketika komunikasisudah selesai dilakukan. Juga diperlukan suatusystem callsuntuk membaca dan menulis pesan(message) agar pertukaran informasi dapat dilakukan.

2.2.3. System ProgramSystem programmenyediakan lingkungan yang memungkinkan pengembangan program dan eksekusiberjalan dengan baik.

Dapat dikategorikan :

• Manajemen/manipulasi Berkas

Membuat, menghapus,copy, rename, print, memanipulasi berkas dan direktori

35

Page 56: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

• Informasi status

Beberapa program meminta informasi tentang tanggal, jam, jumlah memori dan disk yang tersedia,jumlah user dan informasi lain yang sejenis.

• Modifikasi berkas

membuat berkas dan memodifikasi isi berkas yang disimpan pada disk atau tape.

• Pendukung bahasa pemrograman

kadang kalacompiler, assembler, interpreterdari bahasa pemrograman diberikan kepada user denganbantuan sistem operasi.

• Loadingdan eksekusi program

Ketika program di-assemblyatau di-compile, program tersebut harus di-load ke dalam memori untukdieksekusi. Untuk itu sistem harus menyediakanabsolute loaders, relocatable loaders, linkageeditors,danoverlay loaders

• Komunikasi

menyediakan mekanisme komunikasi antara proses, user, dan sistem komputer yang berbeda.Sehinggauser bisa mengirim pesan, browes web pages, mengirim e-mail, atau mentransfer berkas.

Umumnya sistem operasi dilengkapi olehsystem-utilitiesatau program aplikasi yang di dalamnyatermasukweb browser, word prossesordan format teks, sistem database,games. System programyangpaling penting adalahcommand interpreter(mengambil dan menerjemahkanuser-specified commandselanjutnya).

2.3. Struktur SistemSebuah sistem yang besar dan kompleks seperti sistem operasi modern harus diatur dengan caramembagi taskkedalam komponen-komponen kecil agar dapat berfungsi dengan baik dan mudahdimodifikasi. Pada bab ini, kita akan membahas cara komponen-komponen ini dihubungkan satu samalain. Menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, ada tiga cara yaitu:

• Struktur Sederhana

• PendekatanTerlapis

• Mikrokernel

Sedangkan menurut William Stallings, kita bisa memandang sistem sebagai seperangkat lapisan. Tiaplapisan manampilkan bagian fungsi yang dibutuhkan oleh sistem operasi. Bagian yang terletak pada

36

Page 57: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

lapisan yang lebih rendah akan menmpilkan fungsi yang lebih primitif dan menyimpan detail fungsitersebut.

2.3.1. Struktur SederhanaBanyak sistem yang tidak terstruktur dengan baik, sehingga sistem operasi seperti ini dimulai dengansistem yang lebih kecil, sederhana, dan terbatas. Kemudian berkembang dengan cakupan yang original.Contoh sistem seperti ini adalah MS-DOS, yang disusun untuk mendukung fungsi yang banyak padaruang yang sedikit karena keterbatasan perangkat keras untuk menjalankannya.

Contoh sistem lainnya adalah UNIX, yang terdiri dari dua bagian yang terpisah, yaitukerneldanprogram sistem.Kernelselanjutnya dibagi dua bagian, yaitu antarmuka dandevice drivers. Kernelmendukung sistem berkas, penjadwalan CPU, manajemen memori,dan fungsi sistem operasi lainnyamelaluisystem calls.

2.3.2. Pendekatan TerlapisSistem operasi dibagi menjadi sejumlah lapisan yang masing-masing dibangun diatas lapisan yang lebihrendah. Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebih tinggi. Lapisan yangpaling bawah adalah perangkat keras, dan yang paling tinggi adalahuser-interface.

Lapisan pada Sistem Operasi

Sumber: Silberschatz,et.al, Operating System Concepts,6th e, .2003, New York:John Wiley & Son.Inc,halaman 77

Sebuah lapisan adalah implementasi dari objek abstrak yang merupakan enkapsulasi dari data danoperasi yang bisa memanipulasi data tersebut. Keuntungan utama dengan sistem ini adalah modularitas.Pendekatan ini mempermudahdebugdan verifikasi sistem. Lapisan pertama bisa didebugtanpamengganggu sistem yang lain karena hanya menggunakan perangkat keras dasar untuk implementasifungsinya. Bila terjadi error saatdebuggingsejumlah lapisan, error pasti pada lapisan yang baru saja didebug,karena lapisan dibawahnya sudah didebug.

Sedangkan menurut Tanenbaum dan Woodhull, sistem terlapis terdiri dari enam lapisan, yaitu :

37

Page 58: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

• Lapisan 0

Mengatur alokasi prosesor, pertukaran antar proses ketika interupsi terjadi atau waktu habis. Lapisanini mendukung dasar multi-programming pada CPU

• Lapisan 1

Mengalokasikan ruang untuk proses di memori utama dan pada 512 kilo worddrumyang digunakanuntuk menahan bagian proses ketika tidak ada ruang di memori utama

• Lapisan 2

Menangani komunikasi antara masing-masing proses dan operatorconsole. Pada lapis inimasing-masing proses secara efektif memiliki opertorconsolesendiri.

• Lapisan 3

Mengatur peranti I/O dan menampung informasi yang mengalir dari dan ke proses tersebut.

• Lapisan 4

Tempat program pengguna. Pengguna tidak perlu memikirkan tentang proses, memori,console, ataumanajemen I/O.

• Lapisan 5

Merupakan opertor sistem

Menurut Stallings, model tingkatan sistem operasi yang mengaplikasikan prinsip ini dapat dilihat padatabel berikut, yang terdiri dari level-level dibawah ini :

Tabel Level pada Sistem Operasi

38

Page 59: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Sumber: Stallings, Operating Systems, 4th e, 2001, Prentice Hall, halaman 69.

• Level 1

terdiri dari sirkuit elektronik dimana objek yang ditangani adalahregister memory cell,dan gerbanglogika Operasi pada objek ini seperti membersihkan register atau membaca lokasi memori.

• Level 2

Pada level ini adalah set instruksi pada prosesor. Operasinya adalah instruksi bahasa-mesin, sepertimenambah, mengurangi,load danstore.

• Level 3

Tambahan konsep prosedur atau subrutin ditambah operasicall ataureturn.

• Level 4

39

Page 60: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Mengenalkan interupsi yang menyebabkan prosesor harus menyimpan perintah yang baru dijalankandan memanggil rutin penanganan interupsi

Empat level pertama bukan bagian sistem operasi tetapi bagian perangkat keras. Meskipun demikianbeberapa elemen sistem operasi mulai tampil pada level-level ini, seperti rutin penanganan interupsi Padalevel 5, kita mulai masuk kebagian sistem operasi dan konsepnya berhubungan denganmulti-programming.

• Level 5

Level ini mengenalkan ide proses dalam mengeksekusi program. Kebutuhan-kebutuhan dasar padasistem operasi untuk mendukung proses ganda termasuk kemampuan mensuspenddan meresumeproses. Hal ini membutuhkan register perangkat keras untuk menyimpan agar eksekusi bisa ditukarantara satu proses ke proses lainnya.

• Level 6

Mengatasi penyimpanan sekunder dari komputer. Level ini untuk menjadwalkan operasi danmenanggapi permintaan proses dalam melengkapi suatu proses.

• Level 7

Membuat alamat logis untuk proses. Level ini mengatur alamat virtual ke dalam blok yang bisadipindahkan antara memori utama dan memori tambahan. Cara-cara yang sering dipakai adalahmenggunakan ukuran halaman yang tetap, menggunakan segmen sepanjang variabelnya, danmenggunakan cara keduanya. Ketika blok yang dibutuhkan tidak ada dimemori utama, alamat logispada level ini meminta transfer dari level 6.

Sampai point ini, sistem operasi mengatasi sumber daya dari prosesor tunggal. Mulai level 8, sistemoperasi mengatasi objek eksternal seperti peranti bagian luar, jaringan, dan sisipan komputer kepadajaringan.

• Level 8

Mengatasi komunikasi informasi dan pesan-pesan antar proses. Dimana pada level 5 disediakanmekanisme penanda yang kuno yang memungkinkan untuk sinkronisasi proses, pada level inimengatasi pembagian informasi yang lebih banyak. Salah satu peranti yang paling sesuai adalahpipe(pipa) yang menerima output suatu proses dan memberi input ke proses lain.

• Level 9

Mendukung penyimpanan jangka panjang yang disebut dengan berkas. Pada level ini, data daripenyimpanan sekunder ditampilkan pada tingkat abstrak, panjang variabel yang terpisah. Hal inibertentangan tampilan yang berorientasikan perangkat keras dari penyimpanan sekunder

• Level 10

40

Page 61: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Menyediakan akses ke peranti eksternal menggunakan antarmuka standar.

• Level 11

Bertanggung jawab mempertahankan hubungan antara internal dan eksternalidentifierdari sumberdaya dan objek sistem. Eksternalidentifieradalah nama yang bisa dimanfaatkan oleh aplikasi ataupengguna. Internalidentifieradalah alamat atau indikasi lain yang bisa digunakan oleh level yanglebih rendah untuk meletakkan dan mengontrol objek.

• Level 12

Menyediakan suatu fasilitator yang penuh tampilan untuk mendukung proses. Hal ini merupakanlanjutan dari yang telah disediakan pada level 5. Pada level 12, semua info yang dibutuhkan untukmanajemen proses dengan berurutan disediakan, termasuk alamat virtual di proses, daftar objek danproses yang berinteraksi dengan proses tersebut serta batasan interaksi tersebut, parameter yang harusdipenuhi proses saat pembentukan, dan karakteristik lain yang mungkin digunakan sistem operasiuntuk mengontrol proses.

• Level 13

Menyediakan antarmuka dari sistem operasi dengan pengguna yang dianggap sebagaishellataudinding karena memisahkan pengguna dengan sistem operasi dan menampilkan sistem operasi dengansederhana sebagai kumpulan servis atau pelayanan.

Dari ketiga sumber diatas dapat kita simpulkan bahwa lapisan sistem operasi secara umum terdiri atas 4bagian, yaitu:

1. Perangkat keras

lebih berhubungan kepada perancang sistem. Lapisan ini mencakup lapisan 0 dan 1 menurutTanenbaum, dan level 1 sampai dengan level 4 menurut Stallings.

2. Sistem operasi

lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 2 menurut Tanenbaum, danlevel 5 sampai dengan level 7 menurut Stallings.

3. Kelengkapan

lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 3 menurut Tanenbaum, danlevel 8 sampai dengan level 11 menurut Stallings.

4. Program aplikasi

lebih berhubungan kepada pengguna aplikasi komputer. Lapisan ini mencakup lapisan 4 dan lapisan5 menurut Tanebaum, dan level 12 dan level 13 menurut Stallings.

41

Page 62: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Lapisan Sistem Operasi secara umum

Sumber: Stallings, Operating Systems, 4th e, 2001, Prentice Hall, halaman 46.

Salah satu kesulitan besar dalam sistem terlapis disebabkan karena sebuah lapisan hanya bisamenggunakan lapisan-lapisan dibawahnya, misalnya :backing-store driver, normalnya diatas penjadwalCPU sedangkan pada sistem yang besar, penjadwal CPU punya informasi tentang proses yang aktif yangada di memori. Oleh karena itu, info ini harus dimasukkan dan dikeluarkan dari memori, sehinggamembutuhkanbacking-store driverdibawah penjadwal CPU. Kesulitan lainnya adalah paling tidakefisien dibandingkan tipe lain. Ketika pengguna mengeksekusi I/O , akan mengeksekusi lapisan I/O,lapisan manajemen memori, yang memanggil lapisan penjadwal CPU

2.3.3. MikrokernelMetode ini menyusun sistem operasi dengan menghapus semua komponen yang tidak esensial darikernel, dan mengimplementasikannya sebagai program sistem dan level pengguna. Hasilnyakernelyanglebih kecil. Pada umumnya mikrokernel mendukung proses dan menajemen memori yang minimal,sebagai tambahan utnuk fasilitas komunikasi.

Fungsi utama mikrokernel adalah mendukung fasilitas komunikasi antara program klien danbermacam-macam layanan yang juga berjalan diuser space. Komunikasi yang dilakukan secara tidaklangsung, didukung oleh sistemmessage passing,dengan bertukar pesan melalui mikrokernel.

Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan keuser space, kerneltidak perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem operasinya lebihmudah untuk ditempatkan pada suatu desain perangkat keras ke desain lainnya. Mikrokernel jugamendukung keamanan reliabilitas lebih, karena kebanyakan layanan berjalan sebagai pengguna proses.Jika layanan gagal, sistem operasi lainnya tetap terjaga. Beberapa sistem operasi yang menggunakanmetode ini adalah TRU64 UNIX, MacOSX, dan QNX.

42

Page 63: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

2.4. Mesin Virtual, Desain Sistem dan Implementasinya,dan System Generation

2.4.1. Mesin VirtualPada dasarnya, sistem komputer dibangun atas lapisan-lapisan(layers). Perangkat keras adalah lapisanterendah. Kernel yang berada di lapisan atasnya menggunakan instruksi perangkat keras untukmenciptakan seperangkatsystem callsyang dapat digunakan oleh komponen-komponen lain yang beradapada level di atasnya. Sistem program pada level di atasnya dapat menggunakansystem calldanperangkat keras seolah-olah mereka berada pada level yang sama.

Meski sistem program berada di level tertinggi, program aplikasi bisa melihat segala sesuatu dibawahnya( pada tingkatan) seakan mereka adalah bagian dari mesin. Pendekatan dengan lapisan-lapisaninilah yang diambil sebagai kesimpulan logis pada konsep mesin virtual atauvirtual machine(VM).Pendekatan VM menyediakan sebuah antarmuka yang identik denganunderlying bare hardware. VMdibuat dengan pembagian sumber daya olehphysical computer.VM perangkat lunak membutuhkanruang pada disk untuk menyediakan memori virtual danspoolingsehingga perlu ada disk virtual.

Meski sangat berguna, VM sulit untuk diimplementasikan. Banyak hal yang dibutuhkan untukmenyediakan duplikat yang tepat dariunderlying machine. VM dapat dieksekusi padaonly user modesehingga kita harus mempunyaivirtual user modesekaligusvirtual memory modeyang keduanyaberjalan diphysical user mode. Ketika instruksi yang hanya membutuhkanvirtual user modedijalankan,ia akan mengubah isi register yang berefek padavirtual monitor modesehingga dapat memulai ulangVM tersebut. Sebuah instruksi I/O yang membutuh waktu 100ms, dengan menggunakan VM bisadieksekusi lebih cepat( karenaspooling) atau lebih lambat(karena interpreter). Terlebih lagi, CPUmenjadimultiprogrammeddi antara banyak VM. Jika setiap user diberi 1 VM, dia akan bebasmenjalankan sistem operasi(kernel) yang diinginkan pada VM tersebut.

Selain kekurangan yang telah disebutkan diatas, jelas VM memiliki kelebihan-kelebihan, yaitu:Keamanan yang terjamin karena VM mempunyai perlindungan lengkap pada berbagai sistem sumberdaya, tidak ada pembagian resources secara langsung . Pembagian disk mini dan jaringandiimplementasikan dalam perangkat lunak. Sistem VM adalah kendaraan yang sempurna untukpenelitian dan pengembangan Sistem Operasi. Dengan VM, perubahan satu bagian dari mesin dijamintidak akan mengubah komponen lainnya.

2.4.1.1. Mesin Virtual Java

Mesin Virtual Java atau Java Virtual Machine(JVM) terdiri dari sebuah kelas loader dan java interpreteryang mengeksekusithe architecture-neutral bytecodes. Java interpreter bisa berupa perangkat lunakyang menginterpretasikan kode byte setiap waktu atau hanyaJust-In-Time(JIT) yang mengubaharchitecture-neutral bytecodesmenjadi bahasa mesin lokal. Interpreter bisa juga diimplementasikan padasebuahchipperangkat keras.Instancedari JVM dibentuk ketika aplikasi java atau applet dijalankan.JVM mulai berjalan saat methodmaindipanggil. Pada applet, JVM menciptakan methodmainsebelummembuat applet itu sendiri.

Java Development Environment terdiri dari sebuah Compile Time Environment dan RunTimeEnvironment. Compile berfungsi mengubahjava sourcecodemenjadi kode byte. Sedangkan RunTimemerupakanJava platformuntuk sistemhost.

43

Page 64: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

2.4.2. Desain Sistem dan ImplementasinyaDesain sistem memiliki masalah dalam menentukan tujuan dan spesifikasi sistem. Pada level palingtinggi, desain system akan dipengaruhi oleh pilihan perangkat keras dan jenis sistem. Kebutuhannyaakan lebih sulit untuk dispesifikasikan. Kebutuhan terdiri dari target user dan target sistem. Usermenginginkan sistem yang nyaman digunakan, mudah dipelajari, dapat dipercaya, aman, dan cepat.Namun itu semua tidaklah signifikan untuk desain sistem. Orang yang mendesain ingin sistem yangmudah didesain, diimplementasikan, fleksibel, dapat dipercaya, bebas eror, efisien. Sampai saat inibelum ada solusi yang pas untuk menentukan kebutuhan dari system operasi. Lain lingkungan, lain pulakebutuhannya.

2.4.2.1. Mekanisme dan Kebijakan

Mekanisme menentukan bagaimana melakukan sesuatu. Kebijakan menentukan apa yang akandilakukan.Pemisahan antara mekanisme dan kebijakan sangatlah penting untuk fleksibilitas. Perubahankebijakan akan membutuhkan definisi ulang pada beberapa parameter system, bahkan bisa mengubahmekanisme yang telah ada. Sistem operasiMicrokernel-basedmenggunakan pemisahan mekanisme dankebijakan secara ekstrim dengan mengimplementasikan perangkat dariprimitive building blocks. Semuaaplikasi mempunyai antarmuka yang sama karena antarmuka dibangun dalam kernel.

Kebijakan penting untuk semua alokasi sumber daya dan penjadwalan problem. Perlu atau tidaknyasistem mengalokasikan sumber daya, kebijakan yang menentukan. Tapi bagaimana dan apa,mekanismelah yang menentukan

2.4.2.2. Implementasi

Umumnya sistem operasi ditulis dalam bahasa rakitan, tapi sekarang ini sering ditulis dalam bahasatingkat tinggi. Keuntungannya adalah kodenya bisa ditulis lebih cepat, lebih padat, mudah dimengertidan didebug. Sistem operasi mudah diport(dipindahkan ke perangkat keras lain). Kerugiannya adalahmengurangi kecepatan dan membutuhkan tempat penyimpanan yang lebih banyak.

2.4.3. System GenerationAdalah mungkin untuk mendesign, mengkode, dan megimplementasikan sebuah sistem operasi khususuntuk satu mesin di suatusite. Pada umumnya sistem operasi dibuat untuk berjalan pada beberapa kelasmesin di berbagaisitedan berbagai konfigurasiperipheral. Kemudian, sistem dikonfigurasikan untukmasing-masing komputer, untuksiteyang spesifik. Proses ini terkadang disebut sebagaiSystemGeneration.

Sistem program membaca dari berkas yang diberikan atau mungkin bertanya pada operator tentanginformasi yang berhubungan dengan perangkat keras tersebut, antara lain adalah sebagai berikut:

• CPU apa yang digunakan, pilihan yang diinstall?

• Berapa banyak memori yang tersedia?

• Peralatan yang tersedia?

• Pilihan Sistem operasi apa yang diinginkan atau parameter yang digunakan?

44

Page 65: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

Satu kali informasi didapat, bisa digunakan dengan berbagai cara.

2.5. RangkumanPada umumnya Komponen sistem operasi terdiri dari Manajemen Proses, Manajemen Memori utama,Manajemen Berkas, Manajemen sistem I/O, Manajemen penyimpanan sekunder, Sistem Proteksi,Jaringan danCommand-Interpreter System.

Layanan sistem operasi dirancang untuk membuat programming menjadi lebih mudah. Sistem operasimempunyai lima layanan utama dan tiga layanan tambahan.System callsada lima jenis.System programmenyediakanenvironmentyang memungkinkan pengembangan program dan eksekusi berjalan denganbaik.

Komponen-komponen sistem operasi dapat dihubungkan satu sama lain dengan tiga cara. Pertama,dengan struktur sederhana, kemudian berkembang dengan cakupan yang original. Kedua, denganpendekatan terlapis atau level. Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebihtinggi. Model sistem operasi seperti ini terdiri dari tiga belas level. Ketiga, dengan metode mikrokernel,dimana sistem operasi disusun dalam bentukkernelyang lebih kecil.

Penggunaan mesin virtual amat berguna, tapi sulit untuk diimplementasikan. Sebagaimanaperangkat-perangkat lainnya, penggunaan mesin virtual ini memiliki kelebihan dan kekurangan. Masalahutama dari desain sistem adalah menentukan kebijakan dan mekanisme yang sesuai dengan keinginanpengguna dan pendisainnya.System generationadalah proses mengkonfigurasikan sistem untukmasing-masing komputer.

2.6. Latihan

1. Sebutkan komponen-komponen Sistem Operasi!

2. Sebutkan aktivitas yang dilakukan oleh sistem operasi yang berkaitan dengan manajemen proses!

3. Sebutkan aktivitas yang dilakukan oleh sistem operasi yang berkaitan dengan manajemen berkas!

4. Jelaskan apa yang dimaksud denganCommand-Interpreter System!

5. Apakah tujuan dariSystem calls?

6. Sebutkan lima layanan yang disediakan oleh sistem operasi!

7. Sebutkan tujuan darisystem program!

8. Jelaskan dua model komunikasi pada sistem operasi!

9. Sebutkan keuntungan dalam penggunaan sistem lapisan! Jelaskan!

10.Jelaskan salah satu kesulitan besar dalam penggunaan sistem lapisan !

11.Sebutkan beberapa objek-objek yang ada pada level 2 sistem lapisan!

12.Sebutkan cara-cara yang dipakai untuk membuat alamat logis yang dilakukan pada level 7!

13.Sebutkan salah satu keuntungan mikrokernel!

45

Page 66: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 2. Konsep Dasar Sistem Operasi

14.Sebutkan keuntungan dan kelebihan menggunakan mesin virtual!

15.Jelaskan masalah utama dari desain sistem!

16.Jelaskan perbedaan mekanisme dan kebijakan!

2.7. RujukanAbraham Silberschatz, Peter Galvin, Greg Gagne.2003.Operating System Concepts, Sixth Edition.JohnWiley & Sons.

Andrew S Tanenbaum, Albert S Woodhull.1997.Operating System Design and Implementation, SecondEdition. Prentice Hall.

Andrew S Tanenbaum.2001.Modern Operating System, Second Edition.Prentice Hall.

William Stallings.2001.Operating Systems, Fourth Edition.Prentice Hall.

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/ BUKU/SistemOperasi/x395.html

46

Page 67: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.1. Konsep ProsesJika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah pertanyaan yaitu mengenaiistilah apa yang tepat untuk menyebut semua aktivitas yang dilakukan oleh CPU. SistemBatchmengeksekusijobssebagaimana suatu sistemtime-sharemenggunakan program pengguna (userprograms) atautasks. Bahkan pada sistem dengan satu penggunapun, seperti pada Microsoft Windowsdan Macintosh OS, seorang pengguna mampu menjalankan beberapa program pada saat yang sama,contohnya Word Processor, Web Browser, dan paket e-mail. Bahkan jika pengguna hanya dapatmenjalankan satu program pada satu waktu, sistem operasi perlu untuk mendukung aktivitas programinternalnya sendiri, seperti managemen memori. Dalam banyak hal, seluruh aktivitas ini adalah serupa,maka kita menyebut seluruh program itu proses-proses.

Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini. Walau kami sendiri lebihmenyukai istilah proses, banyak teori dan terminologi sistem-operasi dikembangkan selama suatu waktuketika aktivitas utama sistem operasi adalahjob processing. Akan membingungkan jika kitamenghindari penggunaan istilah yang telah diterim oleh publik yang memasukkan katajob hanya karenaproses memiliki istilahjob sebagai pengganti atau pendahulunya.

3.1.1. Definisi ProsesSecara tidak langsung, proses adalah program yang sedang dieksekusi. Menurut SilberSchatz, suatuproses adalah lebih dari sebuah kode program, yang terkadang disebuttext section. Proses jugamencakupprogram counter , yaitu sebuahstackuntuk menyimpan alamat dari instruksi yang akandieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuahstackyangberisikan data-data yang dibutuhkan selama proses dieksekusi (seperti parameter method, alamat returndan variabel lokal), dan sebuahdata sectionyang menyimpan variabel global.

Sama halnya dengan SilberSchatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah programyang dieksekusi yang mecakupprogram counter, register, dan variabel di dalamnya.

Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitaspasif; seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatuentitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akandieksekusi dan seperangkat sumber daya (resourceyang dibutuhkan agar sebuah proses dapatdieksekusi.

Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yangdiberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untukanaknya. Tukang kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang dibutuhkan untukmembuat kue ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahanlainnya. Dalam analogi ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut adalaprosesor (CPU), dan bahan-bahan untuk mebuat kue tersebut adalah data input. Sedangkan proses-nyaadalah kegiatan sang tukang kue untuk membaca resep, mengolah bahan, dan memanggang kue tersebut.

Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutaneksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada

47

Page 68: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiapproses ini adakah proses yang berbeda dan walau bagiantext-sectionadalah sama,data section-nyabervariasi. Adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. Halini akan dijelaskan lebih detail pada subbab Hubungan Antar Proses.

3.1.2. Status ProsesBila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status dari sebuah prosesmencerminkan aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah status-status yangmungkin dimiliki sebuah proses menurut Tanenbaum:

• Running: pada saat menggunakan CPU pada suatu waktu

• Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi

• Blocked: tidak dijalankan sampai event dari luar (yang berhubungan dengan proses tersebut) terjadi

Sedangkan menurut SilberSchatz, terdapat 5 macam jenis status yang mungkin dimiliki oleh suatuproses:

• New: status yang dimiliki pada saat proses baru saja dibuat

• Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi

• Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O)

• Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor

• Terminated: status yang dimililki pada saat proses telah selesai dieksekusi

Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem operasi.Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentulebih baik menggambarkan keadaan/status proses. Penting untuk diketahui bahwa hanya satu prosesyang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapatberstatus ready atau waiting. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan padaGambar 3-1.

48

Page 69: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-1. Status Proses

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-1.png

Ada tiga kemungkinan bila sebuah proses memilki status running:

• Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadiTerminated.

• Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt danproses tersebut kini berstatus Ready.

• Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akanmenunngu event tersebut selesai dan proses berstatus Waiting.

3.1.3. Process Control BlockTiap proses digambarkan dalam sistem operasi oleh sebuahprocess control blockPCB - juga disebutsebuah control block. Sebuah PCB ditunjukkan dalam Gambar 2-2. PCB berisikan banyak bagian dariinformasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal dibawah ini:

• Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.

• Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untukproses ini.

• CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.Register tersebut termasukaccumulator, indeks register,stack pointer, general-purposes register,ditambahcode informationpada kondisi apa pun. Besertaan dengan program counter, keadaaan/status

49

Page 70: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebutberjalan/bekerja dengan benar setelahnya (lihat Gambar 2-3).

• Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasardan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yangdigunakan oleh sistem operasi (lihat Bab Managemen memori).

• Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, bataswaktu, jumlah akun jumlahjob atau proses, dan banyak lagi.

• Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini,suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.

• PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yangsatu dengan yang lain.

Gambar 3-2. Process Control Block

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-2.png

50

Page 71: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-3.

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png

3.1.4. ThreadsModel proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuahprogram yang menjalankan eksekusithreadtunggal. Sebagai contoh, jika sebuah proses menjalankansebuah program Word Processor, ada sebuahthreadtunggal dari instruksi-instruksi yang sedangdilaksanakan.

Kontrol threadtunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu.Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuahproses untuk memiliki eksekusimultithreads, agar dapat secara terus menerus mengetik dan

51

Page 72: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

menjalankan pengecek ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkanproses untuk menjalankan lebih dari satu tugas pada satu waktu. Pada subbabThreadakan dibahasprosesmultithreadedlebih lanjut.

3.2. Penjadwalan ProsesMultiprogrammingbertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasiwaktu yang digunakan oleh CPU,sehingga proses berjalan sepanjang waktu dan meperkecil waktuidle .Untuk sistem yang bersifatuniprosesor, hanya ada satu proses yang bisa berjalan setiap waktunya. Jikaproses yang ada lebih dari satu, maka proses yang lain harus menunggu sampai CPU bebas dan siapuntuk dijadwalkan kembali.

3.2.1. Queue SchedulingKetika sebuah proses memasuki sistem, proses itu diletakkan di dalamjob queue . Pada antrian initerdapat seluruh proses yang berada dalam sistem. Sedangkan proses yang berada pada memori utama,siap dan menunggu untuk mengeksekusi disimpan dalam sebuah daftar yang bernamaready queue.Antrian ini biasanya disimpan sebagailinked list . Headerdari ready queueberisipointeruntuk PCBpertama dan PCB terakhir pada list. Setiap PCB memilikipointer fieldyang menunjuk kepada PCBuntuk proses selanjutnya dalamready queue.

Sistem operasi juga memiliki antrian lain. Ketika sebuah proses dialokasikan ke CPU, proses tersebutberjalan sebentar lalu berhenti, di-interupsi, atau menunggu suatu hal tertentu, seperti selesainya suatupermintaan I/O. Dalam permintaan I/O, bisa saja yang diminta itu adalahtape drive, atau peralatan yangdi- sharesecara bersama-sama, seperti disk. Karena ada banyak proses dalam sistem, disk bisa saja sibukdengan permintaan I/O dari proses lainnya. Untuk itu proses tersebut mungkin harus menunggu disktersebut. Daftar dari proses-proses yang menunggu peralatan I/O tertentu disebut dengandevice queue.Tiap peralatan memilikidevice queue-nya masing-masing.Gambar 3-4.

52

Page 73: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-4. Device Queue

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-4.png

Penjadwalan proses dapat direpresentasikan secara umum dalam bentuk diagram antrian, seperti yangditunjukkan olehGambar 3-5. Setiap kotak segi empat menunjukkan sebuah antrian. Dua tipe antrianmenunjukan antrian yang siap dan seperangkatdevice queues. Lingkaran menunjukkan sumber dayayang melayani antrian, dan tanda panah mengindikasikan alur dari proses-proses yang ada dalam sistem.

53

Page 74: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-5. Diagram Antrian

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-5.png

Sebuah proses baru pertama-tama diletakkan dalamready queue. Proses tersebut menunggu di dalamreadyantrian sampai dia dipilih untuk eksekusi, atau dengan kata lain di-dispatched. Begitu prosestersebut dialokasikan ke CPU dan sedang berjalan, beberapa kemungkinan di bawah ini dapat terjadi:

• Proses tersebut mengeluarkan permintaan I/O, lalu ditempatkan dalam sebuah antrian I/O

• Proses tersebut dapat membuat sub proses yang baru dan menunggu untuk di-terminasi

• Proses tersebut dapat dikeluarkan secara paksa dari CPU, sebagai hasil dari suatu interupsi, dandiletakkan kembali dalamready queue

Pada dua kemungkinan pertama (proses meminta I/O atau membuat sub proses baru), proses bergantikeadaan dariwaiting statemenjadiready state, lalu diletakkan kembali dalamready queue. Proses akanmeneruskan siklus ini sampai dia di-terminasi , yaitu saat dimana proses tersebut dikeluarkan dariseluruh antrian yang ada dan memiliki PCB-nya sendiri dan seluruh sumber daya yang dia gunakandialokasikan kembali.

54

Page 75: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.2.2. SchedulerSebuah proses berpindah-pindah di antara berbagai penjadwalan antrian seumur hidupnya. Sistemoperasi harus memilih dan memproses antrian-antrian ini berdasarkan kategorinya dengan cara tertentu.Oleh karena itu, proses seleksi ini harus dilakukan olehscheduler yang tepat.

Dalam sistembatch, seringkali proses yang diserahkan lebih banyak daripada yang dapat dilaksanakandengan segera. Proses-proses ini disimpan pada suatumass-storage device(semacam disk), dimanaproses tersebut disimpan untuk eksekusi di lain waktu.Long-term scheduler, atau job scheduler ,memilih proses dari tempat ini dan mengisinya ke dalam memori. Sedangkanshort-term scheduler,atau CPU scheduler, hanya memilih proses yang sudah siap untuk melakukan eksekusi, danmengalokasikan CPU untuk proses tersebut.

Hal yang cukup jelas untuk membedakan kedua jenisschedulerini adalah frekuensi dari eksekusinya.Short-term schedulerharus memilih proses baru untuk CPU sesering mungkin. Sebuah proses dapatmengeksekusi hanya dalam beberapa milidetik sebelum menunggu permintaan I/O. Seringkali,short-term schedulermengeksekusi paling sedikit sekali setiap 100 milidetik. Karena durasi waktu yangpendek antara eksekusi-eksekusi tersebut,short-term schedulerseharusnya cepat. Jika memerlukanwaktu 10 mili detik untuk menentukan suatu proses eksekusi selama 100 mili detik, maka 10/(100 + 10)= 9 persen dari CPU sedang digunakan (atau terbuang) hanya untuk pekerjaan penjadwalan.

Long-term scheduler, pada sisi lain, mengeksekusi jauh lebih jarang. Mungkin ada beberapa menitwaktu yang dibutuhkan untuk pembuatan proses baru dalam sistem.Long-term schedulermengontroldegree of multiprogramming(jumlah proses dalam memori). Jikadegree of multiprogrammingstabil,maka tingkat rata-rata penciptaan proses harus sama dengan tingkat rata rata proses meninggalkansistem. Maka dari itulong-term schedulermungkin dipanggil hanya ketika suatu proses meninggalkansistem. Karena interval yang lebih panjang antara eksekusi,long-term schedulerdapat menggunakanwaktu yang lebih lama untuk menentukan proses mana yang harus dipilih untuk dieksekusi.

Sangat penting bagilong-term schedulermembuat seleksi yang hati-hati. Secara umum, proses dapatdibedakan atas dua macam, yaitu prosesI/O bound dan prosesCPU bound . ProsesI/O boundadalahproses yang lebih banyak menghabiskan waktunya untuk mengerjakan I/O dari pada melakukankomputasi. ProsesCPU-bound, di sisi lain, jarang melakukan permintaan I/O, dan menggunakan lebihbanyak waktunya untuk melakukan komputasi. Oleh karena itu,long-term schedulerharus memilihgabungan proses yang baik antara prosesI/O bounddanCPU bound. Jika seluruh proses adalahI/Obound, ready queueakan hampir selalu kosong, danshort-term schedulerakan memiliki sedikit tugas.Jika seluruh proses adalahCPU bound, I/O waiting queueakan hampir selalu kosong, peralatan akantidak terpakai, dan sistem akan menjadi tidak seimbang.Sistem dengan kinerja yang terbaik akanmemiliki kombinasi yang baik antara prosesCPU bounddanI/O bound.

Pada sebagian sistem,long-term schedulerbisa jadi tidak ada atau kerjanya sangat minim. Sebagaicontoh, sistemtime-sharingseperti UNIX sering kali tidak memilikilong-term scheduler. Stabilitassistem-sistem seperti ini bergantung pada keterbatasan fisik (seperti jumlah terminal yang ada) atau padapenyesuaian sendiri secara alamiah oleh manusia sebagai pengguna. Jika kinerja menurun pada tingkatyang tidak dapat diterima, sebagian pengguna akan berhenti.

Sebagian sistem operasi, seperti sistemtime-sharing, dapat memperkenalkan sebuahschedulertambahan, yaitumedium-term scheduler. Schedulerini digambarkan padaGambar 3-6. Ide utama ataukunci darischedulerini terkadang akan menguntungkan untuk memindahkan proses dari memori (dandari pengisian aktif dari CPU), dan akibatnyadegree of multiprogrammingakan berkurang. Di kemudianwaktu, proses dapat dibawa kembali dalam memori dan eksekusinya dapat dilanjutkan pada keadaandimana proses itu dipindahkan tadi. Skema ini disebutswapping. Proses di-swapped outdan di-

55

Page 76: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

swapped inolehschedulerini. Swappingmungkin diperlukan untuk meningkatkan mutu penggabunganproses, atau karena perubahan dalam kebutuhan memori yang mengakibatkan memori harus dibebaskan.Swappingdibahas dalamBagian 5.2.1.

Gambar 3-6. Medium-term Scheduler

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-6.png

3.2.3. Context SwitchMengganti CPU ke proses lain memerlukan penyimpanan keadaan dari proses lama dan mengambilkeadaan dari proses yang baru. Hal ini dikenal dengan sebutancontext switch . Context switchsebuahproses direpresentasikan dalam PCB dari suatu proses; termasuk nilai dari CPU register, status proses(bisa dilihat padaGambar 3-7)dan informasi manajemen memori. Ketikacontext switchterjadi,kernelmenyimpan data dari proses lama ke dalam PCB nya dan mengambil data dari proses baru yang telahterjadwal untuk berjalan. Waktucontext switchadalah murnioverhead, karena sistem melakukanpekerjaan yang tidak begitu berarti selama melakukan pengalihan. Kecepatannya bervariasi dari mesinke mesin, bergantung pada kecepatan memori, jumlah register yang harus di-copy, dan ada tidaknyainstruksi khusus (seperti instruksi tunggal untuk mengisi atau menyimpan seluruh register). Tingkatkecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.

56

Page 77: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-7. Context Switch

http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png

Waktucontext switchsangat begantung pada dukungan perangkat keras. Sebagai contoh, prosesor sepertiUltraSPARC menyediakan beberapa set register. Sebuah prosescontext switchhanya memasukkanperubahanpointerke set register yang ada saat itu. Tentu saja, jika proses aktif yang ada lebih banyakdaripada proses yang ada pada set register, sistem menggunakan bantuan untuk meng-copy data registerdari dan ke memori, sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyakpekerjaan yang harus dilakukan selamacontext switch. Bisa dilihat pada Bab Memori, teknikmanagemen memori tingkat lanjut dapat mensyaratkan data tambahan untuk diganti dengan tiap data.Sebagai contoh, ruang alamat dari proses yang ada saat itu harus dijaga sebagai ruang alamat untukproses yang akan dikerjakan berikutnya. Bagaimana ruang alamat dijaga, berapa banyak pekerjaandibutuhkan untuk menjaganya, tergantung pada metode managemen memori dari sistem operasi. Akankita lihat pada Bab Memori,context switchterkadang bisa menyebabkanbottleneck, dan programmer

57

Page 78: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

menggunakan struktur baru (threads) untuk menghindarinya kapan pun memungkinkan.

3.3. Interaksi ProsesProses yang dijalankan pada suatu sistem operasi dapat bekerja secara bersama-sama ataupun sendirisaja. Bagian sebelum ini telah menjelaskan mengenai konsep proses dan bagaimana penjadwalan prosesitu. Disini kita akan melihat bagaimana hubungan antara proses-proses itu.

3.3.1. Proses yang KooperatifProses yang bersifatconcurrentbekerja sama dengan proses lain. Proses itu kooperatif jika mereka dapatsaling mempengaruhi. Kerja sama antar proses itu penting karena beberapa alasan :

• Pembagian informasi : Beberapa proses dapat mengakses beberapa data yang sama.

• Kecepatan komputasi : Tugas yang dijalankan dapat berjalan dengan lebih cepat jika tugas tersebutdipecah-pecah menjadi beberapa sub bagian dan dieksekusi secara paralel dengan sub bagian yanglain. Peningkatan kecepatan ini dapat dilakukan jika komputer tersebut mempunyai beberapa elemenpemrosesan, seperti CPU atau jalur I/O.

• Modularitas : Akan lebih mudah untuk mengatur tugas yang kompleks jika tugas tersebut dipecahmenjadi beberapa sub bagian, kemudian mempunyai proses atauthreadyang berbeda untukmenjalankan setiap sub bagian.

• Kenyamanan :Userbisa dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama.Contohnya satuuserdapat mengetik, mengedit, dan mencetak suatu halaman tertentu secarabersamaan.

Kerja sama antar proses membutuhkan suatu mekanisme yang memperbolehkan proses-proses untukmengkomunikasikan data dengan yang lain dan meng-synchronizekerja mereka sehingga tidak ada yangsaling menghalangi. Salah satu cara proses dapat saling berkomunikasi adalahInterprocessCommunication(IPC) yang akan dijelaskan lebih lanjut di bagian berikut.

3.3.2. Masalah Produser/KonsumerProduser membuat suatu informasi yang dapat dibagi dengan proses lainnya. Konsumer menghabiskandata yang dibuat oleh produser. Misalnya program cetak memproduksi karakter yang dipakai olehprinter.

Masalah yang biasanya dihadapi oleh produser dan konsumer adalah bagaimana caranyamensinkronisasikan kerja mereka sehingga tidak ada yang saling mengganggu. Salah satu contohbagaimana masalah ini dapat terjadi adalahBounded Buffer Problem.

Solusi pembagian memori untukBounded Buffer Problemditerangkan dengan program sebagai berikut :

import java.util.*;

58

Page 79: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

public class BoundedBuffer {

public BoundedBuffer() {// buffer diinisialisasikan kosongcount = 0;in = 0;out = 0;

buffer = new Object[BUFFER_SIZE];}

// produser memanggil method inipublic void enter( Object item ) {

while ( count == BUFFER_SIZE ); // tidak melakukan apa-apa

// menambahkan suatu item ke dalam buffer++count;buffer[in] = item;in = ( in + 1 ) % BUFFER_SIZE;

if ( count == BUFFER_SIZE )System.out.println( "Producer Entered " +item + " Buffer FULL" );

elseSystem.out.println( "Producer Entered " +item + " Buffer Size = " + count );

}

// konsumer memanggil method inipublic Object remove() {

Object item ;

while ( count == 0 ); // tidak melakukan apa-apa

// menyingkirkan suatu item dari buffer--count;item = buffer[out];out = ( out + 1 ) % BUFFER_SIZE;

if ( count == 0 )System.out.println( "Consumer consumed " +item + " Buffer EMPTY" );elseSystem.out.println( "Consumer consumed " +item + " Buffer Size = " +count );

return item;}

public static final int NAP_TIME = 5;private static final int BUFFER_SIZE = 5;

59

Page 80: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

private volatile int count;private int in; // arahkan ke posisi kosong selanjutnyaprivate int out; // arahkan ke posisi penuh selanjutnyaprivate Object[] buffer;

}

Bufferadalah tempat penyimpanan data dimana produser mengisinya dan konsumer mengosongkanbuffer tersebut. Jikabufferkosong, konsumer harus menunggu, dan ketikabufferpenuh, produser harusmenunggu. Disinilah produser harus bekerja sama dengan konsumer. Konsumer harus menunggu sampaiada barang yang diproduksi.

Program dibawah ini menggambarkan proses yang dijalankan oleh produser untukBounded BufferProblem

//Producer.javaimport java.util.*;

public class Producer extends Thread {public Producer(BoundedBuffer b) {

buffer = b;}public void run() {

Date message;while (true) {

int sleeptime =(int) (BoundedBuffer.NAP_TIME * Math.random() );

System.out.println("Producer sleeping for "+ sleeptime + " seconds");

try { sleep(sleeptime*1000); }catch(InterruptedException e) {}// membuat suatu barang & memasukkannya ke buffermessage = new Date();System.out.println("Producer produced " + message);buffer.enter(message);

}}private BoundedBuffer buffer;

}

Program berikut menggambarkan proses yang dijalankan oleh konsumer padaBounded Buffer Problem

// Consumer.java

import java.util.*;

public class Consumer extends Thread {public Consumer(BoundedBuffer b) {

buffer = b;}

60

Page 81: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

public void run() {Date message;while (true) {

int sleeptime =(int) (BoundedBuffer.NAP_TIME * Math.random() );

System.out.println("Consumer sleeping for "+ sleeptime + " seconds");

try { sleep(sleeptime*1000); }catch(InterruptedException e) {}

// mengambil barang dari bufferSystem.out.println("Consumer wants to consume.");message = (Date)buffer.remove();

}}

private BoundedBuffer buffer;}

Masalah produser-konsumer denganunbounded-buffertidak menempatkan batas praktikal pada ukuranpadabuffer . Konsumer harus menunggu untuk barang baru, tetapi produser dapat selalu memproduksibarang baru. Sedangkan masalah produser-konsumerbounded-buffermengasumsikan ukuranbufferyang ditetapkan. Pada kasus ini, konsumer harus menunggu sampaibufferkosong dan produser harusmenunggu sampaibufferpenuh.

3.4. Hubungan Antara Proses dan Client/Server ProsesSebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari pengertiannya, cara kerjanya,sampai operasi-operasinya seperti proses pembentukannya dan proses pemberhentiannya setelah selesaimelakukan eksekusi. Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung,misal bagaimana beberapa proses dapat saling berkomunikasi dan bekerja-sama.

Kalau pada sub-bab sebelumnya kita banyak membahas mengenai buffer, dan lingkungan yang berbagimemori. Pada bagian ini kita lebih banyak membahas teknik komunikasi antara proses melaluikirim(send) dan terima (recive) yang biasa dikenal sebagai IPC.

Selain itu pada bagian ini kita akan menyingung sedikit mengenai client/server proses. Beberapa topikyang akan dibahas adalah Java RMI (Remote Method Invocation) dan RPC (Remote Procedure Call).Yang keduanya juga menggunakan mekanisme komunikasi IPC, namun menggunkan sistem yangterdistribusi yang melibatkan jaringan. Pada bagian ini juga akan dibahas mengenai infrastruktur dasarjaringan yaitu socket.

61

Page 82: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.4.1. Hubungan Antara Proses

3.4.1.1. Proses yang Kooperatif

Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakaan menjadiyaitu proses independen dan proses kooperatif. Suatu proses dikatakan independen apabila prosestersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem.Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lainadalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau punterpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakankooperatif bila proses dapat membagi datanya dengan proses lain.

Ada 4 alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif :

1. Pembagian informasi : apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama(sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yangmengijinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut.

2. Kecepatan penghitungan / komputasi : jika kita menginginkan sebuah tugas khusus untukmenjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian darisubtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapatdilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPUatau jalur I/O).

3. Modularitas : kita mungkin ingin untuk membangun sebuah sistem pada sebuah modelmodular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.

4. Kenyamanan : bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakansecara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak,dan meng-compile secara parallel.

import java.util.*;

public class BoundedBuffer {public BoundedBuffer() {

// buffer diinisialisasikan kosongcount = 0;in = 0;out = 0;

buffer = new Object[BUFFER_SIZE];}

// produser memanggil method inipublic void enter( Object item ) {

while ( count == BUFFER_SIZE ); // do nothing

// menambahkan suatu item ke dalam buffer++count;buffer[in] = item;

62

Page 83: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

in = ( in + 1 ) % BUFFER_SIZE;if ( count == BUFFER_SIZE )

System.out.println( "Producer Entered " +item + " Buffer FULL" );

elseSystem.out.println( "Producer Entered " +

item + " Buffer Size = " + count );}

// consumer memanggil method inipublic Object remove() {

Object item ;while ( count == 0 )

; // do nothing// menyingkirkan suatu item dari buffer--count;item = buffer[out];out = ( out + 1 ) % BUFFER_SIZE;if ( count == 0 )

System.out.println( "Consumer consumed " +item + " Buffer EMPTY" );

elseSystem.out.println( "Consumer consumed " +

item + " Buffer Size = " +count );return item;

}public static final int NAP_TIME = 5;private static final int BUFFER_SIZE = 5;private volatile int count;private int in; // arahkan ke posisi kosong selanjutnyaprivate int out; // arahkan ke posisi penuh selanjutnyaprivate Object[] buffer;

}

Sebuah produsen proses membentuk informasi yang dapat digunakan oleh konsumen proses. Sebagaicontoh sebuah cetakan program yang membuat banyak karakter yang diterima oleh driver pencetak.Untuk memperbolehkan produser dan konsumer proses agar dapat berjalan secara terus menerus, kitaharus menyediakan sebuah item buffer yang dapat diisi dengan proses produser dan dikosongkan olehproses konsumer. Proses produser dapat memproduksi sebuah item ketika konsumer sedangmengkonsumsi item yang lain. Produser dan konsumer harus dapat selaras. Konsumer harus menungguhingga sebuah item diproduksi.

3.4.1.2. Komunikasi Proses Dalam Sistem

Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakanalat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam prosesIPC (Inter-Process Communication). IPC menyediakan sebuah mekanisme untuk megijinkanproses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamatyang sama. IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proseskomunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung

63

Page 84: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

dalam sebuah jaringan. IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistempenyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.

3.4.1.2.1. Sistem Penyampaian Pesan

Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang lain tanpaperlu menggunakan pembagian data. Sebuah fasilitas IPC menyediakan paling sedikit 2 operasi yaitukirim (pesan) dan terima (pesan). Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuranpasti atau variabel. Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem implementasiadalah sistem yang sederhana. Pesan berukuran variabel menyediakan sistem implementasi level yanglebih kompleks.

Jika dua buah proses ingin berkomonikasi, misalnya proses P dan proses Q, mereka harus mengirimpesan atau menirima pesan dari satu ke yang lainnya. Jalur ini dapat diimplentasikan dengan banyakcara, namun kita hanya akan memfokuskan pada implementasi logiknya saja, bukan implementasifisik(seperti shared memory, hardware bus, atau jaringan).Berikut ini ada beberapa metode untukmengimplementasikan sebuah jaringan dan operasi pengiriman / penerimaan secara logika :

• Komunikasi langsung atau tidak langsung.

• Komunikasi secara simetris / asimetris.

• Buffer otomatis atau eksplisit.

• Pengiriman berdasarkan salinan atau referensi.

• Pesan berukuran pasti dan variabel.

3.4.1.2.2. Penamaan

Proses-proses yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan yanglain. Mereka dapat menggunakan komunikasi langsung / tidak langsung.

3.4.1.2.2.1. Komunikasi Langsung

Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaanatau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secaraprimitive dapat dijabarkan sebagai :

• Send (P, message) - mengirim sebuah pesan ke proses P.

• Receive (Q, message) - menerima sebuah pesan dari proses Q.

Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu :

• Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingindikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.

• Sebuah jaringan adalah terdiri dari penggabungan 2 proses.

64

Page 85: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

• Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.

Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baikkeduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi,hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan namabagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai :

• Send (P, message) - mengirim sebuah pesan kepada proses P.

• Receive (id, message) - menerima sebuah pesan dari semua proses. Variabel id diatur sebagai namadari proses dengan komunikasi.

Kerugian dari kedua cara yang disebutkan diatas adalah adanya kebatasan modularitas, merubah namaproses mungkin mengharuskan kita untuk merubah semua definisi proses yang lain. Semua referensikepada nama yang lama harus ditemukan.

3.4.1.2.2.2. Komunikasi Tidak Langsung

Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari / melalui mailbox(Kotak Surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objekdidalam setiap pesan yang dapat ditempatkan dari proses dan dari setipap pesan yang bias dipindahkan.Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasidengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat salingberkomunikasi apabila kedua proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkansebagai :

• Send (A, message) - mengirim pesan ke mailbox A.

• Receive (A, message) - menerima pesan dari mailbox A.

Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut :

• Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.

• Sebuah link mungkin dapat berasosiasi dengan lebih dari 2 proses.

• Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiaplink berhubungan pada satu mailbox.

Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A,ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akanmenerima pesan yang dikirim P1?. Jawabannya tergantung dari jalur yang kita pilih :

• Mengijinkan sebuah link berasosiasi dengan paling banyak 2 proses.

65

Page 86: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

• Mengijinkan paling banyak 1 proses pada suatu waktu untuk mengeksekusi hasil kiriman (receiveoperation).

• Mengijinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah ituP2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasipenerima kepada pengirim.

Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki olehproses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox)dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox). Selama setiap mailboxmempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harusmenerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akanhilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidaklagi ada.

Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain.Maka sistem operasi harus memiliki mekanisme yang mengijinkan proses untuk melakukan hal-haldibawah ini :

• Membuat mailbox baru.

• Mengirim dan menerima pesan melalui mailbox.

• Menghapus mailbox.

Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untukpertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan melalui mailbox ini.Bagaimanapun, kepemilikan dan hak menerima pesan mungkin dapat dialihkan ke proses lain melaluisistem pemanggilan.

3.4.1.3. Sinkronisasi

Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive.Terdapat design yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkindapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkronatau asinkron.

• Pengiriman yang diblok : Proses pengiriman di blok sampai pesan diterima oleh proses penerima(receiving process) atau oleh mailbox.

• Pengiriman yang tidak diblok : Proses pengiriman pesan dan mengkalkulasi operasi.

• Penerimaan yang diblok : Penerima mem blok samapai pesan tersedia.

• Penerimaan yang tidak diblok : Penerima mengembalikan pesan valid atau null.

66

Page 87: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.4.1.4. Buffering

Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antriansementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan :

• Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyaipenungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerimamenerima pesan.

• Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapatdimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, danpengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas.Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.

• Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapatmenunggu disini. Pengirim tidak akan pernah di blok.

3.4.1.5. Contoh Produser-Konsumer

Sekarang kita mempunyai solusi problem produser-konsumer yang menggunakan penyampaian pesan.Produser dan konsumer akan berkomunikasi secara tidak langsung menggunakan mailbox yang dibagi.Buffer menggunakan java.util.Vector class sehingga buffer mempunyai kapasitas tak terhingga. Dansend() dan read() method adalah nonblocking. Ketika produser memproduksi suatu item, item tersebutdiletakkan ke mailbox melalui send() method. Konsumer menerima item dari mailbox menggunakanreceive() method. Karena receive() nonblocking, consumer harus mengevaluasi nilai dari Object yangdireturn dari receive(). Jika null, mailbox kosong.

import java.util.*;

public class Producer extends Thread {private MessageQueueueue mbox;public Producer( MessageQueueueue m ) {

mbox = m;}public void run() {

Date message;while ( true ) {

int sleeptime = ( int ) ( Server.NAP_TIME * Math.random() );System.out.println( "Producer sleeping for " + sleeptime + " seconds" );try {

Thread.sleep(sleeptime*1000);} catch( InterruptedException e ) {}message = new Date();System.out.println( "Producer produced " + message );mbox.send( message );

}}

}

67

Page 88: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

import java.util.*;

public class Consumer extends Thread {private MessageQueueueue mbox;public Consumer( MessageQueueueue m ) {

mbox = m;}

public void run() {Date message;while ( true ) {

int sleeptime = ( int ) ( Server.NAP_TIME * Math.random());System.out.println("Consumer sleeping for " + sleeptime + " seconds" );try {

Thread.sleep( sleeptime * 1000 );} catch( InterruptedException e ) {}message = ( Date ) mbox.receive();if ( message != null )

System.out.println("Consumer consume " + message );}

}}

Kita memiliki dua aktor di sini, yaitu Produser dan Konsumer. Produser adalah thread yangmenghasilkan waktu (Date) kemudian menyimpannya ke dalam antrian pesan. Produser juga mencetakwaktu tersebut di layer (sebagai umpan balik bagi kita). Konsumer adalah thread yang akan mengaksesantrian pesan untuk mendapatkan waktu (date) itu dan tak lupa mencetaknya di layer. Kita menginginkansupaya konsumer itu mendapatkan waktu sesuatu dengan urutan sebagaimana produser menyimpanwaktu tersebut. Kita akan menghadapi salah satu dari dua kemungkinan situasi di bawah ini :

• Bila p1 lebih cepat dari c1, kita akan memperoleh output sebagai berikut :

. . .Consumer consume Wed May 07 14:11:12 ICT 2003Consumer sleeping for 3 secondsProducer produced Wed May 07 14:11:16 ICT 2003Producer sleeping for 4 seconds// p1 sudah mengupdate isi mailbox waktu dari Wed May 07// 14:11:16 ICT 2003 ke Wed May 07 14:11:17 ICT 2003,// padahal c1 belum lagi mengambil waktu Wed May 07 14:11:16Producer produced Wed May 07 14:11:17 ICT 2003Producer sleeping for 4 secondsConsumer consume Wed May 07 14:11:17 ICT 2003Consumer sleeping for 4 seconds// Konsumer melewatkan waktu Wed May 07 14:11:16. . .

68

Page 89: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

• Bila p1 lebih lambat dari c1, kita akan memperoleh keluaran seperti berikut :

. . .Producer produced Wed May 07 14:11:11 ICT 2003Producer sleeping for 1 secondsConsumer consume Wed May 07 14:11:11 ICT 2003Consumer sleeping for 0 seconds// c1 sudah mengambil isi dari mailbox, padahal p1 belum// lagi megupdate isi dari mailbox dari May 07 14:11:11// ICT 2003 ke May 07 14:11:12 ICT 2003, c1 mendapatkan// waktu Wed May 07 14:11:11 ICT 2003 dua kali.Consumer consume Wed May 07 14:11:11 ICT 2003Consumer sleeping for 0 secondsProducer sleeping for 0 secondsProducer produced Wed May 07 14:11:12 ICT 2003. . .

Situasi di atas dikenal dengan race conditions. Kita dapat menghindari situasi itu denganmensinkronisasikan aktivitas p1 dan c1 (sehubungan dengan akses mereka ke mailbox. Proses tersebutakan didiskusikan pada chapter yang akan datang (chapter 5).

3.4.1.6. Mailbox

import java.util.*;

public class MessageQueue {private Vector q;public MessageQueue() {

q = new Vector();}

// Mengimplementasikan pengiriman nonblockingpublic void send( Object item ) {

q.addElement( item );}

// Mengimplementasikan penerimaan nonblockingpublic Object receive() {

Object item;if ( q.size() == 0 ) {

return null;}else {

item = q.firstElement();q.removeElementAt(0);return item;

69

Page 90: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

}}

}

1. Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat ruang kosong padamailbox.

2. Menunggu paling banyak n milidetik.

3. Tidak menunggu, tetapi kembali (return) secepatnya.

4. Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walaupun mailbox yang ditujupenuh. Ketika pesan dapat disimpan pada mailbox, pesan akan dikembalikan kepadapengirim(sender). Hanya satu pesan kepada mailbox yang penuh yang dapat diundur (pending) padasuatu waktu untuk diberikan kepada thread pengirim.

3.4.2. Client/Server SystemDengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuahsistem yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metodakomunikasi antar proses yang melibatkan jaringan komputer.

3.4.2.1. Socket

Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau threadberkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socketdibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socketdigunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu.Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan clientmelalui socket yang dibangun.

3.4.2.1.1. Server dan Thread

Pada umumnya sebuah server melayani client secara konkuren, oleh sebab itu dibutuhkan thread yangmasing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread barubegitu ada koneksi dari client yang diterima (accept)

Server menggunakan thread apabila client melakukan koneksi, sehingga server memiliki tingkatreabilitas yang tinggi. Pada sistem yang memiliki banyak pemakai sekaligus thread mutlak dibutuhkan,karena setiap pemakai sistem pasti menginginkan respon yang baik dari server.

70

Page 91: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.4.2.1.2. Java Socket

Java menyediakan dua buah tipe socket yang berbeda dan sebuah socket spesial. Semua soket ini tersediadalam paket jaringan, yang merupakan paket standar java. Berikut ini soket yang disediakan oleh java :

• Connection-Oriented (TCP) socket, yang diimplementasikan pada kelasjava.net.Socket

• Connectionless Socket (UDP), yang diimplentasikan oleh kelasjava.net.DatagramSocket

• Dan yang terakhir adalahjava.net.MulticastSocket, yang merupakan perluasan (extended) dari SocketUDP. Tipe socket ini memiliki kemampuan untuk mengirim pesan kebanyak client sekaligus(Multicast), sehingga baik digunakan pada sistem yang memiliki jenis layanan yang sama.

...public WebServer(int port, String docRoot) throws IOException{this.docRoot = new File(docRoot);if(!this.docRoot.isDirectory()){throw new IOException(docRoot + " bukan direktori.");}System.out.println("Menghidupkan Web server ");System.out.println("port : " + port);System.out.println("docRoot : " + docRoot);try{serverSocket = new ServerSocket(port);}catch(IOException ioe){System.out.println("Port sudah digunakan");System.exit(1);}}

public void run(){while(true){try{System.out.println("Menanti connection ... ");Socket socket = serverSocket.accept();String alamatClient = socket.getInetAddress().getHostAddress();

System.out.println("Menangkap connection dari " + alamatClient);InputStream inputStream = socket.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

OutputStream outputStream = socket.getOutputStream();...

71

Page 92: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Potongan kode diatas memperlihatkan teknik yang digunakan oleh java untuk membuka socket (padakasus ini server socket). Selanjutnya server dapat berkomunikasi dengan clientnya menggunakanInputStream untuk menerima pesan dan OutputStream untuk mengirim pesan.

3.4.2.1.3. RPC (Remote Procedure Call)

Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuahprosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harusmenyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membukasocket, menunggu client yang meminta proseduryang disediakan oleh server.

Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakanparadigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remoteprocedure.

RPC menggunakan soket untuk berkomunikasi dengan proses lainnya. Pada beberapa sistem (SepertiSUN) RPC secara default sudah terinstall kedalam sistemnya, biasanya RPC ini digunakan untukadministrasi sistem. Sehingga seorang administrator jaringan bisa mengakses sistemnya danmemanajemen sistemnya dari mana saja, selama sistemnya terhubung kejaringan.

3.4.2.1.4. Java RMI

Pendekatan kedua yang akan kita bahas adalah RMI (Remote Method Invocation), sebuah teknikpemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakanparadigma pemrograman berorientasi objek (OOP).Dengan RMI memungkinkan kita untuk mengirimobjek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil methodpada remote objek, RMI membuat user dapat mengembangkan aplikasi java yang terdistribusi padajaringan

Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stubdan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skletonyang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus namamethod yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirimpaket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akanmenerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus(marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya(unmarshall).

3.4.2.1.4.1. Pembuatan Remote Objek

Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan padajaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kitaharus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu clientdapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompilemenggunakan RMI compiler terebut.

72

Page 93: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.4.2.1.4.2. Akses ke Remote Objek

Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankanNaming.lookup()method. RMI menyediakan url untuk pengaksesan ke remote objek yaiturmi://host/objek, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objekadalah parameter yang kita gunakan ketika kita memanggil methodNaming.rebind(). Client juga harusmenginstall RMISecurityManager untuk memastikan keamanan client ketika membuka soket kejaringan.

Java memilki sistem security yang baik sehingga user dapat lebih nyaman dalam melakukan komunikasipada jaringan. Selain itu java sudah mendukung pemorograman berorientasi object, sehinggapengembangan software berskala besar sangat dimungkinkan dilakukan oleh java. RMI sendirimerupakan sistem terdistribusi yang dirancang oleh SUN pada platfrom yang spesifik yaitu Java, apabilaanda tertarik untuk mengembangkan sistem terdistribusi yang lebih portable dapat digunakan CORBAsebagai solusi alternatifnya.

3.5. Konsep Thread

3.5.1. Apa itu ThreadThread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID,program counter,register set, danstack. Sebuah Thread berbagicode section, data section, dan sumber daya sistemoperasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebutlightweightprocess. Sebuah proses tradisional atauheavyweight processmempunyai thread tunggal yang berfungsisebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yangbanyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satusatuan waktu

73

Page 94: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-8. Thread

Banyak software yang berjalan pada PC modern didesain secaramultithreading. Sebuah aplikasibiasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagaipengendali. Contohnya sebuahweb browsermempunyai thread untuk menampilkan gambar atau tulisansedangkan thread yang lain berfungsi sebagai penerima data dari network.

Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yangserupa. Sebagai contohnya sebuahweb serverbisa mempunyai ratusan klien yang mengaksesnya secaraconcurrent. Kalauweb serverberjalan sebagai proses yang hanya mempunyai thread tunggal maka iahanya bisa melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukanpermintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah denganmembuatweb servermenjadimultithreading. Dengan ini maka sebuahweb serverakan membuat threadyang akan mendengar permintaan klien, ketika permintaan lain diajukan makaweb serverakanmenciptakan thread lain yang akan melayani permintaan tersebut.

Java mempunyai pengunaan lain dari thread. Perlu dikeahui bahwa java tidak mempunyai konsepasynchronous. Sebagai contohnya kalau program java mencoba untuk melakukan koneksi ke servermaka ia akan berada dalam keadaan block state sampai koneksinya jadi ( bisa dibayangkan apa yangterjadi apabila servernya mati ). Karena java tidak memiliki konsepasynchronousmaka solusinya adalahdengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread lain yangpertamanya tidur selamabeberap waktu ( misalnya 60 detik ) kemudian bangun. Ketika waktu tidurnyahabis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masihmencoba untuk melakukan koneksi ke server, kalau thread tersebut masih dalam keadaan mencoba untukmelakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untukmencoba melakukan koneksi ke server.

3.5.2. Keuntungan ThreadKeuntungan dari program yang multithrading dapat dipisah menjadi empat kategori :

74

Page 95: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

1. Responsi : Membuat aplikasi yang interaktif menjadimultithreadingdapat membuat sebuahprogram terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasiyang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalamweb browseryangmultithreading, sebuah thread dapat melayani permintaan pengguna sementarathread lain berusaha menampilkan image.

2. Berbagi sumber daya : thread berbagi memori dan sumber daya dengan thread lain yang dimilikioleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untukmempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomi : dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumberdaya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumberdaya proses yang memilikinya maka akan lebih ekonomis untuk membuat dancontext switchthread.Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan danpengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread.Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dancontextswitchproses 5 kali lebih lama dibandingkancontext switchthread.

4. Utilisasi arsitekturmultiprocessor: Keuntungan dari multithreading bisa sangat meningkat padaarsitekturmultiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yangberbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapihal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanyasatu thread yang dijalankan CPU pada satu-satuan waktu( satu -satuan waktu pada CPU biasadisebut time slice atau quantum ).

3.5.3. User dan Kernel Threads

User ThreadUser thread didukung diatas kernel dan diimplementasi oleh thread library pada user level.Librarymeneyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpadukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan danpenjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user -levelthread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabilakernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankanblockingsystem callmaka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalandalam aplikasi tersebut. Contohuser-thread librariesadalah POSIX Pthreads, Mach C-threads, danSolaris threads.

Kernel ThreadKernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajeman threaddilakukan oleh kernel padakernel space. Karena pengaturan thread dilakukan oleh sistem operasi makapembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalahthread diatur oleh kernel, karena itu jika sebuah thread menjalankanblocking system callmaka kernelbisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada

75

Page 96: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

lingkunganmultiprocessor, kernel bisa menjadwal thread-thread pada processor yang berbeda. Contohsistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.

3.5.4. Multithreading Models

Many-to-One ModelMany-to-One model memetakan banyak user-level thread ke saru kernel thread. Pengaturan threaddilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan yang sama dengan userthread. Selain itu karena hanya satu thread yang bisa mengakses thread pada suatu waktu makamultiplethread tidak bisa berjalan secara pararel padamultiprocessor. User-level thread yang diimplementasipada sistem operasi yang tidak mendukung kernel thread menggunakan Many-to-One model.

Gambar 3-9. Many-To-One

One-to-One ModelOne-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyakconcurrencydibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread.Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread.Karena pembuatan thread bisa menurunkan performa dari sebuah aplikasi maka implmentasi dari modelini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukungOne-to-One model adalah Windows NT dan OS/2.

76

Page 97: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-10. One-To-One

Many-to-Many ModelMany-to-many modelmultiplexesbanyak user-level thread ke kernel thread yang jumlahnya lebih kecilatau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik untuk sebagianaplikasi atau sebagian mesin. Many-to-One model mengijinkan developer ntuk membuat user threadsebanyak yang ia mau tetapiconcurrencytidak dapat diperoleh karena hanya satu thread yang bisadijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapideveloper harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi( dalambeberapa hal, developer hanya bisa membuat thread dalam jumlah yang terbatas ). Many-to-Many modeltidak menderita kelemahan dari 2 model di atas. Developer bisa membuat user thread sebanyak yangdiperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel padamultiprocessor. Danjuga ketika suatu thread menjalankanblocking system callmaka kernel dapat menjadwalkan thread lainuntuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, danDigital UNIX.

77

Page 98: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-11. Many-To-Many

3.5.5. Fork dan exec System CallAda 2 kemungkinan dalam system UNIX jikafork dipanggil oleh salah satu thread dalam proses:

1. Semua thread diduplikasi.

2. Hanya thread yang memanggilfork .

Kalau thread memanggilexec System Callmaka program yang dispesifikasi di parameter exec akanmengganti keseluruhan proses termasuk thread dan LWP.

Penggunaan 2 versi dari fork diatas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork,maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesifikasi di parameterexecakan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggilfork .Tetapi jika proses yang terpisah tidak memanggilexecsesudah fork maka proses yang terpisah tersebuthendaknya menduplikasi seluruh thread.

3.5.6. CancellationThread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya.Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) makasebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yangakan diberhentikan biasa disebut target thread.

Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :

1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.

78

Page 99: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

2. Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara inimemperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.

Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudahdialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yangdiberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalahyang sulit apabila digunakanasynchronous cancellation. Sistem operasi akan mengambil kembalisumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembalisemua sumber daya dari thread yang diberhentikan.

Alternatifnya adalah dengan menggunakanDeffered cancellation. Cara kerja darideffered cancellationadalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendakdiberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harusberhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti padawaktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagaicancellation points.

Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secaraasynchronous. Tetapi Pthread API menyediakandeferred cancellation. Hal ini berarti sistem operasiyang mengimplementasikan Pthread API akan mengijinkandeferred cancellation.

3.5.7. Penanganan SinyalSebuah sinyal digunakan di sistem UNIX untuknotifysebuah proses kalau suatu peristiwa telah terjadi.Sebuah sinyal bisa diterima secarasynchronousatauasynchronoustergantung dari sumber dan alasankenapa peristiwa itu memberi sinyal.

Semua sinyal(asynchronousdansynchronous) mengikuti pola yang sama :

1. Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.

2. Sinyal yang dimunculkan tersebut dikirim ke proses.

3. Sesudah dikirim, sinyal tersebut harus ditangani.

Contoh dari sinyalsynchronousadalah ketika suatu proses melakukan pengaksesan memori secarai ilegalatau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut.Contoh dari sinyalasynchronousmisalnya kita mengirimkan sinyal untuk mematikan proses dengankeyboard( alt-f4 ) maka sinyalasynchronousdikirim ke proses tersebut. Jadi ketika suatu sinyaldimunculkan oleh peristiwa diluar proses yang sedang berjalan maka proses tersebut menerima sinyaltersebut secaraasynchronous.

Setiap sinyal bisa ditangani oleh salah satu dari 2 penerima sinyal :

1. Penerima sinyal yang merupakan set awal dari sistem operasi.

2. Penerima sinyal yang didefinisikan sendiri ole user.

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya denganmengrimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yangmultithreading, karena sebuah proses bisa memiliki beberapa thread.

Secara umum ada 4 pilihan kemana sinyal harus dikirim :

79

Page 100: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

1. Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.

2. Mengirimkan sinyal ke setiap thread pada proses tersebut.

3. Mengirimkan sinyal ke thread tertentu dalam proses.

4. 4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.

Cara untuk mengirimkan sebuah sinyal tergantung dari tipe sinyal yang dimunculkan. Sebagai contohsinyalsynchronousperlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain padaproses tersebut. Tetapi situasi dengan sinyalasynchronousmenjadi tidak jelas. Beberapa sinyalasynchronous seperti sinyal yang berfungsi untuk mematikan proses ( contoh : alt-f4 ) harus dikirim kesemua thread. Beberapa versi UNIX yang multithreading mengijinkan thread menerima sinyal yang akania terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan kethread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untukmenangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinyaWindows 2000 menggunakanasynchronous procedure calls( APCs ). Fasilitas APC memperbolehkanuser thread untuk memanggil fungsi tertentu ketika user thread menerima notifikasi peristiwa tertentu.

3.5.8. Thread PoolsPadaweb serveryangmultithreadingada 2 masalah yang timbul :

1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukanterlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.

2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapathread pada proses startup dan menempatkan mereka kepools, dimana mereka duduk diam danmenunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkanthread daripooldan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudahselesai mengerjakan tugasnya maka ia kembali kepooldan menunggu pekerjaan lainnya. Bila tidakthread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.

Keuntungan thread pool :

1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding denganmenunggu thread baru dibuat.

2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yangtidak bisa mendukung banyak thread yang berjalan secaraconcurrent.

Jumlah thread dalampoolbisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, danjumlah permintaan klien yangconcurrent.

80

Page 101: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.5.9. Hal-Hal Lainnya dari Thread

3.5.9.1. Thread-Specific Data

Thread yang dimiliki oleh suatu proses memang berbagi data tetapi setiap thread mungkin membutuhkanduplikat dari data tertentu untuk dirinya sendiri dalam keadaan tertentu. Data ini disebut thread -specificdata.

3.5.9.2. Pthreads

Pthreads merujuk kepada POSIX standard( IEEE 1003.1 c ) mendefinisikan sebuah API untukpembuatan thread dan sinkronisasi. Pthreads adalah spesifikasi untuk thread dan bukan merupakan suatuimplementasi. Desainer sistem operasi boleh mengimplementasikan spesifikasi tersebut dalam berbagaicara yang mereka inginkan. Secara umum Libraries yang mengimplementasikan Pthreads dilarang padasistem berbasis UNIX seperti Solaris 2. Sistem operasi Windows secara umum belum mendukungPthreads, walaupun versishareware-nya sudah ada di domain publik.

3.6. Ilustrasi Thread dengan Linux dan JavaDewasa ini, banyak sistem operasi yang telah mendukung prosesmultithreading. Setiap sistem operasimemiliki konsep tersendiri dalam mengimplementasikannya ke dalam sistem.

3.6.1. Thread dengan LinuxKernelLinux mulai menggunakanthreadpada versi 2.2.Threaddalam Linux dianggap sebagaitask,seperti halnya proses. Kebanyakan sistem operasi yang mengimplementasikanmultithreadingmenjalankan sebuahthreadterpisah dari proses. Linus Torvalds mendefinisikan bahwa sebuah threadadalahContext of Execution(COE), yang berarti bahwa hanya ada sebuahProcess Control Block(PCB)dan sebuah penjadwal yang diperlukan. Linux tidak mendukungmultithreading, struktur data yangterpisah, atau pun rutinkernel.

Linux menyediakan dua macamsystem call, yaitu fork danclone. fork memiliki fungsi untukmenduplikasi proses dimana proses anak yang dihasilkan bersifatindependent. clonememiliki sifat yangmirip denganfork yaitu sama-sama membuat duplikat dari proses induk. Namun demikian, selainmembuat proses baru yang terpisah dari proses induk,clonejuga mengizinkan terjadinya proses berbagiruang alamat antara proses anak dengan proses induk, sehingga proses anak yang dihasilkan akan samapersis dengan proses induknya.

Setiap proses memiliki struktur data yang unik. Namun demikian, proses-proses di Linux hanyamenyimpanpointer-pointerke struktur data lainnya dimana instruksi disimpan, sehingga tidak harusmenyimpan instruksi ke setiap struktur data yang ada. Hal ini menyebabkancontext switchantar prosesdi Linux menjadi lebih cepat.

Ketika fork dieksekusi, sebuah proses baru dibuat bersamaan dengan proses penyalinan struktur data dariproses induk. Ketikaclonedieksekusi, sebuah proses baru juga dibuat, namun proses tersebut tidak

81

Page 102: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

menyalin struktur data dari proses induknya. Proses baru tersebut hanya menyimpanpointerke strukturdata proses induk. Oleh karena itu, proses anak dapat berbagi ruang alamat dan sumber daya denganproses induknya. Satu setflagdigunakan untuk mengindikasikan seberapa banyak kedua proses tersebutdapat berbagi. Jika tidak adaflagyang ditandai, maka tidak adasharing, sehinggacloneberlaku sebagaifork. Jika kelimaflagditandai, maka proses induk harus berbagi semuanya dengan proses anak.

Tabel 3-1. Tabel Flag dan Fungsinya

Flag Keterangan

CLONE_VM Berbagi data dan Stack

CLONE_FS Berbagi informasi sistem berkas

CLONE_FILES Berbagi berkas

CLONE_SIGHAND Berbagi sinyal

CLONE_PID Berbagi PID dengan proses induk

3.6.2. Thread dengan JavaSistem operasi mendukungthread pada tingkatkernel atau tingkat pengguna. Java merupakan salahsatu dari sedikit bahasa pemrograman yang mendukungthreaddi tingkat bahasa untuk pembuatan danmanajementhread. Karenathreaddalam Java diatur olehJava Virtual Machine(JVM), tidak denganuser level library ataupunkernel, sulit mengelompokkanthreaddi Java apakah di tingkat pengguna ataukernel.

Setiap program dalam Java memiliki minimal sebuahthread, yaitu main threadyang merupakansingle-threadtersendiri di JVM. Java juga menyediakan perintah untuk membuat dan memodifikasithreadtambahan sesuai kebutuhan di program.

3.6.2.1. Pembuatan Thread

Ada dua cara untuk membuatthread dalam Java. Pertama,thread dapat dibuat secara eksplisit dengancara membuat objek baru dari class yang telah meng-extends class Threadyang menyebabkan classtersebut mewarisimethod - methoddanfield dari class super. Dalam kasus ini, sebuahclasshanya bisameng-extendssebuah class. Keterbatasan ini dapat diatasi dengan cara kedua yaitu meng-implementsinterface Runnable, yang merupakan cara yang paling sering digunakan untuk membuatthread,sehingga class tersebut dapat meng-extends classlain.

Sebuah objek yang berasal dari subkelasThreaddapat dijalankan sebagaithreadpengontrol yangterpisah dalam JVM. Membuat objek dariclass Threadtidak akan membuatthreadbaru. Hanya denganmethod start threadbaru akan terbentuk. Memanggilmethod startuntuk membuat objek baru akanmengakibatkan 2 hal, yaitu:

1. Pengalokasian memori dan menginisialisasikan sebuahthreadbaru dalam JVM.

2. Memanggilmethod run, yang sudah di-override, membuatthreaddapat dijalankan oleh JVM

82

Page 103: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

(Catatan:Method rundijalankan jikamethod startdipanggil. Memanggilmethod runsecara langsunghanya menghasilkan sebuahsingle-threadtambahan selainmain thread)

Contoh pembuatanthreaddengan membuat objek baru dari class yang meng-extends class Thread:

public class TestThread1 {public static void main (String[] args) {

BuatThread1 b = new BuatThread1();for(int i = 0; i < angka; i++) {

b.start();}

}}

class BuatThread1 extends Thread {public void run() {

try {System.out.println("Thread baru dibuat.");

}catch (InterruptedException e) {}

}}

3.6.2.2. JVM dan Host Operating System

Implementasi umum dari JVM adalah di atas sebuahhost operating system. Hal ini memungkinkanJVM untuk menyembunyikan implementasi detail dari sistem operasi tempat JVM dijalankan danmenyediakan lingkungan abstrak dan konsisten yang memungkinkan program-program Java untukberoperasi di atasplatformapa pun yang mendukung JVM. Spesifikasi untuk JVM tidakmengindikasikan bagaimanathread-threadJava dipetakan ke sistem operasi tempat JVM dijalankan,melainkan menyerahkan keputusan tersebut kepada implementasi tertentu dari JVM. Windows95/98/NT/2000 menggunakan modelOne-to-One, sehingga setiapthreadJava untuk JVM pada sistemoperasi tersebut dipetakan kepada sebuahkernel thread. Solaris 2 awalnya mengimplementasikan JVMmenggunakan modelMany-to-One(disebutGreen Threads) . Akan tetapi, sejak JVM versi 1.1 denganSolaris 2.6, mulai diimplementasikan menggunakan modelMany-to-Many.

3.7. Penjadwal CPUPenjadwalan CPU adalah basis dari multi programming sistem operasi. Dengan men-switch CPUdiantara proses. Akibatnya sistem operasi bisa membuat komputer produktif. Dalam bab ini kami akanmengenalkan tentang dasar dari konsep penjadwalan dan beberapa algoritma penjadwalan. Dan kita jugamemaparkan masalah dalam memilih algoritma dalam suatu sistem.

83

Page 104: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.7.1. Konsep DasarTujuan dari multi programming adalah untuk mempunyai proses berjalan secara bersamaan, unutkmemaksimalkan kinerja dari CPU. Pada sistem prosesor tunggal, tidak pernah ada proses yang berjalanlebih dari satu. Bila ada proses yang lebih dari satu maka proses yang lain harus mengantri sampai cpubebas proses.

Ide dari multi porgamming sangat sederhana. Ketika sebuah proses dieksekusi maka proses yang lainharus menunggu sampai proses pertama selesai. Pada sistem komputer yang sederhana CPU akan banyakdalam posisi idle. Sehingga waktu CPU ini sangat terbuang,. Akan tetapi dengan multiprogamming, kitamencoba menggunakan waktu secara produktif. Beberapa proses di simpan di memori dalam satu waktu.Ketika suatu proses harus menuggu, Sistem operasi bisa saja akan menghentikan cpu dari suatu prosesyang sedang diekseskusi dan memberikan sumberdaya kepada proses yang lainnya. Begitu seterusnya.

Penjadwalan adalah fungsi dasar dari suatu sistem opersai. Hampir semua sumber komputer dijadwalkansebelum digunakan. CPU salah satu sumber dari komputer yang penting yang menjadi sentral darisentral penjadwalan di sistem operasi.

3.7.2. Siklus Burst CPU-I/OKeberhasilan dari penjadwalan CPU tergantung dari beberapa properti prosesor. Pengeksekusian dariproses tersebut terdiri atas siklus CPU ekskusi dan I/O Wait. Proses hanya akan bolak-balik dari dua stateini. Pengeksekusian proses dimulai dengan CPU Burst, setelah itu diikuti oleh I/O burst, kemudian CPUBurst lagi lalu I/O Burst lagi begitu seterusnya dan dilakukan secara bergiliran.Dan , CPU Burst terakhir,akan berakhir dengan permintaan sistem untuk mengakhiri pengeksekusian daripada melalui I/O Burstlagi. Kejadian siklus Burst akan dijelaskan padaGambar 3-12

84

Page 105: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-12. Siklus Burst

Durasi dari CPU bust ini telah diukur secara ekstensif, walaupun mereka sangat berbeda dari proses keprose. Mereka mempunyai frekeunsi kurva yang sama seperti yang diperlihatkan padaGambar 3-13

85

Page 106: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-13.

3.7.3. Penjadwalan CPUKapanpun CPU menjadi idle, sistem opersai harus memilih salah satu proses untuk masuk kedalamantrian ready (siap) untuk dieksekusi. Pemilihan tersebut dilakukan oleh penjadwal short term.Penjadwalan memilih dari sekian proses yang ada di memori yang sudah siap dieksekusi, denmengalokasikan CPU untuk mengeksekusinya

3.7.4. Penjadwalan PreemptivePenjadwalan CPU mungkin akan dijalankan ketika proses :

1. Berubah dari running ke waiting state

2. Berubah dari running ke ready state

3. Berubah dari waiting ke ready

4. Terminates

86

Page 107: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Penjadwalan dari no 1 sampai 4 non premptive sedangkan yang lain premptive. Dalam penjadwalannonpreemptive sekali cpu telah dialokasikan untuk sebuah proses , maka tidak bisa di ganggu,penjadwalan model seperti ini digunakan oleh windows 3.x; windows 95 telah menggunakanpenjadwalan preemptive.

3.7.5. DispatcherKomponen yang lain yang terlibat dalam penjadwalan CPU adalan dispatcher. Dispatcher adalah modulyang memberikan kontrol CPU kepada proses yang fungsinya adalah :

1. Switching context

2. Switching to user mode

3. Lompat dari suatu bagian di porgam user untuk mengulang progam.

Dispatcher seharusnya secepat mungkin,

3.7.6. Kriteria PenjadwalanAlgoritma penjadwalan CPU yang berbeda mempunyai property yang berbeda. Dalam memilihalgoritma yang digunakan untuk situasi tertentu, kita harus memikirkan properti yang berbeda untukalgoritma yang berbeda. Banyak kriteria yang dianjurkan utnuk membandingkan penjadwalan CPUalgoritma.

3.7.7. Penjadwalan PreemptiveKritria yang biasanya digunakan dalam memilh adalah :

1. CPU utilization : kita ingin menjaga CPU sesibuk mungkin. CPU utilization akan mempunyai rangedari 0 ke 100 persen. Di sistem yang sebenarnya seharusnya ia mempunyai range dari 40 persensamapi 90 persen

2. Throughput : jika cpu sibuk mengeksekusi proses, jika begitu kerja telah dilaksanakan. Salah satuukuran kerja adalah banyak proses yang diselesaikan per unit waktu, disebut througput. Untuk prosesyang lama mungkin 1 proses per jam ; untuk proses yang sebentar mungkin 10 proses perdetik.

3. Turnaround time : dari sudur pandang proses tertentu, kriteria yang penting adalah berapa lamauntuk mengeksekusi proses tersebut. Interval dari waktu yang dijinkan dengan waktu yangdibutuhkan untuk menyelesaikan sebuah prose disebut turn around time. Trun around time adalahjumlah periode untuk menunggu untuk bisa ke memori, menunggu di ready queue, eksekusi di CPU,dan melakukan I/O

4. Waiting time : algoritma penjadwalan cpu tidak mempengaruhi waktu untuk melaksanakan prosestersebut atau I/O; itu hanya mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready.Waiting time adalah jumlah periode menghabiskan di antrian ready.

87

Page 108: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

5. Response time : di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik untukkriteria. Sering sebuah proses bisa memproduksi output diawal, dan bisa meneruskan hasil yangbaru sementara hasil yang sebelumnya telah diberikan ke user. Ukuran yang lain adalah waktu daripengiriamn permintaan sampai respon yang pertama di berikan. Ini disebut response time, yaituwaktu untuk memulai memberikan respon, tetapi bukan waktu yang dipakai output untu respontersebut.

Biasanya yang dilakukan adalah memaksimalkan CPU utilization dan throughput, dan minimalkanturnaround time, waiting time, dan response time dalam kasus tertentu kita mengambil rata-rata.

3.8. Algoritma PenjadwalanProses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Di sini algoritmadiperlukan untuk mengatur giliran proses-proses tersebut. Berikut ini adalah algoritmanya

3.8.1. First-Come, First-ServedAlgoritma ini merupakan algoritma yang paling sederhana. Dari namanya, kita bisa menebak kalaualgoritma ini akan mendahulukan proses yang lebih dulu datang. Jadi proses akan mengantri sesuaiwaktu kedatangannya.

Kelemahan algoritma ini adalahwaiting timerata-rata yang cukup lama. Sebagai contoh ; ada tigaalgoritma yang datang berturut-turut. Algoritma pertama mempunyai burst time 7 milidetik, sedangkanyang kedua dan ketiga masing-masing 5 milidetik dan 1 milidetik.Waiting timeproses pertama ialah 0milidetik (proses pertama tak perlu menunggu).Waiting timeproses kedua ialah 7 milidetik (menungguproses pertama), dan yang ketiga 12 milidetik (menunggu proses pertama dan kedua). Jadiwaiting timerata-rata sebesar (0+7+12)/3 = 6,33 milidetik. Bandingkan jika proses datang dengan urutan terbalik(yang terakhir datang pertama dan kebalikannya).Waiting timerata-ratanya hanya sebesar (0+1+6)/3 =2,33 milidetik (jauh lebih kecil). Bayangngkan selisih yang mungkin terjadi jika bedaburst timetiapproses sangat besar.

Munculah istilahconvoy effect, dimana proses lain menunggu satu proses besar mengembalikan sumberdaya CPU. Tentu kemungkinan utilisasi CPU akan lebih baik jika proses yang lebih singkat didahulukan.

Algoritma ini nonpreemptive. Setelah CPU dialokasikan ke suatu proses, hanya proses tersebut yangbisa mengambalikannya.

3.8.2. Shortest-Job FirstAlgoritma ini mempunyai cara yang berbeda untuk mengatur ntrian diready queue. Proses diaturmenurut panjangCPU burstberikutnya ( lebih tepatnyashortest next CPU burst).

Waiting timerata-rata dari algoritma ini sangat kecil, sehingga layak disebut optimal. Perbandinganalgoritma ini dengan algoritma pertama telah kita lihat di bagian sebelumnya (shortest job first), dimana proses yang memilikiCPU burstterkecil jika didahulukan akan mengurangiwaiting time

88

Page 109: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

rata-ratanya. Kelemahan algoritma ini yaitu kita tak pernah tahu secara pasti panjangCPU burstprosesberikutnya. Kita hanya bisa mengira-ngira nilainya.

Algoritma ini bisa merupakanpreemptiveataunonpreemptive. Jika preemptive, jika ada proses datangdengan sisaCPU burstyang lebih kecil daripada yang sedang dieksekusi, maka proses tersebut akanmenggantikan proses yang sedang dieksekusi. Contoh : 2 proses datang bersamaan denganCPU burstmasing-masing sebesar 4 dan 5 milidetik. Algoritma ini akan mengalokasikan CPU untuk proses yangmemiliki CPU burst4 milidetik, sementara satu lagi akan menunggu diready queue. Baru 1 milidetikproses pertama dieksekusi, ada proses lain datang dengan besarCPU burst2 milidetik. Alokasi CPUsegera diberikan pada proses baru tersebut karena mempunyai sisa waktu terkecil yaitu 2milidetik(proses yang dieksekusi mempunyai sisa waktu 3 milidetik karena telah mendapat alokasi CPUselama 1 milidetik), dan kedua proses yang datang pertama kembali menunggau diready queue.Bandingkanwaiting timerata-ratanya, yangnonpreemptivesebesar (0+4+9)/3 = 4,33 milidetik, dan yangpreemptivesebesar ((3-1)+6+(1-1))/3 = 2,66 milidetik.

3.8.3. PriorityAlgoritma ini memberikan skala prioritas kepada tiap proses. Proses yang mendapat prioritas terbesarakan didahulukan. Skala diberikan dalam bentuk integer. Beberapa sistem menggunakan integer keciluntuk prioritas tertinggi, beberapa sistem menggunakan integer besar.

Algoritma ini bisapreemptivemaupunnonpreeemptive. Jikapreemptivemaka proses bisa diinterupsioleh proses yang prioritasnya lebih tinggi.

Kelemahan dari algoritma ini adalah proses dengan prioritas kecil bisa-bisa tidak akan mendapat jatahCPU. Hal ini bisa diatasi denganaging, yaitu semakin lama menunggu, prioritas semakin tinggi.

3.8.4. Round-RobinAlgoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesartime quantum.Jikatime quantumnya habis atau proses sudah selesai CPU akan dialokasikan ke proses berikutnya.Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatahwaktu yang sama dari CPU (1/n), dan tak akan menunggu lebih lama dari (n-1)/q.

Algoritma ini sepenuhnya bergantung besarnyatime quantum. Jika terlalu besar, algoritma ini akansama saja dengan algoritmafirst-come first-served. Jika terlalu kecil, akan semakin banyak peralihanproses sehingga banyak waktu terbuang.

3.8.5. Multilevel QueueAlgoritma ini mengelompokkan antrian dalam beberapa buah antrian. Antrian-antrian tersebut diberiprioritas.Antrian yang lebih rendah tak boleh mendapat alokasi selama ada antrian tinggi yang belumkebagian. Tiap antrian boleh memiliki algoritma yang berbeda. Kita juga bisa menjatah waktu CPUuntuk tiap antrian. Semakin tinggi tingkatannya, semakin besar jatah waktu CPUnya.

89

Page 110: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.8.6. Multilevel Feedback QueueAlgoritma ini mirip sekali dengan algoritmaMultilevel Queue. Perbedaannya ialah algoritma inimengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses ituakan dipindahkan ke antrian yang lebih rendah. Ini menguntungkan proses interaksi, karena proses inihanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama.Proses ini akan dinaikkan tingkatannya.

Biasanya prioritas tertinggi diberikan kepada proses denganCPU burstterkecil, dengan begitu CPUakan terutilisasi penuh danI/O bisa terus sibuk. Semakin rendah tingkatannya, panjangCPU burstprosesjuga semakin besar.

Algoritma ini didefinisikan melalui beberapa parameter, antara lain :

• Jumlah antrian

• Algoritma penjadwalan tiap antrian

• Kapan menaikkan proses ke antrian yang lebih tinggi

• Kapan menurunkan proses ke antrian yang lebih rendah

• Antrian mana yang akan dimasuki proses yang membutuhkan

Dengan pendefinisian seperti tadi membuat algoritma ini sering dipakai. Karena algoritma ini mudahdikonfigurasi ulang supaya cocok dengan sistem. Tapi untuk mengatahui mana penjadwal terbaik, kitaharus mengetahui nilai parameter tersebut.

3.9. Prioritas dan MultiprosesorPenjadwalan pada multiprosesor jelas lebih kompleks, karena kemungkinan masalah yang timbul jauhlebih banyak daripada prosesor tunggal.

3.9.1. Apa itu PrioritasPrioritas adalah suatu istilah yang digunakan untuk menentukan tingkat urutan atau hirarki suatu prosesyang sedang masuk dalamready queue.

3.9.2. MultiprosesorMengacu pada bukuOperating SystemEdisi ke-6 karya Silberschatz, sistem dengan prosesor jamak yangdimaksud adalah suatu sistem dimana prosesor-prosesornya identik. Dalam hal ini berarti tiap prosesdapat masuk antrian manapun dari prosesor-prosesor yang ada. Yang patut diperhatikan, tiap prosesordapat memilih proses apa saja yang ingin dijalankan dariready queue. Dengan kata lain, prioritas prosesditentukan secara independen oleh masing-masing prosesor. Jadi salah satu prosesor bisa sajaidle ketikaada proses yang sedang ditunda . Oleh karena itu, tiap prosesor harus disynchronizelebih dulu agar tidakada dua prosesor atau lebih yang berebut mengeksekusi proses yang sama dan mengubahshared data.Sistem seperti ini dikenal juga dengan sebutansynchronous. Selainsynchronous,ada juga sistem lain

90

Page 111: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

yang disebutasynchronous, yang juga dikenal dengan struktur "master-slave" dimana salah satuprosesor dialokasikan khusus untuk mengatur penjadwalan. Sedangkan prosesor yang lain ditujukanuntuk mengkomputasikan proses yang telah dijadwalkan sebelumnya olehmasterprosesor. Peningkatandari sistem ini adalah mengalokasikan penjadwalan, pemrosesan I/O, dan kegiatan sistem lainnya kepadasatu prosesor tertentu kepadamaster. Sedangkan prosesor yang lain hanya bertugas mengeksekusiusercode.

3.10. Sistem Waktu NyataPada sub bab ini, kami akan mencoba sedikit menggambarkan fasilitas penjadualan yang dibutuhkanuntuk mendukung komputasi real-time dengan bantuan sistem komputer.

Suatu sistem komputasi dinamakan real-time jika sistem tersebut dapat mendukung eksekusiprogram/aplikasi dengan waktu yang memiliki batasan. Dengan kata lain, sistem real-time harusmemenuhi kondisi berikut: 1. Batasan waktu: memenuhi deadline, artinya bahwa aplikasi harusmenyelesaikan tugasnya dalam waktu yang telah dibatasi. 2. Dapat diprediksi: artinya bahwa sistemharus bereaksi terhadap semua kemungkinan kejadian selama kejadian tersebut bisa diprediksi. 3. Prosesbersamaan: artinya jika ada beberapa proses yang terjadi bersamaan, maka semua deadline nya harusterpenuhi.

Komputasi real-time ada 2 jenis, yaitu sistem Hard real-time dan sistem Soft real-time.

3.10.1. Sistem Hard Real-TimeSistemhard real-time dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu tertentu.Jika kebutuhan waktu tidak terpenuhi, maka aplikasi akan gagal. Dalam definisi lain disebutkan bahwakontrol sistem hard real-time dapat mentoleransi keterlambatan tidak lebih dari 100 mikro detik. Secaraumum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untukmenyelesaikan atau menjalankan I/O. Kemudian penjadual bisa menjamin proses untuk selesai ataumenolak permintaan karena tidak mungkin dilakukan. Mekanisme ini dikenal denganresourcereservation. Oleh karena itu setiap operasi harus dijamin dengan waktu maksimum. Pemberian jaminanseperti ini tidak dapat dilakukan dalam sistem dengansecondary storageatau virtual memory, karenasistem seperti ini tidak dapat meramalkan waktu yang dibutuhkan untuk mengeksekusi suatu proses.

Contoh dalam kehidupan sehari-hari adalah pada sistem pengontrol pesawat terbang. Dalam hal ini,keterlambatan sama sekali tidak boleh terjadi, karena dapat berakibat tidak terkontrolnya pesawatterbang. Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika sistempengontrol tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang merenggutkorban jiwa.

3.10.2. Sistem Soft Real-TimeKomputasisoft real-time memiliki sedikit kelonggaran. Dalam sistem ini, proses yang kritis menerimaprioritas lebih daripada yang lain. Walaupun menambah fungsi soft real-time ke sistem time sharingmungkin akan mengakibatkan ketidakadilan pembagian sumber daya dan mengakibatkan delay yanglebih lama, atau mungkin menyebabkanstarvation, hasilnya adalah tujuan secara umum sistem yang

91

Page 112: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

bisa mendukung multimedia, grafik berkecepatan tinggi, dan variasi tugas yang tidak bisa diterima dilingkungan yang tidak mendukunng komputasi soft real-time.

Contoh penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat penjual/pelayan otomatis. Jikamesin yang menggunakan sistem ini telah lama digunakan, maka mesin tersebut dapat mengalamipenurunan kualitas, misalnya waktu pelayanannya menjadi lebih lambat dibandingkan ketika masih baru.Keterlambatan pada sistem ini tidak menyebabkan kecelakaan atau akibat fatal lainnya, melainkan hanyamenyebabkan kerugian keuangan saja. Jika pelayanan mesin menjadi lambat, maka para pengguna dapatsaja merasa tidak puas dan akhirnya dapat menurunkan pendapatan pemilik mesin.

Untuk lebih memahami tentang perbedaan kedua sistem ini dapat diperhatikan dari diagram dibawah ini.

Gambar 3-14. Grafik Hard Real-Time

http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf

92

Page 113: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Gambar 3-15. Grafik Soft Real-Time

http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf

Setelah batas waktu yang diberikan telah habis, pada sistem hard real-time, aplikasi yang dijalankanlangsung dihentikan. Akan tetapi, pada sistem soft real-time, aplikasi yang telah habis masa waktupengerjaan tugasnya, dihentikan secara bertahap atau dengan kata lain masih diberikan toleransi waktu.

Mengimplementasikan fungsi soft real time membutuhkan design yang hati-hati dan aspek yangberkaitan dengan sistem operasi. Pertama, sistem harus punya prioritas penjadualan, dan proses real-timeharus memiliki prioritas tertinggi, tidak melampaui waktu, walaupun prioritas non real time bisa terjadi.Kedua,dispatch latencyharus lebih kecil. Semakin kecil latency, semakin cepat real time prosesmengeksekusi.

Untuk menjagadispatchtetap rendah, kita butuh agarsystem calluntukpreemptible. Ada beberapa carauntuk mencapai tujuan ini. Pertama adalah dengan memasukkanpreemption pointsdi durasisystem callyang lama, yang memeriksa apakah prioritas utama butuh untuk dieksekusi. Jika sudah, makacontexswitchmengambil alih, ketikahigh priority proses selesai, proses yang diinterupsi meneruskan dengansystem call. Pointspremptionbisa diganti hanya di lokasi yang aman di kernel dimana kernel strukturtidak bisa dimodifikasi.

Metoda yang lain adalah dengan membuat semua kernelpreemptible. Karena operasi yang benar bisadijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi. Dengan metode ini,kernel bisa selalu dipreemptible, karena setiap data kernel yang sedang diupdatediproteksi denganpemberian prioritas yang tinggi. Jika ada proses dengan prioritas tinggi ingin membaca ataumemodifikasi data kernel yang sedang dijalankan, prioritas yang tinggi harus menunggu sampai prosesdengan prioritas rendah tersebut selesai. Situasi seperti ini dikenal denganpriority inversion .Kenyataanya, serangkaian proses dapat saja mengakses sumber daya yang sedang dibutuhkan olehproses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi denganpriority-inheritance protocol ,

93

Page 114: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

yaitu semua proses yang sedang mengakses sumber daya mendapat prioritas tinggi sampai selesaimenggunakan sumber daya. Setelah selesai, prioritas proses ini dikembalikan menjadi seperti semula.

3.11. Rangkuman

3.11.1. ProsesSebuah proses adalah suatu program yang sedang dieksekusi. Proses lebih dari sebuah kode programtetapi juga mencakupprogram counter , stack , dan sebuahdata section. Dalam pengeksekusiannyasebuah proses juga memiliki status yang mencerminkan keadaan dari proses tersebut. Status dari prosesdapat berubah-ubah setiap saat sesuai dengan kondisinya. Status tersebut mungkin menjadi satu dari limastatus berikut: new, ready, running, waiting, atau terminated. Setiap proses juga direpresentasikan olehproces control block(PCB) yang menyimpan segala informasi yang berkaitan dengan proses tersebut.

Sebuah proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang sama. Disini ada 2 kelasbesar dari antrian dalam sebuah sistem operasi: permintaan antrian I/O dan ready queue. Ready queuememuat semua proses yang siap untuk dieksekusi dan yang sedang menunggu untuk dijalankan padaCPU. PCB dapat digunakan untuk mencatat sebuah ready queue. Penjadwalan Long-term adalah pilihandari proses-proses untuk diberi ijin menjalankan CPU. Normalnya, penjadwalan long-term memilikipengaruh yang sangat besar bagi penempatan sumber daya, terutama manajemen memori. PenjadwalanShort-term adalah pilihan dari satu proses dari ready queue.

Proses-proses pada sistem dapat dieksekusi secara berkelanjutan. Disini ada beberapa alasan mengapaproses tersebut dapat dieksekusi secara berkelanjutan: pembagian informasi, penambahan kecepatankomputasi, modularitas, dan kenyamanan atau kemudahan. Eksekusi secara berkelanjutan menyediakansebuah mekanisme bagi proses pembuatan dan penghapusan.

Pengeksekusian proses-proses pada sistem operasi mungkin dapat digolongkan menjadi proses yangmandiri dan kooperasi. Proses kooperasi harus memiliki beberapa alat untuk mendukung komunikasiantara satu dengan yang lainnya. Prinsipnya adalah ada dua rencana komplementer komunikasi:pembagian memori dan sistem pesan. Metode pembagian memori menyediakan proses komunikasi untukberbagi beberapa variabel. Proses-proses tersebut diharapkan dapat saling melakukan tukar-menukarinformasi seputar pengguna variabel yang terbagi ini. Pada sistem pembagian memori, tanggung jawabbagi penyedia komunikasi terjadi dengan programmer aplikasi; sistem operasi harus menyediakan hanyapembagian memori saja. Metode sistem pesan mengijinkan proses-proses untuk tukar-menukar pesan.Tanggung jawab bagi penyedia komunikasi ini terjadi dengan sistem operasi tersebut.

3.11.2. ThreadThreadadalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandungbeberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreadedmeliputi peningkatan respon dari pengguna, pembagian sumber daya proses, ekonomis, dan kemampuanuntuk mengambil keuntungan dari arsitektur multiprosesor.Threadtingkat pengguna adalah thread yangtampak oleh programmer dan tidak diketahui oleh kernel.Threadtingkat pengguna secara tipikaldikelola oleh sebuah librarythreaddi ruang pengguna.Threadtingkatkerneldidukung dan dikelola oleh

94

Page 115: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

kernelsistem operasi. Secara umum,threadtingkat pengguna lebih cepat dalam pembuatan danpengelolaan dari padakernel thread. Ada 3 perbedaan tipe dari model yang berhubungan denganpengguna dankernel threadyaitu one-to one model, many-to-one model, many-to-many model.

• Model many to one: memetakan beberapa pengguna levelthreadhanya ke satu buahkernel thread.

• Model one to one: memetakan setiapthreadpengguna ke dalam satukernel threadberakhir.

• Model many to many: mengijinkan pengembang untuk membuatthreadpengguna sebanyak mungkin,konkurensi tidak dapat tercapai karena hanya satuthreadyang dapat dijadwalkan oleh kernel dalamsatu waktu.

Thread cancellationadalah tugas untuk memberhentikanthreadsebelum ia menyelesaikan tugasnya.Threadyang akan diberhentikan disebut targetthread

Pemberhentian targetthreadbisa terjadi melalui 2 cara yang berbeda

• Asynchronous cancellation: suatuthreadseketika itu juga memberhentikan target thread.

• Deffered cancellation: targetthreadsecara periodik memeriksa apakah dia harus berhenti, cara inimemperbolehkan targetthreaduntuk memberhentikan dirinya sendiri secara terurut.

Thread Poolsadalah cara kerja dengan membuat beberapathreadpada proses startup dan menempatkanmereka ke pools.

KeuntunganThread Pools

• Biasanya lebih cepat untuk melayani permintaan denganthreadyang ada dibanding denganmenungguthreadbaru dibuat

• Thread poolmembatasi jumlahthreadyang ada pada suatu waktu. Hal ini penting pada sistem yangtidak bisa mendukung banyakthreadyang berjalan secaraconcurrent

Threaddi Linux dianggap sebagaitask. System callyang dipakai antara lain fork dan clone. Perbedaanantara keduanya adalah clone selain dapat membuat duplikat dari proses induk -nya seperti fork, jugadapat berbagi ruang alamat yang sama antara proses induk dengan proses anak. Seberapa besar keduaproses tersebut dapat berbagi tergantung banyaknya flag yang ditandai.

Java adalah unik karena telah mendukungthreaddidalam tingkatan bahasanya. Semua program Javasedikitnya terdiri dari kontrol sebuahthreadtunggal dan mempermudah membuat kontrol untukmultiplethreaddengan program yang sama. JAVA juga menyediakanlibrary berupa API untuk membuat thread,termasuk method untuk suspend dan resume suatu thread, agarthreadtidur untuk jangka waktu tertentudan menghentikanthreadyang berjalan. Sebuah javathreadjuga mempunyai 4 kemungkinan keadaan,diantaranya: New, Runnable, Blocked dan Dead. Perbedaan API untuk mengelolathreadseringkalimengganti keadaanthreaditu sendiri.

95

Page 116: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.11.3. Penjadwalan CPUPenjadwalan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Algoritma yangdigunakan dalam penjadulan CPU ada bermacam-macam. Diantaranya adalah First Come Firsrt Serve(FCFS), merupakan algoritma sederhana dimana proses yang datang duluan maka dia yang dieksekusipertama kalinya. Algoritma lainnya adalah Sorthest Job First (SJF), yaitu penjadulan CPU dimana prosesyang paling pendek dieksekusi terlebih dahulu.

Kelemahan algoritma SJF adalah tidak dapat menghindari starvation. Untuk itu diciptakan algoritmaRound Robin (RR). Penjadulan CPU dengan Round Robin adalah membagi proses berdasarkan waktutertentu yaitu waktu quantum q. Setelah proses menjalankan eksekusi selama q satuan waktu maka akandigantikan oleh proses yang lain. Permasalahannya adalah bila waktu quantumnya besar sedang proseshanya membutuhkan waktu sedikit maka akan membuang waktu. Sedang bila waktu quantum kecil makaakan memakan waktu saat contect-swicth.

Penjadwlan FCFS adalah nonpreemptive yaitu tidak dapat diinterupsi sebelum proses dieksekusiseluruhnya. Penjadwalan RR adalah preemtive yaitu dapat dieksekusi saat prosesnya masih dieksekusi.Sedangkan penjadwalan SJF dapat berupa nonpreemtive dan preemtive.

3.12. Latihan

3.12.1. Proses

1. sebutkan 5 aktivitas sistem operasi yang merupakan contoh dari suatu manajemen proses.

2. Definisikan perbedaan antara penjadwalan short term, medium term dan long term.

3. Jelaskan tindakan yang diambil oleh sebuah kernel ketika context switch antar proses.

4. Informasi apa saja yang disimpan pada tabel proses saat context switch dari satu proses ke proseslain.

5. Di sistem UNIX terdapat banyak status proses yang dapat timbul (transisi) akibat event (eksternal)OS dan proses tersebut itu sendiri. Transisi state apa sajakah yang dapat ditimbulkan oleh proses itusendiri. Sebutkan!

6. Apa keuntungan dan kekurangan dari :

• komunikasi Simetrik dan asimetrik

• Automatic dan explicit buffering

• Send by copy dan send by reference

• Fixed-size dan variable sized messages

7. Jelaskan perbedaan short-term, medium-term dan long-term ?

96

Page 117: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

8. Jelaskan apa yang akan dilakukan oleh kernel kepada context switch ketika proses sedangberlangsung ?

9. Beberapa single-user mikrokomputer sistem operasi seperti MS-DOS menyediakan sedikit atautidak sama sekali arti dari pemrosesan yang konkuren. Diskusikan dampak yang paling mungkinketika pemrosesan yang konkuren dimasukkan ke dalam suatu sistem operasi ?

10.Perlihatkan semua kemungkinan keadaan dimana suatu proses dapat sedang berjalan, dangambarkan diagram transisi keadaan yang menjelaskan bagaimana proses bergerak diantara state.

11.Apakah suatu proses memberikan ’issue’ ke suatu disk I/O ketika, proses tersebut dalam ’ready’state, jelaskan ?

12.Kernel menjaga suatu rekaman untuk setiap proses, disebut Proses Control Blocks (PCB). Ketikasuatu proses sedang tidak berjalan, PCB berisi informasi tentang perlunya melakukan restart suatuproses dalam CPU. Jelaskan 2 informasi yang harus dipunyai PCB.

3.12.2. Thread

1. Tunjukkan dua contoh pemrograman dari multithreading yang dapat meningkatkan sebuah solusithread tunggal.

2. Tunjukkan dua contoh pemrograman dari multithreading yang tidak dapat meningkatkan sebuahsolusi thread tunggal.

3. Sebutkan dua perbedaan antara user level thread dan kernel thread. Saat kondisi bagaimana salahsatu dari thread tersebut lebih baik

4. Jelaskan tindakan yang diambil oleh sebuah kernel saat context switch antara kernel level thread.

5. Sumber daya apa sajakah yang digunakan ketika sebuah thread dibuat? Apa yang membedakannyadengan pembentukan sebuah proses.

6. Tunjukkan tindakan yang diambil oleh sebuah thread library saat context switch antara user levelthread.

3.12.3. Penjadwalan CPU

1. Definisikan perbedaan antara penjadwalan secara preemptive dan nonpreemptive!

2. Jelaskan mengapa penjadwalan strict nonpreemptive tidak seperti yang digunakan di sebuahkomputer pusat.

3. Apakah keuntungan menggunakan time quantum size di level yang berbeda dari sebuah antriansistem multilevel?

Pertanyaan nomor 4 sampai dengan 5 dibawah menggunakan soal berikut:

97

Page 118: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

Misal diberikan beberapa proses dibawah ini dengan panjang CPU burst ( dalam milidetik)

Semua proses diasumsikan datang pada saat t=0

Tabel 3-2. Tabel untuk soal 4 — 5

Proses Burst Time Prioritas

P1 10 3

P2 1 1

P3 2 3

P4 1 4

P5 5 2

4. Gambarkan 4 diagram Chart yang mengilustrasikan eksekusi dari proses-proses tersebutmenggunakan FCFS, SJF, prioritas nonpreemptive dan round robin.

5. Hitung waktu tunggu dari setiap proses untuk setiap algoritma penjadwalan.

6. Jelaskan perbedaan algoritma penjadwalan berikut:

• FCFS

• Round Robin

• Antrian Multilevel feedback

7. Penjadwalan CPU mendefinisikan suatu urutan eksekusi dari proses terjadwal. Diberikan n buahproses yang akan dijadwalkan dalam satu prosesor, berapa banyak kemungkinan penjadwalan yangberbeda? berikan formula dari n.

8. Tentukan perbedaan antara penjadwalan preemptive dan nonpreemptive (cooperative). Nyatakankenapa nonpreemptive scheduling tidak dapat digunakan pada suatu komputer center. Di sistemkomputer nonpreemptive, penjadwalan yang lebih baik digunakan.

3.12.4. Client/Server System

1. Jelaskan bagaimana Java RMI dapat bekerja

2. Apa yang dimaksud dengan marshaling, jelaskan kegunaanya!

98

Page 119: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 3. Proses dan Penjadwalan

3.13. RujukanAvi Silberschatz, Peter Galvin, Greg Gagne. Applied Operationg System Concepts 1st Ed. 2000. JohnWiley & Sons, Inc.

William Stallings: Operating Systems -- Fourth Edition, Prentice Hall, 2001.

Soal Mid-Test 2002 Fasilkom UI - RMS Ibrahim

http://people.cs.uchicago.edu/~mark/51081/LabFAQ/lab5/IPC.html

Website Kuliah Sistem Terdistribusi Fasilkom UI, http://telaga.cs.ui.ac.id/WebKuliah/sisdis2003/

http://linas.org/linux/threads-faq.html

http://www.javaworld.com/javaworld/jw-04-1996/jw-04-threads.html

99

Page 120: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.1. Latar Belakang SinkronisasiApa kegunaan sinkronisasi dalam hubungannya dengan sistem operasi? Sinkronisasi diperlukan untukmenghindari terjadinya ketidakkonsistenen data akibat adanya akses data secara konkuren. Disinisinkronisasi diperlukan agar data tersebut tetap konsisten.

4.1.1. Masalah Bounded BufferMari kita lihat kode program berikut ini:

int counter = 0;

//Proses yang dilakukan oleh produsenitem nextProduced;

while (1) {while (counter == BUFFER_SIZE) { ... do nothing ... }

buffer[in] = nextProduced;in = (in + 1) % BUFFER_SIZE;counter++;

}

//Proses yang dilakukan oleh konsumenitem nextConsumed;

while (1) {while (counter == 0) { ... do nothing ... }nextConsumed = buffer[out] ;out = (out + 1) % BUFFER_SIZE;counter--;

}

Pada program di atas, terlihat bahwa terdapat variabelcounter yang diinisiasi dengan nilai 0, danditambah 1 setiap kali terjadi produksi serta dikurangi 1 setiap kali terjadi konsumsi.

Pada bahasa mesin, baris kodecounter++ dancounter-- diimplementasikan seperti di bawah ini:

//counter++register1 = counterregister1 = register1 + 1counter = register1

100

Page 121: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

//counter--register2 = counterregister2 = register2 - 1counter = register2

Jika perintahcounter++ dancounter-- berusaha mengakses nilaicounter secara konkuren, makanilai akhir daricounter bisa salah. Hal ini tidak berarti nilainya pasti salah, tapi ada kemungkinanuntuk terjadi kesalahan.

Contoh urutan eksekusi baris kode tersebut yang mengakibatkan kesalahan pada nilai akhircounter :

//misalkan nilai awal counter adalah 2produsen: register1 = counter (register1 = 2)produsen: register1 = register1 + 1 (register1 = 3)konsumen: register2 = counter (register2 = 2)konsumen: register2 = register2 - 1 (register2 = 1)konsumen: counter = register2 (counter = 1)produsen: counter = register1 (counter = 3)

Status akhir daricounter seharusnya adalah 0, tapi kalau urutan pengeksekusian program berjalanseperti di atas, maka hasil akhirnya menjadi 3. Perhatikan bahwa nilai akhircounter akan mengikutieksekusi terakhir yang dilakukan oleh komputer. Pada program di atas, pilihannya bisa 1 atau 3.

4.1.2. Masalah Race ConditionRace Conditionadalah suatu kondisi dimana beberapa proses mengakses dan memanipulasi suatu datasecara konkuren. Nilai akhir dari data tersebut tergantung dari proses mana yang terakhir selesaidieksekusi.

Contoh pada masalahBounded Bufferdi atas sebenarnya sudah menggambarkan terjadinyaRaceCondition. Produsen dan konsumen saling berlomba meng-updatenilai counter sehingga pada suatuwaktu, nilaicounter -nya bisa salah.

Untuk menghindariRace Conditioninilah dilakukan apa yang dinamakan Proses Sinkronisasi.

101

Page 122: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.2. Problema Critical Section

4.2.1. Pengertian Critical SectionBagaimana menghindarirace condition? Kunci untuk mencegah masalah ini dan di situasi yang lainyang melibatkan memori bersama, berkas bersama, dan sumber daya lain yang digunakan secarabersama-sama adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untukmelakukan proses tulis dan baca kepada data yang sama pada saat yang sama. Dengan kata lain, kitamembutuhkanmutual exclusion,sebuah jalan yang menjamin jika sebuah proses sedang menggunakanvariabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan dari pekerjaan yangsama. Kesulitan yang terjadi misalnya karena proses B mulai menggunakan variabel bersama itusebelum proses A selesai menggunakannya.

Masalah menghindarirace conditionjuga dapat diformulasikan secara abstrak. Biasanya sebuah prosessibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju keraceconditionpada sebagian besar waktu. Akan tetapi, biasanya setiap proses memiliki segmen kode dimanaproses itu dapat mengubah variabel, meng-update suatu tabel, menulis ke suatu file, dan lain-lainnya,yang dapat membawa proses itu ke bahayarace condition.Segmen kode yang mengakses data yangdigunakan secara bersama-sama itu disebutcritical section.Cara untuk menghindarirace conditionadalah kita harus dapat menjamin bahwa jika suatu proses sedang menjalankancritical section,makaproses lain tidak boleh masuk ke dalamcritical sectiontersebut. Dengan kata lain, setiap prosesmenjalankancritical sectiondengan eksklusif secara mutual.

Problemacritical sectionadalah untuk mendesain sebuah protokol di mana proses-proses itu dapatmenggunakannya secara bersama-sama. Setiap proses harus meminta izin untuk memasukicriticalsectionnya. Bagian dari kode yang mengimplementasikan izin ini disebutentry section.Akhir daricritical sectionitu disebutexit section.Bagian kode selanjutnya disebutremainder section.

Struktur umum dari proses Pi adalah:

do {entry section

critical sectionexit section

remainder section} while (1);

Solusi dari masalahcritical sectionharus memenuhi tiga syarat berikut:

1. Mutual Exclusion.

Jika prosesPi sedang menjalankancritical section(dari prosesPi, ) maka tidak ada proses-proseslain yang dapat menjalankancritical sectiondari proses-proses tersebut. Dengan kata lain, tidak adadua proses yang berada dicritical sectionpada saat yang bersamaan.

2. Terjadi kemajuan (progress).

102

Page 123: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Jika tidak ada proses yang sedang menjalankancritical sectionnya dan jika terdapat lebih dari satuproses lain yang ingin masuk kecritical section,maka hanya proses-proses yang tidak sedangmenjalankanremainder sectionnya yang dapat berpartisipasi dalam memutuskan siapa yangberikutnya yang akan masuk kecritical section,dan pemilihan siapa yang berhak masuk kecriticalsectionini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadideadlock).

3. Ada batas waktu tunggu (bounded waiting).

Jika seandainya ada proses yang sedang menjalankancritical section,maka terdapat batasan waktuberapa lama suatu proses lain harus menunggu giliran untuk mengaksescritical section.Denganadanya batas waktu tunggu akan menjamin proses dapat mengakses kecritical section(tidakmengalamistarvation: proses seolah-olah berhenti, menunggu request akses kecritical sectiondiperbolehkan).

Kita mengasumsikan bahwa setiap proses berjalan pada kecepatan yang bukan nol. Akan tetapi, tidakada asumsi lain mengenai kecepatan relatif proses-proses tersebut ataupun jumlah CPU yang ada.

4.2.2. Solusi Critical SectionAda dua jenis solusi masalahcritical section,yaitu:

1. Solusi perangkat lunak.

Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung padaasumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol.

2. Solusi perangkat keras.

Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi ataudengan mengunci suatu variabel tertentu (Lihat:Bagian 4.3).

Untuk selanjutnya akan dibahas algoritma-algoritma untuk solusi masalahcritical sectionyangmemenuhi tiga syarat seperti yang telah disebutkan di atas. Solusi-solusi tersebut tidak tergantung padaasumsi mengenai instruksi-instruksi perangkat keras atau jumlah prosesor yang dapat didukung olehperangkat keras. Namun, kita mengasumsikan bahwa insruksi bahasa mesin yang dasar(instruksi-instruksi primitif sepertiload, store, dantest ) dieksekusi secara atomik. Artinya, jikadua instruksi tersebut dieksekusi secara konkuren, hasilnya ekuivalen dengan eksekusi instruksi tersebutsecara sekuensial dalam urutan tertentu. Jadi, jikaload danstore dieksekusi secara konkuren,load

akan mendapatkan salah satu dari nilai yang lama atau nilai yang baru, tetapi tidak kombinasi darikeduanya.

103

Page 124: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.2.2.1. Solusi untuk Dua Proses

Pada bagian ini, kita membatasi pembahasan algoritma-algoritma untuk solusicritical sectionuntuk duaproses saja. Proses-proses itu adalahP0 danP1. Untuk memudahkan, ketika kita membahasPi, kitamenggunakanPj untuk menyebut proses lainnya, sehinggaj == 1-i .

Untuk mengilustrasikan proses-proses yang akan masuk kecritical section,kita mengimplementasikanthread dengan menggunakanclass Worker danabstract class MutualExclusion.Class

TestAlgoritma akan digunakan untuk menjalankan ketiga algoritma tersebut.

/*** Thread pekerja yang digunakan untuk mengsimulasikan masalah* critical section.* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public class Pekerja extends Thread{

public Pekerja (String n, int i, MutualExclusion s) {nama = n;id = i;shared = s;

}

public void run() {while (true) {

shared.masukCriticalSection(id);System.out.println("Pekerja " + nama +

" masuk critical section");MutualExclusion.criticalSection();System.out.println("Pekerja " + nama +

" keluar critical section");shared.keluarCriticalSection(id);

MutualExclusion.nonCriticalSection();}

}

private String nama;private int id;private MutualExclusion shared;

}

/*** Mengsimulasi critical dan non-critical sections dengan* sleeping untuk sejumlah waktu antara 0 dan 3 detik (random).* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public abstract class MutualExclusion{

104

Page 125: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

public static void criticalSection() {try {

Thread.sleep( (int) (Math.random() * 3000) );}catch (InterruptedException e) { }

}

public static void nonCriticalSection() {try {

Thread.sleep( (int) (Math.random() * 3000) );}catch (InterruptedException e) { }

}

public abstract void masukCriticalSection(int t);public abstract void keluarCriticalSection(int t);

public static final int TURN_0 = 0;public static final int TURN_1 = 1;

}

/*** Program untuk test solusi, akan create sebuah object untuk* Algoritma_1, Algoritma_2, or Algoritma_3.* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public class TestAlgoritma{

public static void main(String args[]) {

//sesuai algoritma yang mau ditestMutualExclusion alg = new Algoritma_1();

Pekerja pertama = new Pekerja("Runner 0", 0, alg);Pekerja kedua = new Pekerja("Runner 1", 1, alg);

pertama.start();kedua.start();

}}

105

Page 126: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.2.2.1.1. Algoritma 1

Pada algoritma 1, variabel yang digunakan bersama (sharedvariabel) adalah sebuah variabel integerturn, yang diinisialisasi awal nilai 0 (atau 1 di proses yang kedua). Jikaturn == i, maka prosesPi

diizinkan untuk mengeksekusicritical sectionnya.

Algoritma ini menjamin bahwa hanya ada satu proses pada suatu saat yang berada dicritical section.Namun, algoritma ini tidak memenuhi syarat terjadinya kemajuan, karena algoritma ini membutuhkanpergiliran proses di dalam menjalankancritical section.Misalnya, jikaturn == 0 danP1 ingin masukkecritical section,P1 tidak dapat masuk, meskipunP0 sedang berada diremainder section.Hal inidikarenakanP0 belum masuk kecritical section.dan oleh karenanyaP0 belum mengubah nilaiturn

(menjaditurn == 1. )

/*** Program ini sesuai dengan solusi critical section dengan* menggunakan algoritma 1.* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public class Algoritma_1 extends MutualExclusion{

public Algoritma_1() {turn = TURN_0;

}

public void masukCriticalSection(int t) {while (turn != t)

Thread.yield();}

public void keluarCriticalSection(int t) {turn = 1 - t;

}

private volatile int turn;}

4.2.2.1.2. Algoritma 2

Kelemahan algoritma 1 adalah bahwa algoritma 1 tidak menyediakan informasi yang cukup mengenaikeadaan state setiap proses, ia hanya mengingat proses mana yang diperbolehkan untuk memasukicritical section.Untuk memecahkan masalah ini, variabelturn diganti dengan sebuah array, yaitu:

boolean flag[2];

Setiap elemen dari array tersebut diinisialisasi awal ke false. Jikaflag[i] bernilai true, maka inimengindikasikan bahwaPi siap untuk masuk kecritical section.

106

Page 127: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Setiap proses memantau suatu flag yang mengindikasikan ia ingin memasukicritical section.Diamemeriksa flag proses lain dan tidak akan memasukicritical sectionbila ada proses lain yang sedangmasuk.

/*** Program ini sesuai dengan solusi critical section dengan* menggunakan algoritma 2.* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public class Algoritma_2 extends MutualExclusion{

public Algoritma_2() {flag[0] = false;flag[1] = false;

}

public void masukCriticalSection(int t) {int other;

other = 1 - t;

flag[t] = true;

while (flag[other] == true)Thread.yield();

}

public void keluarCriticalSection(int t) {flag[t] = false;

}

private volatile boolean[] flag = new boolean[2];}

Di algoritma 2 ini, prosesPi pertama-tama mengubah nilai (set)flag[i] menjaditrue, menandakanbahwaPi mau masuk kecritical section.KemudianPi mengecek apakah prosesPj juga mau masuk kecritical section.Jika prosesPj mau masuk, maka prosesPi akan menunggu sampai prosesPj mengubahstatenya bahwa ia tidak mau lagi masuk kecritical section(flag[j] == false ). Pada saat itu, makaPi akan masuk kecritical section.Ketika keluar daricritical section,Pi akan mengset nilaiflag[i]

menjadifalse, memperbolehkan proses lain (jika ada proses lain yang menunggu) untuk masuk kecritical section.

Solusi dengan algoritma 2 ini memenuhi syaratmutual exclusion,tetapi tidak memenuhi syaratterjadinya kemajuan. Untuk mengilustrasikan masalah ini, perhatikan urutan eksekusi berikut:

T0: P0 sets flag[0] trueT1: P1 sets flag[1] true

107

Page 128: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

SekarangP0 danP1 akan loop selama-lamanya di dalam statementwhile masing-masing.

Perhatikan bahwa mengubah urutan instuksi untuk mengsetflag[i] dan mengecek nilaiflag[j]

tidak akan memecahkan masalah ini. Kita malah akan berada di situasi di mana ada kemungkinan untukkedua proses berada dicritical sectionpada saat yang bersamaan, yang akan melanggar syaratmutualexclusion.

4.2.2.1.3. Algoritma 3

Dengan menggabungkan algoritma 1 dan algoritma 2, kita akan memperoleh solusi yang tepat untukmasalahcritical section,di mana solusi itu akan memenuhi tiga syarat seperti yang telah disebutkan diatas. Setiap proses menggunakan dua variabel:

boolean flag[2];int turn;

Awalnya flag[0] = flag[1] = false, dan nilaiturn tergantung dari proses yang boleh masuk (0atau 1).

Untuk masuk kecritical section,prosesPi pertama-tama mengsetflag[i] menjaditrue, dankemudian mengset nilaiturn menjadij, sehingga memperbolehkan proses lain yang ingin masuk kecritical sectionuntuk dapat masuk kecritical section. Jika kedua proses mencoba untuk masuk kecritical sectionpada saat yang bersamaan,turn akan diset ke nilaii danj pada saat yang hampirbersamaan. Yang terakhir mengubah nilaiturn akan mempersilakan proses yang lainnya untuk masukkecritical section.

/*** Program ini sesuai dengan solusi critical section dengan* menggunakan algoritma 3.* Disadur dari buku Silberschatz dkk,* Applied Operating Systems Concepts, 2000.*/

public class Algoritma_3 extends MutualExclusion{

public Algoritma_3() {flag[0] = false;flag[1] = false;turn = TURN_0;

}

public void masukCriticalSection(int t) {int other;

other = 1 - t;

flag[t] = true;turn = other;

108

Page 129: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

while ( (flag[other] == true) && (turn == other) )Thread.yield();

}

public void keluarCriticalSection(int t) {flag[t] = false;

}

private volatile int turn;private volatile boolean[] flag = new boolean[2];

}

4.2.2.2. Solusi untuk Proses Jamak: Algoritma Tukang Roti

Diperkenalkan pertama kali oleh Leslie Lamport, merupakan algoritma yang didasarkan pada algoritmapenjadwalan yang biasanya digunakan oleh tukang roti, di mana urutan pelayanan ditentukan dalamsituasi yang sangat sibuk.

Algoritma ini dapat digunakan untuk memecahkan masalahcritical sectionuntuk n buah proses, yangdiilustrasikan dengan n buah pelanggan. Ketika memasuki toko, setiap pelanggan menerima sebuahnomor. Sayangnya, tukang roti tidak dapat menjamin bahwa dua proses (dua pelanggan) tidak akanmenerima nomor yang sama. Dalam kasus di mana dua proses menerima nomor yang sama, maka prosesdengan nomor ID terkecil yang akan dilayani dahulu. Jadi, jikaPi danPj menerima nomor yang samadani < j, makaPi dilayani dahulu. Karena setiap nama proses adalah unik dan berurut, makaalgoritma ini dapat digunakan untuk memecahkan masalahcritical sectionuntuk n buah proses.

Struktur data umum algoritma ini adalah

boolean choosing[n];int number [n];

Awalnya, struktur data ini diinisialisasi masing-masing kefalse dan0, dan menggunakan notasiberikut:

- (a, b) < (c, d) jika a < c atau jika a= c dan b < d

- max(a0, ..., an-1) adalah sebuah bilangan k, sedemikian sehingga k >= ai untuk setiap i= 0, ..., n - 1

do {choosing[i] = true;number[i] = max(number[0], number [1], ..., number [n+1])+1;choosing[i] = false;for (j=0; j < n; j++) {

while (choosing[j]);while ((number[j]!=0) && ((number[j],j) < number[i],i)));

109

Page 130: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

}<foreignphrase>critical section</foreignphrase>

number[i] = 0;<foreignphrase>remainder section</foreignphrase>

} while (1);

4.3. Sinkronisasi dengan Perangkat Keras dan Semafor

4.3.1. Peran Hardware Dalam Proses SinkronisasiSebelum adanya berbagai macam teknik sinkronisasi seperti yang ada sekarang, para programmer seringmemanfaatkan fasilitas yang telah diberikan oleh hardware dari komputer. Sehingga sinkronisasi tidakakan terlepas dari peran hardware.

Mengapa programmer tidak memakai pendekatan dari sisi software? hal ini disebabkan karena sulit dankompleksnya implementasi sinkronisasi yang akan membawa kepada turunnya performa dari produkyang dibuat.

4.3.2. Metode dalam sinkronisasi hardwareSeperti yang telah kita ketahui bahwa, sinkronisasiharuslah mutual exclusive, atau dengan kata lain,harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu eksekusi (sifatmutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan hardware lebih menekankankepada usaha-usaha untuk membuat suatu atau sekelompok instruksi menjadimutual exclusive.

Pendekatan dari sisi Hardware dapat dibagi menjadi dua:

1. Processor Synchronous

2. Memory Synchronous

4.3.3. Processor SynchronousCentral Processing Unit, CPU, mempunyai suatu mekanisme yang dinamakan interrupt. Di dalam sistimoperasi, mekanisme ini digunakan secara intensif, atau dengan kata lain, banyak konsep-konsep sistimoperasi yang menggunakan mekanisme ini. Sebagai contoh :system call, process scheduling, dsb.

Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada 2 atau lebih proses yangsedang berjalan di komputer secaraconcurrent, atau dengan kata lain konseptime-sharedsudahdiimplementasikan di sistim operasi.

110

Page 131: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Sistim time-sharedyang sering diimplementasikan dengan algoritma RR (Round Robin), memanfaatkanmekanisme interrupt di CPU. Jadi di dalam RR ada suatu satuan waktu yg dinamakanquantumyangmana setiap quantum dibatasi oleh satusoftware interrupt.

Teknisnya, akan ada suatu interrupt - yang biasanya adalah timer interrupt - yang secara berkala akanmenginterrupt sistim. Pada saat interrupt dilakukan sistim operasi akan segera melakukan prosespergantian dari proses yang satu ke proses yang lainnya sesuai dengan algoritma.

Seperti yang telah dikatakan di atas, isu yang ada di sini adalah, ada satu atau sekelompok instruksi yangtidak dapat diberhentikan sampai satu atau sekelompok instruksi tersebut selesai.

Adalah sangat jelas bahwa yang membuat suatu instruksi diberhentikan adalah mekanisme yang di sistimoperasi (baca mengenaiprocess scheduling). Mekanisme ini sangat bergantung kepada mekanismeinterrupt dari hardware. Jadi, jika kita dapat menon-aktifkan interrupt pada saatcritical sectiontersebut,maka masalah sinkronisasi dapat terselesaikan.

Ternyata para designer komputer melihat celah ini, dan sekarang ini sudah hampir semua komputer yangada telah mengimplementasi instruksi mesin yang mana instruksi ini akan menon-aktifkan serfisinterrupt, dan ada instruksi yang lain yang akan mengaktifkan interrupt tersebut.

Sebagai contoh sederhana, kita akan melihat contoh program dari prosesor Atmel ARMtm (contoh inidiambil karena prosesor ini mudah didapatkan dan harganya tidak terlalu mahal, serta ada dev-kitnya,silahkan merujuk ke http://www.atmel.com (http://www.atmel.com)).

mainModul :00 CLI ’ masuk ke Critical Section dengan cara

’ men-disable interrupt01 ADD r1,r2 ’ Critical Section02 .... ’ Critical Section03 SBI ’ pergi dari Critical Section dengan cara

’ men-enable interrupt04 .. ’ Remainder Section

Pada baris ke 0, prosesor akan menon-aktifkan interrupt, instruksi - instruksi selanjutnya tidak akandiganggu oleh interrupt. Selanjut setelah keluar daricritical section, pada baris 3, prosesor akanmengaktifkan kembali interrupt sehingga mekanismeschedulingdi sistim operasi dapat berjalan kembali.

Bila kita melihat dari yang di atas, terlihat bahwa dengan mekanisme ini saja sudah cukup mengatasi isuyang ada. Tetapi ternyata mekanisme ini tidak terlalu berhasil di dalam lingkunganmultiprocessor.Jikalau kita menon-aktifkan interrupt, maka yang dinon-aktifkan hanyasatuprosesor, hal ini dapatmengakibatkan hal - hal yang tidak diinginkan.

4.3.4. Memory SynchronousDilihat dari nama mekanismenya, maka kita sudah dapat memprediksi bahwa mekanisme ini akanmenggunakan jasa memori. Memang hal tersebut benar, mekanismememory synchronousmemakaisuatu nilai yang disimpan di memori, dan jikalau suatu proses berhasil mengubah nilai ini, maka prosesini akan meneruskan ke instruksi selanjutnya, jika tidak, maka proses ini akan berusaha terus untuk dapatmengubahnya.

111

Page 132: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Jika dilihat dari paragraf di atas, mekanisme ini lebih cocok dikategorikan sebagai pendekatan darisoftware. Tetapi, jika kita perhatikan lebih lanjut, ternyata mekanisme ini memerlukan jasa hardware.Syarat yang harus dipenuhi agar mekanisme ini dapat berjalan adalah perlunya hardware mempunyaikemampuan untuk membuat suatu instruksi dijalankan secaraatomic. Pengertian dari instruksiatomicadalah satu atau sekelompok instruksi yang tidak dapat diberhentikan sampai instruksi tsb selesai. Detilmengenai hal ini akan dibicarakan di bagian - bagian selanjutnya.

Sebagai contoh, kita dapat memperhatikan contoh program Javatm yang ada di bawah ini :

00 boolean testAndSet( boolean variable[] )01 {02 boolean t = variable[0];03 variable[0] = true;04 return t;05 }

.....56 while (testAndSet(lock)) { /* do nothing */ }57 // Critical Section58 Lock[0] = false;59// Remainder Section

method testAndSet haruslah bersifatatomic, sehingga method ini dianggap sebagai satu instruksi mesin.Perhatikan pada baris 56 dimana method ini dipakai. Pada baris ini proses berusaha untuk mengubahnilai dari variable reference lock. Jikalau ia tidak berhasil maka akan terus mencoba, tapi jika berhasilmaka proses akan masuk ke bagian kritis dan setelah ini proses akan mengubah nilai dari lock sehinggamemberikan kemungkinan proses lain untuk masuk.

Janganlah bingung dengan lock, boolean [], yang terkesan aneh. Hal ini bukanlah bagian darisinkronisasi tetapi hanyalah suatu bagian dari konseppass-by-referencedanpass-by-valuedari Javatm,untuk lebih lanjut mengenai konsep ini dapat dibaca buku - buku programming javatm. Satu catatan disini adalah, contoh ini hanyalah sebuah ilustrasi dan tidak dapat dicompile dan dijalankan, karena Javatm

konsepatomicinstruction di Javatm bersifat transparan dari sisi programmer (akan dijelaskan padabagian-bagian selanjutnya).

Keunggulan darimemory synchronousadalah pada lingkunganmultiprocessor, semua processor akanterkena dampak ini. Jadi semua proses yang berada di processor, yang ingin mengaksescritical section,meskipun berada di processor yang berbeda - beda, akan berusaha untuk mengubah nilai yang dimaksud.Sehingga semua processor akan tersinkronisasi.

4.3.5. Instruksi AtomicSeperti yang telah dijelaskan pada bagian sebelumnya, instruksi atomic adalah satu atau sekelompokinstruksi yang tidak dapat diberhentikan sampai instruksi tersebut selesai. Kita telah memakai instruksiini pada method testAndSet.

Instruksi yang dimaksud di sini adalah instruksi-instruksi pada high-level programming, bukanlah padatingkat instruksi mesin yang memang sudah bersifat atomic. Sebagai contoh : i++ pada suatu bahasapemrograman akan diinterpertasikan beberapa instruksi mesin yang bersifatatomic sbb :

112

Page 133: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

00 Load R1,i ’ load nilai i ke register 101 Inc R1 ’ tambahkan nilai register 1 dengan angka 102 Store i,R1 ’ simpan nilai register 1 ke i

instruksi baris 00-02 bersifatatomic, tetapi i++ tidak bersifat atomic, mengapa? sebagai contoh kasus,katakanlah sekarang processor baru menyelesaikan baris 01, dan ternyata pada saat tersebut interruptdatang, dan menyebabkan processor melayani interrupt terlebih dahulu. Hal ini menyebabkanterhentinya instruksi i++ sebelum instruksi ini selesai. Jikalau instruksi ini (i++) bersifatatomic, makaketiga instruksi mesin tsb tidak akan diganggu dengan interrupt.

Perlu diketahui bahwa instruksi ini bukanlah seperti padaprocessor synchronousyang mana akanmematikan interrupt terlebih dahulu, tetapi instruksi ini sudah build-in di processor.

Designer processor dapat mengimplementasi konsep ini dengan dua cara yaitu :

1. mengimplementasi instruksi yg build-in

2. mengimplementasi processor mampu membuat suatu instruksi menjadiatomic

Intel Pentium ternyata memakai cara yang kedua, yaitu dengan adanya suatu perintah LOCK-Assert.Dengan perintah ini maka semua instruksi dapat dijadikan atomic. Sedangkan SPARC dan IBMmengimplementasikan suatu rutin yang bersifat atomic seperti swap dan compareAndSwap.

4.3.6. Semafor

4.3.6.1. Sejarah Semafor

Telah dikatakan di atas bahwa pada awalnya orang-orang memakai konsep-konsep sinkronisasi yangsederhana yang didukung oleh hardware, seperti pemakaian interrupt atau pemakaian rutin-rutin yangmungkin telah diimplementasi oleh hardware.

Pada tahun 1967, Djikstra mengajukan suatu konsep dimana kita memakai suatu variable integer untukmenghitung banyaknya proses yang sedang aktif atau yang sedang tidur. Tipe dari variable inidinamakan semafor.

Tahun-tahun berikutnya, semafor banyak dipakai sebagai primitif dari mekanisme sinkronisasi yang lebihtinggi dan kompleks lagi. Sebagai contoh : monitor dari Javatm. Selain untuk hal tersebut, kebanyakkansemafor juga digunakan untuk sinkronisasi dalam komunikasi antar device (perangkat keras).

4.3.6.2. Konsep dan Pengertian Semafor

Konsep semafor yang diajukan oleh Djikstra terdiri dari 2 subrutin yang bernama P dan V. Nama P danV berasal dari bahasa Belanda yang berarti Naik dan Turun atau Wait dan Signal. Untuk pembahasankali ini, kita akan memakai Wait dan Signal.

113

Page 134: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Subrutin wait akan memeriksa apakah nilai dari semafor tersebut di atas 0. Jika ya, maka nilainya akandikurangi dan akan melanjutkan operasi berikutnya. Jika tidak maka proses yang menjalankan wait akanmenunggu sampai ada proses lain yang menjalankan subrutin signal.

Satu hal yang perlu diingat adalah subrutin wait dan signal haruslah bersifat atomic. Di sini kita lihatbetapa besarnya dukungan hardware dalam proses sinkronisasi.

Nilai awal dari semaphore tersebut menunjukkan berapa banyak proses yang boleh memasukicriticalsectiondari suatu program. Biasanya untuk mendukung sifatmutual exclusive, nilai ini diberi 1.

Perlu ditekankan di sini, bahwa semafor bukan digunakan untuk menyelesaikan masalahcritical sectionsaja, melainkan untuk menyelesaikan permasalahan sinkronisasi secara umum.

4.3.6.3. Subrutin wait

Seperti yang telah dikatakan di atas, bahwa di dalam subrutin ini, proses akan memeriksa harga darisemafor, apabila harganya 0 atau kurang maka proses akan menunggu, sebaliknya jika lebih dari 0, makaproses akan mengurangi nilai dari semaphore tersebut dan menjalankan operasi yang lain.

Arti dari harga semafor dalam kasus ini adalah hanya boleh 1 proses yang dapat melewati subrutin waitpada suatu waktu tertentu, sampai ada salah satu atau proses itu sendiri yang akan memanggil signal.

Bila kita perhatikan lebih kritis lagi, pernyataan "menunggu" sebenarnya masih abstrak. Bagaimanakahcara proses tersebut menunggu, adalah hal yang menarik. Cara proses menunggu dapat dibagi menjadidua :

1. spinlock waiting

2. non-spinlock waiting

Spinlock waitingberarti proses tersebut menunggu dengan cara menjalankan perintah-perintah yangtidak ada artinya. Dengan kata lain proses masihrunning statedi dalam spinlock waiting. Keuntunganspinlockpada lingkungan multiprocessor adalah, tidak diperlukancontext switch. Tetapi spinlockyangbiasanya disebutbusy waitingini menghabiskancpu cyclekarena, daripada proses tersebut melakukanperintah-perintah yang tidak ada gunanya, sebaiknya dialihkan ke proses lain yang mungkin lebihmembutuhkan untuk mengeksekusi perintah-perintah yang berguna.

Berbeda denganspinlock waiting, non-spinlock waiting, memanfaatkan fasilitas sistim operasi. Prosesyang melakukannon-spinlock waitingakan memblock dirinya sendiri dan secara otomatis akanmembawa proses tersebut ke dalamwaiting queue. Di dalamwaiting queueini proses tidak aktif danmenunggu sampai ada proses lain yang membangunkan dia sehingga membawanya keready queue.

Maka marilah kita lihat listing subrutin dari kedua versi wait

00 void waitSpinLock(int semaphore[] )01 {02 while(semaphore[0] <= 0)

{ .. Do nothing .. } // spinlock03 semaphore[0]--;04 }

10 void synchronized

114

Page 135: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

waitNonSpinLock( int semaphore [])11 {12 while(semaphore[0] <= 0)13 {14 wait(); // blocks thread15 }16 semaphore[0]--;17 }

Perbedaan dari kedua subrutin ini adalah terletak pada aksi dari kondisi nilai semafor kurang atau samadengan dari 0 (nol). Untuk yangspinlock, kita dapat melihat proses akan berputar-putar di while baris no2 (maka itu disebutspinlockatau menunggu dengan berputar). Sedangkan padanon-spinlock, prosesdengan mudah memanggil perintah wait, setelah itu sistim operasi akan mengurus mekanismeselanjutnya.

Jangan bingung dengan katasynchronizedpada baris 10. Kata ini ada karena memang konsep dariJavatm, apabila sebuah proses ingin menunggu, maka proses tersebut harus menunggu di suatu objek.Pembahasan mengenai hal ini sudah diluar dari konteks buku ini, jadi untuk lebih lanjut silahkanmerujuk kepada buku Javatm pegangan anda.

4.3.6.4. Subrutin signal

Karena subrutin wait memiliki 2 versi maka hal ini juga berpengaruh kepada subrutin signal. Subrutinsignal akan terdiri dari 2 versi sesuai dengan yang ada di subrutin wait.

Marilah kita lihat listing programnya

00 void signalSpinLock( int semaphore [])01 {02 semaphore[0]++;03 }10 void synchronized11 signalNonSpinLock( int semaphore [])12 {13 semaphore[0]++;14 notifyAll(); // membawa waiting thread15 // ke ready queue16 }

Letak perbedaan dari kedua subrutin di atas adalah pada notifyAll. NotifyAll berarti membangunkansemua proses yang sedang berada di waiting queue dan menunggu semaphore yg disignal.

Perlu diketahui di sini bahwa setelah semaphore disignal, proses-proses yang sedang menunggu, apakahitu spinlock waiting ataukahnon-spinlockwaiting, akanberkompetisi mendapatkan akses semafortersebut. Jadi memanggil signal bukan berarti membangunkan salah satu proses tetapi memberikankesempatan proses - proses untuk berkompetisi.

115

Page 136: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.3.7. Macam - macam SemaforAda 2 macam semafor yang cukup umum, yaitu :

1. Binary semaphore

2. Counting semaphore

Binary semaphoreadalah semafor yang bernilai hanya 1 dan 0. SedangkanCounting semaphoreadalahsemafor yang dapat bernilai 1 dan 0 dan nilai integer yang lainnya.

Banyak sistim operasi yang hanya mengimplementasibinary semaphoresebagai primitif, sedangkancounting semaphoredibuat dengan memakai primitif ini. Untuk lebih detil mengenai cara pembuatancounting semaphoredapat dilihat pada bagian berikutnya.

Perlu diketahui di sini bahwa, ada beberapa jenis daricounting semaphore. Salah satu jenisnya adalahsemafor yang tidak mencapai nilai negatif (seperti yang dicontohkan pada bagian sebelumnya). Jenisyang lain adalah semaphore yang dapat mencapai nilai negatif.

4.3.8. Masalah - Masalah Sinkronisasi yang Dapat Diselesaikan olehSemafor

Seperti yang telah dikatakan di atas bahwa semafor tidak hanya digunakan untuk menyelesaikan masalahcritical sectionsaja, tetapi menyelesaikan masalah sinkronisasi yang lainnya. Bahkan tidak jarangsemafor dijadikan primitif untuk membuat solusi dari masalah sinkronisasi yang kompleks.

4.3.8.1. Semafor menyelesaikan masalah critical section

Kita telah panjang lebar melihat bagaimana penggunaan semafor untuk menyelesaikan masalahsinkronisasi dengan memakai contoh padacritical section. Pada bagian ini, kita akan melihat lebih dekatlagi apa dan seberapa besar sebenarnya peran dari semafor itu sendiri sebagai solusi dalamcriticalsection.

Lihatlah pada kode - kode di bagian demo. Telitilah, bagian manakah yang harus dieksekusi secaramutual exclusive, dan bagian manakah yang tidak. Jika diperhatikan lebih lanjut anda akan menyadaribahwa akan selalu adasatu pasanginstruksi wait dan signal dari suatu semafor.

perintah wait digunakan sebagai pintu masukcritical sectiondan perintah signal sebagai pintu keluarnya.Mengapa semafor dapat dijadikan seperti ini? Hal ini disebabkan dengan semafor ketiga syarat utamamengenai sinkronisasi dapat dipenuhi.

Seperti yang telah dijelaskan pada bagian sebelumnya, agarcritical sectiondapat terselesaikan ada 3syarat yaitu :

1. Mutual exclusive

2. Make progress

3. Bounded waiting

116

Page 137: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Sekarang marilah melihat lagi listing program yg ada di bagian sebelumnya mengenai wait dan signal.Jika nilai awal dari semafor diberikan 1, maka artinya adalah hanya ada satu proses yang akan dapatmelewati pasangan wait-signal. Proses-proses yang lainnya akan menunggu. Dengan kata lain,mekanisme semaphore denganpolicynilai diberikan 1, dapat menjamin syarat yang pertama,mutualexclusive.

Bagaimana dengan syarat yang kedua,make progress? Sebenarnya pada waktu proses yang sedangberada di dalamcritical sectionkeluar dari bagian tersebut dengan memanggil signal, proses tersebuttidak memberikan akses kecritical section kepada proses tertentu yang sedang menunggu tetapi,membuka kesempatan bagi proses lain untuk berkompetisi untuk mendapatkannya. Lalu bagaimanajika ada 2 proses yang sedang menunggu dan saling mengalah? mekanisme semafor memungkinkansalah satu pasti ada yang masuk, yaitu yang pertama kali yang berhasil mengurangi nilai semaphoremenjadi 0. Jadi di sini semafor juga berperan dalam memenuhi syarat kedua.

Untuk syarat yang ketiga, jelas tampak bahwa semafor didefinisikan sebagai pasangan wait-signal.Dengan kata lain, setelah wait, pasti ada signal. Jadi proses yang sedang menunggu pasti akan mendapatgiliran, yaitu pada saat proses yang sedang berada dicritical sectionmemanggil signal.

Contoh suatu potongan program critical section yang memakai semaphore dapat dilihat di bawah ini.Catatan bahwa program di bawah ini hanyalahpseudo code.

00 wait(semaphoreVar)01 // critical section02 signal(semaphoreVar)

Baris 00 dan 02 menjamin adanyamutual exclusive. Sedangkan mekanisme semaphore menjamin keduasyarat yang lainnya.

4.3.8.2. Semafor menyelesaikan masalah sinkronisasi antar proses

Kadangkala kita ingin membuat suatu proses untuk menunggu proses yang lain untuk menjalankan suatuperintah. Isu yang ada di sini adalah bagaimana caranya suatu proses tau bahwa proses lain telahmenyelesaikan instruksi tertentu.

Semafor adalah jawaban yang cukup baik dan mudah. Marilah kita lihat potongan program di bawah ini

Nilai semaphore diset menjadi 0

Proses 1 Proses 256 print "satu" 17 wait(semaphoreVar)57 signal(semaphoreVar) 18 print "dua"

siapapun yang berjalan lebih cepat, maka keluarannya pasti "satu" baru "dua". Hal ini disebabkan karenajika proses 2 jalan terlebih dahulu, maka dia akan menunggu (nilai semafor adalah 0) sampai proses 1memanggil signal. Sebaliknya jika proses 1 jalan terlebih dahulu, dia akan memanggil signal untukmemberikan jalan kepada proses 2.

117

Page 138: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.3.8.3. Solusi Pembuatan Counting Semaphore dari Binary Semaphore

Pembuatancounting semaphorebanyak dilakukan para programmer untuk memenuhi alat sinkronisasiyang sesuai dengannya. Seperti yang telah dibahas di atas, bahwacounting semaphoreada beberapamacam. Pada bagian ini, akan dibahascounting semaphoreyang memperbolehkan harga negatif.

Listing program di bawah ini diambil dari buku silberschatz.

00 binary-semaphore S1,S2;01 int C;

subrutin waitC dapat dilihat di bawah ini :

02 wait (S1);03 C--;04 if ( C < 0 ) {05 signal (S1);06 wait (S2);07 }08 signal (S1);

subrutin signalC dapat dilihat di bawah ini :

09 wait (S1);10 C++;11 if (C <= 0)12 signal (S2);13 else14 signal (S1);

Kita memerlukan 2binary semaphorepada kasus ini, maka pada baris 00 didefinisikan duabinarysemaphore. Baris 01 mendefinisikan nilai dari semafor tersebut. Perlu diketahui di sini bahwa waitCadalah wait untukcounting semaphore, sedangkan wait adalah untukbinary semaphore.

Jika diperhatikan pada subrutin waitC dan signalC di awal dan akhir diberikan pasangan wait dan signaldaribinary semaphore. Fungsi daribinary semaphoreyang ini adalah untuk menjamincritical section(instruksi wait dan signal dari semafor bersifatatomic, maka begitu pula untuk waitC dan signalC, jadikegunaan lain semafor adalah untuk membuat suatu subrutin menjadi bersifatatomic).

Binary semaphoreS2 sendiri digunakan sebagai tempat menunggu giliran proses-proses. Caramenunggu proses - proses tersebut bisaspinlock ataunon-spinlocktergantung dari implementasibinarysemaphoreyang ada.

Perhatikan baris 03 dan 04. Baris ini berbeda dengan apa yang sudah dijabarkan pada bagiansebelumnya. Karena baris ini maka memungkinkan nilai semafor untuk menjadi negatif. Lalu apa artinyabagi kita? Ternyata nilai negatif mengandung informasi tambahan yang cukup berarti bagi kita yaitu bilanilai semafor negatif, maka absolut dari nilai tersebut menunjukkan banyaknya proses yang sedang

118

Page 139: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

menunggu atau wait. Jadi arti baris 11 menyatakan bahwa bila ada proses yang menunggu makabangunkan mereka semua untuk berkompetisi.

Mengapa pada baris 05 dilakukan signal untuk S1? Alasannya karena seperti yang telah kita ketahuibahwa semaphore menjamin ketiga sifat daricritical section. Tetapi adalah tidak relevan bila pada saatwaktu menunggu waitC masih mempertahankan mutual exclusivenya. Bila hal ini terjadi, proses laintidak akan dapat masuk, sedangkan proses yang didalamnya menunggu proses yang lain untuk signal.Dengan kata laindeadlockterjadi. Jadi, baris 05 perlu dilakukan untuk mengeliminir sifatmutualexclusivepada saat suatu proses menunggu.

Pada baris 12 hanya menyatakan signal untuk S2 saja. Hal ini bukanlah merupakan suatu masalah, karenajika signal S2 dipanggil, maka pasti ada proses yang menunggu akan masuk dan meneruskan ke instruksi07 dan akhirnya 08 di mana dia memanggil signal S1 yang akan mewakili kebutuhan di baris 12.

4.3.8.4. Semafor dalam Producer Consumer Problem

Latar belakang dari permasalahan ini sudah dibahas di atas. Maka langsung saja kita lihat bagaimanaimplementasi semafor dalam permasalahan ini.

Berhubung permasalahan dan solusi dari masalah ini sudah dibahas, maka program Javatm yang ada dibawah ini tidak dilengkapi oleh penjelasan. Hal ini dilakukan karena program ini hanya ditujukan agarpembaca memiliki gambaran umumnya saja.

BinarySemaphore.java

public class BinarySemaphore{

public BinarySemaphore(){

semaphore = 1;}public BinarySemaphore(int i){

semaphore = i;}public synchronized void waitS(){

try{

while(semaphore == 0)wait();

semaphore = 0;}catch (InterruptedException ie){}

}public synchronized void signalS(){

semaphore = 1;notifyAll();

119

Page 140: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

}

private int semaphore;}

CountingSemaphore.java

public class CountingSemaphore{

public CountingSemaphore( int now ){

semaphore = now;mutex = new BinarySemaphore();S1 = new BinarySemaphore(0);

}public void waitS(){

mutex.waitS();semaphore--;

if (semaphore < 0){

mutex.signalS();S1.waitS();

}mutex.signalS();

}public void signalS(){

mutex.waitS();semaphore++;

if (semaphore <= 0){

S1.signalS();}else

mutex.signalS();}

int semaphore;BinarySemaphore mutex;BinarySemaphore S1;

}

Consumer.java

public class Consumer extends Thread

120

Page 141: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

{public Consumer (BinarySemaphore mutex,CountingSemaphore full,CountingSemaphore empty,SharedBuffer buff){

this.mutex = mutex;this.full = full;this.empty = empty;this.buff = buff;

}public void run(){

try{

while(true){

full.waitS();System.out.print("There’s a buffer:");

mutex.waitS();System.out.println(buff.getBuffer());mutex.signalS();empty.signalS();sleep(1000);

}}catch (InterruptedException ie){}

}

private BinarySemaphore mutex;private CountingSemaphore full;private CountingSemaphore empty;private SharedBuffer buff;

}

Producer.java

public class Producer extends Thread{

public Producer(BinarySemaphore mutex,CountingSemaphore full,CountingSemaphoreempty,SharedBuffer buff)

{this.mutex = mutex;this.full = full;this.empty = empty;this.buff = buff;

}

public void run()

121

Page 142: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

{try{

while(true){

empty.waitS();

Integer random =new Integer((int)(Math.random() * 10));

System.out.println("producer add : " + random);

mutex.waitS();buff.addBuffer(random);mutex.signalS();

full.signalS();sleep(1);

}}catch (InterruptedException ie)

{}}private BinarySemaphore mutex;private CountingSemaphore full;private CountingSemaphore empty;private SharedBuffer buff;

}

SharedBuffer.java

class SharedBuffer{

public SharedBuffer(int max){

buffer = new Object[max];this.max = max;i = 0;j = 0;

}public void addBuffer(Object buff){

buffer[i] = buff;i = (i + 1) % max;

}public Object getBuffer(){

j = (j + 1) % max;return buffer[j];

122

Page 143: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

}private Object buffer[];private int max;private int i;private int j;

‘}

public class ConsumerProducerTest{

public static void main(String args[]){

BinarySemaphore mutex = new BinarySemaphore();CountingSemaphore full = new CountingSemaphore(0);CountingSemaphore empty = newCountingSemaphore(MAX);SharedBuffer buff = new SharedBuffer(MAX);

Consumer consumer = new Consumer(mutex,full,empty,buff);

Producer producer = new Producer(mutex,full,empty,buff);

producer.start();consumer.start();

}public static final int MAX = 25;

}

4.3.8.5. Semaphore dalam masalah Readers/Writers

Solusi dari sisi semaphore dalam menyelesaikan hal ini ada beberapa macam. Mengingat banyaknyakombinasi solusi maka pada kali ini akan dibahas solusi yang tidak menghasilkan deadlock danstarvation.

Seperti halnyaDinning Philosopherproblem, masalah ini juga akan dibahas lebih detil pada bagianberikutnya.

4.3.8.6. Semafor dalam masalah Dining Philosophers

Karena latar belakang dan konsep dari permasalah ini sudah dijelaskan, maka pada bagian ini hanya akandijelaskan bagaimana menggunakan semaphore untuk menyelesaikan masalah ini.

Untuk pembahasan lebih rinci dapat dilihat pada bagian selanjutnya.

123

Page 144: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.3.9. Semafor di dalam Pemrograman

4.3.9.1. Pemrograman windows

Win32API (Windows 32 bitApplication Programming Interface), menyediakan fungsi-fungsi yangberkaitan dengan semafor. Fungsi-fungsi yang ada antara lain adalah membuat semaphore danmenambahkan semafor.

Hal yg menarik dari semaphore yg ada di Windowstm adalah tersedianya dua jenis semafor.Binarysemaphoredancounting semaphore. Selain itu, windows juga menyediakan seberapa besar angka ygdapat disimpan di semafor. Jadi selain kita dapat menentukan nilai awal, semaphore di windows jg dapatmenspesifikasi nilai maksimal dari semafor tersebut.

Bila biasanya thread yang menunggu di semafor aturannya tidak ditentukan, ternyata di Windows aturanuntuk mengantrinya adalah FIFO atau sering disebutFirst In First Out. Jadi Thread yang pertama kaliwait, maka menjadi yang pertama kali keluar dari wait.

Berikut ini adalah contoh program semafor di Windowstm dengan menggunakan bahasa pemrogramanC++. Contoh program di bawah ini adalah contoh program untukThread Synchronization

#include <windows.h>#include <winbase.h>#include <stdio.h>#include <conio.h>

HANDLE sem;DWORD WINAPI ThreadSatu(LPVOID lpParameter);

void main(){

DWORD ThreadID = 0,ThrdParam = 1;printf("Membuat Semafor\n");sem = CreateSemaphore(NULL,0,1,"SEMAFOR 1");

printf("Membuat Thread dan menjalankannya\n");if (CreateThread(

NULL,0,ThreadSatu,&ThrdParam,0,&ThreadID) == NULL)

printf("FAILED");

printf("menunggu Line 1 jalan dulu\n");WaitForSingleObject(sem,INFINITE);printf("LINE 2\n");

}

DWORD WINAPI ThreadSatu(LPVOID lpParameter){

printf("Thread Satu mulai berjalan\n");Sleep(1000); // sleep 1 detik

124

Page 145: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

printf("LINE 1\n");ReleaseSemaphore(sem,1,0);return 0;

}

4.3.9.2. Pemrograman Java tm

Seperti yang telah kita ketahui bahwa satu - satunya alat sinkronisasi yang disediakan oleh Javatm untukprogrammer adalah kata kuncisynchronized. Sebenarnya kata kunci ini diilhami dari konsep monitor.

Sedikit mengulang, monitor, konsep sinkronisasi yang sudah sangat kompleks, adalah konsep di manapotongan program ikut di dalamnya. Dalam konsep ini biasanya menggunakan semafor sebagai primitif.

Jadi dengan kata lain, secara implisit Javatm telah menyediakan semafor bagi kita, namun sepertilayaknyaThread Event Dispatcherdi Javatm yang bersifat transparan bagi programmer maupunend-user,semaphore juga tidak dapat diraba dan diketahui oleh kita di Javatm ini. Hanya pengetahuan mengenaisemafor dan monitorlah yang dapat menyimpulkan bahwa Javatm sebenarnya memakai semafor untukalat sinkronisasinya.

4.4. Masalah Bounded-Buffer

4.4.1. Pengertian UmumPengertian secara umum mengenaibounded-bufferadalah sebuah tempat penampungan data, yangukurannya terbatas.Bounded-bufferdigambarkan sebagaiarray yang melingkar.

125

Page 146: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Ilustrasi daribounded-buffer

Penunjuk masuk menunjuk pada posisi kosong selanjutnya padaarray. Data yang baru dihasilkan akandimasukkan ke dalamarray yang ditunjuk oleh masuk. Sedangkan penunjuk keluar menunjuk padaposisi penuh pertama padaarray. Jika ada data yang akan dikeluarkan daribuffer, maka data yang akandikeluarkan itu merupakan isi dariarray yang ditunjuk oleh keluar.

4.4.2. Masalah Produsen-KonsumenPada masalahbounded-bufferterdapat dua atau lebih proses berbagibounded-bufferdengan palingsedikit satu proses menaruh item padabufferdan paling sedikit satu proses mengambil item daribuffer.Berikut ini kita akan membahas masalahbounded-bufferdengan pendekatan dari masalahprodusen-konsumen.

Hal yang dikerjakan oleh produsen adalah menghasilkan data, kemudian data itu akan ditaruh padabuffer.Karenabufferyang tersedia memiliki ukuran yang terbatas, maka akan ada kemungkinanbufferitu penuh. Ketikabuffer tersebut penuh, produsen tidak dapat menaruh data padabuffer,oleh karena ituprodusen akan berhenti menghasilkan data. Produsen akan menunggu sampai konsumen mengkonsumsidata daribuffer,sehingga adaarray kosong bagi produsen untuk meletakkan data yang dihasilkannya.Data yang dihasilkan oleh produsen diletakkan padaarray yang ditunjuk oleh masuk.

Hal yang dikerjakan oleh konsumen adalah mengkonsumsi data yang ada padabuffer.Pada suatu saat,ada kemungkinan tidak terdapat data padabuffer,sehingga konsumen tidak dapat mengkonsumsi data.Konsumen akan berhenti mengkonsumsi, dan akan menunggu sampai produsen menaruh data padabuffer.Data yang dikonsumsi oleh konsumen adalah data yang terletak padaarray yang ditunjuk olehkeluar.

Jadi tugas dari produsen adalah menghasilkan data yang akan dikonsumsi oleh konsumen, sedangkantugas dari konsumen adalah mengkonsumsi data yang dihasilkan oleh produsen.

Bufferdalam kondisi penuh ketika nilai in sama dengan nilai keluar (masuk == keluar).Bufferdalamkondisi kosong ketika ((masuk + 1) % UKURAN_BUFFER == keluar.

4.4.3. Sinkronisasi Masalah Bounded-Buffer Menggunakan SemaforHal yang harus diperhatikan pada proses produsen dan konsumen adalah ketika kedua proses tersebutmengakses variabel yang sama, yaitu variabel hitung. Jika diakses secara bersamaan, maka adakemungkinan variabel hitung akan memiliki nilai yang tidak benar. Oleh karena itu harus adasinkronisasi bagi produsen dan konsumen dalam mengakses variabel hitung.

Kita memakai 3 buah semafor untuk mensinkronisasi proses produsen dan konsumen. Semafor yangpertama adalah semafor bufferPenuh, yang menyatakan jumlahbufferyang terisi. Semafor yang keduaadalah semafor bufferKosong, yang menyatakan jumlahbufferyang masih kosong. Sedangkan semaforterakhir yang kita pakai adalah semafor mutex (mutual exclussion). Semafor mutex dipakai untukmenjamin bahwa hanya ada satu proses pada satu waktu yang dapat mengaksesbuffer.Untukbufferberukuran n, kita inisialisasi semafor bufferPenuh = 0, semafor bufferKosong = n (ukuranbuffer)dansemafor mutex = 1.

Produsen menaruh item padabufferdengan memanggilmethodtaruh ( ), konsumen memindahkan itemdaribufferdengan memanggilmethodambil ( ).

126

Page 147: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Salah satu contoh sebagai ilustrasi dari proses produsen dan konsumen adalah mesin penjual minuman.Yang berperan sebagai produsen adalah pengantar minuman, sedangkan yang berperan sebagaikonsumen adalah mahasiswa. Semafor bufferPenuh bernilai 0 jika minuman pada mesin penjualminuman sudah habis. Semafor bufferKosong bernilai 0 jika tidak ada lagi tempat untuk menaruhminuman pada mesin penjual minuman tersebut. Pada satu saat hanya ada 1 orang saja yang dapatmenggunakan mesin penjual minuman. Jika pengantar minuman sedang mengisi mesin tersebut denganminuman, maka mahasiswa yang hendak membeli minuman dari mesin tersebut harus menunggu sampaipengantar minuman selesai mengerjakan tugasnya. Demikian pula sebaliknya, jika ada mahasiswa yangsedang membeli minuman dari mesin penjual minuman, maka pengantar minuman yang hendak mengisiminuman ke mesin tersebut harus menunggu.

Ilustrasi mesin penjual minuman ini dipakai hanya sekadar untuk mempermudah pemahaman kitamengenai cara kerja semafor dalam sinkronisasi proses produsen-konsumen. Namun tentu saja dalamkenyataannya, pada ilustrasi mesin penjual minuman tidak akan terjadi peristiwarace condition.

Berikut ini adalah program untuk proses produsen dan konsumen:

Proses Produsen

Hal yang dilakukan olehthreadprodusen adalah tidur sesaat, menghasilkan pesan, dan menaruh pesantersebut padabufferdengan memanggilmethodtaruh ( ).

import java.util.*;

public class Produsen extends Thread {public Produsen(BoundedBuffer b) {

buffer = b;}

public void run() {Date pesan;while(true) {

BoundedBuffer.tidur();//menghasilkan sebuah item dan menaruhnya pada bufferpesan = new Date();System.out.println("Produsen menghasilkan " + pesan);buffer.taruh(pesan);

}}

private BoundedBuffer buffer;}

Proses Konsumen

Hal yang dikerjakan olehthreadkonsumen adalah tidur dan mengkonsumsi sebuah item daribufferdengan memanggilmethodpindah().

import java.util.*;

public class Konsumen extends Thread {

127

Page 148: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

public Konsumen(BoundedBuffer b) {buffer = b;

}

public void run() {Date pesan;while(true) {

BoundedBuffer.tidur();//mengkonsumsi sebuah item dari bufferSystem.out.println("Konsumen akan mengkonsumsi");pesan = (Date)buffer.pindah();

}}

private BoundedBuffer buffer;}

Kelas BoundedBufferServer

Kelas ini menciptakanthreadprodusen dan konsumen.

public class BoundedBufferServer {public static void main(String args[]) {

BoundedBuffer server = new BoundedBuffer();

//membuat thread produsen dan konsumenProdusen threadProdusen = new Produsen(server);Konsumen threadKonsumen = new Konsumen(server);

threadProdusen.start();threadKonsumen.start();

}}

Kelas BoundedBuffer

public class BoundedBuffer {public BoundedBuffer() {

//buffermula-mula kosonghitung = 0;masuk = 0;keluar = 0;buffer = new Object[UKURAN_BUFFER];

mutex = new Semaphore(1);bufferKosong = new Semaphore(UKURAN_BUFFER);bufferPenuh = new Semphore(0);

}

128

Page 149: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

//produsen dan konsumen akan memanggil method tidurpublic static void tidur() {

int lamaTidur = (int)(LAMA_TIDUR * Math.random());try {

Thread.sleep(lamaTidur * 1000);}catch(InterruptedException e) {}

}

public void taruh(Object item) {bufferKosong.P();mutex.P();

//menaruh sebuah item pada buffer++hitung;buffer[masuk] = item;masuk = (masuk + 1) % UKURAN_BUFFER;

if (hitung == UKURAN_BUFFER)System.out.println("Produsen menaruh " + item +

"Buffer penuh");else

System.out.println("Produsen menaruh " + item +"Ukuran Buffer = " + hitung);

mutex.V();bufferPenuh.V();

}

public Object pindah() {Object item;

bufferPenuh.P();mutex.P();

//memindahkan sebuah item dari buffer--hitung;item = buffer[keluar];keluar = (keluar + 1) % UKURAN_BUFFER;

if(hitung==0)System.out.println("Konsumen mengkonsumsi " +

item + "Buffer kosong");else

System.out.println("Konsumen mengkonsumsi " +item + "Ukuran Buffer = " + hitung);

mutex.V();bufferKosong();

return item;

129

Page 150: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

}

private static final int LAMA_TIDUR = 5;private static final int UKURAN_BUFFER = 5;private Object[] buffer;private int hitung, masuk, keluar;private Semaphore mutex;private Semaphore bufferKosong;private Semaphore bufferPenuh;

}

4.4.4. Sinkronisasi pada JavaPeristiwarace conditionyang mungkin saja terjadi pada proses produsen-konsumen, dapat ditanganidengan baik oleh Java. Pada Java, setiap objek berasosiasi dengan sebuah kunci. Ketika sebuahmethoddi Java dideklarasikan sebagaisynchronized, maka untuk memanggilmethodini kita memerlukan kunciuntuk objek tersebut. Jika kunci tersebut sudah dipegang olehthreadlain, makathreadyang memanggilmethodyang disinkronisasi akan di blok dan berada pada daftar antrian bersamathreadlainnya yangjuga menunggu untuk mendapatkan kunci dari objek tersebut. Ketikathreadyang memegang kunci telahselesai memanggilmethodyang disinkronisasi, maka dia akan melepaskan kunci objek tersebut.Selanjutnya Java Virtual Machine (JVM) akan memilih secara acakthreadyang berada dalam daftarantrian untuk kemudian menyerahkan kunci objek kepadathreadtersebut.Threadyang mendapatkankunci objek akan dapat masukmethodyang disinkronisasi.

Pada Java terdapatmethodwait() dan notify().Methodwait() akan dipanggil olehthreadprodusen ketikathreadprodusen hendak menaruh item padabuffer,namunbuffer tersebut sudah penuh.Methodwait()akan dipanggil olehthreadkonsumen ketikathreadkonsumen hendak mengambil item daribuffer,namunbuffer tersebut kosong.

Ketikamethodwait() dipanggil, hal yang terjadi adalah:

1. Threadmelepaskan kunci dari objek.

2. Status darithreadadalah diblok.

3. Threadditempatkan pada daftar tunggu.

Andaikanthreadprodusen masuk daftar tunggu karenabuffersudah penuh, makathreadkonsumen akandijalankan.Threadkonsumen akan mengambil item daribuffer,sehingga padabuffersudah tersediatempat kosong bagithreadprodusen untuk menaruh item padabuffer.Ketika threadkonsumen selesaimengambil item dan akan keluar darimethodyang disinkronisasi,threadkonsumen harus memberitahuthreadprodusen yang berada pada daftar tunggu bahwathreadprodusen sudah bisa menaruh item padabuffer. Methodyang dipanggil olehthreadkonsumen adalah notify(). Begitu pula halnya denganthreadprodusen,threadprodusen juga memanggilmethodnotify () setelah menaruh item padabuffer.

Ketikamethodnotify() dipanggil, hal yang terjadi adalah:

130

Page 151: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

1. Mengambil secara acak sebuahthreadyang berada pada daftar antrian tunggu.

2. Memindahkanthreaddari daftar tunggu ke daftar antrian yang menunggu kunci.

3. Mengubah statusthreaddari diblok menjadi dapat dijalankan.

Berikut ini adalah kelas BoundedBuffer dari proses produsen-konsumen dengan memakaimethodyangdisinkronisasi:

public class BoundedBuffer {public BoundedBuffer() {

//buffer mula-mula kosonghitung = 0;masuk = 0;keluar = 0;buffer = new Object[UKURAN_BUFFER];

}

//produsen dan konsumen akan memanggil method tidurpublic static void tidur() {

int lamaTidur = (int)(LAMA_TIDUR * Math.random());try {

Thread.sleep(lamaTidur * 1000);}catch(InterruptedException e) {}

}

public synchronized void taruh(Object item) {while (hitung == UKURAN_BUFFER) {

try {wait();

}catch (InterruptedException e) {}

}

//menaruh sebuah item pada buffer++hitung;buffer[masuk] = item;masuk = (masuk + 1) % UKURAN_BUFFER;

if(hitung == UKURAN_BUFFER)System.out.println("Produsen menaruh " + item +

"Buffer penuh");else

System.out.println("Produsen menaruh " + item +"Ukuran Buffer = " + hitung);

notify();}

131

Page 152: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

public Object pindah() {Object item;

while (hitung == 0) {try {

wait();}catch(InterruptedException e) {}

}

//memindahkan sebuah item dari buffer--hitung;item = buffer[keluar];keluar = (keluar + 1) % UKURAN_BUFFER;

if(hitung==0)System.out.println("Konsumen mengkonsumsi " +

item + "Buffer kosong");else

System.out.println("Konsumen mengkonsumsi " +item + "Ukuran Buffer = " + hitung);

notify();

return item;}

private static final int LAMA_TIDUR = 5;private static final int UKURAN_BUFFER = 5;

private int hitung, masuk, keluar;private Object[] buffer;

}

4.5. Masalah Readers/Writers dan Dining Philosophers

4.5.1. Gambaran Umum Masalah Readers/WritersMasalahReaders/Writersadalah salah satu masalah sinkronisasi klasik yang sering digunakan untukmendiskusikan dan membandingkan berbagai cara untuk menyelesaikan masalah sinkronisasi. Secarasingkat, masalah ini terjadi ketika ada beberapa pembaca dan penulis ingin mengakses suatu berkas padasaat bersamaan. Salah satu contoh konkret dari permasalahan ini adalah masalah pemesanan tiket

132

Page 153: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

pesawat terbang. Ketika seseorang memesan tiket pesawat, dia pertama-tama harus mengecek apakahmasih ada tempat yang tersisa. Sekiranya prosedur pemesanan tiket tersebut tidak ditangani secarahati-hati, bisa terjadi masalah ketika dia memesan tiket. Misalkan, sebelum proses pemesanan tiketselesai, ada orang lain yang memesan tiket yang sama dan lebih cepat menyelesaikan proses pemesanantiket. Dengan demikian, tiket yang seharusnya menjadi miliknya tanpa perlu usaha berlebih, sekarangharus dia perebutkan dengan orang lain yang kebetulan mendaftar pada saat yang bersamaan.

Kembali kepada masalahReaders/Writers, seperti yang telah dikatakan di atas bahwa inti daripermasalahan ini adalah adanya beberapa pembaca dan penulis yang ingin mengakses suatu berkassecara simultan. Sebagai syarat bahwa data yang terkandung dalam berkas tersebut tetap konsisten, makasetiap kali berkas tersebut ditulis, maka hanya ada boleh maksimal satu penulis yang menulisnya. Untukpembaca, hal ini tidak perlu dikhawatirkan sebab membaca suatu berkas tidak mengubah isinya. Dengankata lain, pada suatu saat diperbolehkan untuk beberapa pembaca untuk membaca berkas tersebut. Akantetapi, ketika ada yang sedang menulis, tidak boleh ada satupun yang membaca. Ini berarti bahwa threadpenulis menjalankan tugasnya secara eksklusif.

Untuk mengatasi masalah ini, ada tiga macam solusi yang akan dibahas. Dasar pembagian solusi iniadalah prioritas. Pertama, solusi dengan pembaca diprioritaskan akan dibahas. Kemudian dilanjutkandengan solusi dengan penulis yang diprioritaskan. Terakhir, solusi dengan pembaca dan penulis salingbergantian akan dibahas. Pada setiap solusi akan dilihat mengenai tingkat kesuksesan solusi tersebut bilakita lihat dari sudut pandang syarat penyelesaiancritical section. Implementasi dari setiap solusi yangdiberikan di bawah ini adalah dengan menggunakan semafor.

4.5.2. Solusi Dengan Pembaca DiprioritaskanPada solusi ini, setiap kali ada thread pembaca yang berusaha untuk memulai membaca ketika adasetidak-tidaknya satu thread pembaca yang sedang membaca, maka thread pembaca yang baru inginuntuk membaca akan diberikan akses untuk membaca. Tujuan dari pemberian prioritas ini adalah untukmemaksimalkan throughput. Sebagai ganti dari pemaksimalan throughput ini, thread-thread penulis bisaberada pada antrian untuk waktu yang tak terbatas, terutama ketika terjadi permintaan untuk membacaberkas secara berkelanjutan. Padahal, agar sebuah thread penulis dapat masuk kecritical sectionnya,tidak boleh ada satupun thread pembaca yang sedang mengakses berkas.

Dengan demikian, solusi ini gagal memenuhi persyaratan bahwa setiap thread harus tidak dibiarkanmenunggu dalam waktu yang tidak terbatas. Akan tetapi, jika yang ingin dituju adalah throughput yangsebesar-besarnya, maka solusi ini adalah yang paling tepat.

Berikut adalah contoh implementasi dari solusi ini:

/*** Tempat segala sesuatunya dimulai.* Pada kelas ini, semua thread penulis dan pembaca* dibuat dan dijalankan. Agar kemungkinannya lebih* tinggi untuk semua thread penulis dan pembaca* memiliki kesempatan bersaing secara adil mendapatkan* waktu CPU, maka prioritas thread Pembuat dibuat* maksimum, sementara semua thread penulis dan pembaca* dibuat normal. Catatan: hal ini tidak berguna dalam* lingkungan Linux.*/

133

Page 154: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

public class PembuatBacaTulis1{

public static void main(String args[]){

Thread.currentThread().setPriority(Thread.MAX_PRIORITY);Penulis penulis[] = new Penulis[N_PENULIS];Pembaca pembaca[] = new Pembaca[N_PEMBACA];Berkas berkas = new Berkas();for (int i = 0; i < N_PENULIS; i++){

penulis[i] = new Penulis(i, berkas);penulis[i].setPriority(Thread.NORM_PRIORITY);penulis[i].start();

}for (int i = 0; i < N_PEMBACA; i++){

pembaca[i] = new Pembaca(i, berkas);pembaca[i].setPriority(Thread.NORM_PRIORITY);pembaca[i].start();

}}

final static int N_PEMBACA = 3;final static int N_PENULIS = 3;final static int BATAS = 1;

}

/*** kelas Penulis dengan siklus hidup sebesar

batas yang diberikan oleh konstanta BATAS padakelas PembacaBuatTulis1. Siklus hidup darisebuah penulis adalah tidur, mulai menulis,sedang menulis dan selesai menulis.

*/class Penulis extends Thread{

public Penulis(int id, Berkas berkas){

this.id = id;this.berkas = berkas;hitungan = 0;setName("Penulis " + id);

}

public void run(){

while (hitungan < PembuatBacaTulis1.BATAS){

berkas.tidur();System.out.println("Penulis " + id + " tidur.");berkas.mulaiMenulis();System.out.println("Penulis " + id + " mulai menulis.");berkas.tidur();

134

Page 155: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

System.out.println("Penulis " + id + " sedang menulis.");berkas.selesaiMenulis();System.out.println("Penulis " + id + " selesai menulis.");hitungan++;

}}

private Berkas berkas;private int id;private int hitungan;

}

/*** kelas Pembaca dengan siklus hidup sebesar

batas yang diberikan oleh konstanta BATAS padakelas PembacaBuatTulis1. Siklus hidup darisebuah pembaca adalah tidur, mulai membaca,sedang membaca dan selesai membaca.

*/class Pembaca extends Thread{

public Pembaca(int id, Berkas berkas){

this.id = id;this.berkas = berkas;hitungan = 0;setName("Pembaca " + id);

}

public void run(){

while (hitungan < PembuatBacaTulis1.BATAS){

berkas.tidur();System.out.println("Pembaca " + id + " tidur.");berkas.mulaiMembaca();System.out.println("Pembaca " + id + " mulai membaca.");berkas.tidur();System.out.println("Pembaca " + id + " sedang membaca.");berkas.selesaiMembaca();System.out.println("Pembaca " + id + " selesai membaca.");hitungan++;

}}

private Berkas berkas;private int id;private int hitungan;

}

/*** Kelas ini menggambarkan apa saja yang dapat* dilakukan oleh setiap thread pembaca dan penulis

135

Page 156: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

* ke suatu berkas.*/

class Berkas{

public Berkas(){

nPembaca = 0;brks = new Semafor(1);mutex = new Semafor(1);

}

public void mulaiMembaca(){

mutex.tunggu();nPembaca++;if (nPembaca == 1) brks.tunggu();mutex.sinyal();

}

public void selesaiMembaca(){

mutex.tunggu();--nPembaca;if (nPembaca == 0) brks.sinyal();mutex.sinyal();

}

public void mulaiMenulis(){

brks.tunggu();}

public void selesaiMenulis(){

brks.sinyal();}

public void tidur(){

try{

long t = (long) (Math.random() * 1000);Thread.sleep(t);

}catch (InterruptedException e) {}

}

private Semafor brks, mutex;private int nPembaca;

}

/*** kelas ini merupakan implementasi semafor.

136

Page 157: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

* Implementasi ini merupakan modifikasi dari* implementasi semafor oleh Silberschatz, Galvin,* dan Gagne.*/

final class Semafor{

public Semafor(){

nilai = 0;}

public Semafor(int n){

nilai = n;}

public synchronized void tunggu(){

nilai--;if (nilai < 0){

try { wait(); }catch(InterruptedException e) {}

}}

public synchronized void sinyal(){

nilai++;if (nilai <= 0) notify();

}

private int nilai;}

Bila contoh diatas dijalankan, maka hasil yang cukup mungkin didapatkan adalah seperti berikut:

Pembaca 0 tidur.Pembaca 0 mulai membaca.Pembaca 2 tidur.Pembaca 2 mulai membaca.Penulis 1 tidur.Pembaca 1 tidur.Pembaca 1 mulai membaca.Penulis 0 tidur.Penulis 2 tidur.Pembaca 1 sedang membaca.Pembaca 1 selesai membaca.Pembaca 0 sedang membaca.Pembaca 0 selesai membaca.

137

Page 158: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Pembaca 2 sedang membaca.Pembaca 2 selesai membaca.Penulis 1 mulai menulis.Penulis 1 sedang menulis.Penulis 1 selesai menulis.Penulis 0 mulai menulis.Penulis 0 sedang menulis.Penulis 0 selesai menulis.Penulis 2 mulai menulis.Penulis 2 sedang menulis.Penulis 2 selesai menulis.

Berikut adalah ilustrasinya:

Keterangan:TL = Thread PenulisBC = Thread PembacaKotak dengan sisi putus-putus menandakan thread tersebut

sedang menunggu di antrian.Kotak dengan sisi tidak putus-putus menandakan thread

tersebut melaksanakancritical sectionnya.

138

Page 159: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Seperti terlihat di atas, thread-thread pembaca (BC0, BC1, BC2) mendominasi thread-thread penulis(TL0, TL1, TL2) dalam hal akses berkas, sehingga semua thread penulis harus menunggu hingga semuathread pembaca selesai.

4.5.3. Solusi Dengan Penulis DiprioritaskanPada solusi ini, begitu tidak ada yang mengakses berkas dan ada thread penulis yang sedang menungguuntuk mendapatkan akses berkas tersebut, maka thread penulis ini akan langsung mendapatkan akses keberkas. Sebaliknya, bila ada thread pembaca yang juga sama-sama menunggu, maka thread pembaca iniharus menunggu hingga semua thread penulis yang sedang menunggu di antrian mendapatkan akses keberkas dan menyelesaikan proses penulisannya. Walaupun pada saat tersebut ada sebuah thread pembacayang sedang mengakses berkasnya, jika sudah ada thread penulis yang menunggu di antrian, makasemua thread pembaca yang menginginkan akses ke berkas tidak mendapatkannya hingga thread penulisyang berada di antrian mendapatkan akses yang dibutuhkannya.

Akibat dari cara prioritas seperti ini adalah adanya jaminan bahwa setiap thread pembaca akanmendapatkan informasi terbaru. Akan tetapi, hal ini berakibat bahwa jika ada sekelompok besar threadpenulis yang datang pada suatu waktu, maka thread pembaca tidak akan mendapatkan giliran sampaiwaktu yang tidak terbatas. Oleh karena itu, solusi ini pun gagal memenuhi persyaratan bahwa setiapthread harus tidak dibiarkan menunggu dalam waktu yang tidak terbatas.

Implementasi dari solusi ini tidak jauh berbeda dengan solusi sebelumnya. Bahkan, kita hanya perlusedikit memodifikasi kelas Berkas dengan menambahkan sebuah flag untuk menyatakan apakah adathread penulis yang sedang menunggu di antrian. Berikut ini adalah implementasi kelas Berkas untuksolusi ini:

/*** Kelas ini menggambarkan apa saja yang dapat* dilakukan oleh setiap thread pembaca dan penulis* ke suatu berkas. Kelas ini diadaptasi dari Stallings98.*/

class Berkas{

public Berkas(){

nPembaca = nPenulis = 0;baca = new Semafor(1);mutex1 = new Semafor(1);mutex2 = new Semafor(1);mutex3 = new Semafor(1);tulis = new Semafor(1);

}

public void mulaiMembaca(){

mutex1.tunggu();

139

Page 160: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

baca.tunggu();mutex2.tunggu();nPembaca++;if (nPembaca == 1) tulis.tunggu();mutex2.sinyal();baca.sinyal();mutex1.sinyal();

}

public void selesaiMembaca(){

mutex2.tunggu();nPembaca--;if (nPembaca == 0) tulis.sinyal();mutex2.sinyal();

}

public void mulaiMenulis(){

mutex3.tunggu();nPenulis++;if (nPenulis == 1) baca.tunggu();mutex3.sinyal();tulis.tunggu();

}

public void selesaiMenulis(){

tulis.sinyal();mutex3.tunggu();nPenulis--;if (nPenulis == 0) baca.sinyal();mutex3.sinyal();

}

public void tidur(){

try { Thread.sleep((long) (Math.random() * 1000)); }catch (InterruptedException e) {}

}

private Semafor baca, tulis, mutex1, mutex2, mutex3;private int nPembaca, nPenulis;

}

Perlu dicatat bahwa jumlahcritical sectionbertambah banyak seiring dengan keperluan untukmenghitung jumlah penulis yang ada di antrian. Karena jumlahcritical sectionbertambah, banyaksemafor yang diperlukan juga meningkat. Yang perlu diperhatikan adalah bahwa pada methodmulaiMembaca(), kita memerlukan sebuah semafor tambahan untuk menjaga agar semafor baca tidaklangsung begitu saja diakses. Bila semafor baca dapat langsung diakses, maka dapat terjadideadlock.

140

Page 161: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Dengan kelas yang lain tidak berubah, maka hasil yang cukup mungkin didapatkan adalah sepertiberikut:

Penulis 0 tidur.Penulis 0 mulai menulis.Pembaca 2 tidur.Pembaca 0 tidur.Penulis 2 tidur.Penulis 1 tidur.Penulis 0 sedang menulis.Penulis 0 selesai menulis.Penulis 2 mulai menulis.Penulis 2 sedang menulis.Penulis 2 selesai menulis.Penulis 1 mulai menulis.Penulis 1 sedang menulis.Penulis 1 selesai menulis.Pembaca 2 mulai membaca.Pembaca 0 mulai membaca.Pembaca 1 tidur.Pembaca 1 mulai membaca.Pembaca 1 sedang membaca.Pembaca 1 selesai membaca.Pembaca 2 sedang membaca.Pembaca 2 selesai membaca.Pembaca 0 sedang membaca.Pembaca 0 selesai membaca.

Berikut adalah ilustrasi dari hasil contoh di atas:

141

Page 162: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Keterangan:TL = Thread PenulisBC = Thread PembacaKotak dengan sisi putus-putus menandakan thread tersebutsedang menunggu di antrian.

Kotak dengan sisi tidak putus-putus menandakan threadtersebut melaksanakancriticalsectionnya.

Ilustrasi di atas menegaskan bahwa ketika thread penulis menunggu di antrian, maka tidak ada satu punthread pembaca yang dapat mengakses berkas yang diinginkan hingga setiap thread penulis yang ada diantrian telah menyelesaikan tugasnya. Bila thread penulis terus berdatangan, maka thread pembaca tidakakan mendapatkan giliran sedikitpun, dan dengan demikian kelaparan.

4.5.4. Solusi Dengan Pembaca Dan Penulis Mendapat PrioritasSecara Bergantian

Karena kedua solusi sebelumnya menghasilkan kedua ekstrem dalam akses berkas (thread pembaca atauthread penulis menunggu terus di antrian tanpa ada kepastian akan dijalankan), pada solusi inidiusahakan sebuah metode yang mengakomodasi kedua belah pihak. Cara untuk melakukan ini cukup

142

Page 163: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

mudah yaitu dengan menerapkan metode gilir-menggilir. Sebuah penulis dapat mengakses berkas jikatidak ada thread pembaca yang sedang mengakses. Setelah selesai, thread ini memberikan giliran kethread pembaca. Sebuah pembaca dapat mengakses berkas yang ada jika tidak ada penulis yangmenunggu atau bila pada saat itu adalah giliran pembaca. Pembaca pertama yang pertama selesaimengakses berkas kemudian mengganti giliran sekarang menjadi giliran penulis.

Dengan metode giliran ini, tidak ada thread yang tertunda tanpa batas. Karena setiap syarat daripenyelesaiancritical sectionyang baik dipenuhi, maka cara seperti ini merupakan cara yang baik untukmenyelesaikan masalah konkurensi.

Implementasi dari solusi ini dijadikan sebagai latihan di akhir subbab ini.

4.5.5. Masalah Dining PhilosophersMasalah ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun 1965. Masalah inimemodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam masalahDining Philosophers, diketahui sejumlah (N) filsuf yang hanya memiliki tiga status, berpikir, lapar, danmakan. Semua filsuf berada di sebuah meja makan bundar yang ditata sehingga di depan setiap filsuf adasebuah piring berisi mie dan di antara dua piring yang bersebelahan terdapat sebuah sumpit.

Pada awalnya, semua filsuf akan berpikir selama waktu yang tidak tentu. Setelah berpikir lama, filsufakan merasa lapar. Pada saat lapar, ia berusaha untuk mengambil 2 buah sumpit yang ada di kanan dan dikirinya untuk makan. Dia mengambil sumpitnya satu per satu. Begitu ia mendapat sebuah sumpit, iatidak akan melepaskannya. Jika ia hanya berhasil mengambil kurang dari 2 sumpit, maka ia akanmenunggu sampai 2 sumpit diambil. Begitu dia mendapatkan 2 sumpit, maka dia akan makan mienyauntuk sementara waktu dan kemudian meletakkan kedua sumpitnya. Kedua sumpit ini kemudian dapatdigunakan oleh filsuf-filsuf yang lain. Dia sendiri kemudian kembali berpikir. Tujuan dari masalah iniadalah untuk mencari cara sehingga para filsuf tidak akan pernah mati kelaparan.

Posisi Meja Filsuf dengan N = 4

Salah satu solusi yang mungkin langsung terlihat adalah dengan menggunakan semafor. Setiap sumpitmewakili sebuah semafor. Kemudian, ketika seorang filsuf lapar, maka dia akan mencoba mengambilsumpit di kiri dan di kanannya, atau dengan kata lain dia akan menunggu sampai kedua sumpit tersebut

143

Page 164: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

dapat ia gunakan. Setelah selesai makan, sumpit diletakkan kembali dan sinyal diberikan ke semaforsehingga filsuf lain yang membutuhkan dapat menggunakan sumpitnya. Berikut contoh programnya:

/*** Kelas ini membuat sebuah simulasi untuk masalah* Dining Philosophers .*/

public class DiningPhilosophers{

public static void main (String args[]){

Semafor sumpit[] = {new Semafor(1), new Semafor(1),new Semafor(1), new Semafor(1)};

Filsuf filsuf[] ={ new Filsuf(1, sumpit[0], sumpit[1]),

new Filsuf(2, sumpit[1], sumpit[2]),new Filsuf(3, sumpit[2], sumpit[3]),new Filsuf(4, sumpit[3], sumpit[0])};

for (int i = 0; i < 4; i++) filsuf[i].start();}

}

/*** Kelas ini menggambarkan kegiatan dari setiap filsuf.*/

class Filsuf extends Thread{

public Filsuf(int i, Semafor sumpit1, Semafor sumpit2){

id = i;setName("Filsuf " + i);kiri = sumpit1; kanan = sumpit2;

}

public void run(){

while (true){

System.out.println(this + " sedang berpikir");berpikir();System.out.println(this + " lapar");makan();System.out.println(this + " sudah kenyang");

}}

public void berpikir(){

try { Thread.sleep((long) (Math.random() * 1000)); }catch (InterruptedException e){}

}

144

Page 165: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

public void makan(){

kanan.tunggu();kanan.tunggu();// makan-makankanan.sinyal();kiri.sinyal();

}

private int id;private Semafor kiri, kanan;

}

/*** kelas ini merupakan implementasi semafor.* Implementasi ini merupakan modifikasi dari* implementasi semafor oleh Silberschatz, Galvin,* dan Gagne.*/

final class Semafor{

public Semafor(){

nilai = 0;}

public Semafor(int n){

nilai = n;}

public synchronized void tunggu(){

nilai--;if (nilai < 0){

try { wait(); }catch(InterruptedException e) {}

}}

public synchronized void sinyal(){

nilai++;if (nilai <= 0) notify();

}

private int nilai;}

145

Page 166: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Akan tetapi, solusi ini tidak dapat diterima. Alasannya sangat sederhana, yaitudeadlockdapat terjadi.Contoh kasusnya adalah ketika semua filsuf telah mengambil sumpit di sebelah kirinya, maka tidak adalagi sumpit yang tersisa di meja. Karena tidak ada sumpit yang tersisa di meja, maka setiap filsufkekurangan sebuah sumpit. Berhubung setelah berhasil mengambil sebuah sumpit, sumpit tersebut tidakakan diletakkan kembali sampai filsuf yang bersangkutan makan, maka tidak akan ada satu filsuf punyang akan makan.

Alternatif lain yang cukup menarik disajikan oleh Stallings, antara lain dengan menyuruh setiap filsufuntuk mengambil sumpitnya secara berselang-seling. Filsuf dengan urutan bilangan ganjil pertama kalimengambil sumpit di sebelah kanannya, sementara filsuf dengan urutan bilangan genap pertama kalimengambil sumpit di sebelah kirinya. Alternatif lain yang juga disajikan antara lain: menyediakansebanyak N sumpit lagi, sehingga lebih higienis di samping dijamin tidak menghasilkandeadlock;mengurangi banyak filsuf yang boleh duduk di meja makan sebanyak 1.

4.6. Critical Region dan Monitor

4.6.1. PengantarSejauh ini, kita telah mengenal sebagai perangkat keras sinkronisasi yang ampuh, lalu mengapa kitamembutuhkan bahasa pemrograman untuk melakukan sinkronisasi? Alasan yang sederhana adalahkarena ternyata implementasi semafor memiliki beberapa kelemahan.

Kelemahan yang pertama adalah kenyataan bahwa semafor memerlukan implementasi di tingkat rendah,sesuatu hal yang kompleks untuk dilakukan kebanyakan orang. Bahasa pemrograman lebih mudah untukdipelajari dan diimplementasikan.

Selain itu, pertukaran urutan dari perintah dan yang dilakukan oleh proses dapat menyebabkan syarattidak terpenuhi atau terjadi deadlock. Menghilangkan perintah wait dapat menyebabkan lebih dari satuproses memasukicritical section dan menghilangkan perintah signal dapat menyebabkandeadlock.Satuhal yang harus diingat adalah bahwa error yang terjaditidak mudah untuk dideteksi.

Kode semafor terdistribusi dalam seluruh program sehingga menyulitkan pemeliharaan. Hal inimerupakan kelemahan lain dari semafor. Sehingga jelas tampaknya, bahwa kita memerlukan konstruksitingkat tinggi yang dapat mengatasi atau paling tidak mengurangi kelemahan-kelemahan yang terdapatdalam semafor.

4.6.2. Konsep Critical RegionCritical Regionadalah bagian dari kode yang selalu dieksekusi di bawah kondisi mutual eksklusif.Critical Regionmenyerahkan penanganan kondisi mutual eksklusif tersebut dari tangan programmer(seperti yang terjadi dalam semafor) ke tangankompiler . Hal ini membantu mengurangi error yangterjadi karena kesalahan programmer dalam mengimplementasi semafor.

146

Page 167: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.6.3. Komponen Critical RegionCritical Regionmemiliki komponen-komponen sebagai berikut.

1. tertentu misalnya v yang diakses bersama-sama oleh berbagai proses yang dideklarasikan dengan

v: shared T

2. Sebuahcritical regiondimana variabel v dapat diakses.

region v when (B) S

B adalah suatu ekspresi boolean yang mengatur akses kecritical region. Ketika suatu proses hendakmemasukicritical region , terlebih dahulu harus memeriksa nilai B. Jika B bernilai benar, maka prosesdapat memasukicritical regiondan melaksanakan S. Bila B bernilai salah, maka proses dilarangmemasukicritical regiondan harus menunggu sampai B bernilai benar. Dengan kata lain, pernyataan Shanya dapat dieksekusi ketika B bernilai benar dan tidak ada proses lain yang dapat mengakses v.

4.6.4. Cara Kerja Critical RegionSebelum melangkah lebih jauh mengenai cara kerjacritical region, terlebih dulu kita harus mengerti apayang dimaksud dengan . Secara sederhana, mutex adalah semacam kunci yang digunakan untukmengakses wilayah yang mutual eksklusif.Suatu proses yang ingin masuk ke dalamcritical region harusmendapatkan mutex terlebih dahulu. Bila proses tersebut tidak mendapatkan mutex, maka ia akandimasukkan ke dalam antrian utama (disebut antrian utama karena pada pembahasan lebih lanjut akandisinggung mengenai antrian tahap kedua).

Setelah mendapatkan mutex, bukan berarti proses dapat langsung masuk ke dalamcritical region.Sebelumnya proses harus mengevaluasi nilai boolean B. Bila B bernilai benar, maka proses terusberjalan. Bila B bernilai salah, proses harus melepaskan mutex yang telah didapat dan masuk ke dalamantrian kedua. Kalau setelah itu proses berhasil mendapatkan mutex kembali, ia tetap harusmengevaluasi nilai B. Oleh karena proses harus mengevaluasi nilai B,critical regionsering disebut pulasebagaiConditional Critical Region.Perlu diperhatikan bahwa nilai B hanya dapat diperiksa ulang bilaproses lain telah selesai mengakses variabel dan berpotensi mengubah nilai B.

Melihat dari antrian yang terasosiasi dengan variabel v, maka dapat dibedakan sebagai berikut. Antrianpertama, sering disebut sebagaimain queue, berisi proses yang hendak memasukicritical region tetapimendapatkan bahwacritical regionsedang dikunci. Antrian kedua, dikenal sebagaievent queue, berisiproses yang terblokir karena mendapatkan B bernilai salah. Antrian tersebut mengikuti algoritmaFirst InFirst Out(FIFO).

Bentuk umum :

region v when B dobegin.....end

147

Page 168: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.6.5. Implementasi Critical Region dalam Bounded BufferCritical Regiondapat digunakan untuk memecahkan masalah klasik dalam sinkronisasi, misalnyabounded buffer.Buffer dan pointernya dienkapsulasi :

struct buffer{item pool[n];int count, in, out;

};

Produser memasukkan barang hasil produksi (nextp) ke dalam buffer dengan mengeksekusi:

region buffer when(count < n){pool[in] = nextp;in = (in+1) % n;count++;

}

Konsumer mengambil barang dari buffer dan menaruhnya di nextc dengan mengeksekusi

region buffer when(count > 0){nextc = pool[out];out = (out+1) % n;count--;

}

4.6.6. Keterbatasan Critical RegionCritical Regionmasih tersebar dalam kode program dan lebih susah untuk diimplementasikan secaraefisien. Selain itu, tidak ada kontrol terhadap manipulasi variabel yang diproteksi sehingga bila sebuahproses memasukicritical region, ia dapat melakukan apa saja terhadap variabel yang telah menjadihaknya.

4.6.7. Konsep MonitorKonsep monitor diperkenalkan pertama kali oleh Hoare (1974) dan Brinch Hansen (1975) untukmengatasi beberapa masalah yang timbul ketika memakai semafor. Monitor merupakan kumpulan dariprosedur, variabel, dan struktur data dalam satu modul. Dengan mempergunakan monitor, sebuah prosesdapat memanggil prosedur di dalam monitor, tetapi tidak dapat mengakses struktur data (termasukvariabel- variabel) internal dalam monitor. Dengan karakteristik demikian, monitor dapat mengatasi

148

Page 169: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

manipulasi yang tidak sah terhadap variabel yang diakses bersama-sama karena variabel lokal hanyadapat diakses oleh prosedur lokal.

Monitor tetap mempertahankan kondisi mutual eksklusifnya dengan membatasi hanya satu proses yangdapat aktif dalam monitor dalam suatu waktu. Yang mengatur kondisi tersebut adalah kompiler danbukan programmer.

Ternyata, mempertahakankan kondisi mutual eksklusif saja tidaklah cukup. Diperlukan juga suatu carauntuk memblok suatu proses jika ia tidak dapat terus berjalan. Misalnya dalam masalahbounded buffer,proses harus diblok ketika buffer telah penuh. Oleh karena itu, monitor harus diperlengkapi denganmekanisme sinkronisasi yang lain. Salah satu mekanisme yang dipergunakan adalah variabel kondisiyang terdapat dalam monitor dan hanya dapat diakses oleh monitor.

Gambar 4-1. Struktur Monitor

149

Page 170: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.6.8. Variabel KondisiDeklarasi variabel kondisi dapat berupa

varc : condition;

Operasi yang dapat dilakukan terhadap variabel kondisi:

1. delay : menyerupai wait dalam semafor. delay(c) membuat proses yang memanggil masuk dalamblok dan melepaskan penguncian terhadap monitor. Sehingga mengizinkan program lain untukmasuk.

2. resume : menyerupai signal dalam semafor. resume(c) unblock proses yang sedang menunggu.Perlu diperhatikan bahwa berbeda dengan signal pada semafor, resume tidak melakukan apa-apabila delay tidak dipanggil.

Bentuk umum monitor

monitor contohcondition c;integer i;

procedure produser(x);...............end;

procedure consumer(x);...............end;

end monitor;

4.6.9. Implementasi Monitor dalam Dining Philosophers

/*** Pseudocode implementasi monitor dalam Dining* Philosophers.* Diadaptasi dari Steven Robbins* http://vip.cs.utsa.edu/nsf/pubs/starving/starving.pdf*/

monitor diningPhilosophers{

150

Page 171: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

int[] status = new int[5];boolean[] kiriLapar = new boolean[5];boolean[] kananLapar = new boolean[5];static final int BINGUNG = 0;static final int LAPAR = 1;static final int MAKAN = 2;condition[] aku = new condition[5];public diningPhilosophers{

for (int i=0; i<5; i++){status[i] = BINGUNG;kiriLapar[i] = false;kananLapar[i] = false;

}}

public entry ambil(int i){status[i] = LAPAR;cek(i);if (status[i] != MAKAN)

aku[i].wait();kananLapar[kiri(i)] = false;kiriLapar[kanan(i)] = false;

}

public entry taruh(int i){status[i] = BINGUNG;cek(kiri(i));if (status[kiri(i)] == LAPAR)

kiriLapar[i] = true;cek(kanan(i));if (status[kanan(i)] ==LAPAR)

kananLapar[i] = true;}

private cek(int i){if (status[kanan(i)] != MAKAN &&

status[i] == LAPAR &&status[kiri(i)] != MAKAN &&!kiriLapar(i) && !kananLapar(i)){status[i] = MAKAN;aku[i].signal();

}}

private int kiri(int i){return (i+1)%5;

}

private int kanan(int i){return (i+4)%5;

}}

151

Page 172: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.6.10. Keterbatasan MonitorKarena monitor berkaitan dengan konsep bahasa pemrograman sehingga kompiler bertanggung jawabuntuk mengkondisikan monitor sebagai mutual eksklusif. Namun, pada kenyataannya tidak semuakompiler dapat menerapkan peraturan mutual eksklusif seperti yang dibutuhkan oleh Monitor tersebut.Mungkin bahasa pemrograman yang sama juga tidak memiliki semafor, tetapi menambahkan semaforjauh lebih mudah.

Monitor (seperti juga semafor) didesain untuk memecahkan masalah mutual eksklusif dalam satu ataulebih CPU yang berbagi akses ke memori yang sama. Oleh karena itu, monitor tidak dapat diterapkandalam sistem terdistribusi yang memiliki memori masing-masing.

4.7. Deadlock

4.7.1. Prinsip dari deadlockDeadlockialah suatu kondisi permanen dimana proses tidak berjalan lagi ataupun tidak ada komunikasilagi antar proses.Deadlockdisebabkan karena proses yang satu menunggu sumber daya yang sedangdipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Ataudengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya bisa dikerjakan oleh proseslain dalam set yang sedang menunggu. Contoh yang paling mudah ialah gambar berikut ini

Gambar 4-2. Contoh Deadlock Sederhana

Pada gambar diatas, tidak ada yang dapat maju karena keduanya memperebutkan jalan yang sama ( yangdilingkari ), demikian jugadeadlocksaat semua proses memperebutkan sumber yang sama. Contoh lainyang dapat merepresentasikandeadlockialah jembatan gantung sebagai berikut :

152

Page 173: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-3. Contoh Deadlock di Jembatan Gantung

disadur dariModern Operating Systems, Tanenbaum , 1992

sehingga orang yang ada di sebelah kiri jembatan tidak dapat melaju sebab terjadideadlockdi tengahjembatan ( bagian yang dilingkari ).Contoh lain ialah di persimpangan jalan jalan berikut ini:

Gambar 4-4. Contoh Deadlock di Persimpangan Jalan

disadur dari buku Stallings, William,"Operating Systems -- Fourth Edition", Prentice Hall, 2001

Dalam kasus ini setiap mobil bergerak sesuai nomor yang ditentukan,tetapi tanpa pengaturan yang benar,maka setiap mobil akan bertemu pada satu titik yang permanen( yang dilingkari )atau bisa dikatakanbahwa setiap mobil tidak bisa meanjutkan perjalanan lagi atau dengan kata lain terjadideadlock.Contohlain pada proses yang secara umum terdiri dari tiga tahap, yaitu untuk meminta, memakai, danmelepaskan sumber daya yang di mintanya. Contoh kode-nya :

public class Proses {public synchronized void getA() {

//proses untuk mendapat sumber daya a}

public synchronized void getB(){//proses untuk mendapat sumber daya b

}

public void releaseA(){

153

Page 174: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

//proses untuk melepaskan sumber daya a}

public void releaseB(){//proses untuk melepaskan sumber daya b

}}

public class Coba {public static void main(String [] args) {

Proses P = new Proses();Proses Q = new Proses();P.getA();Q.getB();P.getB();Q.getA();

}}

tanpa adanya perintah untuk mereleased artinya saat P mendapatkan A dan Q mendapatkan B, tetapitidak dilepaskan, maka saat P minta B dan Q minta A, maka keduanya akan saling menunggu hinggasalah satu melepaskan sumber dayanya, sedangkan kebutuhan P ada pada Q dan Q ada pada P, sehinggaterjadideadlock. Secara umum kejadian ini dapat mudah terjadi dalam pemrograman multi-thread.Sebab ada kemungkinan lebih besar untuk menggunakan sumber daya bersama.

4.7.2. Sumber DayaKejadiandeadlockselalu tidak lepas dari sumber daya, seperti kita lihat dari contoh contoh diatas, bahwahampir seluruhnya merupakan masalah sumber daya yang digunakan bersama-sama. Oleh karena itu,kita juga perlu tahu tentang jenis sumber daya, yaitu: sumber daya bisa digunakan lagi berulang-ulangdan sumber daya yang bisa digunakan dan habis dipakai atau bisa dikatakan sumber daya sekali pakai.

4.7.2.1. Sumber Daya yang Bisa Dipakai Berulang-Ulang

Sumber daya ini tidak habis dipakai oleh proses manapun.Tetapi setelah proses berakhir, sumber daya inidikembalikan untuk dipakai oleh proses lain yang sebelumnya tidak kebagian sumber daya ini.Contohnya prosesor, kanal I/O, disk, semaphores. Contoh peran sumber daya jenis ini pada terjadinyadeadlockialah misalnya sebuah proses memakai disk A dan B, maka akan terjadideadlockjika setiapproses sudah memiliki salah satu disk dan meminta disk yang lain. Masalah ini tidak hanya dirasakanoleh pemrogram tetapi oleh seorang yang merancang sebuah sistem operasi. Cara yang digunakan padaumumnya dengan cara memperhitungkan dahulu sumber daya yang digunakan oleh proses - proses yangakan menggunakan sumber daya tersebut. Contoh lain yang menyebabkandeadlockdari sumber yangdapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses yang memakai memori utama.Contohnya dapat dilihat dari kode berikut ini:

//dari kelas proses kita tambahkan method yaitu memintapublic void meminta( int banyakA ) {

//meminta dari sumber daya a

154

Page 175: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

if ( banyakA &lt; banyak )banyak = banyak - banyakA;

elsewait();

}

//mengubah kode pada mainnya sebagai berikutpublic static void main ( String [] args ) {

Proses P = new Proses();Proses Q = new Proses();P.meminta(80);Q.meminta(70);P.meminta(60);Q.meminta(80);

}

private int banyak = 200;private int banyakA;

Setelah proses P dan Q telah melakukan fungsi meminta untuk pertama kali, maka sumber daya yangtersedia dalam banyak ialah 50 ( 200-70- 80). Maka saat P menjalankan fungsi meminta lagi sebanyak60, maka P tidak akan menemukan sumber daya dari banyak sebanyak 60, maka P akan menungguhingga sumber daya yang diminta dipenuhi. Demikian juga dengan Q, akan menunggu hinggapermintaannya dipenuhi, akhirnya terjadideadlock.Cara mengatasinya dengan menggunakan memorimaya.

4.7.2.2. Sumber Daya Sekali Pakai

Dalam kondisi biasa tidak ada batasan untuk memakai sumber daya apapun, selain itu dengan tidakterbatasnya produksi akan membuat banyak sumber daya yang tersedia.Tetapi dalam kondisi ini jugabisa terjadideadlock.Contohnya:

//menambahkan method receive dan sendpublic void receive( Proses p ){

//method untuk menerima sumber daya}

public void send ( Proses p ){//method untuk memberi sumber daya

}

dari kedua fungsi tersebut ada yang bertindak untuk menerima dan memberi sumber daya, tetapi adakalanya proses tidak mendapat sumber daya yang dibuat sehingga terjadi blok, karena itu terjadideadlock.Tentu saja hal ini sangat jarang terjadi mengingat tidak ada batasan untuk memproduksi danmengkonsumsi, tetapi ada suatu keadaan seperti ini yang mengakibatkandeadlock.Hal inimengakibatkandeadlockjenis ini sulit untuk dideteksi. Selain itudeadlockini dihasilkan oleh beberapakombinasi yang sangat jarang terjadi.

155

Page 176: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.7.3. Kondisi untuk Terjadinya deadlockMenurut Coffman( 1971 ) ada empat kondisi yang bisa mengakibatkan terjadinyadeadlock,yaitu :

1. Mutual Eksklusif: hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yangingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidakada proses yang memakai sumber daya tersebut.

2. Memegang dan menunggu: proses yang sedang memakai sumber daya boleh meminta sumber dayalagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proseslain, hal ini bisa menyebabkan kelaparan sumber daya sebab bisa saja sebuah proses tidak mendapatsumber daya dalam waktu yang lama

3. Tidak adaPreemption: sumber daya yang ada pada sebuah proses tidak boleh diambil begitu sajaoleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebihdahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkanhanya proses yang memiliki sumber daya yang boleh berjalan

4. Circular Wait: adanya kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yangdipegang proses berikutnya

4.7.4. Penanganan deadlockBanyak cara untuk menanggulangideadlock:

1. Mengabaikan masalahdeadlock.

2. Mendeteksi dan memperbaiki

3. Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protokoluntuk memastikan sistem tidak pernah memasuki keadaandeadlock. Yaitu dengandeadlockavoidance sistem untuk men- data informasi tambahan tentang proses mana yang akan meminta danmenggunakan sumber daya.

4. Pencegahan yang secara struktur bertentangan dengan 4 kondisi terjadinyadeadlockdengandeadlockprevention sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapatmenunggu.

4.7.4.1. Mengabaikan Masalah deadlock

Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untukmenghadapideadlockialah dengan berpura-pura bahwa tidak ada masalah apapun. Hal ini seakan-akanmelakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangideadlockdengan cara inidengan tidak mendeteksideadlockdan membiarkannya secara otomatis mematikan program sehinggaseakan-akan tidak terjadi apapun. Jadi jika terjadideadlock, maka tabel akan penuh, sehingga prosesyang menjalankan proses melalui operator harus menunggu pada waktu tertantu dan mencoba lagi.

156

Page 177: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.7.4.2. Mendeteksi dan Memperbaiki

Caranya ialah dengan cara mendeteksi jika terjadideadlockpada suatu proses maka dideteksi sistemmana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan prosesuntuk memperbaiki dan menjadikan sistem berjalan kembali. Ada beberapa jalan untuk kembali darideadlock:

4.7.4.2.1. Lewat Preemption

dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan memberikannyapada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui oleh pemilik dari sumberdaya tersebut tergantung dari sifat sumber daya itu sendiri. Perbaikan dengan cara ini sangat sulit ataubisa dikatakan tidak mungkin. Cara ini bisa dilakukan dengan memilih korban yang akan dikorbankanatau diambil sumber dayanya utuk sementara, tentu saja harus dengan perhitungan yang cukup agarwaktu yang dikorbankan seminimal mungkin.

4.7.4.2.2. Lewat melacak kembali

setelah kita lakukan beberapa langkahPreemption,maka proses utama yang diambil sumber dayanyaakan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untukkembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ. Tetapiuntuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut, oleh karena itu umumnyadilakukan cara mematikan program tersebut lalu memulai kembali proses. Meskipun sebenarnya lebihefektif jika hanya mundur beberapa langkah saja sampaideadlocktidak terjadi lagi. Untuk beberapasistem mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan menandaitempat terakhir kali menulis ke disk, sehingga saat terjadideadlockdapat mulai dari tempat terakhirpenandaannya berada.

4.7.4.2.3. Lewat membunuh proses yang menyebabkan deadlock.

Cara yang paling umum ialah membunuh semua proses yang mengalamideadlock.Cara ini palingumum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kitajuga dapat membunuh beberapa proses saja dalam siklusdeadlockuntuk menghindarideadlockdanmempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban untuk melepaskansumber dayanya, dengan cara ini maka masalah pemilihan korban menjadi lebih selektif, sebab telahdiperhitungkan beberapa kemungkinan jika si proses harus melepaskan sumber dayanya.

Kriteria seleksi korban ialah :

1. Yang paling jarang memakai prosesor

2. Yang paling sedikit hasil programnya

3. Yang paling banyak memakai sumber daya sampai saat ini

4. Yang alokasi sumber daya totalnya tersedkit

5. Yang memiliki prioritas terkecil

157

Page 178: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.7.4.3. Menghindari deadlock

Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudahharus dapat mengenali bahwa sumber daya itu aman atau tidak( dalam arti tidak terkenadeadlock),setelah itu baru dialokasikan. Ada dua cara yaitu:

1. Jangan memulai proses apapun jika proses tersebut akan membawa kita pada kondisideadlock,sehingga tidak mungkin terjadideadlockkarena ketika akan menujudeadlocksudah dicegah

2. Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahanini akan membawa kita pada suatu keadaandeadlock

Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian awal, dijaga agar tidakdeadlockdanditambah dengan penjagaan kedua saat suatu proses meminta sumber daya, dijaga agar jangan sampaiterjadideadlock.Padadeadlockavoidance sistem dilakukan dengan cara memastikan bahwa programmemiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwasistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal ataupun saat memintapermintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.

4.7.4.3.1. Kondisi Aman

Saat kondisi aman, maka suatu sistem bisa mengalokasikan sumber daya pada setiap proses ( sampaipada batas maksimumnya )dengan urutan tertentu. Dengan gambar sebagai berikut :

Gambar 4-5. Kondisi Deadlock Dilihat dari Safe State

disadur dari buku Silberschatz, dkk,Applied Operating System Concepts,2000

Dengan mengenal arti dari kondisi aman ini, kita bisa membuat algoritma untuk menghindarideadlock.Idenya ialah dengan memastikan bahwa sistem selalu berada dalam kondisi aman. Dengan asumsi bahwadalam kondisi tidak aman terkandungdeadlock.Contoh penerapan algoritmanya ialah algoritma bankir.

4.7.4.3.2. Algoritma Bankir

Menurut Dijstra (1965) algoritma penjadwalan dapat menghindarideadlockdan algoritma penjadwalanitu lebih dikenal dengan sebutan algoritma bankir. Algoritma ini dapat digambarkan sebagai seorangbankir dikota kecil yang berurusan dengan kelompok orang yang meminta pinjaman. Jadi kepada siapadia bisa memberikan pinjamannya.Dan setiap pelanggan memberikan batas pinjaman maksimum kepadasetiap peminjam dana.

158

Page 179: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Tentu saja si bankir tahu bahwa si peminjam tidak akan meminjam dana maksimum yang merekabutuhkan dalam waktu yang singkat melainkan bertahap. Jadi dana yang ia punya lebih sedikit dari batasmaksimum yang dipinjamkan. Lalu ia memprioritaskan yang meminta dana lebih banyak, sedangkanyang lain disuruh menunggu hingga peminta dana yang lebih besar itu mengembalikan pinjaman berikutbunganya, baru setelah itu ia meminjamkan pada peminjam yang menunggu.

Jadi algoritma bankir ini mempertimbangkan apakah permintaan mereka itu sesuai dengan jumlah danayang ia miliki, sekaligus memperkirakan jumlah dana yang mungkin diminta lagi. Jangan sampai iasampai pada kondisi dimana dananya habis dantidak bisa meminjamkan uang lagi. Jika demikian makaakan terjadi kondisideadlock. Agar kondisi aman, maka asumsi setiap pinjaman harus dikembalikanwaktu yang tepat.

Secara umum algoritma bankir dapat dibagi menjadi 4 struktur data :

1. Tersedia : jumlah sumber daya/dana yang tersedia

2. Maksimum : jumlah sumber daya maksimum yang diminta oleh setiap proses

3. Alokasi : jumlah sumber daya yang dibutuhkan oleh setiap proses

4. Kebutuhan : sumber daya yang sedang dibutuhkan oleh setiap proses

4.7.4.4. Pencegahan deadlock

Jika pada awal bab ini kita membahas tentang ke-empat hal yang menyebabkan terjadinyadeadlock.Maka pada bagian ini, kita akan membahas cara menanggulangi keempat penyebabdeadlockitu,sehingga dengan kata lain kita mengadakan pencegahan terhadapdeadlock.

Penanggulangannya ialah sebagai berikut :

1. Masalah Mutual Eksklusif Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuksatu proses, maka hal ini harus di dukung oleh kemampuan sistem operasi. Jadi diusahakan agartidak mempergunakan kondisi spesial tersebut sehingga sebisa mungkindeadlockbisa dihindari.

2. Masalah Kondisi Menunggu dan Memegang Penanggulangandeadlockdari kondisi ini lebih baikdan menjanjikan, asalkan kita bisa menahan proses yang memegang sumber daya untuk tidakmenunggu sumber daya laun, kita bisa mencegahdeadlock.Caranya ialah dengan meminta semuasumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidakmengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakanalgoritma bankir. Yang mengatur hal ini bisa sistem operasi ataupun sebuah protokol. Hasil yangbisa terjadi ialah sumber daya lebih di-spesifikasi dan kelaparan sumber daya, atau proses yangmembutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapat sumber dayayang dibutuhkan.

3. Masalah tidak adaPreemptionHal ketiga ialah jangan sampai adapreemptionpada sumber dayayang telah dialokasikan. Untuk memastikan hal ini, kita bisa menggunakan protokol. Jadi jikasebuah proses meminta sumber daya yang tidak dapat dipenuhi saat itu juga, maka prosesmengalami preempted. Atau dengan kata lain ada sumber daya dilepaskan dan diberikan ke prosesyang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi.

159

Page 180: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Atau kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika yamaka kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proseslain yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yangmenunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga,maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya bisa saja dipreempted, tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpandalam memory atau register.

4. Masalah Circular Wait Masalah ini dapat ditangani oleh sebuah protokol yang menjaga agar sebuahproses tidak membuat lingkaran siklus yang bisa mengakibatkandeadlock

4.8. Diagram GrafGraf adalah suatu struktur diskret yang terdiri dari vertex dan sisi, dimana sisi menghubungkanvertex-vertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitusimple graf dan multigraf. Simpel graf tidak mengandung sisi paralel (lebih dari satu sisi yangmenghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitugraf berarah dan graf tidak berarah. Graf berarah memperhatikan arah sisi yang menghubungkan duavertex, sedangkan graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex.

Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah grafalokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf alokasisumber daya adalah bentuk visualisasi dalam mendeteksi maupun menyelesaikan masalah.deadlock.

4.8.1. Komponen Graf Alokasi Sumber DayaPada dasarnya graf G= (V, E) terdiri dari 2 komponen yaitu vertex dan sisi.

Untuk graf alokasi sumber daya, vertex maupun sisinya dibedakan menjadi beberapa bagian.

Vertex terdiri dari dua jenis, yaitu:

1. Proses P= {P0, P1, P2, P3, , Pi, , Pm}. Terdiri dari semua proses yang ada di sistem. Untuk proses,vertexnya digambarkan sebagai lingkaran dengan nama prosesnya.

Gambar 4-6. Proses Pi

160

Page 181: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

2. Sumber daya R= {R0, R1, R2, R3, , Rj, , Rn}. Terdiri dari semua sumber daya yang ada di sistem.Untuk sumber daya, vertexnya digambarkan sebagai segi empat dengan instans yang dapatdialokasikan serta nama sumber dayanya.

Gambar 4-7. Sumber daya Rj dengan 2 instans

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

Dalam hal ini jumlah proses dan sumber daya tidak selalu sama.

Sisi, E={Pi-> Rj, , Rj-> Pi, } terdiri dari dua jenis, yaitu:

1. Sisi permintaan: Pi -> Rj Sisi permintaan menggambarkan adanya suatu proses Pi yang memintasumber daya Rj.

Gambar 4-8. Proses Pi meminta sumber daya Rj

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

2. Sisi alokasi: Rj -> Pi. Sisi alokasi menggambarkan adanya suatu sumber daya Rj yangmengalokasikan salah satu instansnya pada proses Pi.

Gambar 4-9. Sumber daya Rj yang mengalokasikan salah satu instansnya pada proses Pi

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

161

Page 182: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-10. Graf Alokasi Sumber Daya

Pada graf di atas terdiri dari 7 vertex, V={P0, P1, P2, P3, R0, R1, R3} dan 5 sisi, E= {P0->R0, R0->P1,R1->P1, R2->P0, R2->P2}.Gambar 4-10menunjukkan beberapa hal:

1. P0 meminta sumber daya dari R0.

2. R0 memberikan sumber dayanya kepada P1.

3. R1 memberikan salah satu instans sumber dayanya kepada P1.

4. R2 memberikan salah satu instans sumber dayanya kepada P0.

5. R2 memberikan salah satu instans sumber dayanya kepada P2.

Setelah suatu proses telah mendapatkan semua sumber daya yang diperlukan maka sumber daya tersebutdilepas dan dapat digunakan oleh proses lain.

162

Page 183: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.8.2. Deteksi Deadlock Berdasarkan Graf Alokasi Sumber DayaUntuk mengetahui ada atau tidaknyadeadlockdalam suatu graf dapat dilihat dari perputaran danresource yang dimilikinya.

1. Jika tidak ada perputaran berarti tidakdeadlock.

2. Jika ada perputaran, ada potensi terjadideadlock.

3. Resource dengan 1 instans DAN perputaran mengakibatkandeadlock.

Pada bagian berikut ini akan ditunjukkan bahwa perputaran tidak selalu mengakibatkandeadlock.PadaGambar 4-11graf memiliki perputaran dandeadlockterjadi sedangkan padaGambar 4-12graf memilkiperputaran tetapi tidak terjadideadlock.

Gambar 4-11. Graf dengandeadlock

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

163

Page 184: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-11Terlihat bahwa ada perputaran yang memungkinkan tejadinyadeadlockdan semua sumberdaya memiliki satu instans kecuali sumber daya R2.

Graf di atas memiliki minimal dua perputaran:

1. R2 -> P0 -> R0 -> P1 -> R1 -> P2 -> R2

2. R2 -> P1 -> R1 -> P2 -> R2

Gambar di atas menunjukkan beberapa hal sebagai berikut:

1. P0 meminta sumber daya R0.

2. R0 mengalokasikan sumber dayanya pada P1.

3. P1 meminta sumber daya R1.

4. R1 mengalokasikan sumber dayanya pada P2.

5. P2 meminta sumber daya R2.

6. R2 mengalokasikan sumber dayanya pada P0 dan P1.

7. R3 mengalokasikan sumber dayanya pada P2.

Hal-hal tersebut dapat mengakibatkandeadlocksebab P0 memerlukan sumber daya R0 untukmenyelesaikan prosesnya, sedangkan R0 dialokasikan untuk P1. Di lain pihak P1 memerlukan sumberdaya R1 sedangkan R1 dialokasikan untuk P2. P2 memerlukan sumber daya R2 akan tetapi R2mengalokasikan sumber dayanya pada R3.

Dengan kata lain, tidak ada satu pun dari proses-proses tersebut yang dapat menyelesaikan tugasnyasebab sumber daya yang diperlukan sedang digunakan oleh proses lain. Sedangkan proses lain jugamemerlukan sumber daya lain. Semua sumber daya yang diperlukan oleh suatu proses tidak dapatdpenuhi sehingga proses tersebut tidak dapat melepaskan sumber daya yang telah dialokasikankepadanya. Dan terjadi proses tunggu-menunggu antarproses yang tidak dapat berakhir. Inilah yangdinamakandeadlock.

164

Page 185: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-12. Tanpadeadlock

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

Gambar 4-12memiliki perputaran tetapideadlocktidak terjadi. Pada gambar di atas, graf memiliki 1perputaran yaitu:P0 -> R1 -> P2 -> R0 -> P3 - > R2 -> P0

Graf di atas menunjukkan beberapa hal:

1. P0 meminta sumber daya R1.

2. R1 mengalokasikan sumber dayanya pada P2.

3. P2 meminta sumber daya R0.

4. R0 mengalokasikan sumber dayanya pada P3.

5. P3 meminta sumber daya R2.

6. R0 mengalokasikan sumber dayanya pada P3.

7. R1 mengalokasikan sumber dayanya pada P1.

Hal ini tidak menyebabkandeadlockwalaupun ada perputaran sebab semua sumber daya yanddiperlukan P1 dapat terpenuhi sehingga P1 dapat melepaskan semua sumber dayanya dan sumber dayatersebut dapat digunakan oleh proses lain.

165

Page 186: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.8.3. Algoritma Graf Alokasi Sumber Daya untuk MencegahDeadlock

Algoritma ini dapat dipakai untuk mencegahdeadlockjika sumber daya hanya memiliki satu instans.Pada algoritma ini ada komponen tambahan pada sisi yaitu claimed edge. Sama halnya dengan sisi yanglain, claimed edge menghubungkan antara sumber daya dan vertex.

Claimed edgePi -> Rj berarti bahwa proses Pi akan meminta sumber daya Rj pada suatu waktu.Claimededgesebenarnya merupakan sisi permintaan yang digamabarkan sebagai garis putus-putus. Ketika prosesPi memerlukan sumber daya Rj,claimed edgediubah menjadi sisi permintaan. Dan setelah proses Piselesai menggunakan Rj, sisi alokasi diubah kembali menjadiclaimed edge.

Dengan algoritma ini bentuk perputaran pada graf tidak dapat terjadi. Sebab untuk setiap perubahan yangterjadi akan diperiksa dengan algoritma deteksi perputaran. Algoritma ini memerlukan waktu n2 dalammendeteksi perputaran dimana n adalah jumlah proses dalam sistem.

Jika tidak ada perputaran dalam graf, maka sistem berada dalam status aman. Tetapi jika perputaranditemukan maka sistem berada dalam status tidak aman. Pada saat status tidak aman ini, proses Pi harusmenunggu sampai permintaan sumber dayanya dipenuhi.

Gambar 4-13. Graf alokasi sumber daya dalam status aman

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

Pada saat ini R1 sedang tidak mengalokasikan sumber dayanya, sehingga P1 dapat memperoleh sumberdaya R1. Namun, jikaclaimed edgediubah menjadi sisi permintaan dan kemudian diubah menjadi sisialokasi, hal ini dapat menyebabkan terjadinya perputaran (Gambar 4-14).

166

Page 187: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-14. Graf alokasi sumber daya dalam status tidak aman

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

4.8.4. Deteksi Deadlock dengan Menggunakan Graf TungguJika semua sumber daya hanya memilki satu instans,deadlockdapat dideteksi dengan mengubah grafalokasi sumber daya menjadi graf tunggu. Adapun caranya sebagai berikut:

1. Cari sumber daya Rm yang memberikan instansnya pada Pi dan Pj yang meminta sumber daya padaRm.

2. Hilangkan sumber daya Rm dan hubungkan sisi Pi dan Pj dengan arah yang bersesuaian yaituPj->Pi.

3. Lihat apakah terdapat perputaran pada graf tunggu?Deadlockterjadi jika dan hanya jika padagraf tunggu terdapat perputaran.

167

Page 188: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Gambar 4-15. Graf alokasi sumber daya

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

Gambar 4-16. Graf tunggu

sumber: Silberschatz,"Operating System Concepts -- Fourth Edition", John Wiley & Sons, 2003

Untuk mendeteksideadlock,sistem perlu membuat graf tunggu dan secara berkala memeriksa apakahada perputaran atau tidak. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n2, dimanan adalah jumlah vertex dalam graf alokasi sumber daya.

168

Page 189: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.9. RangkumanCritical sectionadalah suatu segmen kode yang mengakses data yang digunakan secara bersama-sama.Problemacritical sectionyaitu bagaimana menjamin bahwa jika suatu proses sedang menjalankancritical section, maka proses lain tidak boleh masuk ke dalamcritical sectiontersebut.

Solusi daricritical sectionharus memenuhi tiga syarat, yaitu: 1.mutual exclusion2. terjadi kemajuan(progress) 3. ada batas waktu tunggu (bounded waiting)

Solusi daricritical sectiondibagi menjadi dua jenis, yaitu solusi perangkat lunak dan solusi perangkatkeras. Solusi dengan perangkat lunak yaitu dengan menggunakan algoritma 1, algoritma 2 dan algoritma3 seperti yang telah dijelaskan. Dari ketiga algoritma itu, hanya algoritma 3 yang memenuhi ketiga syaratsolusicritical section. Untuk menyelesaikan masalahcritical sectionuntuk lebih dari dua proses, makadapat digunakan algoritma tukang roti.

Hardware merupakan faktor pendukung yang sangat berperan dalam proses sinkronisasi. Banyak daripara designer prosesor yang membuat fasilitasatomicinstruction dalam produknya. Ada 2 metode dalamsinkronisasi hardware, yaitu :Processor SynchronousdanMemory Synchronous. semafor merupakankonsep yang dibuat oleh Djikstra dengan mengandalkan sebuah variable integer dan fasilitas atomicinstruction dari prosesor. Semafor merupakan primitif dalam pembuatan alat sinkronisasi yang lebihtinggi lagi. Semafor dapat menyelesaikan permasalahan seperti :Critical section, sinkronisasi baris,counting semaphore, Dining philosopher, readers-writers, danproducer-consumer. Semafor banyakdipakai oleh para programmer, sebagai contoh dapat dilihat di pemrograman Win32API. Tetapi ternyataJavatm tidak menggunakan semaphore secara explisit namun memakai konsep monitor yang dibangundari semafor ini.

Critical Regionmerupakan bagian kode yang selalu dilaksanakan dalam kondisi mutual eksklusif.Perbedaannya adalah bahwa yang mengkondisikan mutual eksklusif adalah kompiler dan bukanprogrammer sehingga mengurangi resiko kesalahan programmer. Monitor merupakan kumpulan dariprosedur, variabel, dan struktur data dalam satu modul. Dengan mempergunakan monitor, sebuah prosesdapat memanggil prosedur di dalam monitor, tetapi tidak dapat mengakses struktur data (termasukvariabel- variabel) internal dalam monitor. Dengan karakteristik demikian, monitor dapat mengatasimanipulasi yang tidak sah terhadap variabel yang diakses bersama-sama karena variabel lokal hanyadapat diakses oleh prosedur lokal.

deadlockialah suatu kondisi permanen dimana proses tidak berjalan lagi ataupun tidak berkomunikasilagi antar proses. Perebutan sumber daya itu dapat dibagi 2: sumber daya yang bisa dipakaiberulang-ulang dan sumber daya yang sekali dibuat dan langsung dipakai.

Sebenarnyadeadlockdapat disebabkan oleh empat hal yaitu : 1. ProsesMutual Exclusion2. Prosesmemegang dan menunggu 3. ProsesPreemption4. Proses Menunggu dengan siklusdeadlock tertentu

PenanganandeadlockBanyak cara untuk menanggulangideadlock: 1. mengabaikan masalahdeadlock.2. mendeteksi dan memperbaiki 3. penghindaran yang terus menerus dan pengalokasian yang baik 4.pencegahan yang secara struktur bertentangan dengan 4 kondisi terjadinyadeadlock

Untuk mendeteksi deadlock dan menyelesaikannya dapat digunakan graf sebagai visualisasinya. Jikatidak adacycle, berarti tidak adadeadlock. Jika adacycle, ada potensi terjadideadlock. Resource dengan1 instans DANcyclemengakibatkandeadlock.

169

Page 190: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

4.10. Latihan

1. Sebutkan keterbatasan penggunaan Monitor!

Jawab: Tidak semua kompiler dapat menerapkan aturan mutual eksklusif dan tidak dapat diterapkanpada sistem terdistribusi.

2. Proses dapat meminta berbagai kombinasi dari sumber daya dibawah ini:CDROM, soundcarddanfloppy.Jelaskan tiga macam pencegahan deadlock skema yang meniadakan:

• Hold and Wait

• Circular Wait

• No Preemption

3. Sebutkan dan jelaskan tiga syarat untuk mengatasi problemacritical section!

Jawab: a. Mutual Exclusion. Jika prosesPi sedang menjalankancritical section(dari prosesPi ),maka tidak ada proses-proses lain yang dapat menjalankancritical sectiondari proses-prosestersebut. Dengan kata lain, tidak ada dua proses yang berada dicritical sectionpada saat yangbersamaan. b. Terjadi kemajuan (progress). Jika tidak ada proses yang sedang menjalankancriticalsectionnya dan jika terdapat lebih dari satu proses lain yang ingin masuk kecritical section,makahanya proses-proses yang tidak sedang menjalankanremainder sectionnya yang dapat berpartisipasidalam memutuskan siapa yang berikutnya yang akan masuk kecritical section,dan pemilihan siapayang berhak masuk kecritical sectionini tidak dapat ditunda secara tak terbatas (sehingga tidakterjadideadlock). c. Ada batas waktu tunggu (bounded waiting). Jika seandainya ada proses yangsedang menjalankancritical section,maka terdapat batasan waktu berapa lama suatu proses lainharus menunggu giliran untuk mengaksescritical section.Dengan adanya batas waktu tunggu akanmenjamin proses dapat mengakses kecritical section(tidak mengalamistarvation:prosesseolah-olah berhenti, menunggu request akses kecritical sectiondiperbolehkan).

4. Telah dibahas mengenai program dari counting semafor. lihatlah potongan program di bawah ini.

Subrutin Wait02 wait (S1);03 C--;04 if ( C < 0 ) {05 signal (S1);06 wait (S2);07 }08 signal (S1);Subrutin Signal09 wait (S1);10 C++;11 if (C <= 0)12 signal (S2);13 else14 signal (S1);

170

Page 191: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

a. Apakah yang terjadi bila pada baris nomor 11 diubah menjadi lebih besar dan sama dengan ? b.Apakah yang terjadi apabila pada baris 4 ditambahkan sama dengan sehingga menjadi <= ?

Jawab: a. Program tidak akan berjalan karena tanda lebih kecil mempunyai arti bahwa ada prosesyang sedang wait. Jadi arti dari baris 11 adalah jika ada proses yang sedang wait maka proses ygsekarang akan memanggil signal S2. b. Program tidak akan berjalandengan benar.Sebagai contohjika nilai awal semafor adalah 1, maka jika ada proses yang memanggil wait, seharusnya proses tsbmengunci semafor tersebut, tetapi kenyataannya semafor tsb akan terhenti seakan - akan ada proseslain yang sudah mengunci (padahal tidak ada).

5. Pada implementasi solusi dari masalahReaders/Writersdengan penulis diutamakan (solusi kedua),terlihat ada lima buah semafor yang digunakan. Mengapa perlu memakai lima semafor? Mengapasemaformutex1 diperlukan, terutama mengingat bahwa padamethod tersebut telah terdapatsemaforbaca ?

Jawaban:

Semaformutex1 pada solusi di atas diperlukan agar setiapthread pembaca tidak menunggu disemaforbaca . Bila banyak pembaca yang menunggu di semaforbaca , maka para penulis terkadangtidak mendapatkan prioritas yang diinginkan, karena tidak bisa melompati antrian di semaforbaca .Untuk lebih jelasnya baca rujukan[Stallings2001].

6. Dalam sebuah sistem terdapat 4 proses yang akan siap di ready queue. Proses(Waktu Datang,Permintaan R1, Permintaan R2) P1(0, 3, 2) P2(0, 2, 1) P3(1, 2, 2) P4(1, 2, 1) Jumlah sumber dayaR1 = 4, R2 = 3 Pemberian sumber daya berdasarkan aturan berikut:

1. Jika ada dua proses yang sedang meminta sumber daya dan sumber daya yang tersedia hanyamencukupi salah satu proses, maka proses dengan ID terkecil didahulukan. Jika sumber dayadapat memenuhi semua proses yang meminta, maka sumber daya yang tersedia diberikankepada semua proses yang membutuhkan.

2. Jika sumber daya yang dibutuhkan proses telah terpenuhi semuanya pada Tn, maka pada Tn+1sumber daya dilepas dan dapat dipakai oleh proses lain pada Tn+1

Jawab:

171

Page 192: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Graf alokasi sumber daya saat T0

Graf alokasi sumber daya saat T1

172

Page 193: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Graf alokasi sumber daya saat T2

Graf alokasi sumber daya saat T3

173

Page 194: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 4. Sinkronisasi dan Deadlock

Graf alokasi sumber daya saat T4

7. Jelaskan tentang keempat hal yang menyebabkandeadlock?

8. Bagaimana cara mengatasi keempat masalah tersebut ?

9. Jelaskan tentang algoritma bankir !

10. Diasumsikan proses P0 memegang sumber daya R2 dan R3, meminta sumber daya R4; P1menggunakan R4 dan meminta R1; P2 menggunakan R1 dan meminta R3. GambarkanWait-forGraph.Apakah sistem terjebak dalamdeadlock? Jika ya, tunjukkan proses mana yang menyebabkandeadlock.Jika tidak, tunjukkan urutan proses untuk selesai.

11. Buatlah implementasi dengan menggunakan monitor dari pemecahan Readers/Writers dengansolusi thread pembaca dan penulis mendapatkan prioritas saling bergantian.

12. User x telah menggunakan 7 printer dan harus menggunakan 10 printer. User y telah menggunakan1 printer dan akan memerlukan paling banyak 4 printer. User z telah menggunakan 2 printer danakan menggunakan paling banyak 4 printer. Setiap user pada saat ini meminta 1 printer. Kepadasiapakah OS akan memberikan grant printer tersebut dan tunjukkan "safe sequence" yang adasehingga tidak terjadi deadlock.

13. Pernyataan manakah yang benar mengenai deadlock:

i. Pencegahan deadlock lebih sulit dilakukan (implementasi) daripada menghindari deadlock.

ii. Deteksi deadlock dipilih karena utilisasi dari resources dapat lebih optimal.

iii. Salah satu prasyarat untuk melakukan deteksi deadlock adalah: hold and wait.

iv. Algoritma Banker’s (Djikstra) tidak dapat menghindari terjadinya deadlock.

v. Suatu sistem jika berada dalam keadaan tidak aman: "unsafe", berarti telah terjadi deadlock.

174

Page 195: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.1. Manajemen Memori

5.1.1. Latar BelakangMemori adalah pusat kegiatan pada sebuah komputer, karena setiap proses yang akan dijalankan, harusmelalui memori terlebih dahulu. CPU mengambil instruksi dari memori sesuai yang ada padaProgramCounter. Instruksi dapat berupa menempatkan / menyimpan dari / ke alamat di memori, penambahan,dan sebagainya. Tugas sistem operasi adalah mengatur peletakan banyak proses pada suatu memori.Memori harus dapat digunakan dengan baik, sehingga dapat memuat banyak proses dalam suatu waktu.Dalam manajemen memori ini, kita akan membahas bagaimana urutan alamat memori yang dibuat olehprogram yang berjalan.

5.1.2. Pemberian AlamatSebelum masuk ke memori, suatu proses harus menunggu. Hal ini disebut antrian masukan.Proses-proses ini akan berada dalam beberapa tahapan sebelum dieksekusi. Alamat-alamat yangdibutuhkan mungkin saja direpresentasikan dalam cara yang berbeda dalam tahapan-tahapan ini. Alamatdalam kode program masih berupa simbolik. Alamat ini akan diikat oleh kompilator ke alamat memoriyang dapat diakses. Kemudianlinkage editordanloader , akan mengikat alamat fisiknya. Setiappengikatan akan memetakan suatu ruang alamat ke lainnya.

Penjilidan alamat dapat terjadi pada 3 saat, yaitu :

• Waktu Kompilasi : Jika diketahui pada waktu kompilasi, dimana proses ditempatkan di memori.Untuk kemudian kode absolutnya dapat dibuat. Jika kemudian alamat awalnya berubah, maka harusdikompilasi ulang.

• Waktu pemanggilan : Jika tidak diketahui dimana poses ditempatkan di memori, maka kompilatorharus membuat kode yang dapat dialokasikan. Dalam kasus pengikatan akan ditunda sampai waktupemanggilan. Jika alamat awalnya berubah, kita hanya perlu menempatkan ulang kode, untukmenyesuaikan dengan perubahan.

• Waktu eksekusi: Jika proses dapat dipindahkan dari suatu segmen memori ke lainnya selamadieksekusi. Pengikatan akan ditunda sampairun-time.

5.1.3. Ruang Alamat Logika & FisikAlamat Logika adalah alamat yang dibentuk di CPU, disebut juga alamat virtual. Alamat fisik adalahalamat yang telihat oleh memori. Waktu kcompilasi dan waktu pemanggilan menghasilkan daerahdimana alamat logika dan alamat fisik sama. Sedangkan pada waktu eksekusi menghasilkan alamat fisikdan logika yang berbeda. Kumpulan alamat logika yang dibuat oleh program adalah ruang alamat logika.

175

Page 196: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Kumpulan alamat fisik yang berkorespondensi dengan alamat logika disebut ruang alamat fisik. Untukmengubah dari alamat logika ke alamat fisik diperlukan suatu perangkat keras yang bernama MMU (Memory Management Unit).

Gambar 5-1. Memory Management Unit

ini merupakan skema dari MMU

Register utamanya disebut register relokasi. Nilai pada register relokasi bertambah setiap alamat dibuatoleh proses pengguna, pada waktu yang sama alamat ini dikirim ke memori. Program pengguna tidakdapat langsung mengakses memori. Ketika ada program yang menunjuk ke alamat memori, kemudianmengoperasikannya, dan menaruh lagi di memori, akan di lokasikan awal oleh MMU, karena programpengguna hanya berinterkasi dengan alamat logika. Pengubahan dari alamat logika ke alamat fisik adalahpusat dari manajemen memori.

5.1.4. Pemanggilan DinamisTelah kita ketahui seluruh proses dan data berada memori fisik ketika dieksekusi. Ukuran dari memorifisik terbatas. Untuk mendapatkan utilisasi ruang memori yang baik, kita melakukan pemanggilandinamis. Dengan pemanggilan dinamis, sebuah rutin tidak akan dipanggil sampai diperlukan. Semuarutin diletakan didisk , dalam format yang dapat dialokasikan ulang. Program utama di tempatkan di

176

Page 197: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

memori dan dieksekusi. Jika sebuah rutin memanggil rutin lainnya, maka akan dicek dulu apakah rutinyang dipanggil ada di dalam memori atau tidak, jika tidak ada makalinkage loaderdipanggil untukmenempatkan rutin yang diinginkan ke memori dan memperbaharui tabel alamat program untukmenyesuaikan perubahan. Kemudian kontrol diletakan pada rutin yang baru dipanggil.

Keuntungan dari pemanggilan dinamis adalah rutin yang tidak digunakan tidak pernah dipanggil.Metode ini berguna untuk kode dalam jumlah banyak, ketika muncul kasus-kasus yang tidak lazim,seperti rutin yang salah. Dalam kode yang besar, walaupun ukuran kode besar, tapi yang dipanggil dapatjauh lebih kecil.

Pemanggilan Dinamis tidak memerlukan bantuan sistem operasi. Ini adalah tanggung jawab parapengguna untuk merancang program yang mengambil keuntungan dari metode ini. Sistem operasi dapatmembantu pembuat program dengan menyediakan kumpulan data rutin untuk mengimplementasipemanggilan dinamis.

5.1.5. Penghubungan Dinamis dan Perpustakaan BersamaPada proses dengan banyak langkah, ditemukan juga penghubungan-penghubungan perpustakaan yangdinamis, dimana menghubungkan semua rutin yang ada di perpustakaan. Beberapa sistem operasi hanyamendukung penghubungan yang statis, dimana seluruh rutin yang ada dihubungkan ke dalam suaturuang alamat. Setiap program memiliki salinan dari seluruh perpustakaan. Konsep penghubungandinamis, serupa dengan konsep pemanggilan dinamis. Pemanggilan lebih banyak ditunda selama waktueksekusi, dari pada lama penundaan oleh penghubungan dinamis. Keistimewaan ini biasanya digunakandalam sistem kumpulan perpustakaan, seperti perpustakaan bahasa subrutin. Tanpa fasilitas ini, semuaprogram dalam sebuah sistem, harus mempunyai salinan dari pustaka bahasa mereka (atau setidaknyareferensi rutin oleh program) termasuk dalam tampilan yang dapat dieksekusi. Kebutuhan ini sangatboros baik untukdisk , maupun memori utama. Dengan pemanggilan dinamis, sebuah potongandimasukkan ke dalam tampilan untuk setiap rujukan perpustakaan subrutin. Potongan ini adalah sebuahbagian kecil dari kode yang menunjukan bagaimana mealokasikan perpustakaan rutin di memori dengantepat, atau bagaimana menempatkan pustaka jika rutin belum ada.

Ketika potongan ini dieksekusi, dia akan memeriksa dan melihat apakah rutin yang dibutuhkan sudahada di memori. Jika rutin yang dibutuhkan tidak ada di memori, program akan menempatkannya kememori. Jika rutin yang dibutuhkan ada di memori, maka potongan akan mengganti dirinya denganalamat dari rutin, dan mengeksekusi rutin. Demikianlah, berikutnya ketika segmentasi kode dicapai, rutinpada perpustakaan dieksekusi secara langsung, dengan begini tidak ada biaya untuk penghubungandinamis. Dalam skema ini semua proses yang menggunakan sebuah kumpulan bahasa, mengeksekusihanya satu dari salinan kode perpustakaan.

Fasilitas ini dapat diperluas menjadi pembaharuan perpustakaan. Sebuah kumpulan data dapatditempatkan lagi dengan versi yang lebih baru dan semua program yang merujuk ke perpustakaan akansecara otomatis menggunakan versi yang baru. Tanpa pemanggilan dinamis, semua program akan akanmembutuhkan pemanggilan kembali, untuk dapat mengakses perpustakaan yang baru. Jadi semuaprogram tidak secara sengaja mengeksekusi yang baru, perubahan versi perpustakaan, informasi versidapat dimasukkan ke dalam memori, dan setiap program menggunakan informasi versi untukmemutuskan versi mana yang akan digunakan dari salinan perpustakaan. Sedikit perubahan akan tetapmeggunakan nomor versi yang sama, sedangkan perubahan besar akan menambah satu versi sebelumnya.Karenanya program yang dikompilasi dengan versi yang baru akan dipengaruhi dengan perubahan yangterdapat di dalamnya. Program lain yang berhubungan sebelum pustaka baru diinstal, akan terus

177

Page 198: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

menggunakan pustaka lama. Sistem ini juga dikenal sebagai berbagi pustaka. Jadi seluruh pustaka yangada dapat digunakan bersama-sama. Sistem seperti ini membutuhkan bantuan sistem operasi.

5.1.6. OverlaysOverlaysberguna untuk memasukkan suatu proses yang membutuhkan memori lebih besar dari yangtersedia. Idenya untuk menjaga agar di dalam memori berisi hanya instruksi dan data yang dibutuhkandalam satuan waktu. Rutinnya dimasukkan ke memori secara bergantian.

Gambar 5-2. Two-Pass Assembler

ini merupakan skema daritwo-Pass Assembler

Sebagai contoh, sebuahtwo-pass assembler. selama pass1 dibangun sebuah tabel simbol, kemudianselama pass2, akan membuat kode bahasa mesin. kita dapat mempartisi sebuahassemblermenjadi kodepass1, kode pass2, dan simbol tabel, dan rutine biasa digunakan untuk kedua pass1 dan pass2.

Untuk menempatkan semuanya sekaligus, kita akan membutuhkan 200K memori. Jika hanya 150K yangtersedia, kita tidak dapat menjalankan proses. Bagaimana pun perhatikan bahwa pass1 dan pass2 tidakharus berada di memori pada saat yang sama. Kita mendefinisikan duaoverlays. OverlaysA untukpass1, tabel simbol dan rutin,overlays2 untuk simbol tabel, rutin, dan pass2.

178

Page 199: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Kita menambahkan sebuahdriver overlays(10K) dan mulai denganoverlaysA di memori. Ketikaselesai pass1, pindah kedriver , dan membacaoverlaysB ke dalam memori, menimpaoverlaysA, danmengirim kontrol ke pass2.OverlaysA butuh hanya 120K, dan B membutuhkan 150K memori. Kitasekarang dapat menjalankanassemblerdalam 150K memori. Pemanggilan akan lebih cepat, karena lebihsedikit data yang ditransfer sebelum eksekusi dimulai. Jalan program akan lebih lambat, karena ekstraI/O dari kodeoverlaysB melaluioverlaysA.

Seperti dalam pemanggilan dinamis,overlaystidak membutuhkan bantuan dari sistem operasi.Implementasi dapat dilakukan secara lengkap oleh pengguna dengan berkas struktur yang sederhana,membaca dari berkas ke memori, dan pindah dari memori tersebut, dan mengeksekusi instruksi yangbaru dibaca. Sistem operasi hanya memperhatikan jika ada lebih banyak I/O dari biasanya.

Di sisi lain pemrogram harus merancang program dengan strukturoverlaysyang layak. Tugas inimembutuhkan pengetahuan yang lengkap tentang struktur dari program, kode dan struktur data.

Pemakaian darioverlays, dibatasi oleh komputer mikro, dan sistem lain yang mempunyai batasanjumlah memori fisik, dan kurangnya dukungan perangkat keras, untuk teknik yang lebih maju. Teknikotomatis menjalankan program besar dalam dalam jumlah memori fisik yang terbatas, lebih diutamakan.

5.2. Penukaran dan Alokasi Memori

5.2.1. PenukaranSebuah proses harus berada di dalam memori untuk dapat dieksekusi. Sebuah proses, bagaimanapunjuga, dapat ditukar sementara keluar memori ke sebuah penyimpanan sementara , dan kemudian dibawamasuk lagi ke memori untuk melanjutkan pengeksekusian. Sebagai contoh, asumsikan sebuahmultiprogramming environment, dengan penjadualan algoritma penjadualan CPUround-robin. Ketikakuantum habis, pengatur memori akan mulai menukar proses yang telah selesai, dan memasukkan prosesyang lain ke dalam memori yang sudah bebas. Sementara di saat yang bersamaan, penjadual CPU akanmengalokasikan waktu untuk proses lain di dalam memori. Ketika waktu kuantum setiap proses sudahhabis, proses tersebut akan ditukar dengan proses lain. Idealnya, manajer memori dapat melakukanpenukaran proses-proses tersebut dengan cukup cepat sehingga beberapa proses akan selalu berada didalam memori dan siap untuk dieksekusi saat penjadual CPU hendak menjadual CPU. Lama kuantumpun harus cukup besar sehingga jumlah komputasi yang dilakukan selama terjadi pertukaran cukupmasuk akal.

Variasi dari kebijakan swapping ini, digunakan untuk algoritma penjadualan berbasis prioritas. Jikaproses dengan prioritas lebih tinggi tiba dan meminta layanan, manajer memori dapat menukar keluarproses-proses yang prioritasnya rendah, sehingga proses-proses yang prioritasnya lebih tinggi tersebutdapat dieksekusi. Setelah proses-proses yang memiliki prioritas lebih tinggi tersebut selesai dieksekusi,proses-proses dengan prioritas rendah dapat ditukar kembali ke dalam memori dan dilanjutkaneksekusinya. Cara ini disebut juga dengan metoderoll out, roll in .

Pada umumnya, proses yang telah ditukar keluar akan ditukar kembali menempati ruang memori yangsama dengan yang ditempatinya sebelum proses tersebut keluar dari memori. Pembatasan ini dinyatakanmenurut metode pemberian alamat. Apabila pemberian alamat dilakukan pada saat waktu pembuatanatau waktu pemanggilan , maka proses tersebut tidak dapat dipindahkan ke lokasi memori lain. Tetapiapabila pemberian alamat dilakukan pada saat waktu eksekusi , maka proses tersebut dapat ditukar

179

Page 200: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

kembali ke dalam ruang memori yang berbeda, karena alamat fisiknya dihitung pada saatpengeksekusian .

Penukaran membutuhkan sebuah penyimpanan sementara. Penyimpanan sementara pada umumnyaadalah sebuahfast disk, dan harus cukup untuk menampung salinan dari seluruh gambaran memoriuntuk semua pengguna, dan harus mendukung akses langsung terhadap gambaran memori tersebut.Sistem mengaturready queueyang berisikan semua proses yang gambaran memorinya berada di memoridan siap untuk dijalankan. Saat sebuah penjadual CPU ingin menjalankan sebuah proses, ia akanmemeriksa apakah proses yang mengantri diready queuetersebut sudah berada di dalam memoritersebut atau belum. Apabila belum, penjadual CPU akan melakukan penukaran keluar terhadapproses-proses yang berada di dalam memori sehingga tersedia tempat untuk memasukkan proses yanghendak dieksekusi tersebut. Setelah ituregisterdikembalikan seperti semula dan proses yang diinginkanakan dieksekusi.

Waktu pergantian isi dalam sebuah sistem yang melakukan penukaran pada umumnya cukup tinggi.Untuk mendapatkan gambaran mengenai waktu pergantian isi, akan diilustrasikan sebuah contoh.Misalkan ada sebuah proses sebesar 1 MB, dan media yang digunakan sebagai penyimpanan sementaraadalah sebuahhard diskdengan kecepatan transfer 5 MBps. Waktu yang dibutuhkan untuk mentransferproses 1 MB tersebut dari atau ke dalam memori adalah:

1000 KB / 5000 KBps = 1/5 detik = 200 milidetik

Apabila diasumsikanhead seektidak dibutuhkan dan rata-rata waktu latensi adalah 8 milidetik, satuproses penukaran memakan waktu 208 milidetik. Karena kita harus melakukan proses penukaransebanyak 2 kali, (memasukkan dan mengeluarkan dari memori), maka keseluruhan waktu yangdibutuhkan adalah 416 milidetik.

Untuk penggunaan CPU yang efisien, kita menginginkan waktu eksekusi kita relatif panjang apabiladiabndingkan dengan waktu penukaran kita. Sehingga, misalnya dalam penjuadualan CPU menggunakanmetoderound robin, kuantum yang kita tetapkan harus lebih besar dari 416 milidetik.

Bagian utama dari waktu penukaran adalah waktu transfer. Besar waktu transfer berhubungan langsungdengan jumlah memori yang di-tukar . Jika kita mempunyai sebuah computer dengan memori utama 128MB dan sistem operasi memakan tempat 5 MB, besar proses pengguna maksimal adalah 123 MB.Bagaimanapun juga, proses pengguna pada kenyataannya dapat berukuran jauh lebih kecil dari angkatersebut. Bahkan terkadang hanya berukuran 1 MB. Proses sebesar 1 MB dapat ditukar hanya dalamwaktu 208 milidetik, jauh lebih cepat dibandingkan menukar proses sebesar 123 MB yang akanmenghabiskan waktu 24.6 detik. Oleh karena itu, sangatlah berguna apabila kita mengetahui dengan baikberapa besar memori yang dipakai oleh proses pengguna, bukan sekedar dengan perkiraan saja. Setelahitu, kita dapat mengurangi besar waktu penukaran dengan cara hanya menukar proses-proses yangbenar-benar membutuhkannya. Agar metode ini bisa dijalankan dengan efektif, pengguna harus menjagaagar sistem selalu memiliki informasi mengenai perubahan kebutuhan memori. Oleh karena itu, prosesyang membutuhkan memori dinamis harus melakukan pemanggilan sistem (permintaan memori danpelepasan memori) untuk memberikan informasi kepada sistem operasi akan perubahan kebutuhanmemori.

Penukaran dipengaruhi oleh banyak faktor. Jika kita hendak menukar suatu proses, kita harus yakinbahwa proses tersebut siap. Hal yang perlu diperhatikan adalah kemungkinan proses tersebut sedangmenunggu I/O. Apabila I/O secara asinkron mengakses memori pengguna untuk I/Obuffer , maka prosestersebut tidak dapat ditukar. Bayangkan apabila sebuah operasi I/O berada dalam antrian karenaperalatan I/O-nya sedang sibuk. Kemudian kita hendak mengeluarkan proses P1 dan memasukkan prosesP2. Operasi I/O mungkin akan berusaha untuk memakai memori yang sekarang seharusnya akan

180

Page 201: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

ditempati oleh P2. Cara untuk mengatasi masalah ini adalah:

1. Hindari menukar proses yang sedang menunggu I/O.

2. Lakukan eksekusi operasi I/O hanya dibuffersistem operasi.

Hal tersebut akan menjaga agar transfer antarabuffersistem operasi dan proses memori hanya terjadisaat si proses ditukar kedalam.

Pada masa sekarang ini, proses penukaran secara dasar hanya digunakan di sedikit sistem. Hal inidikarenakan penukaran menghabiskan terlalu banyak waktu tukar dan memberikan waktu eksekusi yangterlalu kecil sebagai solusi dari manajemen memori. Akan tetapi, banyak sistem yang menggunakanversi modifikasi dari metode penukaran ini.

Salah satu sistem operasi yang menggunakan versi modifikasi dari metode penukaran ini adalah UNIX.Penukaran berada dalam keadaan non-aktif, sampai apabila ada banyak proses yang berjalan yangmenggunakan memori yang besar. Penukaran akan berhenti lagi apabila jumlah proses yang berjalansudah berkurang.

Pada awal pengembangan komputer pribadi, tidak banyak perangkat keras (atau sistem operasi yangmemanfaatkan perangkat keras) yang dapat mengimplementasikan memori manajemen yang baik,melainkan digunakan untuk menjalankan banyak proses berukuran besar dengan menggunakan versimodifikasi dari metode penukaran . Salah satu contoh yang baik adalah Microsoft Windows 3.1, yangmendukung eksekusi proses berkesinambungan. Apabila suatu proses baru hendak dijalankan dan tidakterdapat cukup memori, proses yang lama perlu dimasukkan ke dalamdisk . Sistem operasi ini,bagaimanapun juga, tidak mendukung penukaran secara keseluruhan karena yang lebih berperanmenentukan kapan proses penukaran akan dilakukan adalah pengguna dan bukan penjadual CPU.Proses-proses yang sudah dikeluarkan akan tetap berada di luar memori sampai pengguna memilihproses yang hendak dijalankan. Sistem-sistem operasi Microsoft selanjutnya, seperti misalnya WindowsNT, memanfaatkan fitur Unit Manajemen Memori.

5.2.2. Pengalokasian Memori

5.2.2.1. Alokasi Memori Berkesinambungan

Memori utama harus dapat melayani baik sistem operasi maupun proses pengguna. Oleh karena itu kitaharus mengalokasikan pembagian memori seefisien mungkin. Salah satunya adalah dengan caraalokasimemori berkesinambungan . Alokasi memori berkesinambungan berarti alamat memori diberikankepada proses secara berurutan dari kecil ke besar. Keuntungan menggunakan alokasi memoriberkesinambungan dibandingkan menggunakan alokasi memori tidak berkesinambungan adalah:

1. Sederhana

2. Cepat

3. Mendukung proteksi memori

Sedangkan kerugian dari menggunakan alokasi memori berkesinambungan adalah apabila tidak semuaproses dialokasikan di waktu yang sama, akan menjadi sangat tidak efektif sehingga mempercepathabisnya memori.

181

Page 202: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Alokasi memori berkesinambungan dapat dilakukan baik menggunakan sistem partisi banyak, maupunmenggunakan sistem partisi tunggal. Sistem partisi tunggal berarti alamat memori yang akandialokasikan untuk proses adalah alamat memori pertama setelah pengalokasian sebelumnya. Sedangkansistem partisi banyak berarti sistem operasi menyimpan informasi tentang semua bagian memori yangtersedia untuk dapat diisi oleh proses-proses (disebut lubang ). Sistem partisi banyak kemudian dibagilagi menjadi sistem partisi banyak tetap, dan sistem partisi banyak dinamis. Hal yang membedakankeduanya adalah untuk sistem partisi banyak tetap, memori dipartisi menjadi blok-blok yang ukurannyatetap yang ditentukan dari awal. Sedangkan sistem partisi banyak dinamis artinya memori dipartisimenjadi bagian-bagian dengan jumlah dan besar yang tidak tentu. Untuk selanjutnya, kita akanmemfokuskan pembahasan pada sistem partisi banyak.

Sistem operasi menyimpan sebuah tabel yang menunjukkan bagian mana dari memori yangmemungkinkan untuk menyimpan proses, dan bagian mana yang sudah diisi. Pada intinya, seluruhmemori dapat diisi oleh proses pengguna. Saat sebuah proses datang dan membutuhkan memori, CPUakan mencari lubang yang cukup besar untuk menampung proses tersebut. Setelah menemukannya, CPUakan mengalokasikan memori sebanyak yang dibutuhkan oleh proses tersebut, dan mempersiapkansisanya untuk menampung proses-proses yang akan datang kemudian (seandainya ada).

Saat proses memasuki sistem, proses akan dimasukkan ke dalam antrian masukan. Sistem operasi akanmenyimpan besar memori yang dibutuhkan oleh setiap proses dan jumlah memori kosong yang tersedia,untuk menentukan proses mana yang dapat diberikan alokasi memori. Setelah sebuah proses mendapatalokasi memori, proses tersebut akan dimasukkan ke dalam memori. Setelah proses tersebut dimatikan,proses tersebut akan melepas memori tempat dia berada, yang mana dapat diisi kembali oleh proses laindari antrian masukan.

Sistem operasi setiap saat selalu memiliki catatan jumlah memori yang tersedia dan antrian masukan.Sistem operasi dapat mengatur antrian masukan berdasarkan algoritma penjadualan yang digunakan.Memori dialokasikan untuk proses sampai akhirnya kebutuhan memori dari proses selanjutnya tidakdapat dipenuhi (tidak ada lubang yang cukup besar untuk menampung proses tersebut). Sistem operasikemudian dapat menunggu sampai ada blok memori cukup besar yang kosong, atau dapat mencariproses lain di antrian masukan yang kebutuhan memorinya memenuhi jumlah memori yang tersedia.

Pada umumnya, kumpulan lubang-lubang dalam berbagai ukuran tersebar di seluruh memori sepanjangwaktu. Apabila ada proses yang datang, sistem operasi akan mencari lubang yang cukup besar untukmenampung memori tersebut. Apabila lubang yang tersedia terlalu besar, akan dipecah menjadi 2. Satubagian akan dialokasikan untuk menerima proses tersebut, sementara bagian lainnya tidak digunakan dansiap menampung proses lain. Setelah proses selesai, proses tersebut akan melepas memori danmengembalikannya sebagai lubang-lubang . Apabila ada 2 lubang yang kecil yang berdekatan, keduanyaakan bergabung untuk membentuk lubang yang lebih besar. Pada saat ini, sistem harus memeriksaapakah ada proses yang menunggu yang dapat dimasukkan ke dalam ruang memori yang baru terbentuktersebut.

Hal ini disebutPermasalahan alokasi penyimpanan dinamis,yakni bagaimana memenuhi permintaansebesarn dari kumpulan lubang-lubang yang tersedia. Ada berbagai solusi untuk mengatasi hal ini, yaitu:

1. First fit : Mengalokasikan lubang pertama ditemukan yang besarnya mencukupi. Pencarian dimulaidari awal.

2. Best fit: Mengalokasikan lubang dengan besar minimum yang mencukupi permintaan.

3. Next fit: Mengalokasikan lubang pertama ditemukan yang besarnya mencukupi. Pencarian dimulaidari akhir pencarian sebelumnya.

182

Page 203: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

4. Worst fit: Mengalokasikan lubang terbesar yang ada.

Gambar 5-3. Permasalahan alokasi penyimpanan dinamis

Disadur dari berbagai sumber di internet

Memilih yang terbaik diantara keempat metode diatas adalah sepenuhnya tergantung kepada pengguna ,karena setiap metode memiliki kelebihan dan kekurangan masing-masing. Menggunakanbest fitdanworst fitberarti kita harus selalu memulai pencarian lubang dari awal, kecuali apabila lubang sudahdisusun berdasarkan ukuran. Metodeworst fitakan menghasilkan sisa lubang yang terbesar, sementarametodebest fitakan menghasilkan sisa lubang yang terkecil.

5.2.2.2. Fragmentasi

Fragmentasi adalah munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaandari proses. Fragmentasi dapat berupa fragmentasi internal maupun fragmentasi eksternal. Fragmentasiekstern muncul apabila jumlah keseluruhan memori kosong yang tersedia memang mencukupi untukmenampung permintaan tempat dari proses, tetapi letaknya tidak berkesinambungan atau terpecahmenjadi beberapa bagian kecil sehingga proses tidak dapat masuk. Sedangkan fragmentasi intern munculapabila jumlah memori yang diberikan oleh penjadual CPU untuk ditempati proses lebih besar daripadayang diminta proses karena adanya selisih antara permintaan proses dengan alokasi lubang yang sudahditetapkan.

Algoritma alokasi penyimpanan dinamis manapun yang digunakan, tetap tidak bisa menutupkemungkinan terjadinya fragmentasi. Bahkan hal ini bisa menjadi fatal. Salah satu kondisi terburuk

183

Page 204: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

adalah apabila kita memiliki memori terbuang setiap 2 proses. Apabila semua memori terbuang itudigabungkan, bukan tidak mungkin akan cukup untuk menampung sebuah proses. Sebuah contohstatistik menunjukkan bahwa saat menggunakan metodefirst fit , bahkan setelah dioptimisasi, dari Nblok teralokasi, sebanyak 0.5N blok lain akan terbuang karena fragmentasi. Jumlah sebanyak itu berartikurang lebih setengah dari memori tidak dapat digunakan. Hal ini disebut denganaturan 50% .

Fragmentasi ekstern dapat diatasi dengan beberapa cara, diantaranya adalah:

1. Pemadatan, yaitu mengatur kembali isi memori agar memori yang kosong diletakkan bersama disuatu bagian yang besar, sehingga proses dapat masuk ke ruang memori kosong tersebut.

2. Penghalamanan

3. Segmentasi

Fragmentasi intern hampir tidak dapat dihindarkan apabila kita menggunakan sistem partisi banyakberukuran tetap, mengingat besarholeyang disediakan selalu tetap.

5.3. Pemberian HalamanYang dimaksud dengan pemberian halaman adalah suatu metode yang memungkinkan suatu alamat fisikmemori yang tersedia dapat tidak berurutan. Pemberian halaman bisa menjadi solusi untuk pemecahanmasalah luar. Untuk bisa mengimplementasikan solusi ini adalah melalui pengunaan dari skemapemberian halaman. Dengan pemberian halaman bisa mencegah masalah penting dari pengepasan besarukuran memori yang bervariasi kedalam penyimpanan cadangan. Ketika beberapa pecahan kode daridata yang tersisa di memori utama perlu untuk ditukar keluar, harus ditemukan ruang untukpenyimpanan cadangan. Masalah pemecahan kode didiskusikan dengan kaitan bahwa pengaksesannyalebih lambat. Biasanya bagian yang menunjang untuk pemberian halaman telah ditangani olehhardware.Bagaimanapun, desain yang ada baru2 ini telah mengimplementasikan dengan menggabungkanhardware dan sistem operasi, terutama pada 64 bitmicroprocessor.

5.3.1. Metode DasarJadi metode dasar yang digunakan adalah dengan memecah memori fisik menjadi blok-blok berukurantetap yang akan disebut sebagai frame. selanjutnya memori logis juga dipecah menjadi blok2 denganukuran yang sama disebut sebagai halaman. Selanjutnya kita membuat suatu tabel halaman yang akanmenterjemahkan memori logis kita kedalam memori fisik. Jika suatu proses ingin dieksekusi makamemori logis akan melihat dimanakah dia akan ditempatkan di memori fisik dengan melihat kedalamtabel halamannya.

Untuk jelasnya bisa dilihat pada gambar 1. Kita lihat bahwa setiap alamat yang dihasilkan oleh CPUdibagi-bagi menjadi 2 bagian yaitu sebuah nomor halaman (p) dan sebuah offset halaman (d). Nomorhalaman ini akan digunakan sebagai indeks untuk tabel halaman. Tabel halaman mengandung basisalamat dari tiap2 halaman di memori fisik. Basis ini dikombinasikan dengan offset halaman untukmenentukan alamat memori fisik yang dikirim ke unit memori.

sumber : silberschatz

184

Page 205: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-4. Penerjemahan Halaman

5.3.2. Dukungan Perangkat KerasSetiap sistem operasi mempunyai caranya tersendiri untuk menyimpan tabel halaman. Biasanya sistemoperasi mengalokasikan sebuah tabel halaman untuk setiap proses. sebuah penunjuk ke tabel halamandisimpan dengan nilai register yang lain didalam blok pengontrol proses.

salah satu dukungan perangkat keras adalah dengan menggunakan apa yang dinamakanTLB(translation look aside-buffer). TLB adalah asosiatif, memori berkecepatan tinggi.

setiap bagian di TLB terdiri dari kunci dan nilai. Ketika kita ingin mendapatkan alamat fisik memorimaka alamat logikal dari CPU akan dibandingkan dengan nilai yang ada di TLB. jika nilainya ketemumaka dinamakan TLBhit dan jika nilainya tidak ketemu dinamakan TLBmiss. Biasanya ukurannyakecil antara 64 sampai 1024.

persentasi dari beberapa kali TLBhit adalah disebuthit ratio. 80% darihit ratio adalah kita menemukannomor halaman yang ingin kita cari didalam TLB sebesar 80%. Jika waktu akses ke TLB memakanwaktu 20 nanosekon dan akses ke memori memakan waktu sebesar 100 nanosekon maka total waktu kitamemetakan memori adalah 120 nanosekon jika TLBhit. dan jika TLBmissmaka total waktunya adalah220 nanosekon. Jadi untuk mendapatkan waktu akses memori yang efektif maka kita harusmembagi-bagi tiap kasus berdasarkan kemungkinannya :

waktu akses yang efektif = 80% x 120 x 20% x 220 = 140 nanosekon

5.3.3. ProteksiProteksi memori dilingkungan halaman bisa dilakukan dengan cara memproteksi bit-bit yangberhubungan dengan setiap frame. Biasanya bit-bit ini disimpan didalam sebuah tabel halaman. satu bit

185

Page 206: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

bisa didefinisikan sebagai baca-tulis atau hanya baca saja. setiap referensi ke memori menggunakan tabelhalaman untuk menemukan nomor frame yang benar. pada saat alamat fisik sedang dihitung, bit proteksibisa mengecek bahwa kita tidak bisa menulis ke mode tulis saja.

5.3.4. Keuntungan dan Kerugian Pemberian Halaman

• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih besar

Keuntungan :

Akses memori akan relatif lebih cepat

Kerugian :

Kemungkinan terjadinya fragmentasi intern sangat besar

• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih besar

Keuntungan :

Kemungkinan terjadinya internal Framentasi akan menjadi lebih kecil

Kerugian :

Akses memori akan relatif lebih lambat

5.4. Struktur Tabel HalamanSebagian besar komputer modern memiliki perangkat keras istimewa yaituunit manajemen memori(MMU) . Unit tersebut berada diantara CPU dan unit memori. Jika CPU ingin mengakses memori(misalnya untuk memanggil suatu instruksi atau memanggil dan menyimpan suatu data), maka CPUmengirimkan alamat memori yang bersangkutan ke MMU, yang akan menerjemahkannya ke alamat lainsebelum melanjutkannya ke unit memori. Alamat yang dihasilkan oleh CPU, setelah adanya pemberianindeks atau aritmatik ragam pengalamatan lainnya disebutalamat logis (virtual address). Sedangkanalamat yang didapatkan setelah diterjemahkan oleh CPU disebutalamat fisik (physical address).

Biasanya, penterjemahan dilakukan di granularitas dari suatu halaman. Setiap halaman mempunyaipangkat 2 bytes, diantara 1024 dan 8192 bytes. Jika alamat logisp dipetakan ke alamat fisikf (dimanapadalah kelipatan dari ukuran halaman), maka alamatp+odipetakan ke alamat fisikf+o untuk setiap ofseto kurang dari ukuran halaman. Dengan kata lain, setiap halaman dipetakan kecontigous regiondi alamatfisik yang disebutframe.

MMU yang mengizinkancontigous regiondari alamat logis dipetakan keframeyang tersebar disekitaralamat fisik membuat sistem operasi lebih mudah pekerjaannya saat mengalokasikan memori. Lebihpenting lagi, MMU juga mengizinkan halaman yang tidak sering digunakan bisa disimpan didisk. Cara

186

Page 207: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

kerjanya adalah sbb: Tabel yang digunakan oleh MMU mempunyai bit sahih untuk setiap halaman dibagian alamat logis. Jika bit tersebut di set, maka penterjemahan oleh alamat logis di halaman ituberjalan normal. Akan tetapi jika dihapus, adanya usaha dari CPU untuk mengakses suatu alamat dihalaman tersebut menghasilkan suatu interupsi yang disebutpage fault trap. Sistem operasi telahmempunyaiinterrupt handleruntuk kesalahan halaman, juga bisa digunakan untuk mengatasi interupsijenis yang lain.Handler inilah yang akan bekerja untuk mendapatkan halaman yang diminta ke memori.

Untuk lebih jelasnya, saat kesalahan halaman dihasilkan untuk halamanp1, interrupt handlermelakukan hal-hal berikut ini:

• Mencari dimana isi dari halamanp1disimpan didisk. Sistem operasi menyimpan informasi ini didalam tabel. Ada kemungkinan bahwa halaman tersebut tidak ada dimana-mana, misalnya pada kasussaat referensi memori adalahbug. Pada kasus tersebut , sistem operasi mengambil beberapa langkahkerja seperti mematikan prosesnya. Dan jika diasumsikan halamannya berada dalamdisk:

• Mencari halaman lain yaitup2yang dipetakan keframelain f dari alamat fisik yang tidak banyakdipergunakan.

• Menyalin isi dariframef keluar daridisk.

• Menghapus bit sahih dari halamanp2sehingga sebagian referensi dari halamanp2akan menyebabkankesalahan halaman.

• Menyalin data halamanp1daridiskke framef .

• Updatetabel MMU sehingga halamanp1dipetakan keframef .

• Kembali dari interupsi dan mengizinkan CPU mengulang instruksi yang menyebabkan interupsitersebut.

187

Page 208: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-5. Struktur MMU

Sumber: Operating System karya Avi Silberschatz, Peter Galvin, dan Greg Gagne, 2000

5.4.1. Tabel HalamanPada dasarnya MMU terdiri dari tabel halaman yang merupakan sebuah rangkaian array darimasukan-masukan (entries) yang mempunyai indeks berupa nomor halaman (p). Setiap masukan terdiridariflags(contohnya bit sahih dan nomorframe). Alamat fisik dibentuk dengan menggabungkan nomorframedengan ofset, yaitu bit paling rendah dari alamat logis.

Setiap sistem operasi mempunyai metodenya sendiri untuk menyimpan tabel halaman. Sebagian besarmengalokasikan tabel halaman untuk setiap proses. Penunjuk ke tabel halaman disimpan dengan nilairegister yang lain (seperti pencacah instruksi) di blok kontrol proses. Ketika pelaksanadispatchermengatakan untuk memulai proses, maka harus disimpan kembali register-register pengguna danmendefinisikan nilai tabel halaman perangkat keras yang benar dari tempat penyimpanan tabel halamandari pengguna.

188

Page 209: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-6. Skema Tabel Halaman 2 tingkat

http://www.cs.wisc.edu/~solomon/cs537/paging.html

5.4.2. Pemberian Page Secara MultilevelIdenya adalah dengan menambahkan tingkatan secara tidak langsung dan memiliki tabel halaman yangterdiri dari pointer-pointer ke tabel halaman.

• Bayangkan suatu tabel halaman yang besar.

• Panggil tabel halaman dua tingkat dan potong menjadi bagian-bagian untuk setiap ukuran darihalaman tersebut.

• Sebagai catatan bahwa anda bisa mendapatkan banyak PTE-PTE dalam satu halaman maka anda akanmempunyai jauh lebih sedikit dari halaman tersebut daripada yang dimiliki oleh PTE.

• Sekarang buatlah tabel halaman satu tingkat yang terdiri dari PTE-PTE yang memilikipointerkehalaman tersebut.

• Tabel halaman satu tingkat ini cukup kecil untuk disimpan di memori.

• Jika kita telah memiliki tabel halaman dua tingkat maka pekerjaan akan jauh lebih mudah.

• Jangan menyimpan semuareferencePTE ke memori yang tidak terpakai dalam memori tabel halamandua tingkat. Hal tersebut menggunakan permintaan halaman pada tabel halaman dua tingkat.

• Untuk tabel halaman dua tingkat, alamat logis dibagi menjadi tiga bagian yaituP#1, P#2, danOfset

• P#1 menunjukkan indeks menuju tabel halaman satu tingkat.

189

Page 210: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

• Ikuti penunjuk pada PTE yang berkaitan untuk meraihframeyang terdiri dari tabel halaman duatingkat yang relevan.

• P#2 menunjukkan indeks menuju tabel halaman dua tingkat.

• Ikuti pointerpada PTE yang berkaitan untuk meraihframeyang terdiri dariframeasli yang diminta.

• Ofset menunjukkan ofset dariframedimana terdapat lokasi adanya permintaan kata.

Banyak sistem komputer modern mendukung ruang alamat logis yang sangat luas (2 pangkat 32 sampai2 pangkat 64). Pada lingkungan seperti itu tabel halamannya sendiri menjadi besar sekali. Untuk contoh,misalkan suatu sistem dengan ruang alamat logis 32-bit. Jika ukuran halaman di sistem seperti itu adalah4K byte (2 pangkat 12), maka tabel halaman mungkin berisi sampai 1 juta masukan ((2^32)/(2^12)).Karena masing-masing masukan terdiri atas 4 byte, tiap-tiap proses mungkin perlu ruang alamat fisiksampai 4 megabyte hanya untuk tabel halamannya saja. Jelasnya, kita tidak akan mau mengalokasi tabelhalaman secara berdekatan di dalam memori. Satu solusi sederhananya adalah dengan membagi tabelhalaman menjadi potongan-potongan yang lebih kecil lagi. Ada beberapa cara yang berbeda untukmenyelesaikan ini.

190

Page 211: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-7. Tabel Halaman secaraMultilevel

Sumber: allan.ultra.nyu.edu/~gottlieb/courses/1999-00-spring/ os/lecture-11.html

5.4.3. Tabel Halaman secara InvertedBiasanya, setiap proses mempunyai tabel halaman yang diasosiasikan dengannya. Tabel halaman hanyapunya satu masukan untuk setiap halaman proses tersebut sedang digunakan (atau satu slot untuk setiapalamat maya, tanpa meperhatikan validitas terakhir). Semenjak halaman referensi proses melalui alamatmaya halaman, maka representasi tabel ini adalah alami. Sistem operasi harus menterjemahkan referensiini ke alamat memori fisik. Semenjak tabel diurutkan berdasarkan alamat maya, sistem operasi dapat

191

Page 212: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

menghitung dimana pada tabel yang diasosiasikan dengan masukan alamat fisik, dan untukmenggunakan nilai tersebut secara langsung. Satu kekurangan dari skema ini adalah masing-masinghalaman mungkin mengandung jutaan masukan. Tabel ini mungkin memakan memori fisik dalam jumlahyang besar, yang mana dibutukan untuk tetap menjaga bagaimana memori fisik lain sedang digunakan.

Gambar 5-8. Tabel Halaman secaraInverted

Sumber: Operating System karya Avi Silberschatz, Peter Galvin, dan Greg Gagne, 2000

5.4.4. Berbagi HalamanKeuntungan lain dari pemberian halaman adalah kemungkinannya untuk berbagi kode yang sama.Pertimbangan ini terutama sekali penting pada lingkungan yang berbagi waktu. Pertimbangkan sebuahsistem yang mendukung 40 pengguna, yang masing-masing menjalankan aplikasi pengedit teks. Jikaeditor teks tadi terdiri atas 150K kode dan 50K ruang data, kita akan membutuhkan 8000K untukmendukung 40 pengguna. Jika kodenya dimasukan ulang, bagaimana pun juga dapat dibagi-bagi, sepertipada gambar. Disini kita lihat bahwa tiga halaman editor (masing-masing berukuran 50K; halamanukuran besar digunakan untuk menyederhanakan gambar) sedang dibagi-bagi diantara tiga proses.Masing-masing proses mempunyai halaman datanya sendiri.

5.5. SegmentasiSegmentasiadalah skema manajemen memori dengan cara membagi memori menjadi segmen-segmen.Dengan demikian, sebuah program dibagi menjadi segmen-segmen.Segmenadalah sebuah unit logis ,yaitu unit yang terdiri dari beberapa bagian yang berjenis yang sama. Contoh: program utama, variabellokal, proceduredan sebagainya. Berbeda dengan halaman, ukuran tiap segmen tidak harus sama danmemiliki ’ciri’ tertentu. Ciri tertentu itu adalah nama segmen dan panjang segmen. Nama segmen dirujukoleh nomor segmen sedangkan panjang segmen ditentukan olehoffset.

192

Page 213: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.5.1. Arsitektur SegmentasiUkuran tiap segmen tidak harus sama. Saat sebuah program atau proses dimasukkan ke CPU, segmenyang berbeda dapat ditempatkan dimana saja di dalam memori utama (dapat menggunakan carafirst-fitataubest-fit).

Alamat logis dari sebuah segmen adalah alamat dua dimensi, sedangkan alamat fisik memori adalahalamat satu dimensi. Oleh karena itu, agar implementasinya menjadi mudah ( dari alamat logis ke alamatfisik ) diperlukan Tabel Segmen yang yang terdiri daribasedanlimit . Basemenunjukkan alamat awalsegmen (dari alamat fisik) danlimit menunjukkan panjang segmen.

Gambar 5-9. Arsitektur Segmentasi

alamat logisnya :s dand , s adalah nomor segmen / index di dalam tabel segmend adalahoffset. Jikaoffsetkurang dari nol dan tidak lebih besar dari besarnyalimit makabaseakan dijumlahkan dengand (offset) , yang dijumlahkan itu adalah alamat fisik dari segmen tersebut.

5.5.2. Saling Berbagi dan ProteksiSegmen dapat terbagi jika terdapat elemen di tabel segmen yang berasal dari dua proses yang berbedayang menunjuk pada alamat fisik yang sama. Saling berbagi ini muncul di level segmen dan pada saat initerjadi semua informasi dapat turut terbagi. Proteksi dapat terjadi karena ada bit-proteksi yangberhubungan dengan setiap elemen dari segmen tabel. Bit-proteksi ini berguna untuk mencegah akses

193

Page 214: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

ilegal ke memori. Caranya: menempatkan sebuaharray di dalam segmen itu sehingga perangkat kerasmanajemen memori secara otomatis akan mengecek indeksarray -nya legal atau tidak.

5.5.3. Masalah dalam Segmentasi

• Segmen dapat Membesar

• Muncul Fragmentasi Luar

• Bila Ada Proses yang Besar

5.5.4. Segmentasi dengan Pemberian HalamanKelebihan Pemberian Halaman : tidak ada fragmentasi luar - alokasinya cepat.

Kelebihan Segmentasi: saling berbagi - proteksi.

194

Page 215: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-10. Segmentasi dengan Pemberian Halaman

195

Page 216: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.5.5. Penggunaan Segmentasi

MULTICS

Gambar 5-11. Penggunaan Segmentasi dengan Pemberian Halaman pada MULTICS

196

Page 217: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

INTEL

Gambar 5-12. Penggunaan Segmentasi dengan Pemberian Halaman pada INTEL 30386

5.6. Pengantar Memori Virtual; Demand PagingManajemen memori pada intinya adalah menempatkan semua bagian proses yang akan dijalankankedalam memori sebelum proses itu dijalankan. Untuk itu, semua bagian proses itu harus memilikitempat sendiri di dalam memori fisik.

Tetapi tidak semua bagian dari proses itu akan dijalankan, misalnya:

197

Page 218: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

• Pernyataan atau pilihan yang hanya akan dieksekusi pada kondisi tertentu. Contohnya adalah:pesan-pesanerror yang hanya muncul bila terjadi kesalahan saat program dijalankan.

• Fungsi-fungsi yang jarang digunakan.

• Pengalokasian memori yang lebih besar dari yang dibutuhkan. Contoh:array , list dan tabel.

Pada memori berkapasitas besar, hal-hal ini tidak akan menjadi masalah. Akan tetapi, pada memori yangsangat terbatas, hal ini akan menurunkan optimalisasi utilitas dari ruang memori fisik. Sebagai solusi darimasalah-masalah ini digunakanlah konsep memori virtual.

5.6.1. PengertianMemori virtual adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknikini menyembunyikan aspek-aspek fisik memori dari pengguna dengan menjadikan memori sebagailokasi alamat virtual berupabyteyang tidak terbatas dan menaruh beberapa bagian dari memori virtualyang berada di memori logis.

Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampungprogram dalam skala besar, melebihi daya tampung dari memori fisik yang tersedia.

Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses dimemori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama disistem tanpa menggunakan memori virtual."

Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputerAtlas di Universitas Manchester, Inggris (Hariyanto, Bambang : 2001).

198

Page 219: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-13. Memori Virtual

Silberschatz, Galvin and Gagne @ 2002

5.6.2. KeuntunganSebagaimana dikatakan di atas bahwa hanya sebagian dari program yang diletakkan di memori fisik. Halini memberikan keuntungan:

• Berkurangnya proses I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misalnya untuk programbutuh membaca daridiskdan memasukkan dalam memory setiap kali diakses.

• ruang menjadi lebih leluasa karena berkurangnya memori fisik yang digunakan. Contoh, untukprogram 10 MB tidak seluruh bagian dimasukkan dalam memori fisik. Pesan-pesan error hanyadimasukkan jika terjadi error.

• Meningkatnya respon, karena menurunnya beban I/O dan memori.

199

Page 220: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

• Bertambahnya jumlah pengguna yang dapat dilayani. Ruang memori yang masih tersedia luasmemungkinkan komputer untuk menerima lebih banyak permintaan dari pengguna .

5.6.3. ImplementasiGagasan utama dari memori virtual adalah ukuran gabungan program, data dan stack melampaui jumlahmemori fisik yang tersedia. Sistem operasi menyimpan bagian-bagian proses yang sedang digunakan dimemori fisik ( memori utama ) dan sisanya diletakkan di disk. Begitu bagian yang berada di diskdiperlukan, maka bagian di memori yang tidak diperlukan akan dikeluarkan dari memori fisik (swap-out) dan diganti (swap-in) oleh bagian disk yang diperlukan itu.

Memori virtual diimplementasikan dalam sistemmultiprogramming. Misalnya: 10 program denganukuran 2 Mb dapat berjalan di memori berkapasitas 4 Mb. Tiap program dialokasikan 256 KByte danbagian-bagian prosesswap in) masuk ke dalam memori fisik begitu diperlukan dan akan keluar (swapout ) jika sedang tidak diperlukan. Dengan demikian, sistemmultiprogrammingmenjadi lebih efisien.

Memori virtual dapat dilakukan melalui dua cara:

• Permintaan pemberian halaman (demand paging).

• Permintaan segmentasi (demand segmentation). Contoh: IBM OS/2. Algoritma dari permintaansegmentasi lebih kompleks, karena itu jarang diimplementasikan.

5.6.4. Demand PagingDemand pagingatau permintaan pemberian halaman adalah salah satu implementasi dari memori virtualyang paling umum digunakan.Demand paging) pada prinsipnya hampir sama dengan permintaanhalaman (paging) hanya saja halaman (page) tidak akan dibawa ke ke dalam memori fisik sampai iabenar-benar diperlukan. Untuk itu diperlukan bantuan perangkat keras untuk mengetahui lokasi darihalaman saat ia diperlukan.

Karenademand pagingmerupakan implementasi dari memori virtual, maka keuntungannya samadengan keuntungan memori virtual, yaitu:

• Sedikit I/O yang dibutuhkan.

• Sedikit memori yang dibutuhkan

• Respon yang lebih cepat

• Dapat melayani lebih banyak pengguna

200

Page 221: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.6.4.1. Permasalahan pada Demand Paging

Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan pada halaman yangdibutuhkan, yaitu: halaman ada dan sudah berada di memori. Statusnya valid ("1"). halaman ada tetapimasih berada di disk belum diberada di memori (harus menunggu sampai dimasukkan). Statusnya tidakvalid ("0"). halaman tidak ada, baik di memori maupun didisk( invalid reference --> abort).

Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami kesalahan halaman . Perangkatkeras akan menjebaknya ke dalam Sistem Operasi.

5.6.4.2. Skema Bit Valid - Tidak Valid

Dengan meminjam konsep yang sudah pernah dijelaskan dalam Pokok Bahasan 5, maka dapatditentukan halaman mana yang ada di dalam memori dan mana yang tidak ada di dalam memori.

Konsep itu adalah skema bit valid - tidak valid , di mana di sini pengertian valid berarti bahwa halamanlegal dan berada dalam memori (kasus 1), sedangkan tidak valid berarti halaman tidak ada (kasus 3) atauhalaman ada tapi tidak ditemui di memori (kasus 2).

Pengesetan bit:

• Bit 1 --> halaman berada di memori

• Bit 0 --> halaman tidak berada di memori.

(Dengan inisialisasi: semua bit di-set 0)

Apabila ternyata hasil dari translasi, bit halaman = 0, berarti kesalahan halaman terjadi.

5.6.4.3. Penanganan kesalahan halaman

Prosedur penanganan kesalahan halaman sebagaimana tertulis dalam bukuOperating System Concept5th Ed. halaman 294 adalah sebagai berikut:

• Memeriksa tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.

• Apabila tidak valid , program akan di terminasi (interupsi olehillegal address trap). Jika valid tapiproses belum dibawa ke halaman ,maka kita halaman kan sekarang.

• Memilih framekosong (free-frame), misalnya darifree-frame list. Jika tidak ditemui adaframeyangkosong, maka dilakukanswap-outdari memori.Framemana yang harus di-swap-outakan ditentukanoleh algoritma (lihat sub bab penggantian halaman ).

• Menjadualkan operasi disk untuk membaca halaman yang diinginkan keframeyang barudialokasikan.

• Ketika pembacaan komplit, ubah bit validasi menjadi "1" yang berarti halaman sudah diidentifikasiada di memori.

• Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi kesalahan halaman terjadi saatinstruksi di-ambil , maka akan dilakukan pengambilan lagi. Jika terjadi saat operan sedang di-ambil ,maka harus dilakukanpengambilanulang, dekode , dan pengambilan operan lagi.

201

Page 222: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.6.4.4. Apa yang terjadi pada saat kesalahan ?

kesalahan halaman menyebabkan urutan kejadian berikut :

• Ditangkap oleh Sistem Operasi.

• menyimpanregister penggunadan proses.

• Tetapkan bahwa interupsi merupakan kesalahan halaman .

• Periksa bahwa referensi halaman adalah legal dan tentukan lokasi halaman pada disk.

• Kembangkan pembacaan disk keframekosong.

• Selama menunggu, alokasikan CPU ke pengguna lain dengan menggunakan penjadwalan CPU.

• Terjadi interupsi dari disk bahwa I/O selesai.

• Simpan register dan status proses untuk pengguna yang lain.

• Tentukan bahwa interupsi berasal dari disk.

• Betulkan tabel halaman dan tabel yang lain bahwa halaman telah berada di memory.

• Tunggu CPU untuk untuk dialokasikan ke proses tersebut

• Kembalikan register pengguna, status proses, tabel halaman , dan meneruskan instruksi interupsi.

Pada berbagai kasus, ada tiga komponen yang kita hadapi pada saat melayani kesalahan halaman :

• Melayani interupsi kesalahan halaman

• Membaca halaman

• Mengulang kembali proses

5.6.4.5. Kinerja Demand Paging

MenggunakanEffective Access Time(EAT), dengan rumus :

EAT = (1-p) xma+ p x waktu kesalahan halaman

• p : kemungkinan terjadinya kesalahan halaman (0 <p < 1)

• p = 0; tidak ada kesalahan halaman

• p = 1; semuanya mengalami kesalahan halaman

• ma: waktu pengaksesan memory (memory access time)

Untuk menghitung EAT, kita harus tahu berapa banyak waktu dalam pengerjaan kesalahan halaman .

Contoh penggunaanEffective Access Time

202

Page 223: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Diketahui : Waktu pengaksesan memory =ma= 100 nanodetik Waktu kesalahan halaman = 20 milidetik

Maka, EAT = (1-p) x 100 + p (20 milidetik) = 100 - 100p + 20.000.000p = 100 + 19.999.900p (milidetik)

Pada sistemdemand paging, sebisa mungkin kita jaga agar tingkat kesalahan halaman -nya rendah.Karena bilaEffective Access Timemeningkat, maka proses akan berjalan lebih lambat.

5.6.4.6. Permasalahan Lain yang berhubungan dengan Demand Paging

Sebagaimana dilihat di atas, bahwa ternyata penanganan kesalahan halaman menimbulkanmasalah-masalah baru pada prosesrestart instructionyang berhubungan dengan arsitektur komputer.

Masalah yang terjadi, antara lain mencakup:

• Bagaimana mengulang instruksi yang memiliki beberapa lokasi yang berbeda?

• Bagaimana pengalamatan dengan menggunakan ragam pengalamatan spesial , termasukautoincrementdanautodecrement mode?

• Bagaimana jika instruksi yang dieksekusi panjang (contoh:block move)?

Masalah pertama dapat diatasi dengan dua cara yang berbeda.

• komputasimicrocodedan berusaha untuk mengakses kedua ujung dari blok, agar tidak ada modifikasihalaman yang sempat terjadi.

• memanfaatkan register sementara (temporary register) untuk menyimpan nilai yang sempat tertimpa/termodifikasi oleh nilai lain.

Masalah kedua diatasi dengan menciptakan suatu status register spesial baru yang berfungsi menyimpannomor register dan banyak perubahan yang terjadi sepanjang eksekusi instruksi. Sedangkan masalahketiga diatasi dengan men-setbit FPD (first phase done) sehinggarestart instructiontidak akandimulai dari awal program, melainkan dari tempat program terakhir dieksekusi.

5.6.4.7. Persyaratan Perangkat Keras

Pemberian nomor halaman melibatkan dukungan perangkat keras, sehingga ada persyaratan perangkatkeras yang harus dipenuhi. Perangkat-perangkat keras tersebut sama dengan yang digunakan untukpagingdanswapping, yaitu:

• tabel halaman "bit valid-tidak valid"

• Valid ("1") artinya halaman sudah berada di memori

• Tidak valid ("0") artinya halaman masih berada di disk.

• Memori sekunder, digunakan untuk menyimpan proses yang belum berada di memori.

203

Page 224: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Lebih lanjut, sebagai konsekuensi dari persyaratan ini, akan diperlukan pula perangkat lunak yang dapatmendukung terciptanya pemberian nomor halaman.

5.7. Aspek Permintaan Halaman: Pembuatan ProsesSistem permintaan halaman dan memori virtual memberikan banyak keuntungan selama pembuatanproses berlangsung. Pada subbab ini, akan dibahas mengenai dua teknik yang disediakan oleh memorivirtual untuk meningkatkan kinerja pembuatan dan pengeksekusian suatu proses.

5.7.1. Copy-On-WriteDengan memanggil sistem pemanggilanfork() , sistem operasi akan membuat proses anak sebagaisalinan dari proses induk. Sistem pemanggilanfork() bekerja dengan membuat salinan alamat prosesinduk untuk proses anak, lalu membuat salinan halaman milik proses induk tersebut.Tapi, karena setelahpembuatan proses anak selesai, proses anak langsung memanggil sistem pemanggilanexec()yangmenyalin alamat proses induk yang kemungkinan tidak dibutuhkan.

Oleh karena itu, lebih baik kita menggunakan teknik lain dalam pembuatan proses yang disebut sistemcopy-on-write. Teknik ini bekerja dengan memperbolehkan proses anak untuk menginisialisasipenggunaan halaman yang sama secara bersamaan. halaman yang digunakan bersamaan itu, disebutdengan "halamancopy-on-write" , yang berarti jika salah satu dari proses anak atau proses indukmelakukan penulisan pada halaman tersebut, maka akan dibuat juga sebuah salinan dari halaman itu.

Sebagai contoh, sebuah proses anak hendak memodifikasi sebuah halaman yang berisi sebagian daristack. Sistem operasi akan mengenali hal ini sebagaicopy-on-write, lalu akan membuat salinan darihalaman ini dan memetakannya ke alamat memori dari proses anak, sehingga proses anak akanmemodifikasi halaman salinan tersebut, dan bukan halaman milik proses induk. Dengan tekikcopy-on-writeini, halaman yang akan disalin adalah halaman yang dimodifikasi oleh proses anak atauproses induk. Halaman-halaman yang tidak dimodifikasi akan bisa dibagi untuk proses anak dan prosesinduk.

Saat suatu halaman akan disalin menggunakan teknikcopy-on-write, digunakan teknikzero-fill-on-demanduntuk mengalokasikan halaman kosong sebagai tempat meletakkan hasil duplikat.Halaman kosong tersebut dialokasikan saatstackatauheapsuatu proses akan diperbesar atau untukmengatur halamancopy-on-write. HalamanZero-fill-on-demandakan dibuat kosong sebelumdialokasikan, yaitu dengan menghapus isi awal dari halaman. Karena itu, dengancopy-on-write,halamanyang sedang disalin akan disalin ke sebuah halamanzero-fill-on.

Teknikcopy-on-writedigunakan oleh beberapa sistem operasi seperti Windows 2000, Linux, danSolaris2.

5.7.2. Memory-Mapped FilesKita dapat menganggap berkas I/O sebagai akses memorirutin pada teknik memori virtual. Cara inidisebut dengan "pemetaan memori" sebuah berkas yang mengizinkan sebuah bagian dari alamat virtual

204

Page 225: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

dihubungkan dengan sebuah berkas. Dengan teknik pemetaan memori sebuah blokdiskdapat dipetakanke ke sebuah halaman pada memori.

Proses membaca dan menulis sebuah berkas ditangani oleh akses memorirutin agar memudahkanmengakses dan menggunakan sebuah berkas yaitu dengan mengizinkan manipulasi berkas melaluimemori dibandingkan memanggil dengan sistem pemanggilanread()danwrite().

Beberapa sistem operasi menyediakan pemetaan memori hanya melalui sistem pemanggilan yang khususdan menjaga semua berkas I/O yang lain dengan menggunakan sistem pemanggilan yang biasa.

Proses diperbolehkan untuk memetakan berkas yang sama ke dalam memori virtual dari masing-masingberkas, agar data dapat digunakan secara bersamaan. Memori virtual memetakan tiap proses ke dalamhalaman yang sama pada memori virtual, yaitu halaman yang menyimpan salinan dari blokdisk.

Dengan sistem pemetaan memori, sistem pemangggilan dapat juga mendukung fungsicopy-on-write,yang mengizinkan proses untuk menggunakan sebuah berkas secara bersamaan pada keadaanread only,tapi tetap memiliki salinan dari data yang diubah.

Berikut ini merupakan bagan dari prosesmemory-mapped files

Gambar 5-14. Bagan prosesmemory-mapped files

205

Page 226: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar ini diambil dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VI tahun2002.

5.8. Konsep Dasar Pemindahan HalamanMasalah kesalahan halaman pasti akan dialami oleh setiap halaman minimal satu kali. Akan tetapi,sebenarnya sebuah proses yang memiliki N buah halaman hanya akan menggunakan N/2 diantaranya.Kemudian permintaan halaman akan menyimpan I/O yang dibutuhkan untuk mengisi N/2 halamansisanya. Dengan demikian utilisasi CPU danthroughputdapat ditingkatkan.

Gambar 5-15. Kondisi yang memerlukan Pemindahan Halaman

Gambar di atas diambil dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VI tahun2002.

Upaya yang dilakukan oleh permintaan halaman dalam mengatasi kesalahan halaman didasari olehpemindahan halaman. Sebuah konsep yang akan kita bahas lebih lanjut dalam subbab ini.

206

Page 227: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.8.1. Konsep DasarPendekatan untuk pemindahan halaman: "Jika tidak adaframeyang kosong, cariframeyang tidaksedang digunakan atau yang tidak akan digunakan dalam jangka waktu yang lama, lalu kosongkandengan memindahkan isinya ke dalam ruang pertukaran dan ubah semua tabelnya sebagai indikasibahwa halaman tersebut tidak akan lama berada di dalam memori."

Dalam pemindahan halaman,framekosong seperti tersebut di atas, akan digunakan sebagai tempatpenyimpanan dari halaman yang salah.

Gambar 5-16. Pemindahan halaman

Gambar di atas diambil dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VI tahun2002.

Rutinitas yang dilakukan dalam pemindahan halaman antara lain:

• Mencari lokasi dari halaman yang diinginkan padadisk.

• Mencari frameyang kosong.:

• Jika ada, maka gunakanframe tersebut.

207

Page 228: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

• Jika tidak ada, maka tentukan frameyang tidak sedang dipakai atau yang tidak akandigunakan dalam jangka waktu lama, lalu kosongkanframe tersebut. Gunakan algoritmapemindahan halaman untuk menentukanframeyang akan dikosongkan.

Usahakan agar tidak menggunakan frame yang akan digunakan dalam waktu dekat. Jika terpaksa,maka sebaiknya segera masukkan kembali frame tersebut agar tidak terjadioverhead.

• Tulis halaman yang dipilih ke disk, ubah tabel halaman dan tabelframe.

• Membaca halaman yang diinginkan ke dalamframekosong yang baru.

• Mengulangi proses pengguna dari awal.

Rutinitas di atas belum tentu berhasil. Jika kita tidak dapat menemukanframeyang kosong atau akandikosongkan, maka sebagai jalan keluarnya kita dapat melakukan pentransferan dua halaman (satumasuk, satu keluar). Cara ini akan menambah waktu pelayanan kesalahan halaman dan waktu aksesefektif. Olehkarena itu, perlu digunakan bit tambahan untuk masing-masing halaman danframeyangdiasosiasikan dalam perangkat keras.

***

Sebagai dasar dari permintaan halaman, pemindahan halaman merupakan "jembatan pemisah" antaramemori logis dan memori fisik. Mekanisme yang dimilikinya memungkinkan memori virtual berukuransangat besar dapat disediakan untuk pemrogram dalam bentuk memori fisik yang berukuran lebih kecil.

Dalam permintaan halaman, jika kita memiliki banyak proses dalam memori, kita harus menentukanjumlahframeyang akan dialokasikan ke masing-masing proses. Ketika pemindahan halaman diperlukan,kita harus memilihframeyang akan dipindahkan(dikosongkan). Masalah ini dapat diselesaikan denganmenggunakan algoritma pemindahan halaman.

Ada beberapa macam algoritma pemindahan halaman yang dapat digunakan. Algoritma yang terbaikadalah yang memiliki tingkat kesalahan halaman terendah. Selama jumlahframemeningkat, jumlahkesalahan halaman akan menurun. Peningkatan jumlahframedapat terjadi jika memori fisik diperbesar.

Evaluasi algoritma pemindahan halaman dapat dilakukan dengan menjalankan sejumlah string acuan dimemori dan menghitung jumlah kesalahan halaman yang terjadi. Sebagai contoh, suatu proses memilikiurutan alamat : 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610,0102, 0103, 0104, 0101, 0609, 0102, 0105 ; per 100bytes-nya dapat kita turunkan menjadi string acuan :1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1.

5.9. Algoritma Pemindahan HalamanPemindahan halaman diimplementasikan dalam algoritma yang bertujuan untuk menghasilkan tingkatkesalahan halaman terendah. Ada beberapa algoritma pemindahan halaman yang berbeda. Pemilihanhalaman yang akan diganti dalam penggunaan algoritma-algoritma tersebut bisa dilakukan denganberbagai cara, seperti dengan memilih secara acak, memilih dengan berdasarkan pada penggunaan, umurhalaman, dan lain sebagainya. Pemilihan algoritma yang kurang tepat dapat menyebabkan peningkatantingkat kesalahan halaman sehingga proses akan berjalan lebih lambat.

208

Page 229: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.9.1. Algoritma FIFO (First In First Out)Prinsip yang digunakan dalam algoritma FIFO yaitu halaman yang diganti adalah halaman yang palinglama berada di memori. Algoritma ini adalah algoritma pemindahan halaman yang paling mudahdiimplementasikan, akan tetapi paling jarang digunakan dalam bentuk aslinya, biasanya dikombinasikandengan algoritma lain.

Pengimplementasian algoritma FIFO dilakukan dengan menggunakan antrian untuk menandakanhalaman yang sedang berada di dalam memori. Setiap halaman baru yang diakses diletakkan di bagianbelakang (ekor) dari antrian. Apabila antrian telah penuh dan ada halaman yang baru diakses makahalaman yang berada di bagian depan (kepala) dari antrian akan diganti.

Kelemahan dari algoritma FIFO adalah kinerjanya yang tidak selalu baik. Hal ini disebabkan karena adakemungkinan halaman yang baru saja keluar dari memori ternyata dibutuhkan kembali. Di samping itudalam beberapa kasus, tingkat kesalahan halaman justru bertambah seiring dengan meningkatnya jumlahframe, yang dikenal dengan nama Anomali Belady.

Gambar 5-17. Contoh Algoritma FIFO

Gambar di atas terinspirasi dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VItahun 2002.

209

Page 230: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.9.2. Algoritma OptimalAlgoritma optimal pada prinsipnya akan mengganti halaman yang tidak akan digunakan untuk jangkawaktu yang paling lama. Kelebihannya antara lain dapat menghindari terjadinya anomali Belady danjuga memiliki tingkat kesalahan halaman yang terendah diantara algoritma-algoritma pemindahanhalaman yang lain.

Meskipun tampaknya mudah untuk dijelaskan, tetapi algoritma ini sulit atau hampir tidak mungkin untukdiimplementasikan karena sistem operasi harus dapat mengetahui halaman-halaman mana saja yangakan diakses berikutnya, padahal sistem operasi tidak dapat mengetahui halaman yang muncul di waktuyang akan datang.

Gambar 5-18. Contoh Algoritma Optimal

Gambar di atas terinspirasi dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VItahun 2002.

5.9.3. Algoritma LRU (Least Recently Used)Algoritma LRU akan mengganti halaman yang telah tidak digunakan dalam jangka waktu terlama.Pertimbangannya yaitu berdasarkan observasi bahwa halaman yang telah sering diakses kemungkinan

210

Page 231: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

besar akan diakses kembali. Kelebihan dari algoritma LRU sama halnya seperti pada algoritma optimal,yaitu tidak akan mengalami anomali Belady.

Pengimplementasiannya dapat dilakukan dengan dua cara, yaitu dengan menggunakan:

• Pencacah

Cara ini dilakukan dengan menggunakanclock.Setiap halaman memiliki nilai yang pada awalnyadiinisialisasi dengan 0. Ketika mengakses ke suatu halaman baru, nilai padaclockdi halaman tersebutakan ditambah 1. Halaman yang diganti adalah halaman yang memiliki nilai terkecil.

• Stack

Penggunaan implementasi ini dilakukan dengan menggunakanstackyang menandakanhalaman-halaman yang berada di memori. Setiap kali suatu halaman diakses, akan diletakkan dibagian paling atasstack.Apabila ada halaman yang perlu diganti, maka halaman yang berada dibagian paling bawahstackakan diganti,sehingga setiap kali halaman baru diakses tidak perlu mencarikembali halaman yang akan diganti. Akan tetapi cara ini lebih mahal implementasinya dibandingkandengan menggunakan pencacah.

211

Page 232: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Gambar 5-19. Contoh Algoritma LRU

Gambar di atas terinspirasi dari bukuApplied Operating SystemSilberchatz, Galvin, Gagne, edisi VItahun 2002.

5.9.4. Algoritma Perkiraan LRUPada dasarnya algoritma perkiraan LRU memiliki prinsip yang sama dengan algoritma LRU, yaituhalaman yang diganti adalah halaman yang tidak digunakan dalam jangka waktu terlama, hanya sajadilakukan modifikasi pada algoritma ini untuk mendapatkan hasil yang lebih baik. Perbedaannya denganalgoritma LRU terletak pada penggunaan bit acuan. Setiap halaman yang berbeda memiliki bit acuan.Pada awalnya bit acuan diinisialisasikan oleh perangkat keras dengan nilai 0. Nilainya akan berubahmenjadi 1 bila dilakukan akses ke halaman tersebut.

Ada beberapa cara untuk mengimplementasikan algoritma ini, yaitu:

• Algoritma NFU (Not Frequently Used)

Setiap halaman akan memiliki bit acuan yang terdiri dari 8 bit byte sebagai penanda. Pada awalnyasemua bit nilainya 0, contohnya : 00000000. Setiap selang beberapa waktu, pencatat waktu melakukaninterupsi kepada sistem operasi, kemudian sistem operasi menggeser 1 bit ke kanan dengan bit yang

212

Page 233: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

paling kiri adalah nilai dari bit acuan, yaitu bila halaman tersebut diakses nilainya 1 dan bila tidakdiakses nilainya 0. Jadi halaman yang selalu digunakan pada setiap periode akan memiliki nilai11111111. Halaman yang diganti adalah halaman yang memiliki nilai terkecil.

• Algoritma Second-Chance

Pengimplementasian algoritma ini dilakukan dengan menyimpan halaman pada sebuahlinked-listdanhalaman-halaman tersebut diurutkan berdasarkan waktu ketika halaman tersebut tiba di memori yangberarti menggunakan juga prinsip algoritma FIFO disamping menggunakan algoritma LRU. Apabilanilai bit acuan-nya 0, halaman dapat diganti. Dan apabila nilai bit acuan-nya 1, halaman tidak digantitetapi bit acuan diubah menjadi 0 dan dilakukan pencarian kembali.

• Algoritma Clock

Meskipun algoritmasecond-chancesudah cukup baik, namun pada kenyataannya penggunaanalgortima tersebut tidak efisien. Algoritmaclockadalah penyempurnaan dari algoritma tersebut. Padaprinsipnya kedua algoritma tersebut sama, hanya terletak perbedaan pada pengimplementasiannyasaja. Algortima ini menggunakan antrian melingkar yang berbentuk seperti jam dengan sebuahpenunjuk yang akan berjalan melingkar mencari halaman untuk diganti.

• Algoritma NRU (Not Recently Used)

Algoritma NRU mudah untuk dimengerti, efisien, dan memiliki kinerja yang cukup baik. Algoritmaini mempertimbangkan 2 hal sekaligus, yaitu bit acuan dan bit modifikasi. Ketika terjadi kesalahanhalaman, sistem operasi memeriksa semua halaman dan membagi halaman-halaman tersebut ke dalam4 kelas:

• Kelas 1: Tidak digunakan dan tidak dimodifikasi, bit terbaik untuk dipindahkan.

• Kelas 2: Tidak digunakan tapi dimodifikasi, tidak terlalu baik untuk dipindahkan karena halaman iniperlu ditulis sebelum dipindahkan.

• Kelas 3: Digunakan tapi tidak dimodifikasi, ada kemungkinan halaman ini akan segera digunakanlagi.

• Kelas 4: Digunakan dan dimodifikasi, halaman ini mungkin akan segera digunakan lagi danhalaman ini perlu ditulis ke disk sebelum dipindahkan.

5.9.5. Algoritma CountingDilakukan dengan menyimpan pencacah dari nomor acuan yang sudah dibuat untuk masing-masinghalaman. Penggunaan algoritma ini memiliki kekurangan yaitu lebih mahal. AlgoritmaCountingdapatdikembangkan menjadi 2 skema dibawah ini:

• Algoritma LFU (Least Frequently Used)

213

Page 234: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Halaman yang diganti adalah halaman yang paling sedikit dipakai (nilai pencacah terkecil) denganalasan bahwa halaman yang digunakan secara aktif akan memiliki nilai acuan yang besar.

• Algoritma MFU (Most Frequently Used)

Halaman yang diganti adalah halaman yang paling sering dipakai (nilai pencacah terbesar) denganalasan bahwa halaman dengan nilai terkecil mungkin baru saja dimasukkan dan baru digunakan

5.9.6. Algoritma Page BufferingSistem menyimpanpooldari frameyang kosong. Prosedur ini memungkinkan suatu proses mengulangdari awal secepat mungkin, tanpa perlu menunggu halaman yang akan dipindahkan untuk ditulis ke diskkarenaframe-nya telah ditambahkan ke dalampool framekosong. Teknik seperti ini digunakan dalamsistem VAX/ VMS.

5.10. Strategi Alokasi Frame

5.10.1. Alokasi FrameHal yang mendasari strategi alokasiframeyang menyangkut memori virtual adalah bagaimana membagimemori yang bebas untuk beberapa proses yang sedang dikerjakan.

Dapat kita ambil 1 contoh yang mudah pada sistem satu pemakai. Misalnya sebuah sistem mempunyaiseratusframebebas untuk prosesuser. Untuk permintaan halaman murni, keseratusframetersebut akanditaruh pada daftarframebebas. Ketika sebuahusermulai dijalankan, akan terjadi sederetan kesalahanhalaman. Sebanyak seratus kesalahan halaman pertama akan mendapatkanframedari daftar framebebas. Saatframebebas sudah habis, sebuah algoritma pergantian halaman akan digunakan untukmemilih salah satu dari seratus halaman di memori yang diganti dengan yang ke seratus satu, danseterusnya. Ketika proses selesai atau diterminasi, seratusframetersebut akan disimpan lagi pada daftarframebebas.

Ada beberapa variasi untuk strategi sederhana ini antara lain kita bisa meminta sistem operasi untukmengalokasikan seluruhbufferdan ruang tabelnya dari daftarframebebas. Saat ruang ini tidakdigunakan oleh sistem operasi, ruang ini bisa digunakan untuk mendukung permintaan halaman dariuser. Kita juga dapat menyimpan tigaframebebas dari daftarframebebas, sehingga ketika terjadikesalahan halaman, adaframebebas yang dapat digunakan untuk permintaan halaman. Saat penggantianhalaman terjadi, penggantinya dapat dipilih, kemudian ditulis kedisk, sementara prosesusertetapberjalan.

Pada dasarnya yaitu proses pengguna diberikanframebebas yang mana saja. Masalah yang munculketika penggantian halaman dikombinasikan denganmultiprogramming. Hal ini terjadi karenamultiprogrammingmenaruh dua (atau lebih) proses di memori pada waktu yang bersamaan.

214

Page 235: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.10.1.1. Jumlah Frame Minimum

Ada suatu batasan dalam mengalokasikanframe, kita tidak dapat mengalokasikanframelebih darijumlahframeyang ada. Hal yang utama adalah berapa minimumframeyang harus dialokasikan agar jikasebuah instruksi dijalankan, semua informasinya ada dalam memori. Jika terjadi kesalahan halamansebelum eksekusi selesai, instruksi tersebut harus diulang. Sehingga kita harus mempunyai jumlahframeyang cukup untuk menampung semua halaman yang dibutuhkan oleh sebuah instruksi.

Jumlahframemimimum yang bisa dialokasikan ditentukan oleh arsitektur komputer. Sebagai contoh,instruksimovepada PDP-11 adalah lebih dari satu kata untuk beberapa modus pengalamatan, sehinggainstruksi tersebut bisa membutuhkan dua halaman. Sebagai tambahan, tiap operannya mungkin merujuktidak langsung, sehingga total ada enamframe. Kasus terburuk untuk IBM 370 adalah instruksi MVC.Karena instruksi tersebut adalah instruksi perpindahan dari penyimpanan ke penyimpanan, instruksi inibutuh 6 bit dan dapat memakai dua halaman. Satu blok karakter yang akan dipindahkan dan daerahtujuan perpindahan juga dapat memakai dua halaman, sehingga situasi ini membutuhkan enamframe.

5.10.1.2. Algoritma Alokasi

Algoritma pertama yaituequal allocation. Algoritma ini memberikan bagian yang sama, sebanyak m/nframe untuk tiap proses. Sebagai contoh ada 100frametersisa dan 5 proses, maka tiap proses akanmendapatkan 20frame. Frameyang tersisa, sebanyak 3 buah dapat digunakan sebagaiframebebascadangan.

Sebuah alternatif yaitu pengertian bahwa berbagai proses akan membutuhkan jumlah memori yangberbeda. Jika ada sebuah proses sebesar 10K dan sebuah proses basis data 127K dan hanya kedua prosesini yang berjalan pada sistem, maka ketika ada 62framebebas, tidak masuk akal jika kita memberikanmasing-masing proses 31frame. Proses pertama hanya butuh 10frame, 21 framelain akan terbuangpercuma. Untuk menyelesaikan masalah ini, kita menggunakan algoritma kedua yaituproportionalallocation. Kita mengalokasikan memori yang tersedia kepada setiap proses tergantung pada ukurannya.

Ukuran memori virtual untuk proses pi = si, dan S = si.

Lalu, jika jumlah total dariframeyang tersedia adalah m, kita mengalokasikan proses ai ke proses pi,dimana ai mendekati :

ai = si / S x m

Dalam kedua strategi ini, tentu saja, alokasi untuk setiap proses bisa bervariasi berdasarkanmultiprogramminglevel-nya. Jikamultiprogramminglevel-nya meningkat, setiap proses akan kehilanganbeberapaframeguna menyediakan memori yang dibutuhkan untuk proses yang baru. Di sisi lain, jikamultiprogramminglevel-nya menurun,frameyang sudah dialokasikan pada bagian proses sekarang bisadisebar ke proses-proses yang masih tersisa.

Mengingat hal itu, denganequal allocationataupunproportional allocation, proses yang berprioritastinggi diperlakukan sama dengan proses yang berprioritas rendah. Berdasarkan definisi tersebut,bagaimanapun juga, kita ingin memberi memori yang lebih pada proses yang berprioritas tinggi untukmempercepat eksekusi-nya.

Satu pendekatan adalah menggunakan skemaproportional allocationdimana perbandinganframe-nyatidak tergantung pada ukuran relatif dari proses, melainkan lebih pada prioritas proses, atau tergantungkombinasi dari ukuran dan prioritas. Algoritma ini dinamakan alokasi prioritas.

215

Page 236: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.10.1.3. Alokasi Global lawan Lokal

Hal penting lainnya dalam pengalokasianframeadalah pergantian halaman. Proses-proses bersaingmendapatkanframe, maka dari itu kita dapat mengklasifikasikan algoritma penggantian halamankedalam dua kategori; Penggantian Global dan Penggantian Lokal. Pergantian global memperbolehkansebuah proses mencariframepengganti dari semuaframe-frameyang ada, walaupunframetersebutsedang dialokasikan untuk proses yang lain. Hal ini memang efisien. tetapi ada kemungkinan proses laintidak mendapatkanframekarena framenya terambil oleh proses lain. Penggantian lokal memberi aturanbahwa setiap proses hanya boleh memilihframepengganti dariframe-frameyang memang dialokasikanuntuk proses itu sendiri.

Sebagai contoh, misalkan ada sebuah skema alokasi yang memperbolehkan proses berprioritas tinggiuntuk mencariframepengganti dari proses yang berprioritas rendah. Proses berprioritas tinggi ini dapatmancariframepengganti dariframe-frameyang telah dialokasikan untuknya atau dariframe-frameyangdialokasikan untuk proses berprioritas lebih rendah.

Dalam penggantian lokal, jumlahframeyang teralokasi tidak berubah. Dengan Penggantian Global, adakemungkinan sebuah proses hanya menyeleksi frame-frame yang teralokasi pada proses lain, sehinggameningkatkan jumlah frame yang teralokasi pada proses itu sendiri (asumsi bahwa proses lain tidakmemilih frameproses tersebut untuk penggantian.

Masalah pada algoritma Penggantian Global adalah bahwa sebuah proses tidak bisa mengontrolkasalahan halaman-nya sendiri. Halaman-halaman dalam memori untuk sebuah proses tergantung tidakhanya pada prilaku penghalamanan dari proses tersebut, tetapi juga pada prilaku penghalamanan dariproses lain. Karena itu, proses yang sama dapat tampil berbeda (memerlukan 0,5 detik untuk satueksekusi dan 10,3 detik untuk eksekusi berikutnya). Dalam Penggantian Lokal, halaman-halaman dalammemori untuk sebuah proses hanya dipengaruhi prilaku penghalamanan proses itu sendiri. PenggantianLokal dapat menyembunyikan sebuah proses dengan membuatnya tidak tersedia bagi proses lain,menggunakan halaman yang lebih sedikit pada memori. Jadi, secara umum Penggantian Globalmenghasilkan sistemthroughputyang lebih bagus, maka itu artinya metode yang paling seringdigunakan.

5.10.2. ThrashingThrashingadalah keadaan dimana terdapat akitifitas yang tinggi dari penghalamanan. Aktifitaspenghalamanan yang tinggi ini maksudnya adalah pada saat sistem sibuk melakukanswap-indanswap-outdikarenakan banyak kasalahan halaman yang terjadi. Suatu proses dapat mengurangi jumlahframeyang digunakan dengan alokasi yang minimum. Tetapi jika sebuah proses tidak memilikiframeyang cukup, tetap ada halaman dalam jumlah besar yang memiliki kondisi aktif digunakan. Maka hal inimengakibatkan kasalahan halaman. Untuk seterusnya sistem harus mengganti beberapa halaman menjadihalaman yang akan dibutuhkan. Karena semua halamannya aktif digunakan, maka halaman yang digantiadalah halaman yang dalam waktu dekat berkemungkinan akan digunakan kembali. Hal inimengakibatkan kesalahan halaman yang terus-menerus

5.10.2.1. Penyebab Thrashing

Utilitas dari CPU selalu diharapkan tinggi hingga mendekati 100%. Jika proses yang dikerjakan CPUhanya sedikit, maka kita tidak bisa menjaga agar CPU sibuk. Utilitas dari CPU bisa ditingkatkan dengan

216

Page 237: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

meningkatkan jumlah proses. Jika Utilitas CPU rendah, maka sistem akan menambah derajat darimultiprogrammingyang berarti menambah jumlah proses yang sedang berjalan. Pada titik tertentu,menambah jumlah proses justru akan menyebabkan utilitas CPU turun drastis dikarenakan proses-prosesyang baru tidak mempunya memori yang cukup untuk berjalan secara efisien. Pada titik ini terjadiaktifitas penghalamanan yang tinggi yang akan menyebabkanthrashing.

Ketika sistem mendeteksi bahwa utilitas CPU menurun dengan bertambahnya proses, maka sistemmeningkatkan lagi derajat darimultiprogramming. Proses- proses yang baru berusaha merebutframe-frame yang telah dialokasikan untuk proses yang sedang berjalan. Hal ini mengakibatkankesalahan halaman meningkat tajam. Utilitas CPU akan menurun dengan sangat drastis diakibatkan olehsistem yang terus menerus menambah derajatmultiprogramming.

Pada gambar di bawah ini tergambar grafik dimana utilitas dari CPU akan terus meningkat seiiringdengan meningkatnya derajat darimultiprogramminghingga sampai pada suatu titik saat utilitas CPUmenurun drastis. Pada titik ini, untuk menghentikanthrashing, derajat darimultiprogrammingharusditurunkan.

Derajat dari Multiprogramming

5.10.2.2. Membatasi Efek Thrashing

Efek darithrashingdapat dibatasi dengan algoritma pergantian lokal atau prioritas. Dengan pergantianlokal, jika satu proses mulaithrashing, proses tersebut dapat mengambilframedari proses yang lain danmenyebabkan proses itu tidak langsungthrashing. Jika proses mulaithrashing, proses itu akan beradapada antrian untuk melakukan penghalamanan yang mana hal ini memakan banyak waktu. Rata-rata

217

Page 238: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

waktu layanan untuk kesalahan halaman akan bertambah seiring dengan makin panjangnya rata-rataantrian untuk melakukan penghalamanan. Maka, waktu akses efektif akan bertambah walau pun untuksuatu proses yang tidakthrashing.

Salah satu cara untuk menghindarithrashing, kita harus menyediakan sebanyak mungkinframesesuaidengan kebutuhan suatu proses. Cara untuk mengetahui berapaframeyang dibutuhkan salah satunyaadalah dengan strategiWorking Set.

Selama satu proses di eksekusi, model lokalitas berpindah dari satu lokalitas satu ke lokalitas lainnnya.Lokalotas adalah kumpuulan halaman yang aktif digunakan bersama. Suatu program pada umumnyadibuat pada beberapa lokalitas sehingga ada kemungkinan terjadioverlap. Thrashingdapat muncul bilaukuran lokalitas lebih besar dari ukuran memori total.

5.10.2.3. Model Working Set

StrategiWorking setdimulai dengan melihat berapa banyakframeyang sesungguhnya digunakan olehsuatu proses.Working set modelmengatakan bahwa sistem hanya akan berjalan secara efisien jikamasing-masing proses diberikan jumlah halamanframeyang cukup. Jika jumlahframetidak cukupuntuk menampung semua proses yang ada, maka akan lebih baik untuk menghentikan satu proses danmemberikan halamannya untuk proses yang lain.

Working set modelmerupakan model lokalitas dari suatu eksekusi proses. Model ini menggunakan

parameter (delta) untuk mendefinisikanworking set window. Untuk menentukan halaman yang

dituju, yang paling sering muncul. Kumpulan dari halaman denganhalaman yang dituju yang palingsering muncul disebutworking set. Working setadalah pendekatan dari program lokalitas.

Contoh :

Keakuratanworking settergantung pada pemilihan .

1. Jika terlalu kecil, tidak akan dapat mewakilkan keseluruhan dari lokalitas.

2. Jika terlalu besar, akan menyebabkanoverlapbeberapa lokalitas.

3. Jika tidak terbatas,working setadalah kumpulanpagesepanjang eksekusi program.

Jika kita menghitung ukuran dariWorking Set, WWSi, untuk setiap proses pada sistem, kita hitungdengan D = WSSi, dimana D merupakan totaldemanduntukframe.

Jika total perminataan lebih dari total banyaknyaframeyang tersedia (D > m),thrashingdapat terjadikarena beberapa proses akan tidak memilikiframeyang cukup. Jika hal tersebut terjadi, dilakukan satupengeblokan dari proses-proses yang sedang berjalan.

StrategiWorking Setmenanganithrashingdengan tetap mempertahankan derajat darimultiprogrammingsetinggi mungkin.

Contoh : = 1000 referensi, Penghitung interupsi setiap 5000 referensi.

Ketika kita mendapat interupsi, kita menyalin dan menghapus nilai bit referensi dari setiap halaman. Jikakesalahan halaman muncul, kita dapat menentukan bit referensi sekarang dan 2 pada bit memori untukmemutuskan apakah halaman itu digunakan dengan 10000 ke 15000 referensi terakhir.

218

Page 239: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Jika digunakan, paling sedikit satu dari bit-bit ini akan aktif. Jika tidak digunakan, bit ini akan menjaditidak aktif.

Halaman yang memiliki paling sedikit 1 bit aktif, akan berada diworking-set.

Hal ini tidaklah sepenuhnya akurat karena kita tidak dapat memberitahukan dimana pada interval 5000tersebut, referensi muncul. Kita dapat mengurangi ketidakpastian dengan menambahkan sejarah bit kitadan frekuensi dari interupsi.

Contoh: 20 bit dan interupsi setiap 1500 referensi.

5.10.2.4. Frekuensi Kesalahan Halaman

Working-setdapat berguna untukprepaging, tetapi kurang dapat mengontrolthrashing. Strategimenggunakan frekuensi kesalahan halaman mengambil pendekatan yang lebih langsung.

Thrashingmemiliki kecepatan kasalahan halaman yang tinggi. Kita ingin mengontrolnya. Ketika terlalutinggi, kita mengetahui bahwa proses membutuhkanframelebih. Sama juga, jika terlalu rendah, makaproses mungkin memiliki terlalu banyakframe. Kita dapat menentukan batas atas dan bawah padakecepatan kesalahan halaman seperti terlihat pada gambar berikut ini.

Gambar : Kecepatanpage-fault

Jika kecepatan kasalahan halaman yang sesungguhnya melampaui batas atas, kita mengalokasikanframelain ke proses tersebut, sedangkan jika kecepatan kasalahan halaman di bawah batas bawah, kita

219

Page 240: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

pindahkanframedari proses tersebut. Maka kita dapat secara langsung mengukur dan mengontrolkecepatan kasalahan halaman untuk mencegahthrashing.

5.11. Pertimbangan LainPemilihan algoritma penggantian dan aturan alokasi adalah keputusan- keputusan utama yang kita buatuntuk sistem pemberian halaman. Selain itu, masih banyak pertimbangan lain.

5.11.1. PrepagingSebuah ciri dari sistem permintaan pemberian halaman murni adalah banyaknya kesalahan halaman yangterjadi saat proses dimulai. Situasi ini merupakan hasil dari percobaan untuk mendapatkan tempat padaawalnya. Situasi yang sama mungkin muncul di lain waktu. Misalnya saat prosesswapped-outdimulaikembali, seluruh halaman ada di cakram dan setiap halaman harus dibawa ke dalam memori yang akanmengakibatkan banyaknya kesalahan halaman.Prepagingmencoba untuk mencegah pemberian halamanawal tingkat tinggi ini. Strateginya adalah untuk membawa seluruh halaman yang akan dibutuhkan padasatu waktu ke memori

Sebagai contoh, pada sistem yang menggunakan modelworking set, untuk setiap proses terdapat daftardari semua halaman yang ada padaworking setnya. Jika kita harus menunda sebuah proses (karenamenunggu I/O atau kekuranganframebebas), daftarworking setuntuk proses tersebut disimpan. Saatproses itu akan dilanjutkan kembali (permintaan I/O telah terpenuhi atauframebebas yang cukup),secara otomatis seluruhworking set-nya akan dibawa ke dalam memori sebelum memulai kembaliproses tersebut.

Prepagingdapat berguna pada beberapa kasus. Yang harus dipertimbangkan adalah apakah biayamenggunakanprepaginglebih sedikit dari biaya menangani kesalahan halaman yang terjadi bila tidakmemakaiprepaging. Jika biayaprepaginglebih sedikit (karena hampir seluruh halaman yang diprepagedigunakan) makaprepagingakan berguna. Sebaliknya, jika biayaprepaginglebih besar (karena hanyasedikit halaman dari yang di-prepagedigunakan) makaprepagingakan merugikan.

5.11.2. Ukuran halamanPara perancang sistem operasi untuk mesin yang sudah ada jarang memiliki pilihan terhadap ukuranhalaman. Akan tetapi, saat merancang sebuah mesin baru, harus dipertimbangkan berapa ukuranhalaman yang terbaik. Pada dasarnya tidak ada ukuran halaman yang paling baik, karena banyaknyafaktor-faktor yang mempengaruhinya.

Salah satu faktor adalah ukuran tabel halaman. Untuk sebuah memori virtual dengan ukuran 4megabytes(2^22), akan ada 4.096 halaman berukuran 1.024bytes, tapi hanya 512 halaman jika ukuran halaman8.192bytes. Setiap proses yang aktif harus memiliki salinan dari tabel halaman-nya, jadi lebih masukakal jika dipilih ukuran halaman yang besar.

Di sisi lain, pemanfaatan memori lebih baik dengan halaman yang lebih kecil. Jika sebuah prosesdialokasikan di memori, mengambil semua halaman yang dibutuhkannya, mungkin proses tersebut tidakakan berakhir pada batas dari halaman terakhir. Jadi, ada bagian dari halaman terakhir yang tidak

220

Page 241: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

digunakan walaupun telah dialokasikan. Asumsikan rata-rata setengah dari halaman terakhir tidakdigunakan, maka untuk halaman dengan ukuran 256byteshanya akan ada 128bytesyang terbuang,bandingkan dengan halaman berukuran 8192bytes, akan ada 4096bytesyang terbuang. Untukmeminimalkan pemborosan ini, kita membutuhkan ukuran halaman yang kecil.

Masalah lain adalah waktu yang dibutuhkan untuk membaca atau menulis halaman. Waktu I/O terdiridari waktu pencarian,latencydan transfer. Waktu transfer sebanding dengan jumlah yang dipindahkan(yaitu, ukuran halaman). Sedangkan waktu pencarian danlatencybiasanya jauh lebih besar dari waktutransfer. Untuk laju pemindahan 2 MB/s, hanya dihabiskan 0.25 millidetik untuk memindahkan 512bytes. Waktulatencymungkin sekitar 8 millidetik dan waktu pencarian 20 millidetik. Total waktu I/O28.25 milidetik. Waktu transfer sebenarnya tidak sampai 1%. Sebagai perbandingan, untuk mentransfer1024bytes, dengan ukuran halaman 1024bytesakan dihabiskan waktu 28.5 milidetik (waktu transfer 0.5milidetik). Namun dengan halaman berukuran 512bytesakan terjadi 2 kali transfer 512bytesdenganmasing-masing transfer menghabiskan waktu 28.25 milidetik sehingga total waktu yang dibutuhkan 56.5milidetik. Kesimpulannya, untuk meminimalisasi waktu I/O dibutuhkan ukuran halaman yang lebihbesar.

Masalah terakhir yang akan dibahas disini adalah mengenai kesalahan halaman. Misalkan ukuranhalaman adalah 1byte. Sebuah proses sebesar 100 KB, dimana hanya setengahnya yang menggunakanmemori, akan menghasilkan kesalahan halaman sebanyak 51200 . Sedangkan bila ukuran halamansebesar 200 KB maka hanya akan terjadi 1 kali kesalahan halaman. Jadi untuk mengurangi jumlahkesalahan halaman dibutuhkan ukuran halaman yang besar.

Masih ada faktor lain yang harus dipertimbangkan (misalnya hubungan antara ukuran halaman denganukuran sektor pada peranti pemberian halaman). Tidak ada jawaban yang pasti berapa ukuran halamanyang paling baik. Sebagai acuan, pada 1990, ukuran halaman yang paling banyak dipakai adalah 4096bytes. Sedangkan sistem modern saat ini menggunakan ukuran halaman yang jauh lebih besar dari itu.

5.11.3. Jangkauan TLBHit ratio dariTLB adalah persentasi alamat virtual yang diselesaikan dalamTLBdaripada di tabelhalaman.Hit ratio sendiri berhubungan dengan jumlah masukan dalamTLBdan cara untukmeningkatkanhit ratio adalah dengan menambah jumlah masukan dariTLB. Tetapi ini tidaklah murahkarena memori yang dipakai untuk membuatTLB mahal dan haus akan tenaga.

Ada suatu ukuran lain yang mirip denganhit ratio yaitu jangkauanTLB. JangkauanTLBadalah jumlahmemori yang dapat diakses dariTLB, jumlah tersebut merupakan perkalian dari jumlah masukan denganukuran halaman. Idealnya,working setdari sebuah proses disimpan dalamTLB. Jika tidak, maka prosesakan menghabiskan waktu yang cukup banyak mengatasi referensi memori di dalam tabel halamandaripada diTLB. Jika jumlah masukan dariTLB dilipatgandakan, maka jangkauanTLB juga akanbertambah menjadi dua kali lipat. Tetapi untuk beberapa aplikasi hal ini masih belum cukup untukmenyimpanworking set.

Cara lain untuk meningkatkan jangkauanTLBadalah dengan menambah ukuran halaman. Bila ukuranhalaman dijadikan empat kali lipat dari ukuran awalnya(misalnya dari 32 KB menjadi 128 KB), makajangkauanTLB juga akan menjadi empat kali lipatnya. Namun ini akan meningkatkan fragmentasi untukaplikasi-aplikasi yang tidak membutuhkan ukuran halaman sebesar itu. Sebagai alternatif, OS dapatmenyediakan ukuran halaman yang bervariasi. Sebagai contoh, UltraSparc II menyediakan halamanberukuran 8 KB, 64 KB, 512 KB, dan 4 MB. Sedangkan Solaris 2 hanya menggunakan halaman ukuran8 KB dan 4 MB.

221

Page 242: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.11.4. Tabel Halaman yang DibalikKegunaan dari tabel halaman yang dibalik adalah untuk mengurangi jumlah memori fisik yangdibutuhkan untuk melacak penerjemahan alamat virtual-ke-fisik. Metode penghematan ini dilakukandengan membuat tabel yang memiliki hanya satu masukan tiap halaman memori fisik, terdaftar olehpasangan (proses-id, nomor-halaman).

Karena menyimpan informasi tentang halaman memori virtual yang mana yang disimpan di setiapframefisik, tabel halaman yang dibalik mengurangi jumlah fisik memori yang dibutuhkan untuk menyimpaninformasi ini. Bagaimana pun, tabel halaman yang dibalik tidak lagi mengandung informasi yanglengkap tentang ruang alamat logis dari sebuah proses, dan informasi itu dibutuhkan jika halaman yangdireferensikan tidak sedang berada di memori.Demand pagingmembutuhkan informasi ini untukmemproses kesalahan halaman. Agar informasi ini tersedia, sebuah tabel halaman eksternal (satu tiapproses) harus tetap disimpan. Setiap tabel tampak seperti tabel halaman per proses tradisional,mengandung informasi dimana setiap halaman virtual berada.

Tetapi, apakah tabel halaman eksternal menegasikan kegunaan tabel halaman yang dibalik? Karenatabel-tabel ini direferensikan hanya saat kesalahan halaman terjadi, mereka tidak perlu tersedia secaracepat. Namun, mereka dimasukkan atau dikeluarkan dari memori sesuai kebutuhan. Sayangnya, sekarangkesalahan halaman mungkin terjadi pada manager memori virtual, menyebabkan kesalahan halaman lainkarena pada saat mem-page intabel halaman eksternal, ia harus mencari halaman virtual padabackingstore. Kasus spesial ini membutuhkan penanganan di kernel dan penundaan pada prosespage-lookup.

5.11.5. Struktur ProgramPemilihan struktur data dan struktur permograman secara cermat dapat meningkatkanlocality dankarenanya menurunkan tingkat kesalahan halaman dan jumlah halaman diworking set. Sebuahstackmemiliki locality yang baik, karena akses selalu dari atas. Sebuahhash table, di sisi lain, didesain untukmenyebar referensi-referensi, menghasilkanlocality yang buruk. Tentunya, referensi akanlocalityhanyalah satu ukuran dari efisiensi penggunaan struktur data. Faktor-faktor lain yang berbobot berattermasuk kecepatan pencarian, jumlah total dari referensi dan jumlah total dari halaman yang disentuh.

5.11.6. I/O InterlockSaatdemand pagingdigunakan, kita terkadang harus mengizinkan beberapa halaman untuk dikunci dimemori . Salah satu situasi muncul saat I/O dilakukan ke atau dari memori pengguna (virtual) . I/Osering diimplementasikan oleh prosesor I/O yang terpisah. Sebagai contoh, sebuah pengendali pitamagnetik pada umumnya diberikan jumlahbytesyang akan dipindahkan dan alamat memori untukbuffer. Saat pemindahan selesai, CPU diinterupsi.

Harus diperhatikan agar urutan dari kejadian-kejadian berikut tidak muncul: Sebuah prosesmengeluarkan permintaan I/O, dan diletakkan di antrian untuk I/O tersebut. Sementara itu, CPUdiberikan ke proses- proses lain. Proses-proses ini menimbulkan kesalahan halaman, dan, menggunakanalgoritma penggantian global, salah satu dari mereka menggantikan halaman yang mengandung memoribufferuntuk proses yang menunggu tadi. Halaman-halaman untuk proses tersebut dikeluarkan.Kadang-kadang kemudian, saat permintaan I/O bergerak maju menuju ujung dari antrian peranti, I/Oterjadi ke alamat yang telah ditetapkan. Bagaimana pun,frameini sekarang sedang digunakan untukhalaman berbeda milik proses lain.

222

Page 243: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

Ada 2 solusi untuk masalah ini. Salah satunya adalah jangan pernah menjalankan I/O kepada memoripengguna. Sedangkan solusi lainnya adalah dengan mengizinkan halaman untuk dikunci dalam memori.

5.11.7. Pemrosesan Waktu NyataDiskusi-diskusi di bab ini telah dikonsentrasikan dalam menyediakan penggunaan yang terbaik secaramenyeluruh dari sistem komputer dengan meningkatkan penggunaan memori . Dengan menggunakanmemori untuk data yang aktif, dan memindahkan data yang tidak aktif ke cakram, kita meningkatkanthroughput. Bagaimana pun, proses individual dapat menderita sebagai hasilnya, sebab mereka sekarangmendapatkan kesalahan halaman tambahan selama eksekusi.

Pertimbangkan sebuah proses atauthreadwaktu-nyata. Proses tersebut berharap untuk memperolehkendali CPU, dan untuk menjalankan penyelesaian dengan penundaan yang minimum. Memori virtualadalah kebalikan dari komputasi waktu nyata, sebab dapat menyebabkan penundaan jangka panjangyang tidak diharapkan pada eksekusi sebuah proses saat halaman dibawa ke memori . Untuk itulah,sistem-sistem waktu nyata hampir tidak memiliki memori virtual.

5.11.8. Contoh pada Sistem OperasiPada bagian ini akan dibahas bagaimana Windows NT, Solaris 2, dan Linux mengimplementasi memorivirtual.

5.11.9. Windows NTWindows NT mengimplementasikan memori virtual dengan menggunakan permintaan halaman melaluiclustering. Clusteringmenanganani kesalahan halaman dengan menambahkan tidak hanya halaman yangterkena kesalahan, tetapi juga halaman-halaman yang berada disekitarnya. Saat proses pertama dibuat,dia diberikanworking setminimum yaitu jumlah minimum halaman yang dijamin akan dimiliki olehproses tersebut dalam memori . Jika memori yang cukup tersedia, proses dapat diberikan halamansampai sebanyakworking setmaximum. Manager memori virtual akan menyimpan daftar dari halamanframeyang bebas. Terdapat juga sebuah nilai batasan yang diasosiasikan dengan daftar ini untukmengindikasikan apakah memori yang tersedia masih mencukupi. Jika proses tersebut sudah sampaipadaworking setmaximum-nya dan terjadi kesalahan halaman, maka dia harus memilih halamanpengganti dengan aturan penggantian halaman lokal.

Saat jumlah memori bebas jatuh di bawah nilai batasan, manager memori virtual menggunakan sebuahtaktik yang dikenal sebagaiautomatic working set trimminguntuk mengembalikan nilai tersebut di atasbatasan. Hal ini bekerja dengan mengevaluasi jumlah halaman yang dialokasikan kepada proses. Jikaproses telah mendapat alokasi halaman lebih besar daripadaworking setminimum-nya, manager memorivirtual akan mengurangi jumlah halamannya sampaiworking-setminimum. Jika memori bebas sudahtersedia, proses yang bekerja padaworking setminimum dapat mendapatkan halaman tambahan.

223

Page 244: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.11.10. Solaris 2Dalam sistem operasi Solaris 2, jika sebuah proses menyebabkan terjadi kesalahan halaman, kernel akanmemberikan halaman kepada proses tersebut dari daftar halaman bebas yang disimpan. Akibat dari halini adalah, kernel harus menyimpan sejumlah memori bebas. Terhadap daftar ini ada dua parameter ygdisimpan yaituminfreedanlotsfree, yaitu batasan minimum dan maksimum dari memori bebas yangtersedia. Empat kali dalam tiap detiknya, kernel memeriksa jumlah memori yang bebas. Jika jumlahtersebut jatuh di bawahminfree, maka sebuah prosespageoutakan dilakukan, dengan pekerjaan sebagaiberikut. Pertamaclockakan memeriksa semua halaman dalam memori dan mengeset bit referensimenjadi 0. Saat berikutnya,clockkedua akan memeriksa bit referensi halaman dalam memori, danmengembalikan bit yang masih di set ke 0 ke daftar memori bebas. Hal ini dilakukan sampai jumlahmemori bebas melampaui parameterlotsfree. Lebih lanjut, proses ini dinamis, dapat mengatur kecepatanjika memori terlalu sedikit. Jika proses ini tidak bisa membebaskan memori , makakernelmemulaipergantian proses untuk membebaskan halaman yang dialokasikan ke proses-proses tersebut.

Gambar 5-20.Solar Page Scanner

sumber: Silberschatz,"Operating Systems: -- Fourth Edition", Prentice Hall, 2001

224

Page 245: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

5.11.11. LinuxSeperti pada solaris 2, linux juga menggunakan variasi dari algoritmaclock. Threaddari kernel linux(kswapd) akan dijalankan secara periodik (atau dipanggil ketika penggunaan memori sudah berlebihan).Jika jumlah halaman yang bebas lebih sedikit dari batas atas halaman bebas, makathreadtersebut akanberusaha untuk membebaskan tiga halaman. Jika lebih sedikit dari batas bawah halaman bebas,threadtersebut akan berusaha untuk membebaskan enam halaman dan tidur untuk beberapa saat sebelumberjalan lagi. Saat dia berjalan, akan memeriksa mem_map, daftar dari semua halaman yang terdapat dimemori. Setiap halaman mempunyaibyteumur yang diinisialisasikan ke tiga. Setiap kali halaman inidiakses, maka umur ini akan ditambahkan (hingga maksimum 20), setiap kali kswapd memeriksahalaman ini, maka umur akan dikurangi. Jika umur dari sebuah halaman sudah mencapai 0 maka dia bisaditukar. Ketika kswapd berusaha membebaskan halaman, dia pertama akan membebaskan halaman daricache, jika gagal dia akan mengurangicachesistem berkas, dan jika semua cara sudah gagal, maka diaakan menghentikan sebuah proses. Alokasi memori pada linux menggunakan dua buah alokasi yangutama, yaitu algoritmabuddydanslab. Untuk algoritmabuddy, setiap rutin pelaksanaan alokasi inidipanggil, dia memeriksa blok memori berikutnya, jika ditemukan dia dialokasikan, jika tidak makadaftar tingkat berikutnya akan diperiksa. Jika ada blok bebas, maka akan dibagi jadi dua, yang satudialokasikan dan yang lain dipindahkan ke daftar yang di bawahnya.

5.12. RangkumanMemori adalah pusat kegiatan pada sebuah komputer, karena setiap proses yang akan dijalankan harusmemlalui memori terlebih dahulu. CPU mengambil instruksi dari memori sesuai dengan yang ada padaprogram counter. Tugas sistem operasi adalah mengatur peletakan banyak proses pada suatu memori.

Sebelum masuk ke memori, suatu proses harus menunggu di sebuahinput queue, setelah itu barulahmereka akan diberikan alamat pada memori. Pemberian alamat dapat dilakukan pada waktucompile,waktu pemanggilan, dan waktu eksekusi. Alamat logika (virtual) adalah alamat yang dibentuk di CPU,sedangkan alamat fisik adalah alamat yang terlihat oleh memori. Seluruh proses dan data berada dalammemori ketika dieksekusi. Berhubung ukuran dari memori fisik terbatas, kita harus melakukanpemanggilan dinamis untuk mendapatkan utilisasi ruang memori yang baik.

Sebuah proses dapat di-swapsementara keluar memori ke sebuahbacking storeuntuk kemudian dibawamasuk lagi ke memori untuk melanjutkan pengeksekusian. Salah satu proses yang memanfaatkan metodeini adalahroll out, roll in, yang pada intinya adalah prosesswappingberdasarkan prioritas.

Agarmain memorydapat melayani sistem operasi dan proses dengan baik, dibutuhkan pembagianmemori seefisien mungkin. Salah satunya adalah dengancontiguous memory allocation. Artinya alamatmemori diberikan kepada OS secara berurutan dari kecil ke besar. Ruang memori yang masih kosongdan dapat dialokasikan untuk proses disebuthole. Metode pencarian hole ada beberapa, diantaranyaadalahfirst fit, next fit, best fit, worst fit. Masalah yang sering muncul dalam pengalamatan memoriadalah fragmentasi (baik intern maupun ekstern), yaitu munculnyahole-holeyang tidak cukup besaruntuk menampung permintaan dari proses.

Pagingadalah suatu metode yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidakberurutan. Prinsipnya adalah memecah memori fisik dan memori logika menjadi blok-blok denganukuran sama (disebutpage). Setelah itu kita membuatpage tableyang akan menerjemahkan memori

225

Page 246: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

logika menjadi memori fisik dengan perantaraMemory Management Unit (MMU), dan pengeksekusianproses akan mencari memori berdasarkan tabel tersebut.

Segmentasi adalah skema manajemen memori dengan cara membagi memori menjadi segmen-segmen.Berbeda denganpage, ukuran tiap segmen tidak harus sama dan memiliki ciri tertentu, yaitu nama danpanjang segmen.

Memori virtual adalah suatu teknik yang memisahkan antara memori logika dan memori fisiknya.Keuntungannya adalah memori virtual dapat menampung program dalam skala besar, menurunnya lalulintas I/O, ruang memori menjadi lebih leluasa, meningkatnya respon, dan bertambahnya jumlahuseryang dapat dilayani.Demand pagingadalah salah satu implementasi memori virtual yang umumdigunakan, yakni mengatur agarpagetidak akan dibawa ke memori fisik sampai benar-benardibutuhkan. Mengukur kinerjademand pagingadalah dengan mengukurEffective Access Time-nya.Beberapa teknik yang disediakan memori virtual untuk meningkatkan kinerja pembuatan danpengeksekusian suatu proses antara lain adalahcopy-on-writedanmemory-mapped files.

Konseppage replacementadalah jika tidak adaframeyang kosong, carilahframeyang tidak sedangdigunakan, lalu dikosongkan denganswappingdan ubah semua tabelnya sebagai indikasi bahwapagetersebut tidak akan lama berada di dalam memori. Beberapa algoritmapage replacement:First-in-First-Out (FIFO), Optimal,Counting, LRU, dan PerkiraanLRU.

Masalah yang penting dari alokasiframedengan penggunaan memori virtual adalah bagaimanamembagi memori dengan bebas untuk beberapa proses yang sedang dikerjakan. Contoh algoritma yanglazim digunakan adalahequal allocationdanproportional allocation.

Algoritmapage replacementdapat diklasifikasikan dalam 2 kategori, yaitu penggantian global danpenggantian lokal. Perbedaan antara keduanya terletak pada boleh tidaknya setiap proses memilihframepengganti dari semuaframeyang ada.

Utilitas dari CPU dapat menyebabkantrashing, dimana sistem sibuk melakukanswappingdikarenakanbanyaknyapage-faultyang terjadi. Efek dari trashing dapat dibatasi dengan algoritma penggantian lokalatau prioritas. Cara untuk mengetahui berapa banyak proses yang dibutuhkan suatu proses salah satunyaadalah dengan strategiworking set.

Pemilihan algoritma penggantian dan aturan alokasi adalah keputusan-keputusan utama yang kita buatuntuk sistempaging. Selain itu, ada beberapa pertimbangan lain, antara lainprepaging, TLB reach,ukuranpage, struktur program,I/O interlock, dan lain sebagainya. Beberapa contoh sistem operasi yangmengimplementasikan virtual memori adalah Windows NT, Solaris 2 dan Linux.

5.13. Latihan

1. Coba jelaskan tahapan-tahapan agar suatu proses bisa masuk ke dalam memori !

2. Jelaskan apa yang dimaksud dengan alamat logika dan alamat fisik !

3. Jelaskan apa yang dimaksud dengan pemanggilan dinamis beserta kegunaannya !

4. Apakah kegunaan darioverlays ?

5. Sebutkan faktor-faktor yang mempengaruhi proses swapping !

226

Page 247: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 5. Managemen Memori

6. Sebutkan keuntungan menggunakancontiguous memory allocationdibandingkan dengannon-contiguous memory allocation!

7. Apakah yang dimaksud denganpermasalahanstorage-allocationdinamis , dan sebutkan sertajelaskan solusi untuk mengatasi permasalahan tersebut !

8. Jelaskan perbedaan mengenai fragmentasi intern dengan fragmentasi ekstern !

9. Apakah yang dimaksud dengan metode "Pemberian Halaman" ? Jelaskan pula keuntungan dankerugian penggunaan metode ini?

10.Jelaskan cara kerja unit manajemen memori (MMU)!

11.Apakah yang dimaksud dengan Segmentasi ? Jelaskan pula bagaimana arsitektur segmentasi !

12.Apakah yang dimaksud dengancopy-on-write?

13.Apakah fungsi dari skema bitvalid-invalid?

14.Sebutkan persamaan dan/atau perbedaandemand pagingdandemand segmentation!

15.Bagaimanakah konsep dasar daripage replacement? Jelaskan secara singkat !

16.Sebutkan persamaan dan/atau perbedaan algoritma LFU dan algoritma MFU !

17.Apabila diberikanreference string3, 1, 5, 1, 1, 2, 4, 3, 5, 3, 1 dan dilakukanpage replacementalgoritma optimal dengan 3 frame. Berapakahpage-fault yang terjadi ?

18.Apakah penyebab terjadinyathrasing? Jelaskan !

19.Sebutkan perbedaan dan/atau persamaan alokasi global dan alokasi lokal !

20.Bagaimanakah perbedaan dan/atau persamaan Windows NT, Solaris 2, dan Linux dalammengimplementasikanvirtual memory?

5.14. RujukanBuku Sistem Operasi (Bahan Kuliah IKI-20230), Gabungan Kelompok Kerja 21-28 Semester Genap2002/2003

Avi Silberschatz, Peter Galvin, dan Greg Gagne, 2000,Applied Operating Systems: First Edition, JohnWiley & Sons.

Silberschatz, Galvin, Gagne. 2002.Operating System Concepts: 6th ed. John Wiley & Sons

Tanenbaum,Andrew S. Woodhull, Albert S. 1997.Operating Systems Design and Implementation:Second Edition. Prentice Hall.

http://limited.vlsm.org/v01/os/BahanKuliah/ppt/index.html

http://css.uni.edu

allan.ultra.nyu.edu/~gottlieb/courses/ 1999-00-spring/os/lecture-11.html

http://www.cs.wisc.edu/~solomon/cs537/paging.html

http://www.cs.princeton.edu/courses/archive/spring02/cs217/lectures/paging.pdf

http://cwx.prenhall.com/bookbind/pubbooks/tanenbaum/chapter0/deluxe.html

http://www.cs.jhu.edu/~yairamir/cs418/os5/

227

Page 248: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.1. Sistem BerkasSemua aplikasi komputer butuh menyimpan dan mengambil informasi. Ketika sebuah proses sedangberjalan, proses tersebut menyimpan sejumlah informasi yang terbatas, dibatasi oleh ukuran alamatvirtual. Untuk beberapa aplikasi, ukuran ini cukup, tapi untuk lainnya terlalu kecil.

Masalah berikutnya adalah apabila proses tersebut berhenti maka informasinya hilang. Padahal adabeberapa informasi yang penting dan harus bertahan beberapa waktu bahkan selamanya.

Adapun masalah ketiga yaitu sangatlah perlu terkadang untuk lebih dari satu proses mengakses informasisecara berbarengan. Untuk memecahkan masalah ini, informasi tersebut harus bisa berdiri sendiri tanpatergantung dengan sebuah proses.

Pada akhirnya kita memiliki masalah-masalah yang cukup signifikan dan penting untuk dicari solusinya.Pertama kita harus bisa menyimpan informasi dengan ukuran yang besar. Kedua, informasi harus tetapketika proses berhenti. Ketiga, informasi harus bisa diakses oleh lebih dari satu proses secara bersamaan.Solusi dari ketiga masalah diatas adalah sesuatu yang disebut berkas.

Berkas adalah sebuah unit tempat menyimpan informasi. Berkas ini dapat diakses lebih dari satu proses,dapat dibaca, dan bahkan menulis yang baru. Informasi yang disimpan dalam berkas harus persisten,dalam artian tidak hilang sewaktu proses berhenti. Berkas-berkas ini diatur oleh sistem operasi,bagaimana strukturnya, namanya, aksesnya, penggunaannya, perlindungannya, dan implementasinya.Bagian dari sistem operasi yang mengatur masalah-masalah ini disebut sistem berkas.

Untuk kebanyakan pengguna, sistem berkas adalah aspek yang paling terlihat dari sebuah sistem operasi.Dia menyediakan mekanisme untuk penyimpananonlinedan akses ke data dan program. Sistem berkasterbagi menjadi dua bagian yang jelas; koleksi berkas (masing-masing menyimpan data yang berkaitan)dan struktur direktori (mengatur dan menyediakan informasi mengenai semua berkas yang berada disistem). Sekarang marilah kita memperdalam konsep dari berkas tersebut.

6.1.1. Konsep BerkasBerkas adalah sebuah koleksi informasi berkaitan yang diberi nama dan disimpan di dalamsecondarystorage.Biasanya sebuah berkas merepresentasikan data atau program. Adapun jenis-jenis dari berkas:

• Text file:yaitu urutan dari karakter-karakter yang diatur menjadi barisan (dan mungkin halaman)

• Source file:yaitu urutan dari berbagai subroutine dan fungsi yang masing-masing kemudian diatursebagai deklarasi-deklarasi diikuti oleh pernyataan-pernyataan yang dapat diexecute.

• Object file:yaitu urutan dari byte-byte yang diatur menjadi blok-blok yang dapat dipahami olehpenghubung system.

• Executable file:adalah kumpulan dari bagian-bagian kode yang dapat dibawa ke memori dandijalankan oleh loader.

228

Page 249: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.1.2. Atribut berkasSelain nama dan data, sebuah berkas dikaitkan dengan informasi-informasi tertentu yang juga pentinguntuk dilihat pengguna, seperti kapan berkas itu dibuat, ukuran berkas, dan lain-lain. Kita akan sebutinformasi-informasi ekstra ini atribut. Setiap sistem mempunyai sistem atribusi yang berbeda- beda, tapipada dasarnya memiliki atribut-atribut dasar seperti berikut ini:

• Nama: nama berkas simbolik ini adalah informasi satu-satunya yang disimpan dalam format yangdapat dibaca oleh pengguna.

• Identifier: tanda unik ini yang biasanya merupakan sebuah angka, mengenali berkas didalam sebuahsistem berkas; tidak dapat dibaca oleh pengguna.

• Tipe: informasi ini diperlukan untuk sistem-sistem yang mendukung tipe berkas yang berbeda.

• Lokasi: informasi ini adalah sebuah penunjuk pada sebuahdevicedan pada lokasi berkas padadevicetersebut.

• Ukuran: ukuran dari sebuah berkas (dalam bytes, words, atau blocks) dan mungkin ukuran maksimumdimasukkan dalam atribut ini juga.

• Proteksi: informasi yang menentukan siapa yang bisa melakukanread, write, executedan lainnya.

• Waktu dan identifikasi pengguna: informasi ini dapat disimpan untuk pembuatan berkas, modifikasiterakhir, dan penggunaan terakhir. Data-data ini dapat berguna untuk proteksi, keamanan, danmonitoringpenggunaan.

6.1.3. Tipe berkasSalah satu atribut dari sebuah berkas yang cukup penting adalah tipe berkas. Saat kita mendesain sebuahsistem berkas, kita perlu mempertimbangkan bagaimana operating sistem akan mengenali berkas-berkasdengan tipe yang berbeda. Apabila sistem operasi bisa mengenali, maka menjalankan berkas tersebutbukan suatu masalah. Seperti contohnya, apabila kita hendak mengeprint bentukbinary-objectdarisebuah program, yang didapat biasanya adalah sampah, namun hal ini dapat dihindari apabila sistemoperasi telah diberitahu akan adanya tipe berkas tersebut.

Cara yang paling umum untuk mengimplementasikan tipe berkas tersebut adalah dengan memasukkantipe berkas tersebut ke dalam nama berkas. Nama berkas dibagi menjadi dua bagian. Bagian pertamaadalah nama dari berkas tersebut, dan yang kedua, atau biasa disebutextentionadalah tipe dari berkastersebut. Kedua nama ini biasanya dipisahkan dengan tanda ’.’, contoh: berkas.txt.

6.1.4. Operasi BerkasFungsi dari berkas adalah untuk menyimpan data dan mengizinkan kita membacanya. Dalam proses iniada beberapa operasi yang dapat dilakukan berkas. Adapun operasi-operasi dasar yang dilakukan berkas,yaitu:

• Membuat Berkas(Create):

229

Page 250: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Kita perlu dua langkah untuk membuat suatu berkas. Pertama, kita harus temukan tempat didalamsistem berkas. Kedua, sebuah entri untuk berkas yang baru harus dibuat dalam direktori. Entri dalamdirektori tersebut merekam nama dari berkas dan lokasinya dalam sistem berkas.

• Menulis sebuah berkas(Write):

Untuk menulis sebuah berkas, kita membuat sebuahsystem callyang menyebutkan nama berkas daninformasi yang akan di-nulis kedalam berkas.

• Membaca Sebuah berkas(Read):

Untuk membaca sebuah berkas menggunakan sebuah system call yang menyebut nama berkas yangdimana dalam blok memori berikutnya dari sebuah berkas harus diposisikan.

• Memposisikan Sebuah Berkas ((Reposition):)

Direktori dicari untuk entri yang sesuai dancurrent-file-positiondiberi sebuah nilai. Operasi ini didalam berkas tidak perlu melibatkan I/O, selain itu juga diketahui sebagaifile seek.

• Menghapus Berkas(Delete):

Untuk menghapus sebuah berkas kita mencari dalam direktori untuk nama berkas tersebut. Setelahditemukan, kita melepaskan semua spasi berkas sehingga dapat digunakan kembali oleh berkas-berkaslainnya dan menghapus entry direktori.

• Menghapus Sebagian Isi Berkas(Truncate):

User mungkin mau menghapus isi dari sebuah berkas, tapi menyimpan atributnya. Daripada memaksapengguna untuk menghapus berkas tersebut dan membuatnya kembali, fungsi ini tidak akan menggantiatribut, kecuali panjang berkas dan mendefinisikan ulang panjang berkas tersebut menjadi nol.

Keenam operasi diatas merupakan operasi-operasi dasar dari sebuah berkas yang nantinya bisadikombinasikan untuk membentuk operasi-operasi baru lainnya. Contohnya apabila kita ingin menyalinsebuah berkas, maka kita memakai operasicreate untuk membuat berkas baru,readuntuk membacaberkas yang lama, danwrite untuk menulisnya pada berkas yang baru.

6.1.5. Struktur BerkasBerkas dapat distruktur dalam beberapa cara. Cara yang pertama adalah sebuah urutanbytesyang tidakterstruktur. Akibatnya sistem operasi tidak tahu atau peduli apa yang ada dalam berkas, yang dilihatnyahanya bytes. Ini menyediakan fleksibilitas yang maksimum. User dapat menaruh apapun yang merekamau dalam berkas, dan sistem operasi tidak membantu, tapi tidak juga menghalangi.

Cara berikutnya, adalah denganrecord sequence. Dalam model ini, sebuah berkas adalah sebuah urutandari rekaman-rekaman yang telah ditentukan panjangnya, masing-masing dengan beberapa struktur

230

Page 251: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

internal. Artinya adalah bahwa sebuah operasireadmembalikan sebuah rekaman dan operasiwritemenimpa atau menambahkan suatu rekaman.

Struktur berkas yang ketiga, adalah menggunakan sebuahtree. Dalam struktur ini sebuah berkas terdiridari sebuahtreedari rekaman-rekaman tidak perlu dalam panjang yang sama, tetapi masing-masingmemiliki sebuahfield key dalam posisi yang telah ditetapkan dalam rekaman tersebut. Tree ini disortdalamfield key dan mengizinkan pencarian yang cepat untuk sebuahkey tertentu.

6.1.6. Metode AksesBerkas menyimpan informasi. Apabila sedang digunakan informasi ini harus diakses dan dibaca melaluimemori komputer. Informasi dalam berkas bisa diakses dengan beberapa cara. Berikut adalah beberapacaranya :

• Akses Sekuensial

Akses ini merupakan yang paling sederhana dan paling umum digunakan. Informasi di dalam berkasdiproses secara berurutan. Sebagai contoh, editor dan kompilator biasanya mengakses berkas dengancara ini.

• Akses Langsung

Metode berikutnya adalah akses langsung atau bisa disebutrelative access.Sebuah berkas dibuat darirekaman-rekaman logical yang panjangnya sudah ditentukan, yang mengizinkan program untukmembaca dan menulis rekaman secara cepat tanpa urutan tertentu.

6.2. Struktur DirektoriBeberapa sistem komputer menyimpan banyak sekali berkas-berkas dalam disk, sehingga diperlukansuatu struktur pengorganisasian data-data agar lebih mudah diatur.

6.2.1. Operasi DirektoriSilberschatz, Galvin dan Gagne mengkategorikan operasi-operasi terhadap direktori sebagai berikut:

• Mencari Berkas

Mencari lewat struktur direktori untuk dapat menemukan entri untuk suatu berkas tertentu.berkas-berkas dengan nama yang simbolik dan mirip, mengindikasikan adanya keterkaitan diantaraberkas-berkas tersebut. Oleh karena itu, tentunya perlu suatu cara untuk menemukan semua berkasyang benar-benar memenuhi kriteria khusus yang diminta.

• Membuat berkas

231

Page 252: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

berkas-berkas baru perlu untuk dibuat dan ditambahkan ke dalam direktori.

• Menghapus berkas

Saat suatu berkas tidak diperlukan lagi, berkas tsb perlu dihapus dari direktori.

• Menampillkan isi direktori

Menampilkan daftar berkas-berkas yang ada di direktori, dan semua isi direktori dari berkas-berkasdalam daftar tsb.

• Mengubah nama berkas

Nama berkas mencerminkan isi berkas terhadap pengguna. Oleh karena itu, nama berkas harus bisadiubah-ubah ketika isi dan kegunaannya sudah berubah atau tidak sesuai lagi. Mengubah nama berkasmemungkinkan posisinya berpindah dalam struktur direktori.

• Akses Sistem berkas

Mengakses tiap direktori dan tiap berkas dalam struktur direktori. Sangatlah dianjurkan untukmenyimpan isi dan stuktur dari keseluruhan sistem berkas setiap jangka waktu tertentu. Menyimpanjuga bisa berarti menyalin seluruh berkas ke pita magnetik. Teknik ini membuat suatu cadangansalinan dari berkas tersebut jika terjadi kegagalan sistem atau jika berkas itu tidak diperlukan lagi.

Sedangkan Tanenbaum juga menambahkan hal-hal berikut sebagai operasi yang dapat dilakukanterhadap direktori tersebut:

• Membuka direktori

• Menutup direktori

• Menambah direktori

• Mengubah nama direktori

• Menghubungkan berkas-berkas di direktori berbeda

• Menghapus hubungan berkas-berkas di direktori berbeda

6.2.2. Beberapa Struktur Direktori

6.2.2.1. Direktori Satu Tingkat (Single Level Directory)

Struktur Direktori ini merupakan struktur direktori yang paling sederhana. Semua berkas disimpandalam direktori yang sama.

232

Page 253: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-1. Single Level Directory

Direktori satu tingkat memiliki keterbatasan, yaitu bila berkas bertambah banyak atau bila sistemmemiliki lebih dari satu pengguna. Hal ini disebabkan karena tiap berkas harus memiliki nama yangunik.

6.2.2.2. Direktori Dua Tingkat (Two Level) Direktori

Membuat direktori yang terpisah untuk tiap pengguna, yang disebutUser File Directory(UFD). Ketikapengguna login, master directory berkas dipanggil. MFD memiliki indeks berdasarkan nama penggunadan setiap entri menunjuk pada UFD pengguna tersebut. Maka, pengguna boleh memiliki nama berkasyang sama dengan berkas lain.

Gambar 6-2. Two Level Directory

Meskipun begitu, struktur ini masih memiliki kerugian, terutama bila beberapa pengguna inginmengerjakan tugas secara kerjasama dan ingin mengakses berkas dari salah satu pengguna lain. Beberapasistem secara sederhana tidak mengizinkan berkas seorang pengguna diakses oleh pengguna lain.

6.2.2.3. Direktori dengan Struktur Tree (Tree- Structured Directory)

Dalam struktur ini, setiap pengguna dapat membuat subdirektori sendiri dan mengorganisasikanberkas-berkasnya. Dalam penggunaan normal, tiap pengguna memiliki apa yang disebut direktori saatini. Direktori saat ini mengandung berkas-berkas yang baru-baru ini digunakan oleh pengguna.

Gambar 6-3. Tree-Structured Directory

233

Page 254: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Terdapat 2 istilah,path(lintasan) relatif dan lintasan mutlak. Lintasan relatif adalah lintasan yangdimulai dari direktori saat ini, sedangkan lintasan mutlak adalah path yang dimulai dariroot directory.

6.2.2.4. Direktori dengan Struktur Graf Asiklik (Acyclic-StructuredDirectory) )

Direktori dengan strukturtreemelarang pembagian berkas/direktori. Oleh karena itu, struktur grafasiklik memperbolehkan direktori untuk berbagi berkas atau subdirektori. Jika ada berkas yang ingindiakses oleh dua pengguna atau lebih, maka struktur ini menyediakan fasilitassharing.

Gambar 6-4. Acyclic-Structured Directory

6.2.2.5. Direktori dengan Struktur Graf Umum

Masalah yang timbul dalam penggunaan struktur graf asiklik adalah meyakinkan apakah tidak ada siklus.Bila kita mulai dengan struktur direktori tingkat dua dan memperbolehkan pengguna untuk membuatsubdirektori, maka kita akan mendapatkan struktur direktoritree.Sangatlah mudah untukmempertahankan sifat pohon, akan tetapi, bila kita tambahkan sambungan pada direktori dengan strukturpohon, maka sifat pohon akan musnah dan menghasilkan struktur graf sederhana.

Gambar 6-5. General Graph Directory

Bila siklus diperbolehkan dalam direktori, tentunya kita tidak ingin mencari sebuah berkas 2 kali.Algoritma yang tidak baik akan menghasilkaninfinite loopdan tidak pernah berakhir. Oleh karena itudiperlukan skema pengumpulan sampah(garbage-collection scheme).

Skema ini menyangkut memeriksa seluruh sistem berkas dengan menandai tiap berkas yang dapatdiakses. Kemudian mengumpulkan apa pun yang tidak ditandai pada tempat yang kosong. Hal initentunya dapat menghabiskan banyak waktu.

234

Page 255: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.3. Konsep Mounting, Sharing, dan Proteksi

6.3.1. MountingMountingadalah proses mengkaitkan sebuah sistem berkas yang baru ditemukan pada sebuah piranti kestruktur direktori utama yang sedang dipakai. Piranti-piranti yang akan di-mountdapat berupacd-rom,disket atau sebuahzip-drive. Tiap- tiap sistem berkas yang akan di-mountakan diberikan sebuahmountpoint, atau sebuah direktori dalam pohon direktori sistem Anda, yang sedang diakses.

Sistem berkas yang dideskripsikan di /etc/fstab (fstab adalah singkatan darifilesystem tables) biasanyaakan di-mountsaat komputer baru mulai dinyalakan, tapi bisa juga me-mountsistem berkas tambahandengan menggunakan perintah:

mount [nama piranti]

atau bisa juga dengan menambahkan secara manualmount pointke berkas /etc/fstab. Daftar sistemberkas yang di-mountdapat dilihat kapan saja dengan menggunakan perintahmount. Karena izinnyahanya diaturread-onlydi berkas fstab, maka tidak perlu khawatir pengguna lain akan mencobamengubah dan menulismount pointyang baru.

Seperti biasa saat ingin mengutak-atik berkas konfigurasi seperti mengubah isi berkas fstab, pastikanuntuk membuat berkas cadangan untuk mencegah terjadinya kesalahan teknis yang bisa menyebabkansuatu kekacauan. Kita bisa melakukannya dengan cara menyediakan sebuah disket ataurecovery-diskdan mem-back-upberkas fstab tersebut sebelum membukanya di editor teks untuk diutak-atik.

Red Hat linux dan sistem operasi lainnya yang mirip dengan UNIX mengakses berkas dengan cara yangberbeda dari MS-DOS, Windows dan Macintosh. Di linux, segalanya disimpan di dalam sebuah lokasiyang bisa ditentukan dalam sebuah struktur data. Linux bahkan menyimpan perintah-perintah sebagaiberkas. Seperti sistem operasi modern lainnya, Linux memiliki strukturtree, hirarki, dan organisasidirektori yang disebut sistem berkas.

Semua ruang kosong yang tersedia didiskdiatur dalam sebuah pohon direktori tunggal. Dasar sistem iniadalah direktoriroot yang dinyatakan dengan sebuah garis miring ("/"). Pada linux, isi sebuah sistemberkas dibuat nyata tersedia dengan menggabungkan sistem berkas ke dalam sebuah sistem direktorimelalui sebuah proses yang disebutmounting.

Sistem berkas bisa di-mountmaupun di-umountyang berarti sistem berkas tersebut bisa tersambung atautidak dengan struktur pohon direktori. Perbedaannya adalah sistem berkas tersebut akan selalu di-mountke direktoriroot ketika sistem sedang berjalan dan tidak dapat di-mount. Sistem berkas yang laindi-mountseperlunya, contohnya yang berisihard driveberbeda denganfloppy diskatau CD-ROM.

6.3.1.1. Mounting Overview

Mountingmembuat sistem berkas, direktori, piranti dan berkas lainnya menjadi dapat digunakan dilokasi-lokasi tertentu, sehingga memungkinkan direktori itu menjadi bisa diakses. Perintahmountmenginstruksikan sistem operasi untuk mengkaitkan sebuah sistem berkas ke sebuah direktori khusus.

235

Page 256: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.3.1.2. Memahami Mount Point

Mount pointadalah sebuah direktori dimana berkas baru menjadi dapat diakses. Untuk me-mountsuatusistem berkas atau direktori, titikmount-nya harus berupa direktori, dan untuk me-mountsebuah berkas,mount point-nya juga harus berupa sebuah berkas.

Biasanya, sebuah sistem berkas, direktori, atau sebuah berkas di-mountke sebuahmount pointyangkosong, tapi biasanya hal tersebut tidak diperlukan. Jika sebuah berkas atau direktori yang akan menjadimount pointberisi data, data tersebut tidak akan bisa diakses selama direktori/berkas tersebut sedangdijadikanmount pointoleh berkas atau direktori lain. Sebagai akibatnya, berkas yang di-mountakanmenimpa apa yang sebelumnya ada di direktori/berkas tersebut. Data asli dari direktori itu bisa diakseskembali bila prosesmountingsudah selesai.

Gambar 6-6. Mount Point

Saat sebuah sistem berkas di-mountke sebuah direktori, izin direktoriroot dari berkas yang di-mountakan mengambil alih izin darimount point. Pengecualiannya adalah pada direktori induk akan memilikiatribut .. (double dot). Agar sistem operasi bisa mengakses sistem berkas yang baru, direktori induk darimount pointharus tersedia.

Untuk segala perintah yang membutuhkan informasi direktori induk, pengguna harus mengubah izin daridirektorimounted-over. Kegagalan direktorimounted-overuntuk mengabulkan izin bisa menyebabkanhasil yang tidak terduga, terutama karena izin dari direktorimounted-overtidak bisa terlihat. Kegagalanumum terjadi pada perintah pwd. Tanpa mengubah izin direktorimounted-over, akan timbul pesan errorseperti ini:

pwd: permission denied

Masalah ini bisa diatasi dengan mengatur agar izin setidaknya di-set dengan 111.

6.3.1.3. Mounting Sistem Berkas, Direktori, dan Berkas

Ada 2 tipemounting: remote mountingdanmountinglokal. Remote mountingdilakukan dengan sistemremotedimana data dikirimkan melalui jalur telekomunikasi.Remotesistem berkas seperti Network File

236

Page 257: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Systems (NFS), mengharuskan agar file diekspor dulu sebelum di-mount. mountinglokal dilakukan disistem lokal.

Tiap-tiap sistem berkas berhubungan dengan piranti yang berbeda. Sebelum kita menggunakan sebuahsistem berkas, sistem berkas tersebut harus dihubungkan dengan struktur direktori yang ada (bisarootatau berkas yang lain yang sudah tersambung).

Sebagai contoh, kita bisa me-mountdari /home/server/database kemount pointyang dispesifikasikansebagai /home/user1, /home/user2, and /home/user3:

• /home/server/database /home/user1

• /home/server/database /home/user2

• /home/server/database /home/user3

6.3.2. SharingKita bisa berbagi berkas dengan pengguna lainnya yang teregistrasi. Hal pertama yang harus kitalakukan adalah menentukan dengan siapa berkas tersebut akan dibagi dan akses seperti apa yang akandiberikan kepada mereka. Berbagi bekas berguna bagi pengguna yang ingin bergabung dengan penggunalain dan mengurangi usaha untuk mencapai sebuah hasil akhir.

6.3.2.1. Banyak Pengguna

Saat sebuah sistem operasi dibuat untukmultiple user, masalah berbagi berkas, penamaan berkas danproteksi berkas menjadi sangat penting. Oleh karena itu, sistem operasi harus bisamengakomodasikan/mengatur pembagian berkas dengan memberikan suatu struktur direktori yangmembiarkan pengguna untuk saling berbagi.

Berkaitan dengan permasalahan akses berkas, kita bisa mengijinkan pengguna lain untuk melihat,mengedit atau menghapus suatu berkas. Proses mengedit berkas yang menggunakanweb-file systemberbeda dengan menggunakan aplikasi seperti Windows Explorer. Untuk mengedit sebuah file denganweb-file system, kita harus menduplikasi berkas tersebut dahulu dariweb-file systemke komputer lokal,mengeditnya di komputer lokal, dan mengirim file tersebut kembali ke sistem dengan menggunakannama berkas yang sama.

Sebagai contoh, kita bisa mengizinkan semua pengguna yang terdaftar untuk melihat berkas-berkas yangada di direktori (tetapi mereka tidak bisa mengedit atau menghapus berkas tersebut). Contoh lainnya, kitabisa mengijinkan satu pengguna saja untuk melakukan apapun terhadap sebuah direktori dan segalaisinya (ijin untuk melihat semua berkas, mengeditnya, menambah berkas bahkan menghapus isi berkas).Kita juga bisa memberikan kesempatan bagi pengguna untuk mengubah izin dan kontrol akses darisebuah isi direktori, namun hal tersebut biasanya di luar kebiasaan, sebab seharusnya satu-satunyapengguna yang berhak mengubah izin adalah kita sendiri.

Sistem berkas web memungkinkan kita untuk menspesifikasikan suatu akses dalam tingkatan berkas.Jadi, kita bisa mengijinkan seluruh orang untuk melihat isi dari sebuah direktori atau mengijinkansebagian kecil pengguna saja untuk mengakses suatu direktori. Bahkan, dalam kenyataannya, kita bisamenspesifikasikan jenis akses yang berbeda dengan jumlah pengguna yang berbeda pula.

Kebanyakan pada sistem banyak pengguna menerapkan konsep direktor berkasowner/userdan group.

237

Page 258: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

• Owner: pengguna yang bisa mengubah atribut, memberikan akses, dan memiliki sebagian besarkontrol di dalam sebuah berkas atau direktori.

• Group: sebagian pengguna yang sedang berbagi berkas.

6.3.2.2. Remote File System

Jaringan menyebabkan berbagi data terjadi di seluruh dunia. Dalam metode implementasi pertama, yangdigunakan untuk berbagi data adalah program FTP (File Transfer Protocol). Yang kedua terbesar adalahDFS (Disributed File System) yang memungkinkan remote direktori terlihat dari mesin lokal. Metodeyang ketiga adalah WWW (World Wide Web)

FTP digunakan untuk akses anonim (mentransfer file tanpa memiliki account di sistem remote) danakses autentik (membutuhkan ijin). WWW biasanya menggunakan akses anonim, dan DFSmenggunakan akses autentik.

6.3.2.3. Cient-Server Model

• server: mesin yang berisi berkas

• klien: mesin yang mengakses berkas

Serverbisa melayani banyak pengguna dan klien bisa menggunakan banyak server. Proses identifikasiklien biasanya sulit, dan cara yang biasa digunakan adalah melacak alamat IP, namun karena alamat IPbisa dipalsukan, cara ini menjadi kurang efektif. Ada juga yang menggunakan proses kunci terenkripsi,namun hal ini lebih rumit lagi, sebab klien-server harus menggunakan algoritma enkripsi yang sama danpertukaran kunci yang aman.

6.3.3. ProteksiDalam pembahasan mengenai proteksi berkas, kita akan berbicara lebih mengenai sisi keamanan danmekanisme bagaimana menjaga keutuhan suatu berkas dari gangguan akses luar yang tidak dikehendaki.Sebagai contoh bayangkan saja Anda berada di suatu kelompok kerja dimana masing-masing staf kerjadisediakan komputer dan mereka saling terhubung membentuk suatu jaringan; sehingga setiappekerjaan/dokumen/ berkas dapat dibagi-bagikan ke semua pengguna dalam jaringan tersebut. Misalkanlagi Anda harus menyerahkan berkas RAHASIA.txt ke atasan Anda, dalam hal ini Anda harus menjaminbahwa isi berkas tersebut tidak boleh diketahui oleh staf kerja lain apalagi sampai dimodifikasi olehorang yang tidak berwenang. Suatu mekanisme pengamanan berkas mutlak diperlukan denganmemberikan batasan akses ke setiap pengguna terhadap berkas tertentu.

6.3.3.1. Tipe Akses

Proteksi berkaitan dengan kemampuan akses langsung ke berkas tertentu. Panjangnya, apabila suatusistem telah menentukan secara pasti akses berkas tersebut selalu ditutup atau selalu dibebaskan ke setiappengguna lain maka sistem tersebut tidak memerlukan suatu mekanisme proteksi. Tetapi tampaknyapengimplementasian seperti ini terlalu ekstrim dan bukan pendekatan yang baik. Kita perlu membagi

238

Page 259: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

akses langsung ini menjadi beberapa tipe-tipe tertentu yang dapat kita atur dan ditentukan (akses yangterkontrol).

Dalam pendekatan ini, kita mendapatkan suatu mekanisme proteksi yang dilakukan dengan caramembatasi tipe akses ke suatu berkas. Beberapa tipe akses tersebut antara lain:

• Read/Baca: membaca berkas

• Write/Tulis: menulis berkas

• Execute/Eksekusi: memasukkan berkas ke memori dan dieksekusi

• Append/Sisip: menulis informasi baru pada baris akhir berkas

• Delete/Hapus: menghapus berkas

• List/Daftar: mendaftar nama dan atribut berkas

Operasi lain sepertirename, copying, atauediting yang mungkin terdapat di beberapa sistem merupakangabungan dari beberapa tipe kontrol akses diatas. Sebagai contoh, menyalin sebuah berkas dikerjakansebagai runtutan permintaan baca dari pengguna. Sehingga dalam hal ini, seorang pengguna yangmemiliki kontrol aksesreaddapat pula meng-copy, mencetak dan sebagainya.

6.3.3.2. Kontrol Akses

Pendekatan yang paling umum dipakai dalam mengatasi masalah proteksi berkas adalah denganmembiarkan akses ke berkas ditentukan langsung oleh pengguna (dalam hal ini pemilik/pembuat berkasitu). Sang pemilik bebas menentukan tipe akses apa yang diperbolehkan untuk pengguna lain. Hal inidapat dilakukan dengan menghubungkan setiap berkas atau direktori dengan suatu daftar kontrol-akses(Access-Control Lists/ACL)yang berisi nama pengguna dan tipe akses apa yang diberikan kepadapengguna tersebut.

Sebagai contoh dalam suatu sistem VMS, untuk melihat daftar direktori berikut daftar kontrol-akses,ketik perintah "DIR/SECURITY", atau "DIR/SEC". Salah satu keluaran perintah itu adalah daftar sepertiberikut ini:

WWW-HOME.DIR;1 [HMC2000,WWART] (RW,RWED„E)(IDENTIFIER=WWW_SERVER_ACCESS,OPTIONS=DEFAULT,ACCESS=READ)(IDENTIFIER=WWW_SERVER_ACCESS,ACCESS=READ)

Baris pertama menunjukkan nama berkas tersebut WWW-HOME.DIR kemudian disebelahnya namagrup pemilik HMC2000 dan nama pengguna WWART diikuti dengan sekelompok tipe akses RW,RWED„E (R=Baca, W=Tulis, E=Eksekusi, D=Hapus). Dua baris dibawahnya itulah yang disebut daftarkonrol-akses. Satu-satu baris disebut sebagai masukan kontrol-akses(Access Control Entry/ACE)danterdiri dari 3 bagian. Bagian pertama disebut sebagai IDENTIFIER/Identifikasi, menyatakan nama grupatau nama pengguna (seperti [HMC2000, WWART]) atau akses khusus (sepertiWWW_SERVER_ACCESS). Bagian kedua merupakan daftar OPTIONS/Plihan-pilihan. Dan terakhiradalah daftar ijin ACCESS/akses, sepertireadatauexecute, yang diberikan kepada siapa saja yangmengacu pada bagian Identifikasi.

239

Page 260: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Cara kerjanya: apabila seorang pengguna meminta akses ke suatu berkas/direktori, sistem operasi akanmemeriksa ke daftar kontrol-akses apakah nama pengguna itu tercantum dalam daftar tersebut. Apabilabenar terdaftar, permintaan akses akan diberikan dan sebaliknya bila tidak, permintaan akses akanditolak.

Pendekatan ini memiliki keuntungan karena penggunaan metodologi akses yang kompleks sehingga sulitditembus sembarangan. Masalah utamanya adalah ukuran dari daftar akses tersebut. Bayangkan apabilakita mengijinkan semua orang boleh membaca berkas tersebut, kita harus mendaftar semua namapengguna disertai ijin akses baca mereka. Lebih jauh lagi, tehnik ini memiliki dua konsekuensi yangtidak diinginkan:

• Pembuatan daftar semacam itu merupakan pekerjaan yang melelahkan dan tidak efektif.

• Entri direktori yang sebelumnya memiliki ukuran tetap, menjadi ukuran yang bisa berubah-ubah,mengakibatkan lebih rumitnya manajemen ruang kosong.

Masalah ini bisa diselesaikan dengan penggunaan daftar akses yang telah disederhanakan.

Untuk menyederhanakan ukuran daftar kontrol akses, banyak sistem menggunakan tiga klasifikasipengguna sebagai berikut:

• Owner: pengguna yang telah membuat berkas tersebut.

• Group: sekelompok pengguna yang saling berbagi berkas dan membutuhkan akses yang sama.

• Universe: keseluruhan pengguna.

Pendekatan yang dipakai belum lama ini adalah dengan mengkombinasikan daftar kontrol-akses dengankonsep kontrol- akses pemilik, grup dan semesta yang telah dijabarkan diatas. Sebagai contoh, Solaris2.6 dan versi berikutnya menggunakan tiga klasifikasi kontrol-akses sebagai pilihan umum, tetapi jugamenambahkan secara khusus daftar kontrol-akses terhadap berkas/direktori tertentu sehingga semakinbaik sistem proteksi berkasnya.

Contoh lain yaitu sistem UNIX dimana konrol-aksesnya dinyatakan dalam 3 bagian. Masing-masingbagian merupakan klasifikasi pengguna (yi.pemilik, grup dan semesta). Setiap bagian kemudian dibagilagi menjadi 3 bit tipe akses-rwx, dimanar mengontrol akses baca,w mengontrol akses tulis danxmengontrol eksekusi. Dalam pendekatan ini, 9 bit diperlukan untuk merekam seluruh informasi proteksiberkas.

Berikut adalah keluaran dari perintah "ls -al" di sistem UNIX:

-rwxr-x--- 1 david karyawan 12210 Nov 14 20:12 laporan.txt

Baris di atas menyatakan bahwa berkas laporan.txt memiliki akses penuh terhadap pemilik berkas(yi.david), grupnya hanya dapat membaca dan mengeksekusi, sedang lainnya tidak memiliki akses samasekali.

6.3.3.3. Pendekatan Pengamanan Lainnya

Salah satu pendekatan lain terhadap masalah proteksi adalah dengan memberikan sebuah kata kunci(password)ke setiap berkas. Jika kata-kata kunci tersebut dipilih secara acak dan sering diganti,

240

Page 261: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

pendekatan ini sangatlah efektif sebab membatasi akses ke suatu berkas hanya diperuntukkan bagipengguina yang mengetahui kata kunci tersebut.

Meskipun demikian, pendekatan ini memiliki beberapa kekurangan, diantaranya:

• Kata kunci yang perlu diingat oleh pengguna akan semakin banyak, sehingga membuatnya menjaditidak praktis.

• Jika hanya satu kata kunci yang digunakan di semua berkas, maka jika sekali kata kunci itu diketahuioleh orang lain, orang tersebut dapat dengan mudah mengakses semua berkas lainnya. Beberapasistem (contoh: TOPS-20) memungkinkan seorang pengguna untuk memasukkaan sebuah kata kuncidengan suatu subdirektori untuk menghadapi masalah ini, bukan dengan satu berkas tertentu.

• Umumnya, hanya satu kata kunci yang diasosiasikan dengan semua berkas lain. Sehingga,pengamanan hanya menjadi semua-atau-tidak sama sekali. Untuk mendukung pengamanan padatingkat yang lebih mendetail, kita harus menggunakan banyak kata kunci.

6.4. Implementasi Sistem Berkas

6.4.1. Struktur Sistem BerkasDisk yang merupakan tempat terdapatnya sistem berkas menyediakan sebagian besar tempatpenyimpanan dimana sistem berkas akan dikelola.Disk memiliki dua karakteristik penting yangmenjadikandisksebagai media yang tepat untuk menyimpan berbagai macam berkas, yaitu:

• Data dapat ditulis ulang didisk tersebut, hal ini memungkinkan untuk membaca, memodifikasi, danmenulis didisk tersebut.

• Dapat diakses langsung ke setiap blok didisk. Hal ini memudahkan untuk mengakses setiap berkasbaik secara berurut maupun tidak berurut, dan berpindah dari satu berkas ke berkas lain dengan hanyamengangkathead diskdan menunggudiskberputar.

241

Page 262: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-7.Disk Organization

Untuk meningkatkan efisiensiI/O, pengiriman data antara memori dandiskdilakukan dalam setiap blok.Setiapblok merupakan satu atau lebih sektor. Setiapdiskmemiliki ukuran yang berbeda-beda, biasanyaberukuran 512bytes.

Sistem operasi menyediakan sistem berkas agar data mudah disimpan, diletakkan dan diambil kembalidengan mudah. Terdapat dua masalah desain dalam membangun suatu sistem berkas. Masalah pertamaadalah definisi dari sistem berkas. Hal ini mencakup definisi berkas dan atributnya, operasi ke berkas, danstruktur direktori dalam mengorganisasikan berkas-berkas. Masalah kedua adalah membuat algoritmadan struktur data yang memetakan struktur logikal sistem berkas ke tempat penyimpanan sekunder.

Sistem berkas dari sistem operasi yang sudahmoderndiimplementasikan dengan menggunakan strukturberlapis. Keuntungan struktur berlapis ini adalah fleksibilitas yang dimilikinya. Penggunaan dari strukturberlapis ini memungkinkan adanya implementasi yang lebih dari satu secara bersamaan, terutama padaI/O Controldan tingkatan organisasi berkas. Hal ini memungkinkan untuk mendukung lebih dari satuimplementasi sistem berkas.

242

Page 263: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-8.Layered File System

Lapisan struktur sistem berkas menghubungkan antara perangkat keras dengan aplikasi program yangada, yaitu (dari yang terendah):

• I/O control, terdiri atasdriver devicedaninterrupt handler. Driver deviceadalah perantarakomunikasi antara sistem operasi dengan perangkat keras.Input didalamnya berisikan perintah tingkattinggi seperti "ambil blok 133", sedangkanoutput-nya adalah perintah tingkat rendah, instruksispesifik perangkat keras yang digunakan olehcontroller perangkat keras.

• Basic file system, diperlukan untuk mengeluarkan perintahgenerickedevice driveruntukreaddanwrite pada suatu blok dalamdisk.

• File-organization module, informasi tentang alamat logika dan alamat fisik dari berkas tersebut.Modul ini juga mengatur sisadiskdengan melacak alamat yang belum dialokasikan dan menyediakanalamat tersebut saatpenggunaingin menulis berkas ke dalamdisk. Di dalamFile-organization modulejuga terdapatfree- space manager.

• Logical file-system, tingkat ini berisi informasi tentang simbol nama berkas, struktur dari direktori,dan proteksi dan sekuriti dari berkas tersebut. SebuahFile Control Block (FCB)menyimpan informasitentang berkas, termasuk kepemilikan, izin dan lokasi isi berkas.

Di bawah ini merupakan contoh dari kerja struktur berlapis ini ketika suatu program mau membacainformasi daridisk. Urutan langkahnya:

1. Application programmemanggil sistem berkas dengansystem call.

243

Page 264: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Contoh:read (fd, input, 1024)akan membacasectionsebesar 1 Kb daridiskdan menempatkannyake variabelinput.

2. Diteruskan kesystem call interface.

System call merupakansoftware interrupt. Jadi,interrupt handlersistem operasi akan memeriksaapakahsystem callyang menginterupsi.Interrupt handlerini akan memutuskan bagian dari sistemoperasi yang bertanggung jawab untuk menanganisystem call. Interrupt handlerakan meneruskansystem call.

3. Diteruskan kelogical file system.

Memasuki lapisan sistem berkas. Lapisan ini menyediakansystem call, operasi yang akan dilakukandan jenis berkas. Yang perlu ditentukan selanjutnya adalahfile organization moduleyang akanmeneruskan permintaan ini.File organization moduleyang akan digunakan tergantung dari tipesistem berkas dari berkas yang diminta.

Contoh: Misalkan kita menggunakan LINUX dan berkas yang diminta ada di Windows 95. Lapisanlogical file systemakan meneruskan permintaan kefile organization moduledari Windows 95.

4. Diteruskan kefile organization module.

File organization moduleyang mengetahui pengaturan (organisasi) direktori dan berkas padadisk.Sistem berkas yang berbeda memiliki organisasi yang berbeda. Windows 95 menggunakanVFAT-32. Windows NT menggunakan format NTFS. Linux menggunakan EXT2. Sistem operasiyang palingmodernmemiliki beberapafile organization modulesehingga bisa membaca formatyang berbeda.

Pada contoh di atas,logical file systemtelah meneruskan permintaan kefile organization moduleVFAT32. Modul ini menterjemahkan nama berkas yang ingin dibaca ke lokasi fisik yang biasanyaterdiri daridiskantarmuka,disk drive, surface, cylinder, track, sector.

5. Diteruskan kebasic file system.

Dengan adanya lokasi fisik, kita bisa memberikan perintah ke piranti keras yang dibutuhkan. Hal inimerupakan tanggungjawabbasic file system. Basic file systemini juga memiliki kemampuantambahan sepertibufferingdancaching.

Contoh: Sektor tertentu yang dipakai untuk memenuhi permintaan mungkin saja berada dalambuffersataucachesyang diatur olehbasic file system. Jika terjadi hal seperti ini, maka informasiakan didapatkan secara otomatis tanpa perlu membaca lagi daridisk.

6. I/O Control

Tingkatan yang paling rendah ini yang memiliki cara untuk memerintah/memberitahu piranti kerasyang diperlukan.

244

Page 265: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.4.2. Implementasi Sistem Berkas

6.4.2.1. Gambaran

Untuk mengimplementasikan suatu sistem berkas biasanya digunakan beberapa strukturon-diskdanin-memory. Struktur ini bervariasi tergantung pada sistem operasi dan sistem berkas, tetapi beberapaprinsip dasar harus tetap diterapkan. Pada strukturon-disk, sistem berkas mengandung informasi tentangbagaimana mem-bootsistem operasi yang disimpan, jumlah blok, jumlah dan lokasi blok yang masihkosong, struktur direktori, dan berkas individu.

Strukturon-disk:

• Boot Control Block

Informasi yang digunakan untuk menjalankan mesin mulai dari partisi yang diinginkan untukmenjalankan mesin mulai dari partisi yang diinginkan. Dalam UPS disebutboot block. Dalam NTFSdisebutpartition boot sector.

• Partition Block Control

Spesifikasi atau detil-detil dari partisi (jumlah blok dalam partisi, ukuran blok, ukuran blok, dsb).Dalam UPS disebutsuperblock. Dalam NTFS disebut tabelmaster file.

• Struktur direktori

Mengatur berkas-berkas

• File Control Block (FCB)

Detil-detil berkas yang spesifik. Di UPS disebutinode. Di NTFS, informasi ini disimpan di dalamtabelMaster File.

Struktur in-memory:

• Tabel Partisiin-memory

Informasi tentang partisi yang di-mount.

• Struktur Direktoriin-memory

Menyimpan informasi direktori tentang direktori yang paling sering diakses.

• Tabelsystem-wide open-file

• menyimpanopen count(informasi jumlah proses yang membuka berkas tsb)

• menyimpan atribut berkas (pemilik, proteksi, waktu akses, dsb), dan lokasifile blocks.

245

Page 266: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

• Tabel ini digunakan bersama-sama oleh seluruh proses.

• Tabelper-process open-file

• menyimpanpointerke entri yang benar dalam tabelopen- file

• menyimpan posisi pointer pada saat itu dalam berkas.

• modus akses

Untuk membuat suatu berkas baru, program aplikasi memanggillogical file system. Logical file systemmengetahui format dari struktur direktori. Untuk membuat berkas baru,logical file systemakanmengalokasikan FCB, membaca direktori yang benar ke memori, memperbaharui dengan nama berkasdan FCB yang baru dan menulisnya kembali ke dalamdisk.

Beberapa sistem operasi, termasuk UNIX, memperlakukan berkas sebagai direktori. Sistem operasiWindows NT mengimplementasi beberapasystem callsuntuk berkas dan direktori. Windows NTmemperlakukan direktori sebagai sebuah kesatuan yang berbeda dengan berkas.Logical file systembisamemanggilfile-organization moduleuntuk memetakan direktoriI/O kedisk-block numbers, yangdikirimkan ke sistem berkas dasar danI/O control system. File- organization modulejugamengalokasikan blok untuk penyimpanan data-data berkas.

Setelah berkas selesai dibuat, mula-mula harus dibuka terlebih dahulu. Perintahopendikirim namaberkas ke sistem berkas. Ketika sebuah berkas dibuka, struktur direktori mencari nama berkas yangdiinginkan. Ketika berkas ditemukan, FCD disalin ke ke tabelsystem-wide open-filepada memori. Tabelini juga mempunyai entri untuk jumlah proses yang membuka berkas tersebut.

Selanjutnya, entri dibuat di tabelper-process open-filedengan penunjuk ke entri di dalam tabelsystem-wide open-file. Seluruh operasi pada berkas akan diarahkan melalui penunjuk ini.

6.4.2.2. Partisi dan Mounting

Setiap partisi bisa merupakanraw ataucooked. Rawadalah partisi yang tidak memiliki sistem berkasdan cooked sebaliknya.Raw diskdigunakan jika tidak ada sistem berkas yang tepat.Raw diskjuga dapatmenyimpan informasi yang dibutuhkan oleh sistemdiskRAID dandatabasekecil yang menyimpaninformasi konfigurasi RAID.

Informasibootbisa disimpan di partisi yang berbeda. Semuanya mempunyai formatnya masing-masingkarena pada saatboot, sistem tidak punya sistem berkas dari perangkat keras dan tidak bisa memahamisistem berkas.

Root partitionyang mengandungkernelsistem operasi dan sistem berkas yang lain, di-mountsaatboot.Partisi yang lain di-mountsecara otomatis atau manual (tergantung sistem operasi). Sistem operasimenyimpan dalam struktur tabelmountdimana sistem berkas di-mount dan tipe dari sistem berkas.

Pada UNIX, sistem berkas dapat di-mountdi direktori manapun. Ini diimplementasikan denganmengaturflagdi salinanin-memorydari tipe direktori itu.Flag itu mengindikasikan bahwa direktoriadalah puncakmount.

246

Page 267: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.4.2.3. Sistem Berkas Virtual

Suatu direktori biasanya menyimpan beberapa berkas dengan tipe-tipe yang berbeda. Sistem operasiharus bisa menyatukan berkas-berkas berbeda itu di dalam suatu struktur direktori. Untuk menyatukanberkas-berkas tersebut digunakan metode implementasi beberapa tipe sistem berkas dengan menulis didirektori danfile routineuntuk setiap tipe.

Sistem operasi pada umumnya, termasuk UNIX, menggunakan teknik berorientasi objek untukmenyederhakan, mengorganisir dan mengelompokkannya sesuai dengan implementasinya. Penggunaanmetode ini memungkinkan berkas-berkas yang berbeda jenisnya diimplementasikan dalam struktur yangsama.

Implementasi spesifiknya menggunakan struktur data dan prosedur untuk mengisolasi fungsi dasar darisystem call.

Gambar 6-9.Schematic View of Virtual File System

Implementasi sistem berkas terdiri dari 3 lapisan utama:

• Interfacesistem berkas: perintahopen, read, write, closedanfile descriptor.

• Virtual File System(VFS)

Virtual file systemadalah suatu lapisan perangkat lunak dalam kernel yang menyediakan antar mukasistem berkas untuk programuserspace. VFS juga menyediakan suatu abstraksi dalam kernel yang

247

Page 268: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

mengijinkan implementasi sistem berkas yang berbeda untuk muncul.

VFS ini memiliki 2 fungsi yang penting yaitu:

• Memisahkan operasi berkasgenericdari implementasinya dengan mendefinisikan VFS antar mukayang masih baru.

• VFS didasarkan pada strukturfile- representationyang dinamakanvnode, yang terdiri daridesignatornumerik untuk berkas uniknetwork-wide.

• Sistem berkas lokal dan sistem berkasremoteuntuk jaringan.

6.4.3. Implementasi DirektoriSebelum sebuah berkas dapat dibaca, berkas tersebut harus dibuka terlebih dahulu. Saat berkas tersebutdibuka, sistem operasi menggunakanpath nameyang dimasukkan oleh pengguna untuk mengalokasikandirektori entri yang menyediakan informasi yang dibutuhkan untuk menemukanblock disktempat berkasitu berada. Tergantung dari sistem tersebut, informasi ini bisa berupa alamatdiskdari berkas yangbersangkutan (contiguous allocation), nomor dari blok yang pertama (kedua skemalinked list), ataunomor dariinode. Dalam semua kasus, fungsi utama dari direktori entri adalah untuk memetakan namaASCII dari berkas yang bersangkutan kepada informasi yang dibutuhkan untuk mengalokasikan data.

Masalah berikutnya yang kemudian muncul adalah dimana atribut yang dimaksud akan disimpan.Kemungkinan paling nyata adalah menyimpan secara langsung di dalam direktori entri, dimanakebanyakan sistem menggunakannya. Untuk sistem yang menggunakaninodes, kemungkinan lainadalah menyimpan atribut ke dalaminode, selain dari direktori entri. Cara yang terakhir ini mempunyaikeuntungan lebih dibandingkan menyimpan dalam direktori entri.

Cara pengalokasian direktori dan pengaturan direktori dapat meningkatkan efisiensi, performa dankehandalan. Ada beberapa macam algoritma yang dapat digunakan.

6.4.3.1. Algoritma

6.4.3.1.1. Linear List

Metode paling sederhana. Menggunakan nama berkas dengan penunjuk ke data blok.

Proses:

• Mencari (tidak ada nama berkas yang sama)

• Menambah berkas baru pada akhir direktori

• Menghapus (mencari berkas dalam direktori dan melepaskan tempat yang dialokasikan)

248

Page 269: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Penggunaan suatu berkas:

Memberi tanda atau menambahkan pada daftar direktori bebas.

Kelemahan:

Pencarian secaralinier (linier search)untuk mencari sebuah berkas, sehingga implementasi sangatlambat saat mengakses dan mengeksekusi berkas.

Solusi:

Linked listdanSoftware Cache

6.4.3.1.2. Hash Table

Linear Listmenyimpan direktori entri, tetapi sruktur datahashjuga digunakan.

Proses:

Hash tablemengambil nilai yang dihitung dari nama berkas dan mengembalikan sebuah penunjuk kenama berkas yang ada dilinier list.

Kelemahan:

• Ukuran tetap:

• Adanya ketergantungan fungsihashdengan ukuranhash table

Alternatif:

Chained-overflow hash tableyaitu setiaphash tablemempunyailinked listdari nilai individual dancrashdapat diatasi dengan menambah tempat padalinked list tersebut. Namun penambahan ini dapatmemperlambat.

6.4.3.2. Direktori pada CP/M

Direktori pada CP/M merupakan direktori entri yang mencakup nomorblock diskuntuk setiap berkas.Contoh direktori ini (Golden dan Pechura, 1986), berupa satu direktori saja. Jadi, Semua sistem berkasharus melihat nama berkas dan mencari dalam direktori satu-satunya ini.

Direktori ini terdiri dari 3 bagian yaitu:

• User Code

Merupakan bagian yang menetapkantrack dariusermana yang mempunyai berkas yangbersangkutan, saat melakukan pencarian, hanya entri tersebut yang menuju kepadalogged-in useryang bersangkutan. Dua bagian berikutnya terdiri dari nama berkas dan ekstensi dari berkas.

• Extent

Bagian ini diperlukan oleh berkas karena berkas yang berukuran lebih dari 16 blok menempatidirektori entri yang banyak. Bagian ini digunakan untuk memberitahukan entri mana yang datangpertama, kedua, dan seterusnya.

249

Page 270: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

• Block Count

Bagian ini memberitahukan seberapa banyak dari ke-enambelasblock diskpotensial, sedangdigunakan. Enambelas bagian akhir berisi nomorblock diskyang bersangkutan. Bagian blok yangterakhir bisa saja penuh, jadi sistem tidak bisa menentukan kapasitas pasti dari berkas sampai kebyteyang terakhir.

Saat CP/M menemukan entri, CP/M juga memakai nomorblock disk, saat berkas disimpan dalamdirektori entri, dan juga semua atributnya. Jika berkas menggunakanblock disklebih dari satu entri,berkas dialokasikan dalam direktori yang ditambahkan.

6.4.3.3. Direktori pada MS-DOS

Merupakan sistem dengantree hierarchy directory. Mempunyai panjang 32bytes, yang mencakup namaberkas, atribut, dan nomor dariblock diskyang pertama. Nomor dariblock diskyang pertama digunakansebagai indeks dari tabel MS-DOS direktori entri. Dengan sistem rantai, semua blok dapat ditemukan.

Dalam MS-DOS, direktori bisa berisi direktori lain, tergantung dari hirarki sistem berkas. DalamMS-DOS, program aplikasi yang berbeda bisa dimulai oleh setiap program dengan membuat direktoridalam direktoriroot, dan menempatkan semua berkas yang bersangkutan di dalam sana. Jadi antaraplikasi yang berbeda tidak dapat terjadi konflik.

6.4.3.4. Direktori pada UNIX

Struktur direktori yang digunakan dalam UNIX adalah struktur direktori tradisional. Seperti yangterdapat dalam gambar direktori entri dalam UNIX, setiap entri berisi nama berkas dan nomorinodeyang bersangkutan. Semua informasi dari tipe, kapasitas, waktu dan kepemilikan, sertablock diskyangberisi inode. Sistem UNIX terkadang mempunyai penampakan yang berbeda,tetapi pada beberapa kasus,direktori entri biasanya hanyastringASCII dan nomorinode.

Gambar 6-10.A UNIX directory entry

Saat berkas dibuka, sistem berkas harus mengambil nama berkas dan mengalokasikanblock diskyangbersangkutan, sebagai contoh, namapath/usr/ast/mbox dicari, dan kita menggunakan UNIX sebagaicontoh, tetapi algoritma yang digunakan secara dasar sama dengan semua hirarki sistem direktori sistem.

Pertama, sistem berkas mengalokasikan direktoriroot. Dalam UNIX inodeyang bersangkutanditempatkan dalam tempat yang sudah tertentu dalamdisk. Kemudian, UNIX melihat komponen pertama

250

Page 271: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

daripath, usr dalam direktori root menemukan nomorinodedari direktori /usr. Mengalokasikan sebuahnomorinodeadalah secarastraight-forward, sejak setiapinodemempunyai lokasi yang tetap dalamdisk.Dari inodeini, sistem mengalokasikan direktori untuk /usr dan melihat komponen berikutnya, dst. Saatdia menemukan entri untuk ast, dia sudah mempunyaiinodeuntuk direktori /ust/ast. Dariinodeini, diadapat menemukan direktorinya dan melihat mbox.Inodeuntuk berkas ini kemudian dibaca ke dalammemori dan disimpan disana sampai berkas tersebut ditutup.

Namapathdilihat dengan cara yang relatif sama dengan yang absolut. Dimulai dari direktori yangbekerja sebagai penggantiroot directory. Setiap direktori mempunyai entri untuk . dan .. yangdimasukkan ke dalam saat direktori dibuat. Entri . mempunyai nomorinodeyang menunjuk ke direktoridi atasnya / orangtua (parent), . kemudian melihat ../dick/prog.c hanya melihat tanda .. dalam direktoriyang bekerja, dengan menemukan nomorinodedalam direktori di atasnya / parent dan mencari direktoridisk. Tidak ada mekanisme spesial yang dibutukan untuk mengatasi masalah nama ini. Sejauh masih didalam sistem direktori, mereka hanya merupakan ASCII string yang biasa.

6.5. Filesystem Hierarchy Standard

6.5.1. PendahuluanFilesystem Hierarchy Standard(FHS) adalah standar yang digunakan oleh perangkat lunak danpengguna untuk mengetahui lokasi dari berkas atau direktori yang berada pada komputer. Hal inidilakukan dengan cara menetapkan prinsip-prinsip dasar pada setiap daerah pada sistem berkas,menetapkan berkas dan direktori minimum yang dibutuhkan, mengatur banyaknya pengecualian danmengatur kasus yang sebelumnya pernah mengalami konflik secara spesifik.

Dokumen FHS ini digunakan oleh pembuat perangkat lunak untuk menciptakan suatu aplikasi yangcompliantdengan FHS. Selain itu, dokumen ini juga digunakan oleh para pembuat sistem operasi untukmenyediakan sistem yangcompliantdengan FHS.

Komponen dari nama berkas yang dapat berubah-ubah, akan diapit oleh tanda < dan >, sedangkankomponen yang bersifat pilihan, akan diapit oleh tanda "[" dan "]" dan dapat dikombinasi dengan ’<’ dan’>’. Sebagai contoh, jika nama berkas diperbolehkan untuk menggunakan atau tidak menggunakanekstensi, akan ditulis sebagai <nama berkas>[.<ekstensi>]. Sedangkan, variabelsubstringdari namadirektori atau nama berkas akan ditulis sebagai "*".

6.5.2. Sistem BerkasTerdapat dua perbedaan yang saling independen dalam berkas, yaitushareablevs.unshareabledanvariablevs.static. Secara umum, berkas-berkas yang memiliki perbedaan seperti di atas sebaiknyadiletakkan dalam direktori yang berbeda. Hal ini mempermudah penyimpanan berkas dengankarakteristik yang berbeda dalam sistem berkas yang berbeda.

Berkasshareableadalah berkas yang disimpan di satu komputer, namun masih dapat digunakan olehkomputer lainnya. Sedangkan berkasunshareabletidak dapat digunakan bersama-sama antar komputeryang satu dan lainnya.

251

Page 272: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Berkasstaticmeliputi berkas biner, pustaka, dokumentasi dan berkas-berkas lain yang tidak dapatdiubah tanpa intervensi administrator sistem. Sedangkan, berkasvariableadalah semua berkas yangbukan merupakan berkasstatic.

6.5.3. Sistem Berkas Root

6.5.3.1. Tujuan

Isi dari sistem berkasroot harus memadai untuk melakukan operasiboot, restore, recoverdan atauperbaikan pada sistem.

Untuk melakukan operasibootpada sistem, perlu dilakukan hal-hal untukmountingsistem berkas lain.Hal ini meliputi konfigurasi data, informasiboot loaderdan keperluan-keperluan lain yang mengaturstart-updata.

Untuk melakukanrecoverydan atau perbaikan dari sistem, hal-hal yang dibutuhkan untuk mendiagnosadan memulihkan sistem yang rusak harus diletakkan dalam sistem berkasroot.

Untuk restoresuatu sistem, hal-hal yang dibutuhkan untukback-upsistem, sepertifloppy disk, tape,dsb,harus berada dalam sistem berkasroot.

Aplikasi pada komputer tidak diperbolehkan untuk membuat berkas atau subdirektori di dalamdirektori root, karena untuk meningkatkanperformancedan keamanan, partisiroot sebaiknya dibuatseminimum mungkin. Selain itu, lokasi-lokasi lain dalam FHS menyediakan fleksibilitas yang lebih daricukup untukpackagemanapun.

6.5.3.2. Persyaratan

Terdapat beberapa direktori yang merupakan persyaratan dari sistem berkasroot. Setiap direktori akandibahas dalam sub-bagian di bawah. /usr dan /var akan dibahas lebih mendetail karena direktori tersebutsangat kompleks.

Tabel 6-1. Direktori/link yang dibutuhkan dalam /.

Direktori Keterangan

bin Instruksi dasar biner

boot Berkas statik untuk me-load boot

dev Berkas peranti

etc Konfigurasi sistemhost-specific

lib Pustaka dasar bersama dan modulkernel

media Mount pointuntuk media-mediaremovable

mnt Mount pointuntukmountingsistem berkas secaratemporer

opt Penambahan aplikasipackageperangkat lunak

sbin Sistem biner dasar

srv Data untuk servis yang disediakan oleh sistem

252

Page 273: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Direktori Keterangan

tmp Berkas temporer

usr Hirarki sekunder

var Data variabel

6.5.3.3. Pilihan Spesifik

Tabel 6-2. Direktori/link yang dibutuhkan dalam /.

Direktori Keterangan

home Direktori homepengguna

lib<qual> Format alternatif dari pustaka dasar bersama

root Direktori homeuntukroot pengguna

6.5.3.4. /bin: Perintah biner dasar (untuk digunakan oleh semuapengguna)

/bin berisi perintah-perintah yang dapat digunakan oleh administrator sistem dan pengguna, namundibutuhkan apabila tidak ada sistem berkas lain yang di-mount. /bin juga berisi perintah-perintah yangdigunakan secara tidak langsung olehscript.

6.5.3.5. /boot: Berkas statik untuk me- load boot

Dalam direktori ini, terdapat segala sesuatu yang dibutuhkan untuk melakukanbootproses. /bootmenyimpan data yang digunakan sebelumkernelmulai menjalankan program mode pengguna. Hal inidapat meliputi sektormaster bootdan sektor berkas map.

6.5.3.6. /dev: Berkas peranti

Direktori /dev adalah lokasi dari berkas-berkas peranti. Direktori ini harus memiliki perintah bernama"MAKEDEV" yang dapat digunakan untuk menciptakan peranti secara manual. Jika dibutuhkan,"MAKEDEV" harus memiliki segala ketentuan untuk menciptakan peranti-peranti yang ditemukandalam sistem, bukan hanya implementasi partikular yang di-install.

6.5.3.7. /etc: Konfigurasi sistem host-specific

Direktori /etc mernyimpan berkas-berkas konfigurasi. Yang dimaksud berkas konfigurasi adalah berkaslokal yang digunakan untuk mengatur operasi dari sebuah program. Berkas ini harus statik dan bukanmerupakan binerexecutable.

253

Page 274: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.5.3.8. /home: Direktori home pengguna

/home adalah konsep standar sistem berkas yangsite-specific, artinyasetupdalam hostyang satu danyang lainnya akan berbeda-beda. Maka, program sebaiknya tidak diletakkan dalam direktori ini.

6.5.3.9. /lib: Pustaka dasar bersama dan modul kernel

Direktori /lib meliputi gambar-gambar pustaka bersama yang dibutuhkan untukbootsistem tersebut danmenjalankan perintah dalam sistem berkasroot, contohnya berkas biner di /bin dan /sbin.

6.5.3.10. /lib<qual>: Format alternatif dari pustaka dasar bersama

Pada sistem yang mendukung lebih dari satu format biner, mungkin terdapat satu atau lebih perbedaandari direktori /lib. Jika direktori ini terdapat lebih dari satu, maka persyaratan dari isi tiap direktori adalahsama dengan direktori /lib normalnya, namun /lib<qual>/cpp tidak dibutuhkan.

6.5.3.11. /media: Mount point media removable

Direktori ini berisi subdirektori yang digunakan sebagaimount pointuntuk media-mediaremovablesepertifloppy disk, cd rom,dll.

6.5.3.12. /mnt: Mount point untuk sistem berkas yang di- mount secaratemporer

Direktori ini disediakan agar administrator sistem dapatmountsuatu sistem berkas yang dibutuhkansecara temporer. Isi dari direktori ini adalahissuelokal, dan tidak mempengaruhi sifat-sifat dari programyang sedang dijalankan.

6.5.3.13. /opt: Aplikasi tambahan untuk paket peringkat lunak

/opt disediakan untuk aplikasi tambahan paket peringkat lunak. Paket yang di-install di /opt harusmenemukan berkas statiknya di direktori /opt/<package> atau /opt/<provider>, dengan <package>adalah nama yang mendeskripsikan paket perangkat lunak tersebut, dan <provider> adalah nama dariprovideryang bersangkutan.

6.5.3.14. /root: Direktori home untuk root pengguna

Direktori home rootdapat ditentukan oleh pengembang atau pilihan-pilihan lokal, namun direktori iniadalah lokasidefaultyang direkomendasikan.

6.5.3.15. /sbin: Sistem Biner

Kebutuhan yang digunakan oleh administrator sistem disimpan di /sbin, /usr/sbin, dan /usr/local/sbin./sbin berisi biner dasar untukbootsistem, mengembalikan sistem, memperbaiki sistem sebagai tambahan

254

Page 275: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

untuk biner-biner di /bin. Program yang dijalankan setelah /usr diketahui harus di-mount,diletakkandalam /usr/bin. Sedangkan, program-program milik administrator sistem yang di-installsecara lokalsebaiknya diletakkan dalam /usr/local/sbin.

6.5.3.16. /srv: Data untuk servis yang disediakan oleh sistem

/srv berisi data-datasite-specificyang disediakan oleh sistem.

6.5.3.17. /tmp: Berkas-berkas temporer

Direktori /tmp harus tersedia untuk program-program yang membutuhkan berkas temporer.

6.5.4. Hirarki /usr

6.5.4.1. Tujuan

/usr adalah bagian utama yang kedua dari sistem berkas. /usr bersifatshareabledanread-only. Hal iniberarti /usr bersifatshareablediantara bermacam-macamhostFHS-compliant,dan tidak boleh di-write.Packageperangkat lunak yang besar tidak boleh membuat subdirektori langsung di bawah hirarki /usr ini.

6.5.4.2. Persyaratan

Tabel 6-3. Direktori/link yang dibutuhkan dalam /usr.

Direktori Keterangan

bin Sebagian besar perintah pengguna

include Berkasheaderyang termasuk dalamprogram-program C

lib Pustaka

local Hirarki lokal (kosong sesudah instalasi main)

sbin Sistem biner non-vital

share Data arsitektur yang independen

6.5.4.3. Pilihan spesifik

Tabel 6-4. Direktori/link yang merupakan pilihan dalam /usr.

Direktori Keterangan

X11R6 Sistem X Window, Versi 11Release6

255

Page 276: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Direktori Keterangan

games Gamesdaneducationalbiner

lib<qual> Format pustaka alternatif

src Kodesource

Link-link simbolik seperti di bawah ini dapat terjadi, apabila terdapat kebutuhan untuk menjagakeharmonisan dengan sistem yang lama, sampai semua implementasi bisa diasumsikan untukmenggunakan hirarki /var:

• /usr/spool --> /var/spool

• /usr/temp --> /var/tmp

• /usr/spool/locks --> /var/lock

Saat sistem tidak lagi membutuhkanlink-link di atas,link tersebut dapat dihapus.

6.5.4.4. /usr/X11R6: Sistem X Window, Versi 11 Release 6

Hirarki ini disediakan untuk Sistem X Window, Versi 11Release6 dan berkas-berkas yang berhubungan.Untuk menyederhanakan persoalan dan membuat XFree86 lebih kompatibel dengan Sistem X Window,link simbolik di bawah ini harus ada jika terdapat direktori /usr/X11R6:

• /usr/bin/X11 --> /usr/X11R6/bin

• /usr/lib/X11 --> /usr/X11R6/lib/X11

• /usr/include/X11 --> /usr/X11R6/include/X11

Link-link di atas dikhususkan untuk kebutuhan dari pengguna saja, dan perangkat lunak tidak bolehdi-install atau diatur melaluilink-link tersebut.

6.5.4.5. /usr/bin: Sebagian perintah pengguna

Direktori ini adalah direktori primer untuk perintah- perintahexecutabledalam sistem.

6.5.4.6. /usr/include: Direktori untuk include-files standar

Direktori ini berisi penggunaan umum berkasincludeoleh sistem, yang digunakan untuk bahasapemrograman C.

6.5.4.7. /usr/lib: Pustaka untuk pemrograman dan package

/usr/lib meliputi berkas objek, pustaka dan biner internal yang tidak dibuat untuk dieksekusi secaralangsung melalui pengguna ataushell script.Aplikasi-aplikasi dapat menggunakan subdirektori tunggaldi bawah /usr/lib. Jika aplikasi tersebut menggunakan subdirektori, semua data yang arsitektur-dependentyang digunakan oleh aplikasi tersebut, harus diletakkan dalam subdirektori tersebut juga.

256

Page 277: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Untuk alasan historis, /usr/lib/sendmail harus merupakanlink simbolik ke /usr/sbin/sendmail. Demikianjuga, jika /lib/X11 ada, maka /usr/lib/X11 harus merupakanlink simbolik ke /lib/X11, atau ke manapunyang dituju olehlink simbolik /lib/X11.

6.5.4.8. /usr/lib<qual>: Format pustaka alternatif

/usr/lib<qual> melakukan peranan yang sama seperti /usr/lib untuk format biner alternatif, namun tidaklagi membutuhkanlink simbolik seperti /usr/lib<qual>/sendmail dan /usr/lib<qual>/X11.

6.5.4.9. /usr/local/share

Direktori ini sama dengan /usr/share. Satu-satunya pembatas tambahan adalah bahwa direktori/usr/local/share/man dan /usr/local/man harussynonomous(biasanya ini berarti salah satunya harusmerupakanlink simbolik).

6.5.4.10. /usr/sbin: Sistem biner standar yang non-vital.

Direktori ini berisi biner non-vital manapun yang digunakan secara eksklusif oleh administrator sistem.Program administrator sistem yang diperlukan untuk perbaikan sistem,mounting/usr atau kegunaanpenting lainnya harus diletakkan di /sbin.

6.5.4.11. /usr/share: Data arsitektur independen

Hirarki /usr/share hanya untuk data-data arsitektur independen yangread-only. Hirarki ini ditujukanuntuk bisa di-share diantara semua arsitekturplatformdari sistem operasi; sebagai contoh: sebuahsitedenganplatform i386, Alpha dan PPC bisa me-maintainsebuah direktori /usr/share yang di-mountsecara sentral.

Program atau paket manapun yang berisi dan memerlukan data yang tidak perlu dimodifikasi harusmenyimpan data tersebut di /usr/share (atau /usr/local/share, apabila di-install secara lokal). Sangatdirekomendasikan bahwa sebuah subdirektori digunakan dalam /usr/share untuk tujuan ini.

6.5.4.12. /usr/src: Kode source

Dalam direktori ini, dapat diletakkan kode-kodesource, yang digunakan untuk tujuan referensi.

6.5.5. Hirarki /var

6.5.5.1. Tujuan

/var berisi berkas data variabel, meliputi berkas dan direktorispool, data administratif danlogging, sertaberkastransientdan temporer. Beberapa bagian dari /var tidakshareablediantara sistem yang berbeda,

257

Page 278: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

antara lain: /var/log, /var/lock dan /var/run. Sedangkan, /var/mail, /var/cache/man, /var/cache/fonts dan/var/spool/news dapat di-share antar sistem yang berbeda.

/var ditetapkan di ini untuk memungkinkan operasimount/usr read-only. Segala sesuatu yang melewati/usr, yang telah ditulis selama operasi sistem, harus berada di /var. Jika /var tidak dapat dibuatkan partisiyang terpisah, biasanya /var dipindahkan ke luar dari partisiroot dan dimasukkan ke dalam partisi /usr.

Bagaimanapun, /var tidak boleh di-link ke /usr, karena hal ini membuat pemisahan antara /usr dan /varsemakin sulit dan biasa menciptakan konflik dalam penamaan. Sebaliknya, buatlink /var ke /usr/var.

6.5.5.2. Persyaratan

Tabel 6-5. Direktori/link yang dibutuhkan dalam /var.

Direktori Keterangan

cache Datacacheaplikasi

lib Informasi status variabel

local Data variabel untuk /usr/local

lock Lockberkas

log Berkas dan direktorilog

opt Data variabel untuk /opt

run Relevansi data untuk menjalankan proses

spool Aplikasi dataspool

tmp Berkas temporer yang disimpan di dalamrebootsistem

6.5.5.3. Pilihan Spesifik

Direktori atau link simbol yang menuju ke direktori di bawah ini, dibutuhkan dalam /var, jika subsistemyang berhubungan dengan direktori tersebut di-install:

Tabel 6-6. Direktori/link yang dibutuhkan di dalam /var

Direktori Keterangan

account Log accountingproses

crash System crash dumps

games Data variabelgame

mail Berkasmailboxpengguna

yp Network Information Service (NIS) berkasdatabase

258

Page 279: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.5.5.4. /var/account: Log accounting proses

Direktori ini memeganglog accountingdari proses yang sedang aktif dan gabungan dari penggunaandata.

6.5.5.5. /var/cache: Aplikasi data cache

/var/cache ditujukan untuk datacachedari aplikasi. Data tersebut diciptakan secara lokal sebagaitime-consumingI/O atau kalkulasi. Aplikasi ini harus dapat menciptakan atau mengembalikan data.Tidak seperti /var/spool, berkascachedapat dihapus tanpa kehilangan data.

Berkas yang ditempatkan di bawah /var/cache dapatexpiredoleh karena suatu sifat spesifik dalamaplikasi, oleh administrator sistem, atau keduanya, maka aplikasi ini harus dapatrecoverdaripenghapusan berkas secara manual.

6.5.5.6. /var/crash: System crash dumps

Direktori ini mengatursystem crash dumps. Saat ini, system crash dumpsbelum dapat di-supportolehLinux, namun dapat di-supportoleh sistem lain yang dapat memenuhi FHS.

6.5.5.7. /var/games: Data variabel game

Data variabel manapun yang berhubungan dengangamesdi /usr harus diletakkan di direktori ini./var/games harus meliputi data variabel yang ditemukan di /usr; data statik, sepertihelp text, deskripsilevel, dll, harus ditempatkan di lain direktori, seperti /usr/share/games.

6.5.5.8. /var/lib: Informasi status variabel

Hirarki ini berisi informasi status suatu aplikasi dari sistem. Yang dimaksud dengan informasi statusadalah data yang dimodifikasi program saat program sedang berjalan. Pengguna tidak diperbolehkanuntuk memodifikasi berkas di /var/lib untuk mengkonfigurasi operasipackage. Informasi status inidigunakan untuk memantau kondisi dari aplikasi, dan harus tetap valid setelahreboot,tidak berupaoutput loggingataupun dataspool.

Sebuah aplikasi harus menggunakan subdirektory /var/lib untuk data-datanya. Terdapat satu subdirektoriyang dibutuhkan lagi, yaitu /var/lib/misc, yang digunakan untuk berkas-berkas status yang tidakmembutuhkan subdirektori.

6.5.5.9. /var/lock: Lock berkas

Lockberkas harus disimpan dalam struktur direktori /var/lock.Lockberkas untuk peranti dan sumberlain yang di-shareoleh banyak aplikasi, sepertilock berkas pada serial peranti yang ditemukan dalam/usr/spool/locks atau /usr/spool/uucp, sekarang disimpan di dalam /var/lock.

Format yang digunakan untuk isi darilock berkas ini harus berupa formatlock berkas HDB UUCP.Format HDB ini adalah untuk menyimpan pengidentifikasi proses (Process Identifier - PID) sebagai 10byte angka desimal ASCII, ditutup dengan baris baru. Sebagai contoh, apabila proses 1230 memegang

259

Page 280: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

lock berkas, maka HDO formatnya akan berisi 11 karakter: spasi, spasi, spasi, spasi, spasi, spasi, satu,dua, tiga, nol dan baris baru.

6.5.5.10. /var/log: Berkas dan direktori log

Direktori ini berisi bermacam-macam berkaslog. Sebagian besarlog harus ditulis ke dalam direktori iniatau subdirektori yang tepat.

6.5.5.11. /var/mail: Berkas mailbox pengguna

Mail spoolharus dapat diakses melalui /var/mail dan berkas mail spool harus menggunakan form<nama_pengguna>>. Berkasmailboxpengguna dalam lokasi ini harus disimpan dengan formatstandarmailboxUNIX.

6.5.5.12. /var/opt: Data variabel untuk /opt

Data variabel untuk paket di dalam /opt harus di-install dalam /var/opt/<subdir>, di mana <subdir>adalah nama darisubtreedalam /opt tempat penyimpanan data statik daripackagetambahan perangkatlunak.

6.5.5.13. /var/run: Data variabel run-time

Direktori ini berisi data informasi sistem yang mendeskripsikan sistem sejak diboot. Berkas di dalamdirektori ini harus dihapus dulu saat pertama memulai prosesboot. Berkas pengidentifikasi proses(PID), yang sebelumnya diletakkan di /etc, sekarang diletakkan di /var/run.

Program yang membaca berkas-berkas PID harus fleksibel terhadap berkas yang diterima, sebagaicontoh: program tersebut harus dapat mengabaikan ekstra spasi, baris-baris tambahan, angka nol yangdiletakkan di depan, dll.

6.5.5.14. /var/spool: Aplikasi data spool

/var/spool berisi data yang sedang menunggu suatu proses. Data di dalam /var/spool merepresentasikanpekerjaan yang harus diselesaikan dalam waktu depan (oleh program, pengguna atau administrator);biasanya data dihapus sesudah selesai diproses.

6.5.5.15. /var/tmp: Berkas temporer yang diletakkan di dalam rebootsistem

Direktori /var/tmp tersedia untuk program yang membutuhkan berkas temporer atau direktori yangdiletakkan dalamrebootsistem. Karena itu, data yang disimpan di /var/tmp lebih bertahan daripada datadi dalam /tmp. Berkas dan direktori yang berada dalam /var/tmp tidak boleh dihapus saat sistem di-boot.Walaupun data-data ini secara khusus dihapus dalamsite-specific manner,tetap direkomendasikan bahwapenghapusan dilakukan tidak sesering penghapusan di /tmp.

260

Page 281: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.5.5.16. /var/yp: Berkas database Network Information Service (NIS)

Data variabel dalam Network Information Service (NIS) atau yang biasanya dikenal dengan Sun YellowPages (YP) harus diletakkan dalam direktori ini.

6.6. Konsep Alokasi Blok Sistem Berkas

6.6.1. Metode AlokasiKegunaan penyimpanan sekunder yang utama adalah menyimpan berkas-berkas yang kita buat, karenasifat disk akan mempertahankan berkas walaupun tidak ada arus listrik. Oleh karena itu, agar kita dapatmengakses berkas-berkas dengan cepat dan memaksimalisasikan ruang yang ada di disk tersebut, makalahirlah metode-metode untuk mengalokasikan berkas ke disk. Metode-metode yang akan dibahas lebihlanjut dalam buku ini adalahcontiguous allocation, linked allocation, danindexed allocation.Metode-metode tersebut memiliki beberapa kelebihan dan juga kekurangan. Biasanya sistem operasimemilih satu dari metode diatas untuk mengatur keseluruhan berkas.

6.6.1.1. Contiguous Allocation

Metode ini akan mengalokasikan satu berkas kedalam blok-blok disk yang berkesinambungan atauberurutan secara linier dari disk, jadi sebuah berkas didenifinikan oleh alamat disk blok pertama danpanjangnya dengan satuan blok atau berapa blok yang diperlukannya. Bila suatu berkas memerlukan nbuah blok dan blok awalnya adalah a, berarti berkas tersebut disimpan dalam blok dialamat a, a + 1, a +2, a + 3, ... , a + n - 1. Direktori mengindentifikasi setiap berkas hanya dengan alamat blok pertamaberkas tersebut disimpan yang dalam contoh di atas adalah a, dan banyaknya blok yang diperlukan untukmengalokasikan berkas tersebut yang dalam contoh di atas adalah n.

Berkas yang dialokasikan dengan metode ini akan mudah diakses, karena pengaksesan alamat a + 1setelah alamat a tidak diperlukan perpindahan head, jika diperlukan pemindahan head, maka headtersebut akan hanya akan berpindah satu track. Hal tersebut menjadikan metode ini mendukungpengaksesan secara berurutan, tapi metode ini juga mendukung pengaksesan secara langsung, karenabila ingin mengakses blok ke i berarti kita akan mengakses blok a + i.

261

Page 282: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-11.Contiguous allocation

Metodecontiguous allocationjuga mempunyai beberapa masalah. Diantaranya adalah mencari ruanguntuk berkas baru, menentukan seberapa besar ruang yang diperlukan untuk sebuah berkas. Untukmasalah mencari ruang untuk berkas baru, akan di implementasikan oleh manajemen ruang kosong.

Untuk penentuan ruang kita tidak boleh terlalu kecil atau terlalu besar, bila kita menentukannya terlalukecil maka ada saatnya berkas tersebut tidak bisa dikembangkan, tapi bila terlalu besar maka akan adaruang yang sia-sia bila berkas tersebut hanya memerlukan ruang yang kecil.

Metode ini dapat menimbulkan fragmentasi eksternal disaat ruang kosong yang ada diantaraberkas-berkas yang sudah terisi tidak cukup untuk mengisi berkas baru. Hal ini terjadi karena blokpertama dari suatu berkas itu ditentukan oleh sistem operasi, bila berkas pertama blok pertamanya itu di1 dan memerlukan 9 blok untuk pengalokasiannya dan berkas kedua blok pertamanya di 11 danmemerlukan 5 blok untuk pengalokasiannya, berarti ruang-kosong diantara berkas tersebut ada 1 blok,yaitu dialamat 10. Blok tersebut dapat untuk menyimpan berkas, tetapi hanya berkas yang berukuran 1blok yang dapat disimpan di blok tersebut.

6.6.1.2. Linked Allocation

Metode ini dapat mengatasi masalah yang terjadi pada metodecontiguous allocation. Dalam metode ini

262

Page 283: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

setiap berkas diidentifikasikan denganlinked listdari blok-blok, jadi blok-blok tersebut tidak harusberkesinambungan dengan blok yang lain. Direktori hanya menyimpan alamat blok pertama dan alamatblok terakhir. Jika kita ingin mengaksess blok kedua, maka harus melihat alamatnya di blok pertama danbegitu seterusnya. Oleh karena itu, metode ini hanya mendukung pengaksesan secara berurutan.

Gambar 6-12.Linked allocation

Metodelinked allocationmemiliki beberapa kerugian, karena petunjuk ke blok berikutnya memerlukanruang. Bila ukuran petunjuknya 4 byte dari blok yang ukurannya 512 byte, berarti 0,78% dari ruang diskhanya digunakan untuk petunjuk saja. Hal ini bisa diminimalisasikan dengan menggunakanclusteryangmenggabungkan 4 blok dalam satucluster, jadi jumlah petunjuknya akan berkurang dari yang tidakmemakaicluster.

Paling penting dalam metode ini adalah menggunakanfile-allocation table(FAT). Tabel tersebutmenyimpan setiap blok yang ada di disk dan diberi nomor sesuai dengan nomor blok. Jadi, direktorihanya menyimpan alamat dari blok pertama saja, dan untuk selanjutnya dilihat dari tabel tersebut yangmenunjukkan ke blok berikutnya. Jika kita memakai metode ini, akan menyebabkan mudahnya untukmembuat berkas baru atau mengembangkan berkas sebelumnya. Mencari tempat kosong untuk berkasbaru lebih mudah, karena kita hanya mencari angka 0 yang pertama dari isi tabel tersebut. Dan bila kitaingin mengembangkan berkas sebelumnya carilah alamat terakhirnya yang memiliki ciri tertentu danubahlah isi dari tabel tersebut dengan alamat blok penambahan. Alamat terakhir berisi hal yang unik,

263

Page 284: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

sebagai contoh ada yang menuliskan -1, tapi ada juga yang menuliskannya EOF (End Of File).

Metodelinked allocationyang menggunakan FAT akan mempersingkat waktu yang diperlukan untukmencari sebuah berkas. Karena bila tidak menggunakan FAT, berarti kita harus ke satu blok tertentudahulu dan baru diketahui alamat blok selanjutnya. Dengan menggunakan FAT kita dapat melihat alamatblok selanjutnya disaat kita masih menuju blok yang dimaksud. Tetapi bagaimanapun ini belum bisamendukung pengaksesan secara langsung.

6.6.1.3. Indexed Allocation

Metode yang satu ini memecahkan masalah fragmentasi eksternal dari metodecontiguous allocationdanruang yang cuma-cuma untuk petunjuk pada metodelinked allocation, dengan cara menyatukan semuapetunjuk kedalam blok indeks yang dimiliki oleh setiap berkas. Jadi, direktori hanya menyimpan alamatdari blok indeks tersebut, dan blok indeks tersebut yang menyimpan alamat dimana blok-blok berkasberada. Untuk berkas yang baru dibuat, maka blok indeksnya di set dengannull.

Metode ini mendukung pengaksesan secara langsung, bila kita ingin mengakses blok ke-i, maka kitahanya mencari isi dari blok indeks tersebut yang ke-i untuk dapatkan alamat blok tersebut.

Metodeindexed allocationtidak menyia-nyiakan ruang disk untuk petunjuk, karena dibandingkandengan metodelinked allocation, maka metode ini lebih efektif, kecuali bila satu berkas tersebut hanyamemerlukan satu atau dua blok saja.

264

Page 285: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-13.Indexed allocation

Metode ini juga memiliki masalah. Masalah itu timbul disaat berkas berkembang menjadi besar dan blokindeks tidak bisa menampung petunjuk-petunjuknya itu dalam satu blok. Salah satu mekanisme dibawahini dapat dipakai untuk memecahkan masalah yang tersebut. Mekanisme-mekanisme itu adalah:

• Linked scheme: Untuk mengatasi petunjuk untuk berkas yang berukuran besar mekanisme inimenggunakan tempat terakhir dari blok indeks untuk alamat ke blok indeks selanjutnya. Jadi, bilaberkas kita masih berukuran kecil, maka isi dari tempat yang terakhir dari blok indeks berkas tersebutadalahnull. Namun, bila berkas tersebut berkas besar, maka tempat terakhir itu berisikan alamat untukke blok indeks selanjutnya, dan begitu seterusnya.

• Indeks bertingkat: Pada mekanisme ini blok indeks itu bertingkat-tingkat, blok indeks pada tingkatpertama akan menunjukkan blok-blok indeks pada tingkat kedua, dan blok indeks pada tingkat keduamenunjukkan alamat-alamat dari blok berkas, tapi bila dibutuhkan bisa dilanjutkan kelevel ketiga dankeempat tergantung dengan ukuran berkas tersebut. Untuk blok indeks 2 level dengan ukuran blok4.096 byte dan petunjuk yang berukuran 4 byte, dapat mengalokasikan berkas hingga 4 GB, yaitu1.048.576 blok berkas.

• Combined scheme: Mekanisme ini menggabungkandirect blockdanindirect block. Direct blockakanlangsung menunjukkan alamat dari blok berkas, tetapi padaindirect blockakan menunjukkan blokindeks terlebih dahulu seperti dalam mekanisme indeks bertingkat.Single indirect blockakan

265

Page 286: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

menunjukkan ke blok indeks yang akan menunjukkan alamat dari blok berkas,double indirect blockakan menunjukkan suatu blok yang bersifat sama dengan blok indeks 2 level, dantriple indirect blockakan menunjukkan blok indeks 3 level. Dimisalkan ada 15 petunjuk dari mekanisme ini, 12 pertamadari petunjuk tersebut adalahdirect block, jadi bila ukuran blok 4 byte berarti berkas yang dapatdiakses secara langsung didukung sampai ukurannya 48 KB. 3 petunjuk berikutnya adalahindirectblockyang berurutan darisingle indirect blocksampaitriple indirect block. Yang hanya mendukung32 bit petunjuk berkas berarti akan hanya mencapai 4 GB, namun yang mendukung 64 bit petunjukberkas dapat mengalokasikan berkas berukuran sampai satuan terabyte.

6.6.1.4. Kinerja Sistem Berkas

Keefisiensian penyimpanan dan waktu akses blok data adalah kriteria yang penting dalam memilihmetode yang cocok untuk sistem operasi untuk mengimplementasikan sesuatu. Sebelum memilih sebuahmetode alokasi, kita butuh untuk menentukan bagaimana sistem ini akan digunakan.

Untuk beberapa tipe akses,contiguous allocationmembutuhkan hanya satu akses untuk mendapatkansebuah blok disk. Sejak kita dapat dengan mudah menyimpan alamat inisial dari sebuah berkas dimemori, kita dapat menghitung alamat disk dari blok ke-i (atau blok selanjutnya) dengan cepat danmembacanya dengan langsung.

Untuk linked allocation, kita juga dapat menyimpan alamat dari blok selanjutnya di memori danmembacanya dengan langsung. Metode ini bagus untuk akses secara berurutan; untuk akses langsung,bagaimanapun, sebuah akses menuju blok ke-i harus membutuhkan pembacaan disk ke-i. Masalah inimenunjukkan mengapa alokasi yang berurutan tidak digunakan untuk aplikasi yang membutuhkan akseslangsung.

Sebagai hasilnya, beberapa sistem mendukung berkas-barkas yang diakses langsung denganmenggunakancontiguous allocationdan yang diakses berurutan denganlinked allocation. Di dalamkasus ini, sistem operasi harus mempunyai struktur data yang tepat dan algoritma untuk mendukungkedua metode alokasi.

Indexed allocationlebih komplek. Jika blok indeks sudah ada dimemori, akses dapat dibuat secaralangsung. Bagaimanapun, menyimpan blok indeks tersebut di memori membutuhkan tempat yang dapatditolerir. Dengan begitu, kinerja dariindexed allocationtergantung dari struktur indeks, ukuran file, danposisi dari blok yang diinginkan.

Beberapa sistem menggabungkancontiguous allocationdenganindexed allocationdenganmenggunakancontiguous allocationuntuk berkas-berkas yang kecil (diatas tiga atau empat berkas), dansecara otomatis mengganti keindexed allocationjika berkas bertambah besar.

6.6.2. Manajemen Ruang KosongSejak ruang disk terbatas, kita butuh menggunakan lagi ruang tersebut dari berkas yang sudah dihapusmenjadi berkas yang baru, jika memungkinkan. Untuk menyimpantrack dari ruang disk yang kosong,sistem membuat daftar ruang-kosong. Daftar ruang-kosong tersebut merekam semua blok-blok disk yangkosong itu semua tidak dialokasikan di beberapa berkas atau direktori.

266

Page 287: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.6.2.1. Bit Vector

Seringkali, daftar ruang yang kosong diimplementasikan sebagai sebuahbit mapataubit vector. Setiapblok direpresentasikan dengan 1 bit. Jika bloknya kosong, bitnya adalah 1; jika bloknya ditempati, bitnyaadalah 0.

Sebagai contoh, mepertimbangkan sebuah disk dimana blok-blok 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 17, 18,25, 26, dan 27 kosong, dan sisa dari blok-blok tersebut ditempati.Bit mapdari ruang-kosong yaitu

00111100111111000110000011100000...

Keuntungan utama dari pendekatan ini adalah relatif sederhana dan keefisiensian dalam menemukanblok kosong yang pertama, atau blok-blok kosong n yang berurutan di dalam disk. Sayangnya,bitvectorstidak efisien kecuali seluruh vektor disimpan di memori utama (dan ditulis ke disk secara rutinuntuk kebutuhanrecovery. Menyimpan vektor tersebut di memori utama memungkinkan untuk disk-diskyang kecil, seperti padamicrocomputers, tetapi tidak untuk disk-disk yang besar.

6.6.2.2. Linked List

Pendekatan yang lainnya untuk managemen ruang-kosong adalah menghubungkan semua blok-blok diskkosong, menyimpan sebuah penunjuk ke blok kosong yang pertama di lokasi yang khusus di disk danmenyimpannya di memori. Blok pertama ini mengandung sebuah penunjuk ke blok disk kosongselanjutnya, dan seterusnya. Sebagai contoh, kita akan menyimpan sebuah penunjuk ke blok 2, sebagaiblok kosong pertama. Blok 2 mengandung sebuah penunjuk ke blok 3, yang akan menunjuk ke blok4,yang akan menunjuk ke blok 5, yang akan menunjuk ke blok 8, dan seterusnya.

267

Page 288: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-14. Ruang kosonglinked list

Bagaimanapun, skema ini tidak efisien untuk mengakses daftar tersebut, kita harus membaca setiap blok,yang membutuhkan tambahan waktu I/O. Untungnya, mengakses daftar kosong tersebut itu tidakeksekusi yang teratur. Biasanya, sistem operasi tersebut membutuhkan sebuah blok kosong supayasistem operasi dapat mengalokasikan blok tersebut ke berkas, lalu blok yang pertama di daftar kosongdigunakan.

268

Page 289: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.6.2.3. Grouping

Sebuah modifikasi dari pendekatan daftar-kosong adalah menyimpan alamat-alamat dari n blok-blokkosong di blok kosong yang pertama. n-1 pertama dari blok-blok ini sebenarnya kosong. Blok terakhirmengandung alamat-alamat dari n blok kosong lainnya, dan seterusnya. Pentingnya implementasi iniadalah alamat-alamat dari blok-blok kosong yang banyak dapat ditemukan secara cepat, tidak seperti dipendekatanlinked-listyang standard.

6.6.2.4. Counting

Daripada menyimpan daftar dari n alamat-alamat disk kosong, kita dapat menyimpan alamat dari blokkosong yang pertama tersebut dan angka n dari blokcontiguouskosong yang diikuti blok yang pertama.Setiap masukan di daftar ruang-kosong lalu mengandung sebuah alamat disk dan sebuah jumlah.Meskipun setiap masukan membutuhkan ruang lebih daripada alamat-alamat disk yang sederhana, daftarkesemuanya akan lebih pendek, selama jumlahnya rata-rata lebih besar daripada 1.

6.6.3. Efisiensi dan KinerjaKita sekarang dapat mempertimbangkan mengenai efek dari alokasi blok dan manajeman direktori dalamkinerja dan penggunanan disk yang efisien. Di bagian ini, kita mendiskusikan tentang bermacam-macamteknik yang digunakan untuk mengembangkan efisiensi dan kinerja dari penyimpanan kedua.

6.6.3.1. Efisiensi

Penggunaan yang efisien dari ruang disk sangat tergantung pada alokasi disk dan algoritma direktoriyang digunakan. Sebagai contoh, UNIX mengembangakan kinerjanya dengan mencoba untukmenyimpan sebuah blok data berkas dekat dengan blok inode berkas untuk mengurangi waktu pencarian.

Tipe dari data normalnya disimpan di masukan direktori berkas (atau inode) juga membutuhkanpertimbangan. Biasanya, tanggal terakhir penulisan direkam untuk memberikan informasi kepadapengguna dan untuk menentukan jika berkas ingin diback up. Beberapa sistem juga menyimpan sebiuah"last access date", supaya seorang pengguna dapat menentukan kapan berkas terakhir dibaca. Hasil darimenyimpan informasi ini adalah ketika berkas sedang dibaca, sebuah field di struktur direktori harusditulisi. Prasyarat ini dapat tidak efisien untuk pengaksesan berkas yang berkala. Umumnya setiappersatuan data yang berhubungan dengan berkas membutuhkan untuk dipertimbangkan efeknya padaefisiensi dan kinerja.

Sebagai contoh, mempertimbangkan bagaimana efisiensi dipengaruhi oleh ukuran penunjuk-penunjukyang digunakan untuk mengakses data. Bagaimanapun, penunjuk-penunjuk membutuhkan ruang lebihuntuk disimpan, dan membuat metode alokasi dan manajemen ruang-kosong menggunakan ruang diskyang lebih. Satu dari kesulitan memilih ukuran penunjuk, atau juga ukuran alokasi yang tetap diantarasistem operasi, adalah rencana untuk efek dari teknologi yang berubah.

269

Page 290: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.6.3.2. Kinerja

Sekali algoritma sistem berkas dipilih, kita tetap dapat mengembangkan kinerja dengan beberapa cara.Kebanyakan daridisk controllermempunyai memori lokal untuk membuaton-board cacheyang cukupbesar untuk menyimpan seluruhtracksdengan sekejap.

Beberapa sistem membuat seksi yang terpisah dari memori utama untuk digunakan sebagaidisk cache,dimana blok-blok disimpan dengan asumsi mereka akan digunakan lagi dengan secepatnya. Sistemlainnya menyimpan data berkas menggunakan sebuahpage cache. Page cachetersebut menggunakanteknik memori virtual untuk menyimpan data berkas sebagai halaman-halaman daripada sebagaiblok-blokfile-system-oriented. Menyimpan data berkas menggunakan alamat-alamat virtual jauh lebihefisien daripada menyimpannya melalui blok disk fisik. Ini dikenal sebagaiunified virtual memory.

Gambar 6-15. Tanpaunified buffer cache

270

Page 291: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-16. Menggunakanunified buffer cache

Sebagian sistem operasi menyediakan sebuahunified buffer cache. Tanpa sebuahunified buffer cache,kita mempunyai situasi panggilanmappingmemori butuh menggunakan dua cache,page cachedanbuffer cache. Karena sistem memori virtual tidak dapat menggunakan denganbuffer cache, isi dariberkas di dalambuffer cacheharus diduplikat kepage cache. Situasi ini dikenal dengandouble cachingdan membutuhkan menyimpan data sistem-berkas dua kali. Tidak hanya membuang-buang memori,tetapi ini membuang CPU dan perputaran I/O dikerenakan perubahan data ekstra diantara memorisistem. Juga dapat menyebabkan korupsi berkas. Sebuahunified buffer cachemempunyai keuntunganmenghindaridouble cachingdan menunjuk sistem memori virtual untuk mengatur data sistem berkas.

6.6.4. RecoverySejak berkas-berkas dan direktori-direktori dua-duanya disimpan di memori utama dan pada disk,perawatan harus dilakukan untuk memastikan kegagalan sistem tidak terjadi di kehilangan data atau ditidakkonsistennya data.

6.6.4.1. Pengecekan Rutin

Informasi di direktori di memori utama biasanya lebih baru daripada informasi yang ada di disk, karenapenulisan dari informasi direktori yang disimpan ke disk tidak terlalu dibutuhkan secepat terjadinyapembaharuan. Mempertimbangkan efek yang memungkinkan terjadinyacrashpada komputer. Secaraberkala, program khusus akan dijalankan pada saat wakturebootuntuk mengecek dan mengoreksi diskyang tidak konsisten. Pemerikasaan rutin membandingkan data yang ada di struktur direktori denganblok data pada disk, dan mencoba untuk memperbaiki ketidakkonsistenan yang ditemukan.

271

Page 292: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Gambar 6-17. Macam-macam lokasidisk-caching

6.6.4.2. Backup dan Restore

Dikarenakan disk magnetik kadang-kadang gagal, perawatan harus dijalankan untuk memastikan datatidak hilang selamanya. Oleh karena itu, program sistem dapat digunakan untukback updata dari diskmenuju ke media penyimpanan yang lainnya, seperti sebuahfloppy disk, tape magnetik, atau disk optikal.Recoverydari kehilangan sebuah berkas individu, atau seluruh disk, mungkin menjadi masalah darirestoringdata daribackup.

Untuk meminimalis kebutuhan untuk menduplikat, kita dapat menggunakan inforamsi dari,masing-masing masukan direktori. Sebagai contoh, jika programbackupmengetahui kapanbackupterakhir dari berkas telah selesai, dan tanggal terakhir berkas di direktori menunjukkan bahwa berkastersebut tidak dirubah sejak tanggal tersebut, lalu berkas tersebut tidak perlu diduplikat lagi.

Sebuah tipe jadualbackupyaitu sebagai berikut:

• Day 1:

Menduplikat ke sebuah mediumback upsemua berkas ke disk. Ini disebut sebuahfull backup.

• Day2:

Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari pertama. Ini adalahincremental backup.

• Day3:

Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke-2.

• Day N:

Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke N-1.

272

Page 293: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

Perputaran baru dapat mempunyaibackupnyaditulis ke semua set sebelumnya, atau ke set yang baru darimediabackup. N yang terbesar, tentu saja memerlukan tape atau disk yang lebih untuk dibaca untukpenyimpanan yang lengkap. Keuntungan tambahan dari perputaranbackupini adalah kita dapatmenyimpan berkas apa saja yang tidak sengaja terhapus selama perputaran dengan mengakses berkasyang terhapus daribackuphari sebelumnya.

6.6.5. Log-Structured File SystemAlgoritma loggingsudah dilakukan dengan sukses untuk manangani masalah dari pemeriksaan rutin.Hasil dari implementasinya dikenal denganlog-based transaction-oriented(ataujournalingsistemberkas.

Pemanggilan kembali yang mengenai struktur data sistem berkas pada disk--seperti struktur-strukturdirektori, penunjuk-penunjuk blok-kosong, penunjuk-penunjuk FCB kosong--dapat menjadi tidakkonsisten dikarenakan adanyasystem crash. Sebelum penggunaan dari tekniklog-baseddi sisitemoperasi, perubahan biasanya dipakaikan pada struktur ini. Perubahan-perubahan tersebut dapatdiinterupsi olehcrash, dengan hasil strukturnya tidak konsisten.

Ada beberapa masalah dengan adanya pendekatan dari menunjuk struktur untuk memechkan danmemperbaikinya padarecovery. Salah satunya adalah ketidakkonsistenan tidak dapat diperbaiki.Pemeriksaan rutin mungkin tidak dapat untukrecoverstruktur tersebut, yang hasilnya kehilangan berkasdan mungkin seluruh direktori.

Solusinya adalah memakai tekniklog-based-recoverypada sistem berkas metadata yang terbaru. Padadasarnya, semua perubahan metadata ditulis secara berurutan di sebuahlog. Masing-masing set darioperasi-operasi yang manampilakan tugas yang spesifik adalah sebuahtransaction. Jika sistemnyacrashes, tidak akan ada atau ada kelebihantransactionsdi berkaslog. Transactionstersebut tidak akanpernah lengkap ke sistem berkas walaupun dimasukkan oleh sistem operasi, jadi harus dilengkapi.Keuntungan yang lain adalah proses-proses pembaharuan akan lebih cepat daripada saat dipakailangsung ke struktur data pada disk.

6.7. RangkumanDi dalam sebuah sistem operasi, salah satu hal yang paling penting adalah sistem berkas. Sistem berkasini muncul karena ada tiga masalah utama yang cukup signifikan: kebutuhan untuk menyimpan datadalam jumlah yang besar, kebutuhan agar data tidak mudah hilang (non-volatile), dan informasi harusberdiri sendiri tidak bergantung pada proses. Pada sistem berkas ini, diatur segala rupa macam yangberkaitan dengan sebuah berkas mulai dari atribut, tipe, operasi, struktur, sampai metode akses berkas.

Beberapa sistem komputer menyimpan banyak sekali berkas-berkas dalamdisk, sehingga diperlukansuatu struktur pengorganisasian data-data sehingga data lebih mudah diatur. Dalam struktur direktori satutingkat, semua berkas diletakkan pada direktori yang sama, sehingga memiliki suatu keterbatasan karenanama berkas harus unik. Struktur direktori dua tingkat mencoba mengatasi masalah tersebut dengan

273

Page 294: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

membuat direktori yang terpisah untuk tiap pengguna yang disebut denganuser file directory (UFD).Sedangkan dalam struktur direktoritreesetiap pengguna dapat membuat subdirektori sendiri danmengorganisasikan berkas-berkasnya. Direktori dengan strukturtreemelarang berbagi berkas ataudirektori. Oleh karena itu, struktur denganacyclic-graphmemperbolehkan direktori untuk berbagiberkas atau sub-direktori. Struktur Direktorigeneral graphmengatasi masalah yang timbul dalamstrukturacyclicdengan metodeGarbage Collection.

Mounting adalah proses mengaitkan sebuah sistem berkas yang baru ditemukan pada sebuah piranti kestruktur direktori utama yang sedang dipakai.Mount pointadalah sebuah direktori dimana berkas barumenjadi dapat diakses.

Sebagai implementasi direktori yang merupakan implementasi dari Implementasi Sistem Berkas,implementasi direktori memiliki algoritma sepertiLinear List dan Hashtable. Direktori pada MS/Dosmerupakan sistem dengan direktori hirarki tree. Direktori pada UNIX merupakan struktur direktoritradisional.

Standar Hirarki Sistem Berkas (File Hierarchy Standard) adalah rekomendasi penulisan direktori danberkas-berkas yang diletakkan di dalamnya. FHS ini digunakan oleh perangkat lunak danuseruntukmenentukan lokasi dari berkas dan direktori.

Informasi yang disimpan di dalam suatu berkas harus disimpan ke dalam disk. Artinya, sistem operasiharus memutuskan tempat informasi itu akan disimpan. Ada 3 method untuk menentukan bagaimanasistem operasi menyimpan informasi ke disk yakni manajemen ruang kosong (mengetahui seberapaluang kapasitas disk yang tersedia), efisiensi dan kinerja, danrecovery.

6.8. Latihan

1. Berikan gambaran umum mengenai sistem berkas!

2. Operasi apa saja yang dijalankan untuk melakukan operasicopy?

3. Sebutkan salah satu cara mengimplementasikan tipe berkas!

4. Sebutkan dan jelaskan 3 contoh struktur berkas!

5. Apa bedanyasequential accessdandirect access?

6. Apa kelebihan struktur direktoriAcyclic Graphdengan struktur direktoriTree?

7. Jelaskan yang dimaksud denganGarbage Collection Scheme!

8. Struktur Direktori apa saja yang menyediakan fasilitassharing?

9. Apa yang terjadi jika kita mengubah nama suatu berkas?

10.Pada sistem UNIX, apa yg terjadi saat kita ingin menghapus suatu direktori yang masihmengandung suatu berkas?

11.Kemanakah sistem berkas akan selalu di-mountketika sistem sedang berjalan?

12.Apakah yang dimaksud dengan pesanerror berikut?

pwd: Permission denied

274

Page 295: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

13.Apa perbedaan antara metode implementasisharingantara FTP, DFS dan WWW?

14.Sebutkan pendekatan apa saja yang dipakai untuk mengatasi masalah proteksi berkas besertakeuntungan dan kerugiannya?

15.Berikan sebuah contoh struktur direktori selain yang ada di buku dan jelaskan cara implementasipada direktori!

16.Sebutkan 2 sistem operasi yang implementasi sistem berkasnya menggunakanLayered File System!

17.Jelaskan cara membuat suatu berkas baru!

18.Apakah hubungan partisi danmountingdengan implementasi sistem berkas?

19.Apa perbedaan algoritmaLinear ListdanHash Tableuntuk implentasi direktori? Menurut andamanakah yang lebih unggul? Jelaskan!

20.Apa yang Anda ketahui mengenaiFilesystem Hierarchy Standard?

21.Jelaskan 3 tujuan dari sistem berkasroot!

22.Jelaskan tujuan dan persyaratan dari hirarki /usr!

23.Jelaskan tujuan dan persyaratan dari hirarki /var!

24.Apakah kegunaan dari direktori di bawah ini:

• /boot

• /media

• /mnt

• /root

• /usr/lib

• /var/cache

25.Sebutkan 3 metode yang sering digunakan untuk mengalokasikan berkas?

26.Bandingkan masalah-masalah yang dapat terjadi di metode alokasicontiguous allocation

27.Bandingkan masalah-masalah yang dapat terjadi di metode alokasicontiguous allocationdanlinkedallocation?

28.Sebutkan 3 contoh mekanisme dariIndexed Allocation?

29.Jelaskan dengan singkat mengenaiCombined Scheme!

30.Sebutkan akses berkas yang didukung oleh sistem yang menggunakan metode alokasicontiguousallocationdanlinked allocation?

31.Jika ruang kosong dibit mapsebagai berikut: 00111011101100010001110011 maka blok mana sajayang kosong?

32.Sebutkan keuntungan dariI/O yang menggunakanunified buffer cache?

33.Jelaskan cara membuatbackupdata!

34.Solusi apa yang diberikan untuk memastikan adanyarecoverysetelah adanyasystem crash?

275

Page 296: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 6. Sistem Berkas

6.9. Rujukan

6.9.1. Rujukan Buku:Silberschatz, Galvin, Gagne. 2002.Operating System Concepts 6th ed. John Wiley & Sons.

Tananbaum, Andrew S. 1992.Modern Operating System 2nd ed. Engrewood cliffs, New Jersey: PrenticeHall Inc.

Stallings, Williem. 2000.Operating System 4th ed. Prentice Hall.

6.9.2. Rujukan Internet:http://infocom.cqu.edu.au/Courses/aut2001/85349/Resources/ Study_Guide/10.pdf

http://www.cs.utah.edu/classes/cs5460/lectures/lecture19- 2up.pdf

http://support.sitescape.com/forum/support/dispatch.cgi/_help/showHelp/page/help/en/webfiles_tabs/share_files.html

>http://www.ncsa.uiuc.edu/UserInfo/Resources/Hardware/IBMp690/IBM/usr/share/man/info/en_US/a_doc_lib/aixbman/admnconc/ mount_overview.htm

http://www.atnf.csiro.au/people/rgooch/linux/docs/vfs.txt

276

Page 297: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.1. Perangkat Keras I/OMenurut Silberschatz et. al. [Silberschatz2002], salah satu tujuan utama dari suatu sistem operasi adalahmengatur semua perangkat I/O (Input/Output) komputer. Sistem operasi harus bisa memberikan perintahke perangkat-perangkat itu, menangkap dan menangani interupsi, dan menanganierror yang terjadi.Sistem operasi juga harus menyediakan antarmuka antara sistem operasi itu sendiri dengan keseluruhansistem itu yang sederhana dan mudah digunakan. Antarmuka itu harus sama untuk semua perangkat(device independent), agar dapat dikembangkan.

Secara umum, terdapat beberapa jenis perangkat I/O, seperti perangkat penyimpanan (disk, tape),perangkat transmisi (network card, modem), dan perangkat antarmuka dengan pengguna (screen,keyboard, mouse). Perangkat tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki olehperangkat akan digunakan olehdirect I/O instruction danmemory-mapped I/O.

Beberapa konsep yang umum digunakan ialahport, bus (daisy chain/shared direct access), danpengendali (host adapter). Port adalah koneksi yang digunakan oleh perangkat untuk berkomunikasidengan mesin. Bus adalah koneksi yang menghubungkan beberapa perangkat menggunakan kabel-kabel.Pengendali adalah alat-alat elektronik yang berfungsi untuk mengoperasikanport, bus, dan perangkat.

Langkah yang ditentukan untuk perangkat adalahcommand-ready, busy, danerror. Hostmengesetcommand-readyketika perintah telah siap untuk dieksekusi oleh pengendali. Pengendali mengesetbusyketika sedang mengerjakan sesuatu, dan men-clear busyketika telah siap untuk menerima perintahselanjutnya.Error diset ketika terjadi kesalahan.

7.1.1. Prinsip-prinsip Perangkat Keras I/OPendapat orang-orang mengenai I/O berbeda-beda. Seorang insinyur mungkin akan memandangperangkat keras I/O sebagai kumpulan chip-chip, kabel-kabel, catu daya, dan komponen fisik lainnyayang membangun perangkat keras ini. Seorangprogrammerakan memandangnya sebagai antarmukayang disediakan oleh perangkat lunak -- perintah yang diterima perangkat keras, fungsi yangdikerjakannya, danerror yang ditimbulkan.

7.1.1.1. Perangkat I/O

Perangkat I/O dapat dibagi secara umum menjadi dua kategori, yaitu: perangkat blok (block devices),dan perangkat karakter (character devices). Perangkat blok menyimpan informasi dalam sebuah blokyang ukurannya tertentu, dan memiliki alamat masing-masing. Umumnya blok berukuran antara 512bytes sampai 32.768 bytes. Keuntungan dari perangkat blok ini adalah mampu membaca atau menulissetiap blok secara independen. Disk merupakan contoh perangkat blok yang paling banyak digunakan.

Tipe lain perangkat I/O adalah perangkat karakter. Perangkat karakter mengirim atau menerimasebarisan karakter, tanpa menghiraukan struktur blok. Tipe ini tidak memiliki alamat, dan tidak memilikikemampuan mencari (seek). Printer dan antarmuka jaringan merupakan contoh perangkat tipe ini.

277

Page 298: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Pembagian ini tidaklah sempurna. Beberapa perangkat tidak memenuhi kriteria tersebut. Contohnya:clockyang tidak memiliki alamat dan juga tidak mengirim dan menerima barisan karakter. Yang ialakukan hanya menimbulkan interupsi dalam jangka waktu tertentu.

7.1.1.2. Pengendali Perangkat

Unit I/O mengandung komponen mekanis dan elektronis. Komponen elektronis ini disebut pengendaliperangkat (device controllers) atau adapter. Pada komputer personal (PC), komponen ini biasanya berupakartu sirkuit yang dapat dimasukkan ke dalam slot padamotherboardkomputer. Perangkat mekanisberupa perangkat itu sendiri.

Kartu pengendali biasanya memiliki sebuah penghubung. Beberapa pengendali bisa menangani dua,empat, atau bahkan delapan perangkat yang sejenis. Sistem operasi hampir selalu berhubungan denganpengendali, bukan dengan perangkat secara langsung. Sebagian besar komputer yang berukuran kecilmenggunakan model bus tunggal seperti pada gambar Gb. 7-1 untuk berkomunikasi antara CPU danpengendali. Sedangkanmainframeyang berukuran besar umumnya menggunakan model yang berbeda,dengan bus yang banyak danI/O channels.

Gambar 7-1. Model Bus Tunggal

Sebuah model untuk menghubungkan CPU, memori, pengendali, dan perangkat I/O.

7.1.2. PollingBusy-waiting/pollingadalah ketikahostmengalamiloopingyaitu membaca statusregistersecaraterus-menerus sampai statusbusydi- clear. Pada dasarnyapolling dapat dikatakan efisien. Akan tetapipolling menjadi tidak efisien ketika setelah berulang-ulang melakukanlooping, hanya menemukansedikit perangkat yang siap untuk menservis, karenaCPU processingyang tersisa belum selesai.

278

Page 299: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-2. ProsesPolling

Contoh prosespolling yang tipikal.

7.1.3. Interupsi

7.1.3.1. Mekanisme Dasar Interupsi

Ketika CPU mendeteksi bahwa sebuah pengendali telah mengirimkan sebuah sinyal keinterrupt requestline (membangkitkan sebuah interupsi), CPU kemudian menjawab interupsi tersebut (juga disebutmenangkap interupsi) dengan menyimpan beberapa informasi mengenai keadaan terkiniCPU--contohnya nilai instruksi pointer, dan memanggilinterrupt handleragarhandlertersebut dapatmelayani pengendali atau alat yang mengirim interupsi tersebut.

7.1.3.2. Fitur Tambahan pada Komputer Modern

Pada arsitektur komputer modern, tiga fitur disediakan oleh CPU dan pengendali interupsi (padaperangkat keras) untuk dapat menangani interrupsi dengan lebih bagus. Fitur-fitur ini antara lain adalahkemampuan menghambat sebuah proses penanganan interupsi selama proses berada dalamcritical state,efisiensi penanganan interupsi sehingga tidak perlu dilakukanpolling untuk mencari perangkat yangmengirimkan interupsi, dan fitur yang ketiga adalah adanya sebuah konsep interupsi multilevelsedemikian rupa sehingga terdapat prioritas dalam penanganan interupsi (diimplementasikan denganinterrupt priority level system).

7.1.3.3. Interrupt Request Line

Pada peranti keras CPU terdapat kabel yang disebutinterrupt request line, kebanyakan CPU memilikidua macaminterrupt request line, yaitunonmaskable interruptdanmaskable interrupt. Maskableinterrupt dapat dimatikan/dihentikan oleh CPU sebelum pengeksekusian deretancritical instruction

279

Page 300: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

(critical instruction sequence) yang tidak boleh diinterupsi. Biasanya, interrupt jenis ini digunakan olehpengendali perangkat untuk meminta pelayanan CPU.

7.1.3.4. Interrupt Vector dan Interrupt Chaining

Sebuah mekanisme interupsi akan menerima alamatinterrupt handling routineyang spesifik dari sebuahset, pada kebanyakan arsitektur komputer yang ada sekarang ini, alamat ini biasanya berupa sekumpulanbilangan yang menyatakan offset pada sebuah tabel (biasa disebut vektor interupsi). Tabel ini menyimpanalamat-alamat interrupthandlerspesifik di dalam memori. Keuntungan dari pemakaian vektor adalahuntuk mengurangi kebutuhan akan sebuah interrupt handler yang harus mencari semua kemungkinansumber interupsi untuk menemukan pengirim interupsi. Akan tetapi, vektor interupsi memiliki hambatankarena pada kenyataannya, komputer yang ada memiliki perangkat (daninterrupt handler) yang lebihbanyak dibandingkan dengan jumlah alamat pada vektor interupsi. Karena itulah, digunakan teknikinterrupt chainingsetiap elemen dari vektor interupsi menunjuk pada elemen pertama dari sebuah daftarinterrupt handler. Dengan teknik ini,overheadyang dihasilkan oleh besarnya ukuran tabel daninefisiensi dari penggunaan sebuahinterrupt handler(fitur pada CPU yang telah disebutkan sebelumnya)dapat dikurangi, sehingga keduanya menjadi kurang lebih seimbang.

7.1.3.5. Penyebab Interupsi

Interupsi dapat disebabkan berbagai hal, antara lainexception, page fault, interupsi yang dikirimkan olehpengendali perangkat, dansystem call. Exceptionadalah suatu kondisi dimana terjadi sesuatu, atau darisebuah operasi didapat hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih,contohnya pembagian dengan 0 (nol), pengaksesan alamat memori yangrestrictedatau bahkan tidakvalid, dan lain-lain.System calladalah sebuah fungsi pada aplikasi (perangkat lunak) yang dapatmengeksekusikan instruksi khusus berupa interupsi perangkat lunak atautrap.

7.1.4. DMA (Direct Memory Access)

7.1.4.1. Definisi

DMA adalah sebuah prosesor khusus (special purpose processor) yang berguna untuk menghindaripembebanan CPU utama oleh program I/O (PIO).

7.1.4.2. Transfer DMA

Untuk memulai sebuah transfer DMA,hostakan menuliskan sebuah DMAcommand blockyang berisipointeryang menunjuk ke sumber transfer,pointeryang menunjuk ke tujuan transfer, dan jumlah byteyang ditransfer, ke memori. CPU kemudian menuliskan alamatcommand blockini ke pengendali DMA,sehingga pengendali DMA dapat kemudian mengoperasikan bus memori secara langsung denganmenempatkan alamat- alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.

Tiga langkah dalam transfer DMA:

280

Page 301: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

1. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari perangkat, operasi yangakan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yangditransfer.

2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membacadata), sampai seluruh blok sudah di transfer.

3. Pengendali DMA meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.

Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode yangpertama adalah metode yang sangat baku dan sederhana disebutHALT, atauBurst Mode DMA, karenapengendali DMA memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau darimemori padasingle burst. Selagi transfer masih dalam prosres, sistem mikroprosessor di-setidle, tidakmelakukan instruksi operasi untuk menjaga internalregister. Tipe operasi DMA seperti ini ada padakebanyakan komputer.

Metode yang kedua, mengikut-sertakan pengendali DMA untuk memegang kontrol dari sistem bus untukjangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dantidak membutuhkan akses ke sistem bus. Metode DMA ini disebutcycle stealing mode. Cycle stealingDMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena pengendali DMAharus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.

7.1.4.3. Handshaking

Proseshandshakingantara pengendali DMA dan pengendali perangkat dilakukan melalui sepasangkabel yang disebutDMA-requestdanDMA-acknowledge. Pengendali perangkat mengirimkan sinyalmelaluiDMA-requestketika akan mentransfer data sebanyak satu word. Hal ini kemudian akanmengakibatkan pengendali DMA memasukkan alamat-alamat yang dinginkan ke kabel alamat memori,dan mengirimkan sinyal melalui kabelDMA-acknowledge. Setelah sinyal melalui kabelDMA-acknowledgediterima, pengendali perangkat mengirimkan data yang dimaksud dan mematikansinyal padaDMA-request.

Hal ini berlangsung berulang-ulang sehingga disebuthandshaking. Pada saat pengendali DMAmengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masihdapat mengaksees data pada cache primer dan sekunder. Hal ini disebutcycle stealing, yang walau punmemperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transferke pengendali DMA meningkatkan performa sistem secara keseluruhan.

7.1.4.4. Cara-cara Implementasi DMA

Dalam pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA , sedangkanjenis komputer lain menggunakan alamat virtual dengan melalui tahap "penerjemahan" dari alamatmemori virtual menjadi alamat memori fisik, hal ini disebutDirect Virtual-Memory AddressatauDVMA. Keuntungan dari DVMA adalah dapat mendukung transfer antara dua memorimapped devicetanpa intervensi CPU.

281

Page 302: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.2. Aplikasi Antarmuka I/O; Subsistem Kernel; OperasiPerangkat Keras

7.2.1. Aplikasi Antarmuka I/OBagian ini akan membahas bagaimana teknik dan struktur antarmuka yang memungkinkan I/Odiperlakukan secara seragam. Salah satu contohnya adalah ketika suatu aplikasi ingin membuka datayang ada dalam suatu disk tanpa mengetahui jenis disk apa yang akan diaksesnya. Untuk mempermudahpengaksesan, sistem operasi melakukan standarisasi pengaksesan pada perangkat I/O. Pendekatan inilahyang dinamakanaplikasi antarmuka I/O .

Seperti layaknya permasalahan darisoftware-engineeringyang rumit lainnya, aplikasi antarmuka I/Omelibatkan abstraksi, enkapsulasi, dansoftware layering. Abstraksi dilakukan dengan membagi-bagidetail perangkat-perangkat I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yangumum ini, maka akan lebih mudah bagi fungsi-fungsi standar ( antarmuka) untuk mengaksesnya.Selanjutnya, keberadaandevice driverpada masing-masing peralatan I/O akan berfungsimeng-enkapsulasi perbedaan-perbedaan yang ada dari setiap anggota kelas-kelas yang umum tadi.

Tujuan dari adanya lapisandevice driverini adalah untuk menyembunyikan perbedaan-perbedaan yangada pada pengendali perangkat dari subsistem I/O yang terdapat dalam kernel. Dengan demikian,subsistem I/O dapat bersifat mandiri dari perangkat keras. Hal ini sangat menguntungkan dari segipengembangan perangkat keras, karena tidak perlu menunggu vendor sistem operasi untukmengeluarkansupport codeuntuk perangkat-perangkat keras baru yang akan dikeluarkan oleh paravendor perangkat keras tersebut.

Gambar 7-3. Struktur Kernel

Gambar ini diadaptasi dari [Silberschatz2002, halaman 467].

Sayangnya untuk manufaktur perangkat keras, masing-masing sistem operasi memiliki standarnyasendiri untukdevice driverantarmukanya. Karakteristik dari perangkat-perangkat tersebut sangatbervariasi, beberapa yang dapat membedakannya adalah dari segi:

282

Page 303: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

1. Character-streamatau block: Sebuahstreamkarakter memindahkan per satubytes, sedangkanblok memindahkan sekumpulanbytesdalam 1 unit.

2. Sequentialatau Random-access: Sebuah perangkat yang sekuensial memindahkan data dalamsusunan yang sudah pasti seperti yang ditentukan oleh perangkat, sedangkan pengguna aksesrandomdapat meminta perangkat untuk mencari ke seluruh lokasi penyimpanan data yang tersedia.

3. Synchronousatau asynchronous: perangkat yangsynchronousmenampilkan data-data transferdengan waktu reaksi yang dapat diduga, sedangkan perangkat yangasynchronousmenampilkanwaktu reaksi yang tidak dapat diduga.

4. Sharableatau dedicated: perangkat yang dapat dibagi dapat digunakan secara bersamaan olehbeberapa prosesor atauthread, sedangkan perangkat yangdedicatedtidak bisa.

5. Speed of operation: Rentangan kecepatan perangkat dari beberapa bytes per detik sampai beberapagigabytes per detik.

6. Read-write, read only, atau write only: Beberapa perangkat memungkinkan baik input-output duaarah, tapi beberapa lainnya hanya menunjang data satu arah.

Pada umumnya sistem operasi juga memiliki sebuah "escape" atau "pintu belakang" yang secara terbukamengirim perintah yangarbitrary dari sebuah aplikasi kedevice driver. Dalam UNIX, adaioctl() yangmemungkinkan aplikasi mengakses seluruh fungsi yang tersedia didevice drivertanpa perlu membuatsebuah sistemcall yang baru.

ioctl() ini mempunyai 3 argumen, yang pertama adalah sebuah pendeskripsi berkas yangmenghubungkan aplikasi kedriver dengan menunjuk perangkat keras yang diatur olehdriver tersebut.Kedua, adalah sebuah integer yang memilih satu perintah yang terimplementasi di dalamdriver. Ketiga,sebuah pointer ke struktur dataarbitrary di memori, yang memungkinkan aplikasi dandriverberkomunikasi dengan data dan mengendalikan informasi data.

7.2.1.1. Peralatan Blok dan Karakter

Peralatan blok diharapkan dapat memenuhi kebutuhan akses pada berbagai macamdisk drivedan jugaperalatan blok lainnya, memenuhi/mengerti perintah baca, tulis dan juga perintah pencarian data padaperalatan yang memiliki sifatrandom-access.

Keyboardadalah salah satu contoh alat yang dapat mengaksesstream-karakter.System calldasar dariantarmuka ini dapat membuat sebuah aplikasi mengerti tentang bagaimana cara untuk mengambil danmenuliskan sebuah karakter. Kemudian pada pengembangan lanjutannya, kita dapat membuatlibraryyang dapat mengakses data/pesan baris demi baris.

7.2.1.2. Peralatan Jaringan

Karena adanya perbedaan dalam kinerja dan pengalamatan dari jaringan I/O, maka biasanya sistemoperasi memiliki antarmuka I/O yang berbeda dari baca, tulis dan pencarian pada disk. Salah satu yangbanyak digunakan pada sistem operasi adalahsocket interface.

Socketberfungsi untuk menghubungkan komputer ke jaringan.System callpadasocket interfacedapatmemudahkan suatu aplikasi untuk membuatlocal socket, dan menghubungkannya keremote socket.Dengan menghubungkan komputer kesocket, maka komunikasi antar komputer dapat dilakukan.

283

Page 304: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.2.1.3. Jam dan Timer

Adanya jam dantimer pada perangkat keras komputer, setidaknya memiliki tiga fungsi, memberiinformasi waktu saat ini, memberi informasi lamanya waktu sebuah proses, sebagaitrigger untuk suatuoperasi pada suatu waktu. Fungsi-fungsi ini sering digunakan oleh sistem operasi. Sayangnya,systemcall untuk pemanggilan fungsi ini tidak distandarisasi antar sistem operasi.

Perangkat keras yang mengukur waktu dan melakukan operasitrigger dinamakanprogrammableinterval timer. Dia dapat diatur untuk menunggu waktu tertentu dan kemudian melakukan interupsi.Contoh penerapannya ada padascheduler, dimana dia akan melakukan interupsi yang akanmemberhentikan suatu proses pada akhir dari bagian waktunya.

Sistem operasi dapat mendukung lebih dari banyaktimer requestdaripada banyaknya jumlahtimerhardware. Dengan kondisi seperti ini, maka kernel ataudevice drivermengatur daftar dari interupsidengan urutan yang pertama kali datang akan dilayani terlebih dahulu.

7.2.1.4. Blocking dan Nonblocking I/O

Ketika suatu aplikasi menggunakan sebuahblocking system call, eksekusi aplikasi itu akan dihentikansementara lalu dipindahkan kewait queue. Setelahsystem calltersebut selesai, aplikasi tersebutdikembalikan kerun queue, sehingga pengeksekusiannya akan dilanjutkan.Physical actiondariperalatan I/O biasanya bersifatasynchronous. Akan tetapi, banyak sistem operasi yang bersifatblocking,hal ini terjadi karenablocking applicationlebih mudah dimengerti dari padanonblocking application.

7.2.2. Kernel I/O SubsystemKernel menyediakan banyak layanan yang berhubungan dengan I/O. Pada bagian ini, kita akanmendeskripsikan beberapa layanan yang disediakan oleh subsistem kernel I/O, dan kita akan membahasbagaimana caranya membuat infrastruktur perangkat keras dandevice driver. Layanan-layanan yangakan kita bahas adalah penjadwalan I/O,buffering, caching, spooling, reservasi perangkat,errorhandling.

7.2.2.1. Penjadwalan I/O

Menjadwal sekumpulan permintaan I/O sama dengan menentukan urutan yang sesuai untukmengeksekusi permintaan tersebut. Penjadwalan dapat meningkatkan performa sistem secarakeseluruhan, dapat membagi perangkat secara adil di antara proses-proses, dan dapat mengurangi waktutunggu rata-rata untuk menyelesaikan operasi I/O.

Berikut adalah contoh sederhana untuk menggambarkan definisi di atas. Jika sebuaharm diskterletak didekat permulaan disk, dan ada tiga aplikasi yang memblokir panggilan untuk membaca disk tersebut.Aplikasi 1 meminta sebuah blok dekat akhir disk, aplikasi 2 meminta blok yang dekat dengan awal, danaplikasi 3 meminta bagian tengah dari disk. Sistem operasi dapat mengurangi jarak yang harus ditempuholeharm diskdengan melayani aplikasi tersebut dengan urutan 2, 3, 1. Pengaturan urutan pekerjaankembali seperti ini merupakan inti dari penjadwalan I/O.

Pengembang sistem operasi mengimplementasikan penjadwalan dengan mengatur antrian permintaanuntuk tiap perangkat. Ketika sebuah aplikasi meminta sebuahblockingsistem I/O, permintaan tersebut

284

Page 305: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

dimasukkan ke dalam antrian untuk perangkat tersebut.Scheduler I/Omengurutkan kembali antrianuntuk meningkatkan efisiensi dari sistem dan waktu respon rata-rata yang harus dialami oleh aplikasi.Sistem operasi juga mencoba untuk bertindak secara adil agar tidak ada aplikasi yang menerima layananyang lebih sedikit, atau dapat memberikan prioritas layanan untuk permintaan penting yang ditunda.Contohnya, pemintaan dari sub sistem mungkin akan mendapatkan prioritas lebih tinggi daripadapermintaan dari aplikasi. Beberapa algoritma penjadwalan untukI/O diskakan dijelaskan pada bagianPenjadwalan Disk.

Salah satu cara untuk meningkatkan efisiensi I/O sub sistem dari sebuah komputer adalah denganmengatur operasi I/O tersebut. Cara lain adalah dengan menggunakan tempat penyimpanan pada memoriutama atau pada disk, melalui teknik yang disebutbuffering, caching, danspooling.

7.2.2.2. Buffering

Bufferadalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara duaperangkat atau antara perangkat dan aplikasi.

3 alasan melakukan buffering:

1. Mengatasi perbedaan kecepatan antara produsen dengan konsumen dari sebuahstreamdata.

Contoh, sebuah berkas sedang diterima melaluimodemdan akan disimpan dihard disk. Kecepatanmodemtersebut ribuan kali lebih lambat daripadahard disk, sehinggabufferdibuat di dalam memoriutama untuk mengumpulkan jumlahbyteyang diterima darimodem. Ketika keseluruhan data dibuffersudah sampai,buffer tersebut dapat ditulis ke disk dengan operasi tunggal.

Karena penulisan disk tidak terjadi dengan seketika danmodemmasih memerlukan tempat untukmenyimpan data yang berdatangan, maka 2 buahbufferdigunakan untuk melakukan operasi ini.Setelahmodemmemenuhibufferpertama, akan terjadi permintaan untuk menulis di disk.Modemkemudian mulai memenuhibufferkedua sementarabufferpertama dipakai untuk penulisan ke disk.Seiringmodemsudah memenuhibufferkedua, penulisan ke disk daribufferpertama seharusnyasudah selesai, jadimodemakan berganti kembali memenuhibufferpertama sedangkanbufferkeduadipakai untuk menulis. Metodedouble bufferingini membuat pasangan ganda antara produsen dankonsumen sekaligus mengurangi kebutuhan waktu diantara mereka.

2. Untuk menyesuaikan perangkat-perangkat yang mempunyai perbedaan dalam ukuran transfer data.

Hal ini sangat umum terjadi pada jaringan komputer, dimanabufferdipakai secara luas untukfragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuahpesan yang besar akan dipecah ke dalam paket-paket kecil. Paket-paket tersebut dikirim melaluijaringan, dan penerima akan meletakkan mereka di dalambufferuntuk disusun kembali.

3. Untuk mendukungcopy semanticsuntuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti daricopy semantics. Jika ada sebuah aplikasi yang mempunyaibufferdata yang ingin dituliskan ke disk,aplikasi tersebut akan memanggil sistem penulisan, menyediakanpointerkebuffer, dan sebuahintegeruntuk menunjukkan ukuranbytesyang ingin ditulis. Setelah pemanggilan tersebut, apakahyang akan terjadi jika aplikasi tersebut merubah isi dari buffer?

285

Page 306: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Dengancopy semantics, versi data yang ingin ditulis sama dengan versi data waktu aplikasi inimemanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi padabuffer.Sebuah cara sederhana untuk sistem operasi untuk menjamincopy semanticsadalah membiarkansistem penulisan untuk menyalin data aplikasi ke dalambuffer kernelsebelum mengembalikankontrol kepada aplikasi. Jadi penulisan ke disk dilakukan padabuffer kernel, sehingga perubahanyang terjadi padabufferaplikasi tidak akan membawa dampak apa-apa. Menyalin data antarabufferkerneldata aplikasi merupakan sesuatu yang umum pada sistem operasi, kecualioverheadyangterjadi karena operasiclean semantics. Kita dapat memperoleh efek yang sama yang lebih efisiendengan memanfaatkan pemetaan virtual-memori dan proteksicopy-on-wiredengan lebih pintar.

7.2.2.3. Caching

Sebuahcacheadalah daerah memori yang cepat yang berisikan data kopian. Akses ke sebuah kopianyang di-cachedlebih efisien daripada akses ke data asli. Sebagai contoh, instruksi-instruksi dari prosesyang sedang dijalankan disimpan ke dalam disk, dan ter-cacheddi dalam memori fisik, dan kemudiandikopi lagi ke dalamcache secondary and primarydari CPU. Perbedaan antara sebuahbufferdancacheadalahbufferdapat menyimpan satu-satunya informasi data sedangkan sebuahcachesecara definisihanya menyimpan sebuah data dari sebuah tempat untuk dapat diakses lebih cepat.

Cachingdanbufferingadalah dua fungsi yang berbeda, tetapi terkadang sebuah daerah memori dapatdigunakan untuk keduanya. sebagai contoh, untuk menghematcopy semanticsdan membuatpenjadwalan I/O menjadi efisien, sistem operasi menggunakanbufferpada memori utama untukmenyimpan data.

Buffer ini juga digunakan sebagaicache, untuk meningkatkan efisiensi IO untuk berkas yang digunakansecara bersama-sama oleh beberapa aplikasi, atau yang sedang dibaca dan ditulis secara berulang-ulang.

Ketika kernel menerima sebuah permintaan berkas I/O, kernel tersebut mengaksesbuffer cacheuntukmelihat apakah daerah memori tersebut sudah tersedia dalam memori utama. Jika sudah tersedia, sebuahphysical disk I/Odapat dihindari atau bahkan tidak dipakai. Penulisan disk juga terakumulasi ke dalambuffer cacheselama beberapa detik, jadi transfer yang besar akan dikumpulkan untuk mengefisiensikanjadwal penulisan. Cara ini akan menunda penulisan untuk meningkatkan efisiensi I/O akan dibahas padabagianRemote File Access.

286

Page 307: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.2.2.4. Spooling dan Reservasi Perangkat

Gambar 7-4. Spooling

Spoolingadalah proses yang sangat berguna saat berurusan dengan perangkat I/O dalam sistemmultiprogram. Sebuahspooladalah sebuah buffer yang menyimpan keluaran untuk sebuah perangkatyang tidak dapat menerimainterleaved datastreams. Salah satu perangkatspoolyang paling umumadalah printer.

Printer hanya dapat melayani satu pekerjaan pada waktu tertentu, namun beberapa aplikasi dapatmeminta printer untuk mencetak.Spoolingmemungkinkan keluaran mereka tercetak satu per satu, tidaktercampur. Untuk mencetak sebuah berkas, pertama-tama sebuah proses mengeneralisasi berkas secarakeseluruhan untuk di cetak dan ditempatkan padaspooling directory. Sistem operasi akanmenyelesaikan masalah ini dengan meng-interceptsemua keluaran kepada printer. Tiap keluaran aplikasisudah di-spooledke disk berkas yang berbeda. Ketika sebuah aplikasi selesai mencetak, sistemspoolingakan melanjutkan ke antrian berikutnya.

Di dalam beberapa sistem operasi,spoolingditangani oleh sebuah sistem prosesdaemon. Pada sistemoperasi yang lain, sistem ini ditangani olehin-kernel thread. Pada kedua penanganan tersebut, sistemoperasi menyediakan antarmuka kontrol yang membuatusersand sistem administrator dapatmenampilkan antrian tersebut, untuk mengenyahkan antrian-antrian yang tidak diinginkan sebelummulai dicetak.

Contoh lain adalah penggunaanspoolingpada transfer berkas melalui jaringan yang biasanyamenggunakandaemonjaringan. Untuk mengirim berkas ke suatu tempat,usermenempatkan berkastersebut dalamspooling directoryjaringan. Selanjutnya,daemonjaringan akan mengambilnya danmentransmisikannya. Salah satu bentuk nyata penggunaanspoolingjaringan adalah sistimemailviaInternet. Keseluruhan sistem untuk mail ini berlangsung di luar sistem operasi.

Beberapa perangkat, seperti drive tape dan printer, tidak dapat me-multiplexpermintaan I/O daribeberapa aplikasi. Selain denganspooling, dapat juga diatasi dengan cara lain, yaitu dengan membagikoordinasi untukmultiple concurrentini. Beberapa sistem operasi menyediakan dukungan untuk aksesperangkat secara eksklusif, dengan mengalokasikan proses kedevice idledan membuang perangkat yangsudah tidak diperlukan lagi. Sistem operasi lainnya memaksakan limit suatu berkas untuk menanganiperangkat ini. Banyak sistem operasi menyediakan fungsi yang membuat proses untuk menanganikoordinatexclusive aksesdiantara mereka sendiri.

287

Page 308: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.2.2.5. Error Handling

Sebuah sistem operasi yang menggunakanprotected memorydapat menjaga banyak kemungkinanerrorakibat perangkat keras mau pun aplikasi. Perangkat dan transferI/O dapat gagal dalam banyak cara, bisakarena alasan transient, sepertioverloadedpada jaringan, maupun alasan permanen yang sepertikerusakan yang terjadi padadisk controller. Sistem operasi seringkali dapat mengkompensasikan untukkesalahan transient. Seperti, sebuah kesalahan baca pada disk akan mengakibatkan pembacaan ulangkembali dan sebuah kesalahan pengiriman pada jaringan akan mengakibatkan pengiriman ulang apabilaprotokolnya diketahui. Akan tetapi untuk kesalahan permanen, sistem operasi pada umumnya tidak akanbisa mengembalikan situasi seperti semula.

Sebuah ketentuan umum, yaitu sebuah sistemI/O akan mengembalikan satu bit informasi tentang statuspanggilan tersebut, yang akan menandakan apakah proses tersebut berhasil atau gagal. Sistem operasipada UNIX menggunakanintegertambahan yang dinamakanERRNOuntuk mengembalikan kodekesalahan sekitar 1 dari 100 nilai yang mengindikasikan sebab dari kesalahan tersebut. Sebaliknya,beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail, walau pun banyak sistemoperasi yang tidak mendukung fasilitas ini.

Sebagai contoh, kesalahan pada perangkat SCSI dilaporkan oleh protokol SCSI dalam bentuksense keyyang mengindentifikasi kesalahan yang umum sepertierror pada perangkat keras atau permintaan yangilegal; sebuahadditional sense codeyang mengkategorikan kesalahan yang muncul, seperti kesalahanparameter atau kesalahanself-test; dan sebuahadditional sense code qualifieryang memberitahukankesalahan secara lebih mendalam dan mendetil, seperti parameter yang error.

7.2.2.6. Struktur Data Kernel

Kernelmembutuhkan informasi keadaan tentang penggunakan komponen I/O.Kernelmenggunakanbanyak struktur yang mirip untuk melacak koneksi jaringan, komunikasi perangkat karakter, danaktivitas I/O lainnya.

UNIX menyediakan akses sistem berkas untuk beberapa entiti, seperti berkas pengguna,raw devices,dan alamat tempat proses. Walau pun tiap entiti ini didukung sebuah operasi baca, semantiksnya berbedauntuk tiap entiti. Seperti untuk membaca berkas pengguna, kernel perlu memeriksabuffer cachesebelummemutuskan apakah akan melaksanakanI/O disk. Untuk membaca sebuahraw disk, kernel perlu untukmemastikan bahwa ukuran permintaan adalah kelipatan dari ukuran sektor disk, dan masih terdapat didalam batas sektor. Untuk memproses citra, cukup perlu untuk mengkopi data ke dalam memori. UNIXmengkapsulasikan perbedaan-perbedaan ini di dalam struktur yang seragam dengan menggunakan teknikobject oriented.

Beberapa sistem operasi bahkan menggunakan metodeobject orientedsecara lebih ekstensif. Sebagaicontoh, Windows NT menggunakan implementasimessage-passinguntukI/O. Sebuah permintaan I/Oakan dikonversikan ke sebuah pesan yang dikirim melalui kernel kepada I/O manager dan kemudian kedevice driver, yang masing-masing bisa mengubah isi pesan. Untuk output, isi message adalah data yangakan ditulis. Untuk input, message berisikanbufferuntuk menerima data. Pendekatanmessage-passingini dapat menambahoverhead, dengan perbandingan dengan teknik prosedural yang membagi strukturdata, tetapi akan mennyederhanakan struktur dan design dari sistem I/O tersebut dan menambahfleksibilitas.

Kesimpulannya, subsistem I/O mengkoordinasi kumpulan-kumpulan service yang banyak sekali, yangtersedia dari aplikasi maupun bagian lain dari kernel. Subsistem I/O mengawasi:

288

Page 309: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

1. Manajemen nama untuk berkas dan perangkat.

2. Kontrol akses untuk berkas dan perangkat.

3. Kontrol operasi, contoh: model yang tidak dapat dikenali.

4. Alokasi tempat sistem berkas.

5. Alokasi perangkat.

6. Buffering, caching, spooling.

7. Penjadwalan I/O

8. Mengawasi status perangkat,error handling, dan kesalahan dalamrecovery.

9. Konfigurasi dan utilisasidriver device.

7.2.3. Penanganan Permintaan I/ODi bagian sebelumnya, kita mendeskripsikanhandshakingantaradevice driverdan pengendaliperangkat, tapi kita tidak menjelaskan bagaimana Sistem Operasi menyambungkan permintaan aplikasiuntuk menyiapkan jaringan menuju sektor disk yang spesifik.

Sistem Operasi yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan tabellookup di jalur diantara permintaan dan pengendali perangkatphysical. Kita dapat mengenalkanperangkat dandriver baru ke komputer tanpa harus meng-compile ulang kernelnya. Sebagai fakta, adabeberapa sistem operasi yang mampu untuk me-load device driversyang diinginkan. Pada waktuboot,sistem mula-mula memintabusperangkat keras untuk menentukan perangkat apa yang ada, kemudiansistem me-load ke dalamdriver yang sesuai; baik sesegera mungkin, mau pun ketika diperlukan olehsebuah permintaan I/O.

Sistem V UNIX mempunyai mekanisme yang menarik, yang disebutstreams, yang membolehkanaplikasi untuk men-assemble pipelinedari kodedriver secara dinamis. Sebuahstreamadalah sebuahkoneksifull duplexantara sebuahdevice driverdan sebuah proses user-level. Stream terdiri atas sebuahstream headyang merupakan antarmuka dengan user process, sebuahdriver endyang mengontrolperangkat, dan nol atau lebihstream modulesdi antara mereka.Modulesdapat didorong kestreamuntukmenambah fungsionalitas di sebuahlayered fashion. Sebagai gambaran sederhana, sebuah proses dapatmembuka sebuah alatport serialmelalui sebuahstream, dan dapat mendorong ke sebuah modul untukmemegangedit input.Streamdapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, diSistem V, mekanisme soket diimplementasikan denganstream.

Berikut dideskripsikan sebuahlifecycleyang tipikal dari sebuah permintaan pembacaan blok:

1. Sebuah proses mengeluarkan sebuahblocking read system callke sebuah berkas deskriptor dariberkas yang telah dibuka sebelumnya.

2. Kodesystem-calldi kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telahsiap dibuffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan.

3. Jika data tidak berada dalambuffer cache, sebuah physical I/O akan bekerja, sehingga proses akandikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat,dan permintaan I/O pun dijadwalkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke

289

Page 310: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

device driver. Bergantung pada sistem operasi, permintaan dikirimkan melaluicall subrutin ataumelalui pesanin-kernel.

4. Device drivermengalokasikan ruangbufferpada kernel untuk menerima data, dan menjadwalkanI/O. Pada akhirnya, driver mengirim perintah ke pengendali perangkat dengan menulis keregisterdevice control.

5. Pengendali perangkat mengoperasikan perangkat keras perangkat untuk melakukan transfer data.

6. Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel.Kita mengasumsikan bahwa transfer diatur oleh sebuahDMA controller, yang menggunakaninterupsi ketika transfer selesai.

7. Interrupt handleryang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpansejumlah data yang dibutuhkan, menandaidevice driver, dan kembali dari interupsi.

8. Device drivermenerima tanda, menganalisa permintaan I/O mana yang telah diselesaikan,menganalisa status permintaan, dan menandai subsistem I/O kernel yang permintaannya telahterselesaikan.

9. Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, danmemindahkan proses dari antrian tunggu kembali ke antrian siap.

10.Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadwal (scheduler)mengembalikan proses ke CPU, proses meneruskan eksekusi pada penyelesaian darisystem call.

7.3. I/O Streams dan Kinerja I/O

7.3.1. I/O StreamsI/O streamadalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatualiran data dari proses ke peranti (begitu pula sebaliknya).

I/O Streamterdiri dari:

1. stream headyang berhubungan langsung dengan proses.

2. driver endsyang mengatur peranti-peranti

3. stream modulesyang berada di antarastream headdandriver end, yang bertugas menyampaikandata kedriver endmelaluiwrite queue, maupun menyampaikan data ke proses melaluiread queuedengan caramessage passing.

Untuk memasukkan ke dalam stream digunakanioctl( ) system call, sedangkan untuk menuliskan data keperanti digunakanwrite( )/ putmsg( ) system calls,dan untuk membaca data dari peranti digunakanread ()/ getmsg( ) system calls.

290

Page 311: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-5. Struktur stream

7.3.2. Kinerja I/OI/O adalah faktor penting dalam kinerja sistem. I/O sering meminta CPU untuk mengeksekusidevice-driver codedan menjadwal proses secara efisien sewaktumemblockdanunblock. Hasilcontextswitchmen-stresske CPU danhardware cache-nya. I/O juga memberitahukan ketidakefisienanmekanisme penanganan interupsi dalam kernel, dan I/O me-load down memory bussaatdata copyantara pengendali dan memori fisik, dan juga saatcopyantarakernel buffersdanapplication data space.Mengkopi dengan semua permintaan ini adalah salah satu kekhawatiran dalam arsitektur komputer.

Walaupun komputer modern dapat menangani beribu-ribu interupsi per detik, namun penangananinterupsi adalah pekerjaan yang sulit. Setiap interupsi mengakibatkan sistem melakukan perubahanstatus, mengeksekusiinterrupt handlerlalu mengembalikan statusnya kembali. I/O yang terprogram bisalebih efisien dibandinginterrupt-driven I/O, jika waktucycleyang dibutuhkan untukbusy-waitingtidakberlebihan. I/O yang sudah selesai biasanya meng-unblocksebuah proses lalu membawanya kefulloverhead of context switch.

Network trafficjuga bisa menyebabkanhigh context-switch rate. Coba diperhatikan, misalnya sebuahremote logindari sebuah mesin ke mesin lainnya. Setiap karakter yang diketikkan padalocal machineharus dikirim keremote machine. Padalocal machinekarakter akan diketikkan, lalukeyboard interruptdibuat, dan karakter melewatiinterrupt handlermenujudevice-driverlalu ke kernel, setelah itu keproses. Proses memanggilnetwork I/O system calluntuk mengirim karakter keremote machine. Karakterlalu melewati local kernel, menuju ke lapisan-lapisan network yang membuat paket network, lalu kenetwork device driver. Network device drivermengirim paket itu kenetwork controller, yang mengirim

291

Page 312: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

karakter dan membuat interupsi. Interupsi kemudian dikembalikan ke kernel supayaI/O system callbisaselesai.

Sekarangremote system’s network hardwaresudah menerima paket, dan interupsi dibuat. Karakter di-unpackdarinetwork protocoldan dikirim kenetwork daemonyang sesuai.Network daemonmengidentifikasiremote login sessionmana yang terlibat, dan mengirim paket kesubdaemonyangsesuai untuksessionitu. Melalui alur ini, adacontext switchdanstate switch(lihat gambar). Biasanya,penerima mengirim kembali karakter ke pengirim.

Gambar 7-6. gambar komunikasi interkomputer

Gambar ini diadaptasi dari [Silberschatz2002, halaman 484].

Developer Solaris mengimplementasikan kembali telnet daemon menggunakan kernel-thread untukmenghilangkancontext switchyang terlibat dalam pemindahan karakter dari daemon ke kernel. Sunmemperkirakan bahwa perkembangan ini akan menambah jumlah maksimumnetwork loginsdaribeberapa ratus hingga beberapa ribu (pada server besar)

Sistem lain menggunakanfront-end processoryang terpisah untuk terminal I/O, supaya mengurangibeban interupsi padamain CPU. Misalnya, sebuahterminal concentratordapat mengirim sinyal secarabersamaan dari beratus-ratus terminal ke satu port dilarge computer. SebuahI/O channeladalah sebuahCPU yang memiliki tujuan khusus yang ditemukan pada mainframe dan padasistem high-endlainnya.Kegunaan dariI/O channeladalah untuk meng-offload I/O workdarimain CPU. Prinsipnya adalahchanneltersebut menjaga supaya lalu lintas data lancar, sehingga main CPU bisa bebas memproses data.Sepertidevice controllerdanDMA controlleryang ada padasmaller computer, sebuahchanneldapatmemproses program-program yang umum dan kompleks, jadichannelbisa digunakan untukworkloadtertentu.

Kita bisa menggunakan beberapa prinsip untuk menambah efisiensi I/O :

1. Mengurangicontext switch.

2. Mengurangi jumlah pengkopian data dalam memori sewaktu pengiriman antara peranti dan aplikasi.

3. Mengurangi jumlah interupsi dengan menggunakan transfer besar- besaran,smart controller, danpolling (jika busy-waitingdapat diminimalisir).

4. Menambah konkurensi dengan menggunakan pengendali atauchannelDMA yang sudah diketahuiuntuk meng-offloadkopi data sederhana dari CPU.

292

Page 313: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

5. Memindahkanprocessing primitiveske perangkat keras, supaya operasi padadevice controllerkonkuren dengan CPU dan operasibus.

6. Keseimbangan antara CPU,memory subsystem, busdan kinerja I/O, karena sebuahoverloadpadasalah satu area akan menyebabkan keterlambatan pada yang lain.

Kompleksitas peranti berbeda-beda, misalnyamouse. Mouseadalah peranti yang sederhana. Pergerakanmousedanbutton clickdiubah menjadi nilai numerik yang dikirim dari perangkat keras (melaluimousedevice driver) menuju aplikasinya. Kebalikan darimouse, fungsionalitas yang disediakanNT disk devicedriver sangatlah kompleks.NT disk device drivertidak hanya mengaturindividual disk, tapi jugamengimplementasikanRAID array. Untuk dapat melakukannya,NT disk device drivermengubahreadataupunwrite requestdari aplikasi menjadicoordinated set of disk I/O operations. Terlebih lagi,NT diskdevice drivermengimplementasikan penanganan error dan algoritmadata-recovery, lalu mengambillangkah-langkah untuk mengoptimalkan kinerja disk, karena kinerja penyimpanan sekunder adalah halpenting untuk keseluruhan kinerja sistem.

Kapan fungsionalitas I/O dapat diimplementasikan? Padadevice hardware, device driver, atau padaaplikasi perangkat lunak ?

Mula-mula kita implementasikan eksperimen algoritma I/O padaapplication level, karenaapplicationcodelebih fleksibel, danapplication bugtidak membuat sistemcrash. Terlebih lagi denganmengembangkan kode padaapplication level, kita bisa menghindarirebootataupunreload device driversetiap mengganti kode. Bagaimanapun juga sebuah implementasi padaapplication levelbisa tidakefisien, karenaoverhead of context switch, dan karena aplikasi tidak bisa menerima kemudahan dariinternal kernel data structuredanfungsionalitas kernel(sepertiinternal kernel messaging, threading,danlockingyang efisien).

Ketika algoritmaapplication levelmemperlihatkan kegunaannya, kita bisa mengimplementasikankembali kernel, sehingga dapat menambah kinerja. Akan tetapi, usaha pengembangan suilt dilakukankarena sistem operasi kernel adalah sistem perangkat lunak yang besar dan kompleks.

Terlebih lagi, dalam pengimplementasian internal kernel harus di-debugsecara hati-hati untukmenghindaridata corruptdan sistem crash.

kinerja tertinggi bisa didapatkan dengan cara implementasi spesial dalam perangkat keras, baik dalamperanti ataupun pengendali. Kerugian dari implementasi perangkat keras termasuk kesulitan danpengorbanan dari membuat kemajuan atau dari pembetulanbug, dan bertambahnyadevelopment time(dalam satuan bulan, bukan hari), dan berkurangnya fleksibilitas.

Misalnya, sebuahhardware RAID controllermungkin saja tidak memberikan izin kepada kernel untukmempengaruhi urutan ataupun lokasi dariindividual block reads and writes, walaupun kernel memilikiinformasi tertentu tentangworkloadyang mampu membuat kernel meningkatkan kinerja I/O.

7.4. Manajemen Disk

7.4.1. Struktur DiskStrukturdiskmerupakan suatu hal yang penting bagi penyimpanan informasi. Sistem komputer modern

293

Page 314: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

menggunakanDisk sebagai media penyimpanan sekunder. Dulu pita magnetik digunakan sebelumpenggunaandisksebagai media penyimpanan,sekunder yang memiliki waktu akses yang lebih lambatdaridisk. Sejak digunakandisk, tape digunakan untuk backup, untuk menyimpan informasi yang tidaksering digunakan, sebagai media untuk memindahkan informasi dari satu sistem ke sistem lain, danuntuk menyimpan data yang cukup besar bagi sistemdisk.

Bentuk penulisanDisk drive modern adalaharray blok logika satu dimensi yang besar. Blok logikamerupakan satuan unit terkecil dari transfer. Ukuran blok logika umumnya sebesar 512 bytes walaupundiskdapat diformat di level rendah (low level formatted) sehingga ukuran blok logika bisa ditentukan,misalnya 1024 bytes.

Array adalah blok logika satu dimensi yang dipetakan ke sektor daridisksecara sekuensial. Sektor 0merupakan sektor pertama daritrack pertama yang terletak di silinder paling luar (outermost cylinder).Proses pemetaan dilakukan secara berurut dari Sektor 0, lalu ke seluruhtrack dari silinder tersebut, laluke seluruh silinder mulai dari silinder terluar sampai silinder terdalam.

Kita dapat mengubah sebuah nomor blok logika dengan pemetaan menjadi sebuah alamatdiskyangterdiri atas nomor silinder, nomortrack di silinder tersebut, dan nomor sektor daritrack tersebut. Dalamprakteknya, sulit untuk menerapkan pengubahan tersebut karena ada dua alasan. Pertama, kebanyakandiskmemiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini denganmensubstitusikan dengan sektor lain yang diambil dari suatu tempat didisk. Kedua, jumlah dari sektortidak track tidak konstan. Pada media yang menggunakan ketentuan CLV (Constant Linear Velocity)kepadatan bit tiaptrack sama, jadi semakin jauh sebuahtrack dari tengahdisk, semakin besarpanjangnya, dan juga semakin banyak sektor yang dimilikinya. Trek di zona terluar memiliki 40% sektorlebih banyak dibandingkan dengantrack di zona terdalam. Untuk menjamin aliran data yang sama,sebuah drive menaikan kecepatan putarannya ketikadisk headbergerak dari zona luar ke zona dalam.Metode ini digunakan dalam CD-ROM dan DVD-ROM. Metode lain yang digunakan agar rotasi tetapkonstan dan aliran data juga konstan dikenal dengan metode CAV (Constant Angular Velocity). CAVmemungkinkan aliran data yang konstan karena kepadatan bit dari zona terdalam ke zona terluarsemakin berkurang, sehingga dengan kecepatan rotasi yang konstan diperoleh aliran data yang konstan.

7.4.2. Penjadwalan DiskPenjadwalan disk merupakan salah satu hal yang sangat penting dalam mencapai efisiensi perangkatkeras. Bagidiskdrives, efisiensi dipengaruhi oleh kecepatan waktu akses dan besarnyadisk bandwith.Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasidisk( rotationallatency). Waktu pencarian adalah waktu yang dibutuhkandisk armuntuk menggerakkanheadke bagiansilinderdiskyang mengandung sektor yang diinginkan. Waktu rotasidiskadalah waktu tambahan yangdibutuhkan untuk menunggu perputarandiskagarheaddapat berada di atas sektor yang diinginkan.Diskbandwithadalah total jumlahbytesyang ditransfer dibagi dengan total waktu dari awal permintaantransfer sampai transfer selesai. Kita bisa meningkatkan waktu akses danbandwidthdenganmenjadwalkan permintaan dari I/O dalam urutan tertentu.

Apabila suatu proses membutuhkan pelayanan I/O dari atau menujudisk, maka proses tersebut akanmelakukansystem callke sistem operasi. Permintaan tersebut membawa beberapa informasi, antara lain:

1. Apakah operasiinput atauoutput.

2. Alamatdiskuntuk proses tersebut.

294

Page 315: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

3. Alamat memori untuk proses tersebut

4. Jumlahbytesyang akan ditransfer

Pelayanan akan dilayani pada suatu proses apabiladisk drivebeserta pengendali tersedia untuk prosestersebut. Apabiladisk drivedan pengendali sedang sibuk melayani proses lain, maka semua permintaanyang memerlukan pelayanandisk tersebut akan diletakkan pada suatu antrian permintaan untukdisktersebut. Dengan demikian, jika suatu permintaan telah dilayani, maka sistem operasi melayanipermintaan dari antrian berikutnya.

7.4.2.1. Penjadwalan FCFS

PenjadwalandiskFCFS melayani permintaan sesuai dengan antrian dari banyak proses yang memintalayanan. Secara umum algoritma FCFS ini sangat adil walaupun ada kelemahan dalam algoritma inidalam hal kecepatannya yang lambat. Sebagai contoh, antrian permintaan pelayanandiskuntuk prosesI/O pada blok dalam silinder adalah sebagai berikut: 10, 45, 37, 56, 60, 25, 78, 48, 88, 70, 5, 20. Jikaheadpada awalnya berada pada 50, makaheadakan bergerak dulu dari 50 ke 10, kemudian 45, 37, 56,60, 25, 78, 48, 88, 70, 5 dan terakhir 20, dengan total pergerakanheadsebesar 362 silinder.

Dari contoh diatas, kita dapat melihat permasalahan dengan menggunakan penjadwalan jenis ini yaitupergerakan dari 78 ke 48 dan kembali lagi ke 88. Jika permintaan terhadap silinder 88 dapat dilayanisetelah permintaan 78, setelah selesai baru melayani permintaan 48, maka pergerakan totalheaddapatdikurangi, sehingga dengan demikian pendayagunaan akan meningkat.

Gambar 7-7. Penjadwalan FCFS

Gambar ini diadaptasi dari [Silberschatz2002, halaman 494].

295

Page 316: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.4.2.2. Penjadwalan SSTF

Shortest-Seek-Time-First(SSTF) merupakan algoritma yang melayani permintaan berdasarkan waktupencarian atau waktu pencarian paling kecil dari posisiheadterakhir. Karena waktu pencarianmeningkat seiring dengan jumlah silinder yang dilewati olehhead, maka SSTF memilih permintaanyang paling dekat posisinya didisk terhadap posisiheadterakhir. Pergerakan dari contoh diatas yaitu 50ke 48, lalu ke 45, 37, 25, 20, 10, 5, 56, 60, 70, 78, 88.

Perhatikan contoh antrian permintaan yang kita sajikan pada penjadwalan FCFS, permintaan palingdekat dengan posisiheadsaat itu (50) adalah silinder 48. Jika kita penuhi permintaan 48, maka yangterdekat berikutnya adalah silinder 45. Dari 45, silinder 37 letaknya lebih dekat ke 45 dibandingkansilinder 56,jadi 37 dilayani duluan. Selanjutnya, dilanjutkan ke silinder 25, 20, 10, 5, 56, 60, 70, 78 danterakhir adalah 88.

Metode penjadwalan ini hanya menghasilkan total pergerakanheadsebesar 128 silinder -- kira-kirasepertiga dari yang dihasilkan penjadwalan FCFS. Algoritma SSTF ini memberikan peningkatan yangcukup signifikan dalam hal pendayagunaan atau kinerja sistem.

Penjadwalan SSTF merupakan salah satu bentuk dari penjadwalanshortest-job-first (SJF), dan karena itumaka penjadwalan SSTF juga dapat mengakibatkanstarvationpada suatu saat tertentu. Hal ini dapatterjadi bila ada permintaan untuk mengakses bagian yang berada di silinder terdalam. Jika kemudianberdatangan lagi permintaan-permintaan yang letaknya lebih dekat dengan permintaan terakhir yangdilayani maka permintaan dari silinder terluar akan menunggu lama dan sebaliknya. Walaupun algoritmaSSTF jauh lebih cepat dibandingkan dengan FCFS, namun untuk keadilan layanan SSTF lebih burukdari penjadwalan FCFS.

Gambar 7-8. Penjadwalan SSTF

Gambar ini diadaptasi dari [Silberschatz2002, halaman 494]

296

Page 317: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.4.2.3. Penjadwalan SCAN

Pada algoritma inidisk armbergerak menuju ke silinder paling ujung daridisk, kemudian setelah sampaidi silinder paling ujung,disk armakan berbalik arah geraknya menuju ke silinder paling ujung lainnya.Algoritma SCAN disebut juga Algoritma lift/elevatorkarena algoritma ini cara kerjanya sama sepertialgoritma yang umum dipakai oleh lift untuk melayani penggunanya, yaitu lift akan melayaniorang-orang yang akan naik ke atas dulu, setelah sampai di lantai tertinggi, baru lift akan berbalik arahgeraknya untuk melayani orang-orang yang akan turun. Dalam pergerakannya yang seperti lift itu,diskarmhanya bisa melayani permintaan-permintaan yang berada di depan arah geraknya terlebih dahulu.Bila ada permintaan yang berada di belakang arah geraknya, permintaan tersebut harus menunggusampaidisk armmencapai salah satu silinder paling ujung daridisk, kemudian berbalik arah geraknyauntuk melayani permintaan tersebut.

Contoh : (lihat gambar 7-7) Jikadisk headsedang berada di silinder 50, dan sedang bergerak menujusilinder 99, maka permintaan yang bisa dilayani berikutnya adalah yang terdekat dengan silinder 50,tetapi masih berada di depan arah geraknya, yaitu: silinder 56. Begitu seterusnyadisk armmelayanipermintaan yang berada di depannya sampaidisk armmencapai silinder 99 dan berbalik arah gerakmenuju ke silinder 0. Maka setelahdisk armberbalik arah gerak, permintaan di silinder 45 baru bisadilayani.

Keunggulan dari algoritma SCAN adalah total pergerakandisk armmemiliki batas atas, yaitu 2 kali darijumlah total silinder padadisk. Tetapi di samping itu masih ada beberapa kelemahan yang dimiliki olehalgoritma ini.

Dari contoh di gambar 7-7 terlihat salah satu kelemahan algoritma SCAN: permintaan di silinder 88sebenarnya sudah merupakan permintaan yang paling ujung, tetapidisk armharus bergerak sampaisilinder 99 dulu, baru kemudian bisa berbalik arah geraknya. Bukankah hal seperti itu sangat tidakefisien? Mengapadisk armtidak langsung berbalik arah geraknya sesudah sampai di silinder 88?Kelemahan ini akan dijawab oleh algoritma LOOK yang akan dibahas pada sub-bab berikutnya.

Kelemahan lain dari algoritma SCAN yaitu bisa menyebabkan terjadinyastarvation. Begitudisk armberbalik arah geraknya dari silinder 99, maka silinder yang berada dekat di depan arah gerakdisk armbaru saja dilayani, sedangkan silinder-silinder yang dekat dengan silinder 0 sudah lama menunggu untukdilayani. Bila kemudian bermunculan permintaan-permintaan baru yang dekat dengan silinder 99 lagi,maka permintaan-permintaan baru itulah yang akan dilayani, sehingga permintaan-permintaan yangdekat dengan silinder 0 akan semakin "lapar". Karena kelemahan yang kedua inilah muncul modifikasidari algoritma SCAN, yaitu C-SCAN yang akan kita bahas berikutnya.

297

Page 318: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-9. Penjadwalan SCAN

Gambar ini diadaptasi dari [Silberschatz2002, halaman 495]

7.4.2.4. Penjadwalan C-SCAN

Algoritma Circular SCAN (C-SCAN) merupakan hasil modifikasi algoritma SCAN untuk mengurangikemungkinanstarvationyang bisa terjadi pada SCAN. Perbedaan C-SCAN dengan SCAN hanya padabagaimana pergerakandisk armsetelah sampai ke salah satu silinder paling ujung. Pada algoritmaSCAN,disk armakan berbalik arah menuju ke silinder paling ujung yang lain sambil tetap melayanipermintaan yang berada di depan arah pergerakandisk arm, sedangkan pada algoritma C-SCAN sesudahmencapai silinder paling ujung, makadisk armakan bergerak cepat ke silinder paling ujung lainnyatanpa melayani permintaan.

Contoh: (lihat gambar 7-8) Setelah sampai di silinder 99,disk armakan bergerak dengan cepat kesilinder 0 tanpa melayani permintaan selama dalam perjalanannya. Kemudian setelah sampai di silinder0, barudisk armakan bergerak ke arah silinder 99 lagi sambil melayani permintaan.

Dengan pergerakan yang seperti demikian, seolah-olahdisk armhanya bergerak 1 arah dalam melayanipermintaan. Tetapi dalam algoritma C-SCAN masih terkandung kelemahan yang juga dimiliki olehalgoritma SCAN, yaitudisk armharus sampai di silinder 99 atau silinder 0 terlebih dahulu sebelum bisaberbalik arah. Untuk itulah dibuat algoritma LOOK yang akan kita bahas berikutnya.

298

Page 319: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-10. Penjadwalan C-SCAN

Gambar ini diadaptasi dari [Silberschatz2002, halaman 496].

7.4.2.5. Penjadwalan LOOK

Sesuai dengan namanya, algoritma ini seolah-olah seperti bisa "melihat". Algoritma ini memperbaikikelemahan SCAN dan C-SCAN dengan cara melihat apakah di depan arah pergerakannya masih adapermintaan lagi atau tidak. Bila tidak ada lagi permintaan di depannya,disk armbisa langsung berbalikarah geraknya. Penjadwalan LOOK seperti SCAN yang lebih "pintar".

Contoh: (lihat gambar 7-9) Ketikadisk headsudah selesai melayani permintaan di silinder 88, algoritmaini akan "melihat" bahwa ternyata di depan arah pegerakannya sudah tidak ada lagi permintaan yangharus dilayani. Oleh karena itudisk armbisa langsung berbalik arah geraknya sehingga permintaan yangmenunggu untuk dilayani bisa mendapatkan pelayanan lebih cepat.

Kelemahan algoritma ini sama seperti kelemahan algoritma SCAN bahwa bisa terjadistarvationuntuksituasi yang sama pula dengan yang menyebabkan terjadinyastarvationpada algoritma SCAN. Olehkarena itulah dibuat lagi suatu algoritma yang lebih baik untuk memperbaiki algoritma ini, yaitu:C-LOOK.

299

Page 320: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-11. Penjadwalan LOOK

Gambar ini diadaptasi dari [Silberschatz2002, halaman 497].

7.4.2.6. Penjadwalan C-LOOK

Algoritma ini berhasil memperbaiki kelemahan-kelemahan algoritma SCAN, C-SCAN, dan LOOK.Algoritma C-LOOK memperbaiki kelemahan LOOK sama seperti algoritma C-SCAN memperbaikikelemahan SCAN, yaitu pada cara pergerakandisk armsetelah mencapai silinder yang paling ujung.

Contoh: (lihat gambar 7-10) dengan memiliki kemampuan "melihat" algoritma LOOK, setelah melayanipermintaan di silinder 88,disk armakan bergerak dengan cepat ke silinder 5, yaitu permintaan di silinderyang terletak paling dekat dengan silinder 0.

Dengan cara pergerakandisk armyang mengadaptasi keunggulan dari C-SCAN dan LOOK, algoritmaini bisa mengurangi terjadinyastarvation, dengan tetap menjaga efektifitas pergerakandisk arm.

300

Page 321: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-12. Penjadwalan C-LOOK

Gambar ini diadaptasi dari [Silberschatz2002, halaman 497].

7.4.2.7. Pemilihan Algoritma Penjadwalan Disk

Dari seluruh algoritma yang sudah kita bahas di atas, tidak ada algoritma yang terbaik untuk semuakeadaan yang terjadi. SSTF lebih umum dan memiliki prilaku yang lazim kita temui. SCAN danC-SCAN memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaanyang berat kepadadisk, karena algoritma tersebut memiliki masalahstarvationyang paling sedikit. SSTFdan LOOK sering dipakai sebagai algoritma dasar pada sistem operasi.

Dengan algoritma penjadwalan yang mana pun, kinerja sistem sangat tergantung pada jumlah dan tipepermintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritmapenjadwalan akan dipaksa bertindak sama. Sedangkan permintaan sangat dipengaruhi oleh metodepenempatan berkas. Karena kerumitan inilah, maka algoritma penjadwalandiskharus ditulis dalammodul terpisah dari sistem operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan.

Namun perlu diingat bahwa algoritma-algoritma di atas hanya mempertimbangkan jarak pencarian,sedangkan untukdiskmodern,rotational latencydaridisksangat menentukan. Tetapi sangatlah sulit jikasistem operasi harus memperhitungkan algoritma untuk mengurangirotational latencykarenadiskmodern tidak memperlihatkan lokasi fisik dari blok-blok logikanya. Oleh karena itu para produsendisktelah mengurangi masalah ini dengan mengimplementasikan algoritma penjadwalandiskdi dalampengendali perangkat keras, sehingga kalau hanya kinerja I/O yang diperhatikan, maka sistem operasibisa menyerahkan algoritma penjadwalandiskpada perangkat keras itu sendiri.

301

Page 322: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.5. Manajemen Disk; Swap , Struktur RAID; KaitanLangsung dan Jaringan; Implementasi PenyimpananStabil.

7.5.1. Manajemen DiskBeberapa aspek yang termasuk aspek penting dalam Manajemen Disk :

1. Format Disk

Disk adalah salah satu tempat penyimpanan data. Sebelum sebuah disk dapat digunakan, disk harusdibagi-bagi dalam beberapa sektor. Sektor-sektor ini yang kemudian akan dibaca oleh pengendali.Pembentukan sektor-sektor ini disebutlow level formattingatauphysical formatting. Low levelformattingjuga akan mengisi disk dgn beberapa struktur data penting sepertiheaderdantrailer.Headerdantrailer mempunyai informasi seperti nomor sektor, danError Correcting Code(ECC).ECC ini berfungsi sebagaicorrecting codekarena mempunyai kemampuan untuk mendeteksi bityang salah, menghitung nilai yang benar dan kemudian mengubahnya. Ketika proses penulisan,ECC di-update dengan menghitung bit di area data. Pada proses pembacaan, ECC dihitung ulangdan dicocokan dengan nilai ECC yang tersimpan saat penulisan. Jika nilainya berbeda makadipastikan ada sektor yang terkorup.

Agar dapat menyimpan data, OS harus menyimpan struktur datanya dalam disk tersebut. Proses itudilakukan dalam dua tahap, yaitu partisi danlogical formatting. Partisi akan membagi disk menjadibeberapa silinder yang dapat diperlakukan secara independen.Logical formattingakan membentuksistem berkas disertai pemetaan disk. Terkadang sistem berkas ini dirasakan menggangu prosesalokasi suatu data, sehingga diadakan sistem partisi lain yang tidak mengikutkan pembentukansistem berkas, disebutraw disk .

2. Boot Block

Saat sebuah komputer dijalankan, sistem akan mencari sebuahinitial programyang akan memulaisegala sesuatunya.Initial program-nya ( initial bootstrap) bersifat sederhana dan akanmenginisialisasi seluruh aspek yang diperlukan bagi komputer untuk beroperasi dengan baik sepertiCPU registers, controller, dan yang terakhir adalah Sistem Operasinya. Pada kebanyakan komputer,bootstrapdisimpan di ROM (read only memory) karena letaknya yang tetap dan dapat langsungdieksekusi ketika pertama kali listrik dijalankan. Letakbootstrapdi ROM juga menguntungkankarena sifatnya yang read only memungkinkan dia untuk tidak terinfeksi virus. Untuk melakukantugasnya,bootstrapmencarikerneldi disk dan me-load kernelke memori dan kemudian loncat keinitial addressuntuk memulai eksekusi OS.

Untuk alasan praktis,bootstrapsering dibuat berbentuk kecil (tiny loader) dan diletakan di ROM,yang kemudian akan men-load full bootstrapdari disk bagian disk yang disebutboot block.Perubahan menjadi bentuk simple ini bertujuan jika diadakan perubahan padabootstrap, makastruktur ROM tidak perlu dirubah semuanya.

3. Bad Block

302

Page 323: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Bad blockadalah satu atau lebih sektor yang cacat atau rusak. Kerusakan ini bisa diakibatkan karenakerentanan disk jika sering dipindah-pindah atau kemasukan benda asing. Dalam disk sederhanaseperti IDEcontroller, bad blockakan ditangani secara manual seperti dengan perintah format padaMS-DOS yang akan mencaribad blockdan menulis nilai spesial ke FATentryagar tidakmengalokasikanbranch routineke blok tersebut.

SCSI mengatasibad blockdengan cara yang lebih baik. Daftarbad block-nya dipertahankan olehcontroller pada saatlow level formatting, dan terus diperbarui selama disk itu digunakan.Low levelformattingakan memindahkanbad sectoritu ke tempat lain yang kosong dengan algoritmasectorsparingatauforwarding. Sector sparingdijalankan dengan ECC mendeteksibad sectordanmelaporkannya ke OS, sehingga saat sistem dijalankan sekali lagi,controller akan menggantikanbad sectortersebut dengan sektor kosong. algoritma lain yang sering digunakan adalahsectorslipping. Ketika sebuahbad sectorterdeteksi, sistem akan mengopi semua isi sektor ke sektorselanjutnya secara bertahap satu-satu sampai ditemukan sektor kosong. Misalbad sectordi sektor 7,maka isinya akan dipindahkan ke sektor 8, isi sektor 8 dipindahakan ke 9 dan seterusnya.

7.5.2. Managemen Ruang SwapManagemen ruangswapadalah salah satulow level taskdari OS. Memori virtual menggunakan ruangdisk sebagai perluasan dari memori utama. Tujuan utamanya adalah untuk menghasilkan output yangbaik. Namun di lain pihak, penggunaan disk akan memperlambat akses karena akses dari memori jauhlebih cepat.

1. Penggunaan RuangSwap

Ruangswapdigunakan dalam beberapa cara tergantung penerapan algoritma. Sebagai contoh,sistem yang menggunakanswappingdapat menggunakan ruangswapuntuk memegang seluruhproses pemetaan termasuk data dan segmen. Jumlah dari ruangswapyang dibutuhkan tergantungdari jumlah memori fisik, jumlah dari memori virtual yang dijalankan, cara penggunaan memorivirtual tersebut. Beberapa OS seperti UNIX menggunakan banyak ruangswap, yang biasa diletakandi disk terpisah.

Ketika kita akan menentukan besarnya ruangswap, sebaiknya kita tidak terlalu banyak atau terlalusedikit. Jika sistem dijalankan dan ruangswapterlalu sedikit, maka proses akan dihentikan danmungkin akan merusak sistem. Sebaliknya jika terlalu banyak juga akan mengakibatkan lambatnyaakses dan pemborosan ruang disk.

2. Lokasi RuangSwap

Ruangswapdapat diletakan di 2 tempat yaitu : ruangswapdapat berada di sistem berkas normalatau dapat juga berada di partisi yang terpisah. Jika ruangswapberukuran besar dan diletakan disistem berkas normal,routine-nya dapat menciptakan, menamainya dan menentukan besar space.Walaupun lebih mudah dijalankan, cara ini cenderung tidak efisien. Pengaksesannya akan sangatmemakan waktu dan akan meningkatkan fragmentasi karena pencarian data yang berulang terusselama proses baca atau tulis.

Ruangswapyang diletakan di partisi disk terpisah, menggunakan manajer ruangswapterpisahuntuk melakukan pengalokasian space. Manajer ruangswaptersebut menggunakan algoritma yang

303

Page 324: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

mengutamakan peningkatan kecepatan dari pada efisiensi. Walaupun fragmentasi masih juga terjadi,tapi masih dalam batas-batas toleransi mengingat ruangswapsangat sering diakses. Dengan partisiterpisah, alokasi ruangswapharus sudah pasti. Proses penambahan besar ruangswapdapatdilakukan hanya dengan partisi ulang atau penambahan dengan lokasi yang terpisah.

Gambar 7-13. Contoh Manajemen ruang swap: pemetaan swap segmen teks 4.3 BSD

Gambar ini diadaptasi dari [Silberschatz2002, halaman 504].

Gambar 7-14. Contoh Manajemen ruang swap: pemetaan swap segmen data 4.3 BSD

Gambar ini diadaptasi dari [Silberschatz2002, halaman 504].

7.5.3. Struktur RAIDDisk memiliki resiko untuk mengalami kerusakan. Kerusakan ini dapat berakibat turunnya kinerja ataupun hilangnya data. Meski pun terdapatbackup data, tetap saja ada kemungkinan data yang hilangkarena adanya perubahan setelah terakhir kali data di-backup. Karenanya reliabilitas dari suatu diskharus dapat terus ditingkatkan.

Berbagai macam cara dilakukan untuk meningkatkan kinerja dan juga reliabilitas dari disk. Biasanyauntuk meningkatkan kinerja, dilibatkan banyak disk sebagai satu unit penyimpanan. Tiap-tiap blok datadipecah ke dalam beberapa subblok, dan dibagi-bagi ke dalam disk-disk tersebut. Ketika mengirim datadisk-disk tersebut bekerja secara paralel, sehingga dapat meningkatkan kecepatan transfer dalammembaca atau menulis data. Ditambah dengan sinkronisasi pada rotasi masing- masing disk, makakinerja dari disk dapat ditingkatkan. Cara ini dikenal sebagai RAID -Redundant Array of Independent(atauInexpensive) Disks. Selain masalah kinerja RAID juga dapat meningkatkan realibilitas dari diskdengan jalan melakukan redundansi data.

304

Page 325: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Tiga karakteristik umum dari RAID ini, yaitu :

1. Menurut Stallings [Stallings2001], RAID adalah sebuah sebuah set dari beberapa physical driveyang dipandang oleh sistem operasi sebagai sebuah logical drive.

2. Data didistribusikan ke dalam array dari beberapaphysical drive.

3. Kapasitas disk yang berlebih digunakan untuk menyimpan informasi paritas , yang menjamin datadapat diperbaiki jika terjadi kegagalan pada salah satu disk.

7.5.3.1. Peningkatan Kehandalan dan Kinerja

Peningkatan Kehandalan dan Kinerja dari disk dapat dicapai melalui 2 cara :

1. Redundansi

Peningkatan Kehandalan disk dapat dilakukan dengan redundansi, yaitu menyimpan informasitambahan yang dapat dipakai untuk membentuk kembali informasi yang hilang jika suatu diskmengalami kegagalan. Salah satu teknik untuk redundansi ini adalah dengan caramirroring ataushadowing, yaitu dengan membuat duplikasi dari tiap-tiap disk. Jadi, sebuah disklogical terdiridari 2 diskphysical, dan setiap penulisan dilakukan pada kedua disk, sehingga jika salah satu diskgagal, data masih dapat diambil dari disk yang lainnya, kecuali jika disk kedua gagal sebelumkegagalan pada disk pertama diperbaiki. Pada cara ini, berarti diperlukan media penyimpanan yangdua kali lebih besar daripada ukuran data sebenarnya. Akan tetapi, dengan cara ini pengaksesan diskyang dilakukan untuk membaca dapat ditingkatkan dua kali lipat. Hal ini dikarenakan setengah daripermintaan membaca dapat dikirim ke masing-masing disk. Cara lain yang digunakan adalah paritasblok interleaved , yaitu menyimpan blok-blok data pada beberapa disk dan blok paritas pada sebuah(atau sebagian kecil) disk.

2. Paralelisme

Peningkatan kinerja dapat dilakukan dengan mengakses banyak disk secara paralel. Padadiskmirroring, di mana pengaksesan disk untuk membaca data menjadi dua kali lipat karena permintaandapat dilakukan pada kedua disk, tetapi kecepatan transfer data pada setiap disk tetap sama. Kitadapat meningkatkan kecepatan transfer ini dengan cara melakukan datastripingke dalam beberapadisk. Datastriping, yaitu menggunakan sekelompok disk sebagai satu kesatuan unit penyimpanan,menyimpan bit data dari setiapbytesecara terpisah pada beberapa disk (paralel).

7.5.3.2. Level RAID

RAID terdiri dapat dibagi menjadi 6 level yang berbeda :

1. RAID level 0

RAID level 0 menggunakan kumpulan disk denganstripingpada level blok, tanpa redundansi. Jadihanya menyimpan melakukanstripingblok data ke dalam beberapa disk. Level ini sebenarnya tidak

305

Page 326: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

termasuk ke dalam kelompok RAID karena tidak menggunakan redundansi untuk peningkatankinerjanya.

2. RAID level 1

RAID level 1 ini merupakandisk mirroring, menduplikat setiap disk. Cara ini dapat meningkatkankinerja disk, tetapi jumlah disk yang dibutuhkan menjadi dua kali lipat, sehingga biayanya menjadisangat mahal.

3. RAID level 2

RAID level 2 ini merupakan pengorganisasian denganerror-correcting-code(ECC). Seperti padamemori di mana pendeteksian terjadinya error menggunakan paritas bit. Setiapbytedata mempunyaisebuah paritas bit yang bersesuaian yang merepresentasikan jumlah bit di dalambytedata tersebut dimana paritas bit=0 jika jumlah bit genap atau paritas=1 jika ganjil. Jadi, jika salah satu bit pada databerubah, paritas berubah dan tidak sesuai dengan paritas bit yang tersimpan. Dengan demikian,apabila terjadi kegagalan pada salah satu disk, data dapat dibentuk kembali dengan membacaerror-correction bitpada disk lain.

4. RAID level 3

RAID level 3 merupakan pengorganisasian dengan paritas bitinterleaved. Pengorganisasian inihampir sama dengan RAID level 2, perbedaannya adalah RAID level 3 ini hanya memerlukansebuah disk redundan, berapapun jumlah kumpulan disk-nya. Jadi tidak menggunakan ECC,melainkan hanya menggunakan sebuah bit paritas untuk sekumpulan bit yang mempunyai posisiyang sama pada setiap disk yang berisi data. Selain itu juga menggunakan datastripingdanmengakses disk-disk secara paralel.

5. RAID level 4

RAID level 4 merupakan pengorganisasian dengan paritas blokinterleaved, yaitu menggunakanstripingdata pada level blok, menyimpan sebuah paritas blok pada sebuah disk yang terpisah untuksetiap blok data pada disk-disk lain yang bersesuaian. Jika sebuah disk gagal, blok paritas tersebutdapat digunakan untuk membentuk kembali blok-blok data pada disk yang gagal tadi. Kecepatantransfer untuk membaca data tinggi, karena setiap disk-disk data dapat diakses secara paralel.Demikian juga dengan penulisan, karena disk data dan paritas dapat ditulis secara paralel.

6. RAID level 5

RAID level 5 merupakan pengorganisasian dengan paritas blokinterleavedtersebar. Data danparitas disebar pada semua disk termasuk sebuah disk tambahan. Pada setiap blok, salah satu daridisk menyimpan paritas dan disk yang lainnya menyimpan data. Sebagai contoh, jika terdapatkumpulan dari 5 disk, paritas blok ke n akan disimpan pada disk (n mod 5) + 1; blok ke n dari empatdisk yang lain menyimpan data yang sebenarnya dari blok tersebut. Sebuah paritas blok tidakmenyimpan paritas untuk blok data pada disk yang sama, karena kegagalan sebuah disk akanmenyebabkan data hilang bersama dengan paritasnya dan data tersebut tidak dapat diperbaiki.

306

Page 327: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Penyebaran paritas pada setiap disk ini menghindari penggunaan berlebihan dari sebuah paritas diskseperti pada RAID level 4.

7. RAID level 6

RAID level 6 disebut juga redundansi P+Q, seperti RAID level 5, tetapi menyimpan informasiredundan tambahan untuk mengantisipasi kegagalan dari beberapa disk sekaligus. RAID level 6melakukan dua perhitungan paritas yang berbeda, kemudian disimpan di dalam blok-blok yangterpisah pada disk-disk yang berbeda. Jadi, jika disk data yang digunakan sebanyak n buah disk,maka jumlah disk yang dibutuhkan untuk RAID level 6 ini adalah n+2 disk. Keuntungan dari RAIDlevel 6 ini adalah kehandalan data yang sangat tinggi, karena untuk menyebabkan data hilang,kegagalan harus terjadi pada tiga buah disk dalam interval rata-rata untuk perbaikan data(MeanTime To Repairatau MTTR). Kerugiannya yaitu penalti waktu pada saat penulisan data, karenasetiap penulisan yang dilakukan akan mempengaruhi dua buah paritas blok.

8. RAID level 0+1 dan 1+0

RAID level 0+1 dan 1+0 ini merupakan kombinasi dari RAID level 0 dan 1. RAID level 0 memilikikinerja yang baik, sedangkan RAID level 1 memiliki kehandalan. Namun, dalam kenyataannyakedua hal ini sama pentingnya. Dalam RAID 0+1, sekumpulan disk di-strip, kemudian strip tersebutdi-mirror ke disk-disk yang lain, menghasilkan strip- strip data yang sama. Kombinasi lainnya yaituRAID 1+0, di mana disk-disk di-mirror secara berpasangan, dan kemudian hasil pasangan mirrornyadi-strip. RAID 1+0 ini mempunyai keuntungan lebih dibandingkan dengan RAID 0+1. Sebagaicontoh, jika sebuah disk gagal pada RAID 0+1, seluruh strip-nya tidak dapat diakses, hanya sebagianstrip saja yang dapat diakses, sedangkan pada RAID 1+0, disk yang gagal tersebut tidak dapatdiakses, tetapi pasangan mirror-nya masih dapat diakses, yaitu disk-disk selain dari disk yang gagal.

Gambar 7-15. Level RAID

Gambar ini diadaptasi dari [Silberschatz2002, halaman 507].

307

Page 328: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Gambar 7-16. RAID 0 + 1 dan 1 + 0

Gambar ini diadaptasi dari [Silberschatz2002, halaman 511].

7.5.4. Kaitan Disk

7.5.4.1. Host-Attached Storage

Host-Attached Storagemerupakan sistem penyimpana yang terhubung secara langsung dengan komputertersebut.Host-Attached Storageterhubung secara langsung dengan komputer menggunakaninterfacebus dan IDE.

dalam implementasinya dalam jaringan,Host-Attached Storagedapat juga disebut denganServer-Attached Storagekarena sistem penyimpanannya terdapat didalam server itu.

7.5.4.2. Storage-Area Network dan Network-Attached Storage

1. Network-Attached Storage device

Network-attached storage(NAS) adalah suatu konsep penyimpanan bersama pada suatu jaringan.NAS berkomunikasi menggunakanNetwork File Sistem(NFS) untuk UNIX,Common Internet FileSystem(CIFS) untuk Microsoft Windows, FTP, http, dan protokol networking lainnya. NASmembawa kebebasan platform dan meningkatkan kinerja bagi suatu jaringan, seolah-olah adalahsuatu dipasang peralatan. NAS device biasanya merupakandedicated single-purpose machine. NASdimaksudkan untuk berdiri sendiri dan melayani kebutuhan penyimpanan yang spesifik dengansistem operasi mereka danhardware/softwareyang terkait. NAS mirip dengan alat plug-and-play,akan tetapi manfaatnya adalah untuk melayani kebutuhan penyimpanan. NAS cocok digunakan

308

Page 329: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

untuk melayani network yang memiliki banyakclient, server, dan operasi yang mungkin menanganitask sepertiweb cachedanproxy, firewall, audio-video streeming, tape backup, dan penyimpanandata denganfile serving.

2. Network-Attached Storage Versus Storage Area Networks

NAS danStorage-Area Network(SAN) memiliki sejumlah atribut umum. Kedua-Duanyamenyediakan konsolidasi optimal, penyimpanan data yang dipusatkan, dan akses berkas yangefisien. Kedua-Duanya mengijinkan untuk berbagi storage antar host, mendukung berbagai sistemoperasi yang berbeda pada waktu yang sama, dan memisahkanstoragedari server aplikasi. Sebagaitambahan, kedua- duanya dapat menyediakan ketersediaan data yang tinggi dan dapat memastikanintegritas dengan banyak komponen danRedundant Arrays of Independent Disk(RAID). Banyakyang berpendapat bahwa NAS adalah saingan dari SAN, akan tetapi keduanya dalam kenyataannyadapat bekerja dengan cukup baik ketika digunakan bersama.

NAS dan SAN menghadirkan dua teknologi penyimpanan yang berbeda dan menghubungkanjaringan pada tempat yang sangat berbeda. NAS berada diantar server aplikasi dan sistem berkas(lihat Gambar 1). SAN berada diantar sistem berkas dan mendasariphysical storage(lihat Gambar2). SAN merupaka jaringan itu sendiri, menghubungkan semua storage dan semua server. Karenapertimbangan ini, masing-masing mendukung kebutuhan penyimpanan dari area bisnis yangberbeda.

3. NAS : Memikirkan Pengguna Jaringan

NAS adalahnetwork-centric. Biasanya digunakan Untuk konsolidasi penyimpanan client pada suatuLAN, NAS lebih disukai dalam solusi kapasitas penyimpanan untuk memungkinkanclient untukmengakses berkas dengan cepat dan secara langsung. Hal ini menghapuskanbottleneckuser ketikamengakses berkas dari suatugeneral-purpose server.

NAS menyediakan keamanan dan melaksanakan semua berkas dan storage service melalui protokolstandard network, menggunakan TCP/IP untuk transfer data, Ethernet Dan Gigabit Ethernet untukmedia akses, dan CIFS, http, dan NFS untukremote file service. Sebagai tambahan, NAS dapatmelayani UNIX dan Microsoft Windows user untuk berbagi data yang sama antar arsitektur yangberbeda. Untuk user client, NAS adalah teknologi pilihan untuk menyediakan penyimpanan denganaksesunen-cumberedke berkas.

Walaupun NAS menukar kinerja untuk manajebilitas dan kesederhanaan, bukan merupakan lazytechnology. Gigabit Ethernet mengijinkan NAS untuk memilih kinerja yang tinggi dan latensi yangrendah, sehingga mungkin untuk mendukung banyak sekaliclient melalui suatu antarmuka tunggal.Banyak NAS devices yang mendukung berbagai antarmuka dan dapat mendukung berbagai jaringanpada waktu yang sama.

4. SAN : MemikirkanBack-End/Kebutuhan Ruang Penyimpanan Komputer

SAN adalah data-centric, jaringan khusus penyimpanan data. Tidak sama dengan NAS, SANterpisah dari traditional LAN atau messaging network. Oleh karena itu, SAN bisa menghindari lalulintar jaringan standar, yang sering menghambat kinerja. SAN denganfibre channellebihmeningkatkan kinerja dan pengurangan latency dengan menggabungkan keuntungan I/O channeldengan suatu jaringan dedicated yang berbeda.

309

Page 330: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

SAN menggunakangateway, switch, danrouter untuk memudahkan pergerakan data antar saranapenyimpanan dan server yang heterogen. Ini mengijinkan untuk menghubungkan kedua jaringan danpotensi untuksemi-remote storage(memungkinkan hingga jarak 10km) kestorage managementeffort. Arsitektur SAN optimal untuk memindahkanstorage block. Di dalam ruang komputer, SANadalah pilihan yang lebih disukai untuk menujukan isubandwidthdan data aksesibilitas sepertihalnya untuk menangani konsolidasi.

Dalam kaitan dengan teknologi dan tujuan mereka yang berbeda,salah satu maupun kedua-duanyadapat digunakan untuk kebutuhan penyimpanan. Dalam kenyataannya, batas antara keduanya samarsedikit menurut Kelompok Penilai, Analis Inc.. Sebagai contoh, dalam aplikasinya anda bolehmemilih untuk mem-backup NASdeviceanda dengan SAN, atau menyertakan NASdevicesecaralangsung ke SAN untuk mengijinkannon-bottlenecked accesssegera ke storage. (Sumber: AnOverview of Network-Attached Storage, ¨ 2000, Evaluator Group, Inc.)

7.5.4.3. Implementasi Penyimpanan Stabil

Pada bagian sebelumnya, kita sudah membicarakan mengenai write-ahead log, yang membutuhkanketersediaan sebuah storage yang stabil. Berdasarkan definisi, informasi yang berada di dalam stablestorage tidak akan pernah hilang. Untuk mengimplementasikan storage seperti itu, kita perlu mereplikasiinformasi yang dibutuhkan ke banyak peralatan storage (biasanya disk-disk) dengan failure modes yangindependen. Kita perlu mengkoordinasikan penulisan update-update dalam sebuah cara yang menjaminbila terjadi kegagalan selagi meng-update tidak akan membuat semua kopi yang ada menjadi rusak, danbila sedang recover dari sebuah kegagalan, kita bisa memaksa semua kopi yang ada ke dalam keadaanyang bernilai benar dan konsisten, bahkan bila ada kegagalan lain yang terjadi ketika sedang recovery.Untuk selanjutnya, kita akan membahas bagaimana kita bisa mencapai kebutuhan kita.

Sebuah disk write menyebabkan satu dari tiga kemungkinan:

1. successful completion

2. partial failure

3. total failure

Kita memerlukan, kapan pun sebuah kegagalan terjadi ketika sedang menulis ke sebuah blok, sistemakan mendeteksinya dan memanggil sebuah prosedur recovery untuk me-restore blok tersebut ke sebuahkeadaan yang konsisten. Untuk melakukan itu, sistem harus menangani dua blok physical untuk setiapblok logical. Sebuah operasi output dieksekusi seperti berikut:

1. Tulis informasinya ke blok physical yang pertama.

2. Ketika penulisan pertama berhasil, tulis informasi yang sama ke blokphysicalyang kedua.

3. Operasi dikatakan berhasil hanya jika penulisan kedua berhasil.

Pada saat perbaikan dari sebuah kegagalan, setiap pasang blok physical diperiksa. Jika keduanya samadan tidak terdeteksi adanya kesalahan, tetapi berbeda dalam isi, maka kita mengganti isi dari blok yangpertama dengan isi dari blok yang kedua. Prosedur recovery seperti ini memastikan bahwa sebuahpenulisan ke stable storage akan sukses atau tidak ada perubahan sama sekali.

310

Page 331: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Kita bisa menambah fungsi prosedur ini dengan mudah untuk memboleh kan penggunaan dari kopi yangbanyak dari setiap blok pada stable storage. Meski pun sejumlah besar kopi semakin mengurangikemungkin an untuk terjadinya sebuah kegagalan, maka biasanya wajar untuk men simulasi stablestorage hanya dengan dua kopi. Data di dalam stable storage dijamin aman kecuali sebuah kegagalanmenghancurkan semua kopi yang ada.

7.6. Perangkat Penyimpanan TersierKarakteristik dari perangkat penyimpanan tersier pada dasarnya adalah menggunakanremovable mediayang tentu saja berdampak pada biaya produksi yang lebih murah. Sebagai contoh: 1 VCR denganbanyak kaset akan lebih murah daripada 1 VCR yang hanya bisa memainkan satu kaset saja.

7.6.1. Macam-macam Struktur Penyimpanan Tersier

Floppy DiskMenurut Silberschatz et. al. [Silberschatz2002],floppy diskadalah sebuah media penyimpanan yangterbuat dari cakram fleksibel tipis yang dilapisi oleh bahan magnetik dan ditutupi oleh plastik.

Ciri-ciri floppy disk:

1. Memiliki kapasitas kecil (1 - 2 Mb).

2. Kemampuan aksesnya hampir secepathard disk.

3. Lebih rentan terhadap gesekan di permukaan magnetiknya.

Prinsip ini juga digunakan oleh disk magnetik yang memiliki kapasitas sebesar 1 GB yang memilikikecepatan akses yang hampir sama denganhard disk.

Magneto-optic diskDalammagneto-optic disk, data ditulis di atas sebuah piringan keras yang dilapisi oleh suatu bahanmagnetik lalu dilapisi pelindung untuk melindungiheaddaridisk tsb. Dalam suhu ruangan, medanmagnet yang ada tidak dapat digunakan untuk menyimpan bit data sehingga harus ditembakkan laser daridisk head. Tempat yang terkena sinar laser ini dapat digunakan untuk menyimpan bit.

Headmembaca data yang telah disimpan dengan bantuanKerr Effect. Efek ini timbul karenaheaddarimagneto-optic diskterlalu jauh dari permukaandisksehingga tidak dapat dibaca dengan cara yang samayang diterapkan kehard disk. Oleh karena itu digunakanKerr Effect.

Menurut Silberschatz et. al. [Silberschatz2002], prinsip dariKerr Effectadalah ketika suatu sinar laserdipantulkan dari sebuah titik magnetik, polarisasinya akan diputar searah atau berlawanan arah denganarah jarum jam, tergantung dari orientasi medan magnetiknya. Rotasi inilah yang dibaca olehheadsebagai sebuah bit.

311

Page 332: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Optical diskDisk tipe ini tidak menggunakan magnetik melainkan suatu bahan yang dapat dibelokkan oleh sinarlaser. Setelah dimodifikasi dengan dengan sinar laser padadiskakan terdapatspotyang gelap atauterang.Spotini menyimpan satu bit.

Teknologioptical-diskdapat dibagi menjadi:

1. Phase-change disk, dilapisi oleh material yang dapat membeku menjadicrystallineatauamorphousstate. Keduastateini memantulkan sinar laser dengan kekuatan yang berbeda.Drive menggunakansinar laser pada kekuatan yang berbeda. Kekuatan rendah digunakan untuk membaca data yang telahditulis, kekuatan medium untuk menghapus data dengan cara melelehkan permukaannya dankemudian dibekukan lagi ke dalam keadaancrystalline. Kekuatan tinggi digunakan untukmelelehkandisk-nya ke dalamamorphous statesehingga dapat digunakan untuk menulis data.

2. Dye-polimer disk, merekam data dengan membuatbump. Disk dilapisi plastik yang mengandungdyeyang dapat menyerap sinar laser. Sinar laser membakarspotyang kecil sehinggaspotmembengkak dan membentukbump. Sinar laser juga dapat menghangatkanbumpsehinggaspotmenjadi lunak danbumpmenjadi datar.

WORM = Write Once Read Many-timesWORMterbentuk dari sebuah aluminium film yang dilapisi oleh plastik di bagian atas dan bagianbawahnya. Untuk menulis data, pada media ini digunakan sinar laser untuk membuat lubang padaaluminiumnya sehinggadisk ini hanya dapat ditulis sekali.

Ciri-ciri WORM Disk :

1. Hanya dapat ditulis sekali.

2. Data lebih tahan lama dan dapat dipercaya.

WORMini dianggap tahan banting dan paling terpercaya karena lapisan metalnya dilindungi denganaman oleh lapisan plastiknya dan juga datanya tidak dapat dirusak dengan pengaruh medan magnet.

Kebanyakanremovable-disklebih lambat darinon-removable-diskkarena kinerja mereka jugadipengaruhi oleh waktu yang dibutuhkan untuk menulis data. Waktu ini dipengaruhi oleh waktu rotasi,dan juga kadang-kadangseek time.

TapesSebuahtapedapat menyimpan data lebih banyak dariopticalmaupunmagnetic disk cartridge, hargacartridgedari tape drivelebih murah namun memilikirandom accessyang lebih lambat karenamembutuhkan operasifast-forwarddanrewindyang kadang-kadang bisa membutuhkan waktu beberapadetik bahkan menit.

Tapeini biasa digunakan olehsupercomputer centeruntuk menyimpan data yang besar dan tidakmembutuhkanrandom accessyang cepat.

312

Page 333: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Dalam skala yang besar biasanya digunakanRobotic Tape Changersyaitu sebuah alat yang dipakaiuntuk menggantitapedalam sebuahlibrary.

Stackermenyimpan beberapatape, sedangkansilo untuk menyimpan ribuan tape.

7.6.2. Future Technology

Penyimpanan HolographicTeknologi ini digunakan untuk menyimpan foto hologram di media khusus. Misalkan pada foto hitamputih digunakan array 2 dimensi yang merepresentasikan warna hitam dan putih (bit 0 dan 1) maka diteknologiholographicini satu pixel gambar dapat menyimpan jutaan bit sehingga gambarnya menjaditajam dan pixelnya ditransfer menggunakan sinar laser sehinggatransfer rate-nya tinggi.

Microelectronic Mechanical Systems (MEMS)Teknologi yang bertujuan mengembangkan sebuah media penyimpanan yang bersifatnon-volatiledengan kecepatan yang lebih cepat dan lebih murah darisemiconductorDRAM.

7.6.3. Aplikasi AntarmukaSistem operasi tidak menanganitapessebagaimana sistem operasi menanganiremovable diskmaupunfixed disk. Sistem operasi biasanya menampilkantapesebagai media penyimpanan secara keseluruhan.

Suatu aplikasi tidak membuka suatu berkas padatape, melainkan membukatape drivesecarakeseluruhan sebagairaw device.

Biasanyatape drivedisediakan untuk penggunaan aplikasi tersebut secara eksklusif, sampai aplikasitersebut berakhir atau aplikasi tersebut menutuptape device. Eksklusivitas ini masuk akal, karenarandom accesspadatapebisa memakan waktu yang lama, sehingga membiarkan beberapa aplikasimelakukanrandom accesspadatapebisa menyebabkanthrashing.

Sistem operasi tidak menyediakan sistem berkas sehingga aplikasi harus memutuskan bagaimana caramenggunakan blok-blok array.

Tiap aplikasi membuat peraturannya masing-masing tentang bagaimana mengaturtapesupaya suatutapeyang penuh terisi dengan data hanya dapat digunakan oleh program yang membuatnya.

Tape drivemempunyai set operasi-operasi dasar yang berbeda dengandiskdrive. Sebagai penggantioperasiseek(sebagaimana yang digunakan padadisk drive), tape drivemenggunakan operasilocate.Operasilocateini lebih akurat dibandingkan dengan operasiseekkarena operasi ini memposisikantapeke logical blockyang spesifik.

Sebagian besar tape drive mempunyai operasireadposition yang berfungsi memberitahu posisitapeheaddengan menunjukkan nomorlogical blok. Selain itu banyak jugatape driveyang menyediakanoperasispaceyang berfungsi memindahkan posisitape head. Misalnya operasispaceakanmemindahkan posisitape headsejauh dua blok ke belakang.

313

Page 334: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

Untuk sebagian jenistape drive, menulis pada blok mempunyai efek samping menghapus apapun yangberada pada posisi sesudah posisi penulisan. Hal ini menunjukkan bahwatape driveadalahappend-onlydevices, maksudnya adalah apabila kita meng-updateblok yang ada di tengah berarti kita akanmenghapus semua data yang terletak sesudah blok tersebut. Untuk mencegah hal ini terjadi makadigunakan tanda EOT (end-of-tape) yang diletakkan pada posisi sesudah posisi blok yang ditulis. Drivemenolak untuk mencari lokasi sesudah tanda EOT, tetapi adalah suatu hal yang penting untuk mencarilokasi EOT kemudian mulai menulis menulis data. Cara ini menyebabkan tanda EOT yang lamatertimpa, lalu tanda yang baru diletakkan pada posisi akhir dari blok yang baru saja ditulis.

Penamaan BerkasPenamaan berkas padaremovable diskcukup sulit terutama pada saat kita mau menulis data padaremovable cartridgedi suatu komputer, kemudian menggunakancartridgetersebut di komputer yanglain. Jika kedua komputer memiliki tipe mesin yang sama dan memiliki jenisremovable driveyangsama, maka satu- satunya kesulitan yang ada adalah bagaimana cara mengetahui isi dandata layoutpadacartridge. Namun jika tipe kedua mesin maupun drive berbeda, banyak masalah bisa muncul. Sekalipunkedua drive-nya kompatibel, komputer yang berbeda bisa menyimpan bytes dengan urutan yang berbeda,dan bisa menggunakanencodingyang berbeda untukbinary numbermaupun huruf.

Pada umumnya sistem operasi sekarang membiarkan masalahname-spacetidak terselesaikan untukremovable media, dan bergantung kepada aplikasi dan user untuk memecahkan bagaimana caramengakses dan menerjemahkan data. Untungnya, beberapa jenisremovable mediasudah distandarkandengan sangat baik sehingga semua komputer bisa menggunakannya dengan cara yang sama, contoh:CD.

Manajemen Penyimpanan HierarkisRobotic jukeboxmemungkinkan komputer untuk menggantiremovable cartridgedi tapeataudisk drivetanpa bantuan manusia. Dua penggunaan utama dari teknologi ini adalah untuk kepentinganbackupdansistem penyimpanan hirarkis. Sistem penyimpanan hirarkis ini sendiri melingkupi hirarkis penyimpananyang merupakan cakupan lebih luas daripada memori primer dan penyimpanan sekunder untukmembentuk penyimpanan tersier. Penyimpanan tersier biasanya diimplementasikan sebagaijukeboxdaritapesatauremovable media.

Walau pun penyimpanan tersier dapat mempergunakan sistem memori virtual, cara ini tidak baik. Karenapengambilan data darijukeboxmembutuhkan waktu yang agak lama. Selain itu diperlukan waktu yangagak lama untukdemand pagingdan untuk bentuk lain dari penggunaanvirtual-memory.

Berkas yang kapasitasnya kecil dan sering digunakan dibiarkan berada di disk magnetik, sementaraberkas yang kapasitasnya besar, sudah lama, dan tidak aktif digunakan akan diarsipkan dijukebox.

Pada beberapa sistemfile-archiving, directory entryuntuk berkas selalu ada, tetapi isi berkas tidak lagiberada di penyimpanan sekunder. Jika suatu aplikasi mencoba membuka berkas, pemanggilanopensystemakan ditunda sampai isi berkas dikirim dari penyimpanan tersier. Ketika isi berkas sudahdikirimkan dari disk magnetik, operasiopenmengembalikan kontrol kepada aplikasi.

Manajemen penyimpanan hierarkis biasanya ditemukan pada pusatsupercomputingdan instalasi besarlainnya yang mempunyai data yang besar.

314

Page 335: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.6.4. Masalah KinerjaTiga aspek utama dari kinerja penyimpanan tersier berdasarkan Silberschatz et. al. [Silberschatz2002]:

1. Kecepatan

Kecepatan dari penyimpanan tersier memiliki 2 aspek:bandwidthdanlatency. Menurut Silberschatzet. al. [Silberschatz2002],Sustained bandwidthadalah rata-rata tingkat data pada proses transfer,yaitu jumlah byte dibagi dengan waktu transfer.Effective bandwidthmenghitung rata-rata padaseluruh waktu I/O, termasuk waktu untukseekataulocate. Istilahbandwidthdari suatudrivesebenarnya adalahsustained bandwidth.

2. Kehandalan

Removable magnetic disktidak begitu bisa diandalkan dibandingkan denganfixed hard-diskkarenacartridge lebih rentan terhadap lingkungan yang berbahaya seperti debu, perubahan besar padatemperatur dan kelembaban, dan gangguan mekanis seperti tekukan.Optical disksdianggap sangatbisa diandalkan karena lapisan yang menyimpan bit dilindungi oleh plastik transparan atau lapisankaca.

3. Harga

7.7. Rangkuman

7.7.1. I/ODasar dari elemen perangkat keras yang terkandung padaI/O adalahbus, device controller,danI/O itusendiri. Kinerja kerja pada data yang bergerak antara device dan memori utama di jalankan oleh CPU, diprogram olehI/O atau mungkin DMAcontroller. Modul kernel yang mengaturdeviceadalahdevicedriver. System-call interfaceyang disediakan aplikasi dirancang untuk menghandle beberapa dasarkategori dari perangkat keras, termasukblock devices, character devices, memory mapped files, networksocketsdanprogrammed interval timers.

SubsistemI/O kernel menyediakan beberapa servis. Diantaranya adalahI/O schedulling, buffering,spooling, error handlingdandevice reservation. Salah satu servis dinamakantranslation, untukmembuat koneksi antara perangkat keras dan nama file yang digunakan oleh aplikasi.

I/O system callsbanyak dipakai oleh CPU, dikarenakan oleh banyaknya lapisan dari perangkat lunakantaraphysical devicedan aplikasi. Lapisan ini mengimplikasikanoverheaddaricontext switchinguntukmelewatikernel’s protection boundary, dari sinyal daninterrupt handlinguntuk melayaniI/O devices.

315

Page 336: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

7.7.2. DiskDisk drivesadalahmajor secondary-storage I/O devicepada kebanyakan komputer.Permintaan untukdisk I/O digenerate oleh sistem file dan sistem virtual memori. Setiap permintaan menspesifikasikanalamat pada disk untuk dapat direferensikan padaformdi logical block number.

Algoritmadisk schedullingdapat meningkatkan efektifitasbandwith , average response time, danvariance response time. Algoritma seperti SSTF, SCAN, C-SCAN, LOOK dan C-LOOK didesain untukmembuat perkembangan dengan menyusun ulang antrian disk untuk meningkatkan total waktupencarian.

Performa dapat rusak karenaexternal fragmentation. Satu cara untuk menyusun ulang disk untukmengurangi fragmentasi adalah untukback updanrestoreseluruh disk atau partisi. Blok -blok dibacadari lokasi yang tersebar, me-restoretulisan mereka secara berbeda. Beberapa sistem mempunyaikemampuan untuk men-scansistem file untuk mengidentifikasi file terfragmentasi, lalu menggerakanblok-blok mengelilingi untuk meningkatkan fragmentasi. Men -defragmentasi file yang sudah difragmentasi (tetapi hasilnya kurang optimal) dapat secara signifikan meningkatkan performa, tetapisistem ini secara umum kurang berguna selama proses defragmentasi sedang berjalan. Sistem operasime-manageblok -blok pada disk. Pertama, disk baru di format secaralow leveluntuk menciptakansektor pada perangkat keras yang masih belum digunakan. Lalu, disk dapat di partisi dan sistem filediciptakan, dan blok-blok boot dapat dialokasikan. Terakhir jika ada blok yang terkorupsi, sistem harusmempunyai cara untuk me-lock out blok tersebut, atau menggantikannya dengan cadangan.

Tertiary storagedi bangun dari disk dantape drivesyang menggunakan media yang dapat dipindahkan.Contoh daritertiary storageadalahmagnetic tape, removable magnetic, dan magneto-optic disk.

Untuk removable disk, sistem operasi secara general menyediakan servis penuh dari sistem fileinterface,termasukspace managementdanrequest-queue schedulling. Untuk tape, sistem operasi secara generalhanya menyediakaninterface yang baru. Banyak sistem operasi yang tidak memilikibuilt-in supportuntuk jukeboxes. Jukebox supportdapat disediakan olehdevice driver.

7.8. Latihan

1. Gambarkan diagram dariInterrupt Driven I/O Cycle!

2. Sebutkan langkah-langkah dari transfer DMA!

3. Apakah perbedaan daripoolingdan interupsi?

4. Apa hubungan arsitektur kernel yang di-thread dengan implementasi interupsi?

5. Mengapa antarmuka dibutuhkan pada aplikasi I/O?

6. Apa tujuan adanyadevice driver? Berikan contoh keuntungan pengimplementasiannya!

7. Apakah yang dimaksud dengan prosespooling? Jelaskan!

8. Jelaskan dengan singkat mengenai penjadwalan I/O?

9. Apakah kegunaanStreamspada Sistem V UNIX?

316

Page 337: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 7. I/O

10.Andaikan suatu disk memiliki 100 silinder(silinder 0- silinder 99), posisiheadsekarang di silinder25, sebelumnyaheadmelayani silinder 13. Berikut ini adalah antrian silinder yang meminta layanansecaraFIFO: 86, 37, 12, 90, 46, 77, 24, 48, 86, 65.

Hitung total pergerakan head untuk memenuhi permintaan tersebut dimulai dari posisiheadsekarang, dengan algoritma:

a.FCFS

b. SSTF

c. SCAN

d. LOOK

e.C-SCAN

f. C-LOOK

11.Jelaskan perbedaan, persamaan serta kelebihan dan kekurangan dari 2 perbandingan algoritmaberikut:

a.FCFSvsSSTF

b. SCANvs C-SCAN

c. LOOK vsC-LOOK

d. SSTFvs SCAN

12.Jelaskan siklus hidup dari permintaan pembacaan blok!

13.Bagaimana cara meningkatkan efisiensi performa I/O?

14.Apa keuntungan penggunaan pemetaan pada disk?

15.Bagaimana cara disk SCSI memulihkan kondisi blok yang rusak?

16.Bagaimana penanganan ruangswappada disk?

17.Bagaimanakah suatu operasi output dieksekusi?

18.Sebutkan kelebihantertiary storage structure?

Daftar Pustaka

[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne, 2002,Applied OperatingSystems: Sixth Edition, Edisi Keenam, John Wiley & Sons.

[Stallings2001] William Stallings, 2001,Operating Systems: Internal and Design Principles: FourthEdition, Edisi Keempat, Prentice-Hall International.

[Tanenbaum1992] Andrew Tanenbaum, 1992,Modern Operating Systems: First Edition, Edisi Pertama,Prentice-Hall.

317

Page 338: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.1. Perangkat Lunak Bebas

8.1.1. Konsep bebasSalah seorang tokoh perangkat lunak bebas pernah mengatakan kata bebas bukan ditujukan pada harga,tapi kebebasan. Beliau adalah Richard Stallman, pemimpin Free Software Foundation, perintis proyekGNU (GNU’s Not Unix, GNU Bukan Unix). Bisa dikatakan bahwa Richard Stallman dan Proyek GNUmerupakan salah satu ikon dalam pengembangan perangkat lunak bebas itu sendiri. Proyek GNU mulaidirintis pada tahun 1980-an dipicu oleh maraknya perangkat lunak berpemilik (perangkat lunakberlisensi). Para pengembang dan penjual perangkat lunak berpemilik bersikeras bahwa penggunaanperangkat lunak tanpa lisensi merupakan suatu bentuk pelanggaran Hak atas Kekayaan Intelektual(Intellectual Right) yang dikategorisasikan sebagai tidakan kriminal. Konsep yang ditekankan oleh pihakpengembang diatas tidak diterima oleh semua orang, salah satunya adalah Richard Stallman yangberpendapat bahwa perangkat lunak merupakan milik masyarakat(public) sehingga diperbolehkan untukdipakai, dimodifikasi serta disebarluaskan secara bebas. Pengembangan perangkat lunak bebas memilikitujuan agar setiap orang dapat mendapatkan manfaat dari perangkat lunak secara bebas sehingga setiaporang dapat menjalankan, menggandakan, menyebarluaskan, mempelajari, mengubah dan meningkatkankinerja perangkat lunak. Seperti disebutkan di atas kata bebas pada perangkat lunak bebas seringdiartikan sebagai gratis (free), arti sesungguhnya bebas pada perangkat lunak bebas lebih merupakankebebasan untuk mempergunakan perangkat lunak, melakukan penyalinan, dan perubahan pada kodesumber. Arti bebas yang salah, telah menimbulkan persepsi masyarakat bahwa perangkat lunak bebasmerupakan perangkat lunak yang gratis. Perangkat lunak bebas ialah perihal kebebasan, bukan harga.Konsep kebebasan yang dapat diambil dari kata bebas pada perangkat lunak bebas adalah sepertikebebasan berbicara bukan seperti bir gratis. Maksud dari bebas seperti kebebasan berbicara adalahkebebasan untuk menggunakan, menyalin, menyebarluaskan, mempelajari, mengubah, danmeningkatkan kinerja perangkat lunak. Suatu perangkat lunak dapat dimasukkan dalam kategoriperangkat lunak bebas bila setiap orang memiliki kebebasan tersebut. Hal ini berarti, setiap penggunaperangkat lunak bebas dapat meminjamkan perangkat lunak yang dimilikinya kepada orang lain untukdipergunakan tanpa perlu melanggar hukum dan disebut pembajak. Kebebasan yang diberikan perangkatlunak bebas dijamin oleh copyleft, suatu cara yang dijamin oleh hukum untuk melindungi kebebasanpara pengguna perangkat lunak bebas. Dengan adanya copyleft maka suatu perangkat lunak bebasbeserta hasil perubahan dari kode sumbernya akan selalu menjadi perangkat lunak bebas. Kebebasanyang diberikan melalui perlindungan copyleft inilah yang membuat suatu program dapat menjadiperangkat lunak bebas. Keuntungan yang diperoleh dari penggunaan perangkat lunak bebas adalahkarena serbaguna dan efektif dalam keanekaragaman jenis aplikasi. Dengan pemberian source code-nya,perangkat lunak bebas dapat disesuaikan secara khusus untuk kebutuhan pemakai. Sesuatu yang tidakmudah untuk terselesaikan dengan perangkat lunak berpemilik Selain itu, perangkat lunak bebasdidukung oleh milis-milis pengguna yang dapat menjawab pertanyaan yang timbul karena permasalahanpada penggunaan perangkat lunak bebas.

318

Page 339: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.1.2. Open sourceOpen source atau disebut juga perangkat lunak bebas ialah perangkat lunak yang mengizinkan siapa pununtuk menggunakan, menyalin, dan mendistribusikan, baik dimodifikasi atau pun tidak, secara gratisatau pun dengan biaya. Perlu ditekankan, bahwa source code dari program harus tersedia. “Jika tidak adakode program, berarti bukan perangkat lunak bebas.” Yang tersebut di atas merupakan definisisederhananya; lihat juga definisi lengkapnya. Terdapat berbagai cara untuk membuat suatu programbebas--- banyak pertanyaan rinci, yang dapat ditentukan dalam banyak cara dan masih menjadikanprogram tersebut bebas. Beberapa kemungkinan variasi akan dijelaskan di bawah ini. Perangkat lunakbebas menyangkut masalah kebebasan, bukan harga. Tapi beberapa perusahaan perangkat lunakberpemilik terkadang menggunakan istilah perangkat lunak bebas untuk menunjukkan harga. Terkadangmaksud mereka ialah anda dapat memperoleh salinan biner tanpa biaya; terkadang maksud mereka ialahsuatu salinan disertakan dalam komputer yang anda beli. Ini tidak ada hubungannya sama sekali denganapa yang di maksud dengan perangkat lunak bebas pada proyek GNU. Karena hal ini dapatmembingungkan, ketika sebuah perusahaan perangkat lunak menyatakan bahwa produknya adalahperangkat lunak bebas, selalu periksa ketentuan distribusinya untuk melihat apakah pengguna memilikikebebasan yang dimaksudkan oleh istilah perangkat lunak bebas. Terkadang memang benar-benarperangkat lunak bebas; namun terkadang tidak. Banyak bahasa memiliki dua kata yang berbeda untukmenyatakan “bebas” sebagai kebebasan dan “bebas” sebagai tanpa biaya. Sebagai contoh, bahasaPerancis memiliki kata “libre” dan “gratuit”. Dalam bahasa Inggris terdapat kata “gratis” yangmenyatakan tentang harga tanpa membingungkan. Tapi tidak ada kata sifat yang menyatakan kebebasantanpa membingungkan. Hal ini sangat disayangkan, karena kata semacam itu akan sangat berguna disini.Perangkat lunak bebas seringkali lebih handal daripada perangkat lunak tidak bebas.

8.1.3. Public DomainPerangkat lunak public domain ialah perangkat lunak yang tanpa hak cipta. Ini merupakan kasus khususdari perangkat lunak bebas non-copylefted, yang berarti bahwa beberapa salinan atau versi yang telahdimodifikasi bisa jadi tidak bebas sama sekali. Terkadang ada yang menggunakan istilah “publicdomain” secara bebas yang berarti “cuma-cuma” atau “tersedia gratis". Namun “public domain”merupakan istilah hukum yang artinya “tidak memiliki hak cipta”. Untuk jelasnya, kami menganjurkanuntuk menggunakan istilah “public domain” dalam arti tersebut, serta menggunakan istilah lain untukmengartikan pengertian yang lain.

8.1.4. CopyleftedPerangkat lunak copylefted merupakan perangkat lunak bebas yang ketentuan pendistribusinya tidakmemperbolehkan untuk menambah batasan-batasan tambahan--jika mendistribusikan atau memodifikasiperangkat lunak tersebut. Artinya, setiap salinan dari perangkat lunak, walau pun telah dimodifikasi,haruslah merupakan perangkat lunak bebas. Dalam proyek GNU, kami meng-copyleft-kan hampir semuaperangkat lunak yang kami buat, karena tujuan kami adalah untuk memberikan kebebasan kepada semuapengguna seperti yang tersirat dalam istilah “perangkat lunak bebas”. Copyleft merupakan konsep yangumum. Jadi, untuk meng-copyleft-kan sebuah program, anda harus menggunakan ketentuan distribusitertentu. Terdapat berbagai cara untuk menulis perjanjian distribusi program copyleft.

319

Page 340: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.1.4.1. Non-copylefted

Perangkat lunak bebas non-copylefted dibuat oleh pembuatnya yang mengizinkan seseorang untukmendistribusikan dan memodifikasi, dan untuk menambahkan batasan-batasan tambahan dalamnya. Jikasuatu program bebas tapi tidak copylefted, maka beberapa salinan atau versi yang dimodifikasi bisa jaditidak bebas sama sekali. Perusahaan perangkat lunak dapat mengkompilasi programnya, dengan atautanpa modifikasi, dan mendistribusikan file tereksekusi sebagai produk perangkat lunak yang berpemilik.Sistem X Window menggambarkan hal ini. Konsorsium X mengeluarkan X11 dengan ketentuandistribusi yang menetapkannya sebagai perangkat lunak bebas non-copylefted. Jika andamenginginkannya, anda dapat memperoleh salinan yang memiliki perjanjian distribusi dan juga bebas.Namun ada juga versi tidak bebasnya, dan ada workstation terkemuka serta perangkat grafik PC, dimanaversi yang tidak bebas merupakan satu-satunya yang dapat bekerja disini. Jika anda menggunakanperangkat keras tersebut, X11 bukanlah perangkat lunak bebas bagi anda.

8.1.4.2. GPL-covered

GNU GPL (General Public License) (20k huruf) merupakan sebuah kumpulan ketentuan pendistribusiantertentu untuk meng-copyleft-kan sebuah program. Proyek GNU menggunakannya sebagai perjanjiandistribusi untuk sebagian besar perangkat lunak GNU.

8.1.4.2.1. GNU

Sistem GNU merupakan sistem serupa Unix yang seutuhnya bebas. Sistem operasi serupa Unix terdiridari berbagai program. Sistem GNU mencakup seluruh perangkat lunak GNU, dan juga paket programlain, seperti sistem X Windows dam TeX yang bukan perangkat lunak GNU. Pengembangan sistemGNU ini telah dilakukan sejak tahun 1984. Pengedaran awal (percobaan) dari “sistem GNU lengkap”dilakukan tahun 1996. Sekarang (2001), sistem GNU ini bekerja secara handal, serta orang-orangbekerja dan mengembangkan GNOME, dan PPP dalam sistem GNU. Pada saat bersamaan sistemGNU/Linux, merupakan sebuah terobosan dari sistem GNU yang menggunakan Linux sebagai kerneldan mengalami sukses luar biasa. Berhubung tujuan dari GNU ialah untuk kebebasan, maka setiapkomponen dalam sistem GNU harus merupakan perangkat lunak bebas. Namun tidak berarti semuanyaharus copylefted; setiap jenis perangkat lunak bebas dapat sah-sah saja jika menolong memenuhi tujuanteknis. Seseorang dapat menggunakan perangkat lunak non-copylefted seperti sistem X Window.

8.1.4.2.2. Program GNU

“Program GNU” setara dengan perangkat lunak GNU. Program Anu adalah program GNU jika iamerupakan perangkat lunak GNU.

Perangkat Lunak GNUPerangkat lunak GNU merupakan perangkat lunak yang dikeluarkan oleh proyek GNU. Sebagian besarperangkat lunak GNU merupakan copylefted, tapi tidak semuanya; namun, semua perangkat lunak GNUharus merupakan perangkat lunak bebas. Jika suatu program adalah perangkat lunak GNU, seseorangjuga dapat menyebutnya sebagai program GNU. Beberapa perangkat lunak GNU ditulis oleh staf dariFree Software Foundation (FSF, Yayasan Perangkat Lunak Bebas), namun sebagian besar perangkat

320

Page 341: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

lunak GNU merupakan kontribusi dari para sukarelawan. Beberapa perangkat lunak yangdikontribusikan merupakan hak cipta dari Free Software Foundation; beberapa merupakan hak cipta darikontributor yang menulisnya.

8.1.4.2.3. Perangkat Lunak Semi-Bebas

Perangkat lunak semi-bebas adalah perangkat lunak yang tidak bebas, tapi mengizinkan setiap oranguntuk menggunakan, menyalin, mendistribusikan, dan memodifikasinya (termasuk distribusi dari versiyang telah dimodifikasi) untuk tujuan non-laba. PGP adalah salah satu contoh dari program semi-bebas.Perangkat lunak semi-bebas jauh lebih baik dari perangkat lunak berpemilik, namun masih ada masalah,dan seseorang tidak dapat menggunakannya pada sistem operasi yang bebas. Pembatasan dari copyleftdirancang untuk melindungi kebebasan bagi semua pengguna. Bagi pihak GNU, satu-satunya alasanuntuk membatasi substantif dalam menggunakan program--ialah melarang orang lain untukmenambahkan batasan lain. Program semi-bebas memiliki batasan-batasan tambahan, yang dimotivasioleh tujuan pribadi semata. Sangat mustahil untuk menyertakan perangkat lunak semi-bebas pada sistemoperasi bebas. Hal ini karena perjanjian distribusi untuk sistem operasi keseluruhan adalah gabungan dariperjanjian distribusi untuk semua program di dalamnya. Menambahkan satu program semi-bebas padasistem akan membuat keseluruhan sistem menjadi semi-bebas. Terdapat dua alasan mengapa GNU tidakmenginginkan hal ini: Sudah seharusnya kita percaya bahwa perangkat lunak bebas seharusnya ditujukanbagi semuanya--termasuk pelaku bisnis, dan bukan hanya untuk sekolah dan sekedar hobi saja. GNUingin mengundang kalangan bisnis untuk menggunakan keseluruhan sistem GNU, dan untuk itu kamitidak dapat menyertakan program semi-bebas di dalamnya. Distribusi komersial dari sistem operasibebas, termasuk Sistem GNU/Linux sangat penting, dan para pengguna menghargai kemampuan untukdapat membeli distribusi CD-ROM komersial. Menyertakan satu program semi-bebas dalam sistemoperasi dapat memotong distribusi CD-ROM komersial untuknya. Free Software Foundation sendiriadalah organisasi nirlaba, dan karena itu, kami diizinkan secara hukum untuk menggunakan programsemi-bebas secara “internal”. Tapi GNU tidak melakukannya, karena hal itu akan melemahkan upayayang telah dilakukan untuk memperoleh program yang dapat disertakan ke dalam GNU. Jika adapekerjaan yang berhubungan dengan perangkat lunak, maka sebelum kami memiliki program bebasuntuk melakukan pekerjaan itu, sistem GNU memiliki kesenjangan. Kami harus memberitahukan kepadapara sukarelawan, “Kami belum memiliki program untuk melakukan pekerjaan ini di GNU, jadi kamiberharap Anda menulisnya sendiri.” Jika program semi-bebas digunakan untuk untuk melakukanpekerjaan itu, hal itu akan melemahkan apa yang telah dijelaskan diatas; hal itu akan menghancurkanmotivasi (bagi pengembang GNU, dan orang lain yang memiliki pandangan yang sama) untuk menulissubstitusi yang bebas.

8.1.4.2.4. Perangkat Lunak Berpemilik

Perangkat lunak berpemilik ialah perangkat lunak yang tidak bebas atau pun semi-bebas. Seseorangdapat dilarang, atau harus meminta izin, atau akan dikenakan pembatasan lainnya sehinggamenyulitkan--jika menggunakan, mengedarkan, atau memodifikasinya. Free Software Foundationmengikuti aturan bahwa seseorang tidak dapat memasang program-program berpemilik di komputernyakecuali untuk sementara waktu dengan maksud menulis pengganti bebas untuk program tersebut.Disamping itu, pihak perangkat lunak bebas merasa tidak; ada alasan untuk memasang sebuah programberpemilik. Sebagai contoh, pengemban GNU merasa sah dalam memasang Unix di komputer yangdigunakan pada tahun 1980-an, sebab kami menggunakannya untuk menulis pengganti bebas untukUnix. Sekarang, karena sistem operasi bebas telah tersedia, alasan ini tidak lagi dapat diterima; pihak

321

Page 342: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

GNU harus menghapus semua sistem operasi tidak bebas yang dimiliki, dan setiap komputer yangdipasang harus berjalan pada sistem operasi yang benar-benar bebas. GNU tidak memaksa parapengguna GNU atau para kontributor GNU untuk mengikuti aturan ini. Ini adalah aturan yang dibuatuntuk diri kami sendiri (GNU). Tapi kami berharap agar anda memutuskan untuk mengikutinya juga.Freeware Istilah “freeware” tidak terdefinisi dengan jelas, tapi biasanya digunakan untuk paket-paketyang mengizinkan redistribusi tetapi bukan pemodifikasian (dan kode programnya tidak tersedia).Paket-paket ini bukan perangkat lunak bebas, jadi jangan menggunakan istilah “freeware” untuk merujukke perangkat lunak bebas.

8.1.4.2.5. Shareware

Shareware ialah perangkat lunak yang mengizinkan orang-orang untuk meredistribusikan salinannya,tetapi mereka yang terus menggunakannya diminta untuk membayar biaya lisensi. Shareware bukanperangkat lunak bebas atau pun semi-bebas. Ada dua alasan untuk hal ini, yakni: Sebagian besarshareware, kode programnya tidak tersedia; jadi anda tidak dapat memodifikasi program tersebut samasekali. Shareware tidak mengizinkan seseorang untuk membuat salinan dan memasangnya tanpamembayar biaya lisensi, tidak juga untuk orang-orang yang terlibat dalam kegiatan nirlaba (Dalamprakteknya, orang-orang sering tidak mempedulikan perjanjian distribusi dan tetap melakukan haltersebut, tapi sebenarnya perjanjian tidak mengizinkannya).

8.1.4.2.6. Perangkat Lunak Komersial

Perangkat lunak komersial adalah perangkat lunak yang dikembangkan oleh kalangan bisnis untukmemperoleh keuntungan dari penggunaannya. “Komersial” dan “kepemilikan” adalah dua hal yangberbeda! Kebanyakan perangkat lunak komersial adalah berpemilik, tapi ada perangkat lunak bebaskomersial, dan ada perangkat lunak tidak bebas dan tidak komersial. Sebagai contoh, GNU Ada selaludidistribusikan di bawah perjanjian GNU GPL, dan setiap salinannya adalah perangkat lunak bebas; tapipara pengembangnya menjual kontrak penunjang. Ketika penjualnya bicara kepada calon pembeli,terkadang pembeli tersebut mengatakan, “Kami merasa lebih aman dengan kompilator komersial.” Sipenjual menjawab, “GNU Ada ialah kompilator komersial; hanya saja ia merupakan perangkat lunakbebas.” Bagi proyek GNU, penekanannya ada pada hal yang sebaliknya: hal terpenting ialah GNUmerupakan perangkat lunak bebas; terlepas komersial atau bukan, itu bukan hal yang penting.Perkembangan GNU yang dihasilkan dari komersialisasinya adalah menguntungkan. Harap sebarkan kekhalayak, perangkat lunak bebas komersial merupakan sesuatu yang mungkin. Sebaiknya, anda janganmengatakan “komersial” ketika maksud anda ialah “berpemilik”.

8.2. Sejarah dan Rancangan Dasar GNU/Linux

8.2.1. SejarahLinux adalah sebuah sistem operasi yang sangat mirip dengan sistem-sistem UNIX, karena memangtujuan utama desain dari proyek Linux adalah UNIX compatible. Sejarah Linux dimulai pada tahun

322

Page 343: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

1991, ketika mahasiswa Universitas Helsinki, Finlandia bernama Linus Benedict Torvalds menulisLinux, sebuah kernel untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU intel yangcocok untuk PC.

Pada awal perkembangannya, source code Linux disediakan secara bebas melalui internet. Hasilnya,pengembangan Linux merupakan kolaborasi para user dari seluruh dunia, semuanya dilakukan secaraeksklusif melalui internet. Bermula dari kernel awal yang hanya mengimplementasikan subset kecil darisistem UNIX, kini sistem Linux telah tumbuh sehingga mampu memasukkan banyak fungsi UNIX.

Kernel Linux berbeda dengan sistem Linux. Kernel Linux merupakan sebuah perangkat lunak orisinilyang dibuat oleh komunitas Linux, sedangkan sistem Linux, yang dikenal saat ini, mengandung banyakkomponen yang dibuat sendiri atau dipinjam dari proyek pengembangan lain.

8.2.2. Kernel LinuxKernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991. Sistem berkasyang didukung hanya sistem berkas Minix. Kernel pertama dibuat berdasarkan kerangka Minix (sistemUNIX kecil yang dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudahmengimplementasi proses UNIX secara tepat.

Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalahkulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yangdisediakan adalah jaringan. Versi 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0juga memiliki sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix. Sejumlahdukungan hardware ekstra juga dimasukkan ke dalam rilis ini. Dukungan hardware telah berkembangtermasuk diantaranya floppy-disk, CD-ROM, sound card, berbagai mouse, dan keyboard internasional.Dukungan juga diberikan terhadap modul kernel yang dynamically loadable dan unloadable.

Satu tahun setelah versi 1.0 dirilis, kernel 1.2 keluar. Kernel versi 1.2 ini mendukung variasi hardwareyang lebih luas. Pengembang telah memperbaharui networking stack untuk menyediakan support bagiprotokol IPX, dan membuat implementasi IP lebih lengkap dengan memberikan fungsi accounting danfirewalling. Kernel 1.2 ini merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikanpada dukungan hardware dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada.

Akhirnya pada bulan Juni 1996, Linux 2.0 dirilis. Versi 2.0 memiliki dua kemampuan baru yang penting,yaitu dukungan terhadap multiple architecture dan multiprocessor architectures. Kode untuk manajemenmemori telah diperbaiki sehingga kinerja sistem berkas dan memori virtual meningkat. Untuk pertamakalinya, file system caching dikembangkan ke networked file systems, juga sudah didukung writablememory mapped regions. Kernel 2.0 sudah memberikan kinerja TCP/IP yang lebih baik, ditambahdengan sejumlah protokol jaringan baru. Kemampuan untuk memakai remote netware dan SMB(Microsoft LanManager) network volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lainadalah dukungan internal kernel threads, penanganan dependencies antara modul-modul loadable, danloading otomatis modul berdasarkan permintaan (on demand). Konfigurasi dinamis dari kernel pada runtime telah diperbaiki melalui konfigurasi interface yang baru dan standar.

8.2.3. Sistem LinuxDalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi komponen lainlah yangmembentuk secara komplit sistem operasi Linux. Dimana kernel Linux terdiri dari kode-kode yang

323

Page 344: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

dibuat khusus untuk proyek Linux, kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadapLinux, melainkan biasa dipakai dalam beberapa sistem operasi yang mirip UNIX. Contohnya, sistemoperasi BSD dari Berkeley, X Window System dari MIT, dan proyek GNU dari Free SoftwareFoundation.

Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem perpustakaan utama Linux awalnyadimulai oleh proyek GNU, tetapi perkembangan perpustakaannya diperbaiki melalui kerjasama darikomunitas Linux terutama pada pengalamatan, ketidak- efisienan, dan bugs. Komponen lain seperti GNUC Compiler, gcc, kualitasnya sudah cukup tinggi untuk dipakai langsung dalam Linux. Alat-alatadministrasi network di bawah Linux berasal dari kode yang dikembangkan untuk 4.3 BSD, tetapi BSDyang lebih baru, salah satunya FreeBSD, sebaliknya meminjam kode dari Linux, contohnya adalahperpustakaan matematika Intel floating-point-emulation.

Sistem Linux secara keseluruhan diawasi oleh network tidak ketat yang terdiri dari para pengembangmelalui internet, dengan grup kecil atau individu yang memiliki tanggung jawab untuk menjagaintegritas dari komponen-komponen khusus. Dokumen ’File System Hierarchy Standard’ juga dijagaoleh komunitas Linux untuk memelihara kompatibilitas ke seluruh komponen sistem yang berbeda-beda.Aturan ini menentukan rancangan keseluruhan dari sistem berkas Linux yang standar.

8.2.4. Distribusi LinuxSiapa pun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi terakhir dari komponensistem yang diperlukan melalui situs ftp lalu di-compile. Pada awal keberadaan Linux, operasi seperti diatas persis seperti yang dilaksanakan oleh pengguna Linux. Namun, dengan semakin berkembangnyaLinux, berbagai individu dan kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan caramenyediakan sebuah set bingkisan yang standar dan sudah di-compile terlebih dahulu supaya dapatdiinstall secara mudah.

Koleksi atau distribusi ini, tidak hanya terdiri dari sistem Linux dasar tetapi juga mengandung instalasisistem ekstra dan utilitas manajemen, bahkan paket yang sudah di- compile dan siap diinstall dari banyakalat UNIX yang biasa, seperti news servers, web browsers, text-processing dan alat mengedit, termasukjuga games.

Distribusi pertama mengatur paket-paket ini secara sederhana, menyediakan sebuah sarana untukmemindahkan seluruh file ke tempat yang sesuai. Salah satu kontribusi yang penting dari distribusimodern adalah manajemen/pengaturan paket-paket yang lebih baik. Distribusi Linux pada saat inimelibatkan database packet tracking yang memperbolehkan suatu paket agar dapat diinstall, di-upgrade,atau dihilangkan tanpa susah payah.

Distribusi SLS (Soft Landing System) adalah koleksi pertama dari bingkisan Linux yang dikenal sebagaidistribusi komplit. Walau pun SLS dapat diinstall sebagai entitas tersendiri, dia tidak memiliki alat-alatmanajemen bingkisan yang sekarang diharapkan dari distribusi Linux. Distribusi Slackware adalahpeningkatan yang besar dalam kualitas keseluruhan (walau pun masih memiliki manajemen bingkisanyang buruk); Slackware masih merupakan salah satu distribusi yang paling sering diinstall dalamkomunitas Linux.

Sejak dirilisnya Slackware, sejumlah besar distribusi komersil dan non-komersil Linux telah tersedia.Red Hat dan Debian adalah distribusi yang terkenal dari perusahaan pendukung Linux komersil danperangkat lunak bebas komunitas Linux. Pendukung Linux komersil lainnya termasuk distribusi dari

324

Page 345: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Caldera, Craftworks, dan Work- Group Solutions. Contoh distribusi lain adalah SuSE dan Unifix yangberasal dari German.

8.2.5. Lisensi LinuxKernel Linux terdistribusi di bawah Lisensi Publik Umum GNU (GPL), dimana peraturannya disusunoleh Free Software Foundation. Linux bukanlah perangkat lunak domain publik (public domain): PublicDomain berarti bahwa pengarang telah memberikan copyright terhadap perangkat lunak mereka, tetapicopyright terhadap kode Linux masih dipegang oleh pengarang-pengarang kode tersebut. Linux adalahperangkat lunak bebas, namun: bebas dalam arti bahwa siapa saja dapat mengkopi, modifikasi,memakainya dengan cara apa pun, dan memberikan kopi mereka kepada siapa pun tanpa larangan atauhalangan.

Implikasi utama peraturan lisensi Linux adalah bahwa siapa saja yang menggunakan Linux, ataumembuat modifikasi dari Linux, tidak boleh membuatnya menjadi hak milik sendiri. Jika sebuahperangkat lunak dirilis berdasarkan lisensi GPL, produk tersebut tidak boleh didistribusi hanya sebagaiproduk biner (binary-only). Perangkat lunak yang dirilis atau akan dirilis tersebut harus disediakansumber kodenya bersamaan dengan distribusi binernya.

8.2.6. Prinsip RancanganDalam rancangan keseluruhan, Linux menyerupai implementasi UNIX nonmicrokernel yang lain. Iaadalah sistem yang multiuser, multitasking dengan seperangkat lengkap alat-alat yang compatibledengan UNIX. Sistem berkas Linux mengikuti semantik tradisional UNIX, dan model jaringan standarUNIX diimplementasikan secara keseluruhan. Ciri internal desain Linux telah dipengaruhi oleh sejarahperkembangan sistem operasi ini.

Walau pun Linux dapat berjalan pada berbagai macam platform, pada awalnya dia dikembangkan secaraeksklusif pada arsitektur PC. Sebagian besar dari pengembangan awal tersebut dilakukan oleh peminatindividual, bukan oleh fasilitas riset yang memiliki dana besar, sehingga dari awal Linux berusaha untukmemasukkan fungsionalitas sebanyak mungkin dengan dana yang sangat terbatas. Saat ini, Linux dapatberjalan baik pada mesin multiprocessor dengan main memory yang sangat besar dan ukuran disk spaceyang juga sangat besar, namun tetap mampu beroperasi dengan baik dengan jumlah RAM yang lebihkecil dari 4 MB.

8.2.7. Prinsip Desain LinuxAkibat dari semakin berkembangnya teknologi PC, kernel Linux juga semakin lengkap dalammengimplementasikan fungsi UNIX. Tujuan utama desain Linux adalah cepat dan efisien, tetapiakhir-akhir ini konsentrasi perkembangan Linux lebih pada tujuan desain yang ketiga yaitu standarisasi.Standar POSIX terdiri dari kumpulan spesifikasi dari beberapa aspek yang berbeda kelakuan sistemoperasi. Ada dokumen POSIX untuk fungsi sistem operasi biasa dan untuk ekstensi seperti proses untukthread dan operasi real-time. Linux didesain agar sesuai dengan dokumen POSIX yang relevan.Sedikitnya ada dua distribusi Linux yang sudah memperoleh sertifikasi ofisial POSIX.

Karena Linux memberikan interface standar ke programmer dan pengguna, Linux tidak membuat banyakkejutan kepada siapa pun yang sudah terbiasa dengan UNIX. Namun interface pemrograman Linux

325

Page 346: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

merujuk pada semantik SVR4 UNIX daripada kelakuan BSD. Kumpulan perpustakaan yang berbedatersedia untuk mengimplementasi semantik BSD di tempat dimana kedua kelakuan sangat berbeda.

Ada banyak standar lain di dunia UNIX, tetapi sertifikasi penuh dari Linux terhadap standar lain UNIXterkadang menjadi lambat karena lebih sering tersedia dengan harga tertentu (tidak secara bebas), dan adaharga yang harus dibayar jika melibatkan sertifikasi persetujuan atau kecocokan sebuah sistem operasiterhadap kebanyakan standar. Bagaimanapun juga mendukung aplikasi yang luas adalah penting untuksuatu sistem operasi, sehingga sehingga standar implementasi merupakan tujuan utama pengembanganLinux, walau pun implementasinya tidak sah secara formal. Selain standar POSIX, Linux saat inimendukung ekstensi thread POSIX dan subset dari ekstensi untuk kontrol proses real-time POSIX.

8.2.8. Komponen Sistem LinuxSistem Linux terdiri dari tiga bagian kode penting:

Kernel: Bertanggung jawab memelihara semua abstraksi penting dari sistem operasi, termasuk hal-halseperti memori virtual dan proses- proses.

Perpustakaan sistem: menentukan kumpulan fungsi standar dimana aplikasi dapat berinteraksi dengankernel, dan mengimplementasi hampir semua fungsi sistem operasi yang tidak memerlukan hak penuhatas kernel.

Utilitas sistem: adalah program yang melakukan pekerjaan manajemen secara individual.

8.2.9. KernelWalau pun berbagai sistem operasi modern telah mengadopsi suatu arsitektur message-passing untukkernel internal mereka, Linux tetap memakai model historis UNIX: kernel diciptakan sebagai biner yangtunggal dan monolitis. Alasan utamanya adalah untuk meningkatkan kinerja, karena semua struktur datadan kode kernel disimpan dalam satu address space, alih konteks tidak diperlukan ketika sebuah prosesmemanggil sebuah fungsi sistem operasi atau ketika interupsi hardware dikirim. Tidak hanya penjadualaninti dan kode memori virtual yang menempati address space ini, tetapi juga semua kode kernel, termasuksemua device drivers, sistem berkas, dan kode jaringan, hadir dalam satu address space yang sama.

Kernel Linux membentuk inti dari sistem operasi Linux. Dia menyediakan semua fungsi yang diperlukanuntuk menjalankan proses, dan menyediakan layanan sistem untuk memberikan pengaturan dan proteksiakses ke sumber daya hardware. Kernel mengimplementasi semua fitur yang diperlukan supaya dapatbekerja sebagai sistem operasi. Namun, jika sendiri, sistem operasi yang disediakan oleh kernel Linuxsama sekali tidak mirip dengan sistem UNIX. Dia tidak memiliki banyak fitur ekstra UNIX, dan fituryang disediakan tidak selalu dalam format yang diharapkan oleh aplikasi UNIX. Interface dari sistemoperasi yang terlihat oleh aplikasi yang sedang berjalan tidak ditangani langsung oleh kernel, akan tetapiaplikasi membuat panggilan (calls) ke perpustakaan sistem, yang kemudian memanggil layanan sistemoperasi yang dibutuhkan.

8.2.10. Perpustakaan SistemPerpustakaan sistem menyediakan berbagai tipe fungsi. Pada level yang paling sederhana, merekamembolehkan aplikasi melakukan permintaan pada layanan sistem kernel. Membuat suatu system call

326

Page 347: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

melibatkan transfer kontrol dari mode user yang tidak penting ke mode kernel yang penting; detil daritransfer ini berbeda pada masing-masing arsitektur. Perpustakaan bertugas untuk mengumpulkanargumen system-call dan, jika perlu, mengatur argumen tersebut dalam bentuk khusus yang diperlukanuntuk melakukan system call.

Perpustakaan juga dapat menyediakan versi lebih kompleks dari system call dasar. Contohnya, fungsibuffered file-handling dari bahasa C semuanya diimplementasikan dalam perpustakaan sistem, yangmemberikan kontrol lebih baik terhadap file I/O daripada system call kernel dasar. Perpustakaan jugamenyediakan rutin yang tidak ada hubungan dengan system call, seperti algoritma penyusunan (sorting),fungsi matematika, dan rutin manipulasi string (string manipulation). Semua fungsi yang diperlukanuntuk mendukung jalannya aplikasi UNIX atau POSIX diimplementasikan dalam perpustakaan sistem.

8.2.11. Utilitas SistemSistem Linux mengandung banyak program-program user-mode: utilitas sistem dan utilitas user. Utilitassistem termasuk semua program yang diperlukan untuk menginisialisasi sistem, seperti program untukkonfigurasi alat jaringan (network device) atau untuk load modul kernel. Program server yang berjalansecara kontinu juga termasuk sebagai utilitas sistem; program semacam ini mengatur permintaan userlogin, koneksi jaringan yang masuk, dan antrian printer.

Tidak semua utilitas standar melakukan fungsi administrasi sistem yang penting. Lingkungan penggunaUNIX mengandung utilitas standar dalam jumlah besar untuk melakukan pekerjaan sehari-hari, sepertimembuat daftar direktori, memindahkan dan menghapus file, atau menunjukkan isi dari sebuah file.Utilitas yang lebih kompleks dapat melakukan fungsi text-processing, seperti menyusun data tekstualatau melakukan pattern searches pada input teks. Jika digabung, utilitas-utilitas tersebut membentukkumpulan alat standar yang diharapkan oleh user pada sistem UNIX mana saja; walau pun tidakmelakukan fungsi sistem operasi apa pun, utilitas tetap merupakan bagian penting dari sistem Linuxdasar.

8.3. Proses dan Memori

8.3.1. Manajemen Proses

8.3.1.1. Pendahuluan

Setiap aplikasi yang dijalankan di linux mempunyai pengenal yang disebut sebagai process identificationnumber (PID). PID disimpan dalam 32 bit dengan angka berkisar dari 0-32767 untuk menjaminkompatibilitas dengan unix. Dari nomor PID inilah linux dapat mengawasi dan mengatur proses-prosesyang terjadi didalam system. Proses yang dijalankan ataupun yang baru dibuat mempunyai struktur datayang disimpan ditask_struct .

Linux mengatur semua proses di dalam sistem melalui pemeriksaan dan perubahan terhadap setiapstruktur data task_struct yang dimiliki setiap proses. Sebuah daftar pointer ke semua struktur datatask_struct disimpan dalam task vector. Jumlah maksimum proses dalam sistem dibatasi oleh ukurandari task vector. Linux umumnya memiliki task vector dengan ukuran 512 entries. Saat proses dibuat,

327

Page 348: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

task_struct baru dialokasikan dari memori sistem dan ditambahkan ke task vector. Linux jugamendukung proses secara real time. Proses semacam ini harus bereaksi sangat cepat terhadap eventeksternal dan diperlakukan berbeda dari proses biasa lainnya oleh penjadwal.

Proses akan berakhir ketika ia memanggilexit() . Kernel akan menentukan waktu pelepasan sumberdaya yang dimiliki oleh proses yang telah selesai tersebut. Fungsido_exit() akan dipanggil saatterminasi yang kemudian memanggil__exit_mm/files/fs/sighand() yang akan membebaskansumber daya. Fungsiexit_notify() akan memperbarui hubungan antara proses induk dan prosesanak, semua proses anak yang induknya berakhir akan menjadi anak dari proses init. Terakhir akandipanggil scheduler untuk menjalankan proses baru.

8.3.1.2. Proses dan thread

Linux menggunakan representasi yang sama untuk proses dan thread. Secara sederhana thread dapatdikatakan sebuah proses baru yang berbagi alamat yang sama dengan induknya. Perbedaannnya terletakpada saat pembuatannya. Thread baru dibuat dengan system callclone yang membuat proses barudengan identitas sendiri, namun diizinkan untuk berbagi struktur data dengan induknya.

Secara tradisional, sumber daya yang dimiliki oleh proses induk akan diduplikasi ketika membuat prosesanak. Penyalinan ruang alamat ini berjalan lambat, sehingga untuk mengatasinya, salinan hanya dibuatketika salah satu dari mereka hendak menulis di alamat tersebut. Selain itu, ketika mereka akan berbagialamat tersebut ketika mereka hanya membaca. Inilah proses ringan yang dikenal juga dengan thread.

Thread dibuat dengan__clone() . __clone() merupakan rutin dari library system callclone() .__clone memiliki 4 buah argumen yaitu:

1. fn

fungsi yang akan dieksekusi oleh thread baru

2. arg

pointer ke data yang dibawa olehfn

3. flags

sinyal yang dikirim ke induk ketika anak berakhir dan pembagian sumber daya antara anak daninduk.

4. child_stack

pointer stack untuk proses anak.

clone() mengambil argumenflags danchild_stack yang dimiliki oleh__clone kemudianmenentukan id dari proses anak yang akan mengeksekusifn dengan argumenarg .

328

Page 349: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Pembuatan anak proses dapat dilakukan dengan fungsifork() danvfork() . Implementasifork()

sama seperti system callclone() dengan sighandlerSIGCHLDdi-set, semua bendera clone di-clearyang berarti tidak ada sharing danchild_stack dibuat 0 yang berarti kernel akan membuat stack untukanak saat hendak menulis. Sedangkanvfork() sama sepertifork() dengan tambahan benderaCLONE_VMdanCLONE_VFORKdi-set. Denganvfork() , induk dan anak akan berbagi alamat, dan indukakan di-block hingga anak selesai.

Untuk memulai pembuatan proses baru,clone() akan memanggil fungsido_fork() . Hal yangdilakukan olehdo_fork() antara lain:

• memanggilalloc_task_struct() yang akan menyediakan tempat di memori dengan ukuran 8KBuntuk deskriptor proses dan stack modus kernel.

• memeriksa ketersediaan sumber daya untuk membuat proses baru.

• find_empty_procees() memanggilget_free_taskslot() untuk mencari sebuah slot di arraytask untuk pointer ke deskriptor proses yang baru.

• memanggilcopy_files/fm/sighand/mm() untuk menyalin sumber daya untuk anak, berdasarkannilai flags yang ditentukanclone() .

• copy_thread() akan menginisialisasi stack kernel dari proses anak.

• mendapatkan PID baru untuk anak yang akan diberikan kembali ke induknya ketikado_fork()

selesai.

Beberapa proses sistem hanya berjalan dalam modus kernel di belakang layar. Untuk proses semacam inidapat digunakan thread kernel. Thread kernel hanya akan mengeksekusi fungsi kernel, yaitu fungsi yangbiasanya dipanggil oleh proses normal melalui system calls. Thread kernel juga hanya dieksekusi dalammodus kernel, berbeda dengan proses biasa. Alamat linier yang digunakan oleh thread kernel lebih besardari PAGE_OFFSET proses normal yang dapat berukuran hingga 4GB. Thread kernel dibuat sebagaiberikut:

int kernel_thread(int (*fn) (void *), void *arg, unsigned long flags); flags=CLONE_SIGHAND, CLONE_FILES, etc

8.3.1.3. Penjadualan

Penjadual adalah suatu pekerjaan yang dilakukan untuk mengalokasikan CPU time untuk tasks yangberbeda-beda dalam sistem operasi. Pada umumnya, kita berfikir penjadualan sebagai menjalankan danmenginterupsi suatu proses, untuk linux ada aspek lain yang penting dalam penjadualan: sepertimenjalankan dengan berbagai kernel tasks. Kernel tasks meliputi task yang diminta oleh proses yangsedang dijalankan dan tasks yand dieksekusi internal menyangkut device driver yang berkepentingan.

8.3.1.4. Sinkronisasi Kernel

Cara penjadualan kernel pada operasinya secara mendasar berbeda dengan cara penjadualan suatuproses. Terdapat dua cara agar sebuah permintaan akan eksekusi kernel-mode dapat terjadi. Sebuah

329

Page 350: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

program yang berjalan dapat meminta service sistem operasi, dari system call atau pun secara implisit(untuk contoh:ketika page fault terjadi). Sebagai alternatif, device driver dapat mengirim interupsiperangkat keras yang menyebabkan CPU memulai eksekusi kernel-define handler untuk suatu interupsi.

Problem untuk kernel muncul karena berbagai tasksmungkin mencoba untuk mengakses struktur datainternal yang sama. Jika hanya satu kernel task ditengah pengaksesan struktur data ketika interupsiservice routine dieksekusi, maka service routine tidak dapat mengakses atau merubah data yang samatanpa resiko mendapatkan data yang rusak. Fakta ini berkaitan dengan ide dari critical section (Bagian4.2).

Sehagai hasilnya, sinkronisasi kernel melibatkan lebih banyak dari hanya penjadualan proses saja.sebuah framework dibutuhkan untuk memperbolehkan kernel’s critical sections berjalan tanpadiinterupsi oleh critical section yang lain.

Solusi pertama yang diberikan oleh linux adalah membuat normal kernel code nonpreemptible (Bagian3.2). Biasanya, ketika sebuah timer interrupt diterima oleh kernel, membuat penjadualan proses,kemungkinan besar akan menunda eksekusi proses yang sedang berjalan pada saat itu dan melanjutkanmenjalankan proses yang lain. Biar bagaimana pun, ketika timer interrupt diterima ketika sebuah prosesmengeksekusi kernel-system service routine, penjadualan ulang tidak dilakukan secara mendadak;cukup, kernel need_resched flag terset untuk memberitahu kernel untuk menjalankan penjadualankembali setelah system call selesai dan control dikembalikan ke user mode.

Sepotong kernel code mulai dijalankan, akan terjamin bahwa itu adalah satu-satunya kernel code yangdijalankan sampai salah satu dari aksi dibawah ini muncul:

• interupsi

• page fault

• kernel code memanggil fungsi penjadualan sendiri

Interupsi adalah suatu masalah bila mengandung critical section-nya sendiri. Timer interrupt tidak secaralangsung menyebabkan terjadinya penjadualan ulang suatu proses; hanya meminta suatu jadual untukdilakukan kemudian, jadi kedatangan suatu interupsi tidak mempengaruhi urutan eksekusi darinoninterrupt kernel code. Sekali interrupt serviceselesai, eksekusi akan menjadi lebih simpel untukkembali ke kernel code yang sedang dijalankan ketika interupsi mengambil alih.

Page faults adalah suatu masalah yang potensial; jika sebuah kernel routine mencoba untuk membacaatau menulis ke user memory, akan menyebabkan terjadinya page fault yang membutuhkan I/Odiskuntuk selesai, dan proses yang berjalan akan di tunda sampai I/O selesai. Pada kasus yang hampirsama, jika system call service routine memanggil penjadualan ketika sedang berada di mode kernel,mungkin secara eksplisit dengan membuat direct call pada code penjadualan atau secara implisit denganmemanggil sebuah fungsi untuk menunggu I/O selesai, setelah itu proses akan menunggu danpenjadualan ulang akan muncul. Ketika proses jalan kembali, proses tersebut akan melanjutkan untukmengeksekusi dengan mode kernel, melanjutkan intruksi setelah call (pemanggilan) ke penjadualan.

Kernel code dapat terus berasumsi bahwa ia tidak akan diganggu (pre-empted) oleh proses lainnya dantidak ada tindakan khusus dilakukan untuk melindungi critical section. Yang diperlukan adalah criticalsection tidak mengandung referensi ke user memory atau menunggu I/O selesai.

Teknik kedua yang di pakai Linux untuk critical section yang muncul pada saat interrupt serviceroutines. Alat dasarnya adalah perangkat keras interrupt-control pada processor. Dengan meniadakan

330

Page 351: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

interupsi pada saat critical section, maka kernel menjamin bahwa ia dapat melakukan proses tanpa resikoterjadinya ketidak-cocokan akses dari struktur data yang di share.

Untuk meniadakan interupsi terdapat sebuah pinalti. Pada arsitektur perangkat keras kebanyakan,pengadaan dan peniadaan suatu interupsi adalah sesuatu yang mahal. Pada prakteknya, saat interupsiditiadakan, semua I/O ditunda, dan device yang menunggu untuk dilayani akan menunggu sampaiinterupsi diadakan kembali, sehingga kinerja meningkat. Kernel Linux menggunakan synchronizationarchitecture yang mengizinkan critical section yang panjang dijalankan untuk seluruh durasinya tanpamendapatkan peniadaan interupsi. Kemampuan secara spesial berguna pada networking code: Sebuahinterupsi pada network device driver dapat memberikan sinyal kedatangan dari keseluruhan paketnetwork, dimana akan menghasilkan code yang baik dieksekusi untuk disassemble, route, dan forwardpaket ditengah interrupt service routine.

Linux mengimplementasikan arsitektur ini dengan memisahkan interrupt service routine menjadi duaseksi: the top half dan the bottom half. The top half adalah interupsi yang normal, dan berjalan denganrekursive interupt ditiadakan (interupsi dengan prioritas yang lebih tinggi dapat menginterupsi routine,tetapi interupsi dengan prioritas yang sama atau lebih rendah ditiadakan). The bottom half serviceroutine berjalan dengan semua interupsi diadakan, oleh miniatur penjadualan yang menjamin bahwabottom halves tidak akan menginterupsi dirinya sendiri. The bottom half scheduler dilakukan secaraotomatis pada saat interupt service routine ada.

Pemisahan itu berarti bahwa kegiatan proses yang komplek dan harus selesai diberi tanggapan untuksuatu interupsi dapat diselesaikan oleh kernel tanpa kecemasan tentang diinterupsi oleh interupsi itusendiri. Jika interupsi lain muncul ketika bottom half dieksekusi, maka interupsi dapat meminta kepadabottom half yang sama untuk dieksekusi, tetapi eksekusinya akan dilakukan setelah proses yang sedangberjalan selesai. Setiap eksekusi dari bottom half dapat di interupsi oleh top half tetapi tidak dapatdiinterupsi dengan bottom half yang mirip.

Arsitektur Top-half bottom-half komplit dengan mekanisme untuk meniadakan bottom halver yangdipilih ketika dieksekusi secara normal, foreground kernel code. Kernel dapat meng-codekan criticalsection secara mudah dengan mengunakan sistem ini: penanganan interupsi dapat meng-codekan criticalsection-nya sebagai bottom halves, dan ketika foreground kernel ingin masuk ke critical section, setiapbottom halves ditiadakan untuk mencegah critical section yang lain diinterupsi. Pada akhir dari criticalsection, kernel dapat kembali mengadakan bottom halves dan menjalankan bottom half tasks yang telahdi masukkan kedalam queue oleh top half interrupt service routine pada saat critical section.

8.3.1.5. Penjadualan Proses

Ketika kernel telah mencapai titik penjadualan ulang, entah karena terjadi interupsi penjadualan ulangmau pun karena proses kernel yang sedang berjalan telah diblokir untuk menunggu beberapa signalbangun, harus memutuskan proses selanjutnya yang akan dijalankan. Linux telah memiliki dua algoritmapenjadualan proses yang terpisah satu sama lain. Algoritma yang pertama adalah algoritma time-sharinguntuk penjadualan preemptive yang adil diantara sekian banyak proses. Sedangkan algoritma yang keduadidesain untuk tugas real-time dimana proritas mutlak lebih utama daripada keadilan mendapatkan suatupelayanan.

Bagian dari tiap identitas proses adalah kelas penjadualan, yang akan menentukan algoritma yangdigunakan untuk tiap proses. Kelas penjadualan yang digunakan oleh Linux, terdapat dalam standarperluasan POSIX untuk sistem komputer waktu nyata.

331

Page 352: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Untuk proses time-sharing, Linux menggunakan teknik prioritas, sebuah algoritma yang berdasarkanpada kupon. Tiap proses memiliki sejumlah kupon penjadualan; dimana ketika ada kesempatan untukmenjalankan sebuah tugas, maka proses dengan kupon terbanyaklah yang mendapat giliran. Setiap kaliterjadi interupsi waktu, proses yang sedang berjalan akan kehilangan satu kupon; dan ketika kupon yangdimiliki sudah habis maka proses itu akan ditunda dan proses yang lain akan diberikan kesempatan untukmasuk.

Jika proses yang sedang berjalan tidak meiliki kupon sama sekali, linux akan melakukan operasipemberian kupon, memberikan kupon kepada tiap proses dalam sistem, dengan aturan main:

kupon = kupon / 2 + prioritas

Algoritma ini cenderung untuk menggabungkan dua faktor yang ada: sejarah proses dan prioritas dariproses itu sendiri. Satu setengah dari kupon yang dimiliki sejak operasi pembagian kupon terakhir akantetap dijaga setelah algoritma telah dijalankan, menjaga beberapa sejarah sikap proses. Proses yangberjalan sepanjang waktu akan cenderung untuk menghabiskan kupon yang dimilikinya dengan cepat,tapi proses yang lebih banyak menunggu dapat mengakumulasi kuponnya dari. Sistem pembagian kuponini, akan secara otomatis memberikan proritas yang tinggi ke proses I/O bound atau pun interaktif,dimana respon yang cepat sangat diperlukan.

Kegunaan dari proses pemberian prioritas dalam menghitung kupon baru, membuat prioritas dari suatuproses dapat ditingkatkan. Pekerjaan background batch dapat diberikan prioritas yang rendah; prosestersebut akan secara otomatis menerima kupon yang lebih sedikit dibandingkan dengan pekerjaan yanginteraktif, dan juga akan menerima persentase waktu CPU yang lebih sedikit dibandingan dengan tugasyang sama dengan prioritas yang lebih tinggi. Linux menggunakan sistem prioritas ini untuk menerapkanmekanisme standar pembagian prioritas proses yang lebih baik.

Penjadualan waktu nyata Linux masih tetap lebih sederhana. Linux, menerapkan dua kelas penjadualanwaktu nyata yang dibutuhkan oleh POSIX 1.b: First In First Out dan round-robin. Pada keduanya, tiapproses memiliki prioritas sebagai tambahan kelas penjadualannya. Dalam penjadualan time-sharing,bagaimana pun juga proses dengan prioritas yang berbeda dapat bersaing dengan beberapa pelebaran;dalam penjadualan waktu nyata, si pembuat jadual selalu menjalankan proses dengan prioritas yangtinggi. Diantara proses dengan prioritas yang sama, maka proses yang sudah menunggu lama, akandijalankan. Perbedaan satu - satunya antara penjadualan FIFO dan round-robin adalah proses FIFO akanmelanjutkan prosesnya sampai keluar atau pun diblokir, sedangkan proses round-robin akandi-preemptive-kan setelah beberapa saat dan akan dipindahkan ke akhir antrian, jadi proses round-robindengan prioritas yang sama akan secara otomatis membagi waktu jalan antar mereka sendiri.

Perlu diingat bahwa penjadualan waktu nyata di Linux memiliki sifat yang lunak. Pembuat jadual Linuxmenawarkan jaminan yang tegas mengenai prioritas relatif dari proses waktu nyata, tapi kernel tidakmenjamin seberapa cepat penjadualan proses waktu-nyata akan dijalankan pada saat proses siapdijalankan. Ingat bahwa kode kernel Linux tidak akan pernah bisa dipreemptive oleh kode modepengguna. Apabila terjadi interupsi yang membangunkan proses waktu nyata, sementara kernel siapuntuk mengeksekusi sebuah sistem call sebagai bagian proses lain, proses waktu nyata harus menunggusampai sistem call yang sedang dijalankan selesai atau diblokir.

8.3.1.6. Symmetric Multiprocessing

Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung perangkat keras symmetricmultiprocessor (SMP). Proses mau pun thread yang berbeda dapat dieksekusi secara paralel dengan

332

Page 353: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

processor yang berbeda. Tapi bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasiyang tidak dapat di-preemptive dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satuprocessor yang dapat dieksekusi dengan kode mode kernel pada suatu saat. SMP menggunakan kernelspinlock tunggal untuk menjalankan aturan ini. Spinlock ini tidak memunculkan permasalahan untukpekerjaan yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaanyang melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat mengkhawatirkan.

Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk menciptakan penerapanSMP yang lebih masuk akal, dengan membagi kernel spinlock tunggal menjadi banyak kunci yangmasing-masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Denganmenggunakan teknik ini, pengembangan kernel yang terbaru mengizinkan banyak processor untukdieksekusi oleh kode mode kernel secara bersamaan.

8.3.2. Manajemen Memori

8.3.2.1. Managemen Memori Fisik

Bagian ini menjelaskan bagaimana linux menangani memori dalam sistem. Memori managemenmerupakan salah satu bagian terpenting dalam sistem operasi. Karena adanya keterbatasan memori,diperlukan suatu strategi dalam menangani masalah ini. Jalan keluarnya adalah dengan menggunakanmemori virtual. Dengan memori virtual, memori tampak lebih besar daripada ukuran yang sebenarnya.

Dengan memori virtual kita dapat:

• Ruang alamat yang besar

Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya. Memorivirtual bisa beberapa kali lebih besar daripada memori fisiknya.

• Pembagian memori fisik yang adil

Managemen memori membuat pembagian yang adil dalam pengalokasian memori antaraproses-proses.

• Perlindungan

Memori managemen menjamin setiap proses dalam sistem terlindung dari proses-proses lainnya.Dengan demikian, program yang crash tidak akan mempengaruhi proses lain dalam sistem tersebut.

• Penggunaan memori virtual bersama

Memori virtual mengizinkan dua buah proses berbagi memori diantara keduanya, contohnya dalamshared library. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua program yangberbeda.

333

Page 354: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.3.2.2. Memori Virtual

Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang disebut page. Page ini memilikiukuran yang sama besar. Tiap page ini punya nomor yang unik, yaitu Page Frame Number (PFN). Untuksetiap instruksi dalam program, CPU melakukan mapping dari alamat virtual ke memori fisik yangsebenarnya.

Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU menggunakan tabel pageuntuk proses x dan proses y. Ini menunjukkan virtial PFN 0 dari proses x dimap ke memori fisik PFN 1.Setiap anggota tabel page mengandung informasi berikut ini:

• Virtual PFN

• PFN fisik

• informasi akses page dari page tersebut

Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus menangani alamat virtualPFN dan offsetnya di virtual page. CPU mencari tabel page proses dan mancari anggota yang sesuaidegan virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil PFN fisik danmengalikannya dengan besar page untuk mendapat alamat basis page tersebut di dalam memori fisik.Terakhir, CPU menambahkan offset ke instruksi atau data yang dibutuhkan. Dengan cara ini, memorivirtual dapat dimap ke page fisik dengan urutan yang teracak.

8.3.2.3. Demand Paging

Cara untuk menghemat memori fisik adalah dengan hanya meload page virtual yang sedang digunakanoleh program yang sedang dieksekusi. Tehnik dimana hanya meload page virtual ke memori hanyaketika program dijalankan disebut demand paging.

Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori, CPU tidak dapatmenemukan anggota tabel page. Contohnya, dalam gambar, tidak ada anggota tabel page untuk proses xuntuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual PFN 2, CPU tidak dapatmenterjemahkan alamat ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk menanganimasalah ini. CPU menginformasikan kepada sistem operasi bahwa page fault telah terjadi, dan sistemoperasi membuat proses menunggu selama sistem operasi menagani masalah ini.

CPU harus membawa page yang benar ke memori dari image di disk. Akses disk membutuhkan waktuyang sangat lama dan proses harus menunggu sampai page selesai diambil. Jika ada proses lain yangdapat dijalankan, maka sistem operai akan memilihnya untuk kemudian dijalankan. Page yang diambilkemudian dituliskan di dalam page fisik yang masih kosong dan anggota dari virtual PFN ditambahkandalam tabel page proses. Proses kemudian dimulai lagi pada tempat dimana page fault terjadi. Saat initerjadi pengaksesan memori virtual, CPU membuat penerjemahan dan kemudian proses dijalankankembali.

334

Page 355: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Demand paging terjadi saat sistem sedang sibuk atau saat image pertama kali diload ke memori.Mekanisme ini berarti sebuah proses dapat mengeksekusi image dimana hanya sebagian dari imagetersebut terdapat dalam memori fisik.

8.3.2.4. Swaping

Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah page ke memori, sistem operasiharus memutuskan apa yang harus dilakukan. Sistem operasi harus adil dalam mambagi page fisik dalamsistem diantara proses yang ada, bisa juga sistem operasi menghapus satu atau lebih page dari memoriuntuk membuat ruang untuk page baru yang dibawa ke memori. Cara page virtual dipilih dari memorifisik berpengaruh pada efisiensi sistem.

Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan dihapus dari sistem. Iniberarti setiap page memiliki usia sesuai dengan berapa sering page itu diakses. Semakin sering sebuahpage diakses, semakin muda page tersebut. Page yang tua adalah kandidat untuk diswap.

Pengaksesan Memori Virtual BersamaMemori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori menggunakantabel page. Proses yang akan berbagi memori virtual yang sama, page fisik yang sama direference olehbanyak proses. Tabel page untuk setiap proses mengandung anggota page table yang mempunyai PFNfisik yang sama.

EfisiensiDesainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping membuatprosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapacache dalam managemen memori di linux:

• Page Cache

Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, pagedicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi padasaat yang lain, page ini dapat segera diambil dari page cache.

• Buffer Cache

Page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver danlain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan pagefisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.

• Swap Cache

Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak mengalamiperubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu

335

Page 356: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapatmenghemat akses disk yang tidak perlu.

Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota tabelpage. Dalam hal ini, CPU tidak secara langsung membaca tabel page, tetap mencache terjemahan pageyang dibutuhkan.

8.4. Sistem Berkas dan I/O Linux

8.4.1. Sistem Berkas Linux

8.4.1.1. Sistem Berkas Virtual

Objek dasar dalam layer-layer virtual file system

1. File

File adalah sesuatu yang dapat dibaca dan ditulis. File ditempatkan pada memori. Penempatan padamemori tersebut sesuai dengan konsep file deskriptor yang dimiliki unix.

2. Inode

Inode merepresentasikan objek dasar dalam file sistem. Inode bisa saja file biasa, direktori, simboliklink dan lain sebagainya. Virtual file sistem tidak memiliki perbedaan yang jelas di antara objek,tetapi mengacu kepada implementasi file sistem yang menyediakan perilaku yang sesuai. Kerneltingkat tinggi menangani objek yang berbeda secara tidak sama. File dan inode hampir miripdiantara keduanya. Tetapi terdapat perbedaan yang penting diantara keduanya. Ada sesuatu yangmemiliki inode tetapi tidak memiliki file, contohnya adalah simbolik link. Ada juga file yang tidakmemiliki inode seperti pipes dan socket.

3. File sistem

File system adalah kumpulan dari inode-inode dengan satu inode pembeda yaitu root. Inode lainnyadiakses mulai dari root inode dan pencarian nama file untuk menuju ke inode lainnya. File sistemmempunyai beberapa karakteristik yang mencakup seluruh inode dalam file sistem. Salah satu yangterpenting adalah blocksize.

4. Nama inode

Semua inode dalam file sistem diakses melalui namanya. Walau pun pencarian nama inode bisamenjadi terlalu berat untuk beberapa sistem, virtual file sistem pada linux tetap memantau cache dan

336

Page 357: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

nama inode yang baru saja terpakai agar kinerja meningkat. Cache terdapat di memori sebagai tree,ini berarti jika sembarang inode dari file terdapat di dalam cache, maka parent dari inode tersebutjuga terdapat di dalam cache. Virtual file system layer menangani semua pengaturan nama path darifile dan mengubahnya menjadi masukan di dalam cache sebelum mengizinkan file sistem untukmengaksesnya. Ada pengecualian pada target dari simbolik link, akan diakses file sistem secaralangsung. File sistem diharapkan untuk menginterpretasikannya.

8.4.1.2. Operasi-operasi Dalam Inode

Linux menyimpan cache dari inode aktif mau pun dari inode yang telah terakses sebelumnya. Ada 2 pathdimana inode ini dapat diakses. Yang pertama telah disebutkan sebelumnya, setiap entri dalam cachemenunjuk pada suatu inode dan menjaga inode tetap dalam cache. Yang kedua melalui inode hash table.Setiap inode mempunyai alamat 8 bit sesuai dengan alamat dari file sistem superblok dan nomor inode.Inode dengan nilai hash yang sama kemudian dirangkai di doubly linked list. Perubahan pada cachemelibatkan penambahan dan penghapusan entri-entri dari cache itu sendiri. Entri-entri yang tidakdibutuhkan lagi akan di unhash sehingga tidak akan tampak dalam pencarian berikutnya. Operasidiperkirakan akan mengubah struktur cache harus dikunci selama melakukan perubahan. Unhash tidakmemerlukan semaphore karena ini bisa dilakukan secara atomik dalam kernel lock. Banyak operasi filememerlukan 2 langkah proses. Yang pertama adalah melakukan pencarian nama di dalam direktori.Langkah kedua adalah melakukan operasi pada file yang telah ditemukan. Untuk menjamin tidakterdapatnya proses yang tidak kompatibel diantara kedua proses itu, setelah proses kedua, virtual filesistem protokol harus memeriksa bahwa parent entry tetap menjadi parent dari entri childnya. Yangmenarik dari cache locking adalah proses rename, karena mengubah 2 entri dalam sekali operasi.

8.4.1.3. Sistem Berkas Linux

1. Sistem Berkas EXT2

EXT2 adalah file sistem yang ampuh di linux. EXT2 juga merupakan salah satu file sistem yangpaling ampuh dan menjadi dasar dari segala distribusi linux. Pada EXT2 file sistem, file datadisimpan sebagai data blok. Data blok ini mempunyai panjang yang sama dan meski punpanjangnya bervariasi diantara EXT2 file sistem, besar blok tersebut ditentukan pada saat file sistemdibuat dengan perintah mk2fs. Jika besar blok adalah 1024 bytes, maka file dengan besar 1025 bytesakan memakai 2 blok. Ini berarti kita membuang setengah blok per file. EXT2 mendefinisikantopologi file sistem dengan memberikan arti bahwa setiap file pada sistem diasosiasiakan denganstruktur data inode. Sebuah inode menunjukkan blok mana dalam suatu file tentang hak akses setiapfile, waktu modifikasi file, dan tipe file. Setiap file dalam EXT2 file sistem terdiri dari inode tunggaldan setiap inode mempunyai nomor identifikasi yang unik. Inode-inode file sistem disimpan dalamtabel inode. Direktori dalam EXT2 file sistem adalah file khusus yang mengandung pointer ke inodemasing-masing isi direktori tersebut.

Inode adalah kerangka dasar yang membangun EXT2. Inode dari setiap kumpulan blok disimpandalam tabel inode bersama dengan peta bit yang menyebabkan sistem dapat mengetahui inode manayang telah teralokasi dana inode mana yang belum. MODE: mengandung dia informasi, inode apadan izin akses yang dimiliki user. OWNER INFO: user atau grop yang memiliki file atau direktori

337

Page 358: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

SIZE: besar file dalam bytes TIMESTAMPS: kapan waktu pembuatan inode dan waktu terakhirdimodifikasi. DATABLOKS: pointer ke blok yang mengandung data. EXT2 inode juga dapatmenunjuk pada device khusus, yang mana device khusus ini bukan merupakan file, tatapi dapatmenangani program sehingga program dapat mengakses ke device. Semua file device di dalamdrektori /dev dapat membantu program mengakses device.

2. Sistem Berkas EXT3

EXT3 adalah peningkatan dari EXT2 file sistem. Peningkatan ini memiliki beberapa keuntungan,diantaranya:

Setelah kegagalan sumber daya, "unclean shutdown", atau kerusakan sistem, EXT2 file sistem harusmelalui proses pengecekan dengan program e2fsck. Proses ini dapat membuang waktu sehinggaproses booting menjadi sangat lama, khususnya untuk disk besar yang mengandung banyak sekalidata. Dalam proses ini, semua data tidak dapat diakses. Jurnal yang disediakan oleh EXT3menyebabkan tidak perlu lagi dilakukan pengecekan data setelah kegagalan sistem. EXT3 hanyadicek bila ada kerusakan hardware seperti kerusakan hard disk, tetapi kejadian ini sangat jarang.Waktu yang diperlukan EXT3 file sistem setelah terjadi "unclean shutdown" tidak tergantung dariukuran file sistem atau banyaknya file, tetapi tergantung dari besarnya jurnal yang digunakan untukmenjaga konsistensi. Besar jurnal default memerlukan waktu kira-kira sedetik untuk pulih,tergantung kecepatan hardware.

Integritas data. EXT3 menjamin adanya integritas data setelah terjadi kerusakan atau "uncleanshutdown". EXT3 memungkinkan kita memilih jenis dan tipe proteksi dari data.

Kecepatan. Daripada menulis data lebih dari sekali, EXT3 mempunyai throughput yang lebih besardaripada EXT2 karena EXT3 memaksimalkan pergerakan head hard disk. Kita bisa memilih tigajurnal mode untuk memaksimalkan kecepatan, tetapi integritas data tidak terjamin.

Mudah dilakukan migrasi. Kita dapat berpindah dari EXT2 ke sistem EXT3 tanpa melakukan formatulang.

3. Sistem Berkas Reiser

Reiser file sistem memiliki jurnal yang cepat. Ciri-cirinya mirip EXT3 file sistem. Reiser file sistemdibuat berdasarkan balance tree yang cepat. Balance tree unggul dalam hal kinerja, dengan algoritmayang lebih rumit tentunya. Reiser file sistem lebih efisien dalam pemenfaatan ruang disk. Jika kitamenulis file 100 bytes, hanya ditempatkan dalam satu blok. File sistem lain menempatkannya dalam100 blok. Reiser file sistem tidak memiliki pengalokasian yang tetap untuk inode. Resier file sistemdapat menghemat disk sampai dengan 6 persen.

4. Sistem Berkas X

X file sistem juga merupakan jurnaling file sistem. X file sistem dibuat oleh SGI dan digunakan disistem operasi SGI IRIX. X file sistem juga tersedia untuk linux dibawah lisensi GPL. X file sistemmengunakan B-tree untuk menangani file yang sangat banyak. X file sistem digunakan padaserver-server besar.

5. Sistem Berkas Proc

338

Page 359: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Sistem Berkas Proc Proc File Sistem menunjukkan bagaimana hebatnya virtual file sistem yang adapada linux. Proc file sistem sebenarnya tidak ada secara fisik, baik subdirektorinya, mau pun file-fileyang ada di dalamnya. Proc file sistem diregister oleh linux virtual file sistem, jika virtual file sistemmemanggilnya dan meminta inode-inode dan file-file, proc file sistem membuat file tersebut denganinformasi yang ada di dalam kernel. Contohnya, /proc/devices milik kernel dibuat dari data strukturkernel yang menjelaskan device tersebut.

6. Sistem Berkas Web (Web File System)

Sistem Berkas Web (WFS) adalah sistem berkas Linux baru yang menyediakan sebuah sistemberkas seperti antarmuka untuk World Wide Web. Sistem ini dibangun sebagai modul kernel untukLinux Kernel 2.2.1, dan meng-utilisasi proses level user (web daemon) untuk melayani permintaanpengambilan dokumen HTTP. Sistem berkas ini menyediakan fasilitas caching untuk dokumenremote, dan dapat memproses permintaan-permintaan terkenal multiple secara konkuren. Ketikasuatu dokumen remote diambil, isi yang berada dalam hyperlink dalam dokumen tersebut diekstrakdan dipetakan kedalam sistem berkas local. Informasi ini direktori remote ini dibuat untuk setiapdirektori yang diatur oleh WFS dalam sebuah file khusus. Utility lsw digunakan untuk daftar danmengatur ini direktori remote. Partisi yang diatur WFS bersifat read-only bagi client WFS. Namunclient dapat menyegarkan entri dari partisi WFS dengan menggunakan utility khusus rwm. Suatustudi unjuk kerja memperlihatkan bahwa WFS lebih kurang 30% lebih lambat daripada AFS untukpenelusuran akses berkas yang berisi 100% cache miss. Unjuk kerja yang lebih rendah inikemungkinan karena antara lain jumlah proses yang lebih besar dilakukan dalam proses user dalamWFS, dan karena penggunaan general HTTP library untuk pengambilan dokumen.

7. Sistem Berkas Transparent Cryptographic (TCFS)

TCFS adalah sebuah sistem berkas terdistribusi. Sistem ini mengizinkan akses berkas sensitif yangdisimpan dalam sebuah server remote dengan cara yang aman. Sistem ini mengatasi eavesdroppingdan data tampering baik pada server maupun pada jaringan dengan menggunakan enkripsi danmessage digest. Aplikasi mengakses data pada sistem berkas TCFS ini menggunakan system callregular untuk mendapatkan transparency yang lengkap bagi pengguna.

8. Sistem Berkas Steganographic

Sistem Berkas Cryptographic menyediakan sedikit perlindungan terhadap instrumen-instrumen legalataupun ilegal yang memaksa pemilik data untuk melepaskan kunci deskripsinya demi data yangdisimpan saat hadirnya data terenkripsi dalam sebuah komputer yang terinfeksi. Sistem BerkasCryptographic dapat diperluas untuk menyediakan perlindungan tambahan untuk scenario di atasdan telah diperluas sistem berkas Linux (ext2fs) dengan sebuah fungsi enkripsi yangplausible-deniability. Walaupun nyata bahwa komputer kita mempunyai software enkripsi hardiskyang sudah terinstal dan mungkin berisi beberapa data terenkripsi, sebiah inspector tetap akan dapatuntuk menentukan apakah kita memberikan kunci akses kepada semua level keamanan atau terbatas.Implementasi ini disebut sistem berkas Steganographic.

339

Page 360: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.4.1.4. Pembagian Sistem Berkas Secara Ortogonal

Shareable dan Unshareable

1. Shareable. Isinya dapat dishare (digunakan bersama) dengan sistem lain, gunanya untuk menghemattempat.

2. Unshareable. Isinya tidak dapat dishare(digunakan bersama) dengan sistem lain, biasanya untukalasan keamanan.

Variabel dan Statik

1. Variabel. Isinya sering berubah-ubah.

2. Statik. Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah jika ada campur tangansistem admin.

8.4.2. I/O LinuxSalah satu tujuan OS adalah menyembunyikan kerumitan device hardware dari sistem penggunanya.Contohnya, Sistem Berkas Virtual menyamakan tampilan sistem berkas yang dimount tanpamemperdulikan devices fisik yang berada di bawahnya. Bab ini akan menjelaskan bagaimana kernelLinux mengatur device fisik di sistem.

Salah satu fitur yang mendasar adalah kernel mengabstraksi penanganan device. Semua device hardwareterlihat seperti berkas pada umumnya: mereka dapat dibuka, ditutup, dibaca, dan ditulis menggunakancalls sistem yang sama dan standar untuk memanipulasi berkas. Setiap device di sistemdirepresentasikan oleh sebuah file khusus device, contohnya disk IDE yang pertama di sistemdirepresentasikan dengan /dev/hda. Devices blok (disk) dan karakter dibuat dengan perintah mknod danuntuk menjelaskan device tersebut digunakan nomor devices besar dan kecil. Devices jaringan jugadirepresentasikan dengan berkas khusus device, tapi berkas ini dibuat oleh Linux setelah Linuxmenemukan dan menginisialisasi pengontrol-pengontrol jaringan di sistem. Semua device yang dikontrololeh driver device yang sama memiliki nomor device besar yang umum. Nomor devices kecil digunakanuntuk membedakan antara device-device yang berbeda dan pengontrol-pengontrol mereka, contohnyasetiap partisi di disk IDE utama punya sebuah nomor device kecil yang berbeda. Jadi, /dev/hda2, yangmerupakan partisi kedua dari disk IDE utama, punya nomor besar 3 dan nomor kecil yaitu 2. Linuxmemetakan berkas khusus device yang diteruskan ke system call (katakanlah melakukan mount kesistem berkas device blok) pada driver si device dengan menggunakan nomor device besar dan sejumlahtabel sistem, contohnya tabel device karakter, chrdevs.

Linux membagi devices ke tiga kelas: devices karakter, devices blok dan devices jaringan

Device karakter, device paling sederhana dari Linux, diakses sebagai berkas. Aplikasi menggunakansystem calls standar untuk membukanya, membacanya dan menulisnya dan menutupnya persis seolahdevices adalah berkas. Memang benar, meski pun devices ini merupakan modem yang sedang digunakanoleh PPP daemon untuk menghubungkan sistem Linux ke jaringan. Saat sebuah device karakterdiinisialisasi, driver devicenya mendaftarkan sang device pada kernel Linux dengan menambahkansebuah entry ke vektor chrdevs dari struk data device_struct. Pengenal utama devicenya digunakansebagai indeks ke vektor ini. Pengenal utama untuk suatu device tidak pernah berubah.

340

Page 361: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Setiap entry di vektor chrdevs, sebuah struk data device_struct, mengandung dua elemen: sebuahpenunjuk nama dari driver devices yang terdaftar dan sebuah penunjuk ke operasi-operasi berkas sepertibuka, baca, tulis, dan tutup. Isi dari /proc/devices untuk devices karakter diambil dari vektor chrdevs.

Saat sebuah berkas khusus karakter yang merepresentasikan sebuah devices karakter (contohnya/dev/cua0) dibuka, kernelnya harus mengatur beberapa hal sehingga routine operasi berkas yang benardari driver devices karakter akan terpanggil.

Seperti sebuah berkas atau direktori pada umumnya, setiap berkas khusus device direpresentasikandengan sebuah inode VFS. Inode VFS untuk sebuah berkas khusus karakter tersebut, sebenarnya untuksemua berkas yang berada dibawahnya, contohnya EXT2. Hal ini terlihat dari informasi di berkas yangsebenarnya ketika nama berkas khusus device dilihat.

Setiap inode VFS memiliki keterkaitan dengan seperangkat operasi berkas dan operasi-operasi iniberbeda tergantung pada objek sistem berkas yang direpresentasikan oleh inode tersebut. Kapan punsebuah VFS yang merepsentasikan berkas khusus karakter dibuat, operasi-operasi berkasnya diset keoperasi device karakter default.

VFS inode memiliki hanya satu operasi berkas, yaitu operasi membuka berkas. Saat berkas khususkarakter dibuka oleh sebuah aplikasi, operasi buka berkas yang umum atau generik menggunakanpengenal utama dari device tersebut. Pengenal ini digunakan sebagai index ke vektor chrdevs untukmemperoleh blok operasi berkas untuk device tertentu ini. Ia juga membangun struk data berkas yangmenjelaskan berkas khusus karakter ini, yang membuat penunjuk operasi berkas menunjuk ke driverdevice itu. Setelah itu semua aplikasi dari operasi-operasi berkas aplikasi akan dipetakan untukmemanggil perangkat devices karakter dari operasi berkas itu.

Device Blok. Device ini pun diakses seperti berkas. Mekanisme untuk menyediakan perangkat operasiberkas yang benar bagi berkas khusus blok yang terbuka sama seperti devices karakter. Linuxmemelihara operasi dari perangkat device blok yang terdaftar sebagai vektor blkdevs. Vektor ini, sepertihalnya vektor chrdevs, diindeks dengan menggunakan nomor device besar dari sang device. Entrynyajuga merupakan struk data device_struct. Tidak seperti devices karakter, ada sejumlah kelas yangdimiliki device blok. Device-device SCSI adalah salah satu kelasnya dan device IDE adalah kelaslainnya. Kelaslah yang mendaftarkan dirinya sendiri pada kernel Linux dan menyediakan operasi berkaskepada kernel. Driver-driver device untuk sebuah kelas device blok menyediakan interface khusus kelaskepada kelas tersebut. Jadi, contohnya, sebuah driver device SCSI harus menyediakan interface untuksubsistem SCSI agar dapat menyediakan operasi berkas bagi devices ini ke kernel.

Setiap driver device blok harus menyediakan sebuah interface ke cache buffernya, demikian pulainterface operasi umum berkas. Setiap driver device blok mengisi entrynya di vektor blk_dev dari strukdata blk_dev_struct. Indeksnya ke vektor ini, lagi-lagi, nomor utama devicenya. Struk datablk_dev_struct mengandung alamat routine permintaan dan sebuah penunjuk ke sekumpulan struk datarequest,yang masing-masingnya merepresentasikan sebuah request dari cache buffernya untuk driveruntuk membaca atau menulis atau menulis satu blok data.

Setiap kali cache buffer ingin membaca dari, atau pun menuliskan satu blok data ke device terdaftar, iamenambahkan struk data request kedalam blk_dev_struct nya. Gambar di atas ini menunjukkan bahwasetiap request memiliki pointer (penunjuk) ke satu atau lebih struk data buffer_head. Masing-masingnyamerupakan suatu request untuk membaca atau menulis sebuah blok data. Struk buffer_head tersebutdikunci (oleh cache buffer) dan mungkin ada suatu proses yang menunggu buffer ini selesai di operasiblok tersebut. Setiap struk request dialokasikan dari suatu daftar yang statik, yaitu daftar all_request. Jikaproses tersebut sedang dimasukkan sebuah ke list request yang kosong, fungsi request dari drivernyaakan dipanggil agar memulai proses antrian request. Jika tidak driver tersebut hanya akan memproses

341

Page 362: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

setiap request di daftar request.

Sekali driver device telah menyelesaikan sebuah request, ia harus membuang setiap stuk buffer_requestdari struk requestnya, kemudian mencapnya up to date dan membuka kuncinya. Pembukaan kuncibuffer_head akan membangunkan proses apa pun yang tidur akibat menunggu operasi blok selesai.Contoh dari kasus ini misalnya dimana sebuah nama berkas sedang ditangani dan sistem berkas EXT2harus membaca blok data yang mengandung entry direktori EXT2 berikutnya dari device blok yangmenyimpan sistem berkas tersebut. Proses ini tidur di buffer_head yang akan mengandung entridirektorinya sampai driver devicenya membangunkannya. Struk data request tersebut ditandai bebassehingga ia dapat digunakan di request blok lainnya.

Device jaringan merupakan sebuah entity yang mengirimkan dan menerima paket-paket data. Biasanyaia merupakan device fisik seperti kartu ethernet. Beberapa devices jaringan bagaimana pun hanyalahsoftware, seperti device loopback yang digunakan untuk mengirimkan data ke Anda. Setiap devicedirepresentasikan dengan struk data device. Driver device jaringan mendaftarkan device-device yang iakontrol pada Linux selama inisialisasi jaringan yaitu saat kernel melakukan booting. Struk data devicetersebut berisi informasi mengenai device dan alamat fungsi-fungsi yang memungkinkanbermacam-macam protokol jaringan menggunakan layanan dari device tersebut. Fungsi-fungsi inikebanyakan terkait dengan mentransmisikan data dengan menggunakan device jaringan. Device tersebutmenggunakan mekanisme pendukung jaringan standar untuk melewatkan data yang diterima sampai kelapisan protokol yang semestinya. Semua data jaringan atau paket yang ditransmisikan dan diterima,direpresentasikan dengan struk-struk data sk_buff. Struk-struk data yang bersifat fleksibel inimemungkinkan header-header protokol jaringan menjadi mudah ditambahkan dan dibuang. Bagian inihanya memfokuskan pada struk data device serta bagaimana jaringan ditemukan dan diinsialisasi.

8.5. RangkumanArti bebas yang salah, telah menimbulkan persepsi masyarakat bahwa perangkat lunak bebas merupakanperangkat lunak yang gratis. Perangkat lunak bebas ialah perihal kebebasan, bukan harga. Konsepkebebasan yang dapat diambil dari kata bebas pada perangkat lunak bebas adalah seperti kebebasanberbicara bukan seperti bir gratis. Maksud dari bebas seperti kebebasan berbicara adalah kebebasanuntuk menggunakan, menyalin, menyebarluaskan, mempelajari, mengubah, dan meningkatkan kinerjaperangkat lunak. Suatu perangkat lunak dapat dimasukkan dalam kategori perangkat lunak bebas bilasetiap orang memiliki kebebasan tersebut. Hal ini berarti, setiap pengguna perangkat lunak bebas dapatmeminjamkan perangkat lunak yang dimilikinya kepada orang lain untuk dipergunakan tanpa perlumelanggar hukum dan disebut pembajak. Kebebasan yang diberikan perangkat lunak bebas dijamin olehcopyleft, suatu cara yang dijamin oleh hukum untuk melindungi kebebasan para pengguna perangkatlunak bebas. Dengan adanya copyleft maka suatu perangkat lunak bebas beserta hasil perubahan darikode sumbernya akan selalu menjadi perangkat lunak bebas. Kebebasan yang diberikan melaluiperlindungan copyleft inilah yang membuat suatu program dapat menjadi perangkat lunak bebas.Keuntungan yang diperoleh dari penggunaan perangkat lunak bebas adalah karena serbaguna dan efektifdalam keanekaragaman jenis aplikasi. Dengan pemberian source code-nya, perangkat lunak bebas dapatdisesuaikan secara khusus untuk kebutuhan pemakai. Sesuatu yang tidak mudah untuk terselesaikandengan perangkat lunak berpemilik Selain itu, perangkat lunak bebas didukung oleh milis-milispengguna yang dapat menjawab pertanyaan yang timbul karena permasalahan pada penggunaanperangkat lunak bebas.

342

Page 363: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

Linux adalah sebuah sistem operasi yang sangat mirip dengan sistem-sistem UNIX, karena memangtujuan utama desain dari proyek Linux adalah UNIX compatible. Sejarah Linux dimulai pada tahun1991, ketika mahasiswa Universitas Helsinki, Finlandia bernama Linus Benedict Torvalds menulisLinux, sebuah kernel untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU intel yangcocok untuk PC. Dalam rancangan keseluruhan, Linux menyerupai implementasi UNIX nonmicrokernelyang lain. Ia adalah sistem yang multiuser, multitasking dengan seperangkat lengkap alat-alat yangcompatible dengan UNIX. Sistem berkas Linux mengikuti semantik tradisional UNIX, dan modeljaringan standar UNIX diimplementasikan secara keseluruhan. Ciri internal desain Linux telahdipengaruhi oleh sejarah perkembangan sistem operasi ini.

Setiap aplikasi yang dijalankan di linux mempunyai pengenal yang disebut sebagai process identificationnumber (PID). PID disimpan dalam 32 bit dengan angka berkisar dari 0-32767 untuk menjaminkompatibilitas dengan unix. Dari nomor PID inilah linux dapat mengawasi dan mengatur proses-prosesyang terjadi didalam system. Proses yang dijalankan ataupun yang baru dibuat mempunyai struktur datayang disimpan di task_struct. Linux mengatur semua proses di dalam sistem melalui pemeriksaan danperubahan terhadap setiap struktur data task_struct yang dimiliki setiap proses. Sebuah daftar pointer kesemua struktur data task_struct disimpan dalam task vector. Jumlah maksimum proses dalam sistemdibatasi oleh ukuran dari task vector. Linux umumnya memiliki task vector dengan ukuran 512 entries.Saat proses dibuat, task_struct baru dialokasikan dari memori sistem dan ditambahkan ke task vector.Linux juga mendukung proses secara real time. Proses semacam ini harus bereaksi sangat cepat terhadapevent eksternal dan diperlakukan berbeda dari proses biasa lainnya oleh penjadwal.

Objek-objek yang terdapat di sistem berkas linux antara lain file, inode, file sistem dan nama inode.Sedangkan macam-macam sistem berkas linux antar lain : ext2fs, ext3fs, reiser, x, proc dan tigatambahan : sistem berkas web, sistem berkas transparent cryptographic dan sistem berkas steganographic

Salah satu tujuan OS adalah menyembunyikan kerumitan device hardware dari sistem penggunanya.Contohnya, Sistem Berkas Virtual menyamakan tampilan sistem berkas yang dimount tanpamemperdulikan devices fisik yang berada di bawahnya. Bab ini akan menjelaskan bagaimana kernelLinux mengatur device fisik di sistem.

Salah satu fitur yang mendasar adalah kernel mengabstraksi penanganan device. Semua device hardwareterlihat seperti berkas pada umumnya: mereka dapat dibuka, ditutup, dibaca, dan ditulis menggunakancalls sistem yang sama dan standar untuk memanipulasi berkas. Setiap device di sistemdirepresentasikan oleh sebuah file khusus device, contohnya disk IDE yang pertama di sistemdirepresentasikan dengan /dev/hda. Devices blok (disk) dan karakter dibuat dengan perintah mknod danuntuk menjelaskan device tersebut digunakan nomor devices besar dan kecil. Devices jaringan jugadirepresentasikan dengan berkas khusus device, tapi berkas ini dibuat oleh Linux setelah Linuxmenemukan dan menginisialisasi pengontrol-pengontrol jaringan di sistem. Semua device yang dikontrololeh driver device yang sama memiliki nomor device besar yang umum. Nomor devices kecil digunakanuntuk membedakan antara device-device yang berbeda dan pengontrol-pengontrol mereka, contohnyasetiap partisi di disk IDE utama punya sebuah nomor device kecil yang berbeda. Jadi, /dev/hda2, yangmerupakan partisi kedua dari disk IDE utama, punya nomor besar 3 dan nomor kecil yaitu 2. Linuxmemetakan berkas khusus device yang diteruskan ke system call (katakanlah melakukan mount kesistem berkas device blok) pada driver si device dengan menggunakan nomor device besar dan sejumlahtabel sistem, contohnya tabel device karakter, chrdevs.

343

Page 364: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Bab 8. Studi Kasus: GNU/Linux

8.6. Latihan

1. Jelaskan perbedaan antara proses dan thread di Linux!

2. Apa keuntungan reiser file sistem dibandingkan dengan file sistem lain?

3. Apakah perbedaan shareable dan unshareable di dalam file sistem?

4. Mengapa file sistem ext3 membutuhkan waktu recovery yang lebih sedikit daripada file sistem ext2setelah terjadi "unclean shutdown"?

5. Jelaskan pengertian proc file sistem!

6. Jelaskan pengertian page!

7. Apakah perbedaan linking statis dan linking dinamis?

8. Sebutkan empat keuntungan menguunakan memori virtual!

9. Sebutkan beberapa cache dalam manajemen memori di linux!

10.Jelaskan pengertian dari demand paging!

11.Siapakah penemu Linux?

12.Jabarkan fitur dan keunggulan/kekurangan dari kernel Linux v0.01, v1.0, v2.0.

13.Jelaskan perbedaan antara kernel Linux dan sistem Linux.

14.Sebutkan tiga komponen utama sistem Linux. Jelaskan.

15.Sebutkan dua distribusi Linux dari Jerman.

16.Apakah kelebihan dan kekurangan protokol IPX, TCP/IP, dan UDP?

17.Bagaimanakah cara kerja protokol TCP/IP?

8.7. RujukanAbraham Silberschatz, Peter Galvin dan Greg Gagne: Operating System Concepts -- Sixth Editon, JohnWiley&Son, 2003

William Stallings: Operating Systems, 4th Edition, Prentice Hall, 2001

Andrew S. Tanenbaum: Modern Operating Systems, 2nd Edition, Prentice Hall, 2001

344

Page 365: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation LicenseVersion 1.1, March 2000

Copyright © 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAEveryone is permitted to copy and distribute verbatim copies of this license document, but changing it is notallowed.

A.1. PREAMBLEThe purpose of this License is to make a manual, textbook, or other written document "free" in the senseof freedom: to assure everyone the effective freedom to copy and redistribute it, with or withoutmodifying it, either commercially or noncommercially. Secondarily, this License preserves for the authorand publisher a way to get credit for their work, while not being considered responsible for modificationsmade by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselvesbe free in the same sense. It complements the GNU General Public License, which is a copyleft licensedesigned for free software.

We have designed this License in order to use it for manuals for free software, because free softwareneeds free documentation: a free program should come with manuals providing the same freedoms thatthe software does. But this License is not limited to software manuals; it can be used for any textualwork, regardless of subject matter or whether it is published as a printed book. We recommend thisLicense principally for works whose purpose is instruction or reference.

A.2. APPLICABILITY AND DEFINITIONSThis License applies to any manual or other work that contains a notice placed by the copyright holdersaying it can be distributed under the terms of this License. The "Document", below, refers to any suchmanual or work. Any member of the public is a licensee, and is addressed as "you".

A "Modified Version" of the Document means any work containing the Document or a portion of it,either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that dealsexclusively with the relationship of the publishers or authors of the Document to the Document’s overallsubject (or to related matters) and contains nothing that could fall directly within that overall subject.(For example, if the Document is in part a textbook of mathematics, a Secondary Section may notexplain any mathematics.) The relationship could be a matter of historical connection with the subject orwith related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those ofInvariant Sections, in the notice that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-CoverTexts, in the notice that says that the Document is released under this License.

345

Page 366: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation License

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whosespecification is available to the general public, whose contents can be viewed and edited directly andstraightforwardly with generic text editors or (for images composed of pixels) generic paint programs or(for drawings) some widely available drawing editor, and that is suitable for input to text formatters orfor automatic translation to a variety of formats suitable for input to text formatters. A copy made in anotherwise Transparent file format whose markup has been designed to thwart or discourage subsequentmodification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo inputformat, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conformingsimple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietaryformats that can be read and edited only by proprietary word processors, SGML or XML for which theDTD and/or processing tools are not generally available, and the machine-generated HTML produced bysome word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are neededto hold, legibly, the material this License requires to appear in the title page. For works in formats whichdo not have any title page as such, "Title Page" means the text near the most prominent appearance of thework’s title, preceding the beginning of the body of the text.

A.3. VERBATIM COPYINGYou may copy and distribute the Document in any medium, either commercially or noncommercially,provided that this License, the copyright notices, and the license notice saying this License applies to theDocument are reproduced in all copies, and that you add no other conditions whatsoever to those of thisLicense. You may not use technical measures to obstruct or control the reading or further copying of thecopies you make or distribute. However, you may accept compensation in exchange for copies. If youdistribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

A.4. COPYING IN QUANTITYIf you publish printed copies of the Document numbering more than 100, and the Document’s licensenotice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, allthese Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Bothcovers must also clearly and legibly identify you as the publisher of these copies. The front cover mustpresent the full title with all words of the title equally prominent and visible. You may add other materialon the covers in addition. Copying with changes limited to the covers, as long as they preserve the title ofthe Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed(as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must eitherinclude a machine-readable Transparent copy along with each Opaque copy, or state in or with eachOpaque copy a publicly-accessible computer-network location containing a complete Transparent copyof the Document, free of added material, which the general network-using public has access to download

346

Page 367: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation License

anonymously at no charge using public-standard network protocols. If you use the latter option, you musttake reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure thatthis Transparent copy will remain thus accessible at the stated location until at least one year after the lasttime you distribute an Opaque copy (directly or through your agents or retailers) of that edition to thepublic.

It is requested, but not required, that you contact the authors of the Document well before redistributingany large number of copies, to give them a chance to provide you with an updated version of theDocument.

A.5. MODIFICATIONSYou may copy and distribute a Modified Version of the Document under the conditions of sections 2 and3 above, provided that you release the Modified Version under precisely this License, with the ModifiedVersion filling the role of the Document, thus licensing distribution and modification of the ModifiedVersion to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and fromthose of previous versions (which should, if there were any, be listed in the History section of theDocument). You may use the same title as a previous version if the original publisher of that versiongives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of themodifications in the Modified Version, together with at least five of the principal authors of theDocument (all of its principal authors, if it has less than five).

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to usethe Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given inthe Document’s license notice.

H. Include an unaltered copy of this License.

I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title,year, new authors, and publisher of the Modified Version as given on the Title Page. If there is nosection entitled "History" in the Document, create one stating the title, year, authors, and publisherof the Document as given on its Title Page, then add an item describing the Modified Version asstated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copyof the Document, and likewise the network locations given in the Document for previous versions itwas based on. These may be placed in the "History" section. You may omit a network location for awork that was published at least four years before the Document itself, or if the original publisher ofthe version it refers to gives permission.

347

Page 368: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation License

K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title, andpreserve in the section all the substance and tone of each of the contributor acknowledgementsand/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Sectionnumbers or the equivalent are not considered part of the section titles.

M. Delete any section entitled "Endorsements". Such a section may not be included in the ModifiedVersion.

N. Do not retitle any existing section as "Endorsements" or to conflict in title with any InvariantSection.

If the Modified Version includes new front-matter sections or appendices that qualify as SecondarySections and contain no material copied from the Document, you may at your option designate some orall of these sections as invariant. To do this, add their titles to the list of Invariant Sections in theModified Version’s license notice. These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains nothing but endorsements of yourModified Version by various parties–for example, statements of peer review or that the text has beenapproved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as aBack-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage ofFront-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) anyone entity. If the Document already includes a cover text for the same cover, previously added by you orby arrangement made by the same entity you are acting on behalf of, you may not add another; but youmay replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use theirnames for publicity for or to assert or imply endorsement of any Modified Version.

A.6. COMBINING DOCUMENTSYou may combine the Document with other documents released under this License, under the termsdefined in section 4 above for modified versions, provided that you include in the combination all of theInvariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections ofyour combined work in its license notice.

The combined work need only contain one copy of this License, and multiple identical Invariant Sectionsmay be replaced with a single copy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique by adding at the end of it, in parentheses,the name of the original author or publisher of that section if known, or else a unique number. Make thesame adjustment to the section titles in the list of Invariant Sections in the license notice of the combinedwork.

In the combination, you must combine any sections entitled "History" in the various original documents,forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements",and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

348

Page 369: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation License

A.7. COLLECTIONS OF DOCUMENTSYou may make a collection consisting of the Document and other documents released under this License,and replace the individual copies of this License in the various documents with a single copy that isincluded in the collection, provided that you follow the rules of this License for verbatim copying of eachof the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under thisLicense, provided you insert a copy of this License into the extracted document, and follow this Licensein all other respects regarding verbatim copying of that document.

A.8. AGGREGATION WITH INDEPENDENT WORKSA compilation of the Document or its derivatives with other separate and independent documents orworks, in or on a volume of a storage or distribution medium, does not as a whole count as a ModifiedVersion of the Document, provided no compilation copyright is claimed for the compilation. Such acompilation is called an "aggregate", and this License does not apply to the other self-contained worksthus compiled with the Document, on account of their being thus compiled, if they are not themselvesderivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if theDocument is less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed oncovers that surround only the Document within the aggregate. Otherwise they must appear on coversaround the whole aggregate.

A.9. TRANSLATIONTranslation is considered a kind of modification, so you may distribute translations of the Documentunder the terms of section 4. Replacing Invariant Sections with translations requires special permissionfrom their copyright holders, but you may include translations of some or all Invariant Sections inaddition to the original versions of these Invariant Sections. You may include a translation of this Licenseprovided that you also include the original English version of this License. In case of a disagreementbetween the translation and the original English version of this License, the original English version willprevail.

A.10. TERMINATIONYou may not copy, modify, sublicense, or distribute the Document except as expressly provided for underthis License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and willautomatically terminate your rights under this License. However, parties who have received copies, orrights, from you under this License will not have their licenses terminated so long as such parties remainin full compliance.

349

Page 370: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Lampiran A. GNU Free Documentation License

A.11. FUTURE REVISIONS OF THIS LICENSEThe Free Software Foundation may publish new, revised versions of the GNU Free DocumentationLicense from time to time. Such new versions will be similar in spirit to the present version, but maydiffer in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that aparticular numbered version of this License "or any later version" applies to it, you have the option offollowing the terms and conditions either of that specified version or of any later version that has beenpublished (not as a draft) by the Free Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published (not as a draft) by the Free SoftwareFoundation.

A.12. How to use this License for your documentsTo use this License in a document you have written, include a copy of the License in the document andput the following copyright and license notices just after the title page:

Copyright © YEAR YOUR NAME.

Permission is granted to copy, distribute and/ or modify this document under the terms of the GNU FreeDocumentation License, Version 1.1 or any later version published by the Free Software Foundation; with theInvariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with theBack-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU FreeDocumentation License".

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones areinvariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Textsbeing LIST"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing theseexamples in parallel under your choice of free software license, such as the GNU General PublicLicense, to permit their use in free software.

350

Page 371: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

IndeksBerkas ,29

Binary Semaphore ,116

Command-Interpreter System

shell,30

Conditional Critical Region ,147

Counting Semaphore ,116

Critical Region ,??

direktori ,29

I/O , 29

Manajemen

Berkas ,29

Memori

Utama,29

Proses ,29

Sistem

I/O, 29

Memori ,29

Producer Consumer Problem ,119

Proses ,29

signal,146

Sistem

Proteksi,30

Alamat

logis,42

virtual, 42

alamat memori

alamat fisik,186

alamat logis,186

frame,186

Algoritma

elevator,297

Penjadwalan,301

Algoritma Page Buffering

frame,214

halaman,214

pool,214

Algoritma alokasi Fixed Alocation

equal allocation ,214

proportional allocation,214

Algoritma Bankir,158

Algoritma Counting

halaman,213

Algoritma FIFO (First In First Out)

anomali Belady,209

antrian,209

frame,209

halaman,209

Algoritma LRU (Least Recently Used)

anomali Belady,210

clock,210

halaman,210

pencacah,210

stack,210

Algoritma Optimal

anomali Belady,210

halaman,210

kesalahan halaman,210

pemindahan halaman,210

Algoritma Pemindahan Halaman

halaman,208

kesalahan halaman,208

pemindahan halaman,208

algoritma penjadualan CPU

kuantum,179

round-robin,179

Algoritma Perkiraan LRU

Algoritma NFU,212

Algoritma NRU,212

Algoritma Second-Chance,212

bit acuan,212

bit modifikasi,212

circular queue,212

halaman,212

Allocation

Contiguous

Indexed,261

Indexed

Multilevel , 264

Linked

FAT, 262

Alokasi Frame

kesalahan halaman,214

penghalamanan,214

pergantian halaman,214

permintaan halaman,214

Alokasi Global lawan Lokal

Alokasi Global,214

Alokasi Lokal,214

pergantian global,214

pergantian lokal,214

throughput,214

Antarmuka,37

Aplikasi, 313

351

Page 372: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

standar,42

Aplikasi I/O

Antarmuka,282

Arsitektur Segmentasi

alamat logis,193

base,193

limit, 193

nomor segmen,193

panjang segmen,193

Aspek Permintaan Halaman

memori virtual,204

Pembuatan Proses,204

Sistem permintaan halaman,204

Atmel ARM, 111

Backup

Restore,272

Bahasa Assembly,35

Bahasa Pemrograman,35

berkas,35, 36, 228

Atribut, 229

Jenis,228

Operasi,229

Shareable ,251

Static ,251

Struktur,230

Tipe,229

Unshareable ,251

Variable ,251

bit map

bit vector ,267

Block

Bad,302

Boot,302

Blocking,66

Blocking dan Nonblocking I/O,284

Blok, 42

bounded buffer

produsen konsumen,125

Brainware

pengertian,1

Buffer, 63

Buffering,58, 285

Bounded Buffer,67

Bounded Buffer Problem,58

bounded-buffer ,58

Buffer, 58

Unbounded Buffer,67

unbounded-buffer ,58

Cache,286

Perbedaan dengan Buffer,286

Cancellation

Asynchronous cancellation ,78

Defered cancellation ,78

Client,70

Client/Server Proses,61

Clustered System

Model

Local Area Network (SAN),10

Wide Area Network (WAN),10

Pengertian,10

command interpreter,35

compile,43

console,42

Context Switch,56

Contiguous

Allocation ,261

copy semantics,286

Copy-On-Write

halaman copy-on-write,204

halaman zero-fill-on,204

proses anak,204

proses induk,204

sistem pemanggilan exec(),204

sistem pemanggilan fork(),204

zero-fill-on-demand,204

critical section

arti dan problema

syarat solusi masalah,102

solusi

algoritma solusi masalah,103

data,29, 30

Deadlock,152

Debug,42

Demand paging

paging

halaman (page),200

Desknote Computer

Pengertian,7

Desktop Computer

Pengertian,7

Device

driver,37

kompleksitas,293

Direct Virtual-Memory Access,281

Direktori

CP/M,249

352

Page 373: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

MS-DOS,250

Operasi,231

Struktur,232

Asiklik, 234

Dua Tingkat,233

Satu Tingkat,232

Single Level,232

Tree,233

Two Level,233

Umum,234

UNIX, 250

disk,30

Floppy,311

Format,302

Kaitan,308

manajemen,293, 302

Raw,302

struktur,293

WORM, 312

Distributed System

Model

Client-Server System,10

Peer-to-peer (P2P) System,10

Pengertian,10

Djikstra,113

DMA, 280

Cara implementasi,281

Definisi,280

Handshaking,281

Transfer,280

drum,42

Effective Access Time,202

eksekusi,32

Electronic Data Processing System (EDPS)

pengertian

komponen,1

Embedded System

Pengertian,9

error,32

Error Handling,288

File, 228

Flag pada Thread di Linux

Tabel Fungsi Flag,81

FTP

DFS

WWW, 238

Garbage-Collection Scheme,234

graf

graf alokasi sumber daya

graf tunggu,160

Grid Computer

Pengertian,3

Grouping

Counting ,267

Hal-Hal Lainnya dari Thread

Pthreads,81

Thread-Specific Data,81

Handheld System

Pengertian,8

Hardware

pengertian,1

Hirarki

/usr,255

/var,257

I/O, 32

Efisiensi,292

Kinerja,291

I/O Blok, 283

I/O Jam dan Timer,284

I/O jaringan,283

I/O Stream

Definisi,290

Identifier

Eksternal,42

Internal,42

Implementasi

Direktori, 248

Implementasi Sistem Berkas,245

informasi,35

Instruksi Atomic,112

Interface

user,42

Interupsi,279

Interrupt Vector dan Interrupt Chaining,

280

Mekanisme Dasar,279

Penyebab,280

rutin penanganan,42

IPC

send / recives,63

Jaringan ,30

Struktur,23

Java RMI,72

kebijakan,44

Kernel,37, 42

kesalahan halaman

353

Page 374: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

ambil (fetch),201

bit validasi,201

dekode,201

free-frame,201

illegal address trap,201

interrupt handler,186

page-fault trap,186

terminasi,201

tidak valid,201

kesalahan halaman (page fault)

tidak valid,201

valid, 201

Keuntungan Thread

Berbagi sumber daya,74

Ekonomi,74

Responsi,74

Utilisasi arsitetktur multiprocessor ,74

Kinerja

efisiensi,269

Klasifikasi Komputer

Data yang diolah

Analog,12

Digital, 12

Hybrid, 12

Pengertian,12

Karakteristik

Clustered System,10

Distributed System,10

Multi Processor, Paralel System,9

Pengertian,9

Personal Computer,10

Real Time System,11

Single Processor, Uni Processor,9

Pengertian,3

Ukuran

Desknote Computer,7

Desktop Computer,7

Embedded System,9

Grid Computer/Super Computer,3

Handheld System,8

Mainframe Computer,4

Mini Computer,6

Notebook Computer,8

Pengertian,3

Workstation Computer,7

Komponen

Abstraksi,1

Sistem Komputer (EDPS),1

Sistem Operasi,1

komputasi,32

komunikasi,30, 32, 35, 36, 42, 42

Komunikasi Langsung,64

Komunikasi tak Langsung,64

Konsep Dasar

algoritma pemindahan halaman,207

bit tambahan,207

disk,207

frame,207

frame yang kosong,207

kesalahan halaman,207

memori,207

memori fisik,207

memori logis,207

memori virtual,207

overhead,207

pemindahan halaman,207

perangkat keras,207

permintaan halaman,207

proses,207

proses pengguna,207

ruang pertukaran,207

rutinitas,207

string acuan,207

tabel,207

waktu akses efektif,207

Konsep Dasar Pemindahan Halaman

kesalahan halaman,206

pemindahan halaman,206

permintaan halaman,206

throughput,206

utilisasi CPU,206

kontrol proses,35

kooperatif,62

Lapisan,37

I/O, 42

manajemen memori,42

Penjadwal CPU,42

Layanan,42

Level,42

Linear List

Hash Table,248

Lingkungan Komputasi

Embedded,12

Grid, 12

Jaringan,12

Pengertian,12

354

Page 375: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Tradisional,12

load device drivers,289

loading,36

Mailbox, 65

Mainframe,278

Mainframe Computer

Batch,4

Pengertian,4

Time Sharing/Multitasking/Interactive

Computing ,4

Manajemen

Penyimpanan Sekunder,30

Manajemen memori ,197

Masalah dalam Segmentasi

fragmentasi,194

Masalah Dining Philosophers ,143

Masalah Readers/Writers ,132

Solusi: Prioritas bergantian ,142

Solusi: prioritas pembaca ,133

Solusi: prioritas penulis ,139

mekanisme,44

Memori,30

gambaran memori,179

I/O

buffer,179

manajemen memori,175

pengguna,179

program counter,175

ready queue,179

Memori virtual

byte,198

Memory Synchronous,111

Memory-Mapped Files

akses memori rutin,204

berkas I/O,204

disk,204

memori virtual,204

pemetaan memori,204

sistem pemanggilan read(),204

sistem pemanggilan write,204

mesin virtual

mesin virtual Java,43

perangkat lunak,43

Message passing,42

message-passing,32, 35, 288

Metode

Akses,231

Mikrokernel,37, 42

Mini Computer

Pengertian,6

mirroring,305

Monitor, ??

Motherboard,278

mount

umount

mount point,235

mount point,236

Multi Processor

Jenis

Asymmetric MultiProcessing (ASMP),9

Symmetric MultiProcessing (SMP),9

Keunggulan

fail-soft system,9

fault tolerant,9

Graceful Degradation,9

Pengertian,9

multi-tasking,35

multiprogramming

swap-in,200

swap-out,200

multiprosesor,90

Multithreading Models

Many-to-Many Model,76

Many-to-One Model,76

One-to-One Model,76

mutex,147

Mutual Eksklusif,156

mutual ekslusif ,146

mutual exclusion

arti bebas,102

Nama berkas

Komponen,251

NFS,236

nonBlocking,66

Notebook Computer

Pengertian,8

On disk

In memory ,245

Overlays

assembler,178

two-pass assembler,178

owner

group,237

universe,239

page cache

disk cache

355

Page 376: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

buffer cache ,270

Paralelisme,305

paritas,305

blok interleaved,305

Partisi

Mounting ,246

Path

Mutlak, 233

Relatif,233

Pemanggilan Dinamis

disk,176

linkage loader,176

routine,176

pemberian alamat,179

antrian masukan,175

pengikatan alamat

waktu eksekusi,175

waktu pemanggilan,175

waktu pembuatan,175

waktu eksekusi,179

waktu pemanggilan,179

waktu pembuatan,179

Pemberian Halaman

Alamat

index,184

nomor halaman,184

Dukungan Perangkat Keras,184

Keuntungan dan Kerugian,184

Metode Dasar,184

Penerjemahan Halaman,184

Proteksi,184

Penamaan,64

Penanganan Sinyal

penerima Sinyal,79

Pola Penanganan Sinyal,79

Pengalokasian memori

alokasi memori berkesinambungan

antrian masukan,181

hole,181

proteksi memori,181

sistem partisi banyak dinamis,181

sistem partisi banyak tetap,181

sistem partisi tunggal,181

alokasi memori tidak berkesinambungan,

181

alokasi penyimpanan dinamis

best-fit,181

first-fit, 181

next-fit,181

worst-fit,181

fragmentasi

compactation,181

ekstern,181

intern,181

penghalamanan,181

segmentasi,181

Pengecekan rutin

Restore

Backup,271

Pengendali

Perangkat,278

Penghubungan Dinamis

Perpustakaan bersama,177

Penjadwalan

C-LOOK, 300

C-SCAN,298

FCFS(First-Come-First-Serve),295

I/O, 284

SCAN,297

SSTF(Shortest-Seek-Time-First),296

Penjadwalan Disk,294

disk bandwith,294

system call,294

Penjadwalan LOOK,299

Penjadwalan proses,52

penukaran

penukaran keluar,179

penukaran masuk,179

penyimpanan sementara,179

roll out, roll in, 179

Penyimpanan

Implementasi Stabil,310

Penyimpanan Sekunder,30, 42

Perangkat

keras,42

Perangkat I/O

Jenis-jenis,277

Klasifikasi umum,277

Prinsip-prinsip,277

perangkat keras

Memori sekunder,203

tabel halaman,203

Perangkat Penyimpanan Tersier

Kerr Effect,311

Magneto-optic Disk,311

MEMS, 313

356

Page 377: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Optical Disk,312

Penyimpanan Holographic,313

Phase-change Disk,312

WORM, 312

peranti,32, 35

Personal Computer

Pengertian,10

Persyaratan /usr

Direktori, 255

Persyaratan /var

Direktori, 258

Pertimbangan Lain

Contoh dlm Sistem Operasi

Linux, 220

Solaris 2,220

Windows NT,220

I/O Interlock,220

Jangkauan TLB

hit ratio,220

Prepaging,220

Struktur Program

jumlah referensi,220

kecepatan pencarian,220

Lokalitas,220

Tabel Halaman yang Dibalik,220

Ukuran Halaman,220

waktu latensi,220

waktu pencarian,220

waktu transfer,220

working set,220

Polling,278

Prioritas,90

Procedural Programming,72

Process Control Block - PCB,49

Processor Synchronous,110

Produsen Konsumen,62

Proses

Definisi proses,47

Kooperatif

Pembagian informasi,58

Sinkronisasi,42

proteksi,32

Proteksi Hardware

CPU Protection,23

Dual Mode Operation

Monitor/Kernel/System Mode,21

User Mode,21

IO Protection,22

Memory Protection,22

Queue Scheduling

device queue,52

job queue,52

ready queue,52

race condition

solusi,102

RAID

Level,305

Struktur,304

Real Time System

Model

Hard Real Time System,11

Soft Real Time System,11

Pengertian,11

Redundansi,305

Remote Registry,72

restart instruction

microcode,203

ragam pengalamatan spesial,203

status register spesial,203

temporary register,203

RPC,72

Ruang alamat

alamat fisik,175

alamat logika,175

Memory Management Unit,175

register,175

Saling Berbagi dan Proteksi

Bit-proteksi,193

scheduler

CPU scheduler,55

job scheduler,55

long-term scheduler,55

medium-term scheduler,55

short-term scheduler,55

Segmentasi

offset,192

Segmen,192

unit logis,192

Segmentasi dengan Pemberian Halaman

pemberian halaman,194

Semafor,113, 146

Server,70

klien, 238

shadowing,305

share-memory,32

shared-memory,35

357

Page 378: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Single Processor

Pengertian,9

single-tasking,35

Sinkronisasi,66

sisi

sisi permintaan,160

sistem

desain,44

implementasi,44

Terdistribusi,30

Sistem Berkas,32

Persyaratan

Direktori, 252

Root

Operasi,252

Sistem Operasi,32

Komponen,1

Layanan Sistem Operasi,32

Pengertian

Control Program,2

Kernel,2

Resource Allocator,2

Sudut Pandang Sistem,2

Sudut Pandang User,2

Tujuan,277

Sistem Waktu nyata

Sistem Hard Real-Time,91

Sistem Soft Real-Time,91

Skleton,72

Socket,70

Software

pembagian,1

pengertian,1

Spooling,287

Cara kerja,287

Spooling directory,287

status,36

Status Proses

New,48

Ready,48

Runing,48

Terminated,48

Waiting,48

Stream

Pembagian,290

Struktur

Hard Disk,18

Optical Disc,18

Sistem Komputer,13

Hirarki Storage,20

Input/Output (I/O),16

Operasi Sistem Komputer,13

Storage,18

Struktur Berkas

Layered File System,241

Struktur Disk

CAV (Constant Angular Velocity),293

CLV (Constant Linear Velocity),293

waktu akses,293

Stub,72

Subsistem Kernel I/O,284

sumber daya,32

Summary,315

Swap

Lokasi Ruang,303

Manajemen Ruang,??

Penggunaan Ruang,303

System

Calls,37

program,36

System callLinux

clone

Perbedaan fork dan clone,81

fork, 81

System Calls,35

system generation,45

tabel halaman

masukan,188

nomor halaman,188

tabel halaman secara inverted,188

tabel halaman secara multilevel,188

Thrashing,216

halaman,216

kesalahan halaman,216

multiprogamming,216

swap-in,216

swap-out,216

utilitas CPU,216

Thread,51

Definisi thread,73

Multithreading,73

Thread Pools

Keuntungan Thread Pools,80

threaddi Java

Membuat thread ,82

Unirocessor

358

Page 379: Sistem Operasi - Komunitas Indonesia Open Sourceopensource.telkomspeedy.com/.../SistemOperasi/.../SistemOperasi.pdf · Operasi, sesuai dengan ketentuan "GNU Free Documentation License

Pengertian,9

User dan Kernel Threads

Kernel Thread,75

User Thread,75

Variabel,147

vertex

proses,160

Wait, 114, 115, 146

Working Set

bit referensi,216

delta,216

fixed internal timer inturrupt,216

interupsi,216

lokalitas,216

overlap,216

Workstation Computer

Pengertian,7

359