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.
Modul kernel Linux memudahkan pihak lain untuk meningkatkan fungsionalitas kernel tanpa harus membuat
sebuah kernel monolitik dan menambahkan fungsi yang mereka butuhkan langsung ke dalam image dari kernel.
Selain hal tersebut akan membuat ukuran kernel menjadi lebih besar, kekurangan lainnya adalah mereka harus
membangun dan me-reboot kernel setiap saat hendak menambah fungsi baru. Dengan adanya modul maka setiap
pihak dapat dengan mudah menulis fungsi-fungsi baru dan bahkan mendistribusikannya sendiri, di luar GPL.
Kernel modul juga memberikan keuntungan lain yaitu membuat sistem Linux dapat dinyalakan dengan kernel
standar yang minimal, tanpa tambahan device driver yang ikut dipanggil. Device driver yang dibutuhkan dapat
dipanggil kemudian secara eksplisit mau pun secara otomatis saat dibutuhkan.
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.
292Bab 8. Studi Kasus: GNU/Linux
8.2.14.2. Managemen Modul Kernel Linux
Managemen modul akan mengatur pemanggilan modul ke dalam memori dan berkomunikasi dengan bagian
lainnya dari kernel. Memanggil sebuah modul tidak hanya memasukkan isi binarinya ke dalam memori kernel,
namun juga harus dipastikan bahwa setiap rujukan yang dibuat oleh modul ke simbol kernel atau pun titik
masukan diperbaharui untuk menunjuk ke lokasi yang benar di alamat kernel. Linux membuat tabel simbol
internal di kernel. Tabel ini tidak memuat semua simbol yang didefinisikan di kernel saat kompilasi, namun
simbol-simbol tersebut harus diekspor secara eksplisit oleh kernel. Semua hal ini diperlukan untuk penanganan
rujukan yang dilakukan oleh modul terhadap simbol-simbol.
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.
Komponen managemen modul yang lain adalah peminta modul. Kernel mendefinisikan antarmuka komunikasi
yang dapat dihubungi oleh program managemen modul. Saat hubungan tercipta, kernel akan menginformasikan
proses managemen kapan pun sebuah proses meminta device driver, sistem berkas, atau layanan jaringan yang
belum terpanggil dan memberikan manajer kesempatan untuk memanggil layanan tersebut. Permintaan layanan
akan selesai saat modul telah terpanggil. Manajer proses akan memeriksa secara berkala apakah modul tersebut
masih digunakan, dan akan menghapusnya saat tidak diperlukan lagi.
8.2.14.3. 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
8.2.14.4. Resolusi Konflik
Keanekaragaman konfigurasi perangkat keras komputer serta driver yang mungkin terdapat pada sebuah
komputer pribadi telah menjadi suatu masalah tersendiri. Masalah pengaturan konfigurasi perangkat keras
tersebut menjadi semakin kompleks akibat dukungan terhadap device driver yang modular, karena device yang
aktif pada suatu saat bervariasi.
Linux menyediakan sebuah mekanisme penyelesaian masalah untuk membantu arbitrasi akses terhadap
perangkat keras tertentu. Tujuan mekanisme tersebut adalah untuk mencegah modul berebut akses terhadap
suatu perangkat keras, mencegah autoprobes mengusik keberadaan driver yang telah ada, menyelesaikan konflik
di antara sejumlah driver yang berusaha mengakses perangkat keras yang sama.
293Bab 8. Studi Kasus: GNU/Linux
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.
8.3. Proses dan Memori
8.3.1. Manajemen Proses
Pendahuluan
Setiap aplikasi yang dijalankan di linux mempunyai pengenal yang disebut sebagai process identification number
(PID). PID disimpan dalam 32 bit dengan angka berkisar dari 0-32767 untuk menjamin kompatibilitas dengan
unix. Dari nomor PID inilah linux dapat mengawasi dan mengatur proses-proses yang terjadi didalam system.
Proses yang dijalankan ataupun yang baru dibuat mempunyai struktur data yang disimpan di task_struct.
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_structdisimpan
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
penjadual.
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
Guna keperluan manajemen proses, kernel memelihara informasi tentang setiap proses di sebuah deskriptor
proses dengan tipe task_struct. Setiap deskriptor proses mengandung informasi antara lain status proses, ruang
alamat, daftar berkas yang dibuka, prioritas proses, dan sebagainya. Berikut gambaran isinya:
Contoh 8-1. Isi Deskriptor Proses
struct task_struct{
volatile long state;
/*-1 unrunnable,
0 runnable,
>0 stopped*/
unsigned long flags;
/* 1 untuk setiap flag proses */
294Bab 8. Studi Kasus: GNU/Linux
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
295Bab 8. Studi Kasus: GNU/Linux
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.
Proses dengan status task_interruptible dibagi ke dalam kelas-kelas yang terkait dengan suatu event tertentu.
Event yang dimaksud misalnya: waktu kadaluarsa, ketersediaan sumber daya. Untuk setiap event atau pun kelas
terdapat antrian tunggu yang terpisah. Proses akan diberi sinyal bangun ketika event yang ditunggunya terjadi.
Berikut contoh dari antrian tunggu tersebut:
Contoh 8-2. Antrian Tunggu
void sleep_on(struct wait_queue **wqptr) {
struct wait_queue wait;
current_state=TASK_UNINTERRUPTIBLE;
wait.task=current;
add_wait_queue(wqptr, &wait);
schedule();
remove_wait_queue(wqptr, &wait);
}
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
296Bab 8. Studi Kasus: GNU/Linux
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.
Proses dan Thread
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:
1. fn
fungsi yang akan dieksekusi oleh thread baru
2. arg
pointer ke data yang dibawa oleh fn
3. flags
sinyal yang dikirim ke induk ketika anak berakhir dan pembagian sumber daya antara anak dan induk.
4. child_stack
pointer stack untuk proses anak.
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:
297Bab 8. Studi Kasus: GNU/Linux
• memanggil alloc_task_struct() yang akan menyediakan tempat di memori dengan ukuran 8KB untuk
deskriptor proses dan stack modus kernel.
• memeriksa ketersediaan sumber daya untuk membuat proses baru.
• find_empty_procees() memanggil get_free_taskslot() untuk mencari sebuah slot di array task
untuk pointer ke deskriptor proses yang baru.
• memanggil copy_files/fm/sighand/mm() untuk menyalin sumber daya untuk anak, berdasarkan nilai
flags yang ditentukan clone().
• copy_thread() akan menginisialisasi stack kernel dari proses anak.
• mendapatkan PID baru untuk anak yang akan diberikan kembali ke induknya ketika do_fork() selesai.
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
Penjadualan
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.
Problem untuk kernel muncul karena berbagai tasksmungkin mencoba untuk mengakses struktur data internal
yang sama. Jika hanya satu kernel task ditengah pengaksesan struktur data ketika interupsi service routine
dieksekusi, maka service routine tidak dapat mengakses atau merubah data yang sama tanpa resiko mendapatkan
data yang rusak. Fakta ini berkaitan dengan ide dari critical section (Bagian 4.2).
Sehagai hasilnya, sinkronisasi kernel melibatkan lebih banyak dari hanya penjadualan proses saja. sebuah
framework dibutuhkan untuk memperbolehkan kernel’s critical sections berjalan tanpa diinterupsi oleh critical
section yang lain.
Solusi pertama yang diberikan oleh linux adalah membuat normal kernel code nonpreemptible (Bagian 3.2).
Biasanya, ketika sebuah timer interrupt diterima oleh kernel, membuat penjadualan proses, kemungkinan besar
akan menunda eksekusi proses yang sedang berjalan pada saat itu dan melanjutkan menjalankan proses yang
lain. Biar bagaimana pun, ketika timer interrupt diterima ketika sebuah proses mengeksekusi kernel-system
298Bab 8. Studi Kasus: GNU/Linux
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
• kernel code memanggil fungsi penjadualan sendiri
Interupsi adalah suatu masalah bila mengandung critical section-nya sendiri. Timer interrupt tidak secara
langsung menyebabkan terjadinya penjadualan ulang suatu proses; hanya meminta suatu jadual untuk dilakukan
kemudian, jadi kedatangan suatu interupsi tidak mempengaruhi urutan eksekusi dari noninterrupt kernel code.
Sekali interrupt serviceselesai, eksekusi akan menjadi lebih simpel untuk kembali ke kernel code yang sedang
dijalankan ketika interupsi mengambil alih.
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.
Untuk meniadakan interupsi terdapat sebuah pinalti. Pada arsitektur perangkat keras kebanyakan, pengadaan dan
peniadaan suatu interupsi adalah sesuatu yang mahal. Pada prakteknya, saat interupsi ditiadakan, semua I/O
ditunda, dan device yang menunggu untuk dilayani akan menunggu sampai interupsi diadakan kembali, sehingga
kinerja meningkat. Kernel Linux menggunakan synchronization architecture yang mengizinkan critical section
yang panjang dijalankan untuk seluruh durasinya tanpa mendapatkan peniadaan interupsi. Kemampuan secara
spesial berguna pada networking code: Sebuah interupsi pada network device driver dapat memberikan sinyal
kedatangan dari keseluruhan paket network, dimana akan menghasilkan code yang baik dieksekusi untuk
disassemble, route, dan forward paket ditengah interrupt service routine.
Linux mengimplementasikan arsitektur ini dengan memisahkan interrupt service routine menjadi dua seksi: the
top half dan the bottom half. The top half adalah interupsi yang normal, dan berjalan dengan rekursive interupt
ditiadakan (interupsi dengan prioritas yang lebih tinggi dapat menginterupsi routine, tetapi interupsi dengan
prioritas yang sama atau lebih rendah ditiadakan). The bottom half service routine berjalan dengan semua
interupsi diadakan, oleh miniatur penjadualan yang menjamin bahwa bottom halves tidak akan menginterupsi
dirinya sendiri. The bottom half scheduler dilakukan secara otomatis pada saat interupt service routine ada.
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
299Bab 8. Studi Kasus: GNU/Linux
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.
Arsitektur Top-half bottom-half komplit dengan mekanisme untuk meniadakan bottom halver yang dipilih ketika
dieksekusi secara normal, foreground kernel code. Kernel dapat meng-codekan critical section secara mudah
dengan mengunakan sistem ini: penanganan interupsi dapat meng-codekan critical section-nya sebagai bottom
halves, dan ketika foreground kernel ingin masuk ke critical section, setiap bottom halves ditiadakan untuk
mencegah critical section yang lain diinterupsi. Pada akhir dari critical section, kernel dapat kembali
mengadakan bottom halves dan menjalankan bottom half tasks yang telah di masukkan kedalam queue oleh top
half interrupt service routine pada saat critical section.
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
300Bab 8. Studi Kasus: GNU/Linux
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.
8.3.2. Manajemen Memori
Managemen Memori Fisik
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.
Dengan memori virtual kita dapat:
• Ruang alamat yang besar
Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya. Memori virtual bisa
beberapa kali lebih besar daripada memori fisiknya.
• Pembagian memori fisik yang adil
Managemen memori membuat pembagian yang adil dalam pengalokasian memori antara proses-proses.
301Bab 8. Studi Kasus: GNU/Linux
• Perlindungan
Memori managemen menjamin setiap proses dalam sistem terlindung dari proses-proses lainnya. Dengan
demikian, program yang crash tidak akan mempengaruhi proses lain dalam sistem tersebut.
• Penggunaan memori virtual bersama
Memori virtual mengizinkan dua buah proses berbagi memori diantara keduanya, contohnya dalam shared
library. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua program yang berbeda.
Memori Virtual
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.
Gambar 8-2. Pemetaan Memori Virtual ke Alamat Fisik. Sumber: . . .
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:
• Virtual PFN
• PFN fisik
• Informasi akses page dari page tersebut
302Bab 8. Studi Kasus: GNU/Linux
Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus menangani alamat virtual PFN
dan offsetnya di virtual page. CPU mencari tabel page proses dan mancari anggota yang sesuai degan virtual
PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil PFN fisik dan mengalikannya dengan
besar page untuk mendapat alamat basis page tersebut di dalam memori fisik. Terakhir, CPU menambahkan
offset ke instruksi atau data yang dibutuhkan. Dengan cara ini, memori virtual dapat dimap ke page fisik dengan
urutan yang teracak.
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.
Pengaksesan Memori Virtual Bersama
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.
303Bab 8. Studi Kasus: GNU/Linux
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:
• 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.
• 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.
• 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.
Load dan Eksekusi Program
1. Penempatan program dalam memori
Linux membuat tabel-tabel fungsi untuk loading program, memberikan kesempatan kepada setiap fungsi
untuk meload file yang diberikan saat sistem call exec dijalankan. Pertama-tama file binari dari page
ditempatkan pada memori virtual. Hanya pada saat program mencoba mengakses page yang telah diberikan
terjadi page fault, maka page akan diload ke memori fisik.
2. Linking statis dan linking dinamis
a. Linking statis:
librari-librari yang digunakan oleh program ditaruh secara langsung dalam file binari yang dapat
dieksekusi. Kerugian dari linking statis adalah setiap program harus mengandung kopi library sistem
yang umum.
304Bab 8. Studi Kasus: GNU/Linux
b. Linking dinamis:
hanya sekali meload librari sistem menuju memori. Linking dinamis lebih efisien dalam hal memori
fisik dan ruang disk.
8.4. Sistem Berkas dan I/O Linux
8.4.1. Sistem Berkas Linux
Sistem Berkas Virtual
Objek dasar dalam layer-layer virtual file system
1. File
File adalah sesuatu yang dapat dibaca dan ditulis. File ditempatkan pada memori. Penempatan 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. File sistem mempunyai
beberapa karakteristik yang mencakup seluruh inode dalam file sistem. Salah satu yang terpenting adalah
blocksize.
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
305Bab 8. Studi Kasus: GNU/Linux
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. Perubahan pada cache melibatkan penambahan dan
penghapusan entri-entri dari cache itu sendiri. Entri-entri yang tidak dibutuhkan lagi akan di unhash sehingga
tidak akan tampak dalam pencarian berikutnya. Operasi diperkirakan akan mengubah struktur cache harus
dikunci selama melakukan perubahan. Unhash tidak memerlukan semaphore karena ini bisa dilakukan secara
atomik dalam kernel lock. Banyak operasi file memerlukan 2 langkah proses. Yang pertama adalah melakukan
pencarian nama di dalam direktori. Langkah kedua adalah melakukan operasi pada file yang telah ditemukan.
Untuk menjamin tidak terdapatnya proses yang tidak kompatibel diantara kedua proses itu, setelah proses kedua,
virtual file sistem protokol harus memeriksa bahwa parent entry tetap menjadi parent dari entri childnya. Yang
menarik dari cache locking adalah proses rename, karena mengubah 2 entri dalam sekali operasi.
Gambar 8-3. Struktur Sistem Berkas EXT2. Sumber: . . .
Sistem Berkas Linux
1. Sistem Berkas EXT2
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. EXT2 mendefinisikan topologi file sistem dengan memberikan arti bahwa setiap file
pada sistem diasosiasiakan dengan struktur data inode. Sebuah inode menunjukkan blok mana dalam suatu
file tentang hak akses setiap file, waktu modifikasi file, dan tipe file. Setiap file dalam EXT2 file sistem
terdiri dari inode tunggal dan setiap inode mempunyai nomor identifikasi yang unik. Inode-inode file sistem
306Bab 8. Studi Kasus: GNU/Linux
disimpan dalam tabel inode. Direktori dalam EXT2 file sistem adalah file khusus yang mengandung pointer
ke inode masing-masing isi direktori tersebut.
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.
2. Sistem Berkas EXT3
EXT3 adalah peningkatan dari EXT2 file sistem. Peningkatan ini memiliki beberapa keuntungan,
diantaranya:
Gambar 8-4. Inode Sistem Berkas EXT2. Sumber: . . .
Setelah kegagalan sumber daya, "unclean shutdown", atau kerusakan sistem, EXT2 file sistem harus melalui
proses pengecekan dengan program e2fsck. Proses ini dapat membuang waktu sehingga proses booting
menjadi sangat lama, khususnya untuk disk besar yang mengandung banyak sekali data. Dalam proses ini,
semua data tidak dapat diakses. 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.
307Bab 8. Studi Kasus: GNU/Linux
Integritas data. EXT3 menjamin adanya integritas data setelah terjadi kerusakan atau "unclean shutdown".
EXT3 memungkinkan kita memilih jenis dan tipe proteksi dari data.
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.
Mudah dilakukan migrasi. Kita dapat berpindah dari EXT2 ke sistem EXT3 tanpa melakukan format ulang.
3. Sistem Berkas Reiser
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.
4. 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.
5. Sistem Berkas Proc
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.
6. Sistem Berkas Web (Web File System)
Sistem Berkas Web (WFS) adalah sistem berkas Linux baru yang menyediakan sebuah sistem berkas seperti
antarmuka untuk World Wide Web. Sistem ini dibangun sebagai modul kernel untuk Linux Kernel 2.2.1, dan
meng-utilisasi proses level user (web daemon) untuk melayani permintaan pengambilan dokumen HTTP.
Sistem berkas ini menyediakan fasilitas caching untuk dokumen remote, dan dapat memproses
permintaan-permintaan terkenal multiple secara konkuren. Ketika suatu dokumen remote diambil, isi yang
berada dalam hyperlink dalam dokumen tersebut diekstrak dan dipetakan kedalam sistem berkas local.
Informasi ini direktori remote ini dibuat untuk setiap direktori yang diatur oleh WFS dalam sebuah file
khusus. Utility lsw digunakan untuk daftar dan mengatur ini direktori remote. Partisi yang diatur WFS
bersifat read-only bagi client WFS. Namun client dapat menyegarkan entri dari partisi WFS dengan
menggunakan utility khusus rwm. Suatu studi unjuk kerja memperlihatkan bahwa WFS lebih kurang 30%
lebih lambat daripada AFS untuk penelusuran akses berkas yang berisi 100% cache miss. Unjuk kerja yang
lebih rendah ini kemungkinan karena antara lain jumlah proses yang lebih besar dilakukan dalam proses
user dalam WFS, dan karena penggunaan general HTTP library untuk pengambilan dokumen.
7. Sistem Berkas Transparent Cryptographic (TCFS)
308Bab 8. Studi Kasus: GNU/Linux
TCFS adalah sebuah sistem berkas terdistribusi. Sistem ini mengizinkan akses berkas sensitif yang disimpan
dalam sebuah server remote dengan cara yang aman. Sistem ini mengatasi eavesdropping dan data
tampering baik pada server maupun pada jaringan dengan menggunakan enkripsi dan message digest.
Aplikasi mengakses data pada sistem berkas TCFS ini menggunakan system call regular untuk mendapatkan
transparency yang lengkap bagi pengguna.
8. Sistem Berkas Steganographic
Sistem Berkas Cryptographic menyediakan sedikit perlindungan terhadap instrumen-instrumen legal
ataupun ilegal yang memaksa pemilik data untuk melepaskan kunci deskripsinya demi data yang disimpan
saat hadirnya data terenkripsi dalam sebuah komputer yang terinfeksi. Sistem Berkas Cryptographic dapat
diperluas untuk menyediakan perlindungan tambahan untuk scenario di atas dan telah diperluas sistem
berkas Linux (ext2fs) dengan sebuah fungsi enkripsi yang plausible-deniability. Walaupun nyata bahwa
komputer kita mempunyai software enkripsi hardisk yang sudah terinstal dan mungkin berisi beberapa data
terenkripsi, sebiah inspector tetap akan dapat untuk menentukan apakah kita memberikan kunci akses
kepada semua level keamanan atau terbatas. Implementasi ini disebut sistem berkas Steganographic.
Pembagian Sistem Berkas Secara Ortogonal
Shareable dan Unshareable
1. Shareable. Isinya dapat dishare (digunakan bersama) dengan sistem lain, gunanya untuk menghemat tempat.
2. Unshareable. Isinya tidak dapat dishare(digunakan bersama) dengan sistem lain, biasanya untuk alasan
keamanan.
Variabel dan Statik
1. Variabel. Isinya sering berubah-ubah.
2. Statik. Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah jika ada campur tangan sistem
admin.
8.4.2. I/O Linux
Salah satu tujuan OS adalah menyembunyikan kerumitan device hardware dari sistem penggunanya. Contohnya,
Sistem Berkas Virtual menyamakan tampilan sistem berkas yang dimount tanpa memperdulikan devices fisik
yang berada di bawahnya. Bab ini akan menjelaskan bagaimana kernel Linux mengatur device fisik di sistem.
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
309Bab 8. Studi Kasus: GNU/Linux
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.
8.4.2.1. Device Karakter
Gambar 8-5. CharDev. Sumber: . . .
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.
Setiap entry di vektor chrdevs, sebuah struk data device_struct, mengandung dua elemen: sebuah penunjuk nama
dari driver devices yang terdaftar dan sebuah penunjuk ke operasi-operasi berkas seperti buka, baca, tulis, dan
tutup. Isi dari /proc/devices untuk devices karakter diambil dari vektor chrdevs.
Saat sebuah berkas khusus karakter yang merepresentasikan sebuah devices karakter (contohnya /dev/cua0)
dibuka, kernelnya harus mengatur beberapa hal sehingga routine operasi berkas yang benar dari driver devices
karakter akan terpanggil.
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
310Bab 8. Studi Kasus: GNU/Linux
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.
8.4.2.2. 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.
Setiap driver device blok harus menyediakan sebuah interface ke cache buffernya, demikian pula interface
operasi umum berkas. Setiap driver device blok mengisi entrynya di vektor blk_dev dari struk data
blk_dev_struct. Indeksnya ke vektor ini, lagi-lagi, nomor utama devicenya. Struk data blk_dev_struct
mengandung alamat routine permintaan dan sebuah penunjuk ke sekumpulan struk data request,yang
masing-masingnya merepresentasikan sebuah request dari cache buffernya untuk driver untuk membaca atau
menulis atau menulis satu blok data.
311Bab 8. Studi Kasus: GNU/Linux
Gambar 8-6. Buffer. Sumber: . . .
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.
Sekali driver device telah menyelesaikan sebuah request, ia harus membuang setiap stuk buffer_request dari
struk requestnya, kemudian mencapnya up to date dan membuka kuncinya. Pembukaan kunci buffer_head akan
membangunkan proses apa pun yang tidur akibat menunggu operasi blok selesai. Contoh dari kasus ini misalnya
dimana sebuah nama berkas sedang ditangani dan sistem berkas EXT2 harus membaca blok data yang
mengandung entry direktori EXT2 berikutnya dari device blok yang menyimpan sistem berkas tersebut. Proses
ini tidur di buffer_head yang akan mengandung entri direktorinya sampai driver devicenya membangunkannya.
Struk data request tersebut ditandai bebas sehingga ia dapat digunakan di request blok lainnya.
8.4.2.3. Device Jaringan
Device jaringan merupakan sebuah entity yang mengirimkan dan menerima paket-paket data. Biasanya ia
merupakan device fisik seperti kartu ethernet. Beberapa devices jaringan bagaimana pun hanyalah software,
seperti device loopback yang digunakan untuk mengirimkan data ke Anda. Setiap device direpresentasikan
dengan struk data device. Driver device jaringan mendaftarkan device-device yang ia kontrol pada Linux selama
inisialisasi jaringan yaitu saat kernel melakukan booting. Struk data device tersebut berisi informasi mengenai
device dan alamat fungsi-fungsi yang memungkinkan bermacam-macam protokol jaringan menggunakan
layanan dari device tersebut. Fungsi-fungsi ini kebanyakan terkait dengan mentransmisikan data dengan
312Bab 8. Studi Kasus: GNU/Linux
menggunakan device jaringan. Device tersebut menggunakan mekanisme pendukung jaringan standar untuk
melewatkan data yang diterima sampai ke lapisan protokol yang semestinya. Semua data jaringan atau paket
yang ditransmisikan dan diterima, direpresentasikan dengan struk-struk data sk_buff. Struk-struk data yang
bersifat fleksibel ini memungkinkan header-header protokol jaringan menjadi mudah ditambahkan dan dibuang.
Bagian ini hanya memfokuskan pada struk data device serta bagaimana jaringan ditemukan dan diinsialisasi.
Struk data device ini mengandung informasi tentang device jaringan:
8.4.2.3.1. 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.
Beberapa device jaringan yang umum adalah
• /dev/ethN Device ethernet
• /dev/slN Device SLIP
• /dev/pppN Device PPP
• /dev/lo Device Loopback
8.4.2.3.2. 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.
8.4.2.3.3. Flags Interface
Hal-hal berikut ini akan menjelaskan karakteristik dan kemampuan dari device jaringan:
• IFF_UP Interface bangkit dan berjalan,
• IFF_BROADCAST Alamat broadcast di device adalah sah
• IFF_DEBUG Penghilangan error dinyalakan
• IFF_LOOPBACK Merupakan device loopback
• IFF_POINTTOPOINT Merupakan link point to point (SLIP dan PPP)
• IFF_NOTRAILERS Tidak ada pengangkut jaringan
• IFF_RUNNING Sumberdaya yang dialokasikan
• IFF_NOARP Tidak mendukung protokol ARP
• IFF_PROMISC Device di mode penerimaan acak, ia akan menerima semua paket tanpa memperdulikan
kemana paket-paket ini dialamatkan
• IFF_ALLMULTI Menerima seluruh frame multicast IP
• IFF_MULTICAST Dapat menerima frame multicast IP
313Bab 8. Studi Kasus: GNU/Linux
8.4.2.3.4. Informasi Protokol
Setiap device menjelaskan bagaimana ia digunakan oleh lapisan protokol jaringan.
8.4.2.3.5. MTU
Ukuran paket terbesar yang jaringan dapat kirim, tidak termasuk header lapisan link yang ia perlu tambahkan.
8.4.2.3.6. 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.
8.4.2.3.7. 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.
8.4.2.3.8. Alamat
Struk data device tersebut memiliki sejumlah alamat yang relevan bagi device jaringan ini, termasuk
alamat-alamat IP-nya.
8.4.2.3.9. Antrian Paket
Merupakan antrian paket-paket sk_buff yang antri menunggu untuk dikirmkan lewat device jaringan ini.
8.4.2.3.10. Fungsi Pendukung
Setiap device menyediakan seperangkat routine standar yang lapisan-lapisan protokol sebut sebagai bagian dari
interface mereka ke lapisan link device ini. Hal ini termasuk pembuatannya dan routine-routine pengirim frame
dan routine-routine penambah header standar dan pengumpul statistik. Statistik ini bisa dilihat dengan memakai
perintah ifconfig.
8.5. Rangkuman
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
314Bab 8. Studi Kasus: GNU/Linux
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.
Linux adalah sebuah sistem operasi yang sangat mirip dengan sistem-sistem UNIX, karena memang tujuan
utama desain dari proyek Linux adalah UNIX compatible. Sejarah Linux dimulai pada tahun 1991, ketika
mahasiswa Universitas Helsinki, Finlandia bernama Linus Benedict Torvalds menulis Linux, sebuah kernel
untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU intel yang cocok untuk PC. Dalam
rancangan keseluruhan, Linux menyerupai implementasi UNIX nonmicrokernel yang lain. Ia adalah sistem yang
multiuser, multitasking dengan seperangkat lengkap alat-alat yang compatible dengan UNIX. 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.
Setiap aplikasi yang dijalankan di linux mempunyai pengenal yang disebut sebagai process identification number
(PID). PID disimpan dalam 32 bit dengan angka berkisar dari 0-32767 untuk menjamin kompatibilitas dengan
unix. Dari nomor PID inilah linux dapat mengawasi dan mengatur proses-proses yang terjadi didalam system.
Proses yang dijalankan ataupun yang baru dibuat mempunyai struktur data yang disimpan di task_struct. 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
penjadual.
Objek-objek yang terdapat di sistem berkas linux antara lain file, inode, file sistem dan nama inode. Sedangkan
macam-macam sistem berkas linux antar lain : ext2fs, ext3fs, reiser, x, proc dan tiga tambahan : sistem berkas
web, sistem berkas transparent cryptographic dan sistem berkas steganographic
Salah satu tujuan OS adalah menyembunyikan kerumitan device hardware dari sistem penggunanya. Contohnya,
Sistem Berkas Virtual menyamakan tampilan sistem berkas yang dimount tanpa memperdulikan devices fisik
yang berada di bawahnya. Bab ini akan menjelaskan bagaimana kernel Linux mengatur device fisik di sistem.
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.
315Bab 8. Studi Kasus: GNU/Linux
8.6. Latihan
1. Jelaskan perbedaan antara proses dan thread di Linux!
2. Apa keuntungan reiser file sistem dibandingkan dengan file sistem lain?
3. Apakah perbedaan shareable dan unshareable di dalam file sistem?
4. Mengapa file sistem ext3 membutuhkan waktu recovery yang lebih sedikit daripada file sistem ext2 setelah
terjadi "unclean shutdown"?
5. Jelaskan pengertian proc file sistem!
6. Jelaskan pengertian page!
7. Apakah perbedaan linking statis dan linking dinamis?
8. Sebutkan empat keuntungan menguunakan memori virtual!
9. Sebutkan beberapa cache dalam manajemen memori di linux!
10. Jelaskan pengertian dari demand paging!
11. Siapakah penemu Linux?
12. Jabarkan fitur dan keunggulan/kekurangan dari kernel Linux v0.01, v1.0, v2.0.
13. Jelaskan perbedaan antara kernel Linux dan sistem Linux.
14. Sebutkan tiga komponen utama sistem Linux. Jelaskan.
15. Sebutkan dua distribusi Linux dari Jerman.
16. Apakah kelebihan dan kekurangan protokol IPX, TCP/IP, dan UDP?
17. Bagaimanakah cara kerja protokol TCP/IP?
8.7. Rujukan
Abraham Silberschatz, Peter Galvin dan Greg Gagne: Operating System Concepts -- Sixth Editon, John
Wiley&Son, 2003
William Stallings: Operating Systems, 4th Edition, Prentice Hall, 2001
Andrew S. Tanenbaum: Modern Operating Systems, 2nd Edition, Prentice Hall, 2001
316Bab 9. Rujukan
Berikut merupakan rangkuman dari semua rujukan yang digunakan di buku ini:
[AU]
http://www.atnf.csiro.au/people/rgooch/linux/docs/vfs.txt
http://infocom.cqu.edu.au/Courses/aut2001/85349/Resources/Study_Guide/10.pdf
[COM]
http://www.javaworld.com/javaworld/jw-04-1996/jw-04-threads.html
http://cwx.prenhall.com/bookbind/pubbooks/tanenbaum/chapter0/deluxe.html
http://support.sitescape.com/forum/support/dispatch.cgi/_help/showHelp/page/help/en/webfiles_tabs/share_files.html
[EDU]
http://www.cs.jhu.edu/~yairamir/cs418/os5/
http://allan.ultra.nyu.edu/~gottlieb/courses/1999-00-spring/os/lecture-11.html
http://www.cs.princeton.edu/courses/archive/spring02/cs217/lectures/paging.pdf
http://people.cs.uchicago.edu/~mark/51081/LabFAQ/lab5/IPC.html
http://www.ncsa.uiuc.edu/UserInfo/Resources/Hardware/IBMp690/IBM/usr/share/man/info/en_US/a_doc_lib/aixbman/admnconc/mount_overview.htm
http://www.cs.utah.edu/classes/cs5460/lectures/lecture19-2up.pdf
http://css.uni.edu
http://vip.cs.utsa.edu/nsf/pubs/starving/starving.pdf
http://www.cs.wisc.edu/~solomon/cs537/paging.html
[ID]
http://telaga.cs.ui.ac.id/WebKuliah/sisdis2003/ -- Website Kuliah Sistem Terdistribusi Fasilkom UI
[NZ]
http://www-ist.massey.ac.nz/csnotes/355/lectures/monitors.pdf
[ORG]
http://linas.org/linux/threads-faq.html
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/ BUKU/SistemOperasi/x395.html
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/
Bibliografi
[KennethRosen1999] Kenneth H. Rosen, 1999, Discrete Mathematics and Its Application, McGraw Hill.
[Morgan1992] K Morgan, “The RTOS Difference”, Byte, August 1992.
[Samik2004a] Rahmat M Samik-Ibrahim, 2002-2004, IKI-20230 Sistem Operasi - Kumpulan Soal Ujian
2002-2004: http://rms46.vlsm.org/1/94.sxw, vLSM.org, Pamulang.
[Silberschatz2000] Avi Silberschatz, Peter Galvin, dan Grag Gagne, 2000, Applied Operating Systems: First
Edition, Edisi Pertama, John Wiley & Sons.
317Bab 9. Rujukan
[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne, 2002, Applied Operating Systems,
Sixth Edition, John Wiley & Sons.
[Stallings2001] William Stallings, 2001, Operating Systems: Internal and Design Principles: Fourth Edition,
Edisi Keempat, Prentice-Hall International.
[Tanenbaum1992] Andrew S Tanenbaum, 1992, Modern Operating Systems, First Edition, Prentice-Hall,
Engewood Cliff.
[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull, 1997, Operating Systems Design and
Implementation, Second Edition, Prentice-Hall.
[Tanenbaum2001] Andrew S Tanenbaum, 2001, Modern Operating Systems, Second Edition, Prentice-Hall.
[X] X X X, X, X: X, X, X, X.
318Lampiran A. GNU Free Documentation License
Version 1.1, March 2000
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.
A.1. PREAMBLE
The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of
freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either
commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for modifications made by others.
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.
A.2. APPLICABILITY AND DEFINITIONS
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.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively
with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to
related matters) and contains nothing that could fall directly within that overall subject. (For example, if the
Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The
relationship could be a matter of historical connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those 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".
319Lampiran A. GNU Free Documentation License
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format,
LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML
designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read
and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML produced by some word processors for output
purposes only.
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.
A.3. 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.
A.4. 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.
320Lampiran A. GNU Free Documentation License
A.5. 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.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the
modifications in the Modified Version, together with at least five of the principal authors of the Document
(all of its principal authors, if it has less than five).
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public permission to use the
Modified Version under the terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the
Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the Title Page. If there is 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.
K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title, and preserve in
the section all the substance and tone of each of the contributor acknowledgements and/or dedications given
therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section
numbers or the equivalent are not considered part of the section titles.
M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and
contain no material copied from the Document, you may at your option designate some or all of these sections as
invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice.
These titles must be distinct from any other section titles.
You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified
Version by various parties–for example, statements of peer review or that the text has been approved by an
organization as the authoritative definition of a standard.
321Lampiran A. GNU Free Documentation License
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a
Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover
Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the
Document already includes a cover text for the same cover, previously added by you or by arrangement made by
the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on
explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for
publicity for or to assert or imply endorsement of any Modified Version.
A.6. 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."
A.7. 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.
A.8. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or works, in or
on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the
Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an
"aggregate", and this License does not apply to the other self-contained works thus compiled with the Document,
on account of their being thus compiled, if they are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is
less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed on covers that surround
only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
322Lampiran A. GNU Free Documentation License
A.9. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the
terms of section 4. Replacing Invariant Sections with translations requires special permission from their
copyright holders, but you may include translations of some or all Invariant Sections in addition to the original
versions of these Invariant Sections. You may include a translation of this License provided that you also include
the original English version of this License. In case of a disagreement between the translation and the original
English version of this License, the original English version will prevail.
A.10. 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.
A.11. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from
time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address
new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular
numbered version of this License "or any later version" applies to it, you have the option of following the terms
and conditions either of that specified version or of any later version that has been published (not as a draft) by
the Free Software Foundation. If the Document does not specify a version number of this License, you may
choose any version ever published (not as a draft) by the Free Software Foundation.
A.12. How to use this License for your documents
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:
Copyright © YEAR YOUR NAME.
Permission is granted to copy, distribute and/ or modify this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being
LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of
the license is included in the section entitled "GNU Free Documentation License".
If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant.
If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST";
likewise for Back-Cover Texts.
If your document contains nontrivial examples of program code, we recommend releasing these examples in
parallel under your choice of free software license, such as the GNU General Public License, to permit their use
in free software.
323Indeks
Mutual Exclusion
Arti Bebas, 92
Race Condition
Solusi, 92
Alamat
Fisik, 164
Frame, 164
Logik, 34
Logis, 164
Virtual, 37
Algoritma
Algoritma Bankir, 128
Alokasi Fixed Alocation
Equal Allocation, 189
Proportional Allocation, 189
Anomali Belady, 185
Antrian, 184
Bit Modifikasi, 187
Circular Queue, 187
Counting, 188
Elevator, 263
FIFO, 184
Frame, 184
Halaman, 184
Kesalahan Halaman, 184
Pemindahan Halaman, 184
Least Recently Used, 186
NFU, 187
NRU, 187
Optimal, 185
Page Buffering
Frame, 189
Halaman, 189
Pool, 189
Penjadualan, 158, 267
Perkiraan LRU, 187
Second-Chance, 187
Alokasi Frame
Kesalahan Halaman, 189
Penghalamanan, 189
Pergantian Halaman, 189
Permintaan Halaman, 189
Alokasi Global Lawan Lokal
Alokasi Global, 189
Alokasi Lokal, 189
Pergantian Global, 189
Pergantian Lokal, 189
Throughput, 189
Alokasi Memori
Berkesinambungan, 160
Fragmentasi, 160
Proteksi Memori, 160
Tidak Berkesinambungan, 160
Anomali
Anomali Belady, 184
Antarmuka, 32
Aplikasi, 278
Standar, 37
Arsitektur Segmentasi
Alamat Logis, 169
Base, 169
Limit, 169
Nomor Segmen, 169
Panjang Segmen, 169
Aspek Permintaan Halaman
Memori Virtual, 179
Pembuatan Proses, 179
Sistem Permintaan Halaman, 179
Atmel ARM, 98
Backup
Restore, 241
Bahasa
Assembly, 31
Pemrograman, 31
Berkas, 25, 30, 31, 202
Atribut, 202
Jenis, 202, 203
Operasi, 203
Shareable, 223
Static, 223
Struktur, 204
Unshareable, 223
Variable, 223
Binary Semaphore, 102
Block
Bad, 268
Boot, 268
Blok, 37
Buffer, 58
Bounded Buffer, 61
Unbounded Buffer, 61
Buffering, 53, 253
Bounded Buffer, 53
Buffer, 53
Unbounded Buffer , 53
Cache, 254
Perbedaan Dengan Buffer, 254
Cancellation
Asynchronous Cancellation, 71
Defered Cancellation, 71
Client, 64
324Command Interpreter, 29
Shell, 26
Compile, 38
Console, 33
Context Switch, 51
Copy Semantics, 254
Copy-On-Write
Halaman Copy-On-Write, 179
Halaman Zero-Fill-On, 179
Proses Anak, 179
Proses Induk, 179
Sistem Pemanggilan Exec(), 179
Sistem Pemanggilan Fork(), 179
Zero-Fill-On-Demand, 179
Counting Semaphore, 102
Critical Section
Problema
Syarat Solusi Masalah, 92
Solusi
Algoritma Solusi Masalah, 93
Data, 25, 26
Deadlock, 122
Debug, 37
Demand Paging
Paging
Halaman (Page), 176
Device
Driver, 32
Kompleksitas, 259
Direct Virtual-Memory Access, 250
Direktori, 25
CP/M, 221
MS-DOS, 221
Operasi, 205
Struktur, 206
Asiklik, 207
Dua Tingkat, 206
Satu Tingkat, 206
Single Level, 206
Tree, 207
Two Level, 206
Umum, 207
UNIX, 222
Disk, 26
Floppy, 276
Format, 268
Kaitan, 273
Managemen, 260, 268
Raw, 268
Struktur, 260
WORM, 277
Djikstra, 100
DMA
Cara Implementasi, 250
Channel, 313
Definisi, 249
Handshaking, 249
Transfer, 249
Drum, 37
Effective Access Time, 178
Eksekusi, 27
Error, 27
Error Handling, 255
File, 202
Flag pada Thread di Linux
Tabel Fungsi Flag, 74
FTP
DFS
WWW, 211
Garbage-Collection Scheme, 207
Graf
Graf Alokasi Sumber Daya
Graf Tunggu, 129
Hirarki
/usr, 226
/var, 229
I/O, 25, 27
Aplikasi Antarmuka, 250
Blocking, 252
Efisiensi, 259
I/O Blok, 251
I/O Jaringan, 251
Jam Dan Timer, 252
Kinerja, 258
Nonblocking, 252
Penjadualan, 252
Subsistem Kernel, 252
I/O Stream
Definisi, 257
Identifier
Eksternal, 37
Internal, 37
Implementasi
Direktori, 220
Sistem Berkas, 217
Informasi, 30
Instruksi Atomik, 100
Interface
Pengguna, 37
Interupsi, 248
Interrupt Vector Dan Interrupt Chaining, 248
Mekanisme Dasar, 248
Penyebab, 248
Rutin Penanganan, 37
325IPC
Send/Recives, 58
IRQ, 313
Jaringan, 26
Ethernet, 313
Struktur, 20
Java RMI, 66
Kebijakan, 39
Kernel, 32, 37
Kernel Linux
Deskriptor Proses, 296
Komponen Modul, 292
Managemen Modul, 293
Modul, 292
Pemanggilan Modul, 293
Kesalahan Halaman
Ambil (Fetch), 177
Bit Validasi, 177
Dekode, 177
Free-Frame, 177
Illegal Address Trap, 177
Interrupt Handler, 164
Page-Fault Trap, 164
Terminasi, 177
Tidak Valid, 177
Kinerja
Efisiensi, 239
Komputasi, 27
Komunikasi, 26, 27, 30, 31, 37, 37
Langsung, 58
Konsep Dasar
Algoritma Pemindahan Halaman, 182
Bit Tambahan, 182
Disk, 182
Frame, 182
Frame Yang Kosong, 182
Kesalahan Halaman, 182
Memori, 182
Memori Fisik, 182
Memori Logis, 182
Memori Virtual, 182
Overhead, 182
Pemindahan Halaman, 182
Perangkat Keras, 182
Permintaan Halaman, 182
Proses, 182
Proses Pengguna, 182
Ruang Pertukaran, 182
Rutinitas, 182
String Acuan, 182
Tabel, 182
Waktu Akses Efektif, 182
Konsep Dasar Pemindahan Halaman
Kesalahan Halaman, 181
Pemindahan Halaman, 181
Permintaan Halaman, 181
Throughput, 181
Utilisasi CPU, 181
Kontrol proses, 30
Kooperatif, 56
Lapisan, 31
I/O, 37
Managemen Memori, 37
Penjadual CPU, 37
Layanan, 37
Level, 37
Linear List
Hash Table, 220
Linking Dinamis, 304
Linking Statis, 304
Linux
Tux, 290
Load Device Drivers, 256
Loading, 31
Loopback, 313
Mailbox, 59
Mainframe, 246
Managemen
Berkas, 25
Memori
Utama, 25
Penyimpanan Sekunder, 26
Proses, 24
Sistem
I/O, 25
Managemen Memori, 173
Masalah dalam Segmentasi
Fragmentasi, 170
Masalah Dining Philosophers, 117
Masalah Readers/Writers, 109
Solusi: Prioritas bergantian, 117
Solusi: Prioritas Pembaca, 110
Solusi: Prioritas Penulis, 114
Mekanisme, 39
Memori, 25, 26
Gambaran Memori, 158
I/O
Buffer, 158
Managemen Memori, 154
Pengguna, 158
Program Counter, 154
Ready Queue, 158
Share, 27
Shared, 30
326Memori Virtual
Byte, 173
Memory Synchronous, 99
Memory-Mapped Files
Akses Memori Rutin, 180
Berkas I/O, 180
Disk, 180
Memori Virtual, 180
Pemetaan Memori, 180
Sistem Pemanggilan Read(), 180
Sistem Pemanggilan Write, 180
Mesin Virtual
Mesin Virtual Java, 38
Perangkat Lunak, 38
Message Passing, 27, 30, 37
Message-Passing, 255
Metode
Akses, 204
Mikrokernel, 31, 37
Mirroring, 270
Motherboard, 246
Mount
Umount
Mount Point, 208
Mount Point, 209
Multi-tasking, 30
Multiprogramming
Swap-In, 175
Swap-Out, 175
Multiprosesor, 82
Mutual Eksklusif, 125
Nama Berkas
Komponen, 222
NFS, 210
On Disk
In Memory, 217
Overlays
Assembler, 156
Two-pass Assembler, 156
Owner
Group, 210
Universe, 212
Page Cache
Disk Cache
Buffer Cache, 239
Page Fault
Tidak Valid, 176
Valid, 176
Paralelisme, 271
Paritas, 270
Blok Interleaved, 271
Partisi
Mounting, 218
Path
Mutlak, 207
Relatif, 207
Pemanggilan Dinamis
Disk, 155
Linkage Loader, 155
Routine, 155
Pemberian Alamat, 158
Antrian Masukan, 154
Pengikatan Alamat
Waktu Eksekusi, 154
Waktu Pemanggilan, 154
Waktu Pembuatan, 154
Waktu Eksekusi, 158
Waktu Pemanggilan, 158
Waktu Pembuatan, 158
Pemberian Halaman
Alamat
Index, 162
Nomor Halaman, 162
Dukungan Perangkat Keras, 162
Keuntungan dan Kerugian, 162
Metode Dasar, 162
Penerjemahan Halaman, 162
Proteksi, 162
Penamaan, 58
Penanganan Sinyal
Penerima Sinyal, 72
Pola Penanganan Sinyal, 72
Pengecekan Rutin
Restore
Backup, 241
Pengendali
Perangkat, 246
Penghubungan Dinamis
Perpustakaan Bersama, 156
Penjadualan
C-LOOK, 266
C-SCAN, 264
First-Come-First-Serve, 261
SCAN, 263
Shortest-Seek-Time-First, 262
Penjadualan Disk, 261
Disk Bandwith, 261
System Call, 261
Penjadualan LOOK, 265
Penjadualan proses, 47
Penukaran
Penyimpanan Sementara, 158
Roll Out, Roll In, 158
Penyimpanan
327Implementasi Stabil, 275
Penyimpanan Sekunder, 26, 37
Perangkat
Keras, 37
Perangkat I/O
Jenis-Jenis, 246
Klasifikasi Umum, 246
Prinsip-Prinsip, 246
Perangkat Keras
Memori Sekunder, 179
Tabel Halaman, 179
Perangkat Komputer
Konsep Dasar, 1
Perangkat Aplikasi, 1
Perangkat Keras, 1
Perangkat Lunak Bebas, 283
Perangkat Penyimpanan Tersier
Kerr Effect, 276
Magneto-Optic Disk, 276
MEMS, 278
Optical Disk, 277
Penyimpanan Holographic, 278
Phase-Change Disk, 277
WORM, 277
Peranti, 27, 30
Persyaratan /usr
Direktori, 226
Persyaratan /var
Direktori, 229
Pertimbangan Lain
Contoh Dalam Sistem Operasi
Linux, 194
Solaris 2, 194
Windows NT, 194
I/O Interlock, 194
Jangkauan TLB
Hit Ratio, 194
Prepaging, 194
Struktur Program
Jumlah Referensi, 194
Kecepatan Pencarian, 194
Lokalitas, 194
Tabel Halaman Yang Dibalik, 194
Ukuran Halaman, 194
waktu latensi, 194
Waktu Pencarian, 194
Waktu Transfer, 194
Working Set, 194
Politisi Busuk, 1
Polling, 247
PPP, 313
Prioritas, 82
Procedural Programming, 65
Process Control Block, 44
Processor Synchronous, 98
Produsen Konsumen, 56
Proses, 24
Client/Server, 56
Definisi, 42
Kooperatif
Kecepatan Komputasi, 53
Kenyamanan, 53
Modularitas, 53
Pembagian Informasi, 53
Sinkronisasi, 37
Proteksi, 27
Proteksi Hardware
Dual Mode Operation
Monitor/Kernel/System Mode, 17
User Mode, 17
IO Protection, 18
Proteksi Perangkat Keras
Proteksi CPU, 19
Proteksi Memori, 18
Queue Scheduling
Device Queue, 47
Job Queue, 47
Ready Queue, 47
RAID
Level, 271
Struktur, 270
Redundansi, 270
Remote Registry, 66
Restart Instruction
Microcode, 178
Ragam Pengalamatan Spesial, 178
Status Register Spesial, 178
Temporary Register, 178
RPC, 65
Ruang Alamat
Alamat Fisik, 154
Alamat Logika, 154
Memory Management Unit, 154
Register, 154
Saling Berbagi dan Proteksi
Bit-proteksi, 170
Scheduler
CPU Scheduler, 49
Job Scheduler, 49
Long-term Scheduler, 49
Medium-term Scheduler, 49
Short-term Scheduler, 49
Segmentasi
Offset, 169
328Segmen, 169
Unit Logis, 169
Segmentasi dengan Pemberian Halaman
Pemberian Halaman, 171
Semafor, 100
Server, 64
Klien, 211
Shadowing, 270
Signal, 101
Single-tasking, 30
Sinkronisasi
Blocking, 60
NonBlocking, 60
Sisi
Sisi Permintaan, 129
Sistem
Desain, 39
Implementasi, 39
Proteksi, 26
Terdistribusi, 26
Sistem Berkas, 27
Alokasi Blok, 232
Berindeks, 235
Berkesinambungan, 232
Linked, 233
Bit Map, 237
Bit Vector, 237
Blk_dev, 311
Blk_dev_struct, 311
chrdevs, 309, 310
Grouping
Counting, 237
IDE, 311
Inode VFS, 310
Khusus Device, 309
Nomor Device, 309
Persyaratan
Direktori, 223
Root
Operasi, 223
SCSI, 311
System Call, 310
Virtual, 309
Sistem Operasi, 27
Definisi, 1, 1
GNU/Linux, 1
Komponen
Control Program, 2
Internet Explorer, 1
Resource Allocator, 2
Layanan, 27
Tradisional, 3
Tujuan, 246
Kenyamanan, 2
Windows, 1
Sistem Waktu Nyata
Hard Real-Time, 82
Soft Real-Time, 82
Skleton, 66
Sleep On, 296
SLIP, 313
Socket, 64
Spooling, 254
Cara Kerja, 254
Spooling Directory, 254
Status, 31
Status Proses
New, 43
Ready, 43
Runing, 43
Terminated, 43
Waiting, 43
Stream
Pembagian, 257
Struktur
Hard Disk, 15
Optical Disc, 15
Sistem Komputer, 10
Hirarki Storage, 16
Input/Output (I/O), 13
Operasi Sistem Komputer, 10
Storage, 14
Struktur Berkas
Layered File System, 214
Struktur Disk
Constant Angular Velocity, 260
Constant Linear Velocity, 260
Waktu Akses, 260
Stub, 66
Sumber Daya, 27
Summary, 280
Swap
Lokasi Ruang, 269
Managemen Ruang, 269
Penggunaan Ruang, 269
System
Calls, 30, 32
Program, 31
System CallLinux
Clone
Perbedaan Fork dan Clone, 74
Fork, 74
System Generation, 39
Tabel Halaman
329Masukan, 166
Nomor Halaman, 166
Tabel Halaman Secara Inverted, 166
Tabel Halaman Secara Multilevel, 166
Tabel Registrasi, 293
Task Interruptible, 296
Thrashing
Halaman, 191
Kesalahan Halaman, 191
Multiprogamming, 191
Swap-In, 191
Swap-Out, 191
Utilitasi CPU, 191
Thread, 46
Definisi, 67
Kernel Thread, 68
Keuntungan
Berbagi Sumber Daya, 68
Ekonomi, 68
Responsi, 68
Utilisasi Arsitektur, 68
Multithreading, 67
Multithreading Models
Many-to-Many Model, 69
Many-to-One Model, 69
One-to-One Model, 69
Pembuatan, 75
Pthreads, 73
Specific Data, 73
Thread Pools, 73
User Thread, 68
Vertex
Proses, 129
Wait, 101
Working Set
Bit Referensi, 191
Delta, 191
Fixed Internal Timer Interrupt, 191
Interupsi, 191
Lokalitas, 191
Overlap, 191
sekedar masukan aja gan, mungkin font artikel ini dirubah aja menjadi font biasa sehingga lebih enak dan nyaman dibaca. terimakasih gan, lanjutkan kreasinya
BalasHapus