Copyright (Hak Cipta) © 2003 oleh Gabungan Kelompok Kerja 2128 IKI-20230
Semester Genap 2002/ 2003.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Persembahan
Buku ini dipersembahkan dari Gabungan Kelompok Kerja 2128 IKI-20230 Semester
Genap 2002/ 2003, oleh Gabungan Kelompok Kerja 2128 IKI-20230 Semester Genap
2002/ 2003, untuk siapa saja yang ingin mempelajari Sistem Operasi. Tim
penyusun buku ini ialah sebagai berikut:
Kelompok 21 (Koordinator)
Kelompok 22 (Bab 1)
Budiono Wibowo, Agus Setiawan, Baya U.H.S., Budi A. Azis Dede Junaedi,
Heriyanto, Muhammad Rusdi.
Kelompok 23 (Bab 2)
Indra Agung, Ali Khumaidi, Arifullah, Baihaki A.S., Christian K.F. Daeli,
Eries
Nugroho, Eko Seno P., Habrar, Haris Sahlan.
Kelompok 24 (Bab 3)
Adzan Wahyu Jatmiko, Agung Pratomo, Dedy Kurniawan, Samiaji Adisasmito, Zidni
Agni.
Kelompok 25 (Bab 4)
Nasrullah, Amy S. Indrasari, Ihsan Wahyu, Inge Evita Putri, Muhammad Faizal
Ardhi, Muhammad Zaki Rahman, N. Rifka N. Liputo, Nelly, Nur Indah, R. Ayu P.,
Sita A.R.
Kelompok 26 (Bab 5)
Rakhmad Azhari, Adhe Aries, Adityo Pratomo, Aldiantoro Nugroho, Framadhan A.,
Pelangi, Satrio Baskoro Y.
Kelompok 27 (Bab 6)
Teuku Amir F.K., Alex Hendra Nilam, Anggraini W., Ardini Ridhatillah, R. Ferdy
Ferdian, Ripta Ramelan, Suluh Legowo, Zulkifli.
Kelompok 28 (Bab 7)
Christiono H, Arief Purnama L.K., Arman Rahmanto, Fajar, Muhammad Ichsan, Rama
P. Tardan, Unedo Sanro Simon.
Daftar Isi
Kata Pengantar
1. Pendahuluan
Sistem Operasi
Fungsi Dasar
Tujuan Mempelajari Sistem Operasi
Sasaran Sistem Operasi
Sejarah Sistem Operasi
Layanan Sistem Operasi
Struktur Komputer
Komponen-komponen Sistem
Managemen Proses
Managemen Memori Utama
Managemen Secondary-Storage
Managemen Sistem I/O
Managemen Berkas
Sistem Proteksi
Jaringan
Command-Interpreter System
Layanan Sistem Operasi
System Calls
Mesin Virtual
Perancangan Sistem dan Implementasi
System Generation (SYSGEN)
Rangkuman
Pertanyaan
Rujukan
2. Proses dan Thread
Proses
Penjadualan Proses
Penjadualan Antrian
Penjadual
Alih Konteks
Pembuatan Proses
Terminasi Proses
Thread
Konsep Dasar
Keuntungan
User Threads
Kernel Threads
Model Multithreading
Penjadual CPU
Konsep Dasar
Algoritma Penjadual First Come, First Served
Penjadual Shortest Job First
Penjadual Prioritas
Penjadual Round Robin
Penjadualan Multiprocessor
Kesimpulan
Proses
Thread
Penjadualan CPU
Soal-soal Latihan
Proses
Thread
Penjadualan CPU
Rujukan
Daftar Istilah
Sinkronisasi
Latar Belakang
Critical Section
Solusi Hardware pada Sinkronisasi
Semaphore
Problem Klasik pada Sinkronisasi
Monitors
Deadlock
Latar Belakang
Resources-Allocation Graph
Model Sistem
Strategi menghadapi Deadlock
Mencegah Deadlock
Menghindari Deadlock
Algoritma Bankir
Mendeteksi Deadlock dan Memulihkan Deadlock
Kesimpulan
Latihan
Rujukan
Rujukan Sinkronisasi
Rujukan Deadlock
4. Memori
Latar Belakang
Pengikatan Alamat
Ruang Alamat Fisik dan Logik
Penempatan Dinamis
Perhubungan Dinamis dan Berbagi Library
Lapisan Atas
Penukaran (Swap)
Alokasi Memori Yang Berdampingan
Pemberian Halaman
Metode Dasar
Struktur Tabel Halaman
Pemberian Halaman Secara Multilevel
Segmentasi
Metode Dasar
Perangkat Keras
Pemeliharaan dan Pembagian
Fragmentasi
Pengertian
Kelebihan Segmentasi dengan Pemberian Halaman
Perbedaan Segmentasi dan Paging
Pengimplementasian Segmentasi dengan Pemberian Halaman Intel i386
Memori Virtual
Pengertian
Keuntungan
Implementasi
Pemindahan Halaman
Skema Dasar
Pemindahan Halaman Secara FIFO
Pemindahan Halaman Secara Optimal
Pemindahan Halaman Secara LRU
Pemindahan Halaman Secara Perkiraan LRU
Dasar Perhitungan Pemindahan Halaman
Algoritma Page-Buffering
Alokasi Frame
Thrashing
Penyebab Thrashing
Model Working Set
Frekuensi Kesalahan Halaman
Windows NT
Solaris 2
Linux
Pertimbangan Lain
5. Sistem Berkas
Pengertian
Berkas
Konsep Dasar
Atribut Pada Berkas
Operasi Pada Berkas
Jenis Berkas
Struktur Berkas
Struktur Berkas Pada Disk
Penggunaan Berkas Secara Bersama-sama
Metode Akses
Struktur Direktori
Proteksi Berkas
Implementasi Direktori
Linear List
Hash Table
Efisiensi
Kinerja
Recovery
Pemeriksaan Rutin
Back Up and Restore
Kesimpulan
Soal-Soal Sistem Berkas
Polling
Interupsi
DMA
I/O Scheduling
Buffering
Caching
Spooling dan Reservasi Device
Error Handling
Kernel Data Structure
Struktur Disk
Penjadualan Disk
Penjadualan FCFS
Penjadualan SSTF
Penjadualan SCAN
Penjadualan C-SCAN
Penjadualan LOOK
Pemilihan Algoritma Penjadualan Disk
Managemen Disk
Memformat Disk
Boot Block
Bad Blocks
Penanganan Swap-Space
Penggunaan Swap-Space
Lokasi Swap-Space
Pengelolaan Swap-Space
Kehandalan Disk
Implementasi Stable-Storage
Tertiary-Storage Structure
Rangkuman
I/O
Disk
Soal Latihan
Rujukan
Daftar Istilah
7. LINUX
Sejarah
Kernel Linux
Sistem Linux
Distribusi Linux
Lisensi Linux
Linux Saat Ini
Tux: Logo Linux
Prinsip Rancangan
Manajemen Proses
Pendahuluan
Deskriptor Proses
Pembuatan Proses Dan Thread
Penjadual
Sinkronisasi Kernel
Penjadualan Proses
Symmetric Multiprocessing
I/O Linux
Device Karakter
Device Blok
Device Jaringan
Sinyal
Pipa
Struktur Jaringan
Jaringan TCP/IP
Protokol Internet (IP)
Protokol Pengontrol Transmisi (TCP)
Protokol Pengontrol Pesan di Internet (ICMP)
Protokol Datagram Pengguna (UDP)
IPX dan Sistem Berkas NCP
Keamanan
Pendahuluan
Keamanan Fisik
Keamanan Lokal
Serba-Serbi PLB
Pembagian Perangkat Lunak
Latihan
Point-Point Kernel Linux dan PLB
Sejarah Linux
Design Principles
Modul Kernel Linux
Managemen Proses
Penjadualan
Managemen Memori di Linux
Sistem Berkas di Linux
I/O Linux
Komunikasi Antar Proses
Struktur Jaringan
Keamanan
Perangkat Lunak Bebas
Rujukan
A. GNU Free Documentation License
PREAMBLE
APPLICABILITY AND DEFINITIONS
VERBATIM COPYING
COPYING IN QUANTITY
MODIFICATIONS
COMBINING DOCUMENTS
COLLECTIONS OF DOCUMENTS
AGGREGATION WITH INDEPENDENT WORKS
TRANSLATION
TERMINATION
FUTURE REVISIONS OF THIS LICENSE
How to use this License for your documents
Indeks
Daftar Tabel
2-1. Tabel untuk soal 4 - 5
3-1. Tabel Deadlock
5-1. Tabel Jenis Berkas
5-2. Contoh sistem daftar akses pada UNIX
Daftar Gambar
2-1. Keadaan Proses. Sumber: . . .
2-2. Process Control Block. Sumber: . . .
2-3. CPU Register. Sumber: . . .
2-4. Device Queue. Sumber: . . .
2-5. Diagram Anrian. Sumber: . . .
2-6. Penjadual Medium-term. Sumber: . . .
2-7. Alih Konteks. Sumber: . . .
2-8. Pohon Proses. Sumber: . . .
2-9. Operasi pada Proses. Sumber: . . .
2-10. Program Fork. Sumber: . . .
2-11. Program Produser Konsumer. Sumber: . . .
2-12. Program Produser Konsumer Alternatif. Sumber: . . .
2-13. Keluaran Program Produser Konsumer. Sumber: . . .
2-14. Keluaran Program Produser Konsumer. Sumber: . . .
2-15. Program Send/ Receive. Sumber: . . .
2-16. Thread. Sumber: . . .
2-17. User dan Kernel Thread. Sumber: . . .
2-18. Model Multithreading. Sumber: . . .
2-19. Model Many to One. Sumber: . . .
2-20. Model One to One. Sumber: . . .
2-21. Model Many to Many. Sumber: . . .
2-22. Thread Solaris dan Java. Sumber: . . .
2-23. Runnable. Sumber: . . .
2-24. Class Worker2. Sumber: . . .
2-25. Keadaan Thread. Sumber: . . .
2-26. CPU Burst. Sumber: . . .
2-27. Kedatangan Proses. Sumber: . . .
2-28. Gannt Chart Kedatangan Proses I. Sumber: . . .
2-29. Gannt Chart Kedatangan Proses II. Sumber: . . .
2-30. Gannt Chart Kedatangan Proses III. Sumber: . . .
2-31. Gannt Chart Kedatangan Proses IV. Sumber: . . .
2-32. Kedatangan Proses. Sumber: . . .
2-33. Gannt Chart SJF Non-Preemtive. Sumber: . . .
2-34. Rata-rata Menunggu. Sumber: . . .
2-35. Kedatangan Proses. Sumber: . . .
2-36. Gannt Chart SJF Preemtive. Sumber: . . .
2-37. Rata-rata Menunggu. Sumber: . . .
2-38. Round Robin. Sumber: . . .
2-39. Time Quantum dan Alih Konteks. Sumber: . . .
2-40. Round Robin. Sumber: . . .
2-41. Sinkronisasi. Sumber: . . .
2-42. Contoh Wait() dan Notify(). Sumber: . . .
3-1. Race Condition. Sumber...
3-2. Critical Section. Sumber: . . .
3-3. Prosis Pi. Sumber: . . .
3-4. Process Pi. Sumber: . . .
3-5. Kode. Sumber: . . .
3-6. Process Pi. Sumber: . . .
3-7. Process Pi. Sumber: . . .
3-8. Process Pi. Sumber: . . .
3-9. Lock. Sumber: . . .
3-10. Block. Sumber: . . .
3-11. Block. Sumber: . . .
3-12. Mutex. Sumber: . . .
3-13. Persimpangan. Sumber: . . .
3-14. Graph. Sumber: . . .
3-15. Non Deadlock. Sumber: . . .
3-16. Deadlock. Sumber: . . .
3-17. Safe. Sumber: . . .
4-1. Alokasi Kembali. Sumber: . . .
4-2. Alokasi Kembali. Sumber: . . .
4-3. Perangkat Keras Pemberian Halaman. Sumber: . . .
4-4. Model pemberian halaman dari memori fisik dan logis. Sumber: . . .
4-5. Alamat logis. Sumber: . . .
4-6. Skema Tabel Halaman Dua Tingkat. Sumber: . . .
4-7. Penterjemahan alamat untuk arsitektur pemberian halaman dua tingkat 32-
bit
logis. Sumber: . . .
4-8. Tabel halaman yang dibalik. Sumber: . . .
4-9. Berbagi kode pada lingkungan berhalaman. Sumber: . . .
4-10. Alamat Logis Sumber: . . .
4-11. String Acuan. Sumber: . . .
4-12. String Acuan. Sumber: . . .
4-13. String Acuan. Sumber: . . .
4-14. String Acuan. Sumber: . . .
4-15. Derajat dari Multiprogramming. Sumber: . . .
4-16. Jumlah Frame. Sumber: . . .
5-1. Lapisan pada sistem berkas. Sumber: . . .
6-1. Polling Operation. Sumber: . . .
6-2. DMA Interface. Sumber: . . .
6-3. DMA Controller. Sumber: . . .
6-4. Floppy Disk. Sumber: . . .
6-5. Magneto Optic. Sumber: . . .
6-6. Optical Disk. Sumber: . . .
6-7. Worm Disk. Sumber: . . .
6-8. Tape. Sumber: . . .
7-1. Logo Linux. Sumber: . . .
7-2. Pemetaan Memori Virtual ke Alamat Fisik. Sumber: . . .
7-3. Struktur Sistem Berkas EXT2. Sumber: . . .
7-4. Inode Sistem Berkas EXT2. Sumber: . . .
7-5. CharDev. Sumber: . . .
7-6. Buffer. Sumber: . . .
7-7. Pipa. Sumber: . . .
7-8. Jaringan. Sumber: . . .
7-9. Kategori. Sumber: . . .
Daftar Contoh
4-1. Tabel Halaman
7-1. Isi Deskriptor Proses
7-2. Antrian Tunggu
------------------------------------------------------------------------------
-
Kata Pengantar
Buku ini merupakan hasil karya Gabungan Kelompok Kerja 2128 IKI-20230 Semester
Genap 2002/ 2003 Fakultas Ilmu Komputer Universitas Indonesia (Fasilkom UI).
Sebagai tim penyusun, kami sangat senang atas peluncuran buku ini. Penulisan
buku ini bertujuan untuk mengatasi kelangkaan bahan kuliah berbahasa
Indonesia,
serta diharapkan akan dimanfaatkan sebagai rujukan oleh para peserta kuliah
angkatan berikutnya.
------------------------------------------------------------------------------
-
Bab 1. Pendahuluan
Bab ini berisi tiga pokok pembahasan. Pertama, membahas hal-hal umum seputar
sistem operasi. Selanjutnya, menerangkan konsep perangkat keras sebuah
komputer. Sebagai penutup akan diungkapkan, pokok konsep dari sebuah sistem
operasi.
------------------------------------------------------------------------------
-
Sistem Operasi
Pengertian sistem operasi secara umum ialah pengelola seluruh sumber-daya yang
terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system
calls)
ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan
sumber-daya sistem komputer.
------------------------------------------------------------------------------
-
Fungsi Dasar
Sistem komputer pada dasarnya terdiri dari empat komponen utama, yaitu
perangkat-keras, program aplikasi, sistem-operasi, dan para pengguna. Sistem
operasi berfungsi untuk mengatur dan mengawasi penggunaan perangkat keras oleh
berbagai program aplikasi serta para pengguna.
Sistem operasi berfungsi ibarat pemerintah dalam suatu negara, dalam arti
membuat kondisi komputer agar dapat menjalankan program secara benar. Untuk
menghindari konflik yang terjadi pada saat pengguna menggunakan sumber-daya
yang sama, sistem operasi mengatur pengguna mana yang dapat mengakses suatu
sumber-daya. Sistem operasi juga sering disebut resource allocator. Satu lagi
fungsi penting sistem operasi ialah sebagai program pengendali yang bertujuan
untuk menghindari kekeliruan (error) dan penggunaan komputer yang tidak perlu.
------------------------------------------------------------------------------
-
Tujuan mempelajari sistem operasi agar dapat merancang sendiri serta dapat
memodifikasi sistem yang telah ada sesuai dengan kebutuhan kita, agar dapat
memilih alternatif sistem operasi, memaksimalkan penggunaan sistem operasi dan
agar konsep dan teknik sistem operasi dapat diterapkan pada aplikasi-aplikasi
lain.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Sebuah sistem operasi yang baik menurut Tanenbaum harus memiliki layanan
sebagai berikut: pembuatan program, eksekusi program, pengaksesan I/O Device,
pengaksesan terkendali terhadap berkas pengaksesan sistem, deteksi dan
pemberian tanggapan pada kesalahan, serta akunting.
Pembuatan program yaitu sistem operasi menyediakan fasilitas dan layanan untuk
membantu para pemrogram untuk menulis program; Eksekusi Program yang berarti
Instruksi-instruksi dan data-data harus dimuat ke memori utama,
perangkat-parangkat masukan/ keluaran dan berkas harus di-inisialisasi, serta
sumber-daya yang ada harus disiapkan, semua itu harus di tangani oleh sistem
operasi; Pengaksesan I/O Device, artinya Sistem Operasi harus mengambil alih
sejumlah instruksi yang rumit dan sinyal kendali menjengkelkan agar pemrogram
dapat berfikir sederhana dan perangkat pun dapat beroperasi; Pengaksesan
terkendali terhadap berkas yang artinya disediakannya mekanisme proteksi
terhadap berkas untuk mengendalikan pengaksesan terhadap berkas; Pengaksesan
sistem artinya pada pengaksesan digunakan bersama (shared system); Fungsi
pengaksesan harus menyediakan proteksi terhadap sejumlah sumber-daya dan data
dari pemakai tak terdistorsi serta menyelesaikan konflik-konflik dalam
perebutan sumber-daya; Deteksi dan Pemberian tanggapan pada kesalahan, yaitu
jika muncul permasalahan muncul pada sistem komputer maka sistem operasi harus
memberikan tanggapan yang menjelaskan kesalahan yang terjadi serta dampaknya
terhadap aplikasi yang sedang berjalan; dan Akunting yang artinya Sistem
Operasi yang bagus mengumpulkan data statistik penggunaan beragam sumber-daya
dan memonitor parameter kinerja.
------------------------------------------------------------------------------
-
Struktur Komputer
* Struktur I/O.
* Struktur Penyimpanan.
* Storage Hierarchy.
------------------------------------------------------------------------------
-
Dewasa ini sistem komputer multiguna terdiri dari CPU (Central Processing
Unit); serta sejumlah device controller yang dihubungkan melalui bus yang
menyediakan akses ke memori. Setiap device controller bertugas mengatur
perangkat yang tertentu (contohnya disk drive, audio device, dan video
display). CPU dan device controller dapat dijalankan secara bersamaan, namun
demikian diperlukan mekanisme sinkronisasi untuk mengatur akses ke memori.
Pada saat pertama kali dijalankan atau pada saat boot, terdapat sebuah program
awal yang mesti dijalankan. Program awal ini disebut program bootstrap.
Program
ini berisi semua aspek dari sistem komputer, mulai dari register CPU, device
controller, sampai isi memori.
------------------------------------------------------------------------------
-
Struktur I/O
Bagian ini akan membahas struktur I/O, interupsi I/O, dan DMA, serta perbedaan
dalam penanganan interupsi.
------------------------------------------------------------------------------
-
Interupsi I/O
Untuk memulai operasi I/O, CPU me-load register yang bersesuaian ke device
controller. Sebaliknya device controller memeriksa isi register untuk kemudian
menentukan operasi apa yang harus dilakukan. Pada saat operasi I/O dijalankan
ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O. Pada
synchronous I/O, kendali dikembalikan ke proses pengguna setelah proses I/O
selesai dikerjakan. Sedangkan pada asynchronous I/O, kendali dikembalikan ke
proses pengguna tanpa menunggu proses I/O selesai. Sehingga proses I/O dan
proses pengguna dapat dijalankan secara bersamaan.
------------------------------------------------------------------------------
-
Struktur DMA
Direct Memory Access (DMA) suatu metoda penanganan I/O dimana device
controller
langsung berhubungan dengan memori tanpa campur tangan CPU. Setelah men-set
buffers, pointers, dan counters untuk perangkat I/O, device controller
mentransfer blok data langsung ke penyimpanan tanpa campur tangan CPU. DMA
digunakan untuk perangkat I/O dengan kecepatan tinggi. Hanya terdapat satu
interupsi setiap blok, berbeda dengan perangkat yang mempunyai kecepatan
rendah
dimana interupsi terjadi untuk setiap byte (word).
------------------------------------------------------------------------------
-
Struktur Penyimpanan
Program komputer harus berada di memori utama (biasanya RAM) untuk dapat
dijalankan. Memori utama adalah satu-satunya tempat penyimpanan yang dapat
diakses secara langsung oleh prosesor. Idealnya program dan data secara
keseluruhan dapat disimpan dalam memori utama secara permanen. Namun demikian
hal ini tidak mungkin karena:
* Ukuran memori utama relatif kecil untuk dapat menyimpan data dan program
secara keseluruhan.
------------------------------------------------------------------------------
-
Memori Utama
Hanya memori utama dan register merupakan tempat penyimpanan yang dapat
diakses
secara langsung oleh prosesor. Oleh karena itu instruksi dan data yang akan
dieksekusi harus disimpan di memori utama atau register.
Register yang terdapat dalam prosesor dapat diakses dalam waktu 1 clock cycle.
Hal ini menyebabkan register merupakan media penyimpanan dengan akses paling
cepat bandingkan dengan memori utama yang membutuhkan waktu relatif lama.
Untuk
mengatasi perbedaan kecepatan, dibuatlah suatu penyangga (buffer) penyimpanan
yang disebut cache.
------------------------------------------------------------------------------
-
Magnetic Disk
Magnetic Disk berperan sebagai secondary storage pada sistem komputer modern.
Magnetic Disk disusun dari piringan-piringan seperti CD. Kedua permukaan
piringan diselimuti oleh bahan-bahan magnetik. Permukaan dari piringan
dibagi-bagi menjadi track yang memutar, yang kemudian dibagi lagi menjadi
beberapa sektor.
------------------------------------------------------------------------------
-
Storage Hierarchy
Dalam storage hierarchy structure, data yang sama bisa tampil dalam level
berbeda dari sistem penyimpanan. Sebagai contoh integer A berlokasi pada bekas
B yang ditambahkan 1, dengan asumsi bekas B terletak pada magnetic disk.
Operasi penambahan diproses dengan pertama kali mengeluarkan operasi I/O untuk
menduplikat disk block pada A yang terletak pada memori utama Operasi ini
diikuti dengan kemungkinan penduplikatan A ke dalam cache dan penduplikatan A
ke dalam internal register. Sehingga penduplikatan A terjadi di beberapa
tempat. Pertama terjadi di internal register dimana nilai A berbeda dengan
yang
di sistem penyimpanan. Dan nilai di A akan kembali sama ketika nilai baru
ditulis ulang ke magnetic disk.
Pada kondisi multi prosesor, situasi akan menjadi lebih rumit. Hal ini
disebabkan masing-masing prosesor mempunyai local cache. Dalam kondisi seperti
ini hasil duplikat dari A mungkin hanya ada di beberapa cache. Karena CPU
(register-register) dapat dijalankan secara bersamaan maka kita harus
memastikan perubahan nilai A pada satu cache akan mengubah nilai A pada semua
cache yang ada. Hal ini disebut sebagai Cache Coherency.
------------------------------------------------------------------------------
-
Untuk meningkatkan utilisasi sistem, sistem operasi akan membagi sistem sumber
daya sepanjang program secara simultan. Pengertian spooling adalah suatu
program dapat dikerjakan walau pun I/O masih mengerjakan proses lainnya dan
disk secara bersamaan menggunakan data untuk banyak proses. Pengertian multi
programming adalah kegiatan menjalankan beberapa program pada memori pada satu
waktu.
Pembagian ini memang menguntungkan sebab banyak proses dapat berjalan pada
satu
waktu akan tetapi mengakibatkan masalah-masalah baru. Ketika tidak di sharing
maka jika terjadi kesalahan hanyalah akan membuat kesalahan program. Tapi jika
di-sharing jika terjadi kesalahan pada satu proses/ program akan berpengaruh
pada proses lainnya.
------------------------------------------------------------------------------
-
Untuk memastikan operasi berjalan baik kita harus melindungi sistem operasi,
program, dan data dari program-program yang salah. Proteksi ini memerlukan
share resources. Hal ini bisa dilakukan sistem operasi dengan cara menyediakan
pendukung perangkat keras yang mengizinkan kita membedakan mode pengeksekusian
program.
* Mode Monitor.
* Mode Pengguna.
Pada perangkat keras akan ada bit atau Bit Mode yang berguna untuk membedakan
mode apa yang sedang digunakan dan apa yang sedang dikerjakan. Jika Mode
Monitor maka akan benilai 0, dan jika Mode Pengguna maka akan bernilai 1.
Pada saat boot time, perangkat keras bekerja pada mode monitor dan setelah
sistem operasi di-load maka akan mulai masuk ke mode pengguna. Ketika terjadi
trap atau interupsi, perangkat keras akan men-switch lagi keadaan dari mode
pengguna menjadi mode monitor (terjadi perubahan state menjadi bit 0). Dan
akan
kembali menjadi mode pengguna jikalau sistem operasi mengambil alih proses dan
kontrol komputer (state akan berubah menjadi bit 1).
------------------------------------------------------------------------------
-
Proteksi I/O
Pengguna bisa mengacaukan sistem operasi dengan melakukan instruksi I/O ilegal
dengan mengakses lokasi memori untuk sistem operasi atau dengan cara hendak
melepaskan diri dari prosesor. Untuk mencegahnya kita menganggap semua
instruksi I/O sebagai privilidge instruction sehingga mereka tidak bisa
mengerjakan instruksi I/O secara langsung ke memori tapi harus lewat sistem
operasi terlebih dahulu. Proteksi I/O dikatakan selesai jika pengguna dapat
dipastikan tidak akan menyentuh mode monitor. Jika hal ini terjadi proteksi
I/O
dapat dikompromikan.
------------------------------------------------------------------------------
-
Proteksi Memori
Salah satu proteksi perangkat keras ialah dengan proteksi memori yaitu dengan
pembatasan penggunaan memori. Disini diperlukan beberapa istilah yaitu:
* Base Register yaitu alamat memori fisik awal yang dialokasikan/ boleh
digunakan oleh pengguna.
* Limit Register yaitu nilai batas dari alamat memori fisik awal yang
dialokasikan/boleh digunakan oleh pengguna.
Sebagai contoh sebuah pengguna dibatasi mempunyai base register 300040 dan
mempunyai limit register 120900 maka pengguna hanya diperbolehkan menggunakan
alamat memori fisik antara 300040 hingga 420940 saja.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Komponen-komponen Sistem
Pada kenyataannya tidak semua sistem operasi mempunyai struktur yang sama.
Namun menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah
sistem operasi modern mempunyai komponen sebagai berikut:
* Managemen Proses.
* Managemen Secondary-Storage.
* Managemen Berkas.
* Sistem Proteksi.
* Jaringan.
* Command-Interpreter system.
------------------------------------------------------------------------------
-
Managemen Proses
Proses adalah keadaan ketika sebuah program sedang di eksekusi. Sebuah proses
membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. sumber daya
tersebut dapat berupa CPU time, memori, berkas-berkas, dan perangkat-perangkat
I/O.
------------------------------------------------------------------------------
-
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 alamat tersendiri. Memori Utama
berfungsi sebagai tempat penyimpanan yang akses datanya digunakan oleh CPU
atau
perangkat I/O. Memori utama termasuk tempat penyimpanan data yang sementara
(volatile), artinya data dapat hilang begitu sistem dimatikan.
* Menjaga track dari memori yang sedang digunakan dan siapa yang
menggunakannya.
------------------------------------------------------------------------------
-
Managemen Secondary-Storage
Data yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat
kecil. Oleh karena itu, untuk meyimpan keseluruhan data dan program komputer
dibutuhkan secondary-storage yang bersifat permanen dan mampu menampung banyak
data. Contoh dari secondary-storage adalah harddisk, disket, dll.
Sering disebut device manager. Menyediakan "device driver" yang umum sehingga
operasi I/O dapat seragam (membuka, membaca, menulis, menutup). Contoh:
pengguna menggunakan operasi yang sama untuk membaca berkas pada hard-disk,
CD-ROM dan floppy disk.
------------------------------------------------------------------------------
-
Managemen Berkas
Berkas adalah kumpulan informasi yang berhubungan sesuai dengan tujuan pembuat
berkas tersebut. Berkas dapat mempunyai struktur yang bersifat hirarkis
(direktori, volume, dll.). Sistem operasi bertanggung-jawab:
------------------------------------------------------------------------------
-
Sistem Proteksi
Proteksi mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh
program, prosesor, atau pengguna ke sistem sumber daya. Mekanisme proteksi
harus:
* membedakan antara penggunaan yang sudah diberi izin dan yang belum.
------------------------------------------------------------------------------
-
Jaringan
Sistem terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori atau
clock. Tiap prosesor mempunyai memori sendiri. Prosesor-prosesor tersebut
terhubung melalui jaringan komunikasi Sistem terdistribusi menyediakan akses
pengguna ke bermacam sumber-daya sistem. Akses tersebut menyebabkan:
* Computation speed-up.
* Enhanced reliability.
------------------------------------------------------------------------------
-
Command-Interpreter System
Sistem Operasi menunggu instruksi dari pengguna (command driven). Program yang
membaca instruksi dan mengartikan control statements umumnya disebut:
control-card interpreter, command-line interpreter, dan UNIX shell.
Command-Interpreter System sangat bervariasi dari satu sistem operasi ke
sistem
operasi yang lain dan disesuaikan dengan tujuan dan teknologi I/O devices yang
ada. Contohnya: CLI, Windows, Pen-based (touch), dan lain-lain.
------------------------------------------------------------------------------
-
Eksekusi program adalah kemampuan sistem untuk "load" program ke memori dan
menjalankan program. Operasi I/O: pengguna tidak dapat secara langsung
mengakses sumber daya perangkat keras, sistem operasi harus menyediakan
mekanisme untuk melakukan operasi I/O atas nama pengguna. Sistem manipulasi
berkas dalah kemampuan program untuk operasi pada berkas (membaca, menulis,
membuat, and menghapus berkas). Komunikasi adalah pertukaran data/ informasi
antar dua atau lebih proses yang berada pada satu komputer (atau lebih).
Deteksi error adalah menjaga kestabilan sistem dengan mendeteksi "error",
perangkat keras mau pun operasi.
------------------------------------------------------------------------------
-
System Calls
System call menyediakan interface antara program (program pengguna yang
berjalan) dan bagian OS. System call menjadi jembatan antara proses dan sistem
operasi. System call ditulis dalam bahasa assembly atau bahasa tingkat tinggi
yang dapat mengendalikan mesin (C). Contoh: UNIX menyediakan system call:
read,
write => operasi I/O untuk berkas.
* Menyimpan parameter pada data struktur (table) di memori, dan alamat table
tsb ditunjuk oleh pointer yang disimpan di register.
* Push (store) melalui "stack" pada memori dan OS mengambilnya melalui pop
pada stack tsb.
------------------------------------------------------------------------------
-
Mesin Virtual
Mesin Virtual (MV) (MV) => control program yang minimal MV memberikan ilusi
multitasking: seolah-olah terdapat prosesor dan memori ekslusif digunakan MV.
MV memilah fungsi multitasking dan implementasi extended machine (tergantung
proses pengguna) => flexible dan lebih mudah untuk pengaturan. Jika setiap
pengguna diberikan satu MV => bebas untuk menjalankan OS (kernel) yang
diinginkan pada MV tersebut. Potensi lebih dari satu OS dalam satu komputer.
Contoh: IBM VM370: menyediakan MV untuk berbagai OS: CMS (interaktif), MVS,
CICS, dll. Masalah: Sharing disk => OS mempunyai sistem berkas yang mungkin
berbeda. IBM: virtual disk (minidisk) yang dialokasikan untuk pengguna melalui
MV.
------------------------------------------------------------------------------
-
Pemisahan kebijaksanaan dari mekanisme merupakan hal yang sangat penting; ini
mengizinkan fleksibilitas yang tinggi bila kebijaksanaan akan diubah nanti.
------------------------------------------------------------------------------
-
* Bootstrap program: kode yang disimpan di code ROM yang dapat menempatkan
kernel, memasukkannya kedalam memori, dan memulai eksekusinya.
------------------------------------------------------------------------------
-
Rangkuman
Sistem operasi telah berkembang selama lebih dari 40 tahun dengan dua tujuan
utama. Pertama, sistem operasi mencoba mengatur aktivitas-aktivitas komputasi
untuk memastikan pendayagunaan yang baik dari sistem komputasi tersebut.
Kedua,
menyediakan lingkungan yang nyaman untuk pengembangan dan jalankan dari
program.
Pada awalnya, sistem komputer digunakan dari depan konsul. Perangkat lunak
seperti assembler, loader, linkerdan compiler meningkatkan kenyamanan dari
sistem pemrograman, tapi juga memerlukan waktu set-up yang banyak. Untuk
mengurangi waktu set-up tersebut, digunakan jasa operator dan menggabungkan
tugas-tugas yang sama (sistem batch). Sistem batch mengizinkan pengurutan
tugas
secara otomatis dengan menggunakan sistem operasi yang resident dan memberikan
peningkatan yang cukup besar dalam utilisasi komputer. Komputer tidak perlu
lagi menunggu operasi oleh pengguna. Tapi utilisasi CPU tetap saja rendah. Hal
ini dikarenakan lambatnya kecepatan alat-alat untuk I/O relatif terhadap
kecepatan CPU. Operasi off-line dari alat-alat yang lambat bertujuan untuk
menggunakan beberapa sistem reader-to-tape dan tape-to-printer untuk satu CPU.
Sistem parallel mempunyai lebih dari satu CPU yang mempunyai hubungan yang
erat; CPU-CPU tersebut berbagi bus komputer, dan kadang-kadang berbagi memori
dan perangkat yang lainnya. Sistem seperti 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 didefinisikan dengan
baik.Pemrosesan harus selesai dalam batasan-batasan yang sudah didefinisikan,
atau sistem akan gagal. Sistem soft real-time mempunyai lebih sedikit batasan
waktu yang keras, dan tidak mendukung penjadwalan dengan menggunakan batas
akhir. Pengaruh dari internet dan World Wide Webbaru-baru ini telah mendorong
pengembangan sistem operasi modern yang menyertakan web browser serta
perangkat
lunak jaringan dan komunikasi sebagai satu kesatuan.
Beragam sistem penyimpanan dalam sistem komputer dapat disusun dalam hirarki
berdasarkan kecepatan dan biayanya. Tingkat yang paling atas adalah yang
paling
mahal, tapi cepat. Semakin kebawah, biaya perbit menurun, sedangkan waktu
aksesnya semakin bertambah (semakin lambat). Sistem operasi harus memastikan
operasi yang benar dari sistem komputer. Untuk mencegah pengguna program
mengganggu operasi yang berjalan dalam sistem, perangkat keras mempunyai dua
mode: mode pengguna dan mode monitor. Beberapa perintah (seperti perintah I/O
dan perintah halt) adalah perintah khusus, dan hanya dapat dijalankan dalam
mode monitor. Memori juga harus dilindungi dari modifikasi oleh pengguna.
Timer
mencegah terjadinya pengulangan secara terus menerus (infinite loop). Hal-hal
tersebut (dual mode, perintah khusus, pengaman memori, timer interrupt) adalah
blok bangunan dasar yang digunakan oleh sistem operasi untuk mencapai operasi
yang sesuai.
------------------------------------------------------------------------------
-
Pertanyaan
3. Sebutkan perbedaan utama dari sistem operasi antara komputer mainframe dan
PC?
6. Apakah perbedaan antara trap dan interrupt? Sebutkan penggunaan dari setiap
fungsi tersebut!
8. Sebutkan dua kegunaan dari memory cache! Problem apakah yang dapat
dipecahkan dan juga muncul dengan adanya cache tersebut?
9. Beberapa CPU menyediakan lebih dari dua mode operasi. Sebutkan dua
kemungkinan penggunaan dari mode tersebut?
10. Sebutkan lima kegiatan utama dari sistem operasi yang berhubungan dengan
managemen proses!
11. Sebutkan tiga kegiatan utama dari sistem operasi yang berhubungan dengan
managemen memori!
12. Sebutkan tiga kegiatan utama dari sistem operasi yang berhubungan dengan
managemen secondary-storage!
13. Sebutkan lima kegiatan utama dari sistem operasi yang berhubungan dengan
managemen berkas!
14. Apakah tujuan dari command interpreter? Mengapa biasanya hal tersebut
terpisah dengan kernel?
------------------------------------------------------------------------------
-
Rujukan
CATATAN: Situs (URL) rujukan ini pernah diakses pada pertengahan tahun 2003
yang lalu. Terdapat kemungkinan, bahwa situs tersebut sekaranga ini telah
berubah, atau telah dihapus.
1. http://www.csc.uvic.ca/~mcheng/360/notes/NOTES2.html
2. http://www.chipcenter.com/circuitcellar/march02/c0302dc4.htm
3. http://www.osdata.com/kind/history.htm
4. http://www.imm.dtu.dk/courses/02220/OS/OH/week7.pdf
5. http://www.mcsr.olemiss.edu/unixhelp/concepts/history.html
6. http://www.cs.panam.edu/fox/CSCI4334/ch3.ppt
7. http://www.cis.umassd.edu/~rbalasubrama/
8. http://legion.virginia.edu/presentations/sc2000/sld001.htm
9. http://www.cs.wpi.edu/~cs502/s99/
10. http://cs-www.cs.yale.edu/homes/avi/os-book/osc/slide-dir/
11. http://www.hardware.fr/articles/338/page1.html
12. http://www.cs.technion.ac.il/~hagit/OSS98
13. http://www.ignou.ac.in/virtualcampus/adit/course/index-tr1.htm
14. http://www.techrescue.net/guides/insthware.asp
15. http://agt.buka.org/concept.html
16. http://kos.enix.org/pub/greenwald96synergy.pdf
------------------------------------------------------------------------------
-
Proses
Satu selingan pada diskusi kita mengenai sistem operasi yaitu bahwa ada sebuah
pertanyaan mengenai apa untuk menyebut semua aktivitas CPU. Sistem batch
mengeksekusi jobs, sebagaimana suatu sistem time-shared telah menggunakan
program pengguna, atau tugas-tugas/ pekerjaan-pekerjaan. Bahkan pada sistem
tunggal, seperti Microsoft Windows dan Macintosh OS, seorang pengguna mampu
untuk menjalankan beberapa program pada saat yang sama: sebuah Word Processor,
Web Browser, dan paket e-mail. Bahkan jika pengguna dapat melakukan hanya satu
program pada satu waktu, sistem operasi perlu untuk mendukung aktivitas
program
internalnya sendiri, seperti managemen memori. Dalam banyak hal, seluruh
aktivitas ini adalah serupa, maka kita menyebut seluruh program itu
proses-proses (processes).
Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini.
Walau kami pribadi lebih mneyukai istilah proses, banyak teori dan terminologi
sistem-operasi dikembangkan selama suatu waktu ketika aktivitas utama sistem
operasi adalah job processing. Akan menyesatkan untuk menghindari penggunaan
istilah umum yang telah diterima bahwa memasukkn kata job (seperti penjadualan
job) hanya karena proses memiliki job pengganti/ pendahulu.
------------------------------------------------------------------------------
-
Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah
lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan.
Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan
oleh nilai pada program counter dan isi dari daftar prosesor/ processor's
register. Suatu proses umumnya juga termasuk process stack, yang berisikan
data
temporer (seperti parameter metoda, address yang kembali, dan variabel lokal)
dan sebuah data section, yang berisikan variabel global.
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program
adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan
didalam
disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan sebuah
program counter yang mengkhususkan pada instruksi selanjutnya untuk dijalankan
dan seperangkat sumber daya/ resource yang berkenaan dengannya.
Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut
dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna
dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama
dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah
proses yang berbeda dan walau bagian tulisan-text adalah sama, data section
bervariasi. Juga adalah umum untuk memiliki proses yang menghasilkan banyak
proses begitu ia bekerja. Kami mendiskusikan masalah tersebut pada bagian
berjudul Hubungan Antara Proses.
------------------------------------------------------------------------------
-
Keadaan Proses
[4-1]
------------------------------------------------------------------------------
-
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block
(PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar
2-2. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah
proses yang spesifik, termasuk ini:
* Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan
juga banyak lagi.
* CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada
rancangan komputer. Register tersebut termasuk accumulator, index register,
stack pointer, general-puposes register, ditambah code information pada
kondisi apa pun. Besertaan dengan program counter, keadaan/ status
informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses
tersebut berjalan/ bekerja dengan benar setelahnya (lihat Gambar 2-3).
* Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil
yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan
banyak lagi.
* Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di
gunakan pada proses ini, suatu daftar open berkas dan banyak lagi.
* PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa
pun yang dapat bervariasi dari prose ke proses.
Gambar 2-2. Process Control Block. Sumber: . . .
[4-2]
[4-3]
------------------------------------------------------------------------------
-
Threads
Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses
adalah sebuah program yang menjalankan eksekusi thread tunggal. Sebagai
contoh,
jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah
thread
tunggal dari instruksi-instruksi yang sedang dilaksanakan.
Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu
tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang
dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi
multithreads, agar dapat dapat secara terus menerus mengetik dalam karakter
dan
menjalankan pengecek ejaan didalam proses yang sama. Maka sistem operasi
tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu
waktu. Pada bagian berjudul Thread akan dibahas proses multithreaded.
------------------------------------------------------------------------------
-
Penjadualan Proses
------------------------------------------------------------------------------
-
Penjadualan Antrian
Ketika proses memasuki sistem, mereka diletakkan dalam antrian job. Antrian
ini
terdiri dari seluruh proses dalam sistem. Proses yang hidup pada memori utama
dan siap dan menunggu/ wait untuk mengeksekusi disimpan pada sebuah daftar
bernama ready queue. Antrian ini biasanya disimpan sebagai daftar penghubung.
Sebuah header ready queue berisikan penunjuk kepada PCB-PCB awal dan akhir.
Setiap PCB memiliki pointer field yang menunjukkan proses selanjutnya dalam
ready queue.
Juga ada antrian lain dalam sistem. Ketika sebuah proses mengalokasikan CPU,
proses tersebut berjalan/bekerja sebentar lalu berhenti, di interupsi, atau
menunggu suatu kejadian tertentu, seperti penyelesaian suatu permintaan I/O.
Pada kasus ini sebuah permintaan I/O, permintaan seperti itu mungkin untuk
sebuah tape drive yang telah diperuntukkan, atau alat yang berbagi, seperti
disket. Karena ada banyak proses dalam sistem, disket bisa jadi sibuk dengan
permintaan I/O untuk proses lainnya. Maka proses tersebut mungkin harus
menunggu untuk disket tersebut. Daftar dari proses yang menunggu untuk
peralatan I/O tertentu disebut sebuah device queue. Tiap peralatan memiliki
device queuenya sendiri (Lihat Gambar 2-4).
[4-4]
* Proses tersebut dapat membuat subproses yang baru dan menunggu terminasinya
sendiri.
* Proses tersebut dapat digantikan secara paksa dari CPU, sebagai hasil dari
suatu interupsi, dan diletakkan kembali dalam ready queue.
[4-5]
Dalam dua kasus pertama, proses akhirnya berganti dari waiting state menjadi
ready state, lalu diletakkan kembali dalam ready queue. Sebuah proses
meneruskan siklus ini sampai berakhir, disaat dimana proses tersebut diganti
dari seluruh queue dan memiliki PCB nya dan sumber-sumber/ resources
dialokasikan kembali.
------------------------------------------------------------------------------
-
Penjadual
Penjadualan longterm pada sisi lain, mengeksekusi jauh lebih sedikit. Mungkin
ada beberapa menit antara pembuatan proses baru dalam sistem. Penjadualan
longterm mengkontrol derajat multiprogramming (jumlah proses dalam memori).
Jika derajat multiprogramming stabil, lalu tingkat rata-rata dari penciptaan
proses harus sama dengan tingkat kepergian rata rata dari proses yang
meninggalkan sistem. Maka penjadualan longterm mungkin diperlukan untuk
dipanggil hanya ketika suatu proses meninggalkan sistem. Karena interval yang
lebih panjang antara eksekusi, penjadualan longterm dapat memakai waktu yang
lebih lama untuk menentukan proses mana yang harus dipilih untuk dieksekusi.
[4-6]
Pada sebagian sistem, penjadual long term dapat tidak turut serta atau
minimal.
Sebagai contoh, sistem time-sharing seperti UNIX sering kali tidak memiliki
penjadual long term. Stabilitas sistem-sistem ini bergantung pada keterbatasan
fisik (seperti jumlah terminal yang ada) atau pada penyesuaian sendiri secara
alamiah oleh manusia sebagai pengguna. Jika kinerja menurun pada tingkat yang
tidak dapat diterima, sebagian pengguna akan berhenti.
------------------------------------------------------------------------------
-
Alih Konteks
Mengganti CPU ke proses lain memerlukan penyimpanan suatu keadaan proses lama
(state of old process) dan kemudian beralih ke proses yang baru. Tugas
tersebut
diketahui sebagai alih konteks (context switch). Alih konteks sebuah proses
digambarkan dalam PCB suatu proses; termasuk nilai dari CPU register, status
proses (lihat Gambar 2-7). dan informasi managemen memori. Ketika alih konteks
terjadi, kernel menyimpan konteks dari proses lama kedalam PCB nya dan mengisi
konteks yang telah disimpan dari process baru yang telah terjadual untuk
berjalan. Pergantian waktu konteks adalah murni overhead, karena sistem
melakukan pekerjaan yang tidak perlu. Kecepatannya bervariasi dari mesin ke
mesin, bergantung pada kecepatan memori, jumlah register yang harus di copy,
dan keberadaan instruksi khusus (seperti instruksi tunggal untuk mengisi atau
menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1
sampai
1000 mikro detik
[4-3]
Waktu alih konteks sangat begantung pada dukungan perangkat keras. Sebagai
contoh, prosesor seperti UltraSPARC menyediakan dua rangkap register. Sebuah
alih konteks hanya memasukkan perubahan pointer ke perangkat register yang
ada.
Tentu saja, jika ada lebih proses-proses aktif yang ada dari pada yang ada di
perangkat register, sistem menggunakan bantuan untuk meng-copy data register
pada dan dari memori, sebagaimana sebelumnya. Semakin sistem operasi kompleks,
makin banyak pekerjaan yang harus dilakukan selama alih konteks. Sebagaimana
dilihat pada Bab 4, teknik managemen memori tingkat lanjut dapat mensyaratkan
data tambahan untuk diganti dengan tiap konteks. Sebagai contoh, ruang alamat
dari proses yang ada harus dijaga sebagai ruang pada pekerjaan berikutnya
untuk
digunakan. Bagaimana ruang alamat di jaga, berapa banyak pekerjaan dibutuhkan
untuk menjaganya, tergantung pada metoda managemen memori dari sistem operasi.
Sebagaimana akan kita lihat pada Bab 4, alih konteks telah menjadi suatu
keharusan, bahwa programmer menggunakan struktur (threads) untuk
menghindarinya
kapan pun memungkinkan.
[4-7]
------------------------------------------------------------------------------
-
[4-8]
------------------------------------------------------------------------------
-
Pembuatan Proses
Suatu proses dapat membuat beberapa proses baru, melalui sistem pemanggilan
pembuatan proses, selama jalur eksekusi. Pembuatan proses dinamakan induk
proses, sebagaimana proses baru di sebut anak dari proses tersbut. Tiap proses
baru tersebut dapat membuat proses lainnya, membentuk suatu pohon proses
(lihat
Gambar 2-7).
Secara umum, suatu proses akan memerlukan sumber tertentu (waktu CPU, memori,
berkas, perangkat I/O) untuk menyelesaikan tugasnya. Ketika suatu proses
membuat sebuah subproses, sehingga subproses dapat mampu untuk memperoleh
sumbernya secara langsung dari sistem operasi. Induk mungkin harus membatasi
sumber diantara anaknya, atau induk dapat berbagi sebagian sumber (seperti
memori berkas) diantara beberapa dari anaknya. Membatasi suatu anak proses
menjadi subset sumber daya induknya mencegah proses apa pun dari pengisian
sistem yang telalu banyak dengan menciptakan terlalu banyak subproses.
Sebagai tambahan pada berbagai sumber fisik dan logis bahwa suatu proses
diperoleh ketika telah dibuat, data pemula (masukan) dapat turut lewat oleh
induk proses sampai anak proses. Sebagai contoh, anggap suatu proses yang
fungsinya untuk menunjukkan status sebuah berkas, katakan F1, pada layar
terminal. Ketika dibuat, akan menjadi sebagai sebuah masukan dari proses
induknya, nama dari berkas F1, dan akan mengeksekusi menggunakan kumpulan data
tersebut untuk memperoleh informasi yang diinginkan. Proses tersebut juga
mendapat nama dari perangkat luar. Sebagian sistem operasi melewati
sumber-sumber ke anak proses. Pada sistem tersebut, proses baru bisa mendapat
dua berkas terbuka yang baru, F1 dan perangkat terminal dan hanya perlu untuk
mentransfer data antara kedua berkas tersebut.
Ketika suatu proses membuat proses baru, dua kemungkinan ada dalam term
eksekusi:
Juga ada dua kemungkinan dalam term dari address space pada proses baru:
1. Anak proses adalah duplikat dari induk proses.
....
....
....
Secara kontras, sistem operasi DEC VMS membuat sebuah proses baru dengan
mengisi program tertentu kedalam proses tersebut, dan memulai pekerjaannya.
Sistem operasi Microsoft Windows NT mendukung kedua model: Ruang alamat induk
proses dapat di duplikasi, atau induk dapat menspesifikasi nama dari sebuah
program untuk sistem operasi untuk diisikan kedalam ruang alamat pada proses
baru.
------------------------------------------------------------------------------
-
Terminasi Proses
Sebuah proses berakhir ketika proses tersebut selesai mengeksekusi pernyataan
akhirnya dan meminta sistem operasi untuk menghapusnya dengan menggunakan
sistem pemanggilan exit. Pada titik itu, proses tersebut dapat mengembalikan
data (keluaran) pada induk prosesnya (melalui sistem pemanggilan wait) Seluruh
sumber-sumber dari proses-termasuk memori fisik dan virtual, membuka berkas,
dan penyimpanan I/O di tempatkan kembali oleh sistem operasi.
Ada situasi tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat
menyebabkan terminasi dari proses lain melalui sistem pemanggilan yang tepat
(contoh abort). Biasanya, sistem seperti itu dapat dipanggil hanya oleh induk
proses tersebut yang akan diterminasi. Bila tidak, pengguna dapat secara
sewenang-wenang membunuh job antara satu sama lain. Catat bahwa induk perlu
tahu identitas dari anaknya. Maka, ketika satu proses membuat proses baru,
identitas dari proses yang baru diberikan kepada induknya.
Induk dapat menterminasi/ mengakhiri satu dari anaknya untuk beberapa alasan,
seperti:
* Pekerjaan yang ditugaskan kepada anak telah keluar, dan sistem operasi
tidak memeperbolehkan sebuah anak untuk meneruskan jika induknya berakhir.
Untuk menentukan kasus pertama, induk harus memiliki mekanisme untuk memeriksa
status anaknya. Banyak sistem, termasuk VMS, tidak memperbolehkan sebuah anak
untuk ada jika induknya telah berakhir. Dalam sistem seperti ini, jika suatu
proses berakhir (walau secara normal atau tidak normal), maka seluruh anaknya
juga harus diterminasi. Fenomena ini, mengacu pada terminasi secara cascading,
yang normalnya dimulai oleh sistem operasi.
------------------------------------------------------------------------------
-
Sebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari
pengertiannya, cara kerjanya, sampai operasi-operasinya seperti proses
pembentukannya dan proses pemberhentiannya setelah selesai melakukan eksekusi.
Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung,
misal bagaimana beberapa proses dapat saling berkomunikasi dan bekerja-sama.
------------------------------------------------------------------------------
-
3. Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah
model modular-modular, membagi fungsi sistem menjadi beberapa proses atau
threads.
import java.util.*;
public BoundedBuffer() {
// buffer diinisialisasikan kosong
count = 0;
in = 0;
out = 0;
if ( count == BUFFER_SIZE )
System.out.println( "Producer Entered " +
item + " Buffer FULL" );
else
System.out.println( "Producer Entered " +
item + " Buffer Size = " + count );
}
while ( count == 0 )
; // do nothing
if ( count == 0 )
System.out.println( "Consumer consumed " +
item + " Buffer EMPTY" );
else
System.out.println( "Consumer consumed " +
item + " Buffer Size = " +count );
return item;
}
Sebuah proses produser membentuk informasi yang dapat digunakan oleh konsumen
proses. Sebagai contoh sebuah cetakan program yang membuat banyak karakter
yang
diterima oleh driver pencetak. Untuk memperbolehkan produser dan konsumer
proses agar dapat berjalan secara terus menerus, kita harus menyediakan sebuah
item buffer yang dapat diisi dengan proses produser dan dikosongkan oleh
proses
konsumer. Proses produser dapat memproduksi sebuah item ketika konsumer sedang
mengkonsumsi item yang lain. Produser dan konsumer harus dapat selaras.
Konsumer harus menunggu hingga sebuah item diproduksi.
------------------------------------------------------------------------------
-
Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu
untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang
lain lewat sebuah komunikasi dalam proses (IPC = Inter-Process Communication).
IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk
berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat
yang sama. IPC adalah khusus digunakan dalam sebuah lingkungan yang
terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam
komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC
adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian
pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.
------------------------------------------------------------------------------
-
Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu
dengan yang lain tanpa perlu menggunakan pembagian data. Sebuah fasilitas IPC
menyediakan paling sedikit dua operasi yaitu kirim (pesan) dan terima (pesan).
Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau
variabel. Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem
implementasi adalah sistem yang sederhana. Pesan berukuran variabel
menyediakan
sistem implementasi level yang lebih kompleks.
Berikut ini ada beberapa metode untuk mengimplementasikan sebuah jaringan dan
operasi pengiriman/ penerimaan secara logika:
------------------------------------------------------------------------------
-
Komunikasi Langsung
Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat
eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam
konteks
ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan
sebagai:
* Send (P, message) - mengirim sebuah pesan ke proses P.
Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
* Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari
proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui
identitas dari semua yang ingin dikomunikasikan.
* Receive (id, message) - menerima sebuah pesan dari semua proses. Variabel
id diatur sebagai nama dari proses dengan komunikasi.
------------------------------------------------------------------------------
-
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 objek didalam setiap pesan yang dapat
ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap
kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses
dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari
mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua
proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkan
sebagai:
* Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut
membagi mailbox.
* Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
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 akan menerima pesan yang dikirim P1? Jawabannya
tergantung dari jalur yang kita pilih:
* Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi
hasil kiriman (receive operation).
* Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan
menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan
menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika
mailbox dimiliki oleh proses, 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 mailbox mempunyai
kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang
harus
menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut
diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox
ini diberi pesan bahwa mailbox tersebut tidak lagi ada.
Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak
melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang
mengizinkan proses untuk melakukan hal-hal dibawah ini:
* Menghapus mailbox.
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox
tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat
menerima pesan melalui mailbox ini. Bagaimana pun, kepemilikan dan hak
menerima
pesan mungkin dapat dialihkan ke proses lain melalui sistem pemanggilan.
------------------------------------------------------------------------------
-
Sinkronisasi
* Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
------------------------------------------------------------------------------
-
Buffering
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses
memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana
antrian
tersebut diimplementasikan:
* Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat
mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim
harus memblok sampai penerima menerima pesan.
* Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka,
semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
------------------------------------------------------------------------------
-
Contoh Produser-Konsumer
import java.util.*;
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 ) {}
import java.util.*;
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 ) {}
if ( message != null )
System.out.println("Consumer consume " + message );
}
}
}
Kita memiliki dua aktor di sini, yaitu Produser dan Konsumer. Produser adalah
thread yang menghasilkan waktu (Date) kemudian menyimpannya ke dalam antrian
pesan. Produser juga mencetak waktu tersebut di layer (sebagai umpan balik
bagi
kita). Konsumer adalah thread yang akan mengakses antrian pesan untuk
mendapatkan waktu (date) itu dan tak lupa mencetaknya di layer. Kita
menginginkan supaya konsumer itu mendapatkan waktu sesuatu dengan urutan
sebagaimana produser menyimpan waktu 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:
Gambar 2-13. Keluaran Program Produser Konsumer. Sumber: . . .
. . .
Consumer consume Wed May 07 14:11:12 ICT 2003
Consumer sleeping for 3 seconds
Producer produced Wed May 07 14:11:16 ICT 2003
Producer 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:16
Producer produced Wed May 07 14:11:17 ICT 2003
Producer sleeping for 4 seconds
Consumer consume Wed May 07 14:11:17 ICT 2003
Consumer sleeping for 4 seconds
// Konsumer melewatkan waktu Wed May 07 14:11:16
. . .
* Bila p1 lebih lambat dari c1, kita akan memperoleh keluaran seperti
berikut:
. . .
Producer produced Wed May 07 14:11:11 ICT 2003
Producer sleeping for 1 seconds
Consumer consume Wed May 07 14:11:11 ICT 2003
Consumer 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 2003
Consumer sleeping for 0 seconds
Producer sleeping for 0 seconds
Producer produced Wed May 07 14:11:12 ICT 2003
. . .
Situasi di atas dikenal dengan race conditions. Kita dapat menghindari situasi
itu dengan mensinkronisasikan aktivitas p1 dan c1 (sehubungan dengan akses
mereka ke mailbox). Proses tersebut akan didiskusikan pada bagian berjudul
Deadlock di Bab 3.
------------------------------------------------------------------------------
-
Mailbox
import java.util.*;
public MessageQueue() {
q = new Vector();
}
// Mengimplementasikan pengiriman nonblocking
public void send( Object item ) {
q.addElement( item );
}
return item;
}
}
}
1. Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat
ruang kosong pada mailbox.
4. Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walau pun
mailbox yang dituju penuh. Ketika pesan dapat disimpan pada mailbox, pesan
akan dikembalikan kepada pengirim (sender). Hanya satu pesan kepada mailbox
yang penuh yang dapat diundur (pending) pada suatu waktu untuk diberikan
kepada thread pengirim.
------------------------------------------------------------------------------
-
Thread
[5-1]
------------------------------------------------------------------------------
-
Konsep Dasar
Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis
proses, proses berat (heavyweight) atau biasa dikenal dengan proses
tradisional, dan proses ringan atau kadang disebut thread.
Thread saling berbagi bagian program, bagian data dan sumber daya sistem
operasi dengan thread lain yang mengacu pada proses yang sama. Thread terdiri
atas ID thread, program counter, himpunan register, dan stack. Dengan banyak
kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu
yang
sama.
------------------------------------------------------------------------------
-
Keuntungan
2. Pembagian sumber daya: Secara default, thread membagi memori dan sumber
daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai
perbedaan aktifitas thread dengan alokasi memori yang sama.
3. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah
sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses,
ini lebih ekonomis untuk membuat threads.
------------------------------------------------------------------------------
-
User Threads
[5-2]
User thread didukung oleh kernel dan diimplementasikan oleh thread library
ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan,
dan managemen yang tidak didukung oleh kernel.
------------------------------------------------------------------------------
-
Kernel Threads
------------------------------------------------------------------------------
-
Model Multithreading
Dalam sub bab sebelumnya telah dibahas pengertian dari thread, keuntungannya,
tingkatan atau levelnya seperti pengguna dan kernel. Maka dalam sub-bab ini
pembahasan akan dilanjutkan dengan jenis-jenis thread tersebut dan contohnya
baik pada Solaris mau pun Java.
Sistem-sistem yang ada sekarang sudah banyak yang bisa mendukung untuk kedua
pengguna dan kernel thread, sehingga model-model multithreading-nya pun
menjadi
beragam. Implementasi multithreading yang umum akan kita bahas ada tiga, yaitu
model many-to-one, one-to-one, dan many-to-many.
[5-3]
------------------------------------------------------------------------------
-
[5-4]
------------------------------------------------------------------------------
-
Model one-to-one memetakan setiap thread pengguna ke dalam satu kernel thread.
Hal ini membuat model one-to-one lebih sinkron daripada model many-to-one
dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat
pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple
thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini
adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi
thread pengguna. Karena dalam proses pembuatan kernel thread dapat
mempengaruhi
kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi
jumlah thread yang didukung oleh sistem. Model one-to-one diimplementasikan
oleh Windows NT dan OS/2.
Gambar 2-20. Model One to One. Sumber: . . .
[5-5]
------------------------------------------------------------------------------
-
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang
lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread
dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu
aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam
multiprosesor daripada dalam uniprosesor) dimana model many-to-one mengizinkan
pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak
dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel
dalam satu waktu. Model one-to-one mempunyai konkurensi yang lebih tinggi,
tetapi pengembang harus hati-hati untuk tidak membuat terlalu banyak thread
tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat
dibuat
dibatasi.
[5-6]
------------------------------------------------------------------------------
-
Solaris 2 merupakan salah satu versi dari UNIX yang sampai dengan tahun 1992
hanya masih mendukung proses berat (heavyweight) dengan kontrol oleh satu buah
thread. Tetapi sekarang Solaris 2 sudah berubah menjadi sistem operasi yang
modern yang mendukung threads di dalam level kernel dan pengguna,
multiprosesor
simetrik (SMP), dan penjadualan real-time.
Thread level pengguna dalam Solaris bisa berjenis bound mau pun unbound. Suatu
bound thread level pengguna secara permanen terpasang ke suatu LWP. Jadi hanya
thread tersebut yang bekerja di LWP, dan dengan suatu permintaan, LWP tersebut
bisa diteruskan ke suatu prosesor. Dalam beberapa situasi yang membutuhkan
waktu respon yang cepat (seperti aplikasi real-time), mengikat suatu thread
sangatlah berguna. Suatu thread yang unbound tidak secara permanen terpasang
ke
suatu LWP. Semua threads unbound dipasangkan (secara multiplex) ke dalam suatu
ruang yang berisi LWP-LWP yang tersedia untuk aplikasi. Secara default
thread-thread yang ada adalah unbound.
Misalnya sistem sedang beroperasi, setiap proses bisa mempunyai threads level
pengguna yang banyak. User-user level thread ini bisa dijadual dan diganti di
antara LWP-LWP-nya oleh thread library tanpa intervensi dari kernel. User-
level
threads sangatlah efisien karena tidak dibutuhkan bantuan kerja kernel oleh
thread library untuk menukar dari satu user-level thread ke yang lain.
Setiap LWP terpasang dengan tepat satu kernel-level thread, dimana setiap
user-level thread tidak tergantung dari kernel. Suatu proses mungkin mempunyai
banyak LWP, tetapi mereka hanya dibutuhkan ketika thread harus berkomunikasi
dengan kernel. Misalnya, suatu LWP akan dibutuhkan untuk setiap thread yang
bloknya konkuren di sistem pemanggilan. Anggap ada lima buah pembacaan berkas
yang muncul. Jadi dibutuhkan lima LWP, karena semuanya mungkin mengunggu untuk
penyelesaian proses I/O di kernel. Jika suatu proses hanya mempunyai empat
LWP,
maka permintaan yang kelima harus menunggu unuk salah satu LWP kembali dari
kernel. Menambah LWP yang keenam akan sia-sia jika hanya terdapat tempat untuk
lima proses.
* Suatu LWP mempunyai suatu himpunan register untuk user-level thread yang ia
jalankan, juga memori dan informasi pencatatan. LWP merupakan suatu
struktur data dari kernel, dan bertempat pada ruang kernel.
* Suatu kernel thread hanya mempunyai struktur data yang kecil dan sebuah
stack. Struktur datanya melingkupi copy dari kernel-kernel registers, suatu
pointer yang menunjuk ke LWP yang terpasang dengannya, dan informasi
tentang prioritas dan penjadualan.
Setiap proses dalam Solaris 2 mempunyai banyak informasi yang terdapat di
process control block (PCB). Secara umum, suatu proses di Solaris mempunyai
suatu proses id (PID), peta memori, daftar dari berkas yang terbuka,
prioritas,
dan pointer yang menunjuk ke daftar LWP yang terasosiasi kedalam proses.
[5-7]
------------------------------------------------------------------------------
-
Thread Java
Seperti yang telah kita lihat, thread didukung selain oleh sistem operasi juga
oleh paket library thread. Sebagai contoh, Win32 library mempunyai API untuk
multithreading aplikasi Windows, dan Pthreads mempunyai fungsi manajmen thread
untuk sistem POSIX-compliant. Java adalah unik dalam mendukung tingkatan
bahasa
untuk membuat dan managemen thread.
Semua program java mempunyai paling sedikit satu kontrol thread. Bahkan
program
java yang sederhana mempunyai hanya satu main() method yang berjalan dalam
thread tunggal dalam JVM. Java menyediakan perintah-perintah yang mendukung
pengembang untuk membuat dan memanipulasi kontrol thread pada program.
Satu cara untuk membuat thread secara eksplisit adalah dengan membuat kelas
baru yang diturunkan dari kelas thread, dan menimpa run() method dari kelas
Thread tersebut.
Object yang diturunkan dari kelas tersebut akan menjalankan sebagian thread
control dalam JVM. Bagaimana pun, membuat suatu objek yang diturunkan dari
kelas Thread tidak secara spesifik membuat thread baru, tetapi start() method
lah yang sebenarnya membuat thread baru.
Ketika program ini dijalankan, dua thread akan dibuat oleh JVM. Yang pertama
dibuat adalah thread yang berasosiasi dengan aplikasi-thread tersebut mulai
dieksekusi pada main() method. Thread kedua adalah runner thread secara
ekspilisit dibuat dengan start() method. Runner thread memulai eksekusinya
dengan run() method.
Pilihan lain untuk membuat sebuah thread yang terpisah adalah dengan
mendefinisikan suatu kelas yang mengimplementasikan runnable interface.
Runnable interface tersebut didefinisikan sebagai berikut:
Membuat sebuah thread dari kelas yang diimplementasikan oleh runnable berbeda
dengan membuat thread dari kelas yang mengekstend thread. Selama kelas baru
tersebut tidak mengekstend thread, dia tidak mempunyai akses ke objek static
atau instance method - seperti start() method - dari kelas thread. Bagaimana
pun, sebuah objek dari kelas thread adalah tetap dibutuhkan, karena yang
membuat sebuah thread baru dari kontrol adalah start() method.
Di kelas kedua, sebuah objek thread baru dibuat melalui runnable objek dalam
konstruktornya. Ketika thread dibuat oleh start() method, thread baru mulai
dieksekusi pada run() method dari runnable objek. Kedua method dari pembuatan
thread tersebut adalah cara yang paling sering digunakan.
------------------------------------------------------------------------------
-
Managemen Thread
Setiap method yang berbeda untuk mengontrol keadaan dari thread mungkin akan
berguna dalam situasi tertentu. Sebagai contoh: Applets adalah contoh alami
untuk multithreading karena mereka biasanya memiliki grafik, animasi, dan
audio
- semuanya sangat baik untuk mengatur berbagai thread yang terpisah. Bagaimana
pun, itu tidak akan mungkin bagi sebuah applet untuk berjalan ketika dia
sedang
tidak ditampilkan, jika applet sedang menjalankan CPU secara intensif. Sebuah
cara untuk menangani situasi ini adalah dengan menjalankan applet sebagai
thread terpisah dari kontrol, menunda thread ketika applet sedang tidak
ditampilkan dan melaporkannya ketika applet ditampilkan kembali.
Anda dapat melakukannya dengan mencatat bahwa start() method dari sebuah
applet
dipanggil ketika applet tersebut pertama kali ditampilkan. Apabila user
meninggalkan halaman web atau applet keluar dari tampilan, maka method stop()
pada applet dipanggil (ini merupakan suatu keuntungan karena start() dan
stop()
keduanya terasosiasi dengan thread dan applet). Jika user kembali ke halaman
web applet, kemudian start() method dipanggil kembali. Destroy() method dari
sebuah applet dipanggil ketika applet tersebut dipindahkan dari cache-nya
browser. Ini memungkinkan untuk mencegah sebuah applet berjalan ketika applet
tersebut sedang tidak ditampilkan pada sebuah web browser dengan menggunakan
stop() method dari applet yang ditunda dan melaporkan eksekusi tersebut pada
thread di applet start() method.
------------------------------------------------------------------------------
-
Keadaan Thread
1. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut
dibuat.
[5-8]
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Secara tipikal implementasi dari JVM adalah pada bagian atas terdapat host
sistem operasi, pengaturan ini mengizinkan JVM untuk menyembunyikan detail
implementasi dari sistem operasi dan menyediakan sebuah kekonsistenan,
lingkungan yang abstrak tersebut mengizinkan program-program java untuk
beroprasi pada berbagai sistem operasi yang mendukung sebuah JVM. Spesifikasi
bagi JVM tidak mengidentifikasi bagaimana java thread dipetakan ke dalam
sistem
operasi.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Penjadual CPU
Penjadual CPU adalah basis dari multi programming sistem operasi. Dengan
men-switch CPU diantara proses. Akibatnya sistem operasi bisa membuat komputer
produktif. Dalam bab ini kami akan mengenalkan tentang dasar dari konsep
penjadual dan beberapa algoritma penjadual. Dan kita juga memaparkan masalah
dalam memilih algoritma dalam suatu sistem.
------------------------------------------------------------------------------
-
Konsep Dasar
Tujuan dari multi programming adalah untuk mempunyai proses berjalan secara
bersamaan, unutk memaksimalkan kinerja dari CPU. Untuk sistem uniprosesor,
tidak pernah ada proses yang berjalan lebih dari satu. Bila ada proses yang
lebih dari satu maka yang lain harus mengantri sampai CPU bebas.
Ide dari multi porgamming sangat sederhana. Ketika sebuah proses dieksekusi
yang lain harus menunggu sampai selesai. Di sistem komputer yang sederhana CPU
akan banyak dalam posisi idle.Semua waktu ini sangat terbuang. Dengan
multiprogamming kita mencoba menggunakan waktu secara produktif. Beberapa
proses di simpan dalam memori dalam satu waktu. Ketika proses harus menuggu.
Sistem operasi mengmbil CPU untuk memproses proses tersebut dan meninggalkan
proses yang sedang dieksekusi.
Penjadual adalah fungsi dasar dari suatu sistem operasi. Hampir semua sumber
komputer dijadual sebelum digunakan. CPU salah satu sumber dari komputer yang
penting yang menjadi sentral dari sentral penjadual di sistem operasi.
------------------------------------------------------------------------------
-
Durasi dari CPU bust ini ditelah diukur secara ekstensif, walau pun mereka
sangat berbeda dari proses ke proses. Mereka mempunyai frekeunsi kurva yang
sama seperti yang diperlihatkan gambar dibawah ini.
[6-1]
------------------------------------------------------------------------------
-
Penjadual CPU
Kapan pun CPU menjadi idle, sistem opersai harus memilih salah satu proses
untuk masuk kedalam antrian ready (siap) untuk dieksekusi. Pemilihan tersebut
dilakukan oleh penjadual short term. Penjadual memilih dari sekian proses yang
ada di memori yang sudah siap dieksekusi, den mengalokasikan CPU untuk
mengeksekusinya
4. Terminates.
Dispatcher
Komponen yang lain yang terlibat dalam penjadual CPU adalan dispatcher.
Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang
fungsinya adalah:
1. Alih Konteks
------------------------------------------------------------------------------
-
Kriteria Penjadual
Algoritma penjadual CPU yang berbeda mempunyai property yang berbeda. Dalam
memilih algoritma yang digunakan untuk situasi tertentu, kita harus memikirkan
properti yang berbeda untuk algoritma yang berbeda. Banyak kriteria yang
dianjurkan utnuk membandingkan penjadual CPU algoritma. Kritria yang biasanya
digunakan dalam memilih adalah:
1. CPU utilization: kita ingin menjaga CPU sesibuk mungkin. CPU utilization
akan mempunyai range dari 0 ke 100 persen. Di sistem yang sebenarnya
seharusnya ia mempunyai range dari 40 persen samapi 90 persen.
2. Throughput: jika CPU sibuk mengeksekusi proses, jika begitu kerja telah
dilaksanakan. Salah satu ukuran kerja adalah banyak proses yang
diselesaikan per unit waktu, disebut througput. Untuk proses yang 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 lama untuk mengeksekusi proses tersebut. Interval dari waktu
yang diizinkan dengan waktu yang dibutuhkan untuk menyelesaikan sebuah
prose disebut turn-around time. Trun around time adalah jumlah periode
untuk menunggu untuk bisa ke memori, menunggu di ready queue, eksekusi di
CPU, dan melakukan I/O.
------------------------------------------------------------------------------
-
Penjadual CPU berurusan dengan permasalahan memutuskan proses mana yang akan
dillaksanakan, oleh karena itu banyak bermacam algoritma penjadual, di seksi
ini kita akan mendiskripsikan beberapa algoritma.
Ini merupakan algoritma yang paling sederhana, dengan skema proses yang
meminta
CPU mendapat prioritas. Implementasi dari FCFS mudah diatasi dengan FIFO
queue.
Contoh:
[6-2]
misal urutan kedatangan adalah P1, P2, P3 Gantt Chart untuk ini adalah:
[6-3]
[6-4]
misal proses dibalik sehingga urutan kedatangan adalah P3, P2, P1.
[6-5]
[6-6]
Dari dua contoh diatas bahwa kasus kedua lebih baik dari kasus pertama, karena
pengaruh kedatangan disamping itu FCFS mempunyai kelemahan yaitu convoy effect
dimana seandainya ada sebuah proses yang kecil tetapi dia mengantri dengan
proses yang membutuhkan waktu yang lama mengakibatkan proses tersebut akan
lama
dieksekusi.
------------------------------------------------------------------------------
-
Salah satu algoritma yang lain adalah Shortest Job First. Algoritma ini
berkaitan dengan waktu setiap proses. Ketika CPU bebas proses yang mempunyai
waktu terpendek untuk menyelesaikannya mendapat prioritas. Seandainya dua
proses atau lebih mempunyai waktu yang sama maka FCFS algoritma digunakan
untuk
menyelsaikan masalah tersebut.
1. nonpremptive - ketika CPU memberikan kepada proses itu tidak bisa ditunda
hingga selesai.
2. premptive - bila sebuah proses datang dengan waktu prose lebih rendah
dibandingkan dengan waktu proses yang sedang dieksekusi oleh CPU maka
proses yang waktunya lebih rendah mendapatkan prioritas. Skema ini disebut
juga Short - Remaining Time First (SRTF).
Contoh:
[6-7]
[6-8]
[6-9]
Hal yang sulit dengan SJF algoritma adalah mengethaui waku dari proses
berikutnya. Untuk penjadual long term (lama) di sistem batch, kita bisa
menggunakan panjang batas waktu proses yang user sebutkan ketika dia mengirim
pekerjaan. Oleh karena itu sjf sering digunakan di penjadual long term.
Walau pun SJF optimal tetapi ia tidak bisa digunakan untuk penjadual CPU short
term. Tidak ada jalan untuk mengetahui panjang dari CPU burst berikutnya.
Salah
satu cara untuk mengimplementasikannya adalah dengan memprediksikan CPU burst
berikutnya.
[6-10]
[6-11]
[6-12]
Kita lihat bahwa dengan premptive lebih baik hasilnya daripada non preemptive.
------------------------------------------------------------------------------
-
Penjadual Prioritas
Penjadualan SJF (Shortest Job First) adalah kasus khusus untuk algoritma
penjadual Prioritas. Prioritas dapat diasosiasikan masing-masing proses dan
CPU
dialokasikan untuk proses dengan prioritas tertinggi. Untuk proritas yang sama
dilakukan dengan FCFS.
* Prioritas akan naik jika proses makin lama menunggu waktu jatah CPU.
------------------------------------------------------------------------------
-
Algoritma Round Robin (RR) dirancang untuk sistem time sharing. Algoritma ini
mirip dengan penjadual FCFS, namun preemption ditambahkan untuk switch antara
proses. Antrian ready diperlakukan atau dianggap sebagai antrian sirkular. CPU
menglilingi antrian ready dan mengalokasikan masing-masing proses untuk
interval waktu tertentu sampai satu time slice/ quantum.
* Setiap proses mendapat jatah waktu CPU (time slice/ quantum) tertentu Time
slice/quantum umumnya antara 10 - 100 milidetik.
1. Setelah time slice/ quantum maka proses akan di-preempt dan dipindahkan
ke antrian ready.
2. Proses tidak akan menunggu lebih lama dari: (n-1)q time units.
1. Time Quantum dengan ukuran yang besar maka akan sama dengan FCFS
2. Time Quantum dengan ukuran yang kecil maka time quantum harus diubah
ukurannya lebih besar dengan respek pada alih konteks sebaliknya akan
memerlukan ongkos yang besar.
[6-13]
[6-14]
------------------------------------------------------------------------------
-
Penjadualan Multiprocessor
------------------------------------------------------------------------------
-
Jika ada beberapa prosesor yang identik tersedia maka load sharing akan
terjadi. Kita bisa menyediakan queue yang terpisah untuk setiap prosesor.
Dalam
kasus ini, bagaimana pun, satu prosesor bisa menjadi idle dengan antrian yang
kosong sedangkan yang lain sangat sibuk. Untuk mengantisipasi hal ini kita
menggunakan ready queue yang biasa. Semua proses pergi ke satu queue dan
dijadualkan untuk prosesor yang bisa dipakai.
Dalam skema tersebut, salah satu penjadualan akan digunakan. Salah satu cara
menggunakan symmetric multiprocessing (SMP). Dimana setiap prosesor
menjadualkan diri sendiri. Setiap prosesor memeriksa raedy queue dan memilih
proses yang akan dieksekusi.
Beberapa sistem membawa struktur satu langkah kedepan, dengan membawa semua
keputusan penjadualan, I/O prosesing, dan aktivitas sistem yang lain ditangani
oleh satu prosesor yang bertugas sebagai master prosesor. Prosesor yang lain
mengeksekusi hanya user code yang disebut asymmetric multiprosessing jauh
lebih
mudah.
------------------------------------------------------------------------------
-
Dalam bab ini, kita akan mendeskripsikan fasilitas penjadualan yang dibutuhkan
untuk mendukung real time computing dengan bantuan sistem komputer.
Terdapat dua jenis real time computing: sistem hard real time dibutuhkan untuk
menyelesaikan critical task dengan jaminan waktu tertentu. Secara umum, sebuah
proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk
menyelesaikan atau menjalankan I/O. Kemudian penjadual bisa menjamin proses
untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Karena
itu setiap operasi harus dijamin dengan waktu maksimum.
Soft real time computing lebih tidak ketat. Itu membutuhkan bahwa proses yang
kritis menerima prioritas dari yang lain. Walau pun menambah fungsi soft real
time ke sistem time sharing mungkin akan mengakibatkan pembagian sumber yang
tidak adildan mengakibatkan delay yang lebih lama, atau mungkin pembatalan
bagi
proses tertentu, Hasilnya adalah tujuan secara umum sistem yang bisa mendukung
multimedia, graphic berkecepatan tinggi, dan variasi tugas yang tidak bisa
diterima di lingkungan yang tidak mendukunng soft real time computing
Untuk menjaga dispatch tetap rendah. Kita butuh agar system call untuk
preemptible. Ada beberapa cara untuk mencapai tujuan ini. Satu untuk
memasukkan
preemption points di durasi yang lama system call, yang mana memeriksa apakah
prioritas yang utama butuh untuk dieksekusi. Jika satu sudah, maka alih
konteks
mengambil alih; ketika high priority proses selesai, proses yang diinterupsi
meneruskan dengan system call. Points premption bisa diganti hanya di lokasi
yang aman di kernel - hanya kernel struktur tidak bisa dimodifikasi walau pun
dengan preemption points, dispatch latency bisa besar, karena pada prakteknya
untuk menambah beberapa preemption points untuk kernel.
Metoda yang lain untuk berurusan dengan preemption untuk membuat semua kernel
preemptible. Karena operasi yang benar bisa dijamin, semua data kernel
struktur
dengan di proteksi. Dengan metode ini, kernel bisa selalu di preemptible,
karena semua kernel bisa diupdate di proteksi.
Apa yang bisa diproteksi jika prioritas yang utama butuh untuk dibaca atau
dimodifisikasi yang bisa dibutuhkan oleh yang lain, prioritas yang rendah?
Prioritas yang tinggi harus menunggu menunggu untuk menyelesaikan prioritas
yang rendah.
------------------------------------------------------------------------------
-
Penjadualan Thread
Di bagian berjudul Thread, kita mengenalkan threads untuk model proses, hal
itu
mengizinkan sebuah proses untuk mempunyai kontrol terhadap multiple threads.
Lebih lanjut kita membedakan antara user-level dan kernel level threads. User
level threads diatur oleh thread library. Untuk menjalankan di CPU, user level
threads di mapping dengan asosiasi kernel level thread, walau pun mapping ini
mungkin bisa indirect dan menggunakan lightweight.
------------------------------------------------------------------------------
-
Java Thread dan Algoritmanya
Penjadualan thread yang Runnable oleh Java Virtual Machine dilakukan dengan
konsep preemptive dan mempunyai prioritas tertinggi. Dalam algoritma evaluasi
ditentukan terlebih dahulu kriteria-kriterianya seperti utilisasinya dilihat
dari segi waktu tunggu yang digunakan dan throughput yang disesuaikan dengan
waktu turnaroundnya.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
2. Semua thread Java mempunyai prioritas dan thread dengan proritas tertinggi
dijadualkan untuk dieksekusi oleh Java Virtual Machine.
3. Jika terjadi dua thread dengan prioritas sama maka digunakan algoritma
First In First Out.
* Thread yang sedang dieksekusi keluar dari status runnable misalnya diblok
atau berakhir
* Thread dengan prioritas yang lebih tinggi dari thread yang sedang
dieksekusi memasuki status runnable. Maka thread dengan prioritas yang
lebih rendah ditunda eksekusinya dan digantikan oleh thread dengan
prioritas lebih tinggi.
------------------------------------------------------------------------------
-
Prioritas Thread
Java Virtual Machine memilih thread yang runnable dengan prioritas tertinggi.
Semua thread java mempunyai prioritas dari 1 sampai 10. Prioritas tertinggi 10
dan berakhir dengan 1 sebagai prioritas terendah. Sedangkan prioritas normal
adalah 5.
Saat thread baru dibuat ia mempunyai prioritas yang sama dengan thread yang
menciptakannya. Prioritas thread dapat diubah dengan menggunakan setpriority()
method.
------------------------------------------------------------------------------
-
public addThread(Thread t) {
t.setPriority(2);
queue.additem(t);
}
Evaluasi Algoritma
------------------------------------------------------------------------------
-
Setiap objek dalam java mempunyai kunci yang unik yang tidak digunakan
biasanya. Saat method dinyatakan sinkron, maka method dipanggil untuk
mendapatkan kunci untuk objek tersebut. Saat kunci tersebut dipunyai thread
yang lain maka thread tersebut diblok dan dimasukkan kedalam kumpulan kunci
objek, misalnya:
Thread akan memanggil method notify() saat: Thread yang dipilih diambil dari
thread yang ada pada himpunan wait. Dengan cara:
2. Atur status dari thread yang dipilih dari blocked menjadi runnable.
------------------------------------------------------------------------------
-
Kesimpulan
Proses
Sebuah proses adalah sebuah peristiwa adanya sebuah proses yang dapat
dieksekusi. Sebagai sebuah eksekusi proses, maka hal tersebut membutuhkan
perubahan keadaan. Keadaan dari sebuah proses dapat didefinisikan oleh
aktivitas proses tertentu tersebut. Setiap proses mungkin menjadi satu dari
beberapa state berikut, antara lain: new, ready, running, waiting, atau
terminated. Setiap proses direpresentasikan ada sistem operasi berdasarkan
proses-control-block (PCB)-nya.
Sebuah proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang
sama. Disini ada 2 kelas besar dari antrian dalam sebuah sistem operasi:
permintaan antrian I/O dan ready queue. Ready queue memuat semua proses yang
siap untuk dieksekusi dan yang sedang menunggu untuk dijalankan pada CPU.
Setiap proses direpresentasikan oleh sebuah PCB, dan PCB tersebut dapat
digabungkan secara bersamaan untuk mencatat sebuah ready queue. Penjadualan
Long-term adalah pilihan dari proses-proses untuk diberi izin menjalankan CPU.
Normalnya, penjadualan long-term memiliki pengaruh yang sangat besar bagi
penempatan sumber, terutama managemen memori. Penjadualan Short-term adalah
pilihan dari satu proses dari ready queue.
Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang
multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat
yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari
user,
pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil
keuntungan dari arsitektur multiprosesor. User level thread adalah thread yang
tampak oleh programmer dan tidak diketahui oleh kernel. User level thread
secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level
thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user
level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel
thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan
kernel thread.
* Model many to one: memetakan beberapa user level thread hanya ke satu buah
kernel thread.
* Model one to one: memetakan setiap user thread ke dalam satu kernel thread.
berakhir.
Java adalah unik karena telah mendukung thread didalam tingkatan bahasanya.
Semua program Java sedikitnya terdiri dari kontrol sebuah thread tunggal dan
mempermudah membuat kontrol untuk multiple thread dengan program yang sama.
JAVA juga menyediakan library berupa API untuk membuat thread, termasuk method
untuk suspend dan resume suatu thread, agar thread tidur untuk jangka waktu
tertentu dan menghentikan thread yang berjalan. Sebuah java thread juga
mempunyai empat kemungkinan keadaan, diantaranya: New, Runnable, Blocked dan
Dead. Perbedaan API untuk mengelola thread seringkali mengganti keadaan thread
itu sendiri.
------------------------------------------------------------------------------
-
Penjadualan CPU
Penjadualan CPU adalah pemilihan proses dari antrian ready untuk dapat
dieksekusi. Algoritma yang digunakan dalam penjadulan CPU ada bermacam-macam.
Diantaranya adalah First Come First Serve (FCFS), merupakan algoritma
sederhana
dimana proses yang datang duluan maka dia yang dieksekusi pertama kalinya.
Algoritma lainnya adalah Sorthest Job First (SJF), yaitu penjadualan CPU
dimana
proses yang paling pendek dieksekusi terlebih dahulu.
Kelemahan algoritma SJF adalah tidak dapat menghindari starvation. Untuk itu
diciptakan algoritma Round Robin (RR). Penjadulan CPU dengan Round Robin
adalah
membagi proses berdasarkan waktu tertentu yaitu waktu quantum q. Setelah
proses
menjalankan eksekusi selama q satuan waktu maka akan digantikan oleh proses
yang lain. Permasalahannya adalah bila waktu quantumnya besar sedang proses
hanya membutuhkan waktu sedikit maka akan membuang waktu. Sedang bila waktu
quantum kecil maka akan memakan waktu saat alih konteks.
------------------------------------------------------------------------------
-
Soal-soal Latihan
Proses
1. Sebutkan lima aktivitas sistem operasi yang merupakan contoh dari suatu
managemen proses.
2. Definisikan perbedaan antara penjadualan short term, medium term dan long
term.
3. Jelaskan tindakan yang diambil oleh sebuah kernel ketika alih konteks antar
proses.
4. Informasi apa saja yang disimpan pada tabel proses saat alih konteks dari
satu proses ke proses lain.
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 itu sendiri. Sebutkan!
8. Jelaskan apa yang akan dilakukan oleh kernel kepada alih konteks ketika
proses sedang berlangsung?
10. Perlihatkan semua kemungkinan keadaan dimana suatu proses dapat sedang
berjalan, dan gambarkan 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). Ketika suatu proses sedang tidak berjalan, PCB berisi
informasi tentang perlunya melakukan restart suatu proses dalam CPU.
Jelaskan dua informasi yang harus dipunyai PCB.
------------------------------------------------------------------------------
-
Thread
3. Sebutkan dua perbedaan antara user level thread dan kernel thread. Saat
kondisi bagaimana salah satu dari thread tersebut lebih baik
4. Jelaskan tindakan yang diambil oleh sebuah kernel saat alih konteks antara
kernel level thread.
5. Sumber daya apa sajakah yang digunakan ketika sebuah thread dibuat? Apa
yang membedakannya dengan pembentukan sebuah proses.
6. Tunjukkan tindakan yang diambil oleh sebuah thread library saat alih
konteks antara user level thread.
------------------------------------------------------------------------------
-
Penjadualan CPU
3. Apakah keuntungan menggunakan time quantum size di level yang berbeda dari
sebuah antrian sistem multilevel?
Misal diberikan beberapa proses dibawah ini dengan panjang CPU burst (
dalam milidetik)
+----------------------------+
|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
tersebut menggunakan FCFS, SJF, prioritas nonpreemptive dan round robin.
5. Hitung waktu tunggu dari setiap proses untuk setiap algoritma penjadualan.
+ FCFS
+ Round Robin
------------------------------------------------------------------------------
-
Rujukan
CATATAN: Situs (URL) rujukan ini pernah diakses pada pertengahan tahun 2003
yang lalu. Terdapat kemungkinan, bahwa situs tersebut sekaranga ini telah
berubah, atau telah dihapus.
1. Avi Silberschatz, Peter Galvin, dan Greg Gagne, 2002, Applied Operationg
System Concepts, 1st Ed., John Wiley & Sons, Inc.
3. R.M. Samik-Ibrahim, 2001, Soal Mid Test 2001, Fakultas Ilmu Komputer,
Universitas Indonesia.
4. http://www.cs.ui.ac.id/kuliah/IKI20230/materi/week4/Proses.PDF
5. http://www.cs.ui.ac.id/kuliah/IKI20230/materi/week4/CPU-Scheduler.PDF
6. http://www.cs.nyu.edu/courses/spring02/v22.0202-002/lecture-03.html
7. http://www.risc.uni-linz.ac.at/people/schreine/papers/idimt97/
multithread.gif
8. http://www.unet.univie.ac.at/aix/aixprggd/genprogc/figures/genpr68.jpg
9. http://www.unet.univie.ac.at/aix/aixprggd/genprogc/
understanding_threads.htm
10. http://www.etnus.com/Support/docs/rel5/html/cli_guide/images/
procs_n_threads8a.gif
11.
http://www.etnus.com/Support/docs/rel5/html/cli_guide/procs_n_threads5.html
12. http://www.crackinguniversity2000.it/boooks/1575211025/ch6.htm
13. http://lass.cs.umass.edu/~shenoy/courses/fall01/labs/talab2.html
14. http://www.isbiel.ch/~myf/opsys1/Exercises/Chap4/Problems1.html
15. http://www.cee.hw.ac.uk/courses/5nm1/Exercises/2.htm
16. http://www.cs.wisc.edu/~cao/cs537/midterm-answers1.txt
------------------------------------------------------------------------------
-
Daftar Istilah
Algoritma
Algoritma FCFS
Algortima penjadualan
Algoritma SJF
Alih Konteks
Antrian
Antrian Ready
CPU Burst
CPU utilization
Dispatcher
Dispatch Latency
Direct Mapping
Idle
Indirect Mapping
Interupsi
I/O
Java
Java Thread
Kernel
Lightweight
Multi Programming
Multiprocessor
New State
Nonpremptive
Penjadualan
Penjadualan CPU
Penjadualan Multiprocessor
Preemptive
Proses
Ready State
Response Time
Running State
Sistem
Sistem Batch
Sistem Operasi
Sistem Uniprosesor
Starvation
State
Switching
Symmetric Multiprocessing(SMP)
Terminate
Thread
Throughput
Time Slicing
Time Units
Turnarround Time
Waiting State
Waiting Time
------------------------------------------------------------------------------
-
Pada bab ini, akan dibahas sinkronisasi proses dan deadlock yang dapat terjadi
selama proses berlangsung.
------------------------------------------------------------------------------
-
Sinkronisasi
Bab ini membicarakan proses-proses untuk saling berkordinasi. Bab ini juga
akan
menjawab pertanyaan-pertanyaan seperti, bagaimana proses bekerja dengan sumber
daya yang dibagi-bagi. Bagaimana memastikan hanya ada satu proses yang
mengakses memori pada suatu saat? Bagaimana sinkronisasi benar-benar
digunakan?
------------------------------------------------------------------------------
-
Latar Belakang
------------------------------------------------------------------------------
-
Kasus Produsen-Konsumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya
produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil
informasi dari buffer. Ini juga dapat digeneralisasi untuk masalah yang
memiliki m buah produsen dan n buah konsumen, tetapi kita hanya akan
memfokuskan kasus dengan satu produsen dan satu konsumen karena diasumsikan
dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi
buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan
dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari
buffer.
Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa
buffer sedang kosong, maka konsumen istirahat (sleep) sampai produsen
meletakkan barang pada buffer dan membangunkan (wake up) consumer.
Pendekatan seperti ini terdengar cukup sederhana, tetapi hal ini dapat
menggiring kita ke jenis masalah yang sama seperti race condition dengan
spooler direktori.
Sekarang mari kita kembali ke permasalahan race condition. Ini dapat terjadi
karena akses ke count tidak dipaksakan. Situasi seperti itu mungkin dapat
terjadi. Buffer sedang kosong dan konsumen baru saja membaca count untuk
melihat apakah count bernilai 0. Pada saat itu, penjadual memutuskan untuk
mengentikan proses konsumen sementara dan menjalakan produsen. Produsen
memasukkan barang ke buffer, menaikkan nilai count, dan memberitahukan bahwa
count sekarang bernilai 1. Pemikiran bahwa count baru saja bernilai 0 sehingga
konsumen harus istirahat (sleep). Produsen memanggil fungsi wake up untuk
membangkitkan konsumen.
------------------------------------------------------------------------------
-
Race Condition
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat
besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama
berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas
berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua
vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses.
Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot
4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak).
Lebih
atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre
untuk sebuah berkas untuk dicetak. Situasi seperti ini diperlihatkan oleh
Gambar 3-1.
[gb1]
Dalam Murphy's Law kasus tesebut dapat terjadi. Proses A membaca in dan
menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot.
Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan
cukup
lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga
mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan
memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses tersebut
mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan
menulis nama berkas di slot nomor 7, menghapus nama berkas yang bau saja
diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1,
yang
nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang
secara internal konsisten, sehingga printer daemon tidak akan memberitahukan
apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun.
Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading
atau
writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan
disebut race condition.
------------------------------------------------------------------------------
-
Critical Section
Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini dan di
situasi yang lain yang melibatkan shared memori, shared berkas, and shared
sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih
dari
satu proses untuk melakukan proses writing dan reading kepada shared data pada
saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah
jalan
yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain
dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2
mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan
kerjasama antar proses secara pararel dengan baik dan efisien dalam
menggunakan
shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
i. Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
iii. Tidak ada proses yang berjalan di luar critical secion yang dapat
mengeblok proses lain.
iv. Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana
sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi
pada
satu waktu
* Mutual exclution
* Deadlock free
* Starvation free
+ Tanpa Sinkronisasi.
+ Dengan Sinkronisasi.
------------------------------------------------------------------------------
-
Mutual Exclusion
1. Tidak ada dua proses yang pada saat bersamaan berada di critical region.
2. Tidak ada proses yang berjalan diluar critical region yang bisa menghambat
proses lain
------------------------------------------------------------------------------
-
Solusi
do {
critical section
remainder section
} while(1);
------------------------------------------------------------------------------
-
Algoritma 1
Pada semua contoh, i adalah proses yang sedang berjalan, j adalah proses yang
lain. Pada contoh ini code.
i. Shared variables
+ int turn
initially turn=0
ii. Process Pi
do {
while(turn!=1);
critical section
turn=j;
remainder section
} while(1);
iii. Memenuhi mutual exclusion, tapi bukan progress.
------------------------------------------------------------------------------
-
Algoritma 2
+ boolean flag[2];
ii. Process Pi
do {
flag[i]:=true;
while(turn!=1);
critical section
turn=j;
remainder section
} while(1);
iii. Memenuhi mutual exclusion, tapi tidak memenuhi progess.
------------------------------------------------------------------------------
-
Algoritma 3
* Setiap proses mengeset sebuah flag untuk meminta izin masuk. Lalu setiap
proses mentoggle bit untuk mengizinkan yang lain untuk yang pertama
Shared variables
F boolean flag[2];
initially flag[0] = flag[1] = false
F flag[i] = true;
* Process Pi
do {
flag[i]:=true;
turn = j;
while(flag[j] and turn = j);
critical section
flag[i] = false;
remainder section
} while(1);
------------------------------------------------------------------------------
-
Algoritma Bakery
Atomic test and set: Returns parameter and sets parameter to true atomically.
while (test_and_set(lock));
/* critical section */
lock = false;
GET_LOCK: IF_CLEAR_THEN_SET_BIT_AND_SKIP (bit_address)
BRANCH GET_LOCK /* set failed */
/* set succeeded */
while (test_and_set(lock));
Boolean waiting[N];
int j; /* Takes on values from 0 to N - 1 */
Boolean key;
do {
waiting[i] = TRUE;
key = TRUE;
while ( waiting[i] && key )
key = test_and_set( lock ); /* Spin lock */
waiting[i] = FALSE;
/****** CRITICAL SECTION ********/
j = ( i + 1 ) mod N;
while ( ( j != i ) && ( ! waiting[ j ] ) )
j = ( j + 1 ) % N;
if ( j == i ) //Using Hardware
lock = FALSE; //Test_and_set.
else
waiting[ j ] = FALSE;
/******* REMAINDER SECTION *******/
} while (TRUE);
------------------------------------------------------------------------------
-
Semaphore
Jika kita ingin dapat melakukan proses tulis lebih rumit kita membutuhkan
sebuah bahasa untuk melakukannya. Kita akhirnya medefinisikan semaphore yang
kita asumsikan sebagai sebuah operasi atomik.
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa
dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda
sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai
proses
mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks
dapat
dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel
khusus untuk penanda ini disebut semaphore.
ii. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli
yang disampaikan Djikstra adalah operasi P dan V.
------------------------------------------------------------------------------
-
Operasi Down
------------------------------------------------------------------------------
-
Operasi Up
Operasi Up menakkan nilai semaphore. Jika satu proses atau lebih diblocked
pada
semaphore itu tak dapat menyelesaikan operasi Down, maka salah satu dipilih
oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih
tidak ditentukan oleh Djikstra, dapat dipilih secara acak.
Cons N = 2;
Var S:semaphore;
Procedure enter_critical_section;
{
mengerjakan kode-kode kritis
}
Procedure enter_noncritical_section;
{
mengerjakan kode-kode tak kritis
}
ProcedureProses(i: integer);
Begin
Repeat
Down(s);
Enter_critical_section;
Up(s);
Enter_noncritical_section;
Forever
End;
Begin
S:= 1;
Parbegin
Proses(0);
Proses(1);
ParEnd
End;
Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka
proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked
atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila
proses yang ada di critical section keluar dan melakukan opersai up sehingga
menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-
nya
berhasil.
------------------------------------------------------------------------------
-
Ada tiga hal yang selalu memjadi masalah pada proses sinkronisasi:
------------------------------------------------------------------------------
-
Problem Readers-Writers
Sebagai konsekuensi dari strategi ini, selama terdapat suplai reader yang
terus-menerus, mereka akan dilayani segera sesuai kedatanga mereka. Writer
akan
ditunda sampai tidak ada reader lagi. Jika sebuah reader baru tiba, katakan,
setiap dua detik, dan masing-masing reader mendapatkan lima detik untuk
melakukan tugasnya, writer tudak akan pernah mendapatkan kesempatan.
Untuk mencegah situasi seperti itu, program dapat ditulis agak sedikit
berbeda:
Ketika reader tiba dan writer menunggu, reader ditunda dibelakang writer yang
justru diterima dengan segera. Dengan cara ini, writer tidak harus menunggu
reader yang sedang aktif menyelesaikan pekerjaannya, tapi tidak perlu menunggu
reader lain yang datang berturut-turut setelah itu.
------------------------------------------------------------------------------
-
Kehidupan para filosof terdiri dari dua periode, yaitu makan atau berpikir.
Ketika seorang filosof lapar, dia berusaha untuk mendapatkan garpu kiri dan
garpu kanan sekaligus. Jika sukses dalam mengambil dua garpu, filosof tersebut
makan untuk sementara waktu, kemudian meletakkan kedua garpu dan melanjutkan
berpikir.
Kita dapat memodifikasi program sehingga setelah mengambil garpu kiri, program
memeriksa apakah garpu kanan meungkinkan untuk diambil. Jika garpu kanan tidak
mungkin diambil, filosof tersebut meletakkan kembali garpu kirinya, menunggu
untuk beberapa waktu, kemudia mengulangi proses yang sama. Usulan tersebut
juga
salah, walau pun dengan alasan yang berbeda. Dengan sedikit nasib buruk, semua
filosof dapat memulai algoritma secara bersamaan, mengambil garpu kiri mereka,
melihat garpu kanan mereka yang tidak mungkin untuk diambil, meletakkan
kembali
garpu kiri mereka, menunggu, mengambil garpu kiri mereka lagi secara
bersamaan,
dan begitu seterusnya. Situasi seperti ini dimana semua program terus berjalan
secara tidak terbatas tetapi tidak ada perubahan/kemajuan yang dihasilkan
disebut starvation.
Sekarang anda dapat berpikir "jika filosof dapat saja menunggu sebuah waktu
acak sebagai pengganti waktu yang sama setelah tidak dapat mengambil garpu
kiri
dan kanan, kesempatan bahwa segala sesuatau akan berlanjut dalam kemandegan
untuk beberapa jam adalah sangat kecil." Pemikiran seperti itu adalah
benar,tapi beberapa aplikasi mengirimkan sebuah solusi yang selalu bekerja dan
tidak ada kesalahan tidak seperti hsk nomor acak yang selalu berubah.
Solusi yang diberikan diatas benar dan juga mengizinkan jumlah maksimum
kegiatan paralel untuk sebuah jumlah filosf yang berubah-ubah ini menggunakan
sebuah array, state, untuk merekam status seorang filosof apakah sedang makan
(eating), berpikir (think), atau sedang lapar (hungry) karena sedang berusaha
mengambil garpu. Seorang filosof hanya dapat berstatus makan (eating) jika
tidak ada tetangganya yang sedang makan juga. Tetangga seorang filosof
didefinisikan ole LEFT dan RIGHT.
Dengan kata lain, jika i = 2, maka tetangga kirinya (LEFT) = 1 dan tetangga
kanannya (RIGHT) = 3. Program ini menggunakan sebuah array dari semaphore yang
lapar (hungry) dapat ditahan jika garpu kiri atau kanannya sedang dipakai
tetangganya. Catatan bahwa masing-masing proses menjalankan prosedur filosof
sebagai kode utama, tetapi prosedur yang lain seperti take-forks, dan test
adalah prosedur biasa dan bukan proses-proses yang terpisah.
------------------------------------------------------------------------------
-
Monitors
Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah
kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus.
Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak
dapat mengakses struktur data internal dalam monitor secara langsung. Hanya
lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur
internal.
ii. Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator
harus mengimplementasi ini(mutual exclusion).
iii. Terdapat cara agar proses yang tidak dapat berlangsung di-blocked.
Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan
Signal.
iv. Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer
menemui
buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses
lain masuk monitor.
vi. Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan
menunda proses lain.
vii. Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari
monitor.
Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada
monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel
data
dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur
data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data
pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas
mutual exclusion dalam mengakses sumber daya itu.
------------------------------------------------------------------------------
-
Deadlock
Pada pembahasan di atas telah dikenal suatu istilah yang populer pada bagian
semaphores, yaitu deadlock. Secara sederhana deadlock dapat terjadi dan
menjadi
hal yang merugikan, jika pada suatu saat ada suatu proses yang memakai sumber
daya dan ada proses lain yang menunggunya. Bagaimanakah deadlock itu yang
sebenarnya? Bagaimanakah cara penanggulangannya?
------------------------------------------------------------------------------
-
Latar Belakang
Misalkan pada suatu komputer terdapat dua buah program, sebuah tape drive dan
sebuah printer. Program A mengontrol tape drive, sementara program B
mengontrol
printer. Setelah beberapa saat, program A meminta printer, tapi printer masih
digunakan. Berikutnya, B meminta tape drive, sedangkan A masih mengontrol tape
drive. Dua program tersebut memegang kontrol terhadap sumber daya yang
dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses
masing-masing sampai program yang lain memberikan sumber dayanya, tetapi tidak
ada yang mengalah. Kondisi inilah yang disebut Deadlock atau pada beberapa
buku
disebut Deadly Embrace
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu
menunggu suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau
lebih
proses dikatakan berada dalam kondisi deadlock, bila setiap proses yang ada
menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam
himpunan tersebut.
Terdapat kaitan antara overhead dari mekanisme koreksi dan manfaat dari
koreksi
deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus
dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal
dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada
real-time process control, mengizinkan deadlock akan membuat sistem menjadi
kacau dan membuat sistem tersebut tidak berguna.
Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang
dapat membuat deadlock pada suatu persimpangan, yaitu:
[persimpang]
------------------------------------------------------------------------------
-
Resources-Allocation Graph
Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau
kemungkinan terjadinya.
G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1,
P2, P3, ...} dan jenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau
(Ri,
Pj)
[graph]
Jika graf tidak berisi lingkaran, maka tidak ada proses yang deadlock.
i. jika tipe resource memiliki banyak instance, maka deadlock DAPAT ada.
[nondead]
ii. jika setiap tipe resource mempunyai satu instance, maka deadlock telah
terjadi.
[dead]
------------------------------------------------------------------------------
-
Model Sistem
Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagi
terjadinya deadlock, yaitu:
i. Mutual Exclusion
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses
pada suatu waktu.
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya
dapat meminta sumber daya yang lain.
iii. Non-pre-emptive
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak
dapat diambil secara paksa dari proses tersebut,sampai proses itu
melepaskannya.
iv. Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang
dimiliki oleh suatu proses oleh proses lainnya.
------------------------------------------------------------------------------
-
ii. Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode
Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah
terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi
deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai
deadlock.
iii. Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode
yang saling mendukung, yaitu:
------------------------------------------------------------------------------
-
Strategi Ostrich
------------------------------------------------------------------------------
-
Mencegah Deadlock
Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan
dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock.
Tetapi pencgahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk.
Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak
ada sumber daya yang secara khusus diperuntukkan bagi suatu proses maka tidak
akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses
mengakses sebuah sumber daya yang sama akan menyebabkan chaos. Langkah yang
digunakan adalah dengan spooling sumber daya, yaitu dengan mengantrikan job-
job
pada antrian dan akan dilayani satu-satu.
i. Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk
di-spool
ii. Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada
deadlock
Hal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan,
jadi
mutual exclusion benar-benar tidak dapat dihilangkan.
Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih menjanjikan.
Jika suatu proses yang sedang menggunakan sumber daya dapat dicegah agar tidak
dapat menunggu sumber daya yang lain, maka deadlock dapat dicegah. Langkah
yang
digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka
butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang
dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses
tersebut tidak dapat memulai prosesnya.
i. Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses
ii. Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan
hanya beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu
proses yang telah memintanya dari awal.
Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan dari
meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka suatu
proses dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena
hasil
dari suatu proses yang dihentikan menjadi tidak baik.
Cara terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat
dua pendekatan, yaitu:
i. Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber daya pada
suatu waktu, jika menginginkan sumber daya lain maka sumber daya yang
dimiliki harus dilepas.
ii. Membuat penomoran pada proses-proses yang mengakses sumber daya. Suatu
proses dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi
permintaannya harus dibuat terurut.
Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat
memiliki satu proses adalah bahwa tidak semua proses hanya membutuhkan satu
sumber daya, untuk suatu proses yang kompleks dibutuhkan banyak sumber daya
pada saat yang bersamaan. Sedangkan dengan penomoran masalah yang dihadapi
adalah tidak terdapatnya suatu penomoran yang dapat memuaskan semua pihak.
Secara ringkas pendekatan yang digunakan pada metode pencegahan deadlock dan
masalah-masalah yang menghambatnya, terangkum dalam tabel dibawah ini.
+-----------------------------------------------------------------------------
+
|Syarat |Langkah |Kelemahan
|
|------------+-----------------------------
+----------------------------------|
|Mutual |Spooling sumber daya |Dapat menyebabkan chaos
|
|Exclusion | |
|
|------------+-----------------------------
+----------------------------------|
|Hold and |Meminta sumber daya di awal |Sulit memperkirakan di awal dan
|
|Wait | |tidak optimal
|
|------------+-----------------------------
+----------------------------------|
|No |Mengambil sumber daya di |Hasil proses tidak akan baik
|
|Pre-emptive |tengah proses |
|
|------------+-----------------------------
+----------------------------------|
|Circular |Penomoran permintaan sumber |Tidak ada penomoran yang
memuaskan|
|Wait |daya |semua pihak
|
+-----------------------------------------------------------------------------
+
------------------------------------------------------------------------------
-
Menghindari Deadlock
------------------------------------------------------------------------------
-
Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock
dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda
tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
------------------------------------------------------------------------------
-
Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak
terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan
menjalankan proses-proses dengan suatu urutan.
[safe]
------------------------------------------------------------------------------
-
Algoritma Bankir
i. Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal
eksekusi.
iii. Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia
kembali.
------------------------------------------------------------------------------
-
Terminasi Proses
Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock
dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam
metode
ini adalah, sebagai berikut:
* Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini
terlalu mahal).
* Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock dapat
diatasi (memakan banyak waktu).
------------------------------------------------------------------------------
-
Resources Preemption
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan
sumber
daya, agar tidak terjebak pada unsafe condition.
* Pilih salah satu - proses dan sumber daya yang akan di-preempt.
* Mencegah suatu proses agar tidak terjebak pada starvation karena metode
ini.
------------------------------------------------------------------------------
-
Kesimpulan
Kondisi deadlock akan dapat terjadi jika terdapat dua atau lebih proses yang
akan mengakses sumber daya yang sedang dipakai oleh proses yang lainnya.
Pendekatan untuk mengatasi deadlock dipakai tiga buah pendekatan, yaitu:
Dari ketiga pendekatan diatas, dapat diturunkan menjadi empat buah metode
untuk
mengatasi deadlock, yaitu:
* Pencegahan deadlock
* Menghindari deadlock
* Mendeteksi deadlock
* Pemulihan deadlock
Namun pada sebagian besar Sistem Operasi dewasa ini mereka lebih condong
menggunakan pendekatan untuk mengabaikan semua deadlock yang terjadi
3. Gunakan algoritma yang paling cocok untuk suatu kelas sumber daya yang
berbeda satu dengan yang lain
------------------------------------------------------------------------------
-
Latihan
1. Proses dapat meminta berbagai kombinasi dari sumber daya dibawah ini:
CDROM, soundcard dan floppy. Jelaskan tiga macam pencegahan deadlock skema
yang meniadakan:
+ Circular Wait
+ No Preemption
2. Diasumsikan proses P0 memegang sumber daya R2 dan R3, meminta sumber daya
R4; P1 menggunakan R4 dan meminta R1; P2 menggunakan R1 dan meminta R3 .
Gambarkan Wait-for Graph. Apakah sistem terjebak dalam deadlock? Jika ya,
tunjukkan proses mana yang menyebabkan deadlock. Jika tidak, tunjukkan
urutan proses untuk selesai.
ii. Deteksi deadlock dipilih karena utilisasi dari resources dapat lebih
optimal.
iii. Salah satu prasyarat untuk melakukan deteksi deadlock adalah: hold and
wait.
v. Suatu sistem jika berada dalam keadaan tidak aman: "unsafe", berarti
telah terjadi deadlock.
iv. x+m<-12
------------------------------------------------------------------------------
-
Rujukan
CATATAN: Situs (URL) rujukan ini pernah diakses pada pertengahan tahun 2003
yang lalu. Terdapat kemungkinan, bahwa situs tersebut sekaranga ini telah
berubah, atau telah dihapus.
------------------------------------------------------------------------------
-
Rujukan Sinkronisasi
------------------------------------------------------------------------------
-
Rujukan Deadlock
------------------------------------------------------------------------------
-
Bab 4. Memori
Latar Belakang
Memori merupakan inti dari sistem komputer modern. CPU mengambil instruksi
dari
memori sesuai yang ada pada program counter. Instruksi dapat berupa
menempatkan
/ menyimpan dari/ ke alamat di memori, penambahan, dan sebagainya. Dalam
managemen memori ini, kita akan membahas bagaimana urutan alamat memori yang
dibuat oleh program yang berjalan.
------------------------------------------------------------------------------
-
Pengikatan Alamat
Dalam banyak kasus, program akan berada dalam beberapa tahapan sebelum
dieksekusi. Alamat-alamat yang dbutuhkan mungkin saja direpresentasikan dalam
cara yang berbeda dalam tahapan-tahapan ini. Alamat dalam kode program masih
berupa simbolik. Alamat ini akan diikat oleh kompilator ke alamat memori yang
dapat diakses (misalkan 14 byte, mulai dari sebuah modul). Kemudian linkage
editor dan loader, akan mengikat alamat fisiknya (misalkan 17014). Setiap
pengikatan akan memetakan suatu ruang alamat ke lainnya.
Secara klasik, instruksi pengikatan dan data ke alamat memori dapat dilakukan
dalam beberapa tahap:
* waktu compile: jika diketahui pada waktu compile, dimana proses ditempatkan
di memori. Untuk kemudian kode absolutnya dapat di buat. Jika keumdian amat
awalnya berubah, maka harus di compile ulang.
* waktu eksekusi: Jika proses dapat dipindahkan dari suatu segmen memori ke
lainnya selama dieksekusi. Pengikatan akan ditunda sampai run-time.
------------------------------------------------------------------------------
-
Alamat yang dibuat CPU akan merujuk ke sebuah alamat logik. Sedangkan alamat
yang dilihat oleh memori adalah alamat yang dimasukkan ke register di memori,
merujuk pada alamat fisik pada pengikatan alamat, waktu compile dan waktu
penempatan mnghasilkan daerah dimana alamat logik dan alamat fisik sama.
Sedangkan pada waktu eksekusi menghasilkan alamat fisik dan logik yang
berbeda.
Kita biasanya menyebut alamat logik dengan alamat virtual. Kumpulan alamat
logik yang dibuat oleh program adalah ruag alamat logik. Kumpulan alamat fisik
yang berkoresponddensi dengan alamat logik sibut ruang alamat fisik. Pemetaan
dari virtual ke alamat fisik dialkukan oleh Memory-Management Unit (MMU), yang
merupakan sebuah perangkat keras.
------------------------------------------------------------------------------
-
Penempatan Dinamis
Telah kita ketahui seluruh proses dan data berada memori fisik ketika di
eksekusi. Ukuran dari memori fisik terbatas. Untuk mendapatkan utilisasi ruang
memori yang baik, kita melakukan penempatan dinamis. Dengan penempatan
dinamis,
sebuah rutin tidak akan ditempatkan sampai dipanggil. Semua rutin diletakan di
disk, dalam format yang dapat di lokasikan ulang. Program utama di tempatkan
di
memori dan dieksekusi. Jika sebuah rutin memanggil rutin lainnya, maka akan di
cek dulu apakah rutin yang dipanggil ada di dalam memori atau tidak, jika
tidak
ada maka linkage loader dipanggil untuk menempatkan rutin yang diinginkan ke
memori dan memperbaharui tabel alamat program untuk menyesuaikan perubahan.
Kemudian kontrol diletakan pada rutin yang baru ditempatkan.
Keuntungan dari penempatan dinamis adalah rutin yang tidak digunakan tidak
pernah ditempatkan. Metode ini berguna untuk kode dalam jumlah banyak, ketika
muncul kasus-kasus yang tidak lazim, seperti rutin yang salah. Dalam kode yag
besar, walau pun ukuran kode besar, tapi yang ditempatkan dapat jauh lebih
kecil.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Lapisan Atas
Karena proses dapat lebih besar daripada memori yang dialokasikan, kita
gunakan
lapisan atas. Idenya untuk menjaga agar di dalam memori berisi hanya instruksi
dan data yang dibutuhkan dalam satuan waktu. Ketika instruksi lain dibutuhkan
instruksi akan dimasukkan kedalam ruang yang ditempati sebelumnya oleh oleh
instruksi yang tidak lagi dibutuhkan.
Sebagai contoh, sebuah two-pass assembler. selama pass1 dibangun sebuah tabel
simbol, kemudian selama pass2, akan membuat kode bahasa mesin. kita dapat
mempartisi sebuah assembler menjadi kode pass1, kode pass2, dan simbol tabel.
dan rutin biasa digunakan untuk kedua pass1 dan pass2.
Untuk menempatkan semuanya sekaligus, kita akan membutuhkan 200K memori. Jika
hanya 150K yang tersedia, kita tidak dapat menjalankan proses. Bagaimana pun
perhatikan bahwa pass1 dan pass2 tidak harus berada di memori pada saat yang
sama. Kita mendefinisikan dua lapisan atas. Lapisan atas A untuk pass1, tabel
simbol dan rutin, lapisan atas 2 untuk simbol tabel, rutin, dan pass2.
Kita menambahkan sebuah driver lapisan atas (10K) dan mulai dengan lapisan
atas
A di memori. Ketika selesai pass1, lompat ke driver, dan membaca lapisan atas
B
kedalam memori, meniban lapisan atas A, dan mengirim kontrol ke pass2. Lapisan
atas A butuh hanya 120K, dan B membutuhkan 150K memori. Kita sekarang dapat
menjalankan assembler dalam 150K memori. Penempatan akan lebih cepat, karena
lebih sedikit data yang ditransfer sebelum eksekusi dimulai. Jalan program
akan
lebih lambat, karena ekstra I/O dari kode lapisan atas B melalui kode lapisan
atas A.
Di sisi lain programmer harus mendesain program dengan struktur lapisan atas
yang layak. Tugas ini membutuhkan pengetahuan yang komplit tentang struktur
dari program, kode dan struktur data.
Pemakaian dari lapisan atas, dibatasi oleh mikrokomputer, dan sistem lain yang
mempunyai batasan jumlah memori fisik, dan kurangnya dukungan perangkat keras,
untuk teknik yang lebih maju. Teknik otomatis menjalankan program besar dalam
dalam jumlah memori fisik yang terbatas, lebih diutamakan.
------------------------------------------------------------------------------
-
Penukaran (Swap)
Sebuah proses membutuhkan memori untuk dieksekusi. Sebuah proses dapat ditukar
sementara keluar memori ke backing store (disk), dan kemudian dibawa masuk
lagi
ke memori untuk dieksekusi. Sebagai contoh, asumsi multiprogramming, dengan
penjadualan algoritma CPU Round-Robin. Ketika kuantum habis, manager memori
akan mulai menukar keluar proses yang selesai, dan memasukkan ke memori proses
yang bebas. Sementara penjadualan CPU akan mangalokasikan waktu untuk proses
lain di memori. Ketika tiap proses menghabiskan waktu kuantumnya, proses akan
ditukar dengan proses lain. Idealnya memori manager, dapat menukar
proses-proses cukup cepat, sehingga selalu ada proses dimemori, siap
dieksekusi, ketika penjadual CPU ingin menjadual ulang CPU. Besar kuantum juga
harus cukup besar, sehingga jumlah perhitungan yang dilakukan antar pertukaran
masuk akal.
Konteks waktu pergantian pada sistem swapping, lumayan tinggi. Untuk efisiensi
kegunaan CPU, kita ingin waktu eksekusi untuk tiap proses lebih lama dari
waktu
pertukaran. Karenanya digunakan CPU penjadualan roun-robin, dimana kuantumnya
harus lebih besar dari waktu pertukaran.
Proses dengan kebutuhan memori dinamis, akan membutuhkan system call (meminta
dan melepaskan memori), untuk memberi tahu sistem operasi tentang perubahan
kebutuhan memori.
Ada beberapa keterbatasan swapping. Jika kita ingin menukar sebuah proses kita
harus yakin bahwa proses sepenuhnya diam. Konsentrasi lebih jauh, jika ada
penundaan I/O. Sebuah proses mungkin menunggu I/O, ketika kita ingin menukar
proses itu untuk mengosongkan memori. Jika I/O secara asinkronus, mengakses
memori dari I/O buffer, maka proses tidak bisa ditukar. Misalkan I/O operation
berada di antrian, karena device sedang sibuk. Maka bila kita menukar keluar
proses P1 dan memasukkan P2, mungkin saja operasi I/O akan berusaha masuk ke
memori yang sekarang milik P2. Dua solusi utama masalah ini adalah
------------------------------------------------------------------------------
-
Register batasan berisi jarak dari alamat logik (logical address), sementara
register pengalokasian kembali berisi nilai dari alamat fisik (physical
address) yang terkecil. Dengan adanya register pengalokasian kembali dan
register batasan ini, mengakibatkan suatu alamat logik harus lebih kecil dari
register batas an dan memori akan memetakan (mapping) alamat logik secara
dinamik dengan menambah nilai dalam register pengalokasian kembali.
Oleh karena setiap alamat yang ditentukan oleh prosesor diperiksa berlawanan
dengan register-register ini, kita dapat melindungi sistem operasi dari
program
pengguna lainnya dan data dari pemodifikasian oleh proses yang sedang
berjalan.
+ Metode ini cukup baik karena dia dapat menentukan ruang proses;
sementara ruang proses harus konstan. Jadi sangat sesuai dengan parti
si berukuran tetap yang dihasilkan metode ini.
+ Setiap partisi dapat berisi tepat satu proses sehingga derajat dari
pemrograman banyak multiprogramming dibatasi oleh jumlah partisi yang
ada.
+ Ketika suatu partisi bebas, satu proses dipilih dari masukan antrian
dan dipindahkan ke partisi tersebut.
+ Kebijakan alokasi:
3. Sesuai yang pertama: memilih lubang pertama yang cukup besar untuk
keperluan proses
+ Memori, yang tersedia untuk semua pengguna, dianggap sebagai suatu blok
besar memori yang disebut dengan lubang. Pada suatu saat memori
memiliki suatu daftar set lubang (free list holes).
+ Saat suatu proses memerlukan memori, maka kita mencari suatu lubang
yang cukup besar untuk kebutuhan proses tersebut.
+ Jika suatu proses tersebut telah selesai, maka dia akan melepaskan
kembali semua memori yang digunakan dan sistem operasi dapat
mengalokasikannya lagi untuk proses lainnya yang sedang menunggu di
antrian masukan.
+ Jika suatu lubang terlalu besar, maka sistem operasi akan membagi
lubang tersebut menjadi dua bagian, dimana satu bagian untuk
dialokasikan ke proses tersebut dan satu lagi dikembalikan ke set
lubang lainnya.
* Ada cukup ruang memori untuk memenuhi suatu permintaan, tetapi memori itu
tidak lagi berhubungan antara satu bagian dengan bagian lain (contiguous)
karena telah dibagi-bagi.
* Kasus terburuk (Worst case): akan ada satu blok ruang memori yang kosong
yang terbuang antara setiap dua proses.
* Aturan 50 persen: dialokasikan N blok, maka akan ada 0.5N blok yang hilang
akibat fragmentasi sehingga itu berarti 1/3 memori akan tidak berguna.
Waktu Ruang
===================
Sesuai yang Terbaik Buruk Baik
Sesuai yang Terburuk Buruk Buruk
Sesuai yang Pertama Baik Baik
Sesuai yang pertama merupakan kebijakan alokasi memori paling baik secara
praktis.
------------------------------------------------------------------------------
-
Pemberian Halaman
Solusi lain yang mungkin untuk permasalahan pemecahan luar adalah dengan
membuat ruang alamat fisik dari sebuah proses menjadi tidak bersebelahan, jadi
membolehkan sebuah proses untuk dialokasikan memori fisik bilamana nantinya
tersedia. Satu cara mengimplementasikan solusi ini adalah melalui penggunaan
dari skema pemberian halaman. Pemberian halaman mencegah masalah penting dari
mengepaskan the ukuran bongkahan memori yang bervariasi ke dalam penyimpanan
cadangan, yang mana diderita oleh kebanyakan dari skema managemen memori
sebelumnya. Ketika beberapa pecahan kode dari data yang tersisa di memori
utama
perlu untuk di tukar keluar, harus ditemukan ruang di penyimpanan cadangan.
Masalah pemecahan didiskusikan dengan kaitan bahwa meori utama juga lazim
dengan penyimpanan cadangan, kecuali bahwa pengaksesanny lebih lambat, jadi
kerapatan adalah tidak mungkin. Karena keuntungannya pada metode-metode
sebelumnya, pemberian halaman dalam berbagai bentuk biasanya digunakan pada
banyak sistem operasi.
------------------------------------------------------------------------------
-
Metode Dasar
Memori fisik dipecah menjadi blok-blok berukuran tetap disebut sebagai frame.
Memori logis juga dipecah menjadi blok-blok dengan ukuran yang sama disebut
sebagai halaman. Ketika proses akan dieksekusi, halamannya akan diisi ke dalam
frames memori mana saja yang tersedia dari penyimpanan cadangan. Penyimpanan
cadangan dibagi-bagi menjadi blok-blok berukuran tetap yang sama besarnya
dengan frames di memori.
[gambar441]
Untuk konkritnya, walau kecil sekali, contoh, lihat memori Gambar 4-4.
Menggunakan ukuran halaman 4 byte dan memori fisik 32 byte (8 halaman), kami
menunjukan bagaimana pandangan pengguna terhadap memori dapat dipetakan
kedalam
memori fisik. Alamat logis 0 adalah halaman 0, offset 0. Pemberian index
menjadi tabel halaman, kita dapati bahwa halaman 0 berada pada frame 5. Jadi,
alamat logis 0 memetakan ke alamat fisik 20 (=(5x4)+0). Alamat logis 3 (page
0,
offset 3) memetakan ke alamat fisik 23 (=(5x4)+3). Alamat logis 4 adalah
halaman 1, offset; menurut tabel halaman, halaman 1 dipetakan ke frame 6.
Jadi,
alamat logis 4 memetakan ke alamat fisik 24 (=(6x4)+0). Alamat logis 13
memetakan ke alamat fisik 9.
Gambar 4-4. Model pemberian halaman dari memori fisik dan logis. Sumber: . . .
[gambar442]
Pembentukan pemberian halaman itu sendiri adalah suatu bentuk dari penampungan
dinamis. Setiap alamat logis oleh perangkat keras untuk pemberian halaman
dibatasi ke beberapa alamat fisik. Pembaca yang setia akan menyadari bahwa
pemberian halaman sama halnya untuk menggunakan sebuah tabel dari basis
register, satu untuk setiap frame di memori.
Ketika proses tiba untuk dieksekusi, ukurannya yang diungkapkan di halaman itu
diperiksa. Setiap pengguna membutuhkan satu frame. Jadi, jika proses
membutuhkan n halaman, maka pasti ada n frame yang tersedia di memori. Jika
ada
n frame yang tersedia, maka mereka dialokasikan di proses ini. Halamn pertama
dari proses diisi ke salah satu frame yang sudah teralokasi, dan nomor
frame-nya diletakkan di tabel halaman untuk proses ini. Halaman berikutnya
diisikan ke frame yang lain, dan nomor frame-nya diletakkan ke tabel halaman,
dan begitu seterusnya (gambar Gambar 4-4).
Aspek penting dari pemberian halaman adalah pemisahan yang jelas antara
pandangan pengguna tentang memori dan fisik memori sesungguhnya. Program
pengguna melhiat memori sebagai satu ruang berdekatan yang tunggal, hanya
mengandung satu program itu. Faktanya, program pengguna terpencar-pencar
didalam memori fisik, yang juga menyimpan program lain. Perbedaan antara
pandangan pengguna terhadap memori dan fisik memori sesungguhnya disetarakan
oleh perangkat keras penterjemah alamat. Alamat logis diterjemahkan ke alamat
fisik. Pemetaan ini tertutup bagi pengguna dan dikendalikan oleh sistem
operasi. Perhatikan bahwa proses pengguna dalam definisi tidak dapat mengakses
memori yang bukan haknya. Tidak ada pengalamatan memori di luar tabel
halamannya, dan tabelnya hanya melingkupi halaman yang proses itu miliki.
Karena sistem operasi mengatur memori fisik, maka harus waspada dari rincian
alokasi memori fisik: frame mana yang dialokasikan, frame mana yang tersedia,
berapa banyak total frame yang ada, dan masih banyak lagi. Informasi ini
umumnya disimpan di struktur data yang disebut sebagai tabel frame. Tabel
frame
punya satu masukan untuk setiap fisik halaman frame, menandakan apakah yang
terakhir teralokasi ataukah tidak, jika teralokasi maka kepada halaman mana
dari proses mana.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Pemeliharaan
------------------------------------------------------------------------------
-
Banyak sistem komputer moderen mendukung ruang alamat logis yang sangat luas
(2
pangkat 32 sampai 2 pangkat 64). Pada lingkungan seperti itu tabel halamanya
sendiri menjadi sangat-sangat besat sekali. Untuk contoh, misalkan suatu
sistem
dengan ruang alamat logis 32-bit. Jika ukuran halaman di sistem seperti itu
adalah 4K 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 fisik sampai 4 megabyte hanya
untuk
tabel halamannya saja. Jelasnya, kita tidak akan mau mengalokasi tabel halaman
secara berdekatan di dalam memori. Satu solusi sederhananya adalah dengan
membagi tabel halaman menjadi potongan-potongan yang lebih kecil lagi. Ada
beberapa cara yang berbeda untuk menyelesaikan ini.
[gambar443]
[gambar444]
[gambar445]
------------------------------------------------------------------------------
-
Tabel Halaman yang Dibalik
[gambar446]
------------------------------------------------------------------------------
-
Berbagi Halaman
[gambar447]
Kode pemasukan kembali (juga disebut kode murni) adalah kode yang bukan
self-modifying. Jika kodenya dimasukan kembali, maka ia tidak akan berubah
selama eksekusi. Jadi, dua atau lebih proses dapat mengeksekusi kode yang sama
pada saat bersamaan. Tiap-tiap proses mempunyai register salinannya sendiri
dan
penyimpan data untuk menahan data bagi proses bereksekusi. Data untuk dua
proses yang berbeda akan bervariasi pada tiap-tiap proses.
Hanya satu salinan editor yang dibutuhkan untuk menyimpan di memori fisik.
Setiap tabel halaman pengguna memetakan ke salinan fisik yang sama dari
editor,
tapi halaman-halaman data dipetakan ke frame yang berbeda. Jadi, untuk
mendukung 40 pengguna, kita hanya membutuhkan satu salinannya editor (150K),
ditambah 40 salinan 50K dari ruang data per pengguna. Total ruang yang
dibutuhkan sekarang 2150K, daripada 8000K, penghematan yang signifikan.
System yang menggunakan tabel halaman yang dibalik mempunyai kesulitan dalam
mengimplementasikan berbagi memori. Berbagi memori biasanya diimplementasikan
sebagai dua alamat maya yang dipetakan ke satu alamat fisik. Metode standar
ini
tidak dapat digunakan, bagaimana pun juga selama di situ hanya ada satu
masukan
halaman maya untuk setiap halaman fisik, jadi satu alamat fisik tidak dapat
mempunyai dua atau lebih alamat maya yang dibagi-bagi.
------------------------------------------------------------------------------
-
Segmentasi
Salah satu aspek penting dari managemen memori yang tidak dapat dihindari dari
pemberian halaman adalah pemisahan cara pandang pengguna dengan tentang
bagaimana memori dipetakan dengan keadaan yang sebenarnya. Pada kenyataannya
pemetaan tersebut memperbolehkan pemisahan antara memori logis dan memori
fisik.
------------------------------------------------------------------------------
-
Metode Dasar
Ketika kita menulis suatu program, kita akan menganggapnya sebagai sebuah
program dengan sekumpulan dari subrutin, prosedur, fungsi, atau variabel.
mungkin juga terdapat berbagai macam struktur data seperti: tabel, array,
stack, variabel, dsb. Tiap-tiap modul atau elemen-elemen dari data ini dapat
di-referensikan dengan suatu nama, tanpa perlu mengetahui dimana alamat
sebenarnya elemen-elemen tersebut disimpan di memori. dan kita juga tidak
perlu
mengetahui apakah terdapat urutan penempatan dari program yang kita buat. Pada
kenyataannya, elemen-elemen yang terdapat pada sebuah segmen dapat ditentukan
lokasinya dengan menambahkan offset dari awal alamat segmen tersebut.
1. Variabel Global;
------------------------------------------------------------------------------
-
Perangkat Keras
Walau pun pengguna sekarang dapat mengacu ke suatu objek yang berada di dalam
program dengan menggunakan pengalamatan secara dua dimensi, akan tetapi, pada
kenyataannya tetap saja pada memori fisik akan dipetakan ke dalam pengalamatan
satu dimensi yang terdiri dari urutan dari byte-byte. Maka, kita harus
mendefinisikan suatu implementasi untuk memetakan pengalamatan dua dimensi
yang
dilakukan oleh pengguna ke dalam pengalamatan satu dimensi yang terdapat di
memori fisik. pemetaan ini dapat di lakukan dengan menggunakan tabel segmen.
Setiap anggota dari tabel segmen mempunyai basis dan limit yang akan
menentukan
letak dari segmen tersebut di dalam memori.
[gambar451]
Kegunaan tabel segmen dapat dilihat pada gambar Gambar 4-10 alamat logis
terdiri dari dua bagian: bagian segmen, s, dan bagian offsetnya, d. Nomor dari
segmen tersebut akan digunakan sebagai index di dalam tabel segmen. Offset
dari
d di alamat logis sebaiknya tidak melebihi limit dari alamat segmen, jika ini
terjadi, maka sistem operasi sebaiknya dapat mengatasi hal ini, dengan
melakukan trap.
------------------------------------------------------------------------------
-
Pemeliharaan dan Pembagian
------------------------------------------------------------------------------
-
Fragmentasi
Pengertian
Metode segmentasi dan paging yang telah dijelaskan pada sub bab sebelumnya
masing-masing memiliki keuntungan dan kerugian. Selain kedua metode itu ada
metode pengaturan memori lain yang berusaha menggabungkan metode segmentasi
dan
paging. Metode ini disebut dengan segmentation with paging. Dengan metode ini
jika ukuran segmen melebihi ukuran memori utama maka segmen tersebut
dibagi-bagi jadi ukuran-ukuran halaman yang sama ==> paging.
------------------------------------------------------------------------------
-
Sesuai dengan definisinya yang merupakan gabungan dari segmentasi dan paging,
maka metode ini memiliki keunggulan yang dimiliki baik oleh metode segmentasi
mau pun yang dimiliki oleh paging. Tetapi selain itu segmentasi dengan
pemberian halaman ini juga memiliki beberapa kelebihan yang tidak dimiliki
oleh
kedua metode tersebut. Kelebihan-kelebihan segmentasi dengan pemberian halaman
antara lain:
* Dapat dibagi.
* Proteksi.
* Banyak variasinya.
------------------------------------------------------------------------------
-
5. Pada segmentasi terdapat banyak ruang alamat linier sedangkan pada paging
hanya terdapat satu ruang alamat linier.
6. Pada segmentasi prosedur dan data dapat dibedakan dan diproteksi terpisah
sedangkan pada paging prosedur dan data tidak dapat dibedakan dan
diproteksi terpisah.
------------------------------------------------------------------------------
-
Salah satu contoh prosesor yang menggunakan metode segmentasi dengan pemberian
halaman ini diantaranya adalah Intel i386. Jumlah maksimum segmen tiap proses
adalah 16 K dan besar tiap segmen adalah 4 GB. Dan ukuran halamannya adalah 4
KB.
------------------------------------------------------------------------------
-
Logical Address
Ruang logical address dari suatu proses terbagi menjadi dua partisi yaitu:
1. Partisi I
2. Partisi II
Tiap masukan atau entri pada Local Descriptor Table dan Global Descriptor
Table
terdiri dari 8 bita dengan informasi yang detil tentang segmen khusus termasuk
lokasi dasar dan panjang segmen tersebut.
Logical address merupakan sepasang:
1. Selektor
s g p
13 1 2
2. Offset
Terdiri dari angka 32 bit yang menspesifikasikan lokasi suatu kata atau
bita di dalam segmen tersebut.
------------------------------------------------------------------------------
-
Alamat Fisik
Alamat fisik 386 panjangnya adalah 32 bit. Mula-mula register segmen menunjuk
ke masukan atau entri di Global Descriptor Table atau Local Descriptor Table.
Kemudian informasi dasar dan limit tentang segmen tersebut digunakan untuk
mengeneralisasikan alamat linier. Limit itu digunakan untuk mengecek keabsahan
alamat. Jika alamat tidak sah maka akan terjadi memori fault yang menyebabkan
terjadinya trap pada sistem operasi. Sedangkan apabila alamat itu sah maka
nilai dari offset ditambahkan kenilai dasar yang menghasilkan alamat linier 32
bit. Alamat inilah yang kemudian diterjemahkan ke alamat fisik.
Seperti dikemukakan sebelumnya tiap segmen dialamatkan dan tiap halaman 4 KB.
Sebuah tabel halaman mungkin terdiri sampai satu juta masukan atau entri.
Karena tiap entri terdiri dari 4 byte, tiap proses mungkin membutuhkan sampai
4
MB ruang alamat fisik untuk halaman tabel sendiri. Sudah jelas kalau kita
tidak
menginginkan untuk mengalokasi tabel halaman bersebelahan di memori utama.
Solusi yang dipakai 386 adalah dengan menggunakan skema paging dua tingkat
(two-level paging scheme). Alamat linier dibagi menjadi nomer halaman yang
terdiri dari 20 bit dan offset halaman terdiri dari 12 bit. Karena kita page
tabel halaman dibagi jadi 10 bit penunjuk halaman direktori dan 10 bit
penunjuk
tabel halaman sehingga logical address menjadi:
nomor halaman
offset halaman
p1 p2 d
10 10 12
------------------------------------------------------------------------------
-
Memori Virtual
Pada nyatanya tidak semua bagian dari program tersebut akan diproses,
misalnya:
2. Terdapat fungsi-fungsi yang jarang digunakan, bahkan sampai lebih dari 100x
pemakaian.
Salah satu cara untuk mengatasinya adalah dengan overlay dan dynamic loading .
Namun hal ini menimbulkan masalah baru karena implementasinya yang rumit dan
penulisan program yang akan memakan tempat di memori. Tujuan semula untuk
menghemat memori bisa jadi malah tidak tercapai apabila program untuk overlay
dan dynamic loading . malah lebih besar daripada program yang sebenarnya ingin
dieksekusi.
------------------------------------------------------------------------------
-
Pengertian
Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan
memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh
bagian program perlu ikut masuk ke dalam memori.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual
dapat menampung program dalam skala besar, melebihi daya tampung dari memori
utama yang tersedia.
Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan
maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah
melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan
memori virtual."
Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961
pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto,
Bambang : 2001).
------------------------------------------------------------------------------
-
Keuntungan
* Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal,
untuk program butuh membaca dari disk dan memasukkan dalam memory setiap
kali diakses.
* Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih
tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan
dari user.
------------------------------------------------------------------------------
-
Implementasi
Gagasan dari memori virtual adalah ukuran gabungan program, data dan stack
melampaui jumlah memori fisik yang tersedia. Sistem operasi menyimpan
bagian-bagian proses yang sedang digunakan di memori utama (main memory) dan
sisanya ditaruh di disk. Begitu bagian di disk diperlukan, maka bagian di
memori yang tidak diperlukan akan disingkirkan (swap-out) dan diganti (swap-
in)
oleh bagian disk yang diperlukan itu.
------------------------------------------------------------------------------
-
Prinsip permintaan pemberian halaman (demand paging) hampir sama dengan sistem
penomoran (paging) dengan menggunakan swapping. Perbedaannya adalah page pada
permintaan pemberian halaman tidak akan pernah di-swap ke memori sampai ia
benar-benar diperlukan. Untuk itu diperlukan adanya pengecekan dengan bantuan
perangkat keras mengenai lokasi dari page saat ia dibutuhkan.
------------------------------------------------------------------------------
-
Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan
pada page yang dibutuhkan, yaitu:
2. Page ada tetapi belum ditaruh di memori (harus menunggu sampai dimasukkan).
3. Page tidak ada, baik di memori mau pun di disk (invalid reference -->
abort).
Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami page
fault.
------------------------------------------------------------------------------
-
Dengan meminjam konsep yang sudah pernah dijelaskan dalam Bab 9, maka dapat
ditentukan page 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 page legal dan berada dalam memori (kasus 1), sedangkan
"tidak valid" berarti page tidak ada (kasus 3) atau page ada tapi tidak
ditemui
di memori (kasus 2).
Pengesetan bit:
Bit 1 -->
page berada di memori
Bit 0 -->
page tidak berada di
memori.
(Dengan inisialisasi: semua bit
di-set 0).
Apabila ternyata hasil dari translasi, bit page = 0, berarti page fault
terjadi.
------------------------------------------------------------------------------
-
1. Cek tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau
tidaknya bit.
3. Memilih frame kosong (free-frame), misal dari free-frame list. Jika tidak
ditemui ada frame yang kosong, maka dilakukan swap-out dari memori. Frame
mana yang harus di-swap-out akan ditentukan oleh algoritma (lihat sub bab
Page Replacement).
4. Menjadualkan operasi disk untuk membaca page yang diinginkan ke frame yang
baru dialokasikan.
6. Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi page
fault terjadi saat instruksi di-fetch, maka akan dilakukan fecthing lagi.
Jika terjadi saat operan sedang di-fetch, maka harus dilakukan fetch ulang,
decode, dan fetch operan lagi.
------------------------------------------------------------------------------
-
* komputasi microcode dan berusaha untuk mengakses kedua ujung dari blok,
agar tidak ada modifikasi page yang sempat terjadi.
Sedangkan masalah ketiga diatasi dengan mengeset bit FPD (first phase done)
sehingga restart instruction tidak akan dimulai dari awal program, melainkan
dari tempat program terakhir dieksekusi.
------------------------------------------------------------------------------
-
* Secondary memory, tempat menyimpan page yang tidak ada di memori utama.
Lebih lanjut, sebagai konsekuensi dari persyaratan ini, akan diperlukan pula
perangkat lunak yang dapat mendukung terciptanya pemberian nomor halaman.
------------------------------------------------------------------------------
-
Pemindahan Halaman
Pada dasarnya, kesalahan halaman (page fault) sudah tidak lagi menjadi masalah
yang terlalu dianggap serius. Hal ini disebabkan karena masing-masing halaman
pasti akan mengalami paling tidak satu kali kesalahan dalam pemberian halaman,
yakni ketika halaman ini ditunjuk untuk pertama kalinya. Representasi seperti
ini sebenarnya tidaklah terlalu akurat. Berdasarkan pertimbangan tersebut,
sebenarnya proses-proses yang memiliki 10 halaman hanya akan menggunakan
setengah dari jumlah seluruh halaman yang dimilikinya. Kemudian demand paging
akan menyimpan I/O yang dibutuhkan untuk mengisi 5 halaman yang belum pernah
digunakan. Kita juga dapat meningkatkan derajat multiprogramming dengan
menjalankan banyak proses sebanyak 2 kali.
Lebih jauh lagi, kita harus mempertimbangkan bahwa sistem memori tidak hanya
digunakan untuk menangani pengalamatan suatu program. Penyangga (buffer) untuk
I/O juga menggunakan sejumlah memori. Penggunaan ini dapat meningkatkan
pemakaian algoritma dalam penempatan di memori. Beberapa sistem mengalokasikan
secara pasti beberapa persen dari memori yang dimilikinya untuk penyangga I/O,
dimana keduanya, baik proses pengguna mau pun subsistem dari I/O saling
berlomba untuk memanfaatkan seluruh sistem memori.
------------------------------------------------------------------------------
-
Skema Dasar
Pemindahan halaman mengambil pendekatan seperti berikut. Jika tidak ada frame
yang kosong, kita mencari frame yang tidak sedang digunakan dan
mengosongkannya. Kita dapat mengosongkan sebuah frame dengan menuliskan isinya
ke ruang pertukaran (swap space), dan merubah tabel halaman (juga tabel-tabel
lainnya) untuk mengindikasikan bahwa halaman tesebut tidak akan lama berada di
memori. Sekarang kita dapat menggunakan frame yang kosong sebagai penyimpan
halaman dari proses yang salah. Rutinitas pemindahan halaman:
b. Jika tidak ada frame kosong, gunakan algoritma pemindahan halaman untuk
menyeleksi frame yang akan digunakan.
c. Tulis halaman yang telah dipilih ke disk, ubah tabel halaman dan tabel
frame.
3. Baca halaman yang diinginkan kedalam frame kosong yang baru, ubah tabel
halaman dan tabel frame.
Jika tidak ada frame yang kosong, pentransferan dua halaman (satu masuk, satu
keluar) akan dilakukan. Situasi ini secara efektif akan menggandakan waktu
pelayanan kesalahan halaman dan meningkatkan waktu akses efektif. Kita dapat
mengurangi pemborosan ini dengan menggunakan bit tambahan. Masing- masing
halaman atau frame mungkin memiliki bit tambahan yang diasosiasikan didalam
perangkat keras.
Sebagai contoh, jika kita memeriksa proses khusus, kita mungkin akan mencatat
urutan alamat seperti dibawah ini:
0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101,
0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105,
dimana pada 100 bytes setiap halaman, diturunkan menjadi string acuan seperti
berikut:
1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
------------------------------------------------------------------------------
-
Algoritma ini adalah algoritma paling sederhana dalam hal pemindahan halaman.
Algoritma pemindahan FIFO (First In First Out) mengasosiasikan waktu pada saat
halaman dibawa kedalam memori dengan masing-masing halaman. Pada saat halaman
harus dipindahkan, halaman yang paling tua yang dipilih. Sebagai contoh:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 4 4 4 0 0 0 7 7 7
0 0 0 3 3 3 2 2 2 1 1 1 0 0
1 1 1 0 0 0 3 3 3 2 2 2 1
frame halaman
Dari contoh diatas, terdapat 15 kesalahan halaman. Algoritma FIFO mudah untuk
dipahami dan diimplementasikan. Namun performance-nya tidak selalu bagus.
Salah
satu kekurangan dari algoritma FIFO adalah kemungkinan terjadinya anomali
Beladi, dimana dalam beberapa kasus, tingkat kesalahan akan meningkat seiring
dengan peningkatan jumlah frame yang dialokasikan.
------------------------------------------------------------------------------
-
Salah satu akibat dari upaya mencegah terjadinya anomali Beladi adalah
algoritma pemindahan halaman secara optimal. Algoritma ini memiliki tingkat
kesalahan halaman terendah dibandingkan dengan algoritma-algoritma lainnya.
Algoritma ini tidak akan mengalami anomaly Belady. Konsep utama dari algoritma
ini adalah mengganti halaman yang tidak akan digunakan untuk jangka waktu yang
paling lama. Algoritma ini menjamin kemungkinan tingkat kesalahan terendah
untuk jumlah frame yang tetap. Sebagai contoh:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 2 7
0 0 0 0 4 0 0 0
1 1 3 3 3 1 1
------------------------------------------------------------------------------
-
Jika algoritma optimal sulit untuk dilakukan, mungkin kita dapat melakukan
pendekatan terhadap algoritma tersebut. Jika kita menggunakan waktu yang baru
berlalu sebagai pendekatan terhadap waktu yang akan datang, kita akan
memindahkan halaman yang sudah lama tidak digunakan dalam jangka waktu yang
terlama. Pendekatan ini disebut algoritma LRU (Least Recently Used).
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 4 4 4 0 1 1 1
0 0 0 0 0 0 3 3 3 0 0
1 1 3 3 2 2 2 2 2 7
frame halaman
Dari contoh diatas, terdapat 12 kesalahan halaman. Meski pun algoritma ini
menghasilkan 12 kesalahan halaman, algoritma ini masih lebih baik daripada
algoritma FIFO, yang menghasilkan 15 kesalahan halaman. Untuk
mengimplementasikan algoritma LRU, terdapat 2 implementasi yang dapat
digunakan, yaitu dengan counter dan stack.
Selain algoritma optimal, algoritma LRU juga dapat terhindar dari anomali
Beladi. Salah satu kelas dari algoritma pemindahan halaman adalah algoritma
stack, yang juga tidak akan pernah mengalami anomali Beladi. Algoritma stack
ini menyimpan nomor-nomor halaman pada stack. Kapan pun suatu halaman
ditunjuk,
halaman ini dikeluarkan dari stack dan diletakkan di blok paling atas dari
stack. Dengan cara seperti ini, blok paling atas dari stack selalu berisi
halaman yang baru digunakan, sedangkan blok terbawah dari stack selalu berisi
halaman yang sudah lama tidak digunakan. Karena suatu halaman dalam stack
dapat
dikeluarkan meski pun berada ditengah-tengah stack, maka implementasi terbaik
untuk algoritma ini adalah dengan daftar mata rantai ganda (doubly linked
list), dengan kepala dan ekor sebagai penunjuk. Pendekatan ini sangat tepat
untuk perangkat lunak atau implementasi kode mikro dari algoritma LRU. Sebagai
contoh:
4 7 0 7 1 0 1 2 1 2 7 1 2
4 7 0 7 1 0 1 2 1 2 7 1 2
4 7 0 7 1 0 1 2 1 2 7 1
4 4 0 7 7 0 0 0 1 2 7
4 4 4 7 7 7 0 0 0
4 4 4 4 4 4
frame halaman.
------------------------------------------------------------------------------
-
Hanya sedikit sistem komputer yang menyediakan perangkat lunak yang memberikan
cukup dukungan terhadap algoritma pemindahan halaman secara LRU. Banyak sistem
yang tidak menyediakan perangkat lunak yang memberikan dukungan terhadap
algoritma LRU, sehingga terpaksa menggunakan algoritma lain, seperti FIFO.
Banyak sistem menyediakan bantuan untuk menangani masalah ini, misalnya dengan
bit acuan. Bit acuan untuk halaman diset oleh perangkat lunak kapan pun
halaman
tersebut ditunjuk. Bit acuan diasosiasikan dengan masing-masing isi dari tabel
halaman.
Awalnya, seluruh bit dikosongkan oleh sistem operasi. Selama proses pengguna
dijalankan, bit yang diasosiasikan ke masing-masing halaman acuan diset
menjadi
1 oleh perangkat keras. Setelah beberapa waktu, kita dapat menentukan halaman
mana yang sudah digunakan dan halaman mana yang belum digunakan dengan menguji
bit-bit acuan. Informasi tersebut memberikan informasi penting untuk banyak
algoritma pemindahan halaman yang memperkirakan halaman mana yang sudah lama
tidak digunakan.
------------------------------------------------------------------------------
-
Algoritma Additional-Reference-Bit
------------------------------------------------------------------------------
-
Algoritma Second-Chance
------------------------------------------------------------------------------
-
* (1,1) digunakan dan dimodifikasi, halaman ini mungkin akan segera digunakan
lagi dan halaman ini perlu ditulis ke disk sebelum dipindahkan.
------------------------------------------------------------------------------
-
Kedua algoritma diatas tidaklah terlalu umum, hal ini disebabkan karena
implementasi dari kedua algoritma diatas sangatlah mahal.
------------------------------------------------------------------------------
-
Algoritma Page-Buffering
Teknik seperti ini digunakan dalam sistem VAX/ VMS, dengan algoritma FIFO.
Ketika algoritma FIFO melakukan kesalahan dengan memindahkan halaman yang
masih
digunakan secara aktif, halaman tersebut akan dengan cepat diambil kembali
dari
penyangga frame-kosong, untuk melakukan hal tersebut tidak ada I/O yang
dibutuhkan. Metode ini diperlukan oleh VAX karena versi terbaru dari VAX tidak
mengimplementasikan bit acuan secara tepat.
------------------------------------------------------------------------------
-
Alokasi Frame
Kasus paling mudah dari memori virtual adalah sistem satu pemakai. Misalkan
sebuah sistem mempunyai memori 128K dengan ukuran halaman 1K, sehingga ada 128
frame. Sistem operasinya menggunakan 35K sehingga ada 93 frame yang tersisa
untuk proses tiap user. Untuk pure demand paging, ke-93 frame tersebut akan
ditaruh pada daftar frame bebas. Ketika sebuah proses user mulai dijalankan,
akan terjadi sederetan page fault. Sebanyak 93 page fault pertama akan
mendapatkan frame dari daftar frame bebas. Saat frame bebas sudah habis,
sebuah
algoritma pergantian halaman akan digunakan untuk memilih salah satu dari 93
halaman di memori yang diganti dengan yang ke 94, dan seterusnya. Ketika
proses
selesai atau diterminasi, sembilan puluh tiga frame tersebut akan disimpan
lagi
pada daftar frame bebas.
Terdapat macam-macam variasi untuk strategi sederhana ini, kita bisa meminta
sistem operasi untuk mengalokasikan seluruh buffer dan ruang tabel-nya dari
daftar frame bebas. Saat ruang ini tidak digunakan oleh sistem operasi, ruang
ini bisa digunakan untuk mendukung paging dari user. Kita juga dapat menyimpan
tiga frame bebas yang dari daftar frame bebas, sehingga ketika terjadi page
fault, ada frame bebas yang dapat digunakan untuk paging. Saat pertukaran
halaman terjadi, penggantinya dapat dipilih, kemudian ditulis ke disk,
sementara proses user tetap berjalan.
Variasi lain juga ada, tetapi ide dasarnya tetap yaitu proses pengguna
diberikan frame bebas yang mana saja. Masalah lain muncul ketika demand paging
dikombinasikan dengan multiprogramming. Hal ini terjadi karena
multiprogramming
menaruh dua (atau lebih) proses di memori pada waktu yang bersamaan.
------------------------------------------------------------------------------
-
Tentu saja ada berbagai batasan pada strategi kita untuk alokasi frame. Kita
tidak dapat mengalokasikan lebih dari jumlah total frame yang tersedia
(kecuali
ada page sharing). Ada juga jumlah minimal frame yang dapat di alokasikan.
Jelas sekali, seiring dengan bertambahnya jumlah frame yang dialokasikan ke
setiap proses berkurang, tingkat page fault bertambah dan mengurangi kecepatan
eksekusi proses.
Selain hal tersebut di atas, ada jumlah minimum frame yang harus dialokasikan.
Jumlah minimum ini ditentukan oleh arsitektur set instruksi. Ingat bahwa
ketika
terjadi page fault, sebelum eksekusi instruksi selesai, instruksi tersebut
harus diulang. Sehingga kita harus punya jumlah frame yang cukup untuk
menampung semua halaman yang dirujuk oleh sebuah instruksi tunggal.
Jumlah minimum frame ditentukan oleh arsitektur komputer. Sebagai contoh,
instruksi move pada PDP-11 adalah lebih dari satu kata untuk beberapa modus
pengalamatan, sehingga instruksi tersebut bisa membutuhkan dua halaman.
Sebagai
tambahan, tiap operannya mungkin merujuk tidak langsung, sehingga total ada
enam frame. Kasus terburuk untuk IBM 370 adalah instruksi MVC. Karena
instruksi
tersebut adalah instruksi perpindahan dari penyimpanan ke penyimpanan,
instruksi ini butuh 6 bit dan dapat memakai dua halaman. Satu blok karakter
yang akan dipindahkan dan daerah tujuan perpindahan juga dapat memakai dua
halaman, sehingga situasi ini membutuhkan enam frame.
Kesimpulannya, jumlah minimum frame yang dibutuhkan per proses tergantung dari
arsitektur komputer tersebut, sementara jumlah maksimumnya ditentukan oleh
jumlah memori fisik yang tersedia. Di antara kedua jumlah tersebut, kita punya
pilihan yang besar untuk alokasi frame.
------------------------------------------------------------------------------
-
Algoritma Alokasi
Cara termudah untuk membagi m frame terhadap n proses adalah untuk memberikan
bagian yang sama, sebanyak m/n frame untuk tiap proses. Sebagai contoh ada 93
frame tersisa dan 5 proses, maka tiap proses akanmendapatkan 18 frame. Frame
yang tersisa, sebanyak 3 buah dapat digunakan sebagai frame bebas cadangan.
Strategi ini disebut equal allocation.
Let the size of the virtual memory for process pi be si, and define S = si.
Lalu, jika jumlah total dari frame yang 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 berdasarkan multiprogramming level-nya. Jika multiprogramming
level-nya meningkat, setiap proses akan kehilangan beberapa frame guna
menyediakan memori yang dibutuhkan untuk proses yang baru. Di sisi lain, jika
multiprogramming level-nya menurun, frame yang sudah dialokasikan pada bagian
process sekarang bisa disebar ke proses-proses yang masih tersisa.
Mengingat hal itu, dengan equal atau pun proportional allocation, proses yang
berprioritas tinggi diperlakukan sama dengan proses yang berprioritas rendah.
Berdasarkan definisi tersebut, bagaimanapun juga, kita ingin memberi memori
yang lebih pada proses yang berprioritas tinggi untuk mempercepat eksekusi-
nya,
to the detriment of low-priority processes.
------------------------------------------------------------------------------
-
Dengan strategi Penggantian Lokal, jumlah frame yang teralokasi pada sebuah
proses tidak berubah. Dengan Penggantian Global, ada kemungkinan sebuah proses
hanya menyeleksi frame-frame yang teralokasi pada proses lain, sehingga
meningkatkan jumlah frame yang teralokasi pada proses itu sendiri (asumsi
bahwa
proses lain tidak memilih frame proses tersebut untuk penggantian).
Masalah pada algoritma Penggantian Global adalah bahwa sebuah proses tidak
bisa
mengontrol page-fault-nya sendiri. Himpunan halaman dalam memori untuk sebuah
proses tergantung tidak hanya pada kelakuan paging dari proses tersebut,
tetapi
juga pada kelakuan paging dari proses lain. Karena itu, proses yang sama dapat
tampil berbeda (memerlukan 0,5 detik untuk satu eksekusi dan 10,3 detik untuk
eksekusi berikutnya) due to totally external circumstances. Dalam Penggantian
Lokal, himpunan halaman dalam memori untuk sebuah proses hanya dipengaruhi
kelakuan paging proses itu sendiri. Penggantian Lokal dapat menyembunyikan
sebuah proses dengan membuatnya tidak tersedia bagi proses lain, menggunakan
halaman yang lebih sedikit pada memori. Jadi, secara umum Penggantian Global
menghasilkan sistem throughput yang lebih bagus, maka itu artinya metode yang
paling sering digunakan.
------------------------------------------------------------------------------
-
Thrashing
Jika suatu proses tidak memiliki frame yang cukup, walau pun kita memiliki
kemungkinan untuk mengurangi banyaknya frame yang dialokasikan menjadi
minimum,
tetap ada halaman dalam jumlah besar yang memiliki kondisi aktif
menggunakannya. Maka hal ini akan mengakibatkan kesalahan halaman. Pada kasus
ini, kita harus mengganti beberapa halaman menjadi halaman yang dibutuhkan
walau pun halaman yang diganti pada waktu dekat akan dibutuhkan lagi. Hal ini
mengakibatkan kesalahan terus menerus.
Aktivitas yang tinggi dari paging disebut thrashing. Suatu proses dikatakan
thrashing jika proses menghabiskan waktu lebih banyak untuk paging daripada
eksekusi (proses sibuk untuk melakukan swap-in swap-out).
------------------------------------------------------------------------------
-
Penyebab Thrashing
Penyebab dari thrashing adalah utilisasi CPU yang rendah. Jika utilisasi CPU
terlalu rendah, kita menambahkan derajat dari multiprogramming dengan
menambahkan proses baru ke sistem.
[gambar4B1]
------------------------------------------------------------------------------
-
Model Working Set didasarkan pada asumsi lokalitas. Model ini menggunakan
parameter [delta4] (delta) untuk mendefinisikan jendela Working Set. Idenya
adalah untuk menentukan [delta4] halaman yang dituju yang paling sering
muncul.
Kumpulan dari halaman dengan [delta4] halaman yang dituju yang paling sering
muncul disebut Working Set. Working Set adalah pendekatan dari program
lokalitas.
* Jika [delta4] terlalu kecil, tidak akan dapat mewakilkan keseluruhan dari
lokalitas.
* Jika [delta4] tidak terbatas, Working Set adalah kumpulan halaman sepanjang
eksekusi proses.
Jika kita menghitung ukuran dari Working Set, WWSi, untuk setiap proses pada
sistem, kita hitung dengan D = [delta4] WSSi, dimana D merupakan total demand
untuk frame.
Jika total demand lebih dari total banyaknya frame yang tersedia (D > m),
thrashing dapat terjadi karena beberapa proses akan tidak memiliki frame yang
cukup. Jika hal tersebut terjadi, dilakukan satu pengeblokan dari proses-
proses
yang sedang berjalan.
Kesulitan dari model Working Set ini adalah menjaga track dari Working Set.
Jendela Working Set adalah jendela yang bergerak. Suatu halaman berada pada
Working Set jika halaman tersebut mengacu ke mana pun pada jendela Working
Set.
Kita dapat mendekati model Working Set dengan fixed interval timer interrupt
dan reference bit.
Ketika kita mendapat interrupt, kita kopi dan hapus nilai reference bit dari
setiap halaman. Jika kesalahan halaman muncul, kita dapat menentukan current
reference bit dan 2 pada bit memori untuk memutuskan apakah halaman itu
digunakan dengan 10000 ke 15000 reference terakhir.
Jika digunakan, paling sedikit satu dari bit-bit ini akan aktif. Jika tidak
digunakan, bit ini akan menjadi tidak aktif.
Halaman yang memiliki paling sedikit 1 bit aktif, akan berada di working-set.
Hal ini tidaklah sepenuhnya akurat karena kita tidak dapat memberitahukan
dimana pada interval 5000 tersebut, reference muncul. Kita dapat mengurangi
ketidakpastian dengan menambahkan sejarah bit kita dan frekuensi dari
interrupt.
------------------------------------------------------------------------------
-
[gambar4B2]
Jika kecepatan kesalahan halaman yang sesungguhnya melampaui batas atas, kita
mengalokasikan frame lain ke proses tersebut, sedangkan jika kecepatan
kesalahan halaman di bawah batas bawah, kita pindahkan frame dari proses
tersebut. Maka kita dapat secara langsung mengukur dan mengontrol kecepatan
kesalahan halaman untuk mencegah thrashing.
------------------------------------------------------------------------------
-
Pada bagian ini kita akan membahas beberapa contoh dalam penggunaan memori
virtual.
------------------------------------------------------------------------------
-
Windows NT
Saat jumlah memori bebas jatuh di bawah nilai batasan, manager memori virtual
menggunakan sebuah taktik yang dikenal sebagai automatic working set trimming
untuk mengembalikan nilai tersebut di atas batasan. Hal ini bekerja dengan
mengevaluasi jumlah page yang dialokasikan kepada proses. Jika proses telah
mendapat alokasi page lebih besar daripada Working Set minimum-nya, manager
memori virtual akan menggunakan algoritma FIFO untuk mengurangi jumlah page-
nya
sampai working-set minimum. Jika memori bebas sudah tersedia, proses yang
bekerja pada working set minimum dapat mendapatkan page tambahan.
------------------------------------------------------------------------------
-
Solaris 2
Dalam sistem operasi Solaris 2, jika sebuah proses menyebabkan terjadi page
fault, kernel akan memberikan page kepada proses Tersebut dari daftar page
bebas yang disimpan. Akibat dari hal ini adalah, kernel harus menyimpan
sejumlah memori bebas. Terhadap daftar ini ada dua parameter yg disimpan yaitu
minfree dan lotsfree, yaitu batasan minimum dan maksimum dari memori bebas
yang
tersedia. Empat kali dalam tiap detiknya, kernel memeriksa jumlah memori yang
bebas. Jika jumlah tersebut jatuh di bawah minfree, maka sebuah proses pageout
akan dilakukan, dengan pekerjaan sebagai berikut. Pertama clock akan memeriksa
semua page dalam memori dan mengeset bit referensi menjadi 0. Saat berikutnya,
clock kedua akan memeriksa bit referensi page dalam memori, dan mengembalikan
bit yang masih di set ke 0 ke daftar memori bebas. Hal ini dilakukan sampai
jumlah memori bebas melampaui parameter lotsfree. Lebih lanjut, proses ini
dinamis, dapat mengatur kecepatan jika memori terlalu sedikit. Jika proses ini
tidak bisa membebaskan memori, maka kernel memulai pergantian proses untuk
membebaskan page yang dialokasikan ke proses-proses tersebut.
------------------------------------------------------------------------------
-
Linux
Seperti pada solaris 2, linux juga menggunakan variasi dari algoritma clock.
Thread dari kernel linux (kswapd) akan dijalankan secara periodik (atau
dipanggil ketika penggunaan memori sudah berlebihan). Jika jumlah page yang
bebas lebih sedikit dari batas atas page bebas, maka thread tersebut akan
berusaha untuk membebaskan tiga page. Jika lebih sedikit dari batas bawah page
bebas, thread tersebut akan berusaha untuk membebaskan 6 page dan 'tidur'
untuk
beberapa saat sebelum berjalan lagi. Saat dia berjalan, akan memeriksa
mem_map,
daftar dari semua page yang terdapat di memori. Setiap page mempunyai byte
umur
yang diinisialisasikan ke 3. Setiap kali page ini diakses, maka umur ini akan
ditambahkan (hingga maksimum 20), setiap kali kswapd memeriksa page ini, maka
umur akan dikurangi. Jika umur dari sebuah page sudah mencapai 0 maka dia bisa
ditukar. Ketika kswapd berusaha membebaskan page, dia pertama akan membebaskan
page dari cache, jika gagal dia akan mengurangi cache sistim berkas, dan jika
semua cara sudah gagal, maka dia akan menghentikan sebuah proses. Alokasi
memori pada linux menggunakan dua buah alokasi yang utama, yaitu algoritma
buddy dan slab. Untuk algoritma buddy, setiap rutin pelaksanaan alokasi ini
dipanggil, dia memeriksa blok memori berikutnya, jika ditemukan dia
dialokasikan, jika tidak maka daftar tingkat berikutnya akan diperiksa. Jika
ada blok bebas, maka akan dibagi jadi dua, yang satu dialokasikan dan yang
lain
dipindahkan ke daftar yang di bawahnya.
------------------------------------------------------------------------------
-
Pertimbangan Lain
------------------------------------------------------------------------------
-
Sebuah ciri dari sistem demand-paging adalah adanya page fault yang terjadi
saat proses dimulai. Situasi ini adalah hasil dari percobaan untuk mendapatkan
tempat pada awalnya. Situasi yang sama mungkin muncul di lain waktu. Saat
proses swapped-out dimulai kembali, seluruh halaman ada di disk dan setiap
halaman harus dibawa masuk oleh page-fault-nya masing-masing. Sebelum
pemberian
halaman mencoba untuk mencegah tingkat tinggi dari paging awal. Stateginya
adalah untuk membawa seluruh halaman yang akan dibutuhkan pada satu waktu ke
memori.
Pada sistem yang menggunakan model working-set, sebagai contoh, kita tetap
dengan setiap proses sebuah daftar dari halaman-halaman di working-set-nya.
Jika kita harus menunda sebuah proses (karena menunggu I/O atau kekurangan
frame bebas), kita mengingat working-set untuk proses itu. Saat proses itu
akan
melanjutkan kembali (I/O komplit atau frame bebas yang cukup), kita secara
otomatis membawa kembali ke memori seluruh working-set sebelum memulai kembali
proses tersebut.
------------------------------------------------------------------------------
-
Ukuran Halaman
Para perancang sistem operasi untuk mesin yang ada kini jarang memiliki
pilihan
terhadap ukuran halaman. Bagaimana pun, saat mesin-mesin baru sedang dibuat,
pemilihan terhadap ukuran halaman terbaik harus dibuat. Seperti yang kau
mungkin harapkan, tidak ada sebuah ukuran halaman yang terbaik. Namun, ada
himpunan faktor-faktor yang mendukung ukuran-ukuran yang bervariasi.
Ukuran-ukuran halaman selalu dengan pangkat 2, secara umum berkisar dari 4.096
(2^12) ke 4.194.304 (2^22) bytes
Bagaimana kita memilih sebuah ukuran halaman? Sebuah perhatian adalah ukuran
dari tabel halaman. Untuk sebuah memori virtual dengan ukuran 4 megabytes (2^
22), akan ada 4.096 halaman 1.024 bytes, tapi hanya 512 halaman 8.192 bytes.
Sebab setiap proses aktif harus memiliki salinan dari tabel halamannya, sebuah
halaman yang besar diinginkan.
Di sisi lain, memori lebih baik digunakan dengan halaman yang lebih kecil.
Jika
sebuah proses dialokasikan di memori mulai dari lokasi 00000, melanjutkan
sampai memiliki sebanyak yang dibutuhkan, itu mungkin tidak akan berakhir
secara tepat di batas halaman. Kemudian, sebuah bagian dari halaman terakhir
harus dialokasikan (sebab halaman-halaman adalah unit-unit dari alokasi) tapi
tidak digunakan (pemecahan bagian dalam). Asumsikan ketergantungan antara
ukuran proses dan ukuran halaman, kita dapat mengharapkan bahwa, dalam
rata-rata, satu-setengah dari halaman terakhir dari setiap proses akan
dibuang.
Kehilangan ini hanya 256 bytes dari sebuah halaman 512 bytes, tapi akan 4.096
bytes dari halaman 8.192 bytes. Untuk meminimalkan pemecahan bagian dalam,
kita
membutuhkan ukuran halaman yang kecil.
Masalah lain adalah waktu yang dibutuhkan untuk membaca atau menulis halaman.
Waktu I/O terdiri dari mencari, keterlambatan dan waktu pemindahan. Waktu
transfer proporsional terhadap jumlah yang dipindahkan (yaitu, ukuran tabel).
Sebuah fakta bahwa yang mungkin terasa janggal untuk ukuran tabel yang kecil.
Ingat kembali dari Bab 2, bagaimana pun, keterlambatan dan waktu pencarian
normalnya membuat waktu pemindahan menjadi kecil. Pada saat laju pemindahan 2
megabytes per detik, hanya menghabiskan 0.2 millidetik untuk memindahkan 512
bytes. Keterlambatan, di sisi lain, kira-kira 8 millidetik dan waktu pencarian
20 millidetik. Dari total waktu I/O (28.2 millidetik), untuk itulah, 1 persen
dapat dihubungkan dengan pemindahan sebenarnya. Menggandakan ukuran halaman
meningkatkan waktu I/O hingga 28.4 millidetik. Menghabiskan 28.4 millidetik
untuk membaca halaman tunggal dari dari 1.024 bytes, tapi 56.4 millidetik
untuk
jumlah yang sama sebesar dua halaman masing-masing 512 bytes. Kemudian,
keinginan untuk meminimalisir waktu I/O untuk ukuran halaman yang lebih besar
------------------------------------------------------------------------------
-
Kegunaan dari bentuk manajemen halaman adalah untuk mengurangi jumlah memori
fisik yang dibutuhkan untuk melacak penerjemahan alamat virtual-to-physical.
Kita menyelesaikan metode penghematan ini dengan membuat tabel yang memiliki
hanya satu masukan tiap halaman memori fisik, terdaftar oleh pasangan
(pengenal
proses, nomor halaman).
Karena mereka tetap menjaga informasi tentang halaman memori virtual yang mana
yang disimpan di setiap frame fisik, tabel halaman yang terbalik mengurangi
jumlah fisik memori yang dibutuhkan untuk menyimpan informasi ini. Bagaimana
pun, tabel halaman yang dibalik tidak lagi mengandung informasi yang lengkap
tentang alamat ruang logical dari sebuah proses, dan informasi itu dibutuhkan
jika halaman yang direferensikan tidak sedang berada di memori. Demand paging
membutuhkan informasi ini untuk memproses page faults. Agar informasi ini
tersedia, sebuah tabel halaman luar (satu tiap proses) harus tetap dijaga.
Setiap tabel tampak seperti tabel halaman tiap proses tradisional, mengandung
informasi dimana setiap halaman virtual berada.
Tetapi, melakukan tabel halaman luar menegasikan kegunaan tabel halaman yang
dibalik? Sejak tabel-tabel ini direferensikan hanya saat page fault terjadi,
mereka tidak perlu untuk tersedia secara cepat. Namun, mereka masing-masing
diberikan atau dikeluarkan halaman dari memori sesuai kebutuhan. Sayangnya,
sebuah page fault mungkin sekarang muncul di manager memori virtual
menyebabkan
halaman lain fault seakan-akan halaman ditabel halaman luar perlu untuk
mengalokasikan virtual page di bantuan penyimpanan. Ini merupakan kasus
spesial
membutuhkan penanganan di kernel dan delay di proses melihat halaman.
------------------------------------------------------------------------------
-
Struktur Program
Pemilihan yang hati-hati dari struktur data dan struktur permograman dapat
meningkatkan locality dan karenanya menurunkan laju page fault dan jumlah
halaman di himpunan kerja. Sebuah stack memiliki locality yang baik, sejak
akses selalu dibuat di atas. Sebuah hash table, di sisi lain, didesain untuk
menyebar referensi-referensi, menghasilkan locality yang buruk. Tentunya,
referensi akan locality hanyalah satu ukuran dari efisiensi penggunaan
struktur
data. Faktor-faktor lain yang berbobot berat termasuk kecepatan pencarian,
jumlah total dari referensi dan jumlah total dari halaman yang disentuh.
------------------------------------------------------------------------------
-
Penyambungan Masukan dan Keluaran
------------------------------------------------------------------------------
-
Pengertian
Sistem berkas merupakan mekanisme penyimpanan on-line serta untuk akses, baik
data mau pun program yang berada dalam Sistem Operasi. Terdapat dua bagian
penting dalam sistem berkas, yaitu:
Pada bab ini, akan dibahas tentang berbagai aspek dari berkas dan struktur,
cara menangani proteksi berkas, cara mengalokasikan ruang pada disk, melacak
lokasi data, serta meng-interface bagian-bagian lain dari sistem operasi ke
penyimpanan sekunder.
------------------------------------------------------------------------------
-
Berkas
------------------------------------------------------------------------------
-
Konsep Dasar
Berkas adalah kumpulan informasi berkait yang diberi nama dan direkam pada
penyimpanan sekunder. Dari sudut pandang pengguna, berkas merupakan bagian
terkecil dari penyimpanan logis, artinya data tidak dapat ditulis ke
penyimpanan sekunder kecuali jika berada di dalam berkas. Biasanya berkas
merepresentasikan program (baik source mau pun bentuk objek) dan data. Data
dari berkas dapat bersifat numerik, alfabetik, alfanumerik, atau pun biner.
Format berkas juga bisa bebas, misalnya berkas teks, atau dapat juga diformat
pasti. Secara umum, berkas adalah urutan bit, byte, baris, atau catatan yang
didefinisikan oleh pembuat berkas dan pengguna.
Informasi dalam berkas ditentukan oleh pembuatnya. Ada banyak beragam jenis
informasi yang dapat disimpan dalam berkas. Hal ini disebabkan oleh struktur
tertentu yang dimiliki oleh berkas, sesuai dengan jenisnya masing-masing.
Contohnya:
* Text file; yaitu urutan karakter yang disusun ke dalam baris-baris.
* Source file; yaitu urutan subroutine dan fungsi, yang nantinya akan
dideklarasikan.
* Object file; merupakan urutan byte yang diatur ke dalam blok-blok yang
dikenali oleh linker dari sistem.
* Executable file; adalah rangkaian code section yang dapat dibawa loader ke
dalam memori dan dieksekusi.
------------------------------------------------------------------------------
-
Berkas diberi nama, untuk kenyamanan bagi pengguna, dan untuk acuan bagi data
yang terkandung di dalamnya. Nama berkas biasanya berupa string atau karakter.
Beberapa sistem membedakan penggunaan huruf besar dan kecil dalam penamaan
sebuah berkas, sementara sistem yang lain menganggap kedua hal di atas
sama.Ketika berkas diberi nama, maka berkas tersebut akan menjadi mandiri
terhadap proses, pengguna, bahkan sistem yang membuatnya. Atribut berkas
terdiri dari:
* Nama; merupakan satu-satunya informasi yang tetap dalam bentuk yang bisa
dibaca oleh manusia (human-readable form)
* Ukuran (size); yaitu ukuran berkas pada saat itu, baik dalam byte, huruf,
atau pun blok
* Proteksi; adalah informasi mengenai kontrol akses, misalnya siapa saja yang
boleh membaca, menulis, dan mengeksekusi berkas
1. pembuatan berkas,
Sebuah berkas adalah jenis data abstrak. Untuk mendefinisikan berkas secara
tepat, kita perlu melihat operasi yang dapat dilakukan pada berkas tersebut.
Sistem operasi menyediakan system calls untuk membuat, membaca, menulis,
mencari, menghapus, dan sebagainya. Berikut dapat kita lihat apa yang harus
dilakukan sistem operasi pada keenam operasi dasar pada berkas.
* Membuat sebuah berkas: Ada dua cara dalam membuat berkas. Pertama, tempat
baru di dalam sistem berkas harus di alokasikan untuk berkas yang akan
dibuat. Kedua, sebuah direktori harus mempersiapkan tempat untuk berkas
baru, kemudian direktori tersebut akan mencatat nama berkas dan lokasinya
pada sistem berkas.
* Menulis pada sebuah berkas: Untuk menulis pada berkas, kita menggunakan
system call beserta nama berkas yang akan ditulisi dan informasi apa yang
akan ditulis pada berkas. Ketika diberi nama berkas, sistem mencari ke
direktori untuk mendapatkan lokasi berkas. Sistem juga harus menyimpan
penunjuk tulis pada berkas dimana penulisan berikut akan ditempatkan.
Penunjuk tulis harus diperbaharui setiap terjadi penulisan pada berkas.
* Membaca sebuah berkas: Untuk dapat membaca berkas, kita menggunakan system
call beserta nama berkas dan di blok memori mana berkas berikutnya
diletakkan. Sama seperti menulis, direktori mencari berkas yang akan
dibaca, dan sistem menyimpan penunjuk baca pada berkas dimana pembacaan
berikutnya akan terjadi. Ketika pembacaan dimulai, penunjuk baca harus
diperbaharui. Sehingga secara umum, suatu berkas ketika sedang dibaca atau
ditulis, kebanyakan sistem hanya mempunyai satu penunjuk, baca dan tulis
menggunakan penunjuk yang sama, hal ini menghemat tempat dan mengurangi
kompleksitas sistem.
* Menghapus sebuah berkas: Untuk menghapus berkas kita perlu mencari berkas
tersebut di dalam direktori. Setelah ditemukan kita membebaskan tempat yang
dipakai berkas tersebut (sehingga dapat digunakkan oleh berkas lain) dan
menghapus tempatnya di direktori.
Enam operasi dasar ini sudah mencakup operasi minimum yang di butuhkan.
Operasi
umum lainnya adalah menyambung informasi baru di akhir suatu berkas, mengubah
nama suatu berkas, dan lain-lain. Operasi dasar ini kemudian digabung untuk
melakukan operasi lainnya. Sebagai contoh misalnya kita menginginkan salinan
dari suatu berkas, atau menyalin berkas ke peralatan I/O lainnya seperti
printer, dengan cara membuat berkas lalu membaca dari berkas lama dan menulis
ke berkas yang baru.
Hampir semua operasi pada berkas melibatkan pencarian berkas pada direktori.
Untuk menghindari pencarian yang lama, kebanyakan sistem akan membuka berkas
apabila berkas tersebut digunakan secara aktif. Sistem operasi akan menyimpan
tabel kecil yang berisi informasi semua berkas yang dibuka yang disebut "tabel
berkas terbuka". Ketika berkas sudah tidak digunakan lagi dan sudah ditutup
oleh yang menggunakan, maka sistem operasi mengeluarkan berkas tersebut dari
tabel berkas terbuka.
Implementasi dari buka dan tutup berkas dalam lingkungan dengan banyak
perngguna seperti UNIX, lebih rumit. Dalam sistem seperti itu pengguna yang
membuka berkas mungkin lebih dari satu dan pada waktu yang hampir bersamaan.
Umumnya sistem operasi menggunakan tabel internal dua level. Ada tabel yang
mendata proses mana saja yang membuka berkas tersebut, kemudian tabel tersebut
menunjuk ke tabel yang lebih besar yang berisi informasi yang berdiri sendiri
seperti lokasi berkas pada disk, tanggal akses dan ukuran berkas. Biasanya
tabel tersebut juga memiliki data berapa banyak proses yang membuka berkas
tersebut.
Jadi, pada dasarnya ada beberapa informasi yang terkait dengan pembukaan
berkas
yaitu:
* Penunjuk Berkas: Pada sistem yang tidak mengikutkan batas berkas sebagai
bagian dari system call baca dan tulis, sistem tersebut harus mengikuti
posisi dimana terakhir proses baca dan tulis sebagai penunjuk. Penunjuk ini
unik untuk setiap operasi pada berkas, maka dari itu harus disimpan
terpisah dari atribut berkas yang ada pada disk.
* Lokasi berkas pada disk: Kebanyakan operasi pada berkas memerlukan sistem
untuk mengubah data yang ada pada berkas. Informasi mengenai lokasi berkas
pada disk disimpan di memori agar menghindari banyak pembacaan pada disk
untuk setiap operasi.
Jenis Berkas
Pertimbangan utama dalam perancangan sistem berkas dan seluruh sistem operasi,
apakah sistem operasi harus mengenali dan mendukung jenis berkas. Jika suatu
sistem operasi mengenali jenis dari berkas, maka ia dapat mengoperasikan
berkas
tersebut. Contoh apabila pengguna mencoba mencetak berkas yang merupakan kode
biner dari program yang pasti akan menghasilkan sampah, hal ini dapat dicegah
apabila sistem operasi sudah diberitahu bahwa berkas tersebut merupakan kode
biner.
Teknik yang umum digunakan dalam implementasi jenis berkas adalah menambahkan
jenis berkas dalam nama berkas. Nama dibagi dua, nama dan akhiran (ekstensi),
biasanya dipisahkan dengan karakter titik. Sistem menggunakan akhiran tersebut
untuk mengindikasikan jenis berkas dan jenis operasi yang dapat dilakukan pada
berkas tersebut. Sebagai contoh hanya berkas yang berakhiran .bat, .exe atau
.com yang bisa dijalankan (eksekusi). Program aplikasi juga menggunakan
akhiran
tersebut untuk mengenal berkas yang dapat dioperasikannya. Akhiran ini dapat
ditimpa atau diganti jika diperbolehkan oleh sistem operasi.
Sistem UNIX tidak dapat menyediakan dukungan untuk akhiran berkas karena
menggunakan angka ajaib yang disimpan di depan berkas untuk mengenali jenis
berkas. Tidak semua berkas memiliki angka ini, jadi sistem tidak bisa
bergantung pada informasi ini. Tetapi UNIX memperbolehkan akhiran berkas
tetapi
hal ini tidak dipaksakan atau tergantung sistem operasi, kebanyakan hanya
untuk
membantu pengguna mengenali jenis isi dari suatu berkas.
+-----------------------------------------------------------------------------
+
|Jenis berkas|Akhiran |Fungsi
|
|------------+-------------
+--------------------------------------------------|
|executable |exe, com, |program yang siap dijalankan
|
| |bat, bin |
|
|------------+-------------
+--------------------------------------------------|
|objek |obj, o |bahasa mesin, kode terkompilasi
|
|------------+-------------
+--------------------------------------------------|
|kode asal |c, cc, pas, |kode asal dari berbagai bahasa
|
|(source |java, asm, a |
|
|code) | |
|
|------------+-------------
+--------------------------------------------------|
|batch |bat, sh |perintah pada shell
|
|------------+-------------
+--------------------------------------------------|
|text |txt, doc |data text, document
|
|------------+-------------
+--------------------------------------------------|
|pengolah |wpd, tex, doc|format jenis pengolah data
|
|kata | |
|
|------------+-------------
+--------------------------------------------------|
|library |lib, a, DLL |library untuk rutin program
|
|------------+-------------
+--------------------------------------------------|
|print, |ps, dvi, gif |format aSCII atau biner untuk dicetak
|
|gambar | |
|
|------------+-------------
+--------------------------------------------------|
|archive |arc, zip, tar|beberapa berkas yang dikumpulkan menjadi satu
|
| | |berkas. Terkadang dimampatkan untuk penyimpanan
|
+-----------------------------------------------------------------------------
+
------------------------------------------------------------------------------
-
Struktur Berkas
Kita juga dapat menggunakan jenis berkas untuk mengidentifikasi struktur dalam
dari berkas. Berkas berupa source dan objek memiliki struktur yang cocok
dengan
harapan program yang membaca berkas tersebut. Suatu berkas harus memiliki
struktur yang dikenali oleh sistem operasi. Sebagai contoh, sistem operasi
menginginkan suatu berkas yang dapat dieksekusi memiliki struktur tertentu
agar
dapat diketahui dimana berkas tersebut akan ditempatkan di memori dan di mana
letak instruksi pertama berkas tersebut. Beberapa sistem operasi mengembangkan
ide ini sehingga mendukung beberapa struktur berkas, dengan beberapa operasi
khusus untuk memanipulasi berkas dengan struktur tersebut.
Sangat berguna bagi sistem operasi untuk mendukung struktur berkas yang sering
digunakan karena akan menghemat pekerjaan pemrogram. Terlalu sedikit struktur
berkas yang didukung akan mempersulit pembuatan program, terlalu banyak akan
membuat sistem operasi terlalu besar dan pemrogram akan bingung.
------------------------------------------------------------------------------
-
Menempatkan batas dalam berkas dapat menjadi rumit bagi sistem operasi. Sistem
disk biasanya memiliki ukuran blok yang sudah ditetapkan dari ukuran sektor.
Semua I/O dari disk dilakukan dalam satuan blok dan semua blok ('physical
record') memiliki ukuran yang sama. Tetapi ukuran dari 'physical record' tidak
akan sama dengan ukuran 'logical record'. Ukuran dari 'logical record' akan
bervariasi. Memuatkan beberapa 'logical record' ke dalam 'physical record'
merupakan solusi umum dari masalah ini.
Sebagai contoh pada sistem operasi UNIX, semua berkas didefinisikan sebagai
kumpulan byte. Setiap byte dialamatkan menurut batasnya dari awal berkas
sampai
akhir. Pada kasus ini ukuran 'logical record' adalah 1 byte. Sistem berkas
secara otomatis memuatkan byte-byte tersebut kedalam blok pada disk.
Ukuran 'logical record', ukuran blok pada disk, dan teknik untuk memuatkannya
menjelaskan berapa banyak 'logical record' dalam tiap-tiap 'physical record'.
Teknik memuatkan dapat dilakukan oleh aplikasi pengguna atau oleh sistem
operasi.
Berkas juga dapat dianggap sebagai urutan dari beberapa blok pada disk.
Konversi dari 'logical record' ke 'physical record' merupakan masalah
perangkat
lunak.
Tempat pada disk selalu berada pada blok, sehingga beberapa bagian dari blok
terakhir yang ditempati berkas dapat terbuang. Jika setiap blok berukuran 512
byte, sebuah berkas berukuran 1.949 byte akan menempati empat blok (2.048
byte)
dan akan tersisa 99 byte pada blok terakhir. Byte yang terbuang tersebut
dipertahankan agar ukuran dari unit tetap blok bukan byte disebut fragmentasi
dalam disk. Semua sistem berkas pasti mempunyai fragmentasi dalam disk,
semakin
besar ukuran blok akan semakin besar fragmentasi dalam disknya.
------------------------------------------------------------------------------
-
* Penulisan ke berkas yang dibuka oleh pengguna dapat dilihat langsung oleh
pengguna lain yang sedang mengakses ke berkas yang sama.
------------------------------------------------------------------------------
-
Metode Akses
Ketika digunakan, informasi penyimpanan berkas harus dapat diakses dan dibaca
ke dalam memori komputer. Beberapa sistem hanya menyediakan satu metode akses
untuk berkas. Pada sistem yang lain, contohnya IBM, terdapat banyak dukungan
metode akses yang berbeda. Masalah pada sistem tersebut adalah memilih yang
mana yang tepat untuk digunakan pada satu aplikasi tertentu.
------------------------------------------------------------------------------
-
Akses Langsung
Direct Access merupakan metode yang membiarkan program membaca dan menulis
dengan cepat pada berkas yang dibuat dengan fixed-length logical order tanpa
adanya urutan. Metode ini sangat berguna untuk mengakses informasi dalam
jumlah
besar. Biasanya database memerlukan hal seperti ini. Operasi berkas pada
metode
ini harus dimodifikasi untuk menambahkan nomor blok sebagai parameter.
Pengguna
menyediakan nomor blok ke sistem operasi biasanya sebagai nomor blok relatif,
yaitu indeks relatif terhadap awal berkas. Penggunaan nomor blok relatif bagi
sistem operasi adalah untuk memutuskan lokasi berkas diletakkan dan membantu
mencegah pengguna dari pengaksesan suatu bagian sistem berkas yang bukan
bagian
pengguna tersebut.
------------------------------------------------------------------------------
-
Metode ini merupakan hasil dari pengembangan metode direct access. Metode ini
memasukkan indeks untuk mengakses berkas. Jadi untuk mendapatkan suatu
informasi suatu berkas, kita mencari dahulu di indeks, lalu menggunakan
pointer
untuk mengakses berkas dan mendapatkan informasi tersebut. Namun metode ini
memiliki kekurangan, yaitu apabila berkas-berkas besar, maka indeks berkas
tersebut akan semakin besar. Jadi solusinya adalah dengan membuat 2 indeks,
indeks primer dan indeks sekunder. Indeks primer memuat pointer ke indeks
sekunder, lalu indeks sekunder menunjuk ke data yang dimaksud.
------------------------------------------------------------------------------
-
Struktur Direktori
------------------------------------------------------------------------------
-
1. Mencari berkas, kita dapat menemukan sebuah berkas didalam sebuah struktur
direktori. Karena berkas-berkas memiliki nama simbolik dan nama yang sama
dapat mengindikasikan keterkaitan antara setiap berkas-berkas tersebut,
mungkin kita berkeinginan untuk dapat menemukan seluruh berkas yang
nama-nama berkas membentuk pola khusus.
2. Membuat berkas, kita dapat membuat berkas baru dan menambahkan berkas
tersebut kedalam direktori.
3. Menghapus berkas, apabila berkas sudah tidak diperlukan lagi, kita dapat
menghapus berkas tersebut dari direktori.
6. Melintasi sistem berkas, ini sangat berguna untuk mengakses direktori dan
berkas didalam struktur direktori.
------------------------------------------------------------------------------
-
Ini adalah struktur direktori yang paling sederhana. Semua berkas disimpan di
dalam direktori yang sama. Struktur ini tentunya memiliki kelemahan jika
jumlah
berkasnya bertambah banyak, karena tiap berkas mesti memiliki nama yang unik.
------------------------------------------------------------------------------
-
Kelemahan yang ada pada direktori tingkat satu dapat diatas pada sistem
direktori dua tingkat. Caranya ialah dengan membuat direktori secara terpisah.
Pada direktori tingkat dua, setiap pengguna memiliki direktori berkas sendiri
(UFD). Setiap UFD memiliki struktur yang serupa, tapi hanya berisi
berkas-berkas dari seorang pengguna.
Ketika seorang pengguna login, master direktori berkas (MFD) dicari. Isi dari
MFD adalah indeks dari nama pengguna atau nomor rekening, dan tiap entri
menunjuk pada UFD untuk pengguna tersebut. Ketika seorang pengguna ingin
mengakses suatu berkas, hanya UFD-nya sendiri yang diakses. Jadi pada setiap
UFD yang berbeda, boleh terdapat nama berkas yang sama.
------------------------------------------------------------------------------
-
Struktur direktori dua tingkat bisa dikatakan sebagai pohon dua tingkat.
Sebuah
direktori dengan struktur pohon memiliki sejumlah berkas atau subdirektori
lagi. Pada penggunaan yang normal setiap pengguna memiliki direktorinya
sendiri-sendiri. Selain itu pengguna tersebut dapat memiliki subdirektori
sendiri lagi.
Dalam struktur ini dikenal dua istilah, yaitu path relatif dan path mutlak.
Path relatif adalah path yang dimulai dari direktori yang aktif. Sedangkan
path
mutlak adalah path yang dimulai dari direktori akar.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Proteksi Berkas
Ketika kita menyimpan informasi dalam sebuah sistem komputer, ada dua hal yang
harus menjadi perhatian utama kita. Hal tersebut adalah:
Salah satu cara untuk melindungi berkas dalam komputer kita adalah dengan
melakukan pembatasan akses pada berkas tersebut. Pembatasan akses yang
dimaksudkan adalah kita, sebagai pemilik dari sebuah berkas, dapat menentukan
operasi apa saja yang dapat dilakukan oleh pengguna lain terhadap berkas
tersebut. Pembatasan ini berupa sebuah permission atau pun not permitted
operation, tergantung pada kebutuhan pengguna lain terhadap berkas tersebut.
Di
bawah ini adalah beberapa operasi berkas yang dapat diatur aksesnya:
------------------------------------------------------------------------------
-
Hal yang paling umum dari sistem proteksi adalah membuat akses tergantung pada
identitas pengguna yang bersangkutan. Implementasi dari akses ini adalah
dengan
membuat daftar akses yang berisi keterangan setiap pengguna dan keterangan
akses berkas dari pengguna yang bersangkutan. Daftar akses ini akan diperiksa
setiap kali seorang pengguna meminta akses ke sebuah berkas. Jika pengguna
tersebut memiliki akses yang diminta pada berkas tersebut, maka diperbolehkan
untuk mengakses berkas tersebut. Proses ini juga berlaku untuk hal yang
sebaliknya. Akses pengguna terhadap berkas akan ditolak, dan sistem operasi
akan mengeluarkan peringatan Protection Violation.
Masalah baru yang timbul adalah panjang dari daftar akses yang harus dibuat.
Seperti telah disebutkan, kita harus mendaftarkan semua pengguna dalam daftar
akses tersebut hanya untuk akses pada satu berkas saja. Oleh karena itu,
teknik
ini mengakibatkan 2 konsekuensi yang tidak dapat dihindarkan:
1. Pembuatan daftar yang sangat panjang ini dapat menjadi pekerjaan yang
sangat melelahkan sekaligus membosankan, terutama jika jumlah pengguna
dalam sistem tidak dapat diketahui secara pasti.
2. Manajemen ruang harddisk yang lebih rumit, karena ukuran sebuah direktori
dapat berubah-ubah, tidak memiliki ukuran yang tetap.
Kedua konsekuensi diatas melahirkan sebuah teknik daftar akses yang lebih
singkat. Teknik ini mengelompokkan pengguna berdasarkan tiga kategori:
2. Group: Sekelompok pengguna yang memiliki akses yang sama terhadap sebuah
berkas, atau men-share sebuah berkas.
Dengan adanya pengelompokkan pengguna seperti ini, maka kita hanya membutuhkan
tiga field untuk melindungi sebuah berkas. Field ini diasosiasikan dengan 3
buah bit untuk setiap kategori. Dalam sistem UNIX dikenal bit rwx dengan bit r
untuk mengontrol akses baca, bit w sebagai kontrol menulis dan bit x sebagai
bit kontrol untuk pengeksekusian. Setiap field dipisahkan dengan field
separator. Dibawah ini adalah contoh dari sistem proteksi dengan daftar akses
pada sistem UNIX.
+------------------------------------------------------------------+
|drwx | rwx | rwx |1| pbg |staff| 512 |Apr 16 22.25| bekas.txt |
|-----+-----+--------+-+-----+-----+------+------------+-----------|
|owner|group|universe| |group|owner|ukuran| waktu |nama berkas|
+------------------------------------------------------------------+
------------------------------------------------------------------------------
-
Sistem proteksi yang lazim digunakan pada sistem komputer selain diatas adalah
dengan menggunakan password (kata sandi) pada setiap berkas. Beberapa sistem
operasi mengimplementasikan hal ini bukan hanya pada berkas, melainkan pada
direktori. Dengan sistem ini, sebuah berkas tidak akan dapat diakses selain
oleh pengguna yang telah mengetahui password untuk berkas tersebut. Akan
tetapi, masalah yang muncul dari sistem ini adalah jumlah password yang harus
diingat oleh seorang pengguna untuk mengakses berkas dalam sebuah sistem
operasi. Masalah yang lain adalah keamanan password itu sendiri. Jika hanya
satu password yang digunakan, maka kebocoran password tersebut merupakan
malapetaka bagi pengguna yang bersangkutan. Sekali lagi, maka kita harus
menggunakan password yang berbeda untuk setiap tingkatan yang berbeda.
------------------------------------------------------------------------------
-
Struktur Sistem Berkas
* Disk tersebut dapat ditulis ulang di disk tersebut, hal ini memungkinkan
untuk membaca, memodifikasi, dan menulis di disk tersebut.
* Dapat diakses langsung ke setiap blok di disk. Hal ini memudahkan untuk
mengakses setiap berkas baik secara berurut mau pun tidak berurut, dan
berpindah dari satu berkas ke berkas lain dengan hanya mengangkat head disk
dan menunggu disk berputar.
------------------------------------------------------------------------------
-
Sistem operasi menyediakan sistem berkas agar data mudah disimpan, diletakkan
dan diambil kembali dengan mudah. Terdapat dua masalah desain dalam membangun
suatu sistem berkas. Masalah pertama adalah definisi dari sistem berkas. Hal
ini mencakup definisi berkas dan atributnya, operasi ke berkas, dan struktur
direktori dalam mengorganisasikan berkas-berkas. Masalah kedua adalah membuat
algoritma dan struktur data yang memetakan struktur logikal sistem berkas ke
tempat penyimpanan sekunder. Pada dasarnya sistem berkas tersusun atas
beberapa
tingkatan, yaitu (dari yang terendah):
* I/O control, terdiri atas driver device dan interrupt handler. Driver
device adalah perantara komunikasi antara sistem operasi dengan perangkat
keras.
* Logical file system, tingkat ini berisi informasi tentang simbol nama
berkas, struktur dari direktori, dan proteksi dan sekuriti dari berkas
tersebut.
[lapisanfs1]
------------------------------------------------------------------------------
-
Mounting Sistem Berkas
Seperti halnya sebuah berkas yang harus dibuka terlebih dahulu sebelum
digunakan, sistem berkas harus di mount terlebih dahulu sebelum sistem berkas
tersebut siap untuk memproses dalam sistem. Sistem operasi diberikan sebuah
alamat mounting (mount point) yang berisi nama device yang bersangkutan dan
lokasi dari device tersebut.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Metode ini menempatkan setiap berkas pada satu himpunan blok yang berurut di
dalam disk. Alamat disk menyatakan sebuah urutan linier. Dengan urutan linier
ini maka head disk hanya bergerak jika mengakses dari sektor terakhir suatu
silinder ke sektor pertama silinder berikutnya. Waktu pencarian (seek time)
dan
banyak disk seek yang dibutuhkan untuk mengakses berkas yang di alokasi secara
berdampingan ini sangat minimal. Contoh dari sistem operasi yang menggunakan
contiguous allocation adalah IBM VM/ CMS karena pendekatan ini menghasilkan
performa yang baik.
Contiguous allocation dari suatu berkas diketahui melalui alamat dan panjang
disk (dalam unit blok) dari blok pertama. Jadi, misalkan ada berkas dengan
panjang n blok dan mulai dari lokasi b maka berkas tersebut menempati blok b,
b+1, b+2, ..., b+n-1. Direktori untuk setiap berkas mengindikasikan alamat
blok
awal dan panjang area yang dialokasikan untuk berkas tersebut. Terdapat dua
macam cara untuk mengakses berkas yang dialokasi dengan metode ini, yaitu:
* Sequential access, sistem berkas mengetahui alamat blok terakhir dari disk
dan membaca blok berikutnya jika diperlukan.
* Direct access, untuk akses langsung ke blok i dari suatu berkas yang
dimulai pada blok b, dapat langsung mengakses blok b+i.
Kesulitan dari metode alokasi secara berdampingan ini adalah menemukan ruang
untuk berkas baru. Masalah pengalokasian ruang disk dengan metode ini
merupakan
aplikasi masalah dari dynamic storage-allocation (alokasi tempat penyimpanan
secara dinamik), yaitu bagaimana memenuhi permintaan ukuran n dari daftar
ruang
kosong. Strategi-strategi yang umum adalah first fit dan best fit. Kedua
strategi tersebut mengalami masalah fragmentasi eksternal, dimana jika berkas
dialokasi dan dihapus maka ruang kosong disk terpecah menjadi kepingan-
kepingan
kecil. Hal ini akan menjadi masalah ketika banyak kepingan kecil tidak dapat
memenuhi permintaan karena kepingan-kepingan kecil tidak cukup besar untuk
menyimpan berkas, sehingga terdapat banyak ruang yang terbuang.
Masalah yang lain adalah menentukan berapa banyak ruang yang diperlukan untuk
suatu berkas. Ketika berkas dibuat, jumlah dari ruang berkas harus ditentukan
dan dialokasikan. Jika ruang yang dialokasikan terlalu kecil maka berkas tidak
dapat diperbesar dari yang telah dialokasikan. Untuk mengatasi hal ini ada dua
kemungkinan. Pertama, program pengguna dapat diakhiri dengan pesan error yang
sesuai. Lalu, pengguna harus mengalokasikan tambahan ruang dan menjalankan
programnya lagi, tetapi hal ini cost yang dihasilkan lebih mahal. Untuk
mengatasinya, pengguna dapat melakukan estimasi yang lebih terhadap ruang yang
harus dialokasikan pada suatu berkas tetapi hal ini akan membuang ruang disk.
Kemungkinan yang kedua adalah mencari ruang kosong yang lebih besar, lalu
menyalin isi dari berkas ke ruang yang baru dan mengkosongkan ruang yang
sebelumnya. Hal ini menghabiskan waktu yang cukup banyak. Walau pun jumlah
ruang yang diperlukan untuk suatu berkas dapat diketahui, pengalokasian awal
akan tidak efisien. Ukuran berkas yang bertambah dalam periode yang lama harus
dapat dialokasi ke ruang yang cukup untuk ukuran akhirnya, walau pun ruang
tersebut tidak akan digunakan dalam waktu yang lama. Hal ini akan menyebabkan
berkas dengan jumlah fragmentasi internal yang besar.
------------------------------------------------------------------------------
-
Metode ini tentunya mempunyai kerugian, yaitu metode ini hanya dapat digunakan
secara efektif untuk pengaksesan berkas secara sequential (sequential-access
file). Untuk mencari blok ke-i dari suatu berkas, harus dimulai dari awal
berkas dan mengikuti penunjuk sampai berada di blok ke-i. Setiap akses ke
penunjuk akan membaca disk dan kadang melakukan pencarian disk (disk seek).
Hal
ini sangat tidak efisien untuk mendukung kemampuan akses langsung
(direct-access) terhadap berkas yang menggunakan metode alokasi link. Kerugian
yang lain dari metode ini adalah ruang yang harus disediakan untuk penunjuk.
Solusi yang umum untuk masalah ini adalah mengumpulkan blok-blok persekutuan
terkecil dinamakan clusters dan mengalokasikan cluster-cluster daripada blok.
Dengan solusi ini maka, penunjuk menggunakan ruang disk berkas dengan
persentase yang sangat kecil. Metode ini membuat mapping logikal ke fisikal
blok tetap sederhana, tetapi meningkatkan disk throughput dan memperkecil
ruang
yang diperlukan untuk alokasi blok dan management daftar kosong (free-list
management). Akibat dari pendekatan ini adalah meningkatnya fragmentasi
internal, karena lebih banyak ruang yang terbuang jika sebuah cluster sebagian
penuh daripada ketika sebuah blok sebagian penuh. Alasan cluster digunakan
oleh
kebanyakan sistem operasi adalah kemampuannya yang dapat meningkatkan waktu
akses disk untuk berbagai macam algoritma.
Masalah yang lain adalah masalah daya tahan metode ini. Karena semua berkas
saling berhubungan dengan penunjuk yang tersebar di semua bagian disk, apa
yang
terjadi jika sebuah penunjuk rusak atau hilang. Hal ini menyebabkan berkas
menyambung ke daftar ruang kosong atau ke berkas yang lain. Salah satu
solusinya adalah menggunakan linked list ganda atau menyimpan nama berkas dan
nomor relatif blok dalam setiap blok, tetapi solusi ini membutuhkan perhatian
lebih untuk setiap berkas.
Variasi penting dari metode ini adalah penggunaan file allocation table (FAT),
yang digunakan oleh sistem operasi MS-DOS dan OS/2. Bagian awal disk pada
setiap partisi disingkirkan untuk menempatkan tabelnya. Tabel ini mempunyai
satu masukkan untuk setiap blok disk, dan diberi indeks oleh nomor blok.
Masukkan direktori mengandung nomor blok dari blok awal berkas. Masukkan tabel
diberi indeks oleh nomor blok itu lalu mengandung nomor blok untuk blok
berikutnya dari berkas. Rantai ini berlanjut sampai blok terakhir, yang
mempunyai nilai akhir berkas yang khusus sebagai masukkan tabel. Blok yang
tidak digunakan diberi nilai 0. Untuk mengalokasi blok baru untuk suatu berkas
hanya dengan mencari nilai 0 pertama dalam tabel, dan mengganti nilai akhir
berkas sebelumnya dengan alamat blok yang baru. Metode pengalokasian FAT ini
dapat menghasilkan jumlah pencarian head disk yang signifikan, jika berkas
tidak di cache. Head disk harus bergerak dari awal partisi untuk membaca FAT
dan menemukan lokasi blok yang ditanyakan, lalu menemukan lokasi blok itu
sendiri. Kasus buruknya, kedua pergerakan terjadi untuk setiap blok.
Keuntungannya waktu random akses meningkat, akibat dari head disk dapat
mencari
lokasi blok apa saja dengan membaca informasi dalam FAT.
------------------------------------------------------------------------------
-
Mekanisme untuk menghadapi masalah berapa besar blok indeks yang diperlukan
sebagai berikut:
* Combined scheme: digunakan oleh sistem BSD UNIX yaitu dengan menetapkan 15
penunjuk dari blok indeks dalam blok indeksnya berkas. 12 penunjuk pertama
menunjuk ke direct blocks yang menyimpan alamat-alamat blok yang berisi
data dari berkas. 3 penunjuk berikutnya menunjuk ke indirect blocks.
Penunjuk indirect blok yang pertama adalah alamat dari single indirect
block, yang merupakan blok indeks yang berisi alamat-alamat blok yang
berisi data. Lalu ada penunjuk double indirect block yang berisi alamat
dari sebuah blok yang berisi alamat-alamat blok yang berisi penunjuk ke
blok data yang sebenarnya.
------------------------------------------------------------------------------
-
Untuk alokasi berangkai (linked list), kita juga dapat menyimpan alamat dari
blok selanjutnya ke dalam memori, lalu membacanya secara langsung. Metode ini
sangat baik untuk akses sekuensial, namun untuk akses langsung, akses menuju
blok ke-ikemungkinan membutuhkan pembacaan disk sebanyak i kali. Masalah ini
mengindikasikan bahwa alokasi berangkai sebaiknya tidak digunakan untuk
aplikasi yang membutuhkan akses langsung.
Oleh sebab itu, beberapa sistem mendukung akses langsung dengan menggunakan
alokasi berdampingan (contiguous allocation), serta akses berurutan dengan
alokasi berangkai. Untuk sistem-sistem tersebut, jenis akses harus
dideklarasikan pada saat berkas dibuat. Berkas yang dibuat untuk akses
sekuensial (berurutan) akan dirangkaikan dan tidak dapat digunakan untuk akses
langsung. Berkas yang dibuat untuk akses langsung akan berdampingan dan dapat
mendukung baik akses langsung mau pun akses berurutan, dengan mendeklarasikan
jarak maksimum. Perhatikan bahwa sistem operasi harus mendukung struktur data
dan algoritma yang sesuai untuk mendukung kedua metode alokasi di atas.
Alokasi dengan menggunakan indeks lebih rumit lagi. Jika blok indeks telah
terdapat dalam memori, akses dapat dilakukan secara langsung. Namun, menyimpan
blok indeks dalam memori memerlukan ruang (space) yang besar. Jika ruang
memori
tidak tersedia, maka kita mungkin harus membaca blok indeks terlebih dahulu,
baru kemudian blok data yang diinginkan. Untuk indeks dua tingkat, pembacaan
dua blok indeks mungkin diperlukan. Untuk berkas yang berukuran sangat besar,
mengakses blok di dekat akhir suatu berkas akan membutuhkan pembacaan seluruh
blok indeks agar dapat mengikuti rantai penunjuk sebelum blok data dapat
dibaca. Dengan demikian, performa alokasi dengan menggunakan indeks ditentukan
oleh: struktur indeks, ukuran berkas, dan posisi dari blok yang diinginkan.
------------------------------------------------------------------------------
-
Semenjak hanya tersedia tempat yang terbatas pada disk maka sangat berguna
untuk menggunakan kembali tempat dari berkas yang dihapus untuk berkas baru,
jika dimungkinkan,karena pada media yang sekali tulis (media optik) hanya
dimungkinkan sekali menulis dan menggunakannyanya kembali secara fisik tidak
mungkin. Untuk mencatat tempat kosong pada disk, sistem mempunyai daftar
tempat
kosong (free space list). Daftar ini menyimpan semua blok disk yang kosong
yang
tidak dialokasikan pada sebuah berkas atau direktori. Untuk membuat berkas
baru, sistem mencari ke daftar tersebut untuk mencarikan tempat kosong yang di
butuhkan, lalu tempat tersebut dihilangkan dari daftar. Ketika berkas dihapus,
alamat berkas tadi ditambahkan pada daftar.
------------------------------------------------------------------------------
-
Seringnya daftar raung kosong diimplementasikan sebagai bit map atau bit
vektor. Tiap blok direpresentasikan sebagai 1 bit. Jika blok tersebut kosong
maka isi bitnya 1 dan jika bloknya sedang dialokasikan maka isi bitnya 0.
Sebagai contoh sebuah disk dimana blok 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 17,
18, 25, 26 dan 27 adalah kosong, dan sisanya dialokasikan. Bit mapnya akan
seperti berikut:
001111001111110001100000011100000...
Keuntungan utama dari pendekatan ini adalah relatif sederhana dan efisien
untuk
mencari blok pertama yang kosong atau berturut-turut n blok yang kosong pada
disk. Banyak komputer yang menyediakan instruksi manipulasi bit yang dapat
digunakan secara efektif untuk tujuan ini. Sebagai contohnya, dari keluarga
prosesor Intel dimulai dari 80386 dan keluarga Motorola dimulai dari 68020
(prosesor yang ada di PC dan Macintosh) mempunyai instruksi yang mengembalikan
jarak di word dari bit pertama dengan nilai 1. Sistem operasi Apple Macintosh
menggunakan metode bit vektor untuk mengalokasikan tempat pada disk. Dalam hal
ini perangkat keras mendukung perangkat lunak tetapi bit vektor tidak efisien
kecuali seluruh vektor disimpan dalam memori utama (dan ditulis di disk untuk
kebutuhan pemulihan). Menyimpan dalam memori utama dimungkinkan untuk disk
yang
kecil pada mikro komputer, tetapi tidak untuk disk yang besar. Sebuah disk 1,3
GB dengan 512-byte blok akan membutuhkan bit map sebesar 332K untuk mencatat
blok yang kosong.
------------------------------------------------------------------------------
-
Linked List
Pendekatan lain adalah untuk menghubungkan semua blok yang kosong, menyimpan
pointer ke blok pertama yang kosong di tempat yang khusus pada disk dan
menyimpannya di memori. Blok pertama ini menyimpan pointer ke blok kosong
berikutnya dan seterusnya. Pada contoh sebelumnya kita akan menyimpan pointer
ke blok ke 2 sebagai blok kosong pertama, blok 2 akan menyimpan pointer ke
blok
3, yang akan menunjuk ke blok 4 dan seterusnya. Bagaimana pun metode ini tidak
efisien karena untuk traverse daftar tesebut kita perlu membaca tiap blok yang
membutuhkan waktu I/O. Untungnya traverse ini tidak sering digunakan. Umumnya,
sistem operasi membutuhkan blok kosong untuk mengalokasikan blok tersebut ke
berkas, maka blok pertama pada daftar ruang kosong digunakan.
------------------------------------------------------------------------------
-
Grouping
Modifikasi lainnya adalah dengan menyimpan alamat dari n blok kosong pada blok
kosong pertama. Pada n-1 pertama dari blok-blok ini adalah kosong. Blok
terakhir menyimpan alamat n blok kosong lainnya dan seterusnya. Keuntungannya
dari implementasi seperti ini adalah alamat dari blok kosong yang besar sekali
dapat ditemukan dengan cepat, tidak seperti pendekatan standar linked-list.
------------------------------------------------------------------------------
-
Counting
Pendekatan lain adalah dengan mengambil keuntungan dari fakta bahwa beberapa
blok yang berkesinambungan akan dialokasikan atau dibebaskan secara simultan.
Maka dari itu dari pada menyimpan daftar dari banyak alamat disk, kita dapat
menyimpan alamat dari blok kosong pertama dan jumlah dari blok kosong yang
berkesinambungan yang mengikuti blok kosong pertama. Tiap isi dari daftar
menyimpan alamat disk dan penghitung (counter). Meski pun setiap isi
membutuhkan tempat lebih tetapi secara keseluruhan daftar akan lebih pendek,
selama count lebih dari satu.
------------------------------------------------------------------------------
-
Implementasi Direktori
------------------------------------------------------------------------------
-
Linear List
Hash Table
Struktur data lainnya yang juga digunakan untuk direktori berkas adalah hash
table. Dalam metode ini linear list menyimpan direktori, tetapi struktur data
hash juga digunakan. Hash table mengambil nilai yang dihitung dari nama berkas
dan mengembalikan sebuah penunjuk ke nama berkas yang ada di-linear list. Maka
dari itu dapat memotong banyak biaya pencarian direktori. Memasukkan dan
menghapus berkas juga lebih mudah dan cepat. Meski demikian beberapa aturan
harus dibuat untuk mncegah tabrakan, situasi dimana dua nama berkas pada hash
mempunyai tempat yang sama. Kesulitan utama dalam hash table adalah ukuran
tetap dari hash table dan ketergantungan dari fungsi hash dengan ukuran hash
table. Sebagai contoh, misalkan kita membuat suatu linear-probing hash table
yang dapat menampung 64 data. Fungsi hash mengubah nama berkas menjadi nilai
dari 0 sampai 63. Jika kita membuat berkas ke 65 maka ukuran tabel hash harus
diperbesar sampai misalnya 128 dan kita membutuhkan suatu fungsi hash yang
baru
yang dapat memetakan nama berkas dari jangkauan 0 sampai 127, dan kita harus
mengatur data direktori yang sudah ada agar memenuhi fungsi hash yang baru.
Sebagai alternatif dapat digunakan chained-overflow hash table, setiap hash
table mempunyai daftar yang terkait (linked list) dari pada nilai individual
dan kita dapat mengatasi tabrakan dengan menambah tempat pada daftar terkait
tersebut. Pencarian dapat menjadi lambat, karena pencarian nama memerlukan
tahap pencarian pada daftar terkait. Tetapi operasi ini lebih cepat dari pada
pencarian linear terhadap seluruh direktori.
------------------------------------------------------------------------------
-
Setelah kita membahas alokasi blok dan pilihan manajemen direktori maka dapat
dibayangkan bagaimana efek mereka dalam keefisiensian dan unjuk kerja
penggunaan disk. Hal ini dikarenakan disk selalu menjadi "bottle-neck" dalam
unjuk kerja sistem.
------------------------------------------------------------------------------
-
Efisiensi
Disk dapat digunakan secara efisien tergantung dari teknik alokasi disk serta
algoritma pembentukan direktori yang digunakan. Contoh, pada UNIX, direktori
berkas dialokasikan terlebih dahulu pada partisi. Walau pun disk yang kosong
pun terdapat beberapa persen dari ruangnya digunakan untuk direktori tersebut.
Unjuk kerja sistem berkas meningkat akibata dari pengalokasian awal dan
penyebaran direktori ini pada partisi. Sistem berkas UNIX melakukan ini agar
blok-blok data berkas selalu dekat dengan blok direktori berkas sehingga waktu
pencariannya berkurang.
Ada pula keefesiensian pada ukuran penunjuk yang digunakan untuk mengakses
data. Masalahnya dalam memilih ukuran penunjuk adalah merencanakan efek dari
perubahan teknologi. Masalah ini diantisipasi dengan menginisialisasi terlebih
dahulu sistem berkasnya dengan alasan keefisiensian.
Pada awal, banyak struktur data dengan panjang yang sudah ditentu kan dan
dialokasi pada ketika sistem dijalankan. Ketika tabel proses penuh maka tidak
ada proses lain yang dapat dibuat. Begitu juga dengan tabel berkas ketika
penuh, tidak ada berkas yang dapat dibuka. Hal ini menyebabkan sistem gagal
melayani permintaan pengguna. Ukuran tabel-tabel ini dapat ditingkatkan hanya
dengan mengkompilasi ulang kernel dan boot ulang sistemnya. Tetapi sejak
dikeluarkannya Solaris 2, hampir setiap struktur kernel dialokasikan secara
dinamis sehingga menghapus batasan buatan pada unjuk kerja sistem.
------------------------------------------------------------------------------
-
Kinerja
Ketika metode dasar disk telah dipilih, maka masih ada beberapa cara untuk
meningkatkan unjuk kerja. Salah satunya adalah dengan mengguna kan cache, yang
merupakan memori lokal pada pengendali disk, dimana cache cukup besar untuk
menampung seluruh track pada satu waktu. Beberapa sistem mengatur seksi
terpisah dari memori utama untuk disk-cache, yang diasumsikan bahwa blok-blok
disimpan karena mereka akan digunakan dalam waktu dekat. Ada juga sistem yang
menggunakan memori fisik yang tidak digunakan sebagai penyangga yang dibagi
atas sistem halaman (paging) dan sistem disk-blok cache. Suatu sistem
melakukan
banyak operasi I/O akan menggunakan sebagian banyak memorinya sebagai blok
cache, dimana suatu sistem mengeksekusi banyak program akan menggunakan
sebagian besar memori-nya untuk ruang halaman.
Metode yang lain adalah dengan membagi suatu seksi dari memori untuk disk
virtual atau RAM disk. Pada RAM disk terdapat operasi-operasi standar yang
terdapat pada disk, tetapi semua operasi tersebut terjadi di dalam suatu seksi
memori, bukan pada disk. Tetapi, RAM disk hanya berguna untuk penyimpanan
sementara, karena jika komputer di boot ulang atau listrik mati maka isi dalam
RAM disk akan terhapus.
Perbedaan antara RAM disk dan disk cache adalah dalam masalah siapa yang
mengendalikan disk tersebut. RAM disk dikendalikan oleh peng guna sepenuhnya,
sedangkan disk cache dikendalikan oleh sistem operasi.
------------------------------------------------------------------------------
-
Recovery
Karena semua direktori dan berkas disimpan di dalam memori utama dan disk,
maka
kita perlu memastikan bahwa kegagalan pada sistem tidak menyebabkan hilangnya
data atau data menjadi tidak konsiten.
------------------------------------------------------------------------------
-
Pemeriksaan Rutin
Informasi direktori pada memori utama pada umumnya lebih up to date daripada
informasi yang terdapat di disk dikarenakan penulisan dari informasi direktori
cached ke disk tidak langsung terjadi pada saat setelah peng-update-an
terjadi.
Consistency checker membandingkan data yang terdapat di struktur direktori
dengan blok-blok data pada disk, dan mencoba memperbaiki semua ketidak
konsistensian yang terjadi akibat crash-nya komputer. Algoritma pengalokasian
dan management ruang kosong menentukan tipe dari masalah yang ditemukan oleh
checker dan seberapa sukses dalam memperbaiki masalah-masalah tersebut.
------------------------------------------------------------------------------
-
Karena kadang-kadang magnetik disk gagal, kita harus memastikan bahwa datanya
tidak hilang selamanya. Karena itu, kita menggunakan program sistem untuk
mem-back up data dari disk ke alat penyimpanan yang lain seperti floopy disk,
magnetic tape, atau optical disk. Pengembalian berkas-berkas yang hilang hanya
masalah menempatkan lagi data dari back up data yang telah dilakukan.
* Hari 1: Salin ke tempat penyimpanan back up semua berkas dari disk, disebut
sebuah full backup.
* Hari 2: Salin ke tempat penyimpanan lain semua berkas yang berubah sejak
hari 1, disebut incremental backup.
* Hari 3: Salin ke tempat peyimpanan lain semua berkas yang berubah sejak
hari 2.
* Hari N: salin ke tempat penyimpanan lain semua berkas yang berubah sejak
hari N-1, lalu kembali ke hari 1.
Keuntungan dari siklus backup ini adalah kita dapat menempatkan kembali berkas
mana pun yang tidak sengaja terhapus pada waktu siklus dengan mendapatkannya
dari back up hari sebelumnya. Panjang dari siklus disetujui antara banyaknya
tempat penyimpanan backup yang diperlukan dan jumlah hari kebelakang dari
penempatan kembali dapat dilakukan.
Ada juga kebiasaan untuk mem-backup keseluruhan dari waktu ke waktu untuk
disimpan selamanya daripada media backupnya digunakan kembali. Ada bagusnya
menyimpan backup-backup permanent ini di lokasi yang jauh dari backup yang
biasa, untuk menghindari kecelakaan seperti kebakaran dan lain-lain. Dan
jangan
menggunakan kembali media backup terlalu lama karena media tersebut akan rusak
jika terlalu sering digunakan kembali.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Sistem operasi Windows merupakan sistem operasi yang telah dikenal luas.
Sistem
operasi ini sangat memudahkan para penggunanya dengan membuat struktur
direktori yang sangat user-friendly. Para pengguna Windows tidak akan menemui
kesulitan dalam menggunakan sistem direktori yang telah dibuat oleh Microsoft.
Windows menggunakan sistem drive letter dalam merepresentasikan setiap partisi
dari disk. Sistem operasi secara otomatis akan terdapat dalam partisi pertama
yang diberi label drive C. Sistem operasi Windows dibagi menjadi dua keluarga
besar, yaitu keluarga Windows 9x dan keluarga Windows NT (New Technology).
1. Direktori C:\WINDOWS
Direktori ini berisikan sistem dari Windows. Dalam direktori ini terdapat
pustaka-pustaka yang diperlukan oleh Windows, device driver, registry, dan
program-program esensial yang dibutuhkan oleh Windows untuk berjalan dengan
baik.
Direktori ini berisikan semua dokumen yang dimiliki oleh pengguna sistem.
Sistem operasi Windows dapat berjalan diatas beberapa macam sistem berkas.
Setiap sistem berkas memiliki keunggulan dan kekurangan masing-masing. Semua
keluarga Windows yang berbasis Windows NT dapat mendukung sistem berkas yang
digunakan oleh keluarga Windows 9x, namun hal tersebut tidak berlaku
sebaliknya.
3. NTFS: Merupakan singkatan dari New Technology File System. Sistem berkas
ini adalah sistem berkas berbasis journaling dan dapat digunakan hanya pada
keluarga Windows NT. Keunggulan dari sistem berkas ini adalah fasilitas
recovery yang memungkinkan dilakukannya penyelamatan data saat terjadi
kerusakan pada sistem operasi.
------------------------------------------------------------------------------
-
Ketika kita login ke UNIX, kita akan ditempatkan di direktori root kita.
Direktori root kita dikenal sebagai direktori home kita dan dispesifikasi
dengan environment variable yang dinamakan HOME. Environment variable ini
menentukan karakteristik dari shell kita dan interaksi pengguna dengan shell
tersebut. Environment variable yang umum adalah variabel PATH, yang
mendefinisikan dimana shell akan mencari ketika perintah dari pengguna. Untuk
melihat daftar environment variable, gunakan saja perintah printenv. Sedangkan
untuk mengatur environment variable, gunakan setenv.
Direktori ini terletak pada level teratas dari struktur direktori UNIX.
Biasanya direktori root ini diberi tanda / atau slash. Direktori ini
biasanya hanya terdiri dari direktori-direktori lainnya yang terletak pada
level dibawah level direktori root. Berkas-berkas dapat disimpan pada
direktori root tetapi usahakan tidak menyimpan berkas-berkas biasa sehingga
direktori ini tetap terjaga keteraturannya.
2. Direktori "/bin"
3. Direktori "/dev"
Direktori ini berisi berkas-berkas alat atau alat I/O. Sistem UNIX
menganggap semua hal sebagai berkas. Hal-hal seperti monitor, CD-ROM,
printer dan lain-lainnya dianggap hanya sebagai berkas saja oleh sistem
operasi. Jika UNIX memerlukan perangkat-perangkat tersebut maka UNIX akan
mencarinya ke direktori dev.
4. Direktori "/etc"
5. Direktori "/lib"
6. Direktori "/sbin"
7. Direktori "/usr"
Direktori ini terdiri dari banyak direktori seperti pada direktori root.
Direktori ini berisi berkas-berkas yang dapat diakses oleh para pengguna
biasa. Struktur dari direktori ini mirip dengan struktur direktori "/".
Beberapa direktori yang terdapat dalam direktori ini berhubungan dengan
direktori yang ada di direktori /.
8. Direktori "/var"
Direktori ini berisi data yang bermacam-macam (vary). Perubahan data dalam
sistem yang aktif sangatlah cepat. Data-data seperti ini ada dalam waktu
yang singkat. Karena sifatnya yang selalu berubah tidak memungkinkan
disimpan dalam direktori seperti "/etc". Oleh karena itu, data-data seperti
ini disimpan di direktori var.
------------------------------------------------------------------------------
-
Sistem berkas UNIX berbeda dengan sistem berkas Windows (DOS) karena sistem
berkas UNIX lebih hebat dan mudah diatur daripada Windows (DOS). Penamaan
dalam
UNIX dan Windows berbeda. Karena sistem Windows ingin memudahkan pengguna maka
sistem mereka mengubah nama menjadi nama yang lebih mudah bagi para pengguna.
Contohnya adalah nama folder dalam adalah perubahan dari directory yang masih
digunakan oleh UNIX. Penggunaan back slash (\) digunakan untuk memisahkan
direktori-direktori dalam Windows, tetapi hal ini tidak ada dalam UNIX. Sistem
UNIX menggunakan case sensitive, yang artinya nama suatu berkas yang sama jika
dibaca, tetapi penulisan namanya berbeda dalam hal ada satu file yang
menggunakan huruf kapital dalam penamaan dan satu tidak akan berbeda dalam
UNIX. Contohnya ada berkas bernama berkasdaku.txt dan BerkasDaku.txt, jika
dibaca nama berkasnya sama tetapi dalam UNIX ini merupakan dua berkas yang
jauh
berbeda. Jika berkas-berkas ini berada di sistem Windows, mereka menunjuk ke
berkas yang sama yang berarti Windows tidak case sensitive.
Hal lain yang membedakan sistem berkas UNIX dengan Windows adalah UNIX tidak
menggunakan drive letter seperti C:, D: dalam Windows. Tetapi semua partisi
dan
drive ekstra di mount didalam sub-direktori di bawah direktori root. Jadi
pengguna tidak harus bingung di drive letter mana suatu berkas berada sehingga
seluruh sistem seperti satu sistem berkas yang berurutan dari direktori root
menurun secara hierarki.
------------------------------------------------------------------------------
-
Secara garis besar, sistem berkas di sistem UNIX terbagi menjadi dua, yaitu
sistem berkas dengan fasilitas journaling dan yang tidak memiliki fasilitas
tersebut. Dibawah ini adalah beberapa sistem berkas yang digunakan dalam
sistem
UNIX pada umumnya:
1. EXT2
2. EXT3
4. ReiserFS
5. Dan Lain-lain.
------------------------------------------------------------------------------
-
Kesimpulan
Sistem berkas merupakan mekanisme penyimpanan on-line serta untuk akses, baik
data mau pun program yang berada dalam Sistem Operasi. Terdapat dua bagian
penting dalam sistem berkas, yaitu:
Berkas adalah kumpulan informasi berkait yang diberi nama dan direkam pada
penyimpanan sekunder. Atribut berkas terdiri dari:
1. Nama; merupakan satu-satunya informasi yang tetap dalam bentuk yang bisa
dibaca oleh manusia (human-readable form)
4. Ukuran (size); yaitu ukuran berkas pada saat itu, baik dalam byte, huruf,
atau pun blok
5. Proteksi; adalah informasi mengenai kontrol akses, misalnya siapa saja yang
boleh membaca, menulis, dan mengeksekusi berkas
- pembuatan berkas
6. Memendekkan berkas.
Metode Akses
1. Akses Berurutan.
2. Akses Langsung.
3. Akses menggunakan Indeks.
1. Mencari berkas.
2. Membuat berkas.
3. Menghapus berkas.
Macam-macam Direktori
2. Linked List.
3. Grouping.
4. Counting.
Implementasi Direktori
1. Linear List.
2. Hash Table.
1. Direktori C:\WINDOWS
1. FAT 16
Sistem berkas ini digunakan dalam sistem operasi DOS dan Windows 3.1
2. FAT 32
3. NTFS
Merupakan singkatan dari New Technology File System. Sistem berkas ini
adalah sistem berkas berbasis journaling dan dapat digunakan hanya pada
keluarga Windows NT. Keunggulan dari sistem berkas ini adalah fasilitas
recovery yang memungkinkan dilakukannya penyelamatan data saat terjadi
kerusakan pada sistem operasi.
1. Direktori /root.
2. Direktori /bin.
3. Direktori /dev.
4. Direktori /etc.
5. Direktori /lib.
6. Direktori /sbin.
7. Direktori /usr.
8. Direktori /var.
1. EXT2.
2. EXT3.
4. ReiserFS.
5. Dan Lain-lain.
------------------------------------------------------------------------------
-
9. Sebutkan keunggulan dari sistem berkas dalam UNIX dengan sistem berkas pada
WINDOWS?
------------------------------------------------------------------------------
-
Secara umum, terdapat beberapa jenis seperti device penyimpanan (disk, tape),
transmission device (network card, modem), dan human-interface device (screen,
keyboard, mouse). Device tersebut dikendalikan oleh instruksi I/O.
Alamat-alamat yang dimiliki oleh device akan digunakan oleh direct I/O
instruction dan memory-mapped I/O.
Beberapa konsep yang umum digunakan ialah port, bus (daisy chain/ shared
direct
access), dan controller (host adapter). Port adalah koneksi yang digunakan
oleh
device untuk berkomunikasi dengan mesin. Bus adalah koneksi yang menghubungkan
beberapa device menggunakan kabel-kabel. Controller adalah alat-alat
elektronik
yang berfungsi untuk mengoperasikan port, bus, dan device.
Langkah yang ditentukan untuk device adalah command-ready, busy, dan error.
Host mengeset command-ready ketika perintah telah siap untuk dieksekusi oleh
controller. Controller mengeset busy ketika sedang mengerjakan sesuatu, dan
men
clear busy ketika telah siap untuk menerima perintah selanjutnya. Error diset
ketika terjadi kesalahan.
------------------------------------------------------------------------------
-
Polling
[pollingOpe]
------------------------------------------------------------------------------
-
Interupsi
Ketika CPU mendeteksi bahwa sebuah controller telah mengirimkan sebuah sinyal
ke interrupt request line (membangkitkan sebuah interupsi), CPU kemudian
menjawab interupsi tersebut (juga disebut menangkap interupsi) dengan
menyimpan
beberapa informasi mengenai state terkini CPU--contohnya nilai instruksi
pointer, dan memanggil interrupt handler agar handler tersebut dapat melayani
controller atau alat yang mengirim interupsi tersebut.
------------------------------------------------------------------------------
-
Pada arsitektur komputer modern, tiga fitur disediakan oleh CPU dan interrupt
controller (pada perangkat keras) untuk dapat menangani interrupsi dengan
lebih
bagus. Fitur-fitur ini antara lain adalah kemampuan menghambat sebuah proses
interrupt handling selama prosesi berada dalam critical state, efisiensi
penanganan interupsi sehingga tidak perlu dilakukan polling untuk mencari
device yang mengirimkan interupsi, dan fitur yang ketiga adalah adanya sebuah
konsep multilevel interupsi sedemikian rupa sehingga terdapat prioritas dalam
penanganan interupsi (diimplementasikan dengan interrupt priority level
system).
------------------------------------------------------------------------------
-
Pada peranti keras CPU terdapat kabel yang disebut interrupt request line,
kebanyakan CPU memiliki dua macam interrupt request line, yaitu nonmaskable
interrupt dan maskable interrupt. Maskable interrupt dapat dimatikan/
dihentikan oleh CPU sebelum pengeksekusian deretan critical instruction
(critical instruction sequence) yang tidak boleh diinterupsi. Biasanya,
interrupt jenis ini digunakan oleh device controller untuk meminta pelayanan
CPU.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Penyebab Interupsi
Interupsi dapat disebabkan berbagai hal, antara lain exception, page fault,
interupsi yang dikirimkan oleh device controllers, dan system call Exception
adalah suatu kondisi dimana terjadi sesuatu/ dari sebuah operasi didapat hasil
tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contoh
nya pembagian dengan 0 (nol), pengaksesan alamat memori yang restricted atau
bahkan tidak valid, dan lain-lain. System call adalah sebuah fungsi pada
aplikasi (perangkat lunak) yang dapat mengeksekusikan instruksi khusus berupa
software interrupt atau trap.
------------------------------------------------------------------------------
-
DMA
Definisi
DMA adalah sebuah prosesor khusus (special purpose processor) yang berguna
untuk menghindari pembebanan CPU utama oleh program I/O (PIO).
Gambar 6-2. DMA Interface. Sumber: . . .
[DMAinterfa]
------------------------------------------------------------------------------
-
Transfer DMA
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command
block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang
menunjuk ke tujuan/ destinasi transfer, dan jumlah byte yang ditransfer, ke
memori. CPU kemudian menuliskan alamat command block ini ke DMA controller,
sehingga DMA controller dapat kemudian mengoperasikan bus memori secara
langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan
transfer tanpa bantuan CPU. Tiga langkah dalam transfer DMA:
1. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari device,
operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan
data, dan banyaknya byte yang di transfer.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data.
Metode yang pertama adalah metode yang sangat baku dan simple disebut HALT,
atau Burst Mode DMA, karena DMA controller memegang kontrol dari sistem bus
dan
mentransfer semua blok data ke atau dari memori pada single burst. Selagi
transfer masih dalam progres, sistem mikroprosessor di-set idle, tidak
melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA
seperti ini ada pada kebanyakan komputer.
[DMAcontrol]
------------------------------------------------------------------------------
-
Handshaking
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMA
controller mengambil alih memori, CPU sementara tidak dapat mengakses memori
(dihalangi), walau pun masih dapat mengaksees data pada cache primer dan
sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat
komputasi
CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke
DMA
controller meningkatkan performa sistem secara keseluruhan.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya
aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya.
Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara
pengaksesan pada peralatan I/O. Pendekatan inilah yang dinamakan interface
aplikasi I/O.
Karena subsistem I/O independen dari hardware maka hal ini akan sangat
menguntungkan dari segi pengembangan hardware. Tidak perlu menunggu vendor
sistem operasi untuk mengeluarkan support code untuk hardware-hardware baru
yang akan dikeluarkan oleh vendor hardware.
------------------------------------------------------------------------------
-
Peralatan block diharapkan dapat memenuhi kebutuhan akses pada berbagai macam
disk drive dan juga peralatan block lainnya. Block device diharapkan dapat
memenuhi/mengerti perintah baca, tulis dan juga perintah pencarian data pada
peralatan yang memiliki sifat random-access.
Keyboard adalah salah satu contoh alat yang dapat mengakses stream-karakter.
System call dasar dari interface ini dapat membuat sebuah aplikasi mengerti
tentang bagaimana cara untuk mengambil dan menuliskan sebuah karakter.
Kemudian
pada pengembangan lanjutannya, kita dapat membuat library yang dapat mengakses
data/pesan per-baris.
------------------------------------------------------------------------------
-
Peralatan Jaringan
Karena adanya perbedaan dalam kinerja dan pengalamatan dari jaringan I/O, maka
biasanya sistem operasi memiliki interface I/O yang berbeda dari baca, tulis
dan pencarian pada disk. Salah satu yang banyak digunakan pada sistem operasi
adalah interface socket.
------------------------------------------------------------------------------
-
Adanya jam dan timer pada hardware komputer, setidaknya memiliki tiga fungsi,
memberi informasi waktu saat ini, memberi informasi lamanya waktu sebuah
proses, sebagai trigger untuk suatu operasi pada suatu waktu. Fungsi fungsi
ini
sering digunakan oleh sistem operasi. Sayangnya, system call untuk pemanggilan
fungsi ini tidak di-standarisasi antar sistem operasi
Sistem operasi dapat mendukung lebih dari banyak timer request daripada
banyaknya jumlah hardware timer. Dengan kondisi seperti ini, maka kernel atau
device driver mengatur list dari interupsi dengan urutan yang duluan datang
yang duluan dilayani.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Kernel menyediakan banyak service yang berhubungan dengan I/O. Pada bagian
ini,
kita akan mendeskripsikan beberapa service yang disediakan oleh kernel I/O
subsystem, dan kita akan membahas bagaimana caranya membuat infrastruktur
hardware dan device-driver. Service yang akan kita bahas adalah I/O
scheduling,
buffering, caching, spooling, reservasi device, error handling.
------------------------------------------------------------------------------
-
I/O Scheduling
Untuk menjadualkan sebuah set permintaan I/O, kita harus menetukan urutan yang
bagus untuk mengeksekusi permintaan tersebut. Scheduling dapat meningkatkan
kemampuan sistem secara keseluruhan, dapat membagi device secara rata di
antara
proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan
I/O. Ini adalah contoh sederhana untuk menggambarkan definisi di atas. Jika
sebuah arm disk terletak di dekat permulaan disk, dan ada tiga aplikasi yang
memblokir panggilan untuk membaca untuk disk tersebut. Aplikasi 1 meminta
sebuah blok dekat akhir disk, aplikasi 2 meminta blok yang dekat dengan awal,
dan aplikasi 3 meminta bagian tengah dari disk. Sistem operasi dapat
mengurangi
jarak yang harus ditempuh oleh arm disk dengan melayani aplikasi tersebut
dengan urutan 2, 3, 1. Pengaturan urutan pekerjaan kembali dengan cara ini
merupakan inti dari I/O scheduling. Sistem operasi mengembangkan implementasi
scheduling dengan menetapkan antrian permintaan untuk tiap device. Ketika
sebuah aplikasi meminta sebuah blocking sistem I/O, permintaan tersebut
dimasukkan ke dalam antrian untuk device tersebut. Scheduler I/O mengatur
urutan antrian untuk meningkatkan efisiensi dari sistem dan waktu respon
rata-rata yang harus dialami oleh aplikasi. Sistem operasi juga mencoba untuk
bertindak secara adil, seperti tidak ada aplikasi yang menerima service yang
buruk, atau dapat seperti memberi prioritas service untuk permintaan penting
yang ditunda. Contohnya, pemintaan dari subsistem mungkin akan mendapatkan
prioritas lebih tinggi daripada permintaan dari aplikasi. Beberapa algoritma
scheduling untuk disk I/O akan dijelaskan ada bagian Disk Scheduling.
Satu cara untuk meningkatkan efisiensi I/O subsistem dari sebuah komputer
adalah dengan mengatur operasi I/O. Cara lain adalah dengan menggunakan tempat
penyimpanan pada memori utama atau pada disk, melalui teknik yang disebut
buffering, caching, dan spooling.
------------------------------------------------------------------------------
-
Buffering
Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan
antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk
tiga buah alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang
terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah
stream data. Sebagai contoh, sebuah file sedang diterima melalui modem dan
ditujukan ke media penyimpanan di hard disk. Kecepatan modem tersebut kira-
kira
hanyalah 1/1000 daripada hard disk. Jadi buffer dibuat di dalam memori utama
untuk mengumpulkan jumlah byte yang diterima dari modem. Ketika keseluruhan
data di buffer sudah sampai, buffer tersebut dapat ditulis ke disk dengan
operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan modem
masih memerlukan tempat untuk menyimpan data yang berdatangan, maka dipakai 2
buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk
menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer
pertama dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer
kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi
modem akan berganti kembali memenuhi buffer pertama dan buffer kedua dipakai
untuk menulis. Metode double buffering ini membuat pasangan ganda antara
produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara mereka.
Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk
aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics.
Jika
ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk.
Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke
buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis.
Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut
merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin
ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis,
tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara
sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan
sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum
mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada
buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan
membawa dampak apa-apa. Mengcopy data antara buffer kernel data aplikasi
merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi
karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang
sama
yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi
copy-on-wire dengan pintar.
------------------------------------------------------------------------------
-
Caching
Sebuah cache adalah daerah memori yang cepat yang berisikan data kopian. Akses
ke sebuah kopian yang di-cached lebih efisien daripada akses ke data asli.
Sebagai contoh, instruksi-instruksi dari proses yang sedang dijalankan
disimpan
ke dalam disk, dan ter-cached di dalam memori physical, dan kemudian dicopy
lagi ke dalam cache secondary and primary dari CPU. Perbedaan antara sebuah
buffer dan ache adalah buffer dapat menyimpan satu-satunya informasi datanya
sedangkan sebuah cache secara definisi hanya menyimpan sebuah data dari sebuah
tempat untuk dapat diakses lebih cepat.
Caching dan buffering adalah dua fungsi yang berbeda, tetapi terkadang sebuah
daerah memori dapat digunakan untuk keduanya. sebagai contoh, untuk menghemat
copy semantics dan membuat scheduling I/O menjadi efisien, sistem operasi
menggunakan buffer pada memori utama untuk menyimpan data. Buffer ini juga
digunakan sebagai cache, untuk meningkatkan efisiensi I/O untuk file yang
digunakan secara bersama-sama oleh beberapa aplikasi, atau yang sedang dibaca
dan ditulis secara berulang-ulang. Ketika kernel menerima sebuah permintaan
file I/O, kernel tersebut mengakses buffer cacheuntuk melihat apakah daerah
memori tersebut sudah tersedia dalam memori utama. Jika iya, sebuah physical
disk I/O dapat dihindari atau tidak dipakai. penulisan disk juga terakumulasi
ke dalam buffer cache selama beberapa detik, jadi transfer yang besar akan
dikumpulkan untuk mengefisiensikan schedule penulisan. Cara ini akan menunda
penulisan untuk meningkatkan efisiensi I/O akan dibahas pada bagian Remote
File
Access.
------------------------------------------------------------------------------
-
Sebuah spool adalah sebuah buffer yang menyimpan output untuk sebuah device,
seperti printer, yang tidak dapat menerima interleaved data streams. Walau pun
printer hanya dapat melayani satu pekerjaan pada waktu yang sama, beberapa
aplikasi dapat meminta printer untuk mencetak, tanpa harus mendapatkan hasil
output mereka tercetak secara bercampur. Sistem operasi akan menyelesaikan
masalah ini dengan meng-intercept semua output kepada printer. Tiap output
aplikasi sudah di-spooled ke disk file yang berbeda. Ketika sebuah aplikasi
selesai mengeprint, sistem spooling akan melanjutkan ke antrian berikutnya. Di
dalam beberapa sistem operasi, spooling ditangani oleh sebuah sistem proses
daemon. Pada sistem operasi yang lain, sistem ini ditangani oleh in-kernel
thread. Pada kedua kasus, sistem operasi menyediakan interfacekontrol yang
membuat users and system administrator dapat menampilkan antrian tersebut,
untuk mengenyahkan antrian-antrian yang tidak diinginkan sebelum mulai
di-print.
Untuk beberapa device, seperti drive tapedan printer tidak dapat me-multiplex
permintaan I/O dari beberapa aplikasi. Spooling merupakan salah satu cara
untuk
mengatasi masalah ini. Cara lain adalah dengan membagi koordinasi untuk
multiple concurrent ini. Beberapa sistem operasi menyediakan dukungan untuk
akses device secara eksklusif, dengan mengalokasikan proses ke device idledan
membuang device yang sudah tidak diperlukan lagi. Sistem operasi lainnya
memaksakan limit suatu file untuk menangani device ini. Banyak sistem operasi
menyediakan fungsi yang membuat proses untuk menangani koordinat exclusive
akses diantara mereka sendiri.
------------------------------------------------------------------------------
-
Error Handling
Sebuah sistem operasi yang menggunakan protected memory dapat menjaga banyak
kemungkinan error akibat hardware mau pun aplikasi. Devices dan transfer I/O
dapat gagal dalam banyak cara, bisa karena alasan transient, seperti
overloaded
pada network, mau pun alasan permanen yang seperti kerusakan yang terjadi pada
disk controller. Sistem operasi seringkali dapat mengkompensasikan untuk
kesalahan transient. Seperti, sebuah kesalahan baca pada disk akan
mengakibatkan pembacaan ulang kembali dan sebuah kesalahan pengiriman pada
network akan mengakibatkan pengiriman ulang apabila protokolnya diketahui.
Akan
tetapi untuk kesalahan permanent, sistem operasi pada umumnya tidak akan bisa
mengembalikan situasi seperti semula.
Sebuah ketentuan umum, yaitu sebuah sistem I/O akan mengembalikan satu bit
informasi tentang status panggilan tersebut, yang akan menandakan apakah
proses
tersebut berhasil atau gagal. Sistem operasi pada UNIX menggunakan integer
tambahan yang dinamakan errno untuk mengembalikan kode kesalahan sekitar 1
dari
100 nilai yang mengindikasikan sebab dari kesalahan tersebut. Akan tetapi,
beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail,
walau pun banyak sistem operasi yang tidak mendukung fasilitas ini.
------------------------------------------------------------------------------
-
UNIX menyediakan akses sistem file untuk beberapa entiti, seperti file user,
raw devices, dan alamat tempat proses. Walau pun tiap entiti ini didukung
sebuah operasi baca, semantics-nya berbeda untuk tiap entiti. Seperti untuk
membaca file user, kernel perlu memeriksa buffer cache sebelum memutuskan
apakah akan melaksanakan I/O disk. Untuk membaca sebuah raw disk, kernel perlu
untuk memastikan bahwa ukuran permintaan adalah kelipatan dari ukuran sektor
disk, dan masih terdapat di dalam batas sektor. Untuk memproses citra, cukup
perlu untuk mengkopi data ke dalam memori. UNIX mengkapsulasikan
perbedaan-perbedaan ini di dalam struktur yang uniform dengan menggunakan
teknik object oriented.
Beberapa sistem operasi bahkan menggunakan metode object oriented secara lebih
extensif. Sebagai contoh, Windows NT menggunakan implementasi message-passing
untuk I/O. Sebuah permintaan I/O akan dikonversikan ke sebuah pesan yang
dikirim melalui kernel kepada I/O manager dan kemudian ke device driver, yang
masing-masing bisa mengubah isi pesan. Untuk output, isi message adalah data
yang akan ditulis. Untuk input, message berisikan buffer untuk menerima data.
Pendekatan message-passing ini dapat menambah overhead, dengan perbandingan
dengan teknik prosedural yang men-share struktur data, tetapi akan
mensederhanakan struktur dan design dari sistem I/O tersebut dan menambah
fleksibilitas.
5. Alokasi device.
7. I/O scheduling
------------------------------------------------------------------------------
-
UNIX Sistem V mempunyai mekanisme yang menarik, yang disebut streams, yang
membolehkan aplikasi untuk men-assemble pipeline dari kode driver secara
dinamis. Sebuah stream adalah sebuah koneksi full duplex antara sebuah device
driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head
yang merupakan antarmuka dengan user process, sebuah driver end yang
mengontrol
device, dan nol atau lebih stream modules diantara mereka. Modules dapat
didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion.
Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port
serial
melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit
input. Stream dapat digunakan untuk interproses dan komunikasi jaringan.
Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.
1. Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah file
deskriptor dari berkas yang telah dibuka sebelumnya.
3. Jika data tidak berada dalam buffer cache, sebuah physical I/O akan
bekerja, sehingga proses akan dikeluarkan 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
device driver. Bergantung pada sistem operasi, permintaan dikirimkan
melalui call subrutin atau melalui pesan in-kernel.
4. Device driver mengalokasikan ruang buffer pada kernel untuk menerima data,
dan menjadwalkan I/O. Pada akhirnya, driver mengirim perintah ke device
controller dengan menulis ke register device control.
6. Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA
ke memori kernel. Kita mengasumsikan bahwa transfer diatur oleh sebuah DMA
controller, yang meggunakan interupsi ketika transfer selesai.
8. Device driver menerima tanda, menganalisa permintaan I/O mana yang telah
diselesaikan, menganalisa status permintaan, dan menandai subsistem I/O
kernel yang permintaannya telah terselesaikan.
9. Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses
permintaan, dan memindahkan 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 dari system call.
------------------------------------------------------------------------------
-
Kinerja I/O
I/O sangat berpengaruh pada kinerja sebuah sistem komputer. Hal ini
dikarenakan
I/O sangat menyita CPU dalam pengeksekusian device driver dan penjadwalan
proses, demikian sehingga alih konteks yang dihasilkan membebani CPU dan cache
perangkat keras. Selain itu, I/O juga memenuhi bus memori saat mengkopi data
antara controller dan physical memory, serta antara buffer pada kernel dan
application space data. Karena besarnya pengaruh I/O pada kinerja komputer
inilah bidang pengembangan arsitektur komputer sangat memperhatikan
masalah-masalah yang telah disebutkan diatas.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Pada dasarnya kita mengimplementasikan algoritma I/O pada level aplikasi. Hal
ini dikarenakan kode aplikasi sangat fleksible, dan bugs aplikasi tidak mudah
menyebabkan sebuah sistem crash. Lebih lanjut, dengan mengembangkan kode pada
level aplikasi, kita akan menghindari kebutuhan untuk reboot atau reload
device
driver setiap kali kita mengubah kode. Implementasi pada level aplikasi juga
bisa sangat tidak efisien. Tetapi, karena overhead dari alih konteks dan
karena
aplikasi tidak bisa mengambil keuntungan dari struktur data kernel internal
dan
fungsionalitas dari kernel (misalnya, efisiensi dari kernel messaging,
threading dan locking.
Pada saat algoritma pada level aplikasi telah membuktikan keuntungannya, kita
mungkin akan mengimplementasikannya di kernel. Langkah ini bisa meningkatkan
kinerja tetapi perkembangannya dari kerja jadi lebih menantang, karena
besarnya
kernel dari sistem operasi, dan kompleksnya sistem sebuah perangkat lunak.
Lebih lanjut , kita harus men-debug keseluruhan dari implementasi in-kernel
untuk menghindari korupsi sebuah data dan sistem crash.
------------------------------------------------------------------------------
-
Struktur Disk
Disk drive modern dialamatkan sebagai suatu array satu dimensi yang besar dari
blok lojik, dimana blok lojik merupakan unit terkecil dari transfer. Ukuran
dari blok lojik biasanya adalah 512 bytes, walau pun sejumlah disk dapat
diformat di level rendah (low level formatted) untuk memilih sebuah ukuran
blok
lojik yang berbeda, misalnya 1024 bytes.
Array satu dimensi dari blok lojik dipetakan ke bagian dari disk secara
sekuensial. Sektor 0 adalah sektor pertama dari trek pertama di silinder
paling
luar (outermost cylinder). Pemetaan kemudian memproses secara berurutan trek
tersebut, kemudian melalui trek selanjutnya di silinder tersebut, dan kemudian
sisa silinder dari yang paling luar sampai yang paling dalam.
Dengan menggunakan pemetaan, kita dapat minimal dalam teori mengubah sebuah
nomor blok logikal ke sebuah alamat disk yang bergaya lama (old-style disk
address) yang terdiri atas sebuah nomor silinder, sebuah nomor trek di
silinder
tersebut, dan sebuah nomor sektor di trek tersebut. Dalam prakteknya, adalah
sulit untuk melakukan translasi ini, dengan 2 alasan. Pertama, kebanyakan disk
memiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini
dengan mensubstitusikan dengan sektor yang dibutuhkan dari mana-mana di dalam
disk. Kedua, jumlah dari sektor per trek tidaklah konstan. Semakin jauh sebuah
trek dari tengah disk, semakin besar panjangnya, dan juga semakin banyak
sektor
yang dipunyainya. Oleh karena itu, disk modern diatur menjadi zona-zona
silinder. Nomor sektor per trek adalah konstan dalam sebuah zona. Tetapi
seiring kita berpindah dari zona dalam ke zona luar, nomor sektor per trek
bertambah. Trek di zona paling luar tipikalnya mempunyai 40 persen sektor
lebih
banyak daripada trek di zona paling dalam.
Nomor sektor per trek telah meningkat seiring dengan peningkatan teknologi
disk, dan adalah lazim untuk mempunyai lebih dari 100 sektor per trek di zona
yang lebih luar dari disk. Dengan analogi yang sama, nomor silinder per disk
telah meningkat, dan sejumlah ribuan silinder adalah tak biasa.
------------------------------------------------------------------------------
-
Penjadualan Disk
Salah satu tanggung jawab sistem operasi adalah menggunakan hardware dengan
efisien. Khusus untuk disk drives, efisiensi yang dimaksudkan di sini adalah
dalam hal waktu akses yang cepat dan aspek bandwidth disk. Waktu akses
memiliki
dua komponen utama yaitu waktu pencarian dan waktu rotasi disk. Waktu
pencarian
adalah waktu yang dibutuhkan disk arm untuk menggerakkan head ke bagian
silinder disk yang mengandung sektor yang diinginkan. Waktu rotasi disk adalah
waktu tambahan yang dibutuhkan untuk menunggu rotasi atau perputaran disk,
sehingga sektor yang diinginkan dapat dibaca oleh head. Pengertian Bandwidth
adalah total jumlah bytes yang ditransfer dibagi dengan total waktu antara
permintaan pertama sampai seluruh bytes selesai ditransfer. Untuk meningkatkan
kecepatan akses dan bandwidth, kita dapat melakukan penjadualan pelayanan atas
permintaan I/O dengan urutan yang tepat.
Sebagaimana kita ketahui, jika suatu proses membutuhkan pelayanan I/O dari
atau
menuju disk, maka proses tersebut akan melakukan system call ke sistem
operasi.
Permintaan tersebut membawa informasi-informasi antara lain:
Jika disk drive beserta controller tersedia untuk proses tersebut, maka proses
akan dapat dilayani dengan segera. Jika ternyata disk drive dan controller
tidak tersedia atau sedang sibuk melayani proses lain, maka semua permintaan
yang memerlukan pelayanan disk tersebut akan diletakkan pada suatu antrian
penundaan permintaan untuk disk tersebut. Dengan demikian, jika suatu
permintaan telah dilayani, maka sistem operasi memilih permintaan tertunda
dari
antrian yang selanjutnya akan dilayani.
------------------------------------------------------------------------------
-
Penjadualan FCFS
Bentuk paling sederhana dalam penjadualan disk adalah dengan sistem antrian
(queue) atau First Come First Served (FCFS). Algoritma ini secara intrinsik
bersifat adil, tetapi secara umum algoritma ini pada kenyataannya tidak
memberikan pelayanan yang paling cepat. Sebagai contoh, antrian permintaan
pelayanan disk untuk proses I/O pada blok dalam silinder adalah sebagai
berikut: 98, 183, 37, 122, 14, 124, 65, 67. Jika head pada awalnya berada pada
53, maka head akan bergerak dulu dari 53 ke 98, kemudian 183, 37, 122, 14,
124,
65, dan terakhir 67, dengan total pergerakan head sebesar 640 silinder.
------------------------------------------------------------------------------
-
Penjadualan SSTF
Sangat beralasan jika kita menutup semua pelayanan pada posisi head saat ini,
sebelum menggerakkan head ke tempat lain yang jauh untuk melayani suatu
permintaan. Asumsi ini mendasari algoritma penjadualan kita yang kedua yaitu
shortest-seek-time-first (SSTF). Algoritma ini memilih permintaan dengan
berdasarkan waktu pencarian atau seek time paling minimum dari posisi head
saat
itu. Karena waktu pencarian meningkat seiring dengan jumlah silinder yang
dilewati oleh head, maka SSTF memilih permintaan yang paling dekat posisinya
di
disk terhadap posisi head saat itu.
Perhatikan contoh antrian permintaan yang kita sajikan pada penjadualan FCFS,
permintaan paling dekat dengan posisi head saat itu (53) adalah silinder 65.
Jika kita penuhi permintaan 65, maka yang terdekat berikutnya adalah silinder
67. Dari 67, silinder 37 letaknya lebih dekat ke 67 dibandingkan silinder 98,
jadi 37 dilayani duluan. Selanjutnya, dilanjutkan ke silinder 14, 98, 122,
124,
dan terakhir adalah 183. Metode penjadualan ini hanya menghasilkan total
pergerakan head sebesar 236 silinder -- kira-kira sepertiga dari yang
dihasilkan penjadualan FCFS. Algoritma SSTF ini memberikan peningkatan yang
cukup signifikan dalam hal pendayagunaan atau performance sistem.
Walau pun algoritma SSTF secara substansial meningkat jika dibandingkan dengan
FCFS, tetapi algoritma SSTF ini tidak optimal. Seperti contoh diatas, kita
dapat menggerakkan head dari 53 ke 37, walau pun bukan yang paling dekat,
kemudian ke 14, sebelum menuju 65, 67, 98, 122, dan 183. Strategi ini dapat
mengurangi total gerakan head menjadi 208 silinder.
------------------------------------------------------------------------------
-
Penjadualan SCAN
Pada algoritma SCAN, pergerakan disk arm dimulai dari salah satu ujung disk,
kemudian bergerak menuju ujung yang lain sambil melayani permintaan setiap
kali
mengunjungi masing-masing silinder. Jika telah sampai di ujung disk, maka disk
arm bergerak berlawanan arah, kemudian mulai lagi melayani
permintaan-permintaan yang muncul. Dalam hal ini disk arm bergerak bolak-balik
melalui disk.
Kita akan menggunakan contoh yang sudah dibarikan diatas. Sebelum melakukan
SCAN untuk melayani permintaan-permintaan 98, 183, 37, 122, 14, 124, 65, dan
67, kita harus mengetahui terlebih dahulu pergerakan head sebagai langkah awal
dari 53. Jika disk arm bergerak menuju 0, maka head akan melayani 37 dan
kemudian 14. Pada silinder 0, disk arm akan bergerak berlawanan arah dan
bergerak menuju ujung lain dari disk untuk melayani permintaan 65, 67, 98,
122,
124, dan 183. Jika permintaan terletak tepat pada head saat itu, maka akan
dilayani terlebih dahulu, sedangkan permintaan yang datang tepat dibelakang
head harus menunggu dulu head mencapai ujung disk, berbalik arah, baru
kemudian
dilayani.
Algoritma SCAN ini disebut juga algoritma lift/ elevator, karena kelakuan disk
arm sama seperti elevator dalam suatu gedung, melayani dulu orang-orang yang
akan naik ke atas, baru kemudian berbalik arah untuk melayani orang-orang yang
ingin turun ke bawah.
Kelemahan algoritma ini adalah jika banyak permintaan terletak pada salah satu
ujung disk, sedangkan permintaan yang akan dilayani sesuai arah arm disk
jumlahnya sedikit atau tidak ada, maka mengapa permintaan yang banyak dan
terdapat pada ujung yang berlawanan arah dengan gerakan disk arm saat itu
tidak
dilayani duluan? Ide ini akan mendasari algoritma penjadualan berikut yang
akan
kita bahas.
------------------------------------------------------------------------------
-
Penjadualan C-SCAN
Circular-SCAN adalah varian dari algoritma SCAN yang sengaja didesain untuk
menyediakan waktu tunggu yang sama. Seperti halnya SCAN, C-SCAN akan
menggerakkan head dari satu ujung disk ke ujung lainnya sambil melayani
permintaan yang terdapat selama pergerakan tersebut. Tetapi pada saat head
tiba
pada salah satu ujung, maka head tidak berbalik arah dan melayani
permintaan-permintaan, melainkan akan kembali ke ujung disk asal
pergerakannya.
Jika head mulai dari ujung 0, maka setelah tiba di ujung disk yang lainnya,
maka head tidak akan berbalik arah menuju ujung 0, tetapi langsung bergerak
ulang dari 0 ke ujung satunya lagi.
------------------------------------------------------------------------------
-
Penjadualan LOOK
Perhatikan bahwa SCAN dan C-SCAN menggerakkan disk arm melewati lebar seluruh
disk. Pada kenyataanya algoritma ini tidak diimplementasikan demikian
(pergerakan melewati lebar seluruh disk). Pada umumnya, arm disk bergerak
paling jauh hanya pada permintaan terakhir pada masing-masin arah
pergerakannya. Kemudian langsung berbalik arah tanpa harus menuju ujung disk.
Versi SCAN dan C-SCAN yang berprilaku seperti ini disebut LOOK SCAN dan LOOK
C-SCAN, karena algoritma ini melihat dulu permintaan-permintaan sebelum
melanjutkan arah pergerakannya.
------------------------------------------------------------------------------
-
Dengan algoritma penjadualan yang mana pun, kinerja sistem sangat tergantung
pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki
satu permintaan, maka semua algoritma penjadualan akan dipaksa bertindak sama,
karena algoritma-algoritma tersebut hanya punya satu pilihan dari mana
menggerakkan disk head: semuanya berprilaku seperti algoritma penjadualan
FCFS.
Perlu diperhatikan pula bahwa pelayanan permintaan disk dapat dipengaruhi pula
oleh metode alokasi file. Sebuah program yang membaca alokasi file secara
terus
menerus mungkin akan membuat beberapa permintaan yang berdekatan pada disk,
menyebabkan pergerakan head menjadi terbatas. File yang memiliki link atau
indeks, dilain pihak, mungkin juga memasukkan blok-blok yang tersebar luas
pada
disk, menyebabkan pergerakan head yang sangat besar.
Lokasi blok-blok indeks dan directory juga tidak kalah penting. Karena file
harus dibuka sebelum digunakan, proses pembukaan file membutuhkan pencarian
pada struktur directory, dengan demikian directory akan sering diakses. Kita
anggap catatan directory berada pada awal silinder, sedangkan data file berada
pada silinder terakhir. Pada kasus ini, disk head harus bergerak melewati
sepanjang lebar disk. Membuat tempat penyimpanan sementara dari blok-blok
indeks dan directory ke dalam memori dapat membantu mengurangi pergerakan disk
arm, khususnya untuk permintaan membaca disk.
Karena kerumitan inilah, maka algoritma penjadualan disk harus ditulis dalam
modul terpisah dari sistem operasi, jadi dapat saling mengganti dengan
algoritma lain jika diperlukan. Baik SSTF mau pun LOOK keduanya merupakan
pilihan yang paling masuk akal sebagai algoritma yang paling dasar.
------------------------------------------------------------------------------
-
Managemen Disk
Memformat Disk
Sebuah disk magnetik yang baru sebenarnya hanyalah sebuah slate kosong yang
berupa piringan magnetik untuk menyimpan sesuatu. Sebelum disk tersebut dapat
menyimpan data, harus dilakukan proses low-level formatting/ physical
formatting, yaitu membagi disk menjadi beberapa sektor dan mengisinya dengan
struktur data tertentu (biasanya header, area data, dan trailer) agar dapat
dibaca dan ditulis oleh disk controller.
Low-level formatting berfungsi agar pihak manufaktur dapat mengetes disk dan
menginisialisasi mapping dari lojikal nomor blok ke pendeteksi sektor kosong.
Semakin besar ukuran sektor yang diformat, semakin sedikit sektor yang dapat
diisi pada masing-masing track dan semakin sedikit header dan trailer yang
ditulis pada setiap track. Hal ini berarti ruang yang dapat digunakan untuk
data semakin besar.
Agar disk dapat menggunakan suatu berkas, sistem operasi membutuhkan untuk
menyimpan struktur datanya pada disk. Langkah pertama adalah membagi disk
menjadi satu/ lebih silinder (partition), sehingga sistem operasi dapat
memperlakukannya sebagai disk yang terpisah. Langkah kedua adalah logical
formatting, atau membuat sistem berkas. Pada langkah ini, sistem operasi
menyimpan struktur data yang telah diinisialisasi ke disk.
Raw I/O adalah array pada blok lojikal yang memiliki kemampuan untuk
menggunakan suatu partisi disk tanpa struktur data dari sistem berkas. Dengan
partisi raw ini, untuk beberapa aplikasi tertentu akan lebih efisien dari segi
penyimpanan. Tetapi kebanyakan aplikasi akan berjalan lebih baik dengan servis
sistem berkas biasa.
------------------------------------------------------------------------------
-
Boot Block
------------------------------------------------------------------------------
-
Bad Blocks
Bad blocks adalah satu/lebih sektor yang rusak pada suatu disk. Pada disk
sederhana, bad blocks diatasi secara manual. Untuk disk yang lebih kompleks
seperti disk SCSI, bad blocks diatasi dengan sector sparing atau forwarding,
yaitu controller dapat mengganti sektor yang rusak dengan sebuah sektor yang
terpisah. Alternatif lainnya adalah mengganti sektor tersebut dengan cara
sector slipping.
Mengganti blok yang rusak bukan sepenuhnya merupakan proses yang otomatis,
karena data-data yang tersimpan sebelum nya akan terhapus.
------------------------------------------------------------------------------
-
Penanganan Swap-Space
------------------------------------------------------------------------------
-
Penggunaan Swap-Space
Harap dicatat bahwa menyediakan swap-space yang berlebih lebih aman daripada
kekurangan swap-space, karena bila kekurangan maka ada kemungkinan sistem
terpaksa menghentikan sebuah atau lebih proses atau bahkan membuat sistem
menjadi crash. Swap-space yang berlebih memang membuang disk space yang
sebenarnya bisa digunakan untuk menyimpan berkas ( file), tapi setidaknya
tidak
menimbulkan resiko yang lain.
------------------------------------------------------------------------------
-
Lokasi Swap-Space
Ada dua tempat dimana swap-space bisa berada: swap-space bisa diletakkan pada
partisi yang sama dengan sistem operasi, atau pada partisi yang berbeda.
Apabila swap-space yang dipakai hanya berupa sebuah berkas yang besar di dalam
sistem berkas, maka sistem berkas yang dipakai bisa digunakan untuk membuat,
menamakan, dan mengalokasikan tempat swap-space. Maka dari itu, pendekatan
seperti ini mudah untuk diimplementasikan. Sayangnya, juga tidak efisien.
Menelusuri struktur direktori dan struktur data alokasi disk memakan waktu,
dan
berpotensi untuk mengakses disk lebih banyak dari yang diperlukan. Fragmentasi
eksternal bisa membuat swapping lebih lama dengan memaksakan pencarian
sekaligus banyak (multiple seeks) ketika sedang membaca atau menulis sebuah
proses. Kita bisa meningkatkan performa dengan meng-cache informasi lokasi
blok
pada physical memory, dan dengan menggunakan aplikasi khusus untuk
mengalokasikan blok-blok yang contiguous (tidak terputus) untuk berkas
swap-nya, dengan waktu tambahan untuk menelusuri struktur data file-system
masih tetap ada.
Metode yang lebih umum adalah untuk membuat swap-space di partisi yang
terpisah. Tidak ada sistem file atau struktur direktori di dalam partisi ini.
Justru sebuah swap-space storage manager yang terpisah digunakan untuk
mengalokasikan dan melepaskan blok-blok yang digunakan. Manager ini
menggunakan
algoritma yang dioptimalkan untuk kecepatan, daripada efisiensi tempat.
Fragmentasi internal mungkin akan meningkat, tetapi ini bisa diterima karena
data dalam swap-space biasanya umurnya lebih singkat daripada data-data di
sistem file, dan swap area-nya diakses lebih sering. Pendekatan ini membuat
besar swap-space yang tetap selagi mempartisi disk. Menambah jumlah swap-space
bisa dilakukan hanya me lalui mempartisi ulang disk (dimana juga termasuk
memindahkan atau menghancurkan dan mengembalikan partisi file-system lainnya
dari backup), atau dengan menambahkan swap-space di tempat lain.
Beberapa sistem operasi cukup fleksibel dan bisa swapping baik di partisi
mentah (raw, belum di-format) dan di file-system. Contohnya Solaris 2. Policy
dan implementasinya terpisah, sehingga administrator mesinnya (komputernya)
bisa memutus kan mana yang akan digunakan. Pertimbangannya adalah antara kemu
dahan alokasi dan pengelolaan file-system, dan performa dari swapping pada
partisi yang raw.
------------------------------------------------------------------------------
-
Pengelolaan Swap-Space
Dua peta swap untuk setiap proses digunakan oleh kernel untuk melacak
penggunaan swap-space. Segmen teks besarnya tetap, maka swap space yang
dialokasikan sebesar 512K setiap potong (chunks), kecuali untuk potongan
terakhir, yang menyimpan sisa halaman-halaman (pages) tadi, dengan kenaikan
(increments) sebesar 1K.
Peta swap dari Segmen data lebih rumit, karena segmen data bisa mem besar
setiap saat. Petanya sendiri besarnya tetap, tapi menyimpan a lamat-alamat
swap
untuk blok-blok yang besarnya bervariasi. Misalkan ada index i, bla-bla-bla,
dengan besar maksimun 2 megabytes. Data struktur ini ditunjukkan oleh gambar
13.8. (Besar minimum dan maksi mum blok bervariasi, dan bisa diubah ketika
me-reboot sistem.) Keti ka sebuah proses mencoba untuk memperbesar segmen
datanya melebihi blok yang dialokasikan di tempat swap, sistem operasi
mengalokasikan blok lain lagi, dua kali besarnya yang pertama. Skema ini
menyebab kan proses-proses yang kecil menggunakan blok-blok kecil. Ini juga
meminimalisir fragmentasi. Blok-blok dari proses yang besar bisa di temukan
dengan cepat, dan peta swap tetap kecil.
Pada Solaris 1 (SunOS 4), para pembuatnya membuat perubahan pada me tode
standar UNIX untuk meningkatkan efisiensi dan untuk mencermin kan perubahan
teknologi. Ketika sebuah proses berjalan, halaman-hala man (pages) dari segmen
teks dibawa kembali dari sistem berkas, diak ses di memori utama, dan dibuang
bila diputuskan untuk di-pageout. A kan lebih efisien untuk membaca ulang
sebuah halaman (page) dari sis tem berkas daripada menaruhnya di swap-space
dan
membacanya ulang dari sana.
Lebih banyak lagi perubahan pada Solaris 2. Perubahan terbesar ada lah Solaris
2 mengalokasikan swap-space hanya ketika sebuah halaman (page) dipaksa keluar
dari memori, daripada ketika halaman (page) da ri memori virtual pertama kali
dibuat. Perubahan ini memberikan per forma yang lebih baik pada
komputer-komputer modern, yang sudah mem punyai memori lebih banyak daripada
komputer-komputer dengan sistem yang sudah lama, dan lebih jarang melakukan
paging.
------------------------------------------------------------------------------
-
Kehandalan Disk
Disk memiliki resiko untuk mengalami kerusakan. Kerusakan ini dapat berakibat
turunnya performa atau pun hilangnya data. Meski pun terdapat backup data,
tetap saja ada kemungkinan data yang hilang karena adanya perubahan setelah
terakhir kali data di-backup. Karenanya reliabilitas dari suatu disk harus
dapat terus ditingkatkan.
Bisa saja pengguna secara tidak sengaja menghapus suatu berkas, hal ini
dapat dicegah seminimal mungkin dengan cara melakukan backup data secara
reguler.
Rusaknya blok pada disk dapat saja disebabkan dari umur disk tersebut.
Seiring dengan waktu, banyaknya blok pada disk yang rusak dapat terus
terakumulasi. Blok yang rusak pada disk, tidak akan dapat dibaca.
4. Rusaknya Disk.
Bisa saja karena suatu kejadian disk rusak total. Sebagai contoh, dapat
saja disk jatuh atau pun ditendang ketika sedang dibawa.
5. System Corrupt.
Berbagai macam cara dilakukan untuk meningkatkan kinerja dan juga reliabilitas
dari disk. Biasanya untuk meningkatkan kinerja, dilibatkan banyak disk sebagai
satu unit penyimpanan. Tiap-tiap blok data dipecah ke dalam beberapa subblok,
dan dibagi-bagi ke dalam disk-disk tersebut. Ketika mengirim data disk-disk
tersebut bekerja secara pararel. Ditambah dengan sinkronisasi pada rotasi
masing-masing disk, maka kinerja dari disk dapat ditingkatkan. Cara ini
dikenal
sebagai RAID (Redundant Array of Independent Disks). Selain masalah kinerja
RAID juga dapat meningkatkan reabilitas dari disk dengan jalan melakukan
redundansi data.
Salah satu cara yang digunakan pada RAID adalah dengan mirroring atau
shadowing, yaitu dengan membuat duplikasi dari tiap-tiap disk. Pada cara ini,
berarti diperlukan media penyimpanan yang dua kali lebih besar daripada ukuran
data sebenarnya. Akan tetapi, dengan cara ini pengaksesan disk yang dilakukan
untuk membaca dapat ditingkatkan dua kali lipat. Hal ini dikarenakan setengah
dari permintaan membaca dapat dikirim ke masing-masing disk. Cara lain yang
digunakan pada RAID adalah block interleaved parity. Pada cara ini, digunakan
sebagian kecil dari disk untuk penyimpanan parity block. Sebagai contoh,
dimisalkan terdapat 10 disk pada array. Karenanya setiap 9 data block yang
disimpan pada array, 1 parity block juga akan disimpan. Bila terjadi kerusakan
pada salah satu block pada disk maka dengan adanya informasi pada parity block
ini, ditambah dengan data block lainnya, diharapkan kerusakan pada disk
tersebut dapat ditanggulangi, sehingga tidak ada data yang hilang. Penggunaan
parity block ini juga akan menurunkan kinerja sama seperti halnya pada
mirroring. Pada parity block ini, tiap kali subblock data ditulis, akan
terjadi
perhitungan dan penulisan ulang pada parity block.
------------------------------------------------------------------------------
-
Implementasi Stable-Storage
Pada bagian sebelumnya, kita sudah membicarakan mengenai write-ahead log, yang
membutuhkan ketersediaan sebuah storage yang stabil. Berdasarkan definisi,
informasi yang berada di dalam stable storage tidak akan pernah hilang. Untuk
mengimplementasikan storage seperti itu, kita perlu mereplikasi informasi yang
dibutuhkan ke banyak peralatan storage (biasanya disk-disk) dengan failure
modes yang independen. Kita perlu mengkoordinasikan penulisan update-update
dalam sebuah cara yang menjamin bila terjadi kegagalan selagi meng-update
tidak
akan membuat semua kopi yang ada menjadi rusak, dan bila sedang recover dari
sebuah kegagalan, kita bisa memaksa semua kopi yang ada ke dalam keadaan yang
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.
1. Successful completion.
2. Partial failure.
Kegagalan terjadi di tengah-tengah transfer, menyebabkan hanya bebe rapa
sektor yang diisi dengan data yang baru, dan sektor yang diisi ketika
terjadi kegagalan menjadi rusak.
3. Total failure.
Kegagalan terjadi sebelum disk write dimulai, jadi data yang sebe lumnya
ada pada disk masih tetap ada.
Kita memerlukan, kapan pun sebuah kegagalan terjadi ketika sedang me nulis ke
sebuah blok, sistem akan mendeteksinya dan memanggil sebuah prosedur recovery
untuk me-restore blok tersebut ke sebuah keadaan yang konsisten. Untuk
melakukan itu, sistem harus menangani dua blok physical untuk setiap blok
logical. Sebuah operasi output dieksekusi seperti berikut:
Pada saat recovery dari sebuah kegagalan, setiap pasang blok physi cal
diperiksa. Jika keduanya sama dan tidak terdeteksi adanya kesa lahan, tetapi
berbeda dalam isi, maka kita mengganti isi dari blok yang pertama dengan isi
dari blok yang kedua. Prosedur recovery se perti ini memastikan bahwa sebuah
penulisan ke stable storage akan sukses atau tidak ada perubahan sama sekali.
Kita bisa menambah fungsi prosedur ini dengan mudah untuk memboleh kan
penggunaan dari kopi yang banyak dari setiap blok pada stable storage. Meski
pun sejumlah besar kopi semakin mengurangi kemungkin an untuk terjadinya
sebuah
kegagalan, maka biasanya wajar untuk men simulasi stable storage hanya dengan
dua kopi. Data di dalam stable storage dijamin aman kecuali sebuah kegagalan
menghancurkan semua ko pi yang ada.
------------------------------------------------------------------------------
-
Tertiary-Storage Structure
------------------------------------------------------------------------------
-
Floppy Disk
Gambar 6-4. Floppy Disk. Sumber: . . .
[floppy_dis]
Floopy disk adalah fleksible disk yang tipis, dilapisi material yang bersifat
magnet, dan ditutupi oleh plastik.
Ciri-ciri:
------------------------------------------------------------------------------
-
Magneto-optic disk
[magneto_op]
Magneto-optic Disk adalah Piringan optic yang keras dilapisi oleh material
yang
bersifat magnet, kemudian dilapisi pelindung dari plastik atau kaca yang
berfungsi untuk menahan head yang hancur.
Drive ini mempunyai medan magnet. Pada suhu kamar, medan magnet terlalu kuat
dan terlalu lemah untuk memagnetkan satu bit ke disk. Untuk menulis satu bit,
disk head akan mengeluarkan sinar laser ke permukaan disk. Sinar laser ini
ditujukan pada spot yang kecil. Spot ini adalah tempat yang ingin kita tulis
satu bit. Spot yang ditembak sinar laser menjadi rentan terhadap medan magnet
sehingga menulis satu bit dapat dilakukan baik pada saat medan magnet kuat mau
pun lemah.
Magneto-optic disk head berjarak lebih jauh dari permukaan disk daripada
magnetic disk head. Walau pun demikian, drive tetap dapat membaca bit, yaitu
dengan bantuan sinar laser (disebut Kerr effect).
------------------------------------------------------------------------------
-
Optical Disk
[optical_di]
Disk ini tidak menggunakan sifat magnet, tetapi menggunakan bahan khusus yang
dimodifikasi menggunakan sinar laser. Setelah dimodifikasi dengan dengan sinar
laser pada disk akan terdapat spot yang gelap atau terang. Spot ini menyimpan
satu bit.
2. Dye-polimer disk, merekam data dengan membuat bump. Disk dilapisi plastik
yang mengandung dye yang dapat menyerap sinar laser. Sinar laser membakar
spot yang kecil sehingga spot membengkak dan membentuk bump. Sinar laser
juga dapat menghangatkan bump sehingga spot menjadi lunak dan bump menjadi
datar.
------------------------------------------------------------------------------
-
[worm_disk]
WORM adalah Aluminium film yang tipis dilapisi oleh piringan plastik atau kaca
pada bagian atas dan bawahnya.
Untuk menulis bit, drive tersebut menggunakan sinar laser untuk membakar hole
yang kecil pada aluminium. Hole ini tidak dapat diubah seperti sebelumnya.
Oleh
karena itu, disk hanya dapat ditulis sekali.
Ciri-ciri:
* Read Only disk, seperti CD-ROM dan DVD yang berasal dari pabrik sudah
berisi data.
------------------------------------------------------------------------------
-
Tapes
[tape]
Walau pun harga tape drive lebih mahal daripada disk drive, harga tape
cartridge lebih murah daripada disk cartridge apabila dilihat dari kapasitas
yang sama. Jadi, untuk penggunaan yang lebih ekonomis lebih baik digunakan
tape. Tape drive dan disk drive mempunyai transfer rate yang sama. Tetapi,
random access tape lebih lambat daripada disk karena tape menggunakan operasi
forward dan rewind.
Seperti disebutkan diatas, tape adalah media yang ekonomis apabila media yang
ingin digunakan tidak membutuhkan kemampuan random access, contoh: backup data
dari data disk, menampung data yang besar. Tape digunakan oleh supercomputer
center yang besar untuk menyimpan data yang besar. Data ini gunakan oleh badan
penelitian ilmiah dan perusahaan komersial yang besar.
Pemasangan tape yang besar menggunakan robotic tape changers. robotic tape
changers memindahkan beberapa tape antara beberapa tape drive dan beberapa
slot
penyimpanan yang berada di dalam tape library. library yang menyimpan beberapa
tape disebut tape stacker. library yang menyimpan ribuan tape disebut tape
silo.
Robotic tape library mengurangi biaya penyimpanan data. File yang ada di disk
dapat dipindahkan ke tape dengan tujuan mengurangi biaya penyimpanan. Apabila
file itu ingin digunakan, maka komputer akan memindahkan file tadi ke disk.
------------------------------------------------------------------------------
-
1. Tugas terpenting dari sistem operasi adalah mengatur physical devices dan
menampilkan abstarksi mesin virtual dari aplikasi (Interface aplikasi).
------------------------------------------------------------------------------
-
Interface Aplikasi
Kebanyakan sistem operasi menangani removable media hampir sama dengan fixed
disk, yaitu cartridge di format dan dibuat file sistem yang kosong pada disk.
Tapes ditampilkan sebagai media raw storage dan aplikasi tidak membuka file
pada tape, tetapi tapes dibuka kesemuanya sebagai raw device. Biasanya tape
drive disediakan untuk penggunaan khusus dari suatu aplikasi sampai aplikasi
berakhir atau menutup tape drive. Penggunaan khusus ini dikarenakan random
access tape membutuhkan waktu yang lama. Jadi, interleaving random access oleh
tape oleh beberapa aplikasi akan menyebabkan thrashing.
Operasi dasar tape drive berbeda dengan operasi dasar disk drive. Contoh
operasi dasar tape drive:
Kapasitas blok ditentukan pada saat blok ditulis. Apabila terdapat area yang
rusak pada saat blok ditulis, maka area yang rusak itu tidak dipakai dan
penulisan blok dilanjutkan setelah daerah yang rusak tersebut.
Untuk mencegah hal tadi digunakan tanda EOT (end-of-tape). Tanda EOT ditaruh
setelah sebuah blok ditulis. Drive menolak ke lokasi sebelum tanda EOT, tetapi
drive tidak menolak ke lokasi tanda EOT kemudian drive mulai menulis data.
Setelah selesai menulis data, tanda EOT ditaruh setelah blok yang baru ditulis
tadi.
------------------------------------------------------------------------------
-
Penamaan Berkas
Menamakan berkas pada removable media cukup sulit terutama pada saat kita
menulis data pada removable cartridge pada suatu komputer, kemudian
menggunakan
cartridge ini pada komputer yang lain. Jika jenis komputer yang digunakan sama
dan jenis cartridge yang digunakan sama, maka permasalahannya adalah
mengetahui
isi dan data layout dari cartridge. Tetapi, bila jenis komputer yang digunakan
dan jenis drive yang digunakan berbeda, maka berbagai masalah akan muncul.
Apabila hanya jenis drive yang digunakan sama, komputer yang berbeda menyimpan
bytes dengan berbagai cara dan juga menggunakan encoding yang berbeda untuk
binary number atau huruf.
------------------------------------------------------------------------------
-
File yang kapasitasnya kecil dan sering digunakan disimpan di disk. Sedangkan
file yang kapasitasnya besar, sudah lama, dan tidak aktif akan diarsipkan di
jukebox. Pada beberapa sistem file-archiving, directory entry untuk file
selalu
ada, tetapi isi file tidak berada di secondary storage. Jika aplikasi mencoba
membuka file, pemanggilan open system akan ditunda sampai isi file dikirim
dari
tertiary storage. Ketika isi file sudah ada di secondary storage, operasi open
dikembalikan ke aplikasi.
------------------------------------------------------------------------------
-
Rangkuman
I/O
Dasar dari elemen perangkat keras yang terkandung pada I/O adalah bus, device
controller, dan I/O itu sendiri. Kinerja kerja pada data yang bergerak antara
device dan memori utama di jalankan oleh CPU, di program oleh I/O atau mungkin
DMA controller. Modul kernel yang mengatur device adalah device driver.
System-call interface yang disediakan aplikasi dirancang untuk menghandle
beberapa dasar kategori dari perangkat keras, termasuk block devices,
character
devices, memory mapped files, network sockets dan programmed interval timers.
I/O system calls banyak dipakai oleh CPU, dikarenakan oleh banyaknya lapisan
dari perangkat lunak antara physical device dan aplikasi. Lapisan ini
mengimplikasikan overhead dari alih konteks untuk melewati kernel's protection
boundary, dari sinyal dan interrupt handling untuk melayani I/O devices.
------------------------------------------------------------------------------
-
Disk
Kinerja dapat rusak karena external fragmentation. Satu cara untuk menyusun
ulang disk untuk mengurangi fragmentasi adalah untuk back up dan restore
seluruh disk atau partisi. Blok-blok dibaca dari lokasi yang tersebar,
me-restore tulisan mereka secara berbeda. Beberapa sistem mempunyai kemampuan
untuk men-scan sistem file untuk mengidentifikasi file terfragmentasi, lalu
menggerakan blok-blok mengelilingi untuk meningkatkan fragmentasi.
Men-defragmentasi file yang sudah di fragmentasi (tetapi hasilnya kurang
optimal) dapat secara signifikan meningkatkan kinerja, tetapi sistem ini
secara
umum kurang berguna selama proses defragmentasi sedang berjalan. Sistem
operasi
me-manage blok-blok pada disk. Pertama, disk baru di format secara low level
untuk menciptakan sektor pada perangkat keras yang masih belum digunakan.
Lalu,
disk dapat di partisi dan sistem file diciptakan, dan blok-blok boot dapat
dialokasikan. Terakhir jika ada blok yang terkorupsi, sistem harus mempunyai
cara untuk me-lock out blok tersebut, atau menggantikannya dengan cadangan.
Tertiary storage di bangun dari disk dan tape drives yang menggunakan media
yang dapat dipindahkan. Contoh dari tertiary storage adalah magnetic tape,
removable magnetic, dan magneto-optic disk.
Untuk removable disk, sistem operasi secara general menyediakan servis penuh
dari sistem file interface, termasuk space management dan request-queue
schedulling. Untuk tape, sistem operasi secara general hanya menyediakan
interface yang baru. Banyak sistem operasi yang tidak memiliki built-in
support
untuk jukeboxes. Jukebox support dapat disediakan oleh device driver.
------------------------------------------------------------------------------
-
Soal Latihan
2. Apa tujuan adanya device driver? Berikan contoh keuntungan yang kita
dapatkan dengan adanya hal ini!
Performa I/O
Struktur Disk
Penjadualan Disk
1. Buatlah dengan pemikiran Anda sendiri, strategi penjadualan disk yang tepat
dan efisien menurut Anda
Managemen Disk
1. Bagaimana cara disk SCSI me-recovery blok yang rusak? Jelaskan selengkap
mungkin!
Penanganan Swap-Space
Reabilitas Disk
2. Adakah batas waktu hidup suatu disk? Jika ada, berapa lama? Jika tidak,
kenapa?
Implementasi Stable-Storage
1. Sebutkan kemungkinan-kemungkinan dari disk write!
Tertiary-Storage Structure
------------------------------------------------------------------------------
-
Rujukan
CATATAN: Situs (URL) rujukan ini pernah diakses pada pertengahan tahun 2003
yang lalu. Terdapat kemungkinan, bahwa situs tersebut sekaranga ini telah
berubah, atau telah dihapus.
3. DMA Interface
------------------------------------------------------------------------------
-
Daftar Istilah
device = device
disk = disk
transmission = transmission
controller = controller
command-ready =command-ready
busy = busy
error = error
host = host
polling = polling
looping = looping
service = service
pointer = pointer
overhead = overhead
exception = exception
trap = trap
idle = idle
handshaking = handshaking
controller = controller
physical memory = physical memory
device = device
polling = polling
concurrency = concurrency
channel = channel
bus = bus
bugs = bugs
reboot = reboot
reload = reload
overhead = overhead
messaging = messaging
threading = threading
locking = locking
debug = debug
crash = crash
write = write
workload = workload
tape = tape
backup = backup
disk drive = disk drive
bytes = bytes
hardware = hardware
head = head
disk = disk
bandwith = bandwith
bytes = bytes
input = input
output = output
controller = controller
shortest-seek-time-first = shortest-seek-time-first
shortest-job-first = shortest-job-first
starvation = starvation
Circular-SCAN = Circular-SCAN
directory = directory
slate = slate
trailer = trailer
partition = partition
I/O = I/O
bootstrap = boostrap
interface = interface
random-access = random-access
library = library
timer = timer
trigger = trigger
scheduler = scheduler
asynchronous = asynchronous
------------------------------------------------------------------------------
-
Bab 7. LINUX
Sejarah
Pada awal perkembangannya, source code Linux disediakan secara bebas melalui
Internet. Hasilnya, sejarah Linux merupakan kolaborasi banyak user dari
seluruh
dunia, semuanya dilakukan secara eksklusif melalui Internet. Dari kernel awal
yang hanya mengimplementasikan subset kecil dari sistem UNIX, sistem Linux
telah bertumbuh dimana sudah mampu memasukkan banyak fungsi UNIX.
Kernel Linux perlu dibedakan dari sebuah sistem Linux: kernel Linux merupakan
sebuah perangkat lunak orisinil yang dibuat oleh komunitas Linux sedangkan
sistem Linux, yang diketahui saat ini, mengandung banyak komponen yang dibuat
sendiri atau dipinjam dari proyek lain.
------------------------------------------------------------------------------
-
Kernel Linux
Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14
Maret, 1991. Sistem berkas yang didukung hanya sistem berkas Minix - kernel
pertama dibuat berdasarkan kerangka Minix. Tetapi, kernel tersebut sudah
mengimplementasi proses UNIX secara tepat.
Tanggal 14 Maret, 1994, versi yang merupakan tonggak sejarah Linux yaitu versi
1.0 keluar. Rilis ini adalah kulminasi dari tiga tahun perkembangan yang cepat
dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan: 1.0
mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0 juga memiliki
sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix.
Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke dalam rilis ini.
Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk,
CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan buat
modul kernel yang dynamically loadable dan unloadable juga diberikan.
Satu tahun setelah dirilis versi 1.0, kernel 1.2 keluar. Kernel versi 1.2
mendukung variasi perangkat keras yang lebih luas. Pengembang telah
memperbaharui networking stack untuk menyediakan support bagi protokol IPX,
dan
membuat implementasi IP lebih komplit dengan memberikan fungsi accounting dan
firewalling. Kernel 1.2 juga merupakan kernel Linux terakhir yang PC-only.
Konsentrasi lebih diberikan pada dukungan perangkat keras 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 architectures
dan multiprocessor architectures. Kode untuk manajemen memori telah diperbaiki
sehingga performa sistem berkas dan memori virtual meningkat. Untuk pertama
kalinya, file system caching dikembangkan ke networked file systems, writable
memory mapped regions juga sudah didukung. Kernel 2.0 sudah memberikan
performa
TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru.
Kemampuan untuk memakai remote Netware dan SMB (Microsoft LanManager) network
volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lain adalah
dukungan internal kernel threads, penanganan dependencies antara modul-modul
loadable, dan loading otomatis modul berdasarkan permintaan (on demand).
Konfigurasi dinamis dari kernel pada run time telah diperbaiki melalui
konfigurasi interface yang baru dan standar.
------------------------------------------------------------------------------
-
Sistem Linux
Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi
komponen lainlah yang membentuk secara komplit sistem operasi Linux. Dimana
kernel Linux terdiri dari kode-kode yang dibuat khusus untuk proyek Linux,
kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux,
melainkan biasa dipakai dalam beberapa sistem operasi yang mirip UNIX.
Contohnya, sistem operasi BSD dari Berkeley, X Window System dari MIT, dan
proyek GNU dari Free Software Foundation.
Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem
perpustakaan
utama Linux awalnya dimulai oleh proyek GNU, tetapi perkembangan
perpustakaannya diperbaiki melalui kerjasama dari komunitas Linux terutama
pada
pengalamatan, ketidak efisienan, dan bugs. Komponen lain seperti GNU C
Compiler, gcc, kualitasnya sudah cukup tinggi untuk dipakai langsung dalam
Linux. Alat-alat administrasi network dibawah Linux berasal dari kode yang
dikembangkan untuk 4.3BSD, tetapi BSD yang lebih baru , salah satunya FreeBSD,
sebaliknya meminjam kode dari Linux, contohnya adalah perpustakaan matematika
Intel floating-point-emulation.
Sistem Linux secara keseluruhan diawasi oleh network tidak ketat yang terdiri
dari para pengembang melalui internet, dengan grup kecil atau individu yang
memiliki tanggung jawab untuk menjaga integritas dari komponen- komponen
khusus. Dokumen 'File System Hierarchy Standard' juga dijaga oleh komunitas
Linux untuk memelihara kompatibilitas keseluruh komponen sistem yang
berbeda-beda. Aturan ini menentukan rancangan keseluruhan dari sistem berkas
Linux yang standar.
------------------------------------------------------------------------------
-
Distribusi Linux
Siapa pun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi
terakhir dari komponen sistem yang diperlukan melalui situs ftp lalu
di-compile. Pada awal keberadaan Linux, operasi seperti di atas persis seperti
yang dilaksanakan oleh pengguna Linux. Namun, dengan semakin dewasanya Linux,
berbagai individu dan kelompok berusaha membuat pekerjaan tersebut lebih mudah
dengan cara menyediakan sebuah set bingkisan yang standar dan sudah di-compile
terlebih dahulu supaya dapat diinstall secara mudah.
Koleksi atau distribusi ini, mengandung lebih dari sistem Linux dasar. Mereka
mengandung instalasi sistem ekstra dan utilitas manajemen, juga paket yang
sudah di compile dan siap diinstall dari banyak alat UNIX yang biasa, seperti
news servers, web browsers, text-processing dan alat mengedit, termasuk juga
games.
Distribusi SLS (Soft Landing System adalah koleksi pertama dari bingkisan
Linux
yang dikenal sebagai distribusi komplit. Walau pun SLS dapat diinstall sebagai
entitas tersendiri, dia tidak memiliki alat-alat manajemen bingkisan yang
sekarang diharapkan dari distribusi Linux. Distribusi Slackware adalah
peningkatan yang besar dalam kualitas keseluruhan (walau pun masih memiliki
manajemen bingkisan yang buruk); Slackware masih merupakan salah satu
distribusi yang paling sering diinstall dalam komunitas 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 dan perangkat lunak bebas komunitas Linux.
Pendukung Linux komersil lainnya termasuk distribusi dari Caldera, Craftworks,
dan Work- Group Solutions. Contoh distribusi lain adalah SuSE dan Unifix yang
berasal dari German.
------------------------------------------------------------------------------
-
Lisensi Linux
Kernel Linux terdistribusi dibawah Lisensi Publik Umum GNU (GPL), dimana
peraturannya disusun oleh Free Software Foundation. Linux bukanlah perangkat
lunak domain publik (public domain): Public Domain berarti bahwa pengarang
telah memberikan copyright terhadap perangkat lunak mereka, tetapi copyright
terhadap kode Linux masih dipegang oleh pengarang-pengarang kode tersebut.
Linux adalah perangkat 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 atau halangan.
Implikasi utama peraturan lisensi Linux adalah bahwa siapa saja yang
menggunakan Linux, atau membuat modifikasi dari Linux, tidak boleh membuatnya
menjadi hak milik sendiri. Jika sebuah perangkat lunak dirilis berdasarkan
lisensi GPL, produk tersebut tidak boleh didistribusi hanya sebagai produk
biner (binary-only). Perangkat lunak yang dirilis atau akan dirilis tersebut
harus disediakan sumber kodenya bersamaan dengan distribusi binernya.
------------------------------------------------------------------------------
-
Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya
paling
cepat. Kehadiran sejumlah kelompok pengembang, tersebar di seluruh dunia, yang
selalu memperbaiki segala fiturnya, ikut membantu kemajuan sistem operasi
Linux. Bersamaan dengan itu, banyak pengembang yang sedang bekerja untuk
memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux).
Masalah utama yang dihadapi Linux dahulu adalah interface yang berupa teks
(text based interface). Ini membuat orang awam tidak tertarik menggunakan
Linux
karena harus dipelajari terlebih dahulu untuk dapat dimengerti cara
penggunaannya (tidak user-friendly). Tetapi keadaan ini sudah mulai berubah
dengan kehadiran KDE dan GNOME. Keduanya memiliki tampilan desktop yang
menarik
sehingga mengubah persepsi dunia tentang Linux.
* The Tetragrid, sebuah mega computer dari Amerika yang dapat menghitung
lebih dari 13 trilyun kalkulasi per detik (13.6 TeraFLOPS). Tetragrid dapat
dimanfaatkan untuk mencari solusi dari masalah matematika kompleks dan
simulasi, dari astronomi dan riset kanker hingga ramalan cuaca.
* Evolocity, juga dari Amerika, dapat berjalan dengan kecepatan maksimum 9.2
TeraFLOPS(FLoating Operations Per Second), menjadikannya sebagai salah satu
dari lima supercomputer tercepat di dunia.
Jika melihat ke depan, kemungkinan Linux akan menjadi sistem operasi yang
paling dominan bukanlah suatu hal yang mustahil. Karena semua kelebihan yang
dimilikinya, setiap hari semakin banyak orang di dunia yang mulai berpaling ke
Linux.
------------------------------------------------------------------------------
-
[logolLinux]
Logo Linux adalah sebuah pinguin. Tidak sepert produk komersil sistem operasi
lainnya, Linux tidak memiliki simbol yang terlihat hebat. Melainkan Tux, nama
pinguin tersebut, memperlihatkan sikap santai dari gerakan Linux. Logo yang
lucu ini memiliki sejarah yang unik. Awalnya, tidak ada logo yang dipilih
untuk
Linux, namun pada waktu Linus (pencipta Linux) berlibur, ia pergi ke daerah
selatan. Disanalah dia bertemu seekor pinguin yang pendek cerita menggigit
jarinya. Kejadian yang lucu ini merupakan awal terpilihnya pinguin sebagai
logo
Linux.
Tux adalah hasil karya seniman Larry Ewing pada waktu para pengembang merasa
bahwa Linux sudah memerlukan sebuah logo (1996), dan nama yang terpilih adalah
dari usulan James Hughes yaitu "(T)orvalds (U)ni(X) -- TUX!". Lengkaplah sudah
logo dari Linux, yaitu seekor pinguin bernama Tux.
Hingga sekarang logo Linux yaitu Tux sudah terkenal ke berbagai penjuru dunia.
Orang lebih mudah mengenal segala produk yang berbau Linux hanya dengan
melihat
logo yang unik nan lucu hasil kerjasama seluruh komunitas Linux di seluruh
dunia.
------------------------------------------------------------------------------
-
Prinsip Rancangan
Dalam rancangan keseluruhan, Linux menyerupai implementasi UNIX non-
microkernel
yang lain. Ia adalah sistem yang multi-user, multi-tasking dengan alat-alat
UNIX-compatible yang lengkap. Sistem berkas Linux mengikuti semantik
tradisional UNIX, dan model jaringan standar UNIX diimplementasikan secara
keseluruhan. Ciri internal desain Linux telah dipengaruhi oleh sejarah
perkembangan sistem operasi ini.
Walau pun Linux dapat berjalan pada berbagai macam platform, pada awalnya dia
dikembangkan secara eksklusif pada arsitektur PC. Sebagian besar dari
pengembangan awal tersebut dilakukan oleh peminat individual, bukan oleh
fasilitas riset yang berdana besar, sehingga dari awal Linux berusaha untuk
memasukkan fungsionalitas sebanyak mungkin dengan dana yang sangat terbatas.
Saat ini, Linux dapat berjalan baik pada mesin multi-prosesor dengan main
memory yang sangat besar dan ukuran disk space yang juga sangat besar, namun
tetap mampu beroperasi secara berguna dengan jumlah RAM yang lebih kecil dari
4
MB.
------------------------------------------------------------------------------
-
Akibat semakin berkembangnya teknologi PC, kernel Linux juga semakin lengkap
dalam mengimplementasikan fungsi UNIX. Cepat dan efisien merupakan tujuan
desain yang penting, tetapi akhir-akhir ini konsentrasi perkembangan Linux
lebih pada tujuan desain yang ketiga yaitu standarisasi. Standar POSIX terdiri
dari kumpulan spesifikasi dari aspek berbeda kelakuan sistem operasi. Ada
dokumen POSIX untuk fungsi sistem operasi biasa dan untuk ekstensi seperti
proses untuk thread dan operasi real-time. Linux di desain supaya sesuai
dengan
dokumen POSIX yang relevan; sedikitnya ada dua distribusi Linux yang sudah
memperoleh sertifikasi ofisial POSIX.
Ada banyak standar lain di dunia UNIX, tetapi sertifikasi penuh Linux terhadap
standar lain UNIX terkadang menjadi lambat karena lebih sering tersedia dengan
harga tertentu (tidak secara bebas), dan ada harga yang harus dibayar jika
melibatkan sertifikasi persetujuan atau kecocokan sebuah sistem operasi
terhadap kebanyakan standar. Mendukung aplikasi yang luas penting untuk semua
sistem operasi sehingga implementasi dari standar merupakan tujuan utama
pengembangan Linux walau pun implementasinya tidak sah secara formal. Selain
standar POSIX, Linux saat ini mendukung ekstensi thread POSIX dan subset dari
ekstensi untuk kontrol proses real-time POSIX.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Kernel
Walau pun berbagai sistem operasi modern telah mengadopsi sebuah arsitektur
message-passing buat kernel internal mereka, Linux memakai model historis
UNIX:
kernel diciptakan sebagai biner yang tunggal dan monolitis. Alasan utama
adalah
untuk meningkatkan performa: Karena semua struktur data dan kode kernel
disimpan dalam satu address space, alih konteks tidak diperlukan ketika sebuah
proses memanggil sebuah fungsi sistem operasi atau ketika interupsi perangkat
keras dikirim. Tidak hanya scheduling inti dan kode memori virtual menempati
address space ini; semua kode kernel, termasuk semua 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 diperlukan untuk menjalankan proses, dan disediakan servis sistem
untuk memberikan pengaturan dan proteksi akses ke sumber daya (resource)
perangkat keras. Kernel mengimplementasi semua fitur yang diperlukan supaya
dapat bekerja sebagai sistem operasi. Namun, jika sendiri, sistem operasi yang
disediakan oleh kernel Linux sama sekali tidak mirip dengan sistem UNIX. Dia
tidak memiliki banyak fitur ekstra UNIX, dan fitur yang disediakan tidak
selalu
dalam format yang diharapkan oleh aplikasi UNIX. Interface dari sistem operasi
yang terlihat oleh aplikasi yang sedang berjalan tidak dipelihara secara
langsung oleh kernel. Melainkan, aplikasi membuat panggilan (calls) ke
perpustakaan sistem, yang kemudian memanggil servis sistem operasi yang
dibutuhkan.
------------------------------------------------------------------------------
-
Perpustakaan Sistem
Perpustakaan sistem menyediakan banyak tipe fungsi. Pada level yang paling
mudah, mereka membolehkan aplikasi melakukan permintaan pada servis sistem
kernel. Membuat sebuah panggilan sistem (system calls) melibatkan transfer
kontrol dari mode user yang tidak penting ke mode kernel yang penting; detil
dari transfer ini berbeda pada masing-masing arsitektur. Perpustakaan bertugas
untuk mengumpulkan argumen system-call dan, jika perlu, mengatur argumen
tersebut dalam bentuk khusus yang diperlukan untuk melakukan system call.
Perpustakaan juga dapat menyediakan versi lebih kompleks dari system call
dasar. Contohnya, fungsi buffered file-handling dari bahasa C semuanya
diimplementasi dalam perpustakaan sistem, yang berakibat kontrol yang lebih
baik terhadap file I/O daripada yang disediakan oleh system call kernel dasar.
Perpustakaan juga menyediakan rutin yang tidak ada hubungan dengan system
call,
seperti algoritma penyusunan (sorting), fungsi matematika, dan rutin
manipulasi
string (string manipulation). Semua fungsi yang diperlukan untuk mendukung
jalannya aplikasi UNIX atau POSIX diimplementasikan dalam perpustakaan sistem.
------------------------------------------------------------------------------
-
Utilitas Sistem
------------------------------------------------------------------------------
-
Modul kernel Linux adalah bagian dari kernel Linux yang dapat dikompilasi,
dipanggil dan dihapus secara terpisah dari bagian kernel lainnya saat
dibutuhkan. Modul kernel dapat menambah fungsionalitas kernel tanpa perlu
me-reboot sistem. Secara teori tidak ada yang dapat membatasi apa yang dapat
dilakukan oleh modul kernel. Kernel modul dapat mengimplementasikan antara
lain
device driver, sistem berkas, protokol jaringan.
Terdapat tiga komponen untuk menunjang modul kernel Linux. Ketiga komponen
tersebut adalah managemen modul, registrasi driver, dan mekanisme penyelesaian
konflik. Berikut akan dibahas ketiga komponen pendukung tersebut.
------------------------------------------------------------------------------
-
Pemanggilan modul dilakukan dalam dua tahap. Pertama, utilitas pemanggil modul
akan meminta kernel untuk mereservasi tempat di memori virtual kernel untuk
modul tersebut. Kernel akan memberikan alamat memori yang dialokasikan dan
utilitas tersebut dapat menggunakannya untuk memasukkan kode mesin dari modul
tersebut ke alamat pemanggilan yang tepat. Berikutnya system calls akan
membawa
modul, berikut setiap tabel simbol yang hendak diekspor, ke kernel. Dengan
demikian modul tersebut akan berada di alamat yang telah dialokasikan dan
tabel
simbol milik kernel akan diperbaharui.
------------------------------------------------------------------------------
-
Registrasi Driver
Untuk membuat modul kernel yang baru dipanggil berfungsi, bagian dari kernel
yang lain harus mengetahui keberadaan dan fungsi baru tersebut. Kernel membuat
tabel dinamis yang berisi semua driver yang telah diketahuinya dan menyediakan
serangkaian routines untuk menambah dan menghapus driver dari tabel tersebut.
Routines ini yang bertanggungjawab untuk mendaftarkan fungsi modul baru
tersebut.
Hal-hal yang masuk dalam tabel registrasi adalah:
* device driver
* sistem berkas
* protokol jaringan
* format binari
------------------------------------------------------------------------------
-
Resolusi Konflik
Kernel membuat daftar alokasi sumber daya perangkat keras. Ketika suatu driver
hendak mengakses sumber daya melalui I/O port, jalur interrupt, atau pun kanal
DMA, maka driver tersebut diharapkan mereservasi sumber daya tersebut pada
basis data kernel terlebih dahulu. Jika reservasinya ditolak akibat
ketidaktersediaan sumber daya yang diminta, maka modul harus memutuskan apa
yang hendak dilakukan selanjutnya. Jika tidak dapat melanjutkan, maka modul
tersebut dapat dihapus.
------------------------------------------------------------------------------
-
Manajemen Proses
Pendahuluan
Linux mengatur semua proses di dalam sistem melalui pemeriksaan dan perubahan
terhadap setiap struktur data task_struct yang dimiliki setiap proses. Sebuah
daftar pointer ke semua struktur data task_struct disimpan dalam task vector.
Jumlah maksimum proses dalam sistem dibatasi 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 terhadap event eksternal dan diperlakukan berbeda
dari proses biasa lainnya oleh penjadwal.
Proses akan berakhir ketika ia memanggil exit(). Kernel akan menentukan waktu
pelepasan sumber daya yang dimiliki oleh proses yang telah selesai tersebut.
Fungsi do_exit() akan dipanggil saat terminasi yang kemudian memanggil
__exit_mm/files/fs/sighand() yang akan membebaskan sumber daya. Fungsi
exit_notify() akan memperbarui hubungan antara proses induk dan proses anak,
semua proses anak yang induknya berakhir akan menjadi anak dari proses init.
Terakhir akan dipanggil scheduler untuk menjalankan proses baru.
------------------------------------------------------------------------------
-
Deskriptor Proses
struct task_struct{
volatile long state;
/*-1 unrunnable,
0 runnable,
>0 stopped*/
unsigned long flags;
/* 1 untuk setiap flag proses */
mm_segment_t_addr_limit;
/* ruang alamat untuk thread */
struct exec_domain *exec_domain;
long need_resched;
long counter;
long priority;
/* SMP and runqueue state */
struct task_struct *next_task, *prev_task;
struct task_struct *next_run, *prev_run;
...
/* task state */
/* limits */
/* file system info */
/* ipc stuff */
/* tss for this task */
/* filesystem information */
/* open file information */
/* memory management info */
/* signal handlers */
...
};
Setiap proses di Linux memiliki status. Status proses merupakan array dari
flag
yang mutually exclusive. Setiap proses memiliki tepat satu keadaan (status)
pada suatu waktu. Status tersebut adalah:
* TASK_RUNNING
Pada status ini, proses sedang atau pun siap dieksekusi oleh CPU.
* TASK_INTERRUPTIBLE
Pada status ini, proses sedang menunggu sebuah kondisi. Interupsi, sinyal,
atau pun pelepasan sumber daya akan membangunkan proses.
* TASK_UNINTERRUPTIBLE
Pada status ini, proses sedang tidur dan tidak dapat dibangunkan oleh suatu
sinyal.
* TASK_STOPPED
Pada status ini proses sedang dihentikan, misalnya oleh sebuah debugger.
* TASK_ZOMBIE
Pada status ini proses telah berhenti, namun masih memiliki struktur data
task_struct di task vector dan masih memegang sumber daya yang sudah tidak
digunakan lagi.
Setiap proses atau pun eksekusi yang terjadwal secara independen memiliki
deskriptor prosesnya sendiri. Alamat dari deskriptor proses digunakan untuk
mengindentifikasi proses. Selain itu, nomor ID proses (PIDs) juga digunakan
untuk keperluan tersebut. PIDs adalah 32-bit bilangan yang mengidentifikasikan
setiap proses dengan unik. Linux membatasi PIDs berkisar 0-32767 untuk
menjamin
kompatibilitas dengan sistem UNIX tradisional.
Karena proses merupakan sesuatu yang dinamis, maka deskriptor proses disimpan
dalam memori yang dinamis pula. Untuk itu dialokasikan juga memori sebesar 8KB
untuk setiap proses untuk menyimpan proses deskriptornya dan stack proses dari
modus kernel. Keuntungan dari dal ini adalah pointer dari deskriptor proses
dari proses yang sedang berjalan (running) dapat diakses dengan cepat
menggunakan stack pointer. Selain itu, 8KB (EXTRA_TASK_STRUCT) dari memori
akan
di-cache untuk mem-bypass pengalokasi memori kernel ketika sebuah proses
dihapus dan sebuah proses baru dibuat. Kedua perintah free_task_struct() dan
alloc_task_struct() akan digunakan untuk melepaskan atau mengalokasikan memori
seukuran 8KB sebagai cache.
Deskriptor proses juga membangun sebuah daftar proses dari semua proses yang
ada di sistem. Daftar proses tersebut merupakan sebuah doubly-linked list yang
dibangun oleh bagian next_task dan prev_task dari deskriptor proses.
Deskriptor
init_task(mis:swapper) berada di awal daftar tersebut dengan prev_task-nya
menunjuk ke deskriptor proses yang paling akhir masuk dalam daftar. Sedangkan
makro for_each_task() digunakan untuk memindai seluruh daftar.
Proses yang dijadwalkan untuk dieksekusi dari doubly-linked list dari proses
dengan status TASK_RUNNING disebut runqueue. Bagian prev_run dan next_run dari
deskriptor proses digunakan untuk membangun runqueue, dengan init_task
mengawali daftar tersebut. Sedangkan untuk memanipulasi daftar di deskriptor
proses tersebut, digunakan fungsi-fungsi: add_to_runqueue(), del_from_runqueue
(), move_first_runqueue(), move_last_runqueue(). Makro NR_RUNNING digunakan
untuk menyimpan jumlah proses yang dapat dijalankan, sedangkan fungsi
wake_up_process membuat sebuah proses menjadi dapat dijalankan.
Untuk menjamin akurasinya, array task akan diperbarui setiap kali ada proses
baru dibuat atau pun dihapus. Sebuah daftar terpisah akan melacak elemen bebas
dalam array task itu. Ketika suatu proses dihapus, entrinya ditambahkan di
bagian awal dari daftar tersebut.
Fungsi sleep_on() akan memasukkan suatu proses ke dalam antrian tunggu yang
diinginkan dan memulai penjadwal. Ketika proses itu mendapat sinyal untuk
bangun, maka proses tersebut akan dihapus dari antrian tunggu.
Bagian lain konteks eksekusi proses adalah konteks perangkat keras, misalnya:
isi register. Konteks dari perangkat keras akan disimpan oleh task state
segment dan stack modus kernel. Secara khusus tss akan menyimpan konteks yang
tidak secara otomatis disimpan oleh perangkat keras tersebut. Perpindahan
antar
proses melibatkan penyimpanan konteks dari proses yang sebelumnya dan proses
berikutnya. Hal ini harus dapat dilakukan dengan cepat untuk mencegah
terbuangnya waktu CPU. Versi baru dari Linux mengganti perpindahan konteks
perangkat keras ini menggunakan piranti lunak yang mengimplementasikan
sederetan instruksi mov untuk menjamin validasi data yang disimpan serta
potensi untuk melakukan optimasi.
Untuk mengubah konteks proses digunakan makro switch_to(). Makro tersebut akan
mengganti proses dari proses yang ditunjuk oleh prev_task menjadi next_task.
Makro switch_to() dijalankan oleh schedule() dan merupakan salah satu rutin
kernel yang sangat tergantung pada perangkat keras (hardware-dependent). Lebih
jelas dapat dilihat pada kernel/sched.c dan include/asm-*/system.h.
------------------------------------------------------------------------------
-
Linux menggunakan representasi yang sama untuk proses dan thread. Secara
sederhana thread dapat dikatakan sebuah proses baru yang berbagi alamat yang
sama dengan induknya. Perbedaannnya terletak pada saat pembuatannya. Thread
baru dibuat dengan system call clone yang membuat proses baru dengan identitas
sendiri, namun diizinkan untuk berbagi struktur data dengan induknya.
Secara tradisional, sumber daya yang dimiliki oleh proses induk akan
diduplikasi ketika membuat proses anak. Penyalinan ruang alamat ini berjalan
lambat, sehingga untuk mengatasinya, salinan hanya dibuat ketika salah satu
dari mereka hendak menulis di alamat tersebut. Selain itu, ketika mereka akan
berbagi alamat tersebut ketika mereka hanya membaca. Inilah proses ringan yang
dikenal juga dengan thread.
Thread dibuat dengan __clone(). __clone() merupakan rutin dari library system
call clone(). __clone memiliki 4 buah argumen yaitu:
* fn
* arg
* flags
sinyal yang dikirim ke induk ketika anak berakhir dan pembagian sumber daya
antara anak dan induk.
* child_stack
clone() mengambil argumen flags dan child_stack yang dimiliki oleh __clone
kemudian menentukan id dari proses anak yang akan mengeksekusi fn dengan
argumen arg.
Pembuatan anak proses dapat dilakukan dengan fungsi fork() dan vfork().
Implementasi fork() sama seperti system call clone() dengan sighandler SIGCHLD
di-set, semua bendera clone di-clear yang berarti tidak ada sharing dan
child_stack dibuat 0 yang berarti kernel akan membuat stack untuk anak saat
hendak menulis. Sedangkan vfork() sama seperti fork() dengan tambahan bendera
CLONE_VM dan CLONE_VFORK di-set. Dengan vfork(), induk dan anak akan berbagi
alamat, dan induk akan di-block hingga anak selesai.
Untuk memulai pembuatan proses baru, clone() akan memanggil fungsi do_fork().
Hal yang dilakukan oleh do_fork() antara lain:
Beberapa proses sistem hanya berjalan dalam modus kernel di belakang layar.
Untuk proses semacam ini dapat digunakan thread kernel. Thread kernel hanya
akan mengeksekusi fungsi kernel, yaitu fungsi yang biasanya dipanggil oleh
proses normal melalui system calls. Thread kernel juga hanya dieksekusi dalam
modus kernel, berbeda dengan proses biasa. Alamat linier yang digunakan oleh
thread kernel lebih besar dari PAGE_OFFSET proses normal yang dapat berukuran
hingga 4GB. Thread kernel dibuat sebagai berikut: int kernel_thread(int (*fn)
(void *), void *arg, unsigned long flags); flags=CLONE_SIGHAND, CLONE_FILES,
etc
------------------------------------------------------------------------------
-
Penjadual
Penjadual adalah suatu pekerjaan yang dilakukan untuk mengalokasikan CPU time
untuk tasks yang berbeda-beda dalam sistem operasi. Pada umumnya, kita
berfikir
penjadualan sebagai menjalankan dan menginterupsi suatu proses, untuk linux
ada
aspek lain yang penting dalam penjadualan: seperti menjalankan dengan berbagai
kernel tasks. Kernel tasks meliputi task yang diminta oleh proses yang sedang
dijalankan dan tasks yand dieksekusi internal menyangkut device driver yang
berkepentingan.
------------------------------------------------------------------------------
-
Sinkronisasi Kernel
Cara penjadualan kernel pada operasinya secara mendasar berbeda dengan cara
penjadualan suatu proses. Terdapat dua cara agar sebuah permintaan akan
eksekusi kernel-mode dapat terjadi. Sebuah 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 interupsi perangkat keras yang menyebabkan CPU memulai eksekusi
kernel-define handler untuk suatu interupsi.
Solusi pertama yang diberikan oleh linux adalah membuat normal kernel code
nonpreemptible (baca proses). Biasanya, ketika sebuah timer interrupt diterima
oleh kernel, membuat penjadualan proses, kemungkinan besar akan menunda
eksekusi proses yang sedang berjalan pada saat itu dan melanjutkan menjalankan
proses yang lain. Biar bagaimana pun, ketika timer interrupt diterima ketika
sebuah proses mengeksekusi kernel-system service routine, penjadualan ulang
tidak dilakukan secara mendadak; cukup, kernel need_resched flag terset untuk
memberitahu kernel untuk menjalankan penjadualan kembali setelah system call
selesai dan control dikembalikan ke user mode.
Sepotong kernel code mulai dijalankan, akan terjamin bahwa itu adalah
satu-satunya kernel code yang dijalankan sampai salah satu dari aksi dibawah
ini muncul:
* interupsi
* page fault
Page faults adalah suatu masalah yang potensial; jika sebuah kernel routine
mencoba untuk membaca atau menulis ke user memory, akan menyebabkan terjadinya
page fault yang membutuhkan I/O diskuntuk selesai, dan proses yang berjalan
akan di tunda sampai I/O selesai. Pada kasus yang hampir sama, 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 dengan memanggil sebuah fungsi untuk menunggu I/O selesai,
setelah itu proses akan menunggu dan penjadualan ulang akan muncul. Ketika
proses jalan kembali, proses tersebut akan melanjutkan untuk mengeksekusi
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 dan tidak ada tindakan khusus dilakukan untuk melindungi
critical section. Yang diperlukan adalah critical section 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 service routines. Alat dasarnya adalah perangkat keras
interrupt-control pada processor. Dengan meniadakan interupsi pada saat
critical section, maka kernel menjamin bahwa ia dapat melakukan proses tanpa
resiko terjadinya ketidak-cocokan akses dari struktur data yang di share.
Pemisahan itu berarti bahwa kegiatan proses yang komplek dan harus selesai
diberi tanggapan untuk suatu interupsi dapat diselesaikan oleh kernel tanpa
kecemasan tentang diinterupsi oleh interupsi itu sendiri. Jika interupsi lain
muncul ketika bottom half dieksekusi, maka interupsi dapat meminta kepada
bottom half yang sama untuk dieksekusi, tetapi eksekusinya akan dilakukan
setelah proses yang sedang berjalan selesai. Setiap eksekusi dari bottom half
dapat di interupsi oleh top half tetapi tidak dapat diinterupsi dengan bottom
half yang mirip.
------------------------------------------------------------------------------
-
Penjadualan Proses
Ketika kernel telah mencapai titik penjadualan ulang, entah karena terjadi
interupsi penjadualan ulang mau pun karena proses kernel yang sedang berjalan
telah diblokir untuk menunggu beberapa signal bangun, harus memutuskan proses
selanjutnya yang akan dijalankan. Linux telah memiliki dua algoritma
penjadualan proses yang terpisah satu sama lain. Algoritma yang pertama adalah
algoritma time-sharing untuk penjadualan preemptive yang adil diantara sekian
banyak proses. Sedangkan algoritma yang kedua didesain untuk tugas real-time
dimana proritas mutlak lebih utama daripada keadilan mendapatkan suatu
pelayanan.
Bagian dari tiap identitas proses adalah kelas penjadualan, yang akan
menentukan algoritma yang digunakan untuk tiap proses. Kelas penjadualan yang
digunakan oleh Linux, terdapat dalam standar perluasan POSIX untuk sistem
komputer waktu nyata.
Untuk proses time-sharing, Linux menggunakan teknik prioritas, sebuah
algoritma
yang berdasarkan pada kupon. Tiap proses memiliki sejumlah kupon penjadualan;
dimana ketika ada kesempatan untuk menjalankan sebuah tugas, maka proses
dengan
kupon terbanyaklah yang mendapat giliran. Setiap kali terjadi interupsi waktu,
proses yang sedang berjalan akan kehilangan satu kupon; dan ketika kupon yang
dimiliki sudah habis maka proses itu akan ditunda dan proses yang lain akan
diberikan kesempatan untuk masuk.
Jika proses yang sedang berjalan tidak meiliki kupon sama sekali, linux akan
melakukan operasi pemberian 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
dari proses itu sendiri. Satu setengah dari kupon yang dimiliki sejak operasi
pembagian kupon terakhir akan tetap dijaga setelah algoritma telah dijalankan,
menjaga beberapa sejarah sikap proses. Proses yang berjalan sepanjang waktu
akan cenderung untuk menghabiskan kupon yang dimilikinya dengan cepat, tapi
proses yang lebih banyak menunggu dapat mengakumulasi kuponnya dari. Sistem
pembagian kupon ini, 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 suatu proses dapat ditingkatkan. Pekerjaan background batch
dapat diberikan prioritas yang rendah; proses tersebut akan secara otomatis
menerima kupon yang lebih sedikit dibandingkan dengan pekerjaan yang
interaktif, dan juga akan menerima persentase waktu CPU yang lebih sedikit
dibandingan dengan tugas yang sama dengan prioritas yang lebih tinggi. Linux
menggunakan sistem prioritas ini untuk menerapkan mekanisme standar pembagian
prioritas proses yang lebih baik.
Penjadualan waktu nyata Linux masih tetap lebih sederhana. Linux, menerapkan
dua kelas penjadualan waktu nyata yang dibutuhkan oleh POSIX 1.b: First In
First Out dan round-robin. Pada keduanya, tiap proses 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 yang tinggi. Diantara proses dengan
prioritas yang sama, maka proses yang sudah menunggu lama, akan dijalankan.
Perbedaan satu - satunya antara penjadualan FIFO dan round-robin adalah proses
FIFO akan melanjutkan prosesnya sampai keluar atau pun diblokir, sedangkan
proses round-robin akan di-preemptive-kan setelah beberapa saat dan akan
dipindahkan ke akhir antrian, jadi proses round-robin dengan 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 Linux menawarkan jaminan yang tegas mengenai prioritas relatif
dari proses waktu nyata, tapi kernel tidak menjamin seberapa cepat penjadualan
proses waktu-nyata akan dijalankan pada saat proses siap dijalankan. Ingat
bahwa kode kernel Linux tidak akan pernah bisa dipreemptive oleh kode mode
pengguna. Apabila terjadi interupsi yang membangunkan proses waktu nyata,
sementara kernel siap untuk mengeksekusi sebuah sistem call sebagai bagian
proses lain, proses waktu nyata harus menunggu sampai sistem call yang sedang
dijalankan selesai atau diblokir.
------------------------------------------------------------------------------
-
Symmetric Multiprocessing
Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung
perangkat keras symmetric multiprocessor (SMP). Proses mau pun thread yang
berbeda dapat dieksekusi secara paralel dengan processor yang berbeda. Tapi
bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasi yang
tidak
dapat di-preemptive dari kernel, penerapan SMP ini menerapkan aturan dimana
hanya satu processor yang dapat dieksekusi dengan kode mode kernel pada suatu
saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan aturan ini.
Spinlock ini tidak memunculkan permasalahan untuk pekerjaan yang banyak
menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaan yang
melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat
mengkhawatirkan.
Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk
menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel
spinlock
tunggal menjadi banyak kunci yang masing-masing melindungi terhadap masuknya
kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini,
pengembangan kernel yang terbaru mengizinkan banyak processor untuk dieksekusi
oleh kode mode kernel secara bersamaan.
------------------------------------------------------------------------------
-
Bagian ini menjelaskan bagaimana linux menangani memori dalam sistem. Memori
managemen merupakan salah satu bagian terpenting dalam sistem operasi. Karena
adanya keterbatasan memori, diperlukan suatu strategi dalam menangani masalah
ini. Jalan keluarnya adalah dengan menggunakan memori virtual. Dengan memori
virtual, memori tampak lebih besar daripada ukuran yang sebenarnya.
Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori
sebenarnya. Memori virtual bisa beberapa kali lebih besar daripada memori
fisiknya.
3. Perlindungan
------------------------------------------------------------------------------
-
Memori Virtual
[gbr107]
Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang disebut
page.
Page ini memiliki ukuran yang sama besar. Tiap page ini punya nomor yang unik,
yaitu Page Frame Number (PFN). Untuk setiap instruksi dalam program, CPU
melakukan mapping dari alamat virtual ke memori fisik yang sebenarnya.
Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU
menggunakan tabel page untuk 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:
1. Virtual PFN
2. PFN fisik
------------------------------------------------------------------------------
-
Demand Paging
Cara untuk menghemat memori fisik adalah dengan hanya meload page virtual yang
sedang digunakan oleh program yang sedang dieksekusi. Tehnik dimana hanya
meload page virtual ke memori hanya ketika program dijalankan disebut demand
paging.
Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori,
CPU tidak dapat menemukan anggota tabel page. Contohnya, dalam gambar, tidak
ada anggota tabel page untuk proses x untuk virtual PFN 2 dan jika proses x
ingin membaca alamat dari virtual PFN 2, CPU tidak dapat menterjemahkan alamat
ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk menangani
masalah ini. CPU menginformasikan kepada sistem operasi bahwa page fault telah
terjadi, dan sistem operasi membuat proses menunggu selama sistem operasi
menagani masalah ini.
CPU harus membawa page yang benar ke memori dari image di disk. Akses disk
membutuhkan waktu yang sangat lama dan proses harus menunggu sampai page
selesai diambil. Jika ada proses lain yang dapat dijalankan, maka sistem
operai
akan memilihnya untuk kemudian dijalankan. Page yang diambil kemudian
dituliskan di dalam page fisik yang masih kosong dan anggota dari virtual PFN
ditambahkan dalam tabel page proses. Proses kemudian dimulai lagi pada tempat
dimana page fault terjadi. Saat ini terjadi pengaksesan memori virtual, CPU
membuat penerjemahan dan kemudian proses dijalankan kembali.
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 image tersebut terdapat dalam memori fisik.
------------------------------------------------------------------------------
-
Swaping
Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah page ke
memori, sistem operasi harus memutuskan apa yang harus dilakukan. Sistem
operasi harus adil dalam mambagi page fisik dalam sistem diantara proses yang
ada, bisa juga sistem operasi menghapus satu atau lebih page dari memori untuk
membuat ruang untuk page baru yang dibawa ke memori. Cara page virtual dipilih
dari memori fisik berpengaruh pada efisiensi sistem.
Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan
dihapus dari sistem. Ini berarti setiap page memiliki usia sesuai dengan
berapa
sering page itu diakses. Semakin sering sebuah page diakses, semakin muda page
tersebut. Page yang tua adalah kandidat untuk diswap.
------------------------------------------------------------------------------
-
Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke
memori menggunakan tabel page. Proses yang akan berbagi memori virtual yang
sama, page fisik yang sama direference oleh banyak proses. Tabel page untuk
setiap proses mengandung anggota page table yang mempunyai PFN fisik yang
sama.
------------------------------------------------------------------------------
-
Efisiensi
Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari
sistem.
Disamping membuat prosesor, memori semakin cepat, jalan terbaik adalah
manggunakan cache. Berikut ini adalah beberapa cache dalam managemen memori di
linux:
1. Page Cache
Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat
dibaca dari disk, page dicache di page cache. Jika page ini tidak
dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang
lain, page ini dapat segera diambil dari page cache.
2. Buffer Cache
Page mungkin mengandung buffer data yang sedang digunakan oleh kernel,
device driver dan lain-lain. Buffer cache tampak seperti daftar buffer.
Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat
untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik
lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.
3. Swap Cache
Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini
tidak mengalami perubahan setelah ditulis ke dalam swap file, maka saat
berikutnya page di swap out tidak perlu menuliskan kembali jika page telah
ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat
akses disk yang tidak perlu.
Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache
dari
anggota tabel page. Dalam hal ini, CPU tidak secara langsung membaca tabel
page, tetap mencache terjemahan page yang dibutuhkan.
------------------------------------------------------------------------------
-
a. Linking statis:
b. Linking dinamis:
hanya sekali meload librari sistem menuju memori. Linking dinamis lebih
efisien dalam hal memori fisik dan ruang disk.
------------------------------------------------------------------------------
-
1. File
File adalah sesuatu yang dapat dibaca dan ditulis. File ditempatkan pada
memori. Penempatan pada memori tersebut sesuai dengan konsep file
deskriptor yang dimiliki unix.
2. Inode
Inode merepresentasikan objek dasar dalam file sistem. Inode bisa saja file
biasa, direktori, simbolik link 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. Kernel
tingkat tinggi menangani objek yang berbeda secara tidak sama.
File dan inode hampir mirip diantara keduanya. Tetapi terdapat perbedaan
yang penting diantara keduanya. Ada sesuatu yang memiliki inode tetapi
tidak memiliki file, contohnya adalah simbolik link. Ada juga file yang
tidak memiliki inode seperti pipes dan socket.
3. File sistem
File system adalah kumpulan dari inode-inode dengan satu inode pembeda
yaitu root. Inode lainnya diakses mulai dari root inode dan pencarian nama
file untuk menuju ke inode lainnya.
4. Nama inode
Semua inode dalam file sistem diakses melalui namanya. Walau pun pencarian
nama inode bisa menjadi terlalu berat untuk beberapa sistem, virtual file
sistem pada linux tetap memantau cache dan 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 tersebut juga terdapat di dalam cache.
Virtual file system layer menangani semua pengaturan nama path dari file dan
mengubahnya menjadi masukan di dalam cache sebelum mengizinkan file sistem
untuk mengaksesnya. Ada pengecualian pada target dari simbolik link, akan
diakses file sistem secara langsung. File sistem diharapkan untuk
menginterpretasikannya.
------------------------------------------------------------------------------
-
Operasi-operasi Dalam Inode
Linux menyimpan cache dari inode aktif mau pun dari inode yang telah terakses
sebelumnya. Ada 2 path dimana inode ini dapat diakses. Yang pertama telah
disebutkan sebelumnya, setiap entri dalam cache menunjuk 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.
------------------------------------------------------------------------------
-
a. Keterangan
EXT2 adalah file sistem yang ampuh di linux. EXT2 juga merupakan salah satu
file sistem yang paling ampuh dan menjadi dasar dari segala distribusi
linux. Pada EXT2 file sistem, file data disimpan sebagai data blok. Data
blok ini mempunyai panjang yang sama dan meski pun panjangnya bervariasi
diantara EXT2 file sistem, besar blok tersebut ditentukan pada saat file
sistem dibuat dengan perintah mk2fs. Jika besar blok adalah 1024 bytes,
maka file dengan besar 1025 bytes akan memakai 2 blok. Ini berarti kita
membuang setengah blok per file.
[gbr207]
b. Inode dalam EXT2
[gbr307]
Inode adalah kerangka dasar yang membangun EXT2. Inode dari setiap kumpulan
blok disimpan dalam tabel inode bersama dengan peta bit yang menyebabkan
sistem dapat mengetahui inode mana yang telah teralokasi dana inode mana
yang belum. MODE: mengandung dia informasi, inode apa dan izin akses yang
dimiliki user. OWNER INFO: user atau grop yang memiliki file atau direktori
SIZE: besar file dalam bytes TIMESTAMPS: kapan waktu pembuatan inode dan
waktu terakhir dimodifikasi. DATABLOKS: pointer ke blok yang mengandung
data.
EXT2 inode juga dapat menunjuk pada device khusus, yang mana device khusus
ini bukan merupakan file, tatapi dapat menangani program sehingga program
dapat mengakses ke device. Semua file device di dalam drektori /dev dapat
membantu program mengakses device.
Superblok mengandung informasi tentang ukuran dasar dan bentuk file sistem.
Informasi di dalamnya memungkinkan file sistem manager untuk menggunakan
dan merawat file sistem. Biasanya, hanya superblok di blok group 0 saat
file sistem di-mount tetapi setiap blok grup mengandung duplikatnya untuk
menjaga jika file sistem menjadi rusak. Informasi yang dikandung adalah:
a. Magic Number
meyakinkan software bahwa ini adalah superblok dari EXT2 file sistem.
b. Revision Level
g. Free Blocks
i. First Inode
nomor inode dalam inode pertama dalam file sistem, inode pertama dalam
EXT2 root file sistem adalah direktori "/".
------------------------------------------------------------------------------
-
EXT3 adalah peningkatan dari EXT2 file sistem. Peningkatan ini memiliki
beberapa keuntungan, diantaranya:
Jurnal yang disediakan oleh EXT3 menyebabkan tidak perlu lagi dilakukan
pengecekan data setelah kegagalan sistem. EXT3 hanya dicek 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 dari ukuran file sistem atau banyaknya file,
tetapi tergantung dari besarnya jurnal yang digunakan untuk menjaga
konsistensi. Besar jurnal default memerlukan waktu kira-kira sedetik untuk
pulih, tergantung kecepatan hardware.
b. Integritas data
c. Kecepatan
Daripada menulis data lebih dari sekali, EXT3 mempunyai throughput yang
lebih besar daripada EXT2 karena EXT3 memaksimalkan pergerakan head hard
disk. Kita bisa memilih tiga jurnal mode untuk memaksimalkan kecepatan,
tetapi integritas data tidak terjamin.
Kita dapat berpindah dari EXT2 ke sistem EXT3 tanpa melakukan format ulang.
------------------------------------------------------------------------------
-
Reiser file sistem memiliki jurnal yang cepat. Ciri-cirinya mirip EXT3 file
sistem. Reiser file sistem dibuat berdasarkan balance tree yang cepat. Balance
tree unggul dalam hal kinerja, dengan algoritma yang lebih rumit tentunya.
Reiser file sistem lebih efisien dalam pemenfaatan ruang disk. Jika kita
menulis file 100 bytes, hanya ditempatkan dalam satu blok. File sistem lain
menempatkannya dalam 100 blok. Reiser file sistem tidak memiliki pengalokasian
yang tetap untuk inode. Resier file sistem dapat menghemat disk sampai dengan
6
persen.
------------------------------------------------------------------------------
-
Sistem Berkas X
X file sistem juga merupakan jurnaling file sistem. X file sistem dibuat oleh
SGI dan digunakan di sistem operasi SGI IRIX. X file sistem juga tersedia
untuk
linux dibawah lisensi GPL. X file sistem mengunakan B-tree untuk menangani
file
yang sangat banyak. X file sistem digunakan pada server-server besar.
------------------------------------------------------------------------------
-
Sistem Berkas Proc Proc File Sistem menunjukkan bagaimana hebatnya virtual
file
sistem yang ada pada linux. Proc file sistem sebenarnya tidak ada secara
fisik,
baik subdirektorinya, mau pun file-file yang ada di dalamnya. Proc file sistem
diregister oleh linux virtual file sistem, jika virtual file sistem
memanggilnya dan meminta inode-inode dan file-file, proc file sistem membuat
file tersebut dengan informasi yang ada di dalam kernel. Contohnya, /proc/
devices milik kernel dibuat dari data struktur kernel yang menjelaskan device
tersebut.
------------------------------------------------------------------------------
-
1. Shareable
Isinya dapat dishare (digunakan bersama) dengan sistem lain, gunanya untuk
menghemat tempat.
2. Unshareable
1. Variabel
Isinya sering berubah-ubah.
2. Statik
Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah jika ada
campur tangan sistem admin.
------------------------------------------------------------------------------
-
I/O Linux
Salah satu fitur yang mendasar adalah kernel mengabstraksi penanganan device.
Semua device hardware terlihat seperti berkas pada umumnya: mereka dapat
dibuka, ditutup, dibaca, dan ditulis menggunakan calls sistem yang sama dan
standar untuk memanipulasi berkas. Setiap device di sistem direpresentasikan
oleh sebuah file khusus device, contohnya disk IDE yang pertama di sistem
direpresentasikan dengan /dev/hda. Devices blok (disk) dan karakter dibuat
dengan perintah mknod dan untuk menjelaskan device tersebut digunakan nomor
devices besar dan kecil. Devices jaringan juga direpresentasikan dengan berkas
khusus device, tapi berkas ini dibuat oleh Linux setelah Linux menemukan dan
menginisialisasi pengontrol-pengontrol jaringan di sistem. Semua device yang
dikontrol oleh driver device yang sama memiliki nomor device besar yang umum.
Nomor devices kecil digunakan untuk membedakan antara device-device yang
berbeda dan pengontrol-pengontrol mereka, contohnya setiap partisi di disk IDE
utama punya sebuah nomor device kecil yang berbeda. Jadi, /dev/hda2, yang
merupakan partisi kedua dari disk IDE utama, punya nomor besar 3 dan nomor
kecil yaitu 2. Linux memetakan berkas khusus device yang diteruskan ke system
call (katakanlah melakukan mount ke sistem berkas device blok) pada driver si
device dengan menggunakan nomor device besar dan sejumlah tabel sistem,
contohnya tabel device karakter, chrdevs.
Linux membagi devices ke tiga kelas: devices karakter, devices blok dan
devices
jaringan.
------------------------------------------------------------------------------
-
Device Karakter
[chardev07]
Device karakter, device paling sederhana dari Linux, diakses sebagai berkas.
Aplikasi menggunakan system calls standar untuk membukanya, membacanya dan
menulisnya dan menutupnya persis seolah devices adalah berkas. Memang benar,
meski pun devices ini merupakan modem yang sedang digunakan oleh PPP daemon
untuk menghubungkan sistem Linux ke jaringan. Saat sebuah device karakter
diinisialisasi, driver devicenya mendaftarkan sang device pada kernel Linux
dengan menambahkan sebuah entry ke vektor chrdevs dari struk data
device_struct. Pengenal utama devicenya digunakan sebagai indeks ke vektor
ini.
Pengenal utama untuk suatu device tidak pernah berubah.
Seperti sebuah berkas atau direktori pada umumnya, setiap berkas khusus device
direpresentasikan dengan sebuah inode VFS. Inode VFS untuk sebuah berkas
khusus
karakter tersebut, sebenarnya untuk semua berkas yang berada dibawahnya,
contohnya EXT2. Hal ini terlihat dari informasi di berkas yang sebenarnya
ketika nama berkas khusus device dilihat.
Setiap inode VFS memiliki keterkaitan dengan seperangkat operasi berkas dan
operasi-operasi ini berbeda tergantung pada objek sistem berkas yang
direpresentasikan oleh inode tersebut. Kapan pun sebuah VFS yang
merepsentasikan berkas khusus karakter dibuat, operasi-operasi berkasnya diset
ke operasi device karakter default.
VFS inode memiliki hanya satu operasi berkas, yaitu operasi membuka berkas.
Saat berkas khusus karakter dibuka oleh sebuah aplikasi, operasi buka berkas
yang umum atau generik menggunakan pengenal utama dari device tersebut.
Pengenal ini digunakan sebagai index ke vektor chrdevs untuk memperoleh blok
operasi berkas untuk device tertentu ini. Ia juga membangun struk data berkas
yang menjelaskan berkas khusus karakter ini, yang membuat penunjuk operasi
berkas menunjuk ke driver device itu. Setelah itu semua aplikasi dari
operasi-operasi berkas aplikasi akan dipetakan untuk memanggil perangkat
devices karakter dari operasi berkas itu.
------------------------------------------------------------------------------
-
Device Blok
Device ini pun diakses seperti berkas. Mekanisme untuk menyediakan perangkat
operasi berkas yang benar bagi berkas khusus blok yang terbuka sama seperti
devices karakter. Linux memelihara operasi dari perangkat device blok yang
terdaftar sebagai vektor blkdevs. Vektor ini, seperti halnya vektor chrdevs,
diindeks dengan menggunakan nomor device besar dari sang device. Entrynya juga
merupakan struk data device_struct. Tidak seperti devices karakter, ada
sejumlah kelas yang dimiliki device blok. Device-device SCSI adalah salah satu
kelasnya dan device IDE adalah kelas lainnya. Kelaslah yang mendaftarkan
dirinya sendiri pada kernel Linux dan menyediakan operasi berkas kepada
kernel.
Driver-driver device untuk sebuah kelas device blok menyediakan interface
khusus kelas kepada kelas tersebut. Jadi, contohnya, sebuah driver device SCSI
harus menyediakan interface untuk subsistem SCSI agar dapat menyediakan
operasi
berkas bagi devices ini ke kernel.
[buffer07]
Setiap kali cache buffer ingin membaca dari, atau pun menuliskan satu blok
data
ke device terdaftar, ia menambahkan struk data request kedalam blk_dev_struct
nya. Gambar di atas ini menunjukkan bahwa setiap request memiliki pointer
(penunjuk) ke satu atau lebih struk data buffer_head. Masing-masingnya
merupakan suatu request untuk membaca atau menulis sebuah blok data. Struk
buffer_head tersebut dikunci (oleh cache buffer) dan mungkin ada suatu proses
yang menunggu buffer ini selesai di operasi blok tersebut. Setiap struk
request
dialokasikan dari suatu daftar yang statik, yaitu daftar all_request. Jika
proses tersebut sedang dimasukkan sebuah ke list request yang kosong, fungsi
request dari drivernya akan dipanggil agar memulai proses antrian request.
Jika
tidak driver tersebut hanya akan memproses setiap request di daftar request.
------------------------------------------------------------------------------
-
Device Jaringan
------------------------------------------------------------------------------
-
Nama
Berbeda dengan device karakter dan blok yang menggunakan berkas khusus device
yang dibuat dengan perintah mknod, berkas khusus device terlihat sekilas
seperti device jaringan sistem yang ditemukan dan diinsialisasi. Nama mereka
standar, yaitu setiap nama merepsentasikan jenis device masing-masing. Device
multiple dari jenis yang sama dinomori lebih besar dari 0. Oleh sebab itu
device-device ethernet dikenal sebagai /dev/eth0, /dev/eth1, /dev/eth2 dan
seterusnya.
------------------------------------------------------------------------------
-
Informasi Bus
Berikut ini adalah informasi yang driver device butuhkan untuk mengontrol
devicenya. Nomor irq merupakan interrupt yang digunakan oleh device ini.
Alamat
basisnya adalah alamat dari segala register status dan control dari device
yang
ada di memori I/O. Channel DMA adalah nomor DMA yang device jaringan ini
gunakan. Semua informasi ini diset pada waktu booting, yaitu saat device ini
diinisialisasi.
------------------------------------------------------------------------------
-
Flags Interface
Hal-hal berikut ini akan menjelaskan karakteristik dan kemampuan dari device
jaringan:
------------------------------------------------------------------------------
-
Informasi Protokol
------------------------------------------------------------------------------
-
MTU
Ukuran paket terbesar yang jaringan dapat kirim, tidak termasuk header lapisan
link yang ia perlu tambahkan.
------------------------------------------------------------------------------
-
Keluarga
Keluarga ini menandakan bahwa keluarga protokol yang dapat didukung oleh
device
tersebut. Keluarga untuk seluruh device jaringan Linux adalah AF_INET,
keluarga
alamat internet.
------------------------------------------------------------------------------
-
Jenis
Jenis menjelaskan media di mana device jaringan terpasang. Ada banyak jenis
media yang didukung oleh device jaringan Linux. Termasuk diantaranya adalah
Ethernet, X.25, Token Ring, Slip, PPP dan Apple Localtalk.
------------------------------------------------------------------------------
-
Alamat
Struk data device tersebut memiliki sejumlah alamat yang relevan bagi device
jaringan ini, termasuk alamat-alamat IP-nya.
------------------------------------------------------------------------------
-
Antrian Paket
------------------------------------------------------------------------------
-
Fungsi Pendukung
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
Sinyal
Sinyal merupakan salah satu metode KAP tertua sistem Unix. Sinyal digunakan
untuk memberitahukan kejadian yang asinkronus pada satu atau lebih proses.
misalnya sinyal yang dihasilkan oleh keyboard saat ditekan oleh pemakai.
Sinyal
juga dapat dihasilkan oleh kondisi yang menyatakan error, misalnya saat suatu
proses mencoba mengakses lokasi yang tidak pernah ada di dalam memori utama.
Sinyal pun digunakan oleh shells untuk memberitahu perintah kontrol kerja
kepada proses child.
------------------------------------------------------------------------------
-
Ada satu perangkat sinyal terdefinisi yang bisa digenerate oleh kernel atau
oleh proses lain di dalam sistem, tentunya setelah proses tersebut punya hak
untuk melakukannya. Anda dapat melihat daftar dari seperangkat sinyal sistem
dengan menggunakan perintah kill (kill -l). Di dalam box Linux Intel, perintah
kill tersebut menghasilkan keluaran sebagai berikut:
30) SIGPWR
Jumlah sinyal tersebut berbeda untuk sebuah kotak Linux AXP Alpha.
------------------------------------------------------------------------------
-
Penerapan Sinyal
Tidak semua proses di dalam sistem dapat mengirimkan sinyal ke proses lainnya.
Kernel dapat melakukannya demikian pula super users. Proses-proses biasa hanya
dapat mengirim sinyal pada proses-proses yang memiliki uid dan gid yang sama
atau pun pada kelompok proses yang sama. Sinyal digenerate dengan mengatur bit
yang sesuai di dalam field signal task_struct. Jika proses tersebut belum
memblokir sinyal dan sedang menunggu (namun dapat diinterrupt di status
Interruptible), maka ia akan dibangunkan dengan mengubah statusnya ke Running
dan memastikan bahwa proses ini berada pada antrian run. Dengan cara itu
scheduler akan menganggapnya sebagai suatu yang akan running pada jadwal
sistem
berikutnya. Jika penanganan default diperlukan, maka Linux dapat
mengoptimalkan
penganganan sinyal tersebut. Sebagai contoh, jika sinyal SIGWINCH (fokus yang
berubah dari jendela X) dan penangan default sedang digunakan, maka tidak ada
yang perlu dilakukan.
Jika sebuah penangan sinyal diset ke tindakan default, maka kernel akan
mengatasinya. Penangan default sinyal SIGSTOP akan mengubah status proses saat
ini ke status Stopped dan selanjutnya menjalankan scheduler untuk memilih
sebuah proses baru untuk berjalan. Tindakan default untuk sinyal SIGFPE akan
core dump proses dan menyebabkannya keluar. Cara lainnya, proses tersebut
dapat
menentukan handler sinyalnya sendiri. Penangan ini merupakan suatu routine
yang
akan dipanggil kapan pun sinyal digenerate dan struktur sigactionnya menyimpan
alamat routine ini. Kernel tersebut harus memanggil routine penangan sinyal
proses tersebut dan bagaimana ini terjadi adalah kekhususan masing-masing
prosesor tetapi intinya semua CPU harus berhasil mengatasi kenyataan bahwa
proses saat ini sedang berjalan di mode kernel dan mengembalikan proses yang
tadi memanggil kernel atau system routine di mode user. Masalah ini
terpecahkan
dengan memanipulasi stack dan register daripada proses tersebut. Program
counter dari proses diset ke alamat sinyalnya, yang menangani routine, dan
parameter-parameter ke routine dimasukkan ke frame callnya atau dilewatkan di
register. Ketika proses tersebut menerima operasi, proses ini terlihat
seolah-olah routine penangan sinyalnya dipanggil secara normal.
Linux bersifat POSIX compatible dan oleh karena itu prosesnya dapat menentukan
sinyal-sinyal mana yang diblokir saat routine tertentu penangan sinyal
dipanggil. Hal ini berarti mengubah mask blocked tersebut selama pemanggilan
penangan sinyal proses-proses tersebut. mask blocked harus dikembalikan ke
nilai aslinya ketika routine penangan routine tersebut telah selesai. Oleh
karena itu Linux menambahkan suatu call pada sebuah routine perapih yang akan
mengembalikan mask asli daripada blocked ke dalam stack call dari proses yang
disinyal. Linux juga mengoptimalkan kasus di mana beberapa routine penangan
sinyal perlu dipanggil dengan stacking routine-routine ini sehingga setiap
saat
sebuah routine penangan ada, routine penangan berikutnya dipanggil sampai
routine perapih dipanggil.
------------------------------------------------------------------------------
-
Pipa
$ ls | pr | lpr
memipakan output dari perintah ls, yang melist file yang ada di dalam
direktori, sampai standar input dari perintah pr yang mempaginasi file
tersebut. Pada akhirnya standard output dari perintah pr dipipakan ke standar
input dari perintah lpr yang mencetak hasil-hasilnya ke printer default.
Pipa-pipa berikutnya adalah unidirectional byte streams yang menghubungkan
standard output dari suatu proses ke standar input dari proses lainnya. Proses
tidak peduli terhadap redirection ini dan berperilaku seolah-olah ia berjalan
normal saja. Adalah shell yang membangun pipa-pipa yang bersifat sementara ini
di antara dua proses tersebut.
[pipa07]
------------------------------------------------------------------------------
-
Penerapan
Di Linux, suatu pipa diterapkan dengan menggunakan dua struktur data file yang
keduanya menunjuk ke inode VFS sementara yang sama yang ia sendiri menunjuk
pada halaman fisik di dalam memori. Gambar di atas menunjukkan bahwa setiap
struktur data file mengandung pointer ke vektor-vektor routine operasi file
yang berbeda; satu untuk menulis ke pipa, satu lagi untuk membaca dari pipa.
------------------------------------------------------------------------------
-
Bila ada cukup ruangan untuk menulis semua bytes kedalam pipa dan, sepanjang
pipa tidak dikunci oleh pembacanya, Linux menguncinya untuk si penulis dan
mengkopikan bytes tersebut dari ruang alamat proses itu ke halaman data
bersama. Bila pipa itu dikunci oleh pembaca atau bila tidak ada cukup ruang
bagi data maka proses sekarang disuruh tidur di antrian tunggu inode pipa itu
dan scheduller dipanggil sehingga proses lainnya dapat berjalan. Proses yang
tidur ini interruptible, sehingga ia masih dapat menerima sinyal dan dapat
dibangunkan oleh pembaca ketika ruangan telah cukup untuk ditulisi data atau
pun ketika pipa sudah tidak dikunci. Setelah data ditulis, inode VFS dari pipa
dibuka kuncinya dan semua pembaca yang menunggu di antrian tunggu inode akan
dibangunkan oleh mereka sendiri.
------------------------------------------------------------------------------
-
Proses boleh membaca dengan tidak melakukan pemblokiran (tergantung pada mode
di mana proses tersebut membuka file atau pipa) dan, dalam kasus ini, bila
tidak ada data untuk dibaca atau bila pipa dikunci, pesan kesalahan akan
dikembalikan. Artinya, proses tersebut dapat terus berjalan. Cara lainnya
adalah dengan menunggu di antrian tunggu inode pipa sampai proses menulis
sudah
selesai. Saat kedua proses sudah selesai berurusan dengan pipa, inode pipa
tersebut dibuang bersama halaman data bersama.
------------------------------------------------------------------------------
-
FIFO
Linux pun mendukung pipa bernama, yang dikenal dengan FIFO karena prinsip
kerjanya FIFO. Data yang pertama kali ditulis ke pipa adalah data pertama yang
dibaca. Tidak seperti pipa, FIFO bukan merupakan objek yang bersifat
sementara,
ia adalah entity di sistem file dan bisa dibuat dengan perintah mkfifo.
Proses-proses bebas menggunakan FIFO selama mereka punya hak akses ke sana.
Cara FIFO dibuka sedikit berbeda dengan pipa. Sebuah pipa (dua struktur data
filenya, inode VFSnya dan halaman data bersama) dibuat sekaligus sementara
FIFO
sudah ada dan dibuka dan ditutup oleh penggunanya. Linux harus menangani
pembaca-pembaca yang membuka FIFO sebelum penulis-penulis membukanya dan juga
penulis-penulis yang membacanya sebelum penulis-penulis sudah menulisnya.
Selain itu, FIFO ditangani dengan cara yang hampir sama dengan pipa dan FIFO
menggunakan struktur data dan operasi yang sama
------------------------------------------------------------------------------
-
Struktur Jaringan
Ide pokok dari jaringan mungkin sudah setua usia telekomunikasi itu sendiri.
Coba anda bayangkan ketika anda harus tinggal di jaman batu, yang ketika itu
gendang digunakan sebagai alat untuk berkomunikasi satu dengan lainnya.
Andaikan manusia gua A ingin mengundang manusia gua B untuk bermain, tapi
jarak
B terlalu jauh dari A untuk mendengar suara gendang yang dibunyikannya. Apa
yang akan dilakukan oleh A? Mungkin si A akan datang langsung ke tempat B,
membunyikan gendang yang lebih besar, atau meminta C yang tinggal di antara A
dan B untuk menyampaikan pesan ke B. Pilihan terakhir inilah yang merupakan
dasar dari jaringan.
Terlepas dari masalah jaman batu, sekarang kita memiliki komputer yang
canggih.
Dimana komputer yang kita miliki sekarang dapat berkomunikasi dengan komputer
lainnya melalui kabel tembaga, kabel optik, gelombang microwave, dan medium
komunikasi lainnya.
Sebagai hasil dari usaha para programmer dari seluruh dunia, Linux tidak akan
tercipta tanpa Internet. Jadi tidaklah mengherankan apabila pada tahap awal
pengembangan, beberapa orang mulai mengerjakan kemampuan jaringan di Linux.
implementasi UUCP di Linux sudah ada sejak awal dan jaringan dengan basis TCP/
IP mulai dikerjakan sejak musim gugur 1992, ketika Ross Biro dan yang lainnya
mengerjakan sesuatu yang kini disebut dengan Net-1.
Setelah Ross berhenti dalam pengembangan pada Mei 1993, Fred Van Kempen mulai
bekerja pada implementasi yang baru, menulis ulang bagian terbesar dalam kode.
Proyek ini dikenal dengan Net-2. Peluncuran yang pertama adalah Net-2d, dibuat
pada musim panas 1993, dan telah dibantu kembangkan oleh beberapa orang,
terutama Alan Cox. Hasil pekerjaan Alan dikenal dengan nama Net-3 setelah
Linux
1.0 diluncurkan. Kode Net-3 masih dikembangkan lebih lanjut untuk Linux 1.2
dan
Linux 2.0. Kernel 2.2 dan seterusnya menggunakan versi Net-4 untuk mendukung
jaringan, yang masih tetap menjadi standar sampai saat ini.
Kode untuk jaringan Linux Net-4 menawarkan berbagai macam driver dan kemampuan
khusus. Protokol standar Net-4 mencakup :
Sedangkan kemampuan standar Net-4 mencakup firewall IP, penghitungan IP, dan
IP
masquerade. IP tunneling dalam berbagai sudut dan kebijaksanaan routing juga
didukung. Dukungan untuk berbagai macam tipe perlatan ethernet, untuk
mendukung
FDDI, Token Ring, Frame Relay, ISDN, dan kartu ATM.
Implementasi jaringan Net-4 sekarang cukup matang dan digunakan dalam banyak
situs di seluruh dunia. Banyak waktu yang tersita untuk meningkatkan kemampuan
implementasi Net-4. Linux juga seringkali digunakan dalam lingkungan penyedia
jasa Internet (ISP).
Sedangkan kemampuan standar Net-4 mencakup firewall IP, penghitungan IP, dan
IP
masquerade. IP tunneling dalam berbagai sudut dan kebijaksanaan routing juga
didukung. Dukungan untuk berbagai macam tipe perlatan ethernet, untuk
mendukung
FDDI, Token Ring, Frame Relay, ISDN, dan kartu ATM.
Implementasi jaringan Net-4 sekarang cukup matang dan digunakan dalam banyak
situs di seluruh dunia. Banyak waktu yang tersita untuk meningkatkan kemampuan
implementasi Net-4. Linux juga seringkali digunakan dalam lingkungan penyedia
jasa Internet (ISP). Linux digunakan untuk membangun World Wide Web (WWW)
server, mail server, dan news server yang murah dan terjamin. Sekarang ini
sudah ada pengembangan yang cukup besar dalam Linux, dan beberapa versi kernel
Linux saat ini menawarkan generasi terbaru IPv6 sebagai suatu standar.
Mengingat besarnya peran timbal balik antara pengembangan Linux dan jaringan,
mungkin akan sulit bagi kita untuk membayangkan Linux tanpa dukungan jaringan
yang standar.
Kita akan membahas tiga macam tipe jaringan, tapi fokus utama akan diarahkan
pada TCP/IP karena protokol inilah yang paling populer digunakan baik dalam
jaringan lokal (LAN) maupun jaringan yang lebih besar (WAN), seperti Internet.
Kita juga akan mempelajari UUCP dan IPX. Dahulu kala UUCP banyak digunakan
untuk mengirim berita (news) dan pesan (mail) melalui koneksi telepon dialup.
Memang saat ini UUCP sudah jarang digunakan, tapi tetap masih berguna dalam
situasi tertentu. Sedangkan protokol IPX banyak digunakan dalam lingkungan
Novell Netware dan di bagian belakang akan dijelaskan lebih lanjut cara
mengkoneksikan mesin Linux anda dengan jaringan Novell. Ketiganya merupakan
protokol jaringan dan digunakan untuk medium pengiriman data antar komputer.
Komunikasi adalah mustahil tanpa bahasa atau kode yang dapat digunakan untuk
komunikasi. Dalam jaringan komputer, bahasa ini seringkali dianalogikan
protokol. Tapi perlu diingat, anda tidak bisa membayangkan protokol ini adalah
suatu aturan yang tertulis, tapi lebih sebagai kode yang telah diformat
sedemikian hingga. Dalam bahasa yang sama, protokol digunakan dalam jaringan
komputer adalah bukan apa-apa melainkan suatu aturan tegas untuk pertukaran
pesan antara dua atau lebih host.
------------------------------------------------------------------------------
-
Jaringan TCP/IP
Pemecahan yang digunakan oleh sistem UNIX dan banyak sistem lainnya adalah
dengan mengadapatasikan TCP/IP. Di atas sudah disebutkan mengenai datagram,
secara teknis datagram tidak memiliki definisi yang khusus tetapi seringkali
disejajarkan artinya dengan paket.
------------------------------------------------------------------------------
-
Tentu, anda tidak menginginkan jaringan dibatasi hanya untuk satu ethernet
atau
satu koneksi data point to point. Secara ideal, anda ingin bisa berkomunikasi
dengan host komputer diluar tipe jaringan yang ada. Sebagai contoh, dalam
instalasi jaringan yang besar, biasanya anda memiliki beberapa jaringan
terpisah yang harus disambung dengan motode tertentu.
Koneksi ini ditangani oleh host yang dikhususkan sebagai gateway yang
menangani
paket yang masuk dan keluar dengan mengkopinya antara dua ethernet dan kabel
optik. Gateway akan bertindak sebagai forwarder. Tata kerja dengan mengirimkan
data ke sebuah remote host disebut routing, dan paket yang dikirim seringkali
disebut sebagai datagram dalam konteks ini. Untuk memfasilitasisasi hal ini,
pertukaran datagram diatur oleh sebuah protokol yang independen dari perangkat
keras yang digunakan, yaitu IP (Internet Protocol).
Setelah apa yang kita pelajari sebelumnya, ada tiga tipe pengalamatan, yaitu
ada nama host, alamat IP dan alamat perangkat keras, seperti pengalamatan pada
alamat enam byte pada ethernet.
Sebuah antar muka yang berkaitan harus ada di kernel, untuk setiap peralatan
jaringan. Sebagai contoh, antar muka ethernet di Linux, memiliki nama eth0 dan
eth1, antar muka PPP memiliki nama ppp0 dan ppp1, sedangkan antar muka FDDI
memiliki nama fddi0 dan fddi1. Semua nama antar muka ini bertujuan untuk
konfigurasi ketika anda ingin mengkonfigurasinya, dan mereka tidak memiliki
arti lain dibalik fungsinya.
Sebelum digunakan oleh jaringan TCP/IP, sebuah antar muka harus diberikan
sebuah alamat IP yang bertugas sebagai tanda pengenal ketika berkomunikasi
dengan yang lain. Alamat ini berbeda dengan nama antar muka yang telah
disebutkan sebelumnya; jika anda menganalogikan sebuah antar muka dengan
pintu,
alamat IP seperti nomor rumah yang tergantung di pintu tersebut.
Paramater peralatan yang lain, mungkin sekali untuk diatur, misalnya ukuran
maksimum datagram yang dapat diproses oleh sebuah nomor port keras, yang
biasanya disebut Unit Transfer Maksimum atau Maximum Transfer Unit (MTU).
Protokol Internet (IP) mengenali alamat dengan 32 bit nomor. Tiap mesin
diberikan sebuah nomor yang unik dalam jaringan. Jika anda menjalankan sebuah
jaringan lokal yang tidak memiliki route TCP/IP dengan jaringan lain, anda
harus memberikan nomor tersebut menurut keinginan anda sendiri. Ada beberapa
alamat IP yang sudah ditetapkan untuk jaringan khusus. Sebuah domain untuk
situs di Internet, alamatnya diatur oleh badan berotoritas, yaitu Pusat
Informasi Jaringan atau Network Information Center(NIC).
Alamat IP terbagi atas 4 kelompok 8 bit nomor yang disebut oktet untuk
memudahkan pembacaan. Sebagai contoh quark.physics.groucho.edu memiliki alamat
IP 0x954C0C04, yang dituliskan sebagai 149.76.12.4. Format ini seringkali
disebut notasi quad bertitik. Alasan lain untuk notasi ini adalah bahwa alamat
IP terbagi atas nomor jaringan, yang tercantum dalam oktet pertama, dan nomor
host, pada oktet sisanya. Ketika mendaftarkan alamat IP ke NIC, anda tidak
akan
diberikan alamat untuk tiap host yang anda punya. Melainkan, anda hanya
diberikan nomor jaringan, dan diizinkan untuk memberikan alamat IP dalam
rentang yang sudah ditetapkan untuk tiap host sesuai dengan keinginan anda
sendiri.
Banyaknya host yang ada akan ditentukan oleh ukuran jaringan itu sendiri.
Untuk
mengakomodasikan kebutuhan yang berbeda-beda, beberapa kelas jaringan
ditetapkan untuk memenuhinya, antara lain:
1. Kelas A
Terdiri atas jaringan 1.0.0.0 sampai 127.0.0.0. Nomor jaringan ada pada
oktet pertama. Kelas ini menyediakan alamat untuk 24 bit host, yang dapat
menampung 1,6 juta host per jaringan.
2. Kelas B
Terdiri atas jaringan 128.0.0.0 sampai 191.255.0.0. Nomor jaringan ada pada
dua oktet yang pertama. Kelas ini menjangkau sampai 16.320 jaringan dengan
masing-masing 65024 host.
3. Kelas C
4. Kelas D, E, dan F
Alamat jaringan berada dalam rentang 224.0.0.0 sampia 254.0.0.0 adalah
untuk eksperimen atau disediakan khusus dan tidak merujuk ke jaringan
manapun juga. IP muliticast, yang adalah service yang mengizinkan materi
untuk dikirim ke banyak tempat di Internet pada suatu saat yang sama,
sebelumnya telah diberikan alamat dalam rentang ini.
Oktet 0 dan 255 tidak dapat digunakan karena telah dipesan sebelumnya untuk
kegunaan khusus. Sebuah alamat yang semua bagian bit host-nya adalah 0 mengacu
ke jaringan, sedang alamat yang semua bit host-nya adalah 1 disebut alamat
broadcast. Alamat ini mengacu pada alamat jaringan tertentu secara simultan.
Sebagai contoh alamat 149.76.255.255 bukanlah alamat host yang sah, karena
mengacu pada semua host di jaringan 149.76.0.0.
Sejumlah alamat jaringan dipesan untuk kegunaan khusus. 0.0.0.0 dan 127.0.0.0
adalah contohnya. Alamat yang pertama disebut default route, sedangkan yang
kedua adalah alamat loopback.
Jaringan 127.0.0.0 dipesan untuk lalu lintas IP lokal menuju ke host anda.
Biasanya alamat 127.0.0.1 akan diberikan ke suatu antar muka khusus pada host
anda, yaitu antar muka loopback, yang bertindak seperti sebuah sirkuit
tertutup. Paket IP yang dikirim ke antar muka ini dari TCP atau UDP akan
dikembalikan lagi. Hal ini akan membantu anda untuk mengembangkan dan mengetes
perangkat lunak jaringan tanpa harus menggunakan jaringan yang sesungguhnya.
Jaringan loopback juga memberikan anda kemudahan menggunakan perangkat lunak
jaringan pada sebuah host yang berdiri sendiri. Proses ini tidak seaneh
seperti
kedengarannya. Sebagai contoh banyak situs UUCP yang tidak memiliki
konektivitas sama sekali, tapi tetap ingin menggunakan sistem news INN. Supaya
dapat beroperasi dengan baik di Linux, INN membutuhkan antar muka loopback.
Beberapa rentang alamat dari tiap kelas jaringan telah diatur dan didesain
'pribadi' atau 'dipesan'. Alamat ini dipesan untuk kepentingan jaringan
pribadi
dan tidak ada di rute internet. Biasanya alamat ini digunakan untuk organisasi
untuk menciptakan intranet untuk mereka sendiri, bahkan jaringan yang kecil
pun
akan merasakan kegunaan dari alamat itu.
Kelas jaringan
[gbrJar7]
------------------------------------------------------------------------------
-
Sebuah hal penting yang harus anda ingat adalah bahwa IP tidak menjamin.
Asumsikan bahwa ada sepuluh orang dalam ethernet yang mulai men-download, maka
jumlah lalu lintas data yang tercipta mungkin akan terlalu besar bagi sebuah
gateway untuk menanganinya dengan segala keterbatasan yang ada. IP
menyelesaikan masalah ini dengan membuangnya. Paket yang dikirim akan hilang
tanpa bisa diperbaiki. Karenanya host harus bertanggungjawab untuk memeriksa
integritas dan kelengkapan data yang dikirim dan pengiriman ulang data jika
terjadi error.
Proses ini dilakukan oleh protokol lain, TCP (Transmision Control Protocol),
yang menciptakan pelayanan yang terpercaya di atas IP. Karakteristik inti dari
TCP adalah bahwa TCP menggunakan IP untuk memberikan anda ilusi dari koneksi
sederhana antara dua proses di host dan remote machine. Jadi anda tidak perlu
khawatir tentang bagaimana dan route mana yang ditempuh oleh data. Sebuah
koneksi TCP bekerja seperti sebuah pipa dua arah dimana proses dari kedua arah
bisa menulis dan membaca. Pikirkan hal ini seperti halnya sebuah pembicaraan
melalui telepon.
TCP mengidentifikasikan titik ujung dari sebuah koneksi dengan alamat IP dari
kedua host yang terlibat dan jumlah port yang dimiliki oleh tiap-tiap host.
Port dapat dilihat sebagai sebuah titik attachment untuk tiap koneksi
jaringan.
Jika kita lebih mendalami contoh telepon sebelumnya, dan anda dapat
membayangkan kota sebagai suatu host, kita dapat membandingkan alamat IP
dengan
kode area (dimana nomor IP akan dipetakan ke kota), dan nomor port dengan kode
lokal (dimana nomor port dipetakan ke nomor telepon). Sebuah host tunggal bisa
mendukung berbagai macam service, yang masing-masing dibedakan dari nomor
port-nya.
Dalam contoh login, aplikasi client membuka port dan terhubung ke port di
server dimana dia login. Tindakan ini akan membangun sebuah koneksi TCP.
Dengan
menggunakan koneksi ini, login service akan menjalankan prosedur autorisasi
dan
memunculkan shell. Standar masukan dan keluaran dari shell akan disambungkan
ke
koneksi TCP, jadi apapun yang anda ketik ke login service, akan dikirimkan
melalui TCP stream dan dikirimkan ke shell sebagai standar masukan.
------------------------------------------------------------------------------
-
IP memiliki protokol lain yang mendampinginya yang belum pernah kita bahas
sebelumnya, yaitu ICMP (Internet Control Message Protocol). ICMP digunakan
oleh
kode jaringan di kernel untuk mengkomunikasikan pesan error ke host lainnya.
Sebagai contoh, anda ingin melakukan telnet, tapi tidak ada proses yang
menangkap pesan tersebut di port. Ketika paket TCP pertama untuk port tersebut
tiba, lapisan jaringan akan mengenalinya dan kemudian akan langsung
mengembalikan sebuah pesan ICMP yang menyatakan bahwa port tidak dapat
dijangkau.
Protokol ICMP menyediakan beberapa pesan yang berbeda, dimana banyak dari
pesan
tersebut berhubungan dengan kondisi error. Tapi bagaimana pun juga, ada suatu
pesan yang menarik yang disebut pesan redirect. Pesan ini dihasilkan oleh
modul
routing ketika tertedeteksi bahwa ada host lain yang menggunkannya sebagai
gateway, walaupun ada rute yang lebih pendek. Sebagai contoh, setelah
melakukan
booting, tabel routingnya kemungkinan tidak lengkap. Tabel ini mungkin berisi
rute ke jaringan lain. Sehingga paket yang dikirim tidak sampai ke tujuannya,
malah sampai ke jaringan lain. Ketika menerima sebuah datagram, maka server
yang menerimanya akan menyadari bahwa rute tersebut adalah pilihan rute yang
buruk dan meneruskannya ke jaringan lain.
Hal ini sepertinya jalan terbaik untuk menghindari pengaturan seting secara
manual, kecuali setingan dasarnya saja. Tapi bagaimana pun juga, waspadalah
selalu untuk tidak terlalu bergantung pada skema routing yang dinamis, baik
itu
RIP ataupun pesan indirect ICMP. Indirect ICMP dan RIP menawarkan anda sedikit
atau tidak sama sekali pilihan untuk memverifikasi bahwa beberapa informasi
routing memerlukan autentifikasi. Sebagai konsekuensi, kode jaringan Linux
mengancam pesan indirect jaringan seakan-akan mereka adalah indirect host .
Hal
ini akan meminimalkan kerusakan yang diakibatkan oleh serangan dan
membatasinya
hanya ke satu host saja, daripada keseluruhan jaringan. Pada sisi yang lain,
ini berarti sedikit lalu lintas dihasilkan dalam kejadian dari suatu kondisi
yang masuk akal, seakan-akan tiap host menyebabkan terbentuknya pesan indirect
ICMP. Sebenarnya ketergantungan pada ICMP tidak langsung dianggap sebagai
suatu
yang buruk.
------------------------------------------------------------------------------
-
Tentu saja, TCP bukanlah satu-satunya protokol dalam jaringan TCP/IP. Walaupun
TCP cocok untuk aplikasi untuk login, biaya yang dibutuhkan terbatas untuk
aplikasi semacam NFS, dimana lebih baik kita menggunakan saudara sepupu dari
TCP yang disebut UDP ( User Datagram Protocol. Seperti halnya TCP, UDP
memperbolehkan sebuah aplikasi untuk menghubungi sebuah service pada port
tertentu dari remote machine, tapi untuk itu tidak diperlukan koneksi apa pun
juga. Sebaliknya, anda bisa mengirimkan paket tunggal ke pelayanan tujuan, apa
pun juga namanya.
Asumsikan bahwa anda ingin menggunakan sejumlah kecil data dari server basis
data. Pengambilan data tersebut membutuhkan minimal tiga datagram untuk
membangun sebuah koneksi TCP, tiga lainnya untuk mengirim dan
mengkonfirmasikan
sejumlah kecil data tiap kali jalan, sedangkan tiga lainnya dibutuhkan untuk
menutup koneksi. UDP menyediakan kita pelayanan yang sama dengan hanya
menggunakan dua datagram. UDP bisa dikatakan hanya membutuhkan sedikit
koneksi,
dan tidak menuntut kita untuk membangun dan menutup koneksi. Kita hanya perlu
untuk meletakkan data kita pada datagram dan mengirimkannya ke server. server
akan memformulasikan balasannya, meletakkan data balasan ke dalam datagram
yang
dialamatkan kembali ke kita, dan mengirimkan balik. Walaupun UDP lebih cepat
dan efisien daripada TCP untuk transaksi yang sederhana, UDP tidak didesain
untuk menghadapi hilangnya datagram pada saat pengiriman. Semuanya tergantung
pada aplikasi, sebagai contoh mungkin nama server, untuk menangani hal ini.
------------------------------------------------------------------------------
-
Linux tidak hanya mendukung protokol TCP/IP, tapi juga seperangkat protokol
yang digunakan oleh sistem operasi Novel NetWare. Protokol ini masih merupakan
saudara sepupu dari TCP/IP, dan sementara mereka menjalankan fungsi yang
relatif sama, tapi dari segi cara yang digunakan, berbeda dan tidak
kompatibel.
Linux tidak hanya menyediakan perangkat lunak gratis tapi juga yang komersial
untuk menyediakan dukungan pelayanan untuk diintegrasikan dengan produk
Novell.
Kita akan memberikan deskripsi ringkas mengenai protokol yang digunakan.
Pertama-lama, mari kita lihat darimana protokol tersebut berasal dan seperti
apakah bentuknya? Pada akhir tahun 1970, perusahaan Xerox mengembangkan dan
menerbitkan sebuah standar terbuka yang disebut Xerox Network Specification
(XNS). Standar tersebut menjelaskan mengenai seperangkat protokol yang
didesain
untuk internetworking secara umum, dengan kegunaan utama pada jaringan lokal.
Ada dua protokol jaringan yang terlibat: Internet Datagram Protocol, yang
menyediakan pengiriman datagram yang tidak terjamin dan tanpa koneksi dari
satu
host ke host lain dan Sequenced Packet Protokol (SPP), yang merupakan
modifikasi dari IDP yang berbasiskan koneksi dan lebih terjamin. Datagram pada
jaringan XNS diberikan alamat secara individual. Skema pengalamatan
menggunakan
kombinasi dari 4 byte alamat jaringan IDP dan 6 byte alamat node (alamat dari
kartu jaringan). Router adalah alat yang mengatur perpindahan datagram antar
dua atau lebih jaringan IDP. IDP tidak memiliki sub jaringan; Kumpulan dari
host yang baru membutuhkan alamat jaringan yang lain untuk dipergunakan.
Alamat
jaringan dipilih sedemikian rupa sehingga alamat tersebut unik dalam
internetwork. Terkadang administrator mengembangkan konvensi dengan aturan
tiap
byte men-encode beberapa informasi lain, seperti lokasi geografik, sehingga
alamat jaringan dialokasikan secara sistematik; walaupun begitu, hal ini
bukanlah merupakan suatu syarat mutlak dari protokol jaringan.
Perusahaan Novell memilih untuk mendasarkan paket jaringam mereka pada paket
XNS. Novell menciptakan sedikit perubahan ke IDP dan SPP, dan menamakannya
Paket Pertukaran di Internet atau Internet Packet Xchange (IPX) dan pertukaran
Paket yang Berurut atau Sequenced Packet Xchange (SPX). Novell menambahkan
beberapa protokol baru, seperti NetWare Core Protocol (NCP), yang menyediakan
kemampuan untuk berbagi sumber daya berkas dan printer yang dapat berjalan
melalui IPX, dan Service Advertisement Protocol (SAP). Dimana SAP memungkinkan
host dalam jaringan Novell untuk mengetahui persis host yang menyediakan
masing-masing service.
Berikut ini disajikan data relasi antara XNS, Novell, dan perangkat TCP/IP
dalam hal fungsi. Relasi ini hanya perkiraan saja, tapi sedikit banyak akan
membantu anda untuk memahami apa yang sebenarnya terjadi ketika kita merujuk
ke
protokol tersebut.
===================================================================
===================================================================
===================================================================
------------------------------------------------------------------------------
-
Dukungan untuk IPX pertama kali dikembangkan oleh Alan Cox pada tahun 1985.
Secara mendasar, IPX berguna sedikit lebih dari sekedar me-routing datagram
IPX. Sejak saat itu, pengembang lain, terutama Greg Page, telah menambahkan
beberapa dukungan tambahan. Greg mengembangkan utilitas kofigurasi IPX yang
akan digunakan untuk mengkonfigurasi antar muka kita. Volker Lendecke
mengembangkan dukungan untuk sistem berkas NCP sehingga Linux bisa melakukan
mount pada server sistem berkas NetWare yang terhubung dalam jaringan. Beliau
juga menciptakan perangkat lunak yang bisa melakukan pencetakan dari dan ke
Linux. Sedangkan Ales Dryak dan Stover masing-masing mengembangkan juga
pelayanan sistem berkas NCP untuk Linux yang memungkinkan client NetWare yang
terkoneksi dalam jaringan untuk mount direktori Linux yang diekspor sebagai
NCP, seperti halnya NFS serviceyang memungkinkan Linux untuk melayani sistem
berkas pada client yang menggunakan protokol NFS.
------------------------------------------------------------------------------
-
NetWare Directory Service (NDS)
Perangkat lunak Caldera memiliki dukungan yang penuh terhadap NDS karena
penerapannya mendapatkan lisensi yang penuh dari Novell. Walaupun begitu
penerapannya tidak gratis. Jadi anda tidak memiliki akses yang penuh ke kode
sumbernya dan tidak akan dapat memperbanyak dan mendistribusikan perangkat
lunak tersebut.
------------------------------------------------------------------------------
-
Keamanan
Pendahuluan
------------------------------------------------------------------------------
-
Seberapa Aman?
Sekarang kita akan mempelajari lebih jauh mengenai seberapa tinggi tingkat
kemanan yang kita miliki, atau pun kita perlukan. Satu hal yang perlu diingat
adalah tidak ada satu sistem komputer pun yang memiliki sistem keamanan yang
sempurna. Hal yang dapat anda lakukan hanya mencoba meminimalisir celah
keamanan yang ada. Untuk pengguna Linux rumahan yang hanya menggunakannya
untuk
keperluan pribadi saja di rumah, mungkin tidak perlu memikirkan terlalu banyak
tindakan pencegahan. Tetapi untuk pengguna Linux yang termasuk dalam skala
besar, seperti bank dan perusahaan telekomunikasi, banyak usaha ekstra keras
yang harus dilakukan.
Hal lain yang perlu diingat adalah semakin aman sistem yang anda miliki, maka
sistem komputer akan menjadi semakin merepotkan. Anda harus menyeimbangkan
antara kenyamanan pemakaian sistem dan proteksi demi alasan keamanan. Sebagai
contoh, anda bisa saja memaksa orang lain yang ingin masuk ke dalam sistem
anda
untuk menggunakan call-back modem untuk melakukan panggilan balik melalui
nomor
telepon rumah mereka. Cara ini kelihatannya memang lebih aman, tapi jika tidak
ada seorang pun di rumah, akan menyulitkan mereka untuk login. Anda juga dapat
mengatur konfigurasi sistem Linux anda tanpa jaringan atau koneksi ke
Internet,
tapi pembatasan ini akan membatasi kegunaan jaringan itu sendiri.
Jika anda memiliki situs dengan ukuran menengah sampai besar, anda harus
membangun seperangkat kebijakan dalam hal keamanan yang menyatakan tingkat
keamanan yang diperlukan. Anda dapat menemukan berbagai informasi mengenai
contoh kebijakan dalam hal keamanan yang umum digunakan di
http://www.faqs.org/
rfcs/rfc2196.html. Informasi ini sering diperbarui, dan berisi lingkup kerja
yang bagus untuk mengembangkan kebijakan keamanan untuk perusahaan anda.
------------------------------------------------------------------------------
-
Sebelum anda berusaha melakukan pengamanan terhadap sistem yang anda miliki,
anda harus menentukan terlebih dahulu beberapa hal. Hal - hal yang perlu
dipikirkan, yaitu tingkat ancaman yang harus anda antisipasi, resiko yang
harus
diambil, dan seberapa kebal sistem anda sebagai hasil usaha yang telah anda
lakukan. Anda harus menganalisa sistem anda untuk mengetahui apa yang anda
lindungi, kenapa anda melindunginya, seberapa besar nilai data yang anda
lindungi, dan siapa yang bertanggung jawab terhadap data dan aset lain dalam
sistem anda.
Resiko adalah kemungkinan dimana seorang penyusup mungkin bisa berhasil dalam
usahanya untuk mengakses komputer anda. Dapatkah seorang penyusup membaca atau
menulis berkas, atau pun mengeksekusi program yang dapat menyebabkan
kerusakan?
Dapatkah mereka menghapus data yang penting? Sebagai tambahan, memiliki
account
yang tidak aman dalam sistem anda dapat berakibat kecurian pada jaringan anda.
Anda harus memutuskan siapa yang anda percaya untuk mengakses sistem dan siapa
yang dapat menimbulkan ancaman bagi sistem anda.
Ada beberapa tipe penyusup yang karakteristiknya berbeda satu dengan lainnya,
diantaranya:
1. The Curious Penyusup tipe ini pada dasarnya tertarik mencari tahu tipe
sistem dan data yang anda miliki.
2. The Malicious Penyusup tipe ini, mengganggu sistem sehingga tidak dapat
bekerja dengan optimal, merusak halaman situs web anda, atau pun memaksa
anda untuk menghabiskan banyak uang dan waktu untuk memperbaiki kerusakan
yang dibuatnya.
4. The Competition Penyusup tipe ini tertarik pada data yang dimiliki oleh
sistem anda. Penyusup ini mungkin adalah seseorang yang berpikir ada
sesuatu yang berharga yang dapat memberikan keuntungan baginya.
5. The Borrowers Penyusup tipe ini akan menggunakan sumber daya yang kita
miliki untuk kepentingan mereka sendiri. Biasanya penyusup ini akan
menjalankannya sebagai server chatting (irc), situs porno, atau bahkan
server DNS.
6. The Leapfrogger Penyusup tipe ini hanya tertarik menggunakan sistem yang
anda miliki untuk masuk ke dalam sistem lain. Jika sistem anda terhubung
atau merupakan sebuah gateway ke sejumlah host internal, anda akan
menyaksikan penyusup tipe ini sedang berusaha untuk berkompromi dengan
sistem yang anda miliki.
------------------------------------------------------------------------------
-
Ciptakanlah kebijakan yang sederhana dan umum digunakan, dimana tiap pengguna
dalam sistem anda dapat mengerti dan mengikutinya. Kebijakan tersebut harus
dapat melindungi data anda sendiri sebagaimana melindungi kerahasiaan dari
tiap
pengguna. Beberapa hal yang perlu dipertimbangkan adalah: siapa sajakah yang
memiliki akses ke sistem anda, siapa sajakah yang diizinkan untuk menginstall
program ke dalam sistem, siapa memiliki data apa, perbaikan terhadap kerusakan
yang mungkin terjadi, dan penggunaan yang wajar dari sistem.
Sebuah kebijakan mengenai keamanan yang dapat diterima secara umum dimulai
dengan pernyataan "Mereka yang tidak diizinkan, dilarang masuk". Artinya,
kecuali anda memberikan izin akses kepada service atas seorang pengguna, maka
pengguna tersebut haruslah tidak bisa melakukan apa - apa sampai anda
memberikan izin akses kepadanya. Yakinkan bahwa kebijakan yang anda buat,
dapat
berjalan dengan baik pada account pengguna biasa. Dengan mengatakan "Ah, saya
tidak habis pikir mengenai masalah perizinannya" atau "Saya malas", biasanya
seseorang akan melakukan segala sesuatunya sebagai root. Hal ini dapat
menyebabkan terciptanya lubang keamanan yang belum ada sebelumnya. rfc1244
adalah dokumentasi yang menjelaskan cara untuk membuat kebijakan keamanan
jaringan sendiri. Sedangkan dokumentasi yang menjelaskan mengenai contoh
kebijakan keamanan dengan deskripsi yang lengkap untuk tiap tahapnya dapat
anda
lihat di rfc1281.
------------------------------------------------------------------------------
-
Dokumen ini mendiskusikan berbagai macam cara untuk mengamankan aset anda.
Sebagai contoh mesin lokal anda, data anda, pengguna anda, jaringan anda, dan
bahkan reputasi anda sendiri. Apa yang akan terjadi pada reputasi anda, jika
seorang penyusup berhasil menghapus sebagian pengguna data anda? Atau merusak
situs web anda? Atau bahkan menerbitkan rencana proyek perusahaan anda untuk
beberapa tahun kedepan? Jika anda berencana untuk membangun sebuah instalasi
jaringan, ada banyak faktor yang harus anda perhitungkan sebelum menambahkan
satu demi satu mesin ke dalam jaringan anda.
Bahkan dengan account panggilan PPP tunggal anda, atau bahkan sebuah situs
kecil, bukan berarti si penyusup tidak tertarik pada sistem yang anda miliki.
Situs - situs raksasa bukanlah satu - satunya target sasaran, karena banyak
penyusup yang ingin mengeksploitasi sebanyak mungkin situs yang ada, seberapa
pun juga ukurannya. Sebagai tambahan mereka mungkin menggunakan lubang
keamanan
dalam situs anda untuk memperoleh akses ke situs lain yang mereka tuju.
Penyusup tidak perlu melakukan tebak - tebakan mengenai cara anda mengamankan
sistem karena mereka memiliki banyak waktu. Kemungkinan besar cara yang mereka
gunakan adalah mencoba semua kemungkinan yang ada (brute force).
------------------------------------------------------------------------------
-
Keamanan Fisik
Lapisan kemanan pertama yang harus anda perhitungkan adalah keamanan secara
fisik dalam sistem komputer anda. Siapa saja yang memiliki akses secara
langsung ke sistem? Apakah mereka memang berhak? Dapatkah anda melindungi
sistem anda dari maksud dan tujuan mereka? Apakah hal tersebut perlu anda
lakukan?
Berapa banyak keamanan fisik yang berada dalam sistem anda memiliki
ketergantungan terhadap situasi yang anda hadapi, dan tentu saja anggaran.
Apabila anda adalah pengguna rumahan, maka kemungkinan anda tidak membutuhkan
banyak. Tapi jika anda berada di laboratorium, atau pun jaringan komputer
tempat anda bekerja, banyak yang harus anda pikirkan. Secara nyata dan jelas,
metode keamanan secara fisik yang bisa dilakukan antara lain dengan mngunci
pintu, kabel, laci, tapi semuanya itu diluar pembahasan dalam bagian ini.
------------------------------------------------------------------------------
-
Kunci Komputer
Banyak komputer pribadi saat ini yang memiliki kemampuan mengunci. Biasanya
kunci ini berupa soket pada bagian depan casing yang bisa dimasukkan kunci
untuk mengunci mau pun membukanya, Kunci casing dapat membantu mencegah
seseorang untuk mencuri dari komputer, atau membukanya secara langsung untuk
memanipulasi atau pun mencuri perangkat keras yang anda miliki. Kunci ini juga
berguna untuk mencegah orang tertentu untuk mereboot komputer anda dari disket
mau pun perangkat keras lainnya.
Kunci casing ini melakukan hal-hal yang berbeda menurut fasilitas yang
ditawarkan oleh motherboard dan bagaimana struktur casing itu sendiri. Pada
banyak komputer pribadi, perusahaan pembuat menciptakan casing tersebut
sedemikian rupa sehingga anda harus menghancurkannya untuk membukanya.
Sedangkan pada tipe casing yang lain, keyboard mau pun mouse baru tidak dapat
dipasangkan ke dalamnya. Periksalah mainboard anda, mau pun instruksinya untuk
informasi lebih lanjut. Kadang - kadang hal ini bisa menjadi sangat berguna,
walau pun kunci yang digunakan seringkali berkualitas rendah dan dapat dengan
mudah dikalahkan oleh si penyerang dengan metode pembukaan kunci yang
dimilikinya.
Beberapa mesin terutama SPARC dan Mac punya pengaman di bagian belakangnya,
sehingga jika ada yang memasukkan kabel ke dalamnya, si penyerang harus
memotong kabelnya atau merusak casing untuk masuk ke dalamnya. Dengan
meletakkan padlock atau combo lock akan menjadi pengamanan yang cukup baik
untuk mencegah orang lain mencuri mesin anda.
------------------------------------------------------------------------------
-
Keamanan BIOS
BIOS adalah tingkatan terendah dari perangkat lunak yang mengkonfigurasi atau
memanipulasi perangkat keras anda. BIOS adalah singkatan dari Basic Input
Output System. LILO dan berbagai metode boot Linux lainnya mengakses BIOS
untuk
menentukan cara untuk memboot mesin Linux anda. Perangkat keras lain yang
dijalankan dengan Linux memiliki perangkat lunak yang mirip (Open Firmware di
Mac dan new Suns, Sun boot PROM, dll). Anda dapat menggunakan BIOS untuk
mencegah penyerang untuk mem-boot komputer dan memanipulasi sistem Linux anda.
Banyak BIOS komputer yang bisa diset kata kuncinya. Walau pun begitu, keamanan
belum terjamin karena seseorang bisa saja menset ulang BIOS atau pun
membuangnya jika ada orang yang mampu memasuki casing-nya. Mirip dengan itu,
EEPROM S/Linux dapat diset untuk memenuhi sebuah kata kunci boot. Hal ini
mungkin dapat memperlambat gerak si penyerang. Resiko lainnya dari mempercayai
kata kunci BIOS untuk mengamankan sistem anda adalah masalah kata kunci yang
digunakan. Kebanyakan pembuat BIOS tidak berharap pembeli untuk membuka
komputernya dan mencabut baterai untuk menghilangkan kata kuncinya apabila
mereka lupa. Pembuat BIOS ini seringkali melengkapi BIOS mereka dengan kata
kunci standar dari pembuatnya.
Banyak BIOS dari komputer dengan sistem Intel i386 memberikan kemudahan untuk
mengatur berbagai macam seting keamanan. Periksalah manual BIOS anda atau
lihatlah pada saat anda akan melakukan boot up lagi. Sebagai contoh, beberapa
BIOS tidak mengizinkan anda untuk mem- boot dari disket dan menuntut kata
kunci
untuk mengakses fasilitas tertentu dari BIOS. Sebagai catatan, jika anda
memiliki mesin server, dan anda mengeset sebuah kata kunci boot, mesin anda
tidak akan melakukan boot tanpa sepengetahuan dari anda sendiri. Ingatlah
bahwa
anda harus masuk ke ruangan server dan menyediakan kata kunci setiap kali
terjadi penurunan daya listrik.
------------------------------------------------------------------------------
-
Keamanan Boot Loader
Berbagai macam boot loader Linux juga memiliki seperangkat kata kunci boot.
Sebagai contoh, LILO memiliki kata kunci dan beberapa seting tertutup. LILO
akan meminta masukan berupa kata kunci dari pengguna, sementara seting
tertutup
meminta kata kunci boot-time jika anda menambahkan option (misalnya single) di
prompt LILO.
Ingatlah selalu kata kunci yang anda masukkan pada saat seting. Juga jangan
lupa bahwa kata kunci tersebut akan memperlambat gerakan beberapa hacker. Jika
anda menerapkan keamanan dalam boot-loader, aturlah BIOS anda sehingga
komputer
tidak bisa diboot dari disket, dan berikan kata kunci pada BIOS anda.
Jangan lupa juga untuk menset atribut berkas /etc/lilo.conf menjadi 600 (rw-
--- ---), yang artinya berkas tersebut hanya bisa dibaca dan ditulis oleh
root.
Jika tidak, orang lain akan dapat mengetahui kata kunci anda. Jika anda
memiliki sebuah server, dan memberikan kata kunci boot, maka mesin anda tidak
akan dapat mem-boot tanpa seizin anda. Ingatlah bahwa anda harus datang dan
memasukkan kata kunci setiap kali terjadi masalah dengan daya listrik pada
ruangan di mana server berada.
------------------------------------------------------------------------------
-
Keamanan Lokal
Hal berikutnya yang akan kita perhatikan lebih lanjut adalah keamanan sistem
terhadap serangan dari pengguna lokal. Mendapatkan akses ke account pengguna
lokal adalah hal pertama yang dilakukan oleh penyusup sistem untuk memperoleh
account root. Dengan sistem keamanan yang lemah, seorang pengguna biasa dapat
menjadi root dengan menggunakan berbagai macam bug yang ada dan service dari
localhost yang rentan. Jika anda yakin, bahwa sistem keamanan anda cukup baik,
maka si penyusup akan mencari jalan lain untuk menyusup ke sistem anda.
------------------------------------------------------------------------------
-
Anda harus yakin bahwa anda menyediakan account pengguna dengan keleluasaan
minimal sesuai dengan tugas yang akan mereka kerjakan. Jika anda menyediakan
account kepada seorang anak berumur 10 tahun, anda mungkin hanya akan
memberikan akses ke program pengolah kata dan program menggambar kepadanya,
sehingga dia tidak bisa menghapus berkas yang bukan miliknya sendiri.
* Pastikan bahwa anda telah menghapus account yang sudah tidak digunakan
lagi, yang dapat anda tentukan dengan perintah 'last' atau pun dengan
memeriksa berkas log aktivitas dari tiap pengguna.
* Penggunaan userid yang sama untuk semua komputer dan jaringan sangat
dianjurkan untuk mempermudah pemeliharaan account, dan memudahkan analisa
berkas log.
* Pembuatan userid dengan group harus dihindari. Account pengguna lebih mudah
untuk diawasi dan diperhitungkan, berbeda halnya dengan account group.
------------------------------------------------------------------------------
-
Keamanan Root
Account root memiliki akses penuh terhadap keseluruhan sistem. Ingat jangan
menggunakan account root dengan sembarangan. Gunakan account root hanya untuk
mengerjakan suatu pekerjaan khusus saja dan lakukan dalam jangka waktu yang
tidak terlalu lama. Biasakan untuk menggunakan account pengguna biasa untuk
menjalankan aplikasi sehari - hari. Bahkan kesalahan terkecil yang dilakukan
pada saat login sebagai root dapat menyebabkan kekacauan yang fatal.
* Menyediakan pengguna dalam sistem anda dengan alias standar (alias rm='rm
-i' ke perintah rm untuk memberikan konfirmasi mengenai penghapusan berkas.
* Jadilah root hanya untuk melakukan pekerjaan tertentu saja. Jika anda ingin
mencoba sesuatu, cobalah dengan login pengguna biasa sampai anda yakin apa
yang akan anda lakukan dengan login root.
* Variabel path untuk root sangat penting. Cobalah batasi isi variabel path
perintah untuk root dan jangan memasukkan "." (direktori saat ini) ke dalam
variabel path. Jangan pernah memberikan izin akses tulis ke dalam direktory
yang ada di variabel path, supaya pengguna lain tidak bisa memasukkan
berkas binary lain yang bisa membuatnya menjadi root setelah anda
mengeksekusi berkas binary tersebut.
* Jangan menggunakan perangkat lunak tools rlogin/ rsh/ rexec sebagai root.
Karena perangkat lunak tersebut mudah diserang oleh penyusup. Jangan pula
membuat sebuah berkas .rhost untuk root.
* Terakhir cobalah untuk bersikap tenang dan berpikir jernih ketika login
sebagai root. Apa pun yang anda lakukan sebagai root akan sangat
mempengaruhi banyak hal. Karena itu berpikirlah sebelum anda melakukan hal
bodoh yang dapat merusak seluruh sistem.
------------------------------------------------------------------------------
-
Serba-Serbi PLB
Perangkat lunak bebas merupakan suatu bentuk pengembangan perangkat lunak yang
dikembangkan melalui proyek GNU (GNU's Not Unix, GNU Bukan Unix). Proyek ini
mulai dirintis pada tahun 1980-an dipicu dengan mulainya masa perangkat lunak
berpemilik (perangkat lunak berlisensi). Pihak-pihak pengembang perangkat
lunak
berpemilik Menekankan bahwa penggunaan perangkat lunak tanpa lisensi merupakan
suatu bentuk pelanggaran Hak atas Kekayaan Intelektual (HKI) dan merupakan
suatu tindakan kriminal. Konsep yang ditekankan oleh pihak pengembang diatas
tidak diterima oleh semua orang, terdapat orang-orang seperti Richard Stallman
(perintis proyek GNU) yang memiliki pendapat bahwa perangkat lunak merupakan
milik masyarakat sehingga diperbolehkan untuk dimodifikasi dan disebarluaskan
secara bebas. Pengembangan perangkat lunak bebas memiliki tujuan agar setiap
orang dapat mendapatkan manfaat dari perangkat lunak secara bebas sehingga
setiap orang dapat menjalankan, menggandakan, menyebarluaskan, mempelajari,
mengubah dan meningkatkan kinerja perangkat lunak.
Kata bebas pada perangkat lunak bebas sering diartikan sebagai gratis (free),
arti sesungguhnya bebas pada perangkat lunak bebas lebih merupakan kebebasan
untuk mempergunakan perangkat lunak, melakukan penyalinan, dan perubahan pada
kode sumber. Arti bebas yang salah, telah menimbulkan persepsi masyarakat
bahwa
perangkat lunak bebas merupakan 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 seperti
kebebasan berbicara bukan seperti bir gratis. Maksud dari bebas seperti
kebebasan berbicara adalah kebebasan untuk menggunakan, menyalin,
menyebarluaskan, mempelajari, mengubah, dan meningkatkan kinerja perangkat
lunak.
Suatu perangkat lunak dapat dimasukkan dalam kategori perangkat lunak bebas
bila setiap orang memiliki kebebasan tersebut. Hal ini berarti, setiap
pengguna
perangkat lunak bebas dapat meminjamkan perangkat lunak yang dimilikinya
kepada
orang lain untuk dipergunakan tanpa perlu melanggar hukum dan disebut
pembajak.
Kebebasan yang diberikan perangkat lunak bebas dijamin oleh copyleft, suatu
cara yang dijamin oleh hukum untuk melindungi kebebasan para pengguna
perangkat
lunak bebas. Dengan adanya copyleft maka suatu perangkat lunak bebas beserta
hasil perubahan dari kode sumbernya akan selalu menjadi perangkat lunak bebas.
Kebebasan yang diberikan melalui perlindungan copyleft inilah yang membuat
suatu program dapat menjadi perangkat lunak bebas.
Keuntungan yang diperoleh dari penggunaan perangkat lunak bebas adalah karena
serbaguna dan efektif dalam keanekaragaman jenis aplikasi. Dengan pemberian
source code-nya, perangkat lunak bebas dapat disesuaikan secara khusus untuk
kebutuhan pemakai. Sesuatu yang tidak mudah untuk terselesaikan dengan
perangkat lunak berpemilik Selain itu, perangkat lunak bebas didukung oleh
milis-milis pengguna yang dapat menjawab pertanyaan yang timbul karena
permasalahan pada penggunaan perangkat lunak bebas.
------------------------------------------------------------------------------
-
[category07]
------------------------------------------------------------------------------
-
Perangkat lunak bebas ialah perangkat lunak yang mengizinkan siapa pun untuk
menggunakan, menyalin, dan mendistribusikan, baik dimodifikasi atau pun tidak,
secara gratis atau pun dengan biaya. Perlu ditekankan, bahwa source code dari
program harus tersedia. ``Jika tidak ada kode program, berarti bukan perangkat
lunak bebas.'' Yang tersebut di atas merupakan definisi sederhananya; lihat
juga definisi lengkapnya.
Terdapat berbagai cara untuk membuat suatu program bebas--- banyak pertanyaan
rinci, yang dapat ditentukan dalam banyak cara dan masih menjadikan program
tersebut bebas. Beberapa kemungkinan variasi akan dijelaskan di bawah ini.
Perangkat lunak bebas menyangkut masalah kebebasan, bukan harga. Tapi beberapa
perusahaan perangkat lunak berpemilik terkadang menggunakan istilah perangkat
lunak bebas untuk menunjukkan harga. Terkadang maksud mereka ialah anda dapat
memperoleh salinan biner tanpa biaya; terkadang maksud mereka ialah suatu
salinan disertakan dalam komputer yang anda beli. Ini tidak ada hubungannya
sama sekali dengan apa yang di maksud dengan perangkat lunak bebas pada proyek
GNU.
Karena hal ini dapat membingungkan, ketika sebuah perusahaan perangkat lunak
menyatakan bahwa produknya adalah perangkat lunak bebas, selalu periksa
ketentuan distribusinya untuk melihat apakah pengguna memiliki kebebasan yang
dimaksudkan oleh istilah perangkat lunak bebas. Terkadang memang benar-benar
perangkat lunak bebas; namun terkadang tidak.
Banyak bahasa memiliki dua kata yang berbeda untuk menyatakan ``bebas''
sebagai
kebebasan dan ``bebas'' sebagai tanpa biaya. Sebagai contoh, bahasa Perancis
memiliki kata ``libre'' dan ``gratuit''. Dalam bahasa Inggris terdapat kata
``gratis'' yang menyatakan tentang harga tanpa membingungkan. Tapi tidak ada
kata sifat yang menyatakan kebebasan tanpa membingungkan. Hal ini sangat
disayangkan, karena kata semacam itu akan sangat berguna disini.
Perangkat lunak bebas seringkali lebih handal daripada perangkat lunak tidak
bebas.
------------------------------------------------------------------------------
-
Perangkat Lunak Open Source
Istilah perangkat lunak ``open source'' digunakan oleh beberapa pihak yang
artinya kurang lebih sama dengan perangkat lunak bebas. Kami memilih untuk
menggunakan istilah ``perangkat lunak bebas''.
------------------------------------------------------------------------------
-
Perangkat lunak public domain ialah perangkat lunak yang tanpa hak cipta. Ini
merupakan kasus khusus dari perangkat lunak bebas non-copylefted, yang berarti
bahwa beberapa salinan atau versi yang telah dimodifikasi bisa jadi tidak
bebas
sama sekali.
Terkadang ada yang menggunakan istilah ``public domain'' secara bebas yang
berarti ``cuma-cuma'' atau ``tersedia gratis". Namun ``public domain''
merupakan istilah hukum yang artinya ``tidak memiliki hak cipta''. Untuk
jelasnya, kami menganjurkan untuk menggunakan istilah ``public domain'' dalam
arti tersebut, serta menggunakan istilah lain untuk mengartikan pengertian
yang
lain.
------------------------------------------------------------------------------
-
Dalam proyek GNU, kami meng-copyleft-kan hampir semua perangkat lunak yang
kami
buat, karena tujuan kami adalah untuk memberikan kebebasan kepada semua
pengguna seperti yang tersirat dalam istilah ``perangkat lunak bebas''.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
GNU GPL (General Public License) (20k huruf) merupakan sebuah kumpulan
ketentuan pendistribusian tertentu untuk meng-copyleft-kan sebuah program.
Proyek GNU menggunakannya sebagai perjanjian distribusi untuk sebagian besar
perangkat lunak GNU.
------------------------------------------------------------------------------
-
Sistem GNU
Sistem GNU merupakan sistem serupa Unix yang seutuhnya bebas. Sistem operasi
serupa Unix terdiri dari berbagai program. Sistem GNU mencakup seluruh
perangkat lunak GNU, dan juga paket program lain, seperti sistem X Windows dam
TeX yang bukan perangkat lunak GNU.
Kami telah mengembangkan dan mengumpulkan komponen untuk sistem GNU ini sejak
tahun 1984. Pengedaran awal (percobaan) dari ``sistem GNU lengkap'' dilakukan
tahun 1996. Sekarang (2001), sistem GNU ini bekerja secara handal, serta
orang-orang bekerja dan mengembangkan GNOME, dan PPP dalam sistem GNU. Pada
saat bersamaan sistem GNU/Linux, merupakan sebuah terobosan dari sistem GNU
yang menggunakan Linux sebagai kernel dan mengalami sukses luar biasa.
Berhubung tujuan dari GNU ialah untuk kebebasan, maka setiap komponen dalam
sistem GNU harus merupakan perangkat lunak bebas. Namun tidak berarti semuanya
harus copylefted; setiap jenis perangkat lunak bebas dapat sah-sah saja jika
menolong memenuhi tujuan teknis. Seseorang dapat menggunakan perangkat lunak
non-copylefted seperti sistem X Window.
------------------------------------------------------------------------------
-
Program GNU
``Program GNU'' setara dengan perangkat lunak GNU. Program Anu adalah program
GNU jika ia merupakan perangkat lunak GNU.
------------------------------------------------------------------------------
-
Jika suatu program adalah perangkat lunak GNU, seseorang juga dapat
menyebutnya
sebagai program GNU.
Beberapa perangkat lunak GNU ditulis oleh staf dari Free Software Foundation
(FSF, Yayasan Perangkat Lunak Bebas), namun sebagian besar perangkat lunak GNU
merupakan kontribusi dari para sukarelawan. Beberapa perangkat lunak yang
dikontribusikan merupakan hak cipta dari Free Software Foundation; beberapa
merupakan hak cipta dari kontributor yang menulisnya.
------------------------------------------------------------------------------
-
Perangkat lunak semi-bebas adalah perangkat lunak yang tidak bebas, tapi
mengizinkan setiap orang untuk menggunakan, menyalin, mendistribusikan, dan
memodifikasinya (termasuk distribusi dari versi yang 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.
Sudah seharusnya kita percaya bahwa perangkat lunak bebas seharusnya ditujukan
bagi semuanya--termasuk pelaku bisnis, dan bukan hanya untuk sekolah dan
sekedar hobi saja. GNU ingin mengundang kalangan bisnis untuk menggunakan
keseluruhan sistem GNU, dan untuk itu kami tidak dapat menyertakan program
semi-bebas di dalamnya.
Free Software Foundation sendiri adalah organisasi nirlaba, dan karena itu,
kami diizinkan secara hukum untuk menggunakan program semi-bebas secara
``internal''. Tapi GNU tidak melakukannya, karena hal itu akan melemahkan
upaya
yang telah dilakukan untuk memperoleh program yang dapat disertakan ke dalam
GNU.
Jika ada pekerjaan yang berhubungan dengan perangkat lunak, maka sebelum kami
memiliki program bebas untuk melakukan pekerjaan itu, sistem GNU memiliki
kesenjangan. Kami harus memberitahukan kepada para sukarelawan, ``Kami belum
memiliki program untuk melakukan pekerjaan ini di GNU, jadi kami berharap Anda
menulisnya sendiri.'' Jika program semi-bebas digunakan untuk untuk melakukan
pekerjaan itu, hal itu akan melemahkan apa yang telah dijelaskan diatas; hal
itu akan menghancurkan motivasi (bagi pengembang GNU, dan orang lain yang
memiliki pandangan yang sama) untuk menulis substitusi yang bebas.
------------------------------------------------------------------------------
-
Perangkat lunak berpemilik ialah perangkat lunak yang tidak bebas atau pun
semi-bebas. Seseorang dapat dilarang, atau harus meminta izin, atau akan
dikenakan pembatasan lainnya sehingga menyulitkan--jika menggunakan,
mengedarkan, atau memodifikasinya.
Free Software Foundation mengikuti aturan bahwa seseorang tidak dapat memasang
program-program berpemilik di komputernya kecuali untuk sementara waktu dengan
maksud menulis pengganti bebas untuk program tersebut. Disamping itu, pihak
perangkat lunak bebas merasa tidak; ada alasan untuk memasang sebuah program
berpemilik.
Sebagai contoh, pengemban GNU merasa sah dalam memasang Unix di komputer yang
digunakan pada tahun 1980-an, sebab kami menggunakannya untuk menulis
pengganti
bebas untuk Unix. Sekarang, karena sistem operasi bebas telah tersedia, alasan
ini tidak lagi dapat diterima; pihak GNU harus menghapus semua sistem operasi
tidak bebas yang dimiliki, dan setiap komputer yang dipasang harus berjalan
pada sistem operasi yang benar-benar bebas.
GNU tidak memaksa para pengguna GNU atau para kontributor GNU untuk mengikuti
aturan ini. Ini adalah aturan yang dibuat untuk diri kami sendiri (GNU). Tapi
kami berharap agar anda memutuskan untuk mengikutinya juga.
------------------------------------------------------------------------------
-
Freeware
------------------------------------------------------------------------------
-
Shareware
Shareware bukan perangkat lunak bebas atau pun semi-bebas. Ada dua alasan
untuk
hal ini, yakni:
Sebagian besar shareware, kode programnya tidak tersedia; jadi anda tidak
dapat
memodifikasi program tersebut sama sekali.
------------------------------------------------------------------------------
-
Sebagai contoh, GNU Ada selalu didistribusikan di bawah perjanjian GNU GPL,
dan
setiap salinannya adalah perangkat lunak bebas; tapi para pengembangnya
menjual
kontrak penunjang. Ketika penjualnya bicara kepada calon pembeli, terkadang
pembeli tersebut mengatakan, ``Kami merasa lebih aman dengan kompilator
komersial.'' Si penjual menjawab, ``GNU Ada ialah kompilator komersial; hanya
saja ia merupakan perangkat lunak bebas.''
Bagi proyek GNU, penekanannya ada pada hal yang sebaliknya: hal terpenting
ialah GNU Ada merupakan perangkat lunak bebas; terlepas komersial atau bukan,
itu bukan hal yang penting. Namun perkembangan tambahan GNU Ada yang
dihasilkan
dari komersialismenya adalah menguntungkan.
------------------------------------------------------------------------------
-
Latihan
Soal Latihan
4. Apa keuntungan reiser file sistem dibandingkan dengan file sistem lain?
6. Mengapa file sistem ext3 membutuhkan waktu recovery yang lebih sedikit
daripada file sistem ext2 setelah terjadi "unclean shutdown"?
15. Jabarkan fitur dan keunggulan/kekurangan dari kernel Linux v0.01, v1.0,
v2.0.
a. Pada saat boot dan ingin memilih suatu OS user memasukkan password?
b. Pada saat boot dan ingin menambahkan option di prompt lilo, user
memasukkan password?
20. Apakah hacker dan craker sama? Kalau beda/ sama sebutkan dalam hal apa?
22. Apakah kelebihan dan kekurangan protokol IPX, TCP/IP, dan UDP?
24. - Jelaskan perbedaan yang mendasar dari device blok dengan device
karakter!
- Apakah yang membedakan device jaringan dengan device karakter dan device
blok?
- Jelaskan sedikit mengenai pipa dan perbedaan yang khusus dari cara
komunikasi yang lainnya
------------------------------------------------------------------------------
-
Sejarah Linux
Kernel Linux
Sistem Linux
Distribusi Linux
Lisensi Linux
------------------------------------------------------------------------------
-
Design Principles
------------------------------------------------------------------------------
-
Registrasi Driver
Resolusi Konflik
------------------------------------------------------------------------------
-
Managemen Proses
Pendahuluan
Deskriptor Proses
------------------------------------------------------------------------------
-
Penjadualan
Sinkronisasi Kernel
Penjadualan Proses
Symmetric Multiprocessing
------------------------------------------------------------------------------
-
Memori Virtual
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
I/O Linux
Device karakter
Device blok
Device jaringan
------------------------------------------------------------------------------
-
Pipa
------------------------------------------------------------------------------
-
Struktur Jaringan
Jaringan TCP/IP
------------------------------------------------------------------------------
-
Keamanan
Pendahuluan
Keamanan Fisik
------------------------------------------------------------------------------
-
Serba-Serbi PLB
------------------------------------------------------------------------------
-
Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi
komponen lainlah yang membentuk secara komplit sistem operasi Linux. Dimana
kernel Linux terdiri dari kode-kode yang dibuat khusus untuk proyek Linux,
kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux,
melainkan biasa dipakai dalam beberapa sistem operasi yang mirip UNIX.
Contohnya, sistem operasi BSD dari Berkeley, X Window System dari MIT, dan
proyek GNU dari Free Software Foundation.
Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya
paling
cepat. Kehadiran sejumlah kelompok pengembang, tersebar di seluruh dunia, yang
selalu memperbaiki segala fiturnya, ikut membantu kemajuan sistem operasi
Linux. Bersamaan dengan itu, banyak pengembang yang sedang bekerja untuk
memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux).
------------------------------------------------------------------------------
-
Daftar Istilah
accounting
address space
administrator
attachment
box
broadcast
buffer cache
bug
byte
calls
child
client
compile = compile
alih konteks
core dump
crash
data page
datagram
default
default --> standar
dependencies
device drivers
download
driver
encoding
entity
entry
error
ethernet
ethernet
firewalling
flag
forwarder
gateway
generate
host
inode
internetworking
interuptible
journaling
load
login
loopback
mapping
mask
me-list
message-passing
mode
offset
option
page table
paginates
parameter
pointer
printer
prompt
real-time
redirection
remote
request
resolve
root
routine
run
run time
scheduler
server
service
shared library
shell
signal
source code
standard
super user
swap
system call
sytem calls
text-processing
thread
up to date
variable
virtual
wait
------------------------------------------------------------------------------
-
CATATAN: Situs (URL) rujukan ini pernah diakses pada pertengahan tahun 2003
yang lalu. Terdapat kemungkinan, bahwa situs tersebut sekaranga ini telah
berubah, atau telah dihapus.
------------------------------------------------------------------------------
-
http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html
http://telemann.coda.cs.cmu.edu/doc/talks/linuxvfs/
http://www.science.unitn.it/~fiorella/guidelinux/tlk/node94.html
http://web.mit.edu/tytso/www/linux/ext2intro.html
http://www.science.unitn.it/~fiorella/guidelinux/tlk/node5.html
http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/ref-guide
http://www.pdrs.com.au/pdrs/linuxfs.htm
http://www.cs.umd.edu/projects/shrug/ppt/5-Oct-2001.ppt
http://www.reiserfs.org/
http://www.tldp.org/HOWTO/Linux+XFS-HOWTO/
http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/ref-guide/ch-proc.html
http://www.cs.wits.ac.za/~adi/courses/linuxadmin/content/module2doc.html
http://www.sao.nrc.ca/imsb/rcsg/documents/basic/node30.html
http://home.earthlink.net/~jknapka/linux-mm/vmoutline.html
------------------------------------------------------------------------------
-
http://sdn.vlsm.org/share/LDP/intro/index.html
http://www.linuxhq.com/guides/index.html
http://www.linuxhq.com/guides/TLK/tlk-toc.html
http://en.tldp.org/guides.html
http://ctdp.tripod.com/os/linux/howlinuxworks/index.html
http://en.tldp.org/LDP/lkmpg/lkmpg.pdf
http://en.tldp.org/LDP/intro-linux/Intro-Linux.pdf
http://en.tldp.org/LDP/lki/lki.pdf
------------------------------------------------------------------------------
-
http://www.kernel.org/
http://www.kernelnewbies.org/
http://www.kernelnewbies.org/documents/
http://kernelbook.sourceforge.net/
http://www.freeos.com/articles/4051/
http://opensource.ucc.ie/icse2002/SchachOffutt.pdf
http://sdn.vlsm.org/share/LDP/lkmpg/
------------------------------------------------------------------------------
-
Process Management(Rujukan)
http://cs-pub.bu.edu/fac/richwest/cs591_w1/ notes/linux_process_mgt.PDF
http://www.cs.wm.edu/~dsn/444F02/lectures/linux_l1.pdf
http://ctdp.tripod.com/os/linux/howlinuxworks/linux_hlprocess.html
------------------------------------------------------------------------------
-
GNU (Rujukan)
Situs GNU
------------------------------------------------------------------------------
-
Rujukan
Buku
[Walsh2002] Norman Walsch dan Leonard Muellner, Bob Stayton, 1999, 2000, 2001,
2002, DocBook: The Definitive Guide, Version 2.0.7, O'Reilly.
------------------------------------------------------------------------------
-
URLs
[FIXME10] FIXME10,
http://www.chipcenter.com/circuitcellar/march02/c0302dc4.htm
.
[FIXME11] FIXME11,
http://www.etnus.com/Support/docs/rel5/html/cli_guide/images
/procs_n_threads8a.gif .
[FIXME26] FIXME26,
http://www.mcsr.olemiss.edu/unixhelp/concepts/history.html .
[FIXME31] FIXME31,
http://legion.virginia.edu/presentations/sc2000/sld001.htm .
------------------------------------------------------------------------------
-
Copyright © 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute
verbatim copies of this license document, but changing it is not allowed.
------------------------------------------------------------------------------
-
PREAMBLE
This License is a kind of "copyleft", which means that derivative works of the
document must themselves be free in the same sense. It complements the GNU
General Public License, which is a copyleft license designed for free
software.
We have designed this License in order to use it for manuals for free
software,
because free software needs free documentation: a free program should come
with
manuals providing the same freedoms that the software does. But this License
is
not limited to software manuals; it can be used for any textual work,
regardless of subject matter or whether it is published as a printed book. We
recommend this License principally for works whose purpose is instruction or
reference.
------------------------------------------------------------------------------
-
This License applies to any manual or other work that contains a notice placed
by the copyright holder saying it can be distributed under the terms of this
License. The "Document", below, refers to any such manual 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.
The "Invariant Sections" are certain Secondary Sections whose titles are
designated, as being those of Invariant 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-Cover Texts, in the notice that says that the
Document is released under this License.
A "Transparent" copy of the Document means a machine-readable copy,
represented
in a format whose specification is available to the general public, whose
contents can be viewed and edited directly and straightforwardly 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 or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise Transparent
file format whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not "Transparent"
is
called "Opaque".
The "Title Page" means, for a printed book, the title page itself, plus such
following pages as are needed to hold, legibly, the material this License
requires to appear in the title page. For works in formats which do not have
any title page as such, "Title Page" means the text near the most prominent
appearance of the work's title, preceding the beginning of the body of the
text.
------------------------------------------------------------------------------
-
VERBATIM COPYING
You 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 the Document are reproduced in
all copies, and that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or control the reading
or further copying of the copies you make or distribute. However, you may
accept compensation in exchange for copies. If you distribute 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.
------------------------------------------------------------------------------
-
COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the copies in
covers that carry, clearly and legibly, all these Cover Texts: Front-Cover
Texts on the front cover, and Back-Cover Texts on the back cover. Both covers
must also clearly and legibly identify you as the publisher of these copies.
The front cover must present the full title with all words of the title
equally
prominent and visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve the title
of the 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 either include a machine-readable Transparent copy along with
each Opaque copy, or state in or with each Opaque copy a publicly-accessible
computer-network location containing a complete Transparent copy of the
Document, free of added material, which the general network-using public has
access to download anonymously at no charge using public-standard network
protocols. If you use the latter option, you must take reasonably prudent
steps, when you begin distribution of Opaque copies in quantity, to ensure
that
this Transparent copy will remain thus accessible at the stated location until
at least one year after the last time you distribute an Opaque copy (directly
or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the
Document
well before redistributing any large number of copies, to give them a chance
to
provide you with an updated version of the Document.
------------------------------------------------------------------------------
-
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the
conditions of sections 2 and 3 above, provided that you release the Modified
Version under precisely this License, with the Modified Version filling the
role of the Document, thus licensing distribution and modification of the
Modified Version 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 from those of previous versions (which should, if
there were any, be listed in the History section of the Document). You may
use the same title as a previous version if the original publisher of that
version gives permission.
C. State on the Title page the name of the publisher of the Modified Version,
as the publisher.
G. Preserve in that license notice the full lists of Invariant Sections and
required Cover Texts given in the Document's license notice.
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 no section
entitled "History" in the Document, create one stating the title, year,
authors, and publisher of the Document as given on its Title Page, then add
an item describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public
access to a Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was based on.
These may be placed in the "History" section. You may omit a network
location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to
gives permission.
The author(s) and publisher(s) of the Document do not by this License give
permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version.
------------------------------------------------------------------------------
-
COMBINING DOCUMENTS
You may combine the Document with other documents released under this License,
under the terms defined in section 4 above for modified versions, provided
that
you include in the combination all of the Invariant Sections of all of the
original documents, unmodified, and list them all as Invariant Sections of
your
combined work in its license notice.
The combined work need only contain one copy of this License, and multiple
identical Invariant Sections may be replaced with a single copy. If there are
multiple Invariant Sections with the same name but different 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 the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
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."
------------------------------------------------------------------------------
-
COLLECTIONS OF DOCUMENTS
You 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 is included in the
collection,
provided that you follow the rules of this License for verbatim copying of
each
of the documents in all other respects.
You may extract a single document from such a collection, and distribute it
individually under this License, provided you insert a copy of this License
into the extracted document, and follow this License in all other respects
regarding verbatim copying of that document.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
TRANSLATION
------------------------------------------------------------------------------
-
TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as
expressly provided for under this License. Any other attempt to copy, modify,
sublicense or distribute the Document is void, and will automatically
terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-
To use this License in a document you have written, include a copy of the
License in the document and put the following copyright and license notices
just after the title page:
------------------------------------------------------------------------------
-
Indeks
Alamat
Algoritma
LRU
Disk
Handshaking, Handshaking
Buffering, Buffering
Cache, Caching
IPX, Sejarah dan Latar Belakang Xerox dan Novell, IPX dan Linux
NCP, Struktur Jaringan, Sejarah dan Latar Belakang Xerox dan Novell, IPX
dan Linux
Novell, Sejarah dan Latar Belakang Xerox dan Novell, NetWare Directory
Service (NDS)
Server
TCP/IP, Struktur Jaringan, Sejarah dan Latar Belakang Xerox dan Novell
Versi 2.1
Komunikasi
Manajemen Proses
Fungsi, Pendahuluan
Metoda Akses
Akses Dengan Menggunakan Indeks, Akses Dengan Menggunakan Indeks
Counting, Counting
Group, Grouping
Dispatcher, Dispatcher
Round-Robin
Perangkat Lunak
Freeware, Freeware
Shareware, Shareware
r-utilities
UNIX, Sistem Berkas pada UNIX (dan turunannya), Macam-macam Sistem Berkas
di UNIX
X, Sistem Berkas X
Keuntungan, Keuntungan
Vektor Interupsi
Waktu
Minimum, Windows NT
X11