Anda di halaman 1dari 134

Sistem operasi adalah bagian penting dari setiap sistem komputer.

Demikian pula,
kursus tentang sistem operasi merupakan bagian penting dari setiap pendidikan
ilmu komputer. Bidang ini sedang mengalami perubahan yang cepat, karena
komputer sekarang lazim di hampir setiap arena kehidupan sehari-hari— dari
perangkat yang tertanam di ponsel otomatis hingga alat perencanaan paling
canggih untuk pemerintah dan perusahaan multinasional. Namun konsep
dasarnya tetap cukup jelas, dan pada hal inilah kami mendasarkan buku ini.
Kami menulis buku ini sebagai teks untuk kursus pengantar dalam sistem operasi
di tingkat sarjana junior atau senior atau di tingkat pascasarjana tahun pertama.
Kami berharap para praktisi juga akan merasakan manfaatnya. Ini memberikan
gambaran yang jelas tentang konsep yang mendasari sistem operasi. Sebagai
prasyarat, kami berasumsi bahwa pembaca sudah familiar dengan struktur data
dasar, organisasi komputer, dan bahasa tingkat tinggi, seperti C atau Java. Topik
perangkat keras yang diperlukan untuk memahami sistem operasi dibahas dalam
Bab 1. Dalam bab itu, kami juga menyertakan tinjauan umum tentang struktur
data mendasar yang lazim di sebagian besar sistem operasi. Untuk contoh kode,
kami menggunakan C yang lebih dominan, serta sejumlah besar Java, tetapi
pembaca masih dapat memahami algoritme tanpa pengetahuan menyeluruh
tentang bahasa-bahasa ini.
Konsep disajikan menggunakan deskripsi intuitif. Hasil teoretis penting tercakup,
tetapi bukti formal sebagian besar dihilangkan. Catatan bibliografi di akhir setiap
bab berisi petunjuk ke makalah penelitian di mana hasilnya pertama kali
dipresentasikan dan dibuktikan, serta referensi ke bahan terbaru untuk bacaan
lebih lanjut. Sebagai pengganti bukti, angka dan contoh digunakan untuk
menyarankan mengapa kita harus mengharapkan hasil yang dipertanyakan itu
benar.
Konsep dan algoritme dasar yang dibahas dalam buku ini sering kali didasarkan
pada konsep dan algoritme yang digunakan dalam sistem operasi sumber terbuka
dan komersial. Tujuan kami adalah menyajikan konsep dan algoritme ini dalam
pengaturan umum yang tidak terikat pada satu sistem operasi tertentu. Namun,
kami menyajikan sejumlah besar contoh yang berkaitan dengan sistem operasi
paling populer dan paling inovatif, termasuk Linux, Microsoft Windows, Apple
macOS (nama asli, OS X, diubah pada tahun 2016 agar sesuai dengan skema
penamaan Apple lainnya. produk), dan Solaris. Kami juga menyertakan contoh
Android dan iOS, yang saat ini merupakan dua sistem operasi seluler yang
dominan.
Organisasi teks mencerminkan kursus pengajaran kami selama bertahun-tahun
tentang sistem operasi. Pertimbangan juga diberikan untuk umpan balik yang
diberikan oleh peninjau teks, bersama dengan banyak komentar dan saran yang
kami terima dari pembaca edisi kami sebelumnya dan dari siswa kami saat ini dan
sebelumnya. Edisi Kesepuluh ini juga mencerminkan sebagian besar panduan
kurikulum garis di area sistem operasi dalam Kurikulum Ilmu Komputer 2013,
pedoman kurikulum terbaru untuk program gelar sarjana dalam ilmu komputer
yang diterbitkan oleh IEEE Computing Society dan Association for Computing
Machinery (ACM).

Apa yang Baru di Edisi Ini


Untuk Edisi Kesepuluh, kami berfokus pada revisi dan penyempurnaan yang
ditujukan untuk menurunkan biaya bagi siswa, melibatkan mereka dengan lebih
baik dalam proses pembelajaran, dan memberikan peningkatan dukungan bagi
instruktur.
Menurut firma riset pasar paling tepercaya di industri penerbitan, Outsell, 2015
merupakan titik balik dalam penggunaan teks: untuk pertama kalinya, preferensi
siswa untuk materi pembelajaran digital lebih tinggi daripada untuk cetak, dan
peningkatan preferensi untuk digital telah meningkat sejak .
Sementara cetak tetap penting bagi banyak siswa sebagai alat pedagogis, Edisi
Kesepuluh disampaikan dalam bentuk yang menekankan dukungan untuk belajar
dari materi digital. Semua formulir yang kami sediakan secara dramatis
mengurangi biaya untuk siswa dibandingkan dengan Edisi Kesembilan. Bentuk-
bentuk ini adalah:
• E-teks yang berdiri sendiri sekarang dengan peningkatan yang signifikan. Format
e-teks untuk Edisi Kesepuluh menambahkan latihan dengan solusi di akhir bagian
utama, definisi sembunyikan/ungkap untuk istilah kunci, dan sejumlah gambar
animasi. Ini juga mencakup "Latihan Praktik" tambahan dengan solusi untuk
setiap bab, latihan tambahan, masalah dan proyek pemrograman, bagian "Bacaan
Lebih Lanjut", glosarium lengkap, dan empat lampiran untuk sistem operasi lama.
• E-teks dengan bundel pendamping cetak. Dengan biaya tambahan nominal, e-
teks juga tersedia dengan pendamping cetak singkat yang mencakup salinan lepas
dari teks bab utama, akhir bab “Latihan Praktik” (solusi tersedia online), dan
“Latihan lebih lanjut” membaca”. Instruktur juga dapat memesan pendamping
cetak terikat untuk paket yang dibundel dengan menghubungi perwakilan akun
Wiley mereka.
Meskipun kami sangat menganjurkan semua instruktur dan siswa untuk
memanfaatkan biaya, konten, dan keuntungan pembelajaran dari edisi teks
elektronik, instruktur dapat bekerja dengan Manajer Akun Wiley mereka untuk
membuat edisi cetak khusus.
Untuk menjelajahi opsi ini lebih lanjut atau untuk mendiskusikan opsi lain,
hubungi manajer akun Wiley Anda (http://www.wiley.com/go/whosmyrep) atau
kunjungi halaman informasi produk untuk teks ini di wiley.com

Bahan Buku
Buku ini terdiri dari 21 bab dan 4 lampiran. Setiap bab dan lampiran berisi teks,
serta perangkat tambahan berikut:
Kata Pengantar ix
• Serangkaian latihan, termasuk solusi
• Satu set latihan teratur
• Serangkaian masalah pemrograman
• Satu set proyek pemrograman
• Bagian Bacaan Lebih Lanjut
• Definisi pop-up dari istilah penting (biru)
• Daftar istilah-istilah penting
• Animasi yang menjelaskan konsep kunci tertentu
Sebuah hard copy teks tersedia di toko buku dan online. Versi itu memiliki bab
teks yang sama dengan versi elektronik. Namun, itu tidak termasuk lampiran,
latihan reguler, solusi untuk latihan latihan, masalah pemrograman, proyek
pemrograman, dan beberapa perangkat tambahan lain yang ditemukan dalam
buku elektronik ePub ini.
Isi Buku Ini
Teks ini disusun dalam sepuluh bagian utama:
• Gambaran. Bab 1 dan 2 menjelaskan apa itu sistem operasi, apa yang mereka
lakukan, dan bagaimana mereka dirancang dan dibangun. Bab-bab ini membahas
fitur-fitur umum dari sistem operasi dan apa yang dilakukan sistem operasi untuk
pengguna. Kami menyertakan cakupan sistem operasi PC dan server tradisional
serta sistem operasi untuk perangkat seluler. Penyajiannya bersifat motivasi dan
penjelasan. Kami telah menghindari diskusi tentang bagaimana hal-hal dilakukan
secara internal dalam bab ini. Oleh karena itu, mereka cocok untuk pembaca
individu atau untuk siswa di kelas tingkat bawah yang ingin mempelajari apa itu
sistem operasi tanpa masuk ke detail algoritme internal.
• Manajemen proses. Bab 3 sampai 5 menjelaskan konsep proses dan konkurensi
sebagai jantung dari sistem operasi modern. Proses adalah unit kerja dalam suatu
sistem. Sistem seperti itu terdiri dari kumpulan proses yang dieksekusi secara
bersamaan, beberapa mengeksekusi kode sistem operasi dan yang lainnya
mengeksekusi kode pengguna. Bab-bab ini mencakup metode untuk penjadwalan
proses dan komunikasi antarproses. Juga termasuk diskusi rinci tentang utas,
serta pemeriksaan masalah yang terkait dengan sistem multi inti dan
pemrograman paralel.
• Sinkronisasi proses. Bab 6 sampai 8 penutup
metode untuk sinkronisasi proses dan penanganan kebuntuan. Karena kami telah
meningkatkan cakupan sinkronisasi proses, kami telah membagi Bab 5
sebelumnya (Sinkronisasi Proses) menjadi dua bab terpisah: Bab 6, Alat
Sinkronisasi, dan Bab 7, Contoh Sinkronisasi.
• Manajemen memori. Bab 9 dan 10 membahas manajemen memori utama
selama eksekusi suatu proses. Untuk meningkatkan keduanya
x Kata Pengantar
pemanfaatan CPU dan kecepatan responnya terhadap penggunanya, komputer
harus menyimpan beberapa proses dalam memori. Ada banyak skema
manajemen memori yang berbeda, yang mencerminkan berbagai pendekatan
untuk manajemen memori, dan efektivitas algoritma tertentu tergantung pada
situasinya.
• Manajemen Penyimpanan. Bab 11 dan 12 menjelaskan bagaimana
penyimpanan massal dan I/O ditangani dalam sistem komputer modern.
Perangkat I/O yang dilampirkan ke komputer sangat bervariasi, dan sistem
operasi perlu menyediakan berbagai fungsionalitas ke aplikasi untuk
memungkinkan mereka mengontrol semua aspek perangkat ini. Kami membahas
sistem I/O secara mendalam, termasuk desain sistem I/O, antarmuka, dan
struktur dan fungsi sistem internal. Dalam banyak hal, perangkat I/O adalah
komponen utama komputer yang paling lambat. Karena mereka mewakili
hambatan kinerja, kami juga memeriksa masalah kinerja yang terkait dengan
perangkat I/O.
• Sistem berkas. Bab 13 sampai 15 membahas bagaimana sistem file ditangani
dalam sistem komputer modern. Sistem file menyediakan mekanisme untuk
penyimpanan online dan akses ke data dan program. Kami menjelaskan algoritme
internal klasik dan struktur manajemen penyimpanan dan memberikan
pemahaman praktis yang kuat tentang algoritme yang digunakan— sifat,
kelebihan, dan kekurangannya.
• Keamanan dan perlindungan. Bab 16 dan 17 membahas mekanisme yang
diperlukan untuk keamanan dan perlindungan sistem komputer. Proses dalam
sistem operasi harus dilindungi dari aktivitas satu sama lain. Untuk memberikan
perlindungan tersebut, kita harus memastikan bahwa hanya proses yang telah
memperoleh otorisasi yang tepat dari sistem operasi yang dapat beroperasi pada
file, memori, CPU, dan sumber daya lain dari sistem. Proteksi adalah mekanisme
untuk mengontrol akses program, proses, atau pengguna ke sumber daya sistem
komputer. Mekanisme ini harus menyediakan sarana untuk menentukan kontrol
yang akan diterapkan, serta sarana penegakan. Keamanan melindungi integritas
informasi yang disimpan dalam sistem (baik data maupun kode), serta sumber
daya fisik sistem, dari akses yang tidak sah, perusakan atau perubahan yang
berbahaya, dan pengenalan ketidakkonsistenan yang tidak disengaja.
• Topik lanjutan. Bab 18 dan 19 membahas mesin virtual dan jaringan/sistem
terdistribusi. Bab 18 memberikan gambaran umum tentang mesin virtual dan
hubungannya dengan sistem operasi kontemporer. Termasuk adalah deskripsi
umum tentang teknik perangkat keras dan perangkat lunak yang memungkinkan
virtualisasi. Bab 19 memberikan gambaran umum tentang jaringan komputer dan
sistem terdistribusi, dengan fokus pada Internet dan TCP/IP.
• Studi kasus. Bab 20 dan 21 menyajikan studi kasus terperinci dari dua sistem
operasi nyata—Linux dan Windows 10.
• Lampiran. Lampiran A membahas beberapa sistem operasi lama yang
berpengaruh yang tidak lagi digunakan. Lampiran B sampai D mencakup dengan
sangat rinci tiga sistem operasi lama— Windows 7, BSD, dan Mach.
Kata pengantar xi
Lingkungan Pemrograman
Teks ini memberikan beberapa contoh program yang ditulis dalam C dan Java.
Program-program ini dimaksudkan untuk berjalan di lingkungan pemrograman
berikut:
• POSIX. POSIX (yang merupakan singkatan dari Portable Operating System
Interface) mewakili seperangkat standar yang diterapkan terutama untuk sistem
operasi berbasis UNIX. Meskipun sistem Windows juga dapat menjalankan
program POSIX tertentu, cakupan POSIX kami berfokus pada sistem Linux dan
UNIX. Sistem yang sesuai dengan POSIX harus menerapkan standar inti POSIX
(POSIX.1); Linux dan macOS adalah contoh sistem yang sesuai dengan POSIX.
POSIX juga mendefinisikan beberapa ekstensi standar, termasuk ekstensi waktu
nyata (POSIX.1b) dan ekstensi untuk pustaka utas (POSIX.1c, lebih dikenal sebagai
Pthreads). Kami menyediakan beberapa contoh pemrograman yang ditulis dalam
C yang menggambarkan API dasar POSIX, serta Pthreads dan ekstensi untuk
pemrograman waktu nyata. Contoh program ini diuji pada sistem Linux 4.4 dan
macOS 10.11 menggunakan kompiler gcc.
• Jawa. Java adalah bahasa pemrograman yang banyak digunakan dengan API
yang kaya dan dukungan bahasa bawaan untuk pemrograman bersamaan dan
paralel. Program Java berjalan pada sistem operasi apa pun yang mendukung
mesin virtual Java (atau JVM). Kami mengilustrasikan berbagai konsep sistem
operasi dan jaringan dengan program Java yang diuji menggunakan Java
Development Kit (JDK) Versi 1.8.
• Sistem Windows. Lingkungan pemrograman utama untuk sistem Windows
adalah Windows API, yang menyediakan serangkaian fungsi yang komprehensif
untuk mengelola proses, utas, memori, dan perangkat periferal. Kami
menyediakan sejumlah program C yang menggambarkan penggunaan API ini.
Program diuji pada sistem yang menjalankan Windows 10.
Kami telah memilih ketiga lingkungan pemrograman ini karena kami percaya
bahwa ketiganya paling mewakili dua model sistem operasi paling populer—
Linux/UNIX dan Windows—bersama dengan lingkungan Java yang banyak
digunakan. Sebagian besar contoh pemrograman ditulis dalam C, dan kami
berharap pembaca merasa nyaman dengan bahasa ini. Pembaca yang akrab
dengan bahasa C dan Java akan dengan mudah memahami sebagian besar
program yang disediakan dalam teks ini.
Dalam beberapa kasus—seperti pembuatan utas—kami mengilustrasikan konsep
spesifik menggunakan ketiga lingkungan pemrograman, memungkinkan pembaca
untuk membedakan tiga pustaka yang berbeda saat mereka menangani tugas
yang sama. Dalam situasi lain, kita mungkin hanya menggunakan salah satu API
untuk mendemonstrasikan sebuah konsep. Misalnya, kami mengilustrasikan
memori bersama hanya dengan menggunakan POSIX API; pemrograman socket di
TCP/IP disorot menggunakan Java API.
Mesin Virtual Linux
Untuk membantu siswa memperoleh pemahaman yang lebih baik tentang sistem
Linux, kami menyediakan mesin virtual Linux yang menjalankan distribusi Ubuntu
dengan teks ini. Mesin virtual, yang tersedia untuk diunduh dari situs web teks
xii Kata Pengantar
(http://www.os-book.com), juga menyediakan lingkungan pengembangan
termasuk kompiler gcc dan Java. Sebagian besar tugas pemrograman dalam buku
ini dapat diselesaikan menggunakan mesin virtual ini, kecuali tugas yang
memerlukan Windows API. Mesin virtual dapat diinstal dan dijalankan pada
sistem operasi host mana pun yang dapat menjalankan perangkat lunak
virtualisasi VirtualBox, yang saat ini mencakup Windows 10 Linux, dan macOS.
Edisi Kesepuluh
Saat kami menulis Konsep Sistem Operasi Edisi Kesepuluh ini, kami dipandu oleh
pertumbuhan berkelanjutan di empat area mendasar yang memengaruhi sistem
operasi:
1. Sistem operasi seluler
2. Sistem multi inti
3. Virtualisasi
4. Penyimpanan sekunder memori nonvolatile
Untuk menekankan topik ini, kami telah mengintegrasikan liputan yang relevan di
seluruh edisi baru ini. Misalnya, kami telah sangat meningkatkan cakupan sistem
operasi seluler Android dan iOS, serta cakupan arsitektur ARMv8 yang
mendominasi perangkat seluler. Kami juga telah meningkatkan cakupan sistem
multicore kami, termasuk peningkatan cakupan API yang menyediakan dukungan
untuk konkurensi dan paralelisme. Memori non-volatil perangkat seperti SSD
sekarang diperlakukan sama dengan hard-disk drive dalam bab yang membahas
I/O, penyimpanan massal, dan sistem file.
Beberapa pembaca kami telah menyatakan dukungan untuk peningkatan cakupan
Java, dan kami telah memberikan contoh Java tambahan di seluruh edisi ini.
Selain itu, kami telah menulis ulang materi di hampir setiap bab dengan
memperbarui materi lama dan menghapus materi yang tidak lagi menarik atau
relevan. Kami telah menyusun ulang banyak bab dan, dalam beberapa kasus,
memindahkan bagian dari satu bab ke bab lainnya. Kami juga telah merevisi
banyak karya seni, membuat beberapa figur baru serta memodifikasi banyak figur
yang sudah ada.
Perubahan Besar
Pembaruan Edisi Kesepuluh mencakup lebih banyak materi daripada pembaruan
sebelumnya, baik dari segi konten maupun materi pendukung baru. Selanjutnya,
kami memberikan garis besar singkat tentang perubahan konten utama di setiap
bab:
• Bab 1: Pendahuluan mencakup cakupan sistem multicore yang diperbarui, serta
cakupan baru sistem NUMA dan cluster Hadoop. Materi lama telah diperbarui,
dan motivasi baru telah ditambahkan untuk mempelajari sistem operasi.
• Bab 2: Struktur Sistem Operasi memberikan pembahasan yang direvisi secara
signifikan tentang desain dan implementasi sistem operasi. Kami telah
memperbarui perlakuan kami terhadap Android dan iOS dan telah merevisi
Kata pengantar xiii
cakupan proses boot sistem dengan fokus pada GRUB untuk sistem Linux.
Cakupan baru dari subsistem Windows untuk Linux juga disertakan. Kami telah
menambahkan bagian baru pada linker dan loader, dan sekarang kami membahas
mengapa aplikasi sering kali khusus untuk sistem operasi. Akhirnya, kami telah
menambahkan diskusi tentang perangkat debugging BCC.
• Bab 3: Proses menyederhanakan pembahasan penjadwalan sehingga sekarang
hanya mencakup masalah penjadwalan CPU. Cakupan baru menjelaskan tata letak
memori program C, hierarki proses Android, penyampaian pesan Mach, dan RPC
Android. Kami juga telah mengganti cakupan proses init UNIX/Linux tradisional
dengan cakupan systemd.
• Bab 4: Utas dan Konkurensi (sebelumnya Utas) meningkatkan cakupan
dukungan untuk pemrograman serentak dan paralel di tingkat API dan pustaka.
Kami telah merevisi bagian di utas Java sehingga sekarang mencakup masa depan
dan telah memperbarui cakupan Pengiriman Grand Central Apple sehingga
sekarang mencakup Swift. Bagian baru membahas paralelisme fork join
menggunakan kerangka fork-join di Java, serta blok penyusun thread Intel.
• Bab 5: Penjadwalan CPU (sebelumnya Bab 6) merevisi cakupan antrian
multilevel dan penjadwalan pemrosesan multicore. Kami telah mengintegrasikan
cakupan masalah penjadwalan NUMA-aware di seluruh, termasuk bagaimana
penjadwalan ini memengaruhi penyeimbangan beban. Kami juga mendiskusikan
modifikasi terkait dengan penjadwal CFS Linux. Cakupan baru menggabungkan
diskusi round-robin dan penjadwalan prioritas, multiprosesor heterogen, dan
penjadwalan Windows 10.
• Bab 6: Alat Sinkronisasi (sebelumnya bagian dari Bab 5, Sinkronisasi Proses)
berfokus pada berbagai alat untuk proses sinkronisasi. Cakupan baru yang
signifikan membahas masalah arsitektur seperti pemesanan ulang instruksi dan
penundaan penulisan ke buffer. Bab ini juga memperkenalkan algoritme bebas
kunci menggunakan instruksi bandingkan dan tukar (CAS). Tidak ada API khusus
yang disajikan; melainkan, bab ini memberikan pengantar tentang kondisi balapan
dan alat umum yang dapat digunakan untuk mencegah balapan data. Detailnya
mencakup cakupan baru model memori, hambatan memori, dan masalah
keaktifan.
• Bab 7: Contoh Sinkronisasi (sebelumnya bagian dari Bab 5, Sinkronisasi Proses)
memperkenalkan masalah sinkronisasi klasik dan membahas dukungan API
khusus untuk merancang solusi yang memecahkan masalah ini. Bab ini mencakup
cakupan baru semafor POSIX bernama dan tidak bernama, serta variabel kondisi.
Bagian baru tentang sinkronisasi Java juga disertakan.
• Bab 8: Deadlock (sebelumnya Bab 7) memberikan pembaruan kecil, termasuk
bagian baru tentang livelock dan diskusi tentang deadlock sebagai contoh bahaya
liveness. Bab ini mencakup cakupan baru dari lockdep Linux dan alat pendeteksi
kebuntuan BCC, serta cakupan deteksi kebuntuan Java menggunakan dump
thread.
• Bab 9: Memori Utama (sebelumnya Bab 8) mencakup beberapa revisi yang
membuat bab ini diperbarui sehubungan dengan manajemen memori-
xiv Kata Pengantar
pada sistem komputer modern. Kami telah menambahkan cakupan baru
arsitektur ARMv8 64-bit, memperbarui cakupan pustaka tautan dinamis, dan
mengubah cakupan pertukaran sehingga sekarang berfokus pada pertukaran
halaman daripada proses. Kami juga telah menghilangkan cakupan segmentasi.
• Bab 10: Memori Virtual (sebelumnya Bab 9) berisi beberapa revisi, termasuk
cakupan alokasi memori yang diperbarui pada sistem NUMA dan alokasi global
menggunakan daftar bingkai-bebas. Cakupan baru termasuk memori terkompresi,
kesalahan halaman besar/kecil, dan manajemen memori di Linux dan Windows
10.
• Bab 11: Struktur Penyimpanan Massal (sebelumnya Bab 10) menambahkan usia
cakupan perangkat memori nonvolatil, seperti flash dan solid-state disk.
Penjadwalan hard-drive disederhanakan untuk menunjukkan hanya algoritma
yang digunakan saat ini. Juga termasuk bagian baru tentang penyimpanan cloud,
cakupan RAID yang diperbarui, dan diskusi baru tentang penyimpanan objek.
• Bab 12, I/O (sebelumnya Bab 13) memperbarui cakupan teknologi dan angka
kinerja, memperluas cakupan I/O sinkron/asinkron dan pemblokiran/nonblok,
dan menambahkan bagian pada I/O bervektor. Ini juga memperluas cakupan
manajemen daya untuk sistem operasi seluler.
• Bab 13: Antarmuka Sistem File (sebelumnya Bab 11) telah diperbarui dengan
informasi tentang teknologi terkini. Secara khusus, cakupan struktur direktori
telah ditingkatkan, dan cakupan perlindungan telah diperbarui. Bagian file yang
dipetakan memori telah diperluas, dan contoh Windows API telah ditambahkan
ke diskusi tentang memori bersama. Urutan topik difaktorkan ulang di Bab 13 dan
14.
• Bab 14: Implementasi Sistem File (sebelumnya Bab 12) telah diperbarui dengan
cakupan teknologi terkini. Bab ini sekarang mencakup diskusi tentang TRIM dan
Sistem File Apple. Selain itu, pembahasan kinerja telah diperbarui, dan cakupan
jurnal telah diperluas.
• Bab 15: Internal Sistem File baru dan berisi informasi terbaru dari Bab 11 dan 12
sebelumnya.
• Bab 16: Keamanan (sebelumnya Bab 15) sekarang mendahului bab
perlindungan. Ini mencakup persyaratan yang direvisi dan diperbarui untuk
ancaman dan solusi keamanan saat ini, termasuk ransomware dan alat akses jarak
jauh. Prinsip hak istimewa terkecil ditekankan. Cakupan kerentanan dan serangan
injeksi kode telah direvisi dan sekarang mencakup contoh kode. Diskusi teknologi
enkripsi telah diperbarui untuk fokus pada teknologi yang saat ini digunakan.
Cakupan otentikasi (dengan kata sandi dan metode lain) telah diperbarui dan
diperluas dengan petunjuk bermanfaat. Tambahan termasuk diskusi pengacakan
tata letak ruang alamat dan ringkasan baru pertahanan keamanan. Contoh
Windows 7 telah diperbarui ke Windows 10.
• Bab 17: Perlindungan (sebelumnya Bab 14) berisi perubahan besar. Diskusi
tentang cincin dan lapisan perlindungan telah diperbarui dan sekarang
Kata pengantar xv
mengacu pada model Bell–LaPadula dan mengeksplorasi model ARM dari Trust
Zones dan Secure Monitor Calls. Cakupan prinsip perlu tahu telah diperluas,
seperti halnya cakupan kontrol akses wajib.
Subbagian tentang kemampuan Linux, hak Darwin, perlindungan integritas
keamanan, pemfilteran panggilan sistem, kotak pasir, dan penandatanganan kode
telah ditambahkan. Cakupan penegakan berbasis run-time di Java juga telah
ditambahkan, termasuk teknik inspeksi tumpukan.
• Bab 18: Mesin Virtual (sebelumnya Bab 16) menyertakan detail tambahan
tentang teknologi bantuan perangkat keras. Juga diperluas adalah topik
penahanan aplikasi, sekarang termasuk kontainer, zona, buruh pelabuhan, dan
Kubernetes. Bagian baru membahas penelitian virtualisasi yang sedang
berlangsung, termasuk unikernels, sistem operasi perpustakaan, hypervisor
partisi, dan hypervisor pemisahan.
• Bab 19, Jaringan dan Sistem Terdistribusi (sebelumnya Bab 17) telah diperbarui
secara substansial dan sekarang menggabungkan cakupan jaringan komputer dan
sistem terdistribusi. Materi telah direvisi untuk memperbaruinya sehubungan
dengan jaringan komputer kontemporer dan sistem terdistribusi. Model TCP/IP
mendapat penekanan tambahan, dan diskusi tentang penyimpanan cloud telah
ditambahkan. Bagian tentang topologi jaringan telah dihapus. Cakupan resolusi
nama telah diperluas dan contoh Java ditambahkan. Bab ini juga mencakup
cakupan baru sistem file terdistribusi, termasuk MapReduce di atas sistem file
Google, Hadoop, GPFS, dan Lustre.
• Bab 20: Sistem Linux (sebelumnya Bab 18) telah diperbarui untuk mencakup
kernel Linux 4.i.
• Bab 21: Sistem Windows 10 adalah bab baru yang mencakup internal Windows
10.
• Lampiran A: Sistem Operasi Influentia telah diperbarui untuk memasukkan
materi dari bab-bab yang tidak lagi tercakup dalam teks.
Situs Web Pendukung
Saat Anda mengunjungi situs web yang mendukung teks ini di http://www.os-
book.com, Anda dapat mengunduh sumber daya berikut:
• Mesin virtual Linux
• Kode sumber C dan Java
• Kumpulan gambar dan ilustrasi lengkap
• Studi kasus FreeBSD, Mach, dan Windows 7
• Errata
• Daftar Pustaka
Catatan untuk Instruktur
Di situs web untuk teks ini, kami menyediakan beberapa contoh silabus yang
menyarankan berbagai pendekatan untuk menggunakan teks dalam kursus
pengantar dan lanjutan.
xvi Kata Pengantar
Sebagai aturan umum, kami mendorong instruktur untuk maju secara berurutan
melalui bab-bab, karena strategi ini memberikan studi sistem operasi yang paling
menyeluruh. Namun, dengan menggunakan sampel silabus, seorang instruktur
dapat memilih urutan bab (atau subbagian bab) yang berbeda.
Dalam edisi ini, kami telah menambahkan banyak latihan tertulis baru dan
masalah serta proyek pemrograman. Sebagian besar tugas pemrograman baru
melibatkan proses, utas, penjadwalan proses, sinkronisasi proses, dan
manajemen memori. Beberapa melibatkan penambahan modul kernel ke sistem
Linux, yang memerlukan penggunaan mesin virtual Linux yang menyertai teks ini
atau distribusi Linux lain yang sesuai.
Solusi untuk latihan tertulis dan tugas pemrograman tersedia bagi instruktur yang
telah mengadopsi teks ini untuk kelas sistem operasi mereka. Untuk
mendapatkan suplemen terbatas ini, hubungi perwakilan penjualan John Wiley &
Sons setempat. Anda dapat menemukan perwakilan Wiley Anda dengan
membuka http://www.wiley.com/college dan mengklik "Who's my rep?"
Catatan untuk Siswa
Kami mendorong Anda untuk memanfaatkan latihan latihan yang muncul di akhir
setiap bab. Kami juga mendorong Anda untuk membaca panduan belajar, yang
disiapkan oleh salah satu siswa kami. Terakhir, bagi siswa yang tidak terbiasa
dengan sistem UNIX dan Linux, kami menyarankan Anda mengunduh dan
menginstal mesin virtual Linux yang kami sertakan di situs web pendukung. Ini
tidak hanya akan memberi Anda pengalaman komputasi baru, tetapi sifat open
source Linux akan memungkinkan Anda untuk dengan mudah memeriksa detail
bagian dalam dari sistem operasi populer ini. Kami berharap yang terbaik untuk
Anda dalam mempelajari sistem operasi!
Menghubungi Kami
Kami telah berusaha untuk menghilangkan kesalahan ketik, bug, dan sejenisnya
dari teks. Namun, seperti dalam rilis perangkat lunak baru, bug hampir pasti tetap
ada. Daftar ralat terbaru dapat diakses dari situs web buku. Kami akan berterima
kasih jika Anda memberi tahu kami tentang kesalahan atau kekurangan dalam
buku yang tidak ada dalam daftar kesalahan saat ini.
Kami akan dengan senang hati menerima saran untuk perbaikan buku ini. Kami
juga menyambut setiap kontribusi ke situs web buku yang dapat berguna bagi
pembaca lain, seperti latihan pemrograman, saran proyek, lab dan tutorial online,
dan tip mengajar. Email harus ditujukan ke os-book author@cs.yale.edu.
Ucapan Terima Kasih
Banyak orang telah membantu kami dengan Edisi Kesepuluh ini, serta dengan
sembilan edisi sebelumnya dari mana ia berasal.
Kata Pengantar xvii
Edisi kesepuluh
• Rick Farrow memberikan saran ahli sebagai editor teknis.
• Jonathan Levin membantu dengan cakupan sistem seluler, perlindungan, dan
keamanan.
• Alex Ionescu memperbarui bab Windows 7 sebelumnya untuk menyediakan Bab
21: Windows 10.
• Sarah Diesburg merevisi Bab 19: Jaringan dan Sistem Terdistribusi. • Brendan
Gregg memberikan panduan tentang perangkat BCC.
• Richard Stallman (RMS) memberikan umpan balik tentang deskripsi perangkat
lunak bebas dan sumber terbuka.
• Robert Love menyediakan pembaruan untuk Bab 20: Sistem Linux. • Michael
Shapiro membantu dengan penyimpanan dan detail teknologi I/O. • Richard
West.
memberikan wawasan tentang bidang penelitian virtualisasi.
• Clay Breshears membantu cakupan blok pembangun thread Intel.
• Gerry Howser memberikan umpan balik untuk memotivasi belajar sistem
operasi dan juga mencoba materi baru di kelasnya.
• Judi Paige membantu menghasilkan gambar dan presentasi slide. • Jay Gagne
dan Audra Rissmeyer menyiapkan artwork baru untuk edisi ini. • Owen Galvin
menyediakan penyuntingan teknis untuk Bab 11 dan Bab 12.
• Mark Wogahn telah memastikan bahwa perangkat lunak untuk menghasilkan
buku ini (LATEX dan font) berfungsi dengan baik.
• Ranjan Kumar Meher menulis ulang beberapa perangkat lunak LATEX yang
digunakan dalam produksi teks baru ini.
Edisi Sebelumnya
• Tiga edisi pertama. Buku ini berasal dari edisi-edisi sebelumnya, tiga edisi
pertama ditulis bersama oleh James Peterson.
• Kontribusi umum. Orang lain yang membantu kami dengan edisi sebelumnya
termasuk Hamid Arabnia, Rida Bazzi, Randy Bentson, David Black, Joseph Boykin,
Jeff Brumfield, Gael Buckley, Roy Campbell, PC Capon, John Carpenter, Gil Carrick,
Thomas Casavant, Bart Childs, Ajoy Kumar Datta , Joe Deck, Sudarshan K. Dhall,
Thomas Doeppner, Caleb Drake, M. Rasit Eskicioglu, Hans Flack, Robert Fowler, G.
Scott Graham, Richard Guy, Max Hailperin, Rebecca Hartman, Wayne Hathaway,
Christopher Haynes, Don Heller, Bruce Hillyer, Mark Holliday, Dean Hougen,
Michael Huang, Ahmed Kamel, Morty Kewstel, Richard Kieburtz, Carol Kroll,
Morty Kwestel, Thomas LeBlanc, John Leggett, Jerrold Leichter, Ted Leung, Gary
Lippman, Carolyn Miller, Michael Molloy, Euripides Montagne , Yoichi Muraoka,
Jim M. Ng, Banu Ozden, Ed Posnak, Boris Putanec, Charles
xviii Kata Pengantar
Qualline, John Quarterman, Mike Reiter, Gustavo Rodriguez-Rivera, Carolyn JC
Schauble, Thomas P. Skinner, Yannis Smaragdakis, Jesse St. Laurent, John
Stankovic, Adam Stauffer, Steven Stepanek, John Sterling, Hal Stern, Louis
Stevens, Pete Thomas , David Umbaugh, Steve Vinoski, Tommy Wagner, Larry L.
Wear, John Werth, James M. Westall, JS Weston, dan Yang Xiang
• Kontribusi Spesifik
Robert Love memperbarui Bab 20 dan cakupan Linux di seluruh teks, serta
menjawab banyak pertanyaan terkait Android kami.
Lampiran B ditulis oleh Dave Probert dan diturunkan dari Bab 22 Konsep Sistem
Operasi Edisi Kedelapan.
Jonathan Katz berkontribusi pada Bab 16. Richard West memberikan masukan ke
Bab 18. Salahuddin Khan memperbarui Bagian 16.7 untuk memberikan cakupan
baru keamanan Windows 7.
Bagian dari Bab 19 berasal dari makalah Levy dan Silberschatz [1990].
Bab 20 berasal dari naskah yang tidak diterbitkan oleh Stephen Tweedie.
Cliff Martin membantu memperbarui lampiran UNIX untuk mencakup FreeBSD.
Beberapa latihan dan solusi yang menyertainya disediakan oleh Arvind
Krishnamurthy.
Andrew DeNicola menyiapkan panduan belajar siswa yang tersedia di situs web
kami. Beberapa slide disiapkan oleh Marilyn Turnamian.
Mike Shapiro, Bryan Cantrill, dan Jim Mauro menjawab beberapa pertanyaan
terkait Solaris, dan Bryan Cantrill dari Sun Microsystems membantu cakupan ZFS.
Josh Dees dan Rob Reynolds berkontribusi untuk menutupi usia Microsoft NET.
Owen Galvin membantu copy-edit edisi Bab 18.
Produksi Buku
Editor Eksekutifnya adalah Don Fowley. Editor Produksi Senior adalah Ken
Santotor. Editor Pengembangan Freelance adalah Chris Nelson. Asisten Editor
Pengembangan adalah Ryann Dannelly. Desainer sampul adalah Tom Nery.
Copyeditornya adalah Beverly Peavler. Pengoreksi lepas adalah Katrina Avery.
Pengindeks lepas adalah WordCo, Inc. Tim Aptara LaTex terdiri dari Neeraj Saxena
dan Lav kush.
Catatan Pribadi
Avi ingin mengucapkan terima kasih kepada Valerie atas cinta, kesabaran, dan
dukungannya selama merevisi buku ini.
Kata pengantar xix
Peter ingin berterima kasih kepada istrinya Carla dan anak-anaknya, Gwen, Owen,
dan Maddie.
Greg ingin mengucapkan terima kasih atas dukungan berkelanjutan dari
keluarganya: istrinya Pat dan putranya Thomas dan Jay.
Abraham Silberschatz, New Haven, CT
Peter Baer Galvin, Boston, MA
Greg Gagne, Kota Salt Lake, UT
Isi
GAMBARAN BAGIAN SATU Bab 1 Pendahuluan
1.1 Apa yang Dilakukan Sistem Operasi 4 1.2 Organisasi Sistem Komputer 7 1.3
Arsitektur Sistem Komputer 15 1.4 Operasi Sistem Operasi 21 1.5 Manajemen
Sumber Daya 27 1.6 Keamanan dan Perlindungan 33 1.7 Virtualisasi 34
1.8 Sistem Terdistribusi 35 1.9 Struktur Data Kernel 36 1.10 Lingkungan Komputasi
40 1.11 Sistem Operasi Sumber Terbuka dan Bebas 46
Latihan Latihan 53
Bacaan Lebih Lanjut 54
Bab 2 Struktur Sistem Operasi
2.1 Layanan Sistem Operasi 55 2.2 Antarmuka Pengguna dan Sistem Operasi 58
2.3 Panggilan Sistem 62
2.4 Layanan Sistem 74
2.5 Linker dan Loader 75 2.6 Mengapa Aplikasi Itu Spesifikasi Sistem Operasi 77
2.7 Desain dan Implementasi Sistem Operasi 79
2.8 Struktur Sistem Operasi 81 2.9 Membangun dan Mem-boot Sistem Operasi 92
2.10 Debug Sistem Operasi 95 2.11 Ringkasan 100
Latihan Latihan 101
Bacaan Lebih Lanjut 101
BAGIAN DUA PROSES MANAJEMEN Bab 3 Proses
3.1 Konsep Proses 106
3.2 Penjadwalan Proses 110
3.3 Operasi pada Proses 116 3.4 Komunikasi Antarproses 123 3.5 IPC dalam
Sistem Memori Bersama 125 3.6 IPC dalam Sistem Message-Passing 127
3.7 Contoh Sistem IPC 132 3.8 Komunikasi di Klien –
Sistem Server 145
3.9 Ringkasan 153
Latihan Latihan 154
Bacaan Lebih Lanjut 156
YYJ
Konten YYJJ
Bab 4 Utas & Konkurensi
4.1 Ikhtisar 160
4.2 Pemrograman Multicore 162 4.3 Model Multithreading 166 4.4 Perpustakaan
Thread 168
4.5 Threading Implisit 176
Bab 5 Penjadwalan CPU
5.1 Konsep Dasar 200
5.2 Kriteria Penjadwalan 204
5.3 Algoritma Penjadwalan 205 5.4 Penjadwalan Thread 217
5.5 Penjadwalan Multi-Prosesor 220 5.6 Penjadwalan CPU Real-Time 227
4.6 Masalah Threading 188
4.7 Contoh Sistem Operasi 194 4.8 Ringkasan 196
Latihan Latihan 197
Bacaan Lebih Lanjut 198
5.7 Contoh Sistem Operasi 234 5.8 Evaluasi Algoritma 244 5.9 Ringkasan 250
Latihan Latihan 251
Bacaan Lebih Lanjut 254
Spesifikasi Sistem Operasi 77
2.7 Desain dan Implementasi Sistem Operasi 79
2.8 Struktur Sistem Operasi 81 2.9 Membangun dan Mem-boot Sistem Operasi 92
2.10 Debug Sistem Operasi 95 2.11 Ringkasan 100
Latihan Latihan 101
Bacaan Lebih Lanjut 101
BAGIAN DUA PROSES MANAJEMEN Bab 3 Proses
3.1 Konsep Proses 106
3.2 Penjadwalan Proses 110
3.3 Operasi pada Proses 116 3.4 Komunikasi Antarproses 123 3.5 IPC dalam
Sistem Memori Bersama 125 3.6 IPC dalam Sistem Message-Passing 127
3.7 Contoh Sistem IPC 132 3.8 Komunikasi di Klien –
Sistem Server 145
3.9 Ringkasan 153
Latihan Latihan 154
Bacaan Lebih Lanjut 156
YYJ
Konten YYJJ
Bab 4 Utas & Konkurensi
4.1 Ikhtisar 160
4.2 Pemrograman Multicore 162 4.3 Model Multithreading 166 4.4 Perpustakaan
Thread 168
4.5 Threading Implisit 176
Bab 5 Penjadwalan CPU
5.1 Konsep Dasar 200
5.2 Kriteria Penjadwalan 204
5.3 Algoritma Penjadwalan 205 5.4 Penjadwalan Thread 217
5.5 Penjadwalan Multi-Prosesor 220 5.6 Penjadwalan CPU Real-Time 227
4.6 Masalah Threading 188
4.7 Contoh Sistem Operasi 194 4.8 Ringkasan 196
Latihan Latihan 197
Bacaan Lebih Lanjut 198
5.7 Contoh Sistem Operasi 234 5.8 Evaluasi Algoritma 244 5.9 Ringkasan 250
Latihan Latihan 251
Bacaan Lebih Lanjut 254
Bab 8 Kebuntuan
8.1 Model Sistem 318
8.2 Kebuntuan di Multithreaded
Aplikasi 319
8.3 Karakterisasi Deadlock 321 8.4 Metode Penanganan Deadlock 326 8.5
Pencegahan Deadlock 327
7.5 Pendekatan Alternatif 311 7.6 Ringkasan 314
Latihan Latihan 314
Bacaan Lebih Lanjut 315
8.6 Penghindaran Deadlock 330 8.7 Deteksi Deadlock 337 8.8 Pemulihan dari
Deadlock 341 8.9 Ringkasan 343
Latihan Latihan 344
Bacaan Lebih Lanjut 346
Isi YYJJJ
BAGIAN EMPAT MANAJEMEN MEMORI Bab 9 Memori Utama
9.1 Latar Belakang 349
9.2 Alokasi Memori Bersebelahan 356 9.3 Paging 360
9.4 Struktur Halaman Tabel 371 9.5 Pertukaran 376
Bab 10 Memori Virtual
10.1 Latar Belakang 389
10.2 Halaman Permintaan 392
10.3 Salin-di-Tulis 399
10.4 Penggantian Halaman 401
10.5 Alokasi Bingkai 413 10.6 Memukul 419
10.7 Kompresi Memori 425
9.6 Contoh: Arsitektur Intel 32- dan 64-bit 379
9.7 Contoh: Arsitektur ARMv8 383 9.8 Ringkasan 384
Latihan Latihan 385
Bacaan Lebih Lanjut 387
10.8 Mengalokasikan Memori Kernel 426 10.9 Pertimbangan Lain 430 10.10
Contoh Sistem Operasi 436 10.11 Ringkasan 440
Latihan Latihan 441
Bacaan Lebih Lanjut 444
BAGIAN LIMA MANAJEMEN PENYIMPANAN Bab 11 Struktur Penyimpanan Massal
11.1 Ikhtisar Struktur Penyimpanan Massal 449
11.2 Penjadwalan HDD 457
11.3 Penjadwalan NVM 461
11.4 Deteksi dan Koreksi Kesalahan 462 11.5 Manajemen Perangkat Penyimpanan
463
Bab 12 Sistem I/O
12.1 Ikhtisar 489
12.2 Perangkat Keras I/O 490
12.3 Antarmuka I/O Aplikasi 500 12.4 Subsistem I/O Kernel 508 12.5 Mengubah
Permintaan I/O ke Operasi Perangkat Keras 516
11.6 Manajemen Swap-Space 467 11.7 Storage Attachment 469 11.8 Struktur
RAID 473
11.9 Ringkasan 485
Latihan Latihan 486
Bacaan Lebih Lanjut 487
12.6 STREAM 519
12,7 Performa 521
12.8 Ringkasan 524
Latihan Latihan 525
Bacaan Lebih Lanjut 526
Konten YYJW
BAGIAN ENAM SISTEM FILE Bab 13 Antarmuka Sistem File
13.1 Konsep File 529 13.2 Metode Akses 539 13.3 Struktur Direktori 541 13.4
Proteksi 550
13.5 File yang Dipetakan Memori 555 13.6 Ringkasan 560
Latihan Latihan 560
Bacaan Lebih Lanjut 561
Bab 14 Implementasi Sistem File
14.1 Struktur Sistem File 564 14.2 Operasi Sistem File 566 14.3
Implementasi Direktori 568 14.4 Metode Alokasi 570 14.5 Manajemen Ruang
Bebas 578 14.6 Efisiensi dan Kinerja 582
14.7 Pemulihan 586
14.8 Contoh: Sistem File WAFL 589 14.9 Ringkasan 593
Latihan Latihan 594
Bacaan Lebih Lanjut 594
Bab 15 Internal Sistem File
15.1 Sistem File 597
15.2 Pemasangan Sistem File 598 15.3 Partisi dan Pemasangan 601 15.4 Berbagi
File 602
15.5 Sistem File Virtual 603 15.6 Sistem File Jarak Jauh 605
15.7 Konsistensi Semantik 608 15.8 NFS 610
15.9 Ringkasan 615
Latihan Latihan 616
Bacaan Lebih Lanjut 617
BAGIAN TUJUH KEAMANAN DAN PERLINDUNGAN Bab 16 Keamanan
16.1 Masalah Keamanan 621
16.2 Ancaman Program 625
16.3 Ancaman Sistem dan Jaringan 634 16.4 Kriptografi sebagai Alat Keamanan
637 16.5 Otentikasi Pengguna 648
Bab 17 Perlindungan
17.1 Tujuan Perlindungan 667
17.2 Prinsip Perlindungan 668 17.3 Cincin Perlindungan 669
17.4 Domain Perlindungan 671
17.5 Matriks Akses 675
17.6 Implementasi Access Matrix 679
17.7 Pencabutan Hak Akses 682 17.8 Kontrol Akses Berbasis Peran 683
16.6 Menerapkan Pertahanan Keamanan 653 16.7 Sebuah Contoh: Windows 10
662 16.8 Ringkasan 664
Bacaan Lebih Lanjut 665
17.9 Kontrol Akses Wajib
(MAC) 684
17.10 Sistem Berbasis Kemampuan 685 17.11 Metode Peningkatan Perlindungan
Lainnya 687
17.12 Perlindungan Berbasis Bahasa 690 17.13 Ringkasan 696
Bacaan Lebih Lanjut 697
Isi YYW
BAGIAN DELAPAN LANJUTAN
TOPIK Bab 18 Mesin Virtual
18.1 Ikhtisar 701
18.2 Sejarah 703
18.3 Manfaat dan Fitur 704 18.4 Blok Bangunan 707 18.5 Jenis VM dan
Implementasinya 713
18.6 Virtualisasi dan Komponen Sistem Operasi 719
18.7 Contoh 726
18.8 Penelitian Virtualisasi 728 18.9 Ringkasan 729
Bacaan Lebih Lanjut 730
Bab 19 Jaringan dan Sistem Terdistribusi
19.1 Keuntungan Sistem Terdistribusi 733
19.2 Struktur Jaringan 735
19.3 Struktur Komunikasi 738 19.4 Jaringan dan Sistem Operasi Terdistribusi 749
19.5 Masalah Desain dalam Sistem Terdistribusi 753
19.6 Sistem File Terdistribusi 757 19.7 Penamaan dan Transparansi DFS 761 19.8
Akses File Jarak Jauh 764
19.9 Pemikiran Akhir tentang Sistem File Terdistribusi 767
19.10 Ringkasan 768
Latihan Latihan 769
Bacaan Lebih Lanjut 770
BAGIAN SEMBILAN STUDI KASUS Bab 20 Sistem Linux
20.1 Sejarah Linux 775
20.2 Prinsip Desain 780 20.3 Modul Kernel 783
20.4 Manajemen Proses 786 20.5 Penjadwalan 790
20.6 Manajemen Memori 795 20.7 Sistem File 803
Bab 21 Windows 10
21.1 Sejarah 821
21.2 Prinsip Desain 826 21.3 Komponen Sistem 838 21.4 Layanan Terminal dan
Perpindahan Pengguna yang Cepat 874
20.8 Masukan dan Keluaran 810
20.9 Komunikasi Antarproses 812 20.10 Struktur Jaringan 813 20.11 Keamanan
816
20.12 Ringkasan 818
Latihan Latihan 819
Bacaan Lebih Lanjut 819
21.5 Sistem Berkas 875
21.6 Jaringan 880
21.7 Antarmuka Pemrogram 884 21.8 Ringkasan 895
Latihan Latihan 896
Bacaan Lebih Lanjut 897
Konten YYWJ
BAGIAN SEPULUH LAMPIRAN Bab A Sistem Operasi Influensa
A.1 Migrasi Fitur 1
A.2 Sistem Awal 2
A.3 Atlas 9
A.4 XDS-940 10
A.5 11
A.6 RC 4000 11
A.7 CTSS 12
A.8 MULTIK 13
A.9 IBM OS/360 13
Bab B Windows 7
B.1 Sejarah 1
B.2 Prinsip Desain 3
B.3 Komponen Sistem 10
B.4 Layanan Terminal dan Perpindahan Pengguna yang Cepat 34
B.5 Sistem Berkas 35
Bab C BSD UNIX
C.1 Sejarah UNIX 1
C.2 Prinsip Desain 6
C.3 Antarmuka Pemrogram 8
C.4 Antarmuka Pengguna 15
C.5 Manajemen Proses 18
C.6 Manajemen Memori 22
Bab D Sistem Mach
D.1 Sejarah Sistem Mach 1 D.2 Prinsip Desain 3
D.3 Komponen Sistem 4
D.4 Manajemen Proses 7
D.5 Komunikasi Antarproses 13
Kredit 963
Indeks 965
A.10 TOPS-20 15
A.11 CP/M dan MS/DOS 15
A.12 Sistem Operasi Macintosh dan Windows 16
A.13 Mach 16
A.14 Sistem Berbasis Kemampuan—Hydra dan CAP 18
A.15 Sistem Lainnya 20
Bacaan Selanjutnya 21
B.6 Jaringan 41
B.7 Antarmuka Pemrogram 46
B.8 Ringkasan 55
Latihan Latihan 55
Bacaan Lebih Lanjut 56
C.7 Sistem Berkas 25
C.8 Sistem I/O 33
C.9 Komunikasi Antarproses 36 C.10 Ringkasan 41
Bacaan Lebih Lanjut 42
D.6 Manajemen Memori 18
D.7 Antarmuka Pemrogram 23
D.8 Ringkasan 24
Bacaan Selanjutnya 25
Part One
Overview

Sistem operasi bertindak sebagai perantara antara pengguna komputer dan


perangkat keras komputer. Tujuan dari sistem operasi adalah untuk menyediakan
lingkungan di mana pengguna dapat menjalankan program dengan cara yang
nyaman dan efisien.
Sistem operasi adalah perangkat lunak yang mengelola perangkat keras
komputer. Perangkat keras harus menyediakan mekanisme yang tepat untuk
memastikan pengoperasian sistem komputer yang benar dan untuk mencegah
program mengganggu pengoperasian sistem yang benar.
Secara internal, sistem operasi sangat bervariasi dalam susunannya, karena
mereka diatur dalam banyak garis yang berbeda. Desain sistem operasi baru
adalah tugas utama, dan penting bahwa tujuan sistem didefinisikan dengan baik
sebelum desain dimulai.
Karena sistem operasi besar dan kompleks, itu harus dibuat sepotong demi
sepotong. Masing-masing bagian ini harus menjadi bagian sistem yang
digambarkan dengan baik, dengan input, output, dan fungsi yang ditentukan
dengan cermat.
1
BAB
pengantar
Sistem operasi adalah perangkat lunak yang mengelola perangkat keras
komputer. Ini juga menyediakan dasar untuk program aplikasi dan bertindak
sebagai perantara antara pengguna komputer dan perangkat keras komputer.
Aspek luar biasa dari sistem operasi adalah bagaimana mereka bervariasi dalam
menyelesaikan tugas-tugas ini di berbagai lingkungan komputasi. Sistem operasi
ada di mana-mana, mulai dari mobil dan peralatan rumah tangga yang mencakup
perangkat "Internet of Things", hingga ponsel pintar, komputer pribadi, komputer
perusahaan, dan lingkungan komputasi awan.
Untuk mengeksplorasi peran sistem operasi dalam lingkungan komputasi modern,
pertama-tama penting untuk memahami organisasi dan arsitektur perangkat
keras komputer. Ini termasuk CPU, memori, dan perangkat I/O, serta
penyimpanan. Tanggung jawab mendasar dari sistem operasi adalah
mengalokasikan sumber daya ini ke program.
Karena sistem operasi besar dan kompleks, itu harus dibuat sepotong demi
sepotong. Masing-masing bagian ini harus menjadi bagian sistem yang
digambarkan dengan baik, dengan hati-hati input, output, dan fungsi yang
ditentukan. Dalam bab ini, kami memberikan gambaran umum tentang
komponen utama dari sistem komputer kontemporer serta fungsi yang
disediakan oleh sistem operasi. Selain itu, kami membahas beberapa topik untuk
membantu mengatur tahapan untuk sisa teks: struktur data yang digunakan
dalam sistem operasi, lingkungan komputasi, dan sistem operasi open-source dan
gratis.
TUJUAN BAB
• Jelaskan organisasi umum dari sistem komputer dan peran interupsi.
• Menjelaskan komponen-komponen dalam sistem komputer multiprosesor
modern. • Ilustrasikan transisi dari mode pengguna ke mode kernel.
• Diskusikan bagaimana sistem operasi digunakan di berbagai lingkungan
komputasi.
• Berikan contoh sistem operasi sumber terbuka dan gratis.
3
4 Bab 1 Pendahuluan
1.1 Apa yang Dilakukan Sistem Operasi
Kami memulai diskusi kami dengan melihat peran sistem operasi dalam sistem
komputer secara keseluruhan. Sebuah sistem komputer dapat dibagi secara kasar
menjadi empat komponen: perangkat keras, sistem operasi, program aplikasi, dan
pengguna (Gambar 1.1).
Perangkat keras—unit pemrosesan pusat (CPU), memori, dan perangkat
input/output (I/O)—menyediakan sumber daya komputasi dasar untuk sistem.
Program aplikasi—seperti pengolah kata, spreadsheet, kompiler, dan browser
web—menentukan cara di mana sumber daya ini digunakan untuk memecahkan
masalah komputasi pengguna. Sistem operasi mengontrol perangkat keras dan
mengoordinasikan penggunaannya di antara berbagai program aplikasi untuk
berbagai pengguna.
Kita juga dapat melihat sistem komputer terdiri dari perangkat keras, perangkat
lunak, dan data. Sistem operasi menyediakan sarana untuk penggunaan yang
tepat dari sumber daya ini dalam pengoperasian sistem komputer. Sistem operasi
mirip dengan pemerintah. Seperti pemerintah, ia tidak melakukan fungsi yang
berguna dengan sendirinya. Ini hanya menyediakan lingkungan di mana program
lain dapat melakukan pekerjaan yang bermanfaat.
Untuk memahami lebih lengkap peran sistem operasi, kita selanjutnya
mengeksplorasi sistem operasi dari dua sudut pandang: pengguna dan sistem.
1.1.1 Tampilan Pengguna
Pandangan pengguna terhadap komputer bervariasi sesuai dengan antarmuka
yang digunakan. Banyak pengguna komputer duduk dengan laptop atau di depan
PC yang terdiri dari monitor, keyboard, dan mouse. Sistem seperti itu dirancang
untuk satu pengguna untuk memonopoli sumber dayanya. Tujuannya adalah
untuk memaksimalkan pekerjaan (atau permainan) yang dilakukan pengguna.
Dalam hal ini, sistem operasi sebagian besar dirancang untuk kemudahan
penggunaan, dengan beberapa perhatian diberikan pada kinerja dan keamanan
dan tidak ada perhatian pada pemanfaatan sumber daya—bagaimana berbagai
sumber daya perangkat keras dan perangkat lunak dibagikan.
pengguna
program aplikasi
(kompiler, browser web, kit pengembangan, dll.)
sistem operasi
perangkat keras komputer
(CPU, memori, perangkat I/O, dll.)
Gambar 1.1 Tampilan abstrak dari komponen-komponen sistem komputer.
1.1 Apa yang Dilakukan Sistem Operasi
Semakin banyak pengguna berinteraksi dengan perangkat seluler seperti ponsel
cerdas dan tablet—perangkat yang menggantikan sistem komputer desktop dan
laptop bagi sebagian pengguna. Perangkat ini biasanya terhubung ke jaringan
melalui seluler atau teknologi nirkabel lainnya. Antarmuka pengguna untuk
komputer seluler umumnya menampilkan layar sentuh, di mana pengguna
berinteraksi dengan sistem dengan menekan dan menggesekkan jari di layar
daripada menggunakan keyboard dan mouse fisik. Banyak perangkat seluler juga
memungkinkan pengguna untuk berinteraksi melalui antarmuka pengenalan
suara, seperti Apple Siri.
Beberapa komputer memiliki sedikit atau tidak ada tampilan pengguna. Misalnya,
komputer tertanam di perangkat rumah dan mobil mungkin memiliki keypad
numerik dan dapat menyalakan atau mematikan lampu indikator untuk
menunjukkan status, tetapi mereka dan sistem operasi dan aplikasinya dirancang
terutama untuk berjalan tanpa campur tangan pengguna.
1.1.2 Tampilan Sistem
Dari sudut pandang komputer, sistem operasi adalah program yang paling erat
hubungannya dengan perangkat keras. Dalam konteks ini, kita dapat melihat
sistem operasi sebagai pengalokasi sumber daya. Sebuah sistem komputer
memiliki banyak sumber daya yang mungkin diperlukan untuk memecahkan
masalah: waktu CPU, ruang memori, ruang penyimpanan, perangkat I/O, dan
sebagainya. Sistem operasi bertindak sebagai pengelola sumber daya ini.
Menghadapi permintaan sumber daya yang banyak dan mungkin bertentangan,
sistem operasi harus memutuskan bagaimana mengalokasikannya ke program
dan pengguna tertentu sehingga dapat mengoperasika sistem komputer secara
efisien dan adil.
Pandangan yang sedikit berbeda dari sistem operasi menekankan kebutuhan
untuk mengontrol berbagai perangkat I/O dan program pengguna. Sistem operasi
adalah program kontrol. Program kontrol mengelola eksekusi program pengguna
untuk mencegah kesalahan dan penggunaan komputer yang tidak tepat. Hal ini
terutama berkaitan dengan operasi dan kontrol perangkat I/O.
1.1.3 Mendefinisikan Sistem Operasi
Sekarang, Anda mungkin dapat melihat bahwa istilah sistem operasi mencakup
banyak peran dan fungsi. Itulah yang terjadi, setidaknya sebagian, karena
banyaknya desain dan penggunaan komputer. Komputer hadir dalam
pemanggang roti, mobil, kapal, pesawat ruang angkasa, rumah, dan bisnis.
Mereka adalah dasar untuk mesin game, tuner TV kabel, dan sistem kontrol
industri.
Untuk menjelaskan keragaman ini, kita dapat beralih ke sejarah komputer.
Meskipun komputer memiliki sejarah yang relatif singkat, mereka telah
berkembang pesat. Komputasi dimulai sebagai eksperimen untuk menentukan
apa yang dapat dilakukan dan dengan cepat dipindahkan ke sistem tujuan tetap
untuk penggunaan militer, seperti pemecahan kode dan perencanaan lintasan,
dan penggunaan pemerintah, seperti perhitungan sensus. Komputer-komputer
awal itu berevolusi menjadi mainframe multifungsi yang serba guna, dan saat
itulah sistem operasi lahir. Pada 1960-an, Hukum Moore meramalkan bahwa
jumlah transistor pada sirkuit terintegrasi akan berlipat ganda setiap 18 bulan,
dan prediksi itu terbukti benar. Komputer memperoleh fungsionalitas dan
menyusut dalam ukuran, yang mengarah ke sejumlah besar penggunaan dan
sejumlah besar dan berbagai sistem operasi. (Lihat Lampiran A untuk rincian lebih
lanjut tentang sejarah sistem operasi.)
Lalu, bagaimana kita bisa mendefinisikan apa itu sistem operasi? Secara umum,
kami tidak memiliki definisi yang memadai tentang sistem operasi. Sistem operasi
6 Bab 1 Pendahuluan
ada karena mereka menawarkan cara yang masuk akal untuk memecahkan
masalah menciptakan sistem komputasi yang dapat digunakan. Tujuan mendasar
dari sistem komputer adalah untuk mengeksekusi program dan membuat
pemecahan masalah pengguna lebih mudah. Perangkat keras komputer dibangun
untuk tujuan ini. Karena perangkat keras saja tidak mudah digunakan, program
aplikasi dikembangkan. Program-program ini memerlukan operasi umum
tertentu, seperti yang mengendalikan perangkat I/O. Fungsi umum untuk
mengontrol dan mengalokasikan sumber daya kemudian disatukan menjadi satu
perangkat lunak: sistem operasi.
Selain itu, kami tidak memiliki definisi yang diterima secara universal tentang apa
yang merupakan bagian dari sistem operasi. Sudut pandang yang sederhana
adalah bahwa itu mencakup semua yang dikirim oleh vendor saat Anda memesan
"sistem operasi." Fitur yang disertakan, bagaimanapun, sangat bervariasi di
seluruh sistem. Beberapa sistem memakan ruang kurang dari satu megabyte dan
bahkan tidak memiliki editor layar penuh, sedangkan yang lain membutuhkan
ruang gigabyte dan sepenuhnya didasarkan pada sistem windowing grafis. Definisi
yang lebih umum, dan yang biasanya kita ikuti, adalah bahwa sistem operasi
adalah satu-satunya program yang berjalan sepanjang waktu di komputer—
biasanya disebut kernel. Selain kernel, ada dua jenis program lainnya: program
sistem, yang terkait dengan sistem operasi tetapi tidak harus merupakan bagian
dari kernel, dan program aplikasi, yang mencakup semua program yang tidak
terkait dengan pengoperasian sistem.
Masalah apa yang merupakan sistem operasi menjadi semakin penting ketika
komputer pribadi menjadi lebih luas dan sistem operasi tumbuh semakin canggih.
Pada tahun 1998, Departemen Kehakiman Amerika Serikat mengajukan gugatan
terhadap Microsoft, pada dasarnya mengklaim bahwa Microsoft memasukkan
terlalu banyak fungsi dalam sistem operasinya dan dengan demikian mencegah
vendor aplikasi untuk bersaing. (Misalnya, browser web merupakan bagian
integral dari sistem operasi Microsoft.) Akibatnya, Microsoft dinyatakan bersalah
menggunakan monopoli sistem operasinya untuk membatasi persaingan.
Namun, hari ini, jika kita melihat sistem operasi untuk perangkat seluler, kita
melihat bahwa sekali lagi jumlah fitur yang membentuk sistem operasi meningkat.
Sistem operasi seluler sering kali tidak hanya menyertakan inti kernel tetapi juga
middleware—satu set kerangka kerja perangkat lunak yang menyediakan layanan
tambahan untuk pengembang aplikasi. Misalnya, masing-masing dari dua sistem
operasi seluler yang paling menonjol—iOS Apple dan Android Google—fitur
MENGAPA MEMPELAJARI SISTEM OPERASI?
Meskipun ada banyak praktisi ilmu komputer, hanya sebagian kecil dari mereka
yang akan terlibat dalam pembuatan atau modifikasi sistem operasi. Lalu,
mengapa mempelajari sistem operasi dan bagaimana cara kerjanya? Hanya
karena, karena hampir semua kode berjalan di atas sistem operasi, pengetahuan
tentang cara kerja sistem operasi sangat penting untuk pemrograman yang tepat,
efisien, efektif, dan aman. Memahami dasar-dasar sistem operasi, bagaimana
mereka menggerakkan perangkat keras komputer, dan apa yang mereka sediakan
untuk aplikasi tidak hanya penting bagi mereka yang memprogramnya tetapi juga
sangat berguna bagi mereka yang menulis program dan menggunakannya.
1.2 Organisasi Sistem Komputer 7
kernel inti bersama dengan middleware yang mendukung database, multimedia,
dan grafik (untuk menyebutkan beberapa saja).
Singkatnya, untuk tujuan kami, sistem operasi mencakup kernel yang selalu
berjalan, kerangka kerja middleware yang memudahkan pengembangan aplikasi
dan menyediakan fitur, dan program sistem yang membantu dalam mengelola
sistem saat sedang berjalan. Sebagian besar teks ini berkaitan dengan kernel
sistem operasi tujuan umum, tetapi komponen lain dibahas sesuai kebutuhan
untuk menjelaskan desain dan operasi sistem operasi sepenuhnya.
1.2 Organisasi Sistem Komputer
Sistem komputer serba guna modern terdiri dari satu atau lebih CPU dan
sejumlah pengontrol perangkat yang terhubung melalui bus umum yang
menyediakan akses antara komponen dan memori bersama (Gambar 1.2). Setiap
pengontrol perangkat bertanggung jawab atas jenis perangkat tertentu (misalnya,
drive disk, perangkat audio, atau tampilan grafis). Tergantung pada pengontrol,
lebih dari satu perangkat dapat dipasang. Misalnya, satu port USB sistem dapat
terhubung ke hub USB, di mana beberapa perangkat dapat terhubung. Pengontrol
perangkat memelihara beberapa penyimpanan buffer lokal dan satu set register
tujuan khusus. Pengontrol perangkat bertanggung jawab untuk memindahkan
data antara perangkat periferal yang dikontrolnya dan penyimpanan buffer
lokalnya.
Biasanya, sistem operasi memiliki driver perangkat untuk setiap pengontrol
perangkat. Driver perangkat ini memahami pengontrol perangkat dan
menyediakan antarmuka yang seragam ke perangkat lainnya untuk sistem
operasi. CPU dan pengontrol perangkat dapat mengeksekusi secara paralel,
bersaing untuk siklus memori. Untuk memastikan akses yang teratur ke memori
bersama, pengontrol memori menyinkronkan akses ke memori.
Dalam subbagian berikut, kami menjelaskan beberapa dasar tentang bagaimana
sistem tersebut beroperasi, dengan fokus pada tiga aspek utama dari sistem. Kami
mulai dengan interupsi, yang memperingatkan CPU untuk peristiwa yang
membutuhkan perhatian. Kami kemudian membahas struktur penyimpanan dan
struktur I/O.
monitor printer keyboard mouse
CPU
bus sistem
Penyimpanan
disk
piringan
pengontrol
on line
pengontrol USB
adaptor grafis
Gambar 1.2 Sistem komputer PC biasa.
8 Bab 1 Pendahuluan
1.2.1 Interupsi
Pertimbangkan operasi komputer yang khas: program yang melakukan I/O. Untuk
memulai operasi I/O, driver perangkat memuat register yang sesuai di pengontrol
perangkat. Pengontrol perangkat, pada gilirannya, memeriksa isi register ini untuk
menentukan tindakan apa yang harus diambil (seperti "membaca karakter dari
keyboard"). Pengontrol memulai transfer data dari perangkat ke buffer lokalnya.
Setelah transfer data selesai, pengontrol perangkat memberi tahu driver
perangkat bahwa ia telah menyelesaikan operasinya. Pengandar perangkat
kemudian memberikan kontrol ke bagian lain dari sistem operasi, mungkin
mengembalikan data atau pointer ke data jika operasi itu dibaca. Untuk operasi
lain, driver perangkat mengembalikan informasi status seperti "menulis selesai
dengan sukses" atau "perangkat sibuk". Tetapi bagaimana pengontrol memberi
tahu driver perangkat bahwa ia telah menyelesaikan operasinya? Ini dicapai
melalui interupsi.
1.2.1.1 Ikhtisar
Perangkat keras dapat memicu interupsi kapan saja dengan mengirimkan sinyal
ke CPU, biasanya melalui bus sistem. (Mungkin ada banyak bus dalam sistem
komputer, tetapi bus sistem adalah jalur komunikasi utama antara komponen
utama.) Interupsi juga digunakan untuk banyak tujuan lain dan merupakan bagian
penting dari bagaimana sistem operasi dan perangkat keras berinteraksi.
Ketika CPU terganggu, ia menghentikan apa yang dilakukannya dan segera
mentransfer eksekusi ke lokasi tetap. Lokasi tetap biasanya berisi alamat awal
dimana service routine untuk interupsi berada. Rutinitas layanan interupsi
dijalankan; setelah selesai, CPU melanjutkan komputasi yang terputus. Garis
waktu operasi ini ditunjukkan pada Gambar 1.3. Untuk menjalankan animasi yang
terkait dengan gambar ini, silakan klik di sini.
Interupsi adalah bagian penting dari arsitektur komputer. Setiap desain komputer
memiliki mekanisme interupsinya sendiri, tetapi ada beberapa fungsi yang umum.
Interupsi harus mentransfer kontrol ke rutin layanan interupsi yang sesuai.
Metode langsung untuk mengelola transfer ini adalah dengan memanggil rutin
generik untuk memeriksa informasi interupsi. Rutinitas itu, pada gilirannya,

Gambar 1.3 Garis waktu interupsi untuk satu program melakukan output.
1.2 Organisasi Sistem Komputer 9
akan memanggil handler khusus interupsi. Namun, interupsi harus ditangani
dengan cepat, karena sering terjadi. Sebuah tabel pointer untuk mengganggu
rutinitas dapat digunakan sebagai gantinya untuk memberikan kecepatan yang
diperlukan. Rutin interupsi dipanggil secara tidak langsung melalui tabel, tanpa
memerlukan rutin perantara. Umumnya, table pointer untuk mengganggu
rutinitas dapat digunakan sebagai gantinya untuk memberikan kecepatan yang
diperlukan. Rutin interupsi dipanggil secara tidak langsung melalui tabel, tanpa
memerlukan rutin perantara. Umumnya, tabel pointer disimpan dalam memori
rendah (seratus atau lebih lokasi pertama). Lokasi ini menyimpan alamat rutin
layanan interupsi untuk berbagai perangkat. Array ini, atau vektor interupsi,
alamat kemudian diindeks oleh nomor unik, diberikan dengan permintaan
interupsi, untuk memberikan alamat rutin layanan interupsi untuk perangkat
interupsi. Sistem operasi yang berbeda seperti Windows dan UNIX mengirimkan
interupsi dengan cara ini.
Arsitektur interupsi juga harus menyimpan informasi status dari apa pun yang
diinterupsi, sehingga dapat memulihkan informasi ini setelah melayani interupsi.
Jika rutin interupsi perlu mengubah status prosesor—misalnya, dengan
memodifikasi nilai register—ia harus secara eksplisit menyimpan status saat ini
dan kemudian memulihkan status itu sebelum kembali. Setelah interupsi diservis,
alamat pengirim yang disimpan dimuat ke penghitung program, dan komputasi
yang terputus dilanjutkan seolah-olah interupsi tidak terjadi.
1.2.1.2 Implementasi
Mekanisme interupsi dasar bekerja sebagai berikut. Perangkat keras CPU memiliki
kabel yang disebut garis permintaan interupsi yang dirasakan CPU setelah
mengeksekusi setiap instruksi. Ketika CPU mendeteksi bahwa pengontrol telah
menegaskan sinyal pada jalur permintaan interupsi, ia membaca nomor interupsi
dan melompat ke rutin penangan interupsi dengan menggunakan nomor interupsi
itu sebagai indeks ke dalam vektor interupsi. Kemudian memulai eksekusi di
alamat yang terkait dengan indeks itu. Handler interupsi menyimpan status apa
pun yang akan diubah selama operasinya, menentukan penyebab interupsi,
melakukan pemrosesan yang diperlukan, melakukan pemulihan status, dan
mengeksekusi pengembalian dari instruksi interupsi untuk mengembalikan CPU
ke status eksekusi sebelum interupsi . Kami mengatakan bahwa pengontrol
perangkat menimbulkan interupsi dengan menyatakan sinyal pada jalur
permintaan interupsi, CPU menangkap interupsi dan mengirimkannya ke
penangan interupsi, dan penangan menghapus interupsi dengan melayani
perangkat. Gambar 1.4 merangkum siklus I/O yang digerakkan oleh interupsi.
Mekanisme interupsi dasar yang baru saja dijelaskan memungkinkan CPU untuk
merespons peristiwa asinkron, seperti ketika pengontrol perangkat siap untuk
diservis. Namun, dalam sistem operasi modern, kita membutuhkan fitur
penanganan interupsi yang lebih canggih.
1. Kita membutuhkan kemampuan untuk menunda penanganan interupsi selama
pemrosesan kritis.
2. Kami membutuhkan cara yang efisien untuk mengirimkan ke penangan
interupsi yang tepat untuk perangkat.
3. Diperlukan interupsi bertingkat, agar sistem operasi dapat membedakan
interupsi berprioritas tinggi dan rendah dan dapat merespons dengan derajat
yang sesuai urgensi.
Dalam perangkat keras komputer modern, ketiga fitur ini disediakan oleh CPU dan
perangkat keras pengontrol interupsi.
10 Bab 1 Pendahuluan
CPU
1
driver perangkat memulai I/O
2
CPU mengeksekusi pemeriksaan untuk
interupsi antar instruksi
CPU menerima interupsi,
4
mentransfer kontrol ke
penangan interupsi
7
5
penangan interupsi
memproses data,
kembali dari interupsi
6
CPU dilanjutkan
pengolahan dari
tugas terganggu
Pengontrol I/O
memulai I/O
3
masukan siap, keluaran
lengkap, atau error
menghasilkan sinyal interupsi
Gambar 1.4 Siklus I/O yang digerakkan oleh interupsi.
Kebanyakan CPU memiliki dua jalur permintaan interupsi. Salah satunya adalah
interupsi nonmaskable, yang dicadangkan untuk kejadian seperti kesalahan
memori yang tidak dapat dipulihkan. Baris interupsi kedua adalah maskable:
dapat dimatikan oleh CPU sebelum eksekusi urutan instruksi kritis yang tidak
boleh diinterupsi. Interupsi maskable digunakan oleh pengontrol perangkat untuk
meminta layanan.
Ingat bahwa tujuan dari mekanisme interupsi vektor adalah untuk mengurangi
kebutuhan penangan interupsi tunggal untuk mencari semua sumber interupsi
yang mungkin untuk menentukan mana yang membutuhkan layanan. Namun,
dalam praktiknya, komputer memiliki lebih banyak perangkat (dan, karenanya,
penangan interupsi) daripada mereka memiliki elemen alamat dalam vektor
interupsi. Cara umum untuk memecahkan masalah ini adalah dengan
menggunakan rantai interupsi, di mana setiap elemen dalam vektor interupsi
menunjuk ke kepala daftar penangan interupsi. Ketika interupsi dinaikkan,
penangan pada daftar yang sesuai dipanggil satu per satu, sampai ditemukan yang
dapat melayani permintaan tersebut. Struktur ini merupakan kompromi antara
overhead tabel interupsi besar dan inefisiensi pengiriman ke satu penangan
interupsi.
Gambar 1.5 mengilustrasikan desain vektor interupsi untuk prosesor Intel.
Peristiwa dari 0 hingga 31, yang tidak dapat ditutup-tutupi, digunakan untuk
menandakan berbagai kondisi kesalahan. Peristiwa dari 32 hingga 255, yang dapat
ditutup-tutupi, digunakan untuk tujuan seperti interupsi yang dihasilkan
perangkat.
Mekanisme interupsi juga menerapkan sistem tingkat prioritas interupsi. Level ini
memungkinkan CPU untuk menunda penanganan inter-
1.2 Organisasi Sistem Komputer 11
deskripsi nomor vektor
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19–31 32–255
membagi kesalahan
debug pengecualian
gangguan nol
titik putus
limpahan yang terdeteksi INTO
pengecualian rentang terikat
opcode tidak valid
perangkat tidak tersedia
kesalahan ganda
segmen coprocessor overrun (dicadangkan) segmen status tugas tidak valid
segmen tidak ada
kesalahan tumpukan
perlindungan umum
kesalahan halaman
(Intel dilindungi undang-undang, jangan gunakan)
kesalahan titik-mengambang
pemeriksaan keselarasan
pemeriksaan mesin
(Intel dilindungi undang-undang, jangan gunakan)
interupsi yang dapat ditutup-tutupi
Gambar 1.5 Tabel vektor peristiwa prosesor Intel.
rupt tanpa menutupi semua interupsi dan memungkinkan interupsi berprioritas
tinggi untuk mendahului eksekusi interupsi berprioritas rendah. Singkatnya,
interupsi digunakan di seluruh sistem operasi modern untuk menangani peristiwa
asinkron (dan untuk tujuan lain kita akan membahas seluruh teks). Pengontrol
perangkat dan kesalahan perangkat keras meningkatkan interupsi. Untuk
memungkinkan pekerjaan yang paling mendesak dilakukan terlebih dahulu,
komputer modern menggunakan sistem prioritas interupsi. Karena interupsi
banyak digunakan untuk pemrosesan yang sensitif terhadap waktu, penanganan
interupsi yang efisien diperlukan untuk kinerja sistem yang baik.
1.2.2 Struktur Penyimpanan
CPU hanya dapat memuat instruksi dari memori, jadi program apa pun harus
dimuat terlebih dahulu ke dalam memori untuk dijalankan. Komputer serba guna
menjalankan sebagian besar programnya dari memori yang dapat ditulis ulang,
yang disebut memori utama (juga disebut memori akses acak, atau RAM). Memori
utama umumnya diimplementasikan dalam teknologi semikonduktor yang
disebut memori akses acak dinamis (DRAM).
Komputer menggunakan bentuk lain dari memori juga. Misalnya, program
pertama yang dijalankan saat komputer dihidupkan adalah program bootstrap,
yang kemudian memuat sistem operasi. Karena RAM bersifat volatil—kehilangan
isinya saat daya dimatikan atau hilang—kami tidak dapat mempercayainya untuk
menahan program bootstrap. Sebaliknya, untuk ini dan beberapa lainnya
Untuk tujuan ini, komputer menggunakan memori hanya baca yang dapat
diprogram yang dapat dihapus secara elektrik (EEPROM) dan bentuk lain dari
firmwar — penyimpanan yang jarang ditulis dan tidak mudah menguap. EEPROM
12 Bab 1 Pendahuluan
DEFINISI DAN NOTASI PENYIMPANAN
Unit dasar penyimpanan komputer adalah bit. Sebuah bit dapat berisi salah satu
dari dua nilai, 0 dan 1. Semua penyimpanan lain di komputer didasarkan pada
kumpulan bit. Dengan bit yang cukup, sungguh menakjubkan betapa banyak hal
yang dapat diwakili oleh komputer: angka, huruf, gambar, film, suara, dokumen,
dan program, untuk beberapa nama. Satu byte adalah 8 bit, dan pada kebanyakan
komputer, ini adalah bagian penyimpanan terkecil yang nyaman. Misalnya,
kebanyakan komputer tidak memiliki instruksi untuk bergerak sedikit tetapi
memiliki instruksi untuk memindahkan satu byte. Istilah yang kurang umum
adalah kata, yang merupakan unit data asli arsitektur komputer tertentu. Sebuah
kata terdiri dari satu atau lebih byte. Misalnya, komputer yang memiliki register
64-bit dan pengalamatan memori 64-bit biasanya memiliki kata-kata 64-bit (8-
byte). Sebuah komputer mengeksekusi banyak operasi dalam ukuran kata aslinya
daripada satu byte pada suatu waktu.
Penyimpanan komputer, bersama dengan sebagian besar throughput komputer,
umumnya diukur dan dimanipulasi dalam byte dan kumpulan byte. Satu kilobyte,
atau KB, adalah 1.024 byte; satu megabyte, atau MB, adalah 1.0242 byte;
gigabyte, atau GB, adalah 1.0243 byte; satu terabyte, atau TB, adalah 1.0244 byte;
dan petabyte, atau PB, adalah 1.0245 byte. Produsen komputer sering
membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1
juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan
pengecualian untuk aturan umum ini; mereka diberikan dalam bit (karena
jaringan memindahkan data sedikit demi sedikit).
dapat diubah tetapi tidak dapat sering diubah. Selain itu, kecepatannya rendah,
sehingga sebagian besar berisi program dan data statis yang tidak sering
digunakan. Misalnya, iPhone menggunakan EEPROM untuk menyimpan nomor
seri dan informasi perangkat keras tentang perangkat.
Semua bentuk memori menyediakan array byte. Setiap byte memiliki alamatnya
sendiri. Interaksi dicapai melalui urutan memuat atau menyimpan instruksi ke
alamat memori tertentu. Instruksi beban memindahkan byte atau kata dari
memori utama ke register internal di dalam CPU, sedangkan instruksi toko
memindahkan isi register ke memori utama. Selain memuat dan menyimpan
eksplisit, CPU secara otomatis memuat instruksi dari memori utama untuk
dieksekusi dari lokasi yang disimpan di penghitung program.
Siklus instruksi–eksekusi tipikal, seperti yang dieksekusi pada sistem dengan
arsitektur von Neumann, pertama-tama mengambil dan instruksi dari memori dan
menyimpan instruksi itu dalam register instruksi. Instruksi kemudian didekodekan
dan dapat menyebabkan operan diambil dari memori dan disimpan dalam
beberapa register internal. Setelah instruksi pada operan telah dieksekusi,
hasilnya dapat disimpan kembali dalam memori. Perhatikan bahwa unit memori
hanya melihat aliran alamat memori. Itu tidak tahu bagaimana mereka dihasilkan
(oleh penghitung instruksi, pengindeksan, tipuan, alamat literal, atau cara lain)
atau untuk apa mereka (instruksi atau data). Dengan demikian, kita dapat
mengabaikan bagaimana alamat memori dihasilkan oleh suatu program. Kami
hanya tertarik pada urutan alamat memori yang dihasilkan oleh program yang
sedang berjalan.
Idealnya, kita ingin program dan data berada di memori utama secara permanen.
Pengaturan ini biasanya tidak mungkin pada kebanyakan sistem karena dua
alasan:
1.2 Organisasi Sistem Komputer 13
1. Memori utama biasanya terlalu kecil untuk menyimpan semua program dan
data yang dibutuhkan secara permanen.
2. Memori utama, sebagaimana disebutkan, bersifat volatil—isinya akan hilang
saat daya dimatikan atau hilang.
Dengan demikian, sebagian besar sistem komputer menyediakan penyimpanan
sekunder sebagai perpanjangan dari memori utama. Persyaratan utama untuk
penyimpanan sekunder adalah dapat menyimpan data dalam jumlah besar secara
permanen.
Perangkat penyimpanan sekunder yang paling umum adalah hard disk drive
(HDD) dan perangkat memori nonvolatile (NVM), yang menyediakan
penyimpanan untuk program dan data. Sebagian besar program (sistem dan
aplikasi) disimpan di penyimpanan sekunder hingga dimuat ke dalam memori.
Banyak program kemudian menggunakan penyimpanan sekunder sebagai sumber
dan tujuan pemrosesannya. Penyimpanan sekunder juga jauh lebih lambat
daripada memori utama. Oleh karena itu, manajemen penyimpanan sekunder
yang tepat sangat penting untuk sistem komputer, seperti yang kita bahas di Bab
11.
Namun, dalam arti yang lebih luas, struktur penyimpanan yang telah kami
jelaskan — terdiri dari register, memori utama, dan penyimpanan sekunder —
hanyalah salah satu dari banyak kemungkinan desain sistem penyimpanan.
Komponen lain yang mungkin termasuk memori cache, CD-ROM atau blu-ray, pita
magnetik, dan sebagainya. Yang cukup lambat dan cukup besar sehingga hanya
digunakan untuk tujuan khusus — untuk menyimpan salinan cadangan materi
yang disimpan di perangkat lain, misalnya — disebut penyimpanan tersier. Setiap
sistem penyimpanan menyediakan fungsi dasar menyimpan datum dan menahan
datum itu sampai diambil di lain waktu. Perbedaan utama di antara berbagai
sistem penyimpanan terletak pada kecepatan, ukuran, dan volatilitas.
Berbagai macam sistem penyimpanan dapat diatur dalam hierarki (Gambar 1.6)
sesuai dengan kapasitas penyimpanan dan waktu akses. Sebagai aturan umum,
ada
kapasitas penyimpanan
R
e
aku
aku
A

mendaftar
cache
waktu akses
R
utama
e
T
S
sm
lincah
penyimpanan
penyimpanan
A
F

memori utama
--------------------------------------------------------
tidak mudah menguap
penyimpanan
R
e
G
R
A
aku

memori nonvolatil

hard disk drive


cakram optik
pita magnetik
Gambar 1.6 Hirarki perangkat penyimpanan.
penyimpanan sekunder
tersier
penyimpanan
ulang
w
Hai
aku
S
14 Bab 1 Pendahuluan
trade-off antara ukuran dan kecepatan, dengan memori yang lebih kecil dan lebih
cepat lebih dekat ke CPU. Seperti yang ditunjukkan pada gambar, di Selain
berbeda dalam kecepatan dan kapasitas, berbagai sistem penyimpanan bersifat
volatil atau nonvolatil. Penyimpanan volatil, seperti yang disebutkan sebelumnya,
kehilangan isinya saat daya perangkat dicabut, sehingga data harus ditulis ke
penyimpanan nonvolatil untuk diamankan.
Empat tingkat memori teratas pada gambar dibangun menggunakan memori semi
konduktor, yang terdiri dari sirkuit elektronik berbasis semikonduktor. Perangkat
NVM, pada level keempat, memiliki beberapa varian tetapi secara umum lebih
cepat daripada hard disk. Bentuk perangkat NVM yang paling umum adalah
memori flash, yang populer di perangkat seluler seperti smartphone dan tablet.
Semakin, memori flash digunakan untuk penyimpanan jangka panjang di laptop,
desktop, dan server juga.
Karena penyimpanan memainkan peran penting dalam struktur sistem operasi,
kami akan sering merujuknya dalam teks. Secara umum, kami akan menggunakan
terminologi berikut:
• Penyimpanan volatil akan disebut hanya sebagai memori. Jika kita perlu
menekankan ukuran jenis perangkat penyimpanan tertentu (misalnya, register),
kita akan melakukannya secara eksplisit.
• Penyimpanan nonvolatil mempertahankan isinya saat listrik padam. Ini akan
disebut sebagai NVS. Sebagian besar waktu yang kami habiskan di NVS akan
berada di penyimpanan sekunder. Jenis penyimpanan ini dapat diklasifikasikan
menjadi dua jenis yang berbeda:
Mekanik. Beberapa contoh sistem penyimpanan tersebut adalah HDD, disk optik,
penyimpanan holografik, dan pita magnetik. Jika kita perlu menekankan jenis
perangkat penyimpanan mekanis tertentu (misalnya, pita magnetik), kita akan
melakukannya secara eksplisit.
Listrik. Beberapa contoh sistem penyimpanan tersebut adalah memori flash,
FRAM, NRAM, dan SSD. Penyimpanan listrik akan disebut sebagai NVM. Jika kami
perlu menekankan jenis perangkat penyimpanan listrik tertentu (misalnya, SSD),
kami akan melakukannya secara eksplisit.
Penyimpanan mekanis umumnya lebih besar dan lebih murah per byte daripada
penyimpanan listrik. Sebaliknya, penyimpanan listrik biasanya mahal, lebih kecil,
dan lebih cepat daripada penyimpanan mekanis.
Desain sistem penyimpanan yang lengkap harus menyeimbangkan semua faktor
yang baru saja dibahas: ia harus menggunakan hanya sebanyak mungkin memori
yang diperlukan sambil menyediakan penyimpanan non-volatil yang murah dan
sebanyak mungkin. Cache dapat diinstal untuk meningkatkan kinerja di mana ada
perbedaan besar dalam waktu akses atau kecepatan transfer antara dua
komponen.
1.2.3 Struktur I/O
Sebagian besar kode sistem operasi didedikasikan untuk mengelola I/O, baik
karena pentingnya keandalan dan kinerja sistem maupun karena berbagai sifat
perangkat.
Ingat dari awal bagian ini bahwa sistem komputer tujuan umum terdiri dari
beberapa perangkat, yang semuanya bertukar data melalui
1.3 Arsitektur Sistem Komputer 15
eksekusi instruksi
C
siklus
A
utas instruksi eksekusi
C
H
Saya
/HAI

R
e
qu
e
S
T
CPU (*N)
D
A
T
A
perangkat
(*M)
e
Saya
n
T
e
R
R
kamu
P
T
DMA pergerakan data
dan
data
Penyimpanan
Gambar 1.7 Cara kerja sistem komputer modern.
bis. Bentuk I/O yang digerakkan oleh interupsi yang dijelaskan dalam Bagian 1.2.1
baik untuk memindahkan sejumlah kecil data tetapi dapat menghasilkan
overhead yang tinggi bila digunakan untuk perpindahan data massal seperti NVS
I/O. Untuk mengatasi masalah ini, akses memori langsung (DMA) digunakan.
Setelah menyiapkan buffer, pointer, dan counter untuk perangkat I/O, pengontrol
perangkat mentransfer seluruh blok data secara langsung ke atau dari perangkat
dan memori utama, tanpa intervensi oleh CPU. Hanya satu interupsi yang
dihasilkan per blok, untuk memberi tahu driver perangkat bahwa operasi telah
selesai, bukan satu interupsi per byte yang dihasilkan untuk perangkat
berkecepatan rendah. Saat pengontrol perangkat melakukan operasi ini, CPU
tersedia untuk menyelesaikan pekerjaan lain.
Beberapa sistem high-end menggunakan switch daripada arsitektur bus. Pada
sistem ini, beberapa komponen dapat berbicara dengan komponen lain secara
bersamaan, daripada bersaing untuk siklus di bus bersama. Dalam hal ini, DMA
bahkan lebih efektif. Gambar 1.7 menunjukkan interaksi semua komponen sistem
komputer.
1.3 Arsitektur Sistem Komputer
Pada Bagian 1.2, kami memperkenalkan struktur umum dari sistem komputer
yang khas. Sebuah sistem komputer dapat diatur dalam beberapa cara yang
berbeda, yang dapat kita kategorikan secara kasar sesuai dengan jumlah prosesor
tujuan umum yang digunakan.
1.3.1 Sistem Prosesor Tunggal
Bertahun-tahun yang lalu, sebagian besar sistem komputer menggunakan
prosesor tunggal yang berisi satu CPU dengan inti pemrosesan tunggal. Core
adalah komponen yang menjalankan instruksi dan register untuk menyimpan data
secara lokal. Satu CPU utama dengan intinya mampu mengeksekusi set instruksi
tujuan umum, termasuk instruksi dari proses. Sistem ini memiliki proses tujuan
khusus lainnya-
16 Bab 1 Pendahuluan
sor juga. Mereka mungkin datang dalam bentuk prosesor khusus perangkat,
seperti disk, keyboard, dan pengontrol grafis.
Semua prosesor tujuan khusus ini menjalankan set instruksi terbatas dan tidak
menjalankan proses. Terkadang, mereka dikelola oleh sistem operasi, di mana
sistem operasi mengirimi mereka informasi tentang tugas berikutnya dan
memantau status mereka. Misalnya, mikroprosesor pengontrol disk menerima
urutan permintaan dari inti CPU utama dan mengimplementasikan antrian disk
dan algoritma penjadwalannya sendiri. Pengaturan ini mengurangi CPU utama
dari overhead penjadwalan disk. PC berisi mikroprosesor di keyboard untuk
mengubah penekanan tombol menjadi kode yang akan dikirim ke CPU. Dalam
sistem atau keadaan lain, prosesor tujuan khusus adalah komponen tingkat
rendah yang dibangun ke dalam perangkat keras. Sistem operasi tidak dapat
berkomunikasi dengan proses-proses ini; mereka melakukan pekerjaan mereka
secara mandiri. Penggunaan mikroprosesor tujuan khusus adalah umum dan tidak
mengubah sistem prosesor tunggal menjadi multiprosesor. Jika hanya ada satu
CPU tujuan umum dengan inti pemrosesan tunggal, maka sistem tersebut adalah
sistem prosesor tunggal. Menurut definisi ini, bagaimanapun, sangat sedikit
sistem komputer kontemporer yang sistem prosesor tunggal.
1.3.2 Sistem Multiprosesor
Pada komputer modern, dari perangkat seluler hingga server, sistem
multiprosesor kini mendominasi lanskap komputasi. Secara tradisional, sistem
tersebut memiliki dua (atau lebih) prosesor, masing-masing dengan CPU inti
tunggal. Proses berbagi bus komputer dan kadang-kadang jam, memori, dan
perangkat periferal. Keuntungan utama dari sistem multiprosesor adalah
peningkatan throughput. Artinya, dengan meningkatkan jumlah prosesor, kami
berharap dapat menyelesaikan lebih banyak pekerjaan dalam waktu yang lebih
singkat. Namun, rasio percepatan dengan prosesor N bukanlah N; itu kurang dari
N. Ketika beberapa prosesor bekerja sama dalam suatu tugas, sejumlah overhead
tertentu dikeluarkan untuk menjaga semua bagian bekerja dengan benar.
Overhead ini, ditambah perebutan sumber daya bersama, menurunkan
keuntungan yang diharapkan dari prosesor tambahan.
Sistem multiprosesor yang paling umum menggunakan symmetric
multiprocessing (SMP), di mana setiap prosesor CPU rekan melakukan semua
tugas, termasuk fungsi sistem operasi dan proses pengguna. Gambar 1.8
mengilustrasikan arsitektur SMP yang khas dengan dua prosesor, masing-masing
dengan CPU sendiri. Perhatikan bahwa setiap prosesor CPU memiliki set
registernya sendiri, serta cache pribadi—atau lokal—. Namun, semua prosesor
berbagi memori fisik melalui bus sistem. Manfaat dari model ini adalah banyak
proses dapat berjalan secara bersamaan —N proses dapat berjalan jika ada N CPU
—tanpa menyebabkan penurunan performa secara signifikan. Namun, karena
CPU terpisah, satu CPU mungkin menganggur sementara yang lain kelebihan
beban, yang mengakibatkan inefisiensi. Inefisiensi ini dapat dihindari jika prosesor
berbagi struktur data tertentu. Sistem multiprosesor dalam bentuk ini akan
memungkinkan proses dan sumber daya—seperti memori—dibagi secara dinamis
di antara berbagai prosesor dan dapat menurunkan variasi beban kerja di antara
prosesor. Sistem seperti itu harus ditulis dengan hati-hati, seperti yang akan kita
lihat di Bab 5 dan Bab 6.
Definisi multiprosesor telah berkembang dari waktu ke waktu dan sekarang
mencakup sistem multicore, di mana beberapa core komputasi berada pada satu
chip. Sistem multicore bisa lebih efisien daripada beberapa chip dengan core
tunggal karena komunikasi on-chip lebih cepat daripada komunikasi antar-chip.
1.3 Arsitektur Sistem Komputer 17
Gambar 1.8 Arsitektur multiprosesor simetris.
Selain itu, satu chip dengan banyak inti menggunakan daya yang jauh lebih sedikit
daripada beberapa chip inti tunggal, masalah penting untuk perangkat seluler dan
juga laptop.
Pada Gambar 1.9, kami menunjukkan desain inti ganda dengan dua inti pada chip
prosesor yang sama. Dalam desain ini, setiap inti memiliki set register sendiri,
serta cache lokalnya sendiri, yang sering dikenal sebagai cache level 1, atau L1,.
Perhatikan juga, bahwa cache level 2 (L2) bersifat lokal untuk chip tetapi
digunakan bersama oleh dua inti pemrosesan. Sebagian besar arsitektur
mengadopsi pendekatan ini, menggabungkan cache lokal dan cache bersama, di
mana cache lokal, tingkat yang lebih rendah umumnya lebih kecil dan lebih cepat
daripada tingkat berbagi yang lebih tinggi.

Gambar 1.9 Desain dual-core dengan dua core pada chip yang sama.
18 Bab 1 Pendahuluan
DEFINISI KOMPONEN SISTEM KOMPUTER
• CPU—Perangkat keras yang menjalankan instruksi.
• Prosesor—Chip fisik yang berisi satu atau lebih CPU.
• Core—Unit komputasi dasar CPU.
• Multicore— Termasuk beberapa core komputasi pada CPU yang sama. •
Multiprosesor— Termasuk beberapa prosesor.
Meskipun hampir semua sistem sekarang multicore, kami menggunakan istilah
umum CPU ketika mengacu pada satu unit komputasi dari sistem komputer dan
inti serta multicore ketika secara khusus mengacu pada satu atau lebih inti pada
CPU.
cache. Selain pertimbangan arsitektur, seperti cache, memori, dan pertikaian bus,
prosesor multicore dengan N core muncul ke sistem operasi sebagai N CPU
standar. Karakteristik ini memberi tekanan pada perancang sistem operasi—dan
pemrogram aplikasi—untuk memanfaatkan inti pemrosesan ini secara efisien,
masalah yang kita bahas di Bab 4. Hampir semua sistem operasi modern—
termasuk Windows, macOS, dan Linux, serta Android dan sistem seluler iOS—
mendukung sistem SMP multiinti.
Menambahkan CPU tambahan ke sistem multiprosesor akan meningkatkan daya
komputasi; namun, seperti yang disarankan sebelumnya, konsep ini tidak berskala
dengan baik, dan begitu kami menambahkan terlalu banyak CPU, persaingan
untuk bus sistem menjadi hambatan dan kinerja mulai menurun. Pendekatan
alternatif adalah untuk menyediakan setiap CPU (atau kelompok CPU) dengan
memori lokalnya sendiri yang diakses melalui bus lokal yang kecil dan cepat. CPU
dihubungkan oleh interkoneksi sistem bersama, sehingga semua CPU berbagi satu
ruang alamat fisik. Pendekatan ini—dikenal sebagai akses memori non-seragam,
atau NUMA—diilustrasikan pada Gambar 1.10. Keuntungannya adalah, ketika CPU
mengakses memori lokalnya, tidak hanya cepat, tetapi juga tidak ada perselisihan
tentang interkoneksi sistem. Dengan demikian, sistem NUMA dapat menskalakan
lebih efektif karena lebih banyak prosesor ditambahkan.
Kelemahan potensial dengan sistem NUMA adalah peningkatan latensi ketika CPU
harus mengakses memori jarak jauh di seluruh interkoneksi sistem, menciptakan
kemungkinan penalti kinerja. Dengan kata lain, misalnya, CPU0tidak dapat
mengakses memori lokal CPU3 secepat ia dapat mengakses memori lokalnya
sendiri, sehingga memperlambat kinerja. Sistem operasi dapat meminimalkan
penalti NUMA ini melalui penjadwalan CPU dan manajemen memori yang cermat,
seperti yang dibahas dalam Bagian 5.5.2 dan Bagian 10.5.4. Karena sistem NUMA
dapat diskalakan untuk mengakomodasi sejumlah besar prosesor, mereka
menjadi semakin populer di server serta sistem komputasi berkinerja tinggi.
Terakhir, server blade adalah sistem di mana beberapa papan prosesor, papan
I/O, dan papan jaringan ditempatkan dalam sasis yang sama. Perbedaan antara ini
dan sistem multiprosesor tradisional adalah bahwa setiap papan prosesor blade
melakukan booting secara independen dan menjalankan sistem operasinya
sendiri. Beberapa papan server blade adalah multiprosesor juga, yang
mengaburkan garis antara
memori0
1.3 Arsitektur Sistem Komputer 19 memori1
CPU0
interkoneksi
CPU1
CPU2CPU3
memori2 memori3
Gambar 1.10 Arsitektur multiprosesor NUMA.
jenis komputer. Intinya, server ini terdiri dari beberapa sistem multiprosesor
independen.
1.3.3 Sistem Berkelompok
Tipe lain dari sistem multiprosesor adalah sistem cluster, yang mengumpulkan
beberapa CPU. Sistem cluster berbeda dari sistem multiprosesor yang dijelaskan
dalam Bagian 1.3.2 karena sistem tersebut terdiri dari dua atau lebih sistem
individu—atau node—digabungkan bersama; setiap node biasanya merupakan
sistem multicore. Sistem seperti itu dianggap digabungkan secara longgar. Kita
harus mencatat bahwa definisi berkerumun tidak konkret; banyak paket
komersial dan open source bergulat untuk mendefinisikan apa itu sistem cluster
dan mengapa satu bentuk lebih baik daripada yang lain. Definisi yang diterima
secara umum adalah bahwa komputer berkerumun berbagi penyimpanan dan
terkait erat melalui LAN jaringan area lokal (seperti yang dijelaskan dalam Bab 19)
atau interkoneksi yang lebih cepat, seperti InfiniBand.
Clustering biasanya digunakan untuk menyediakan layanan dengan ketersediaan
tinggi—yaitu, layanan yang akan terus berlanjut bahkan jika satu atau lebih sistem
dalam cluster gagal. Umumnya, kami memperoleh ketersediaan tinggi dengan
menambahkan tingkat redundansi dalam sistem. Sebuah lapisan perangkat lunak
cluster berjalan pada node cluster. Setiap node dapat memantau satu atau lebih
dari yang lain (melalui jaringan). Jika mesin yang dipantau gagal, mesin pemantau
dapat mengambil alih penyimpanannya dan memulai ulang aplikasi yang berjalan
pada mesin yang gagal. Pengguna dan klien aplikasi hanya melihat gangguan
layanan singkat.
Ketersediaan tinggi memberikan peningkatan keandalan, yang sangat penting
dalam banyak aplikasi. Kemampuan untuk terus memberikan layanan yang
sebanding dengan tingkat perangkat keras yang bertahan disebut degradasi yang
anggun. Beberapa sistem berjalan melampaui degradasi anggun dan disebut
toleran kesalahan, karena mereka dapat mengalami kegagalan komponen tunggal
dan masih melanjutkan operasi. Toleransi kesalahan membutuhkan mekanisme
untuk memungkinkan kegagalan dideteksi, didiagnosis, dan, jika mungkin,
dikoreksi.
Clustering dapat disusun secara asimetris atau simetris. Dalam pengelompokan
metrik asimetris, satu mesin berada dalam mode siaga panas sementara yang lain
menjalankan aplikasi. Mesin host siaga panas tidak melakukan apa pun selain
memantau server aktif. Jika server itu gagal, host siaga panas menjadi aktif
20 Bab 1 Pendahuluan
Papan Utama PC
Pertimbangkan motherboard PC desktop dengan soket prosesor yang ditunjukkan
di bawah ini:
Papan ini adalah komputer yang berfungsi penuh, setelah slotnya terisi. Ini terdiri
dari soket prosesor yang berisi CPU, soket DRAM, slot bus PCIe, dan konektor I/O
dari berbagai jenis. Bahkan CPU tujuan umum dengan biaya terendah berisi
banyak inti. Beberapa motherboard berisi beberapa soket prosesor. Komputer
yang lebih maju memungkinkan lebih dari satu papan sistem, menciptakan sistem
NUMA.
server. Dalam pengelompokan simetris, dua atau lebih host adalah menjalankan
aplikasi dan saling memantau. Struktur ini jelas lebih efisien, karena
menggunakan semua perangkat keras yang tersedia. Namun, itu membutuhkan
lebih dari satu aplikasi yang tersedia untuk dijalankan.
Karena cluster terdiri dari beberapa sistem komputer yang terhubung melalui
jaringan, cluster juga dapat digunakan untuk menyediakan lingkungan komputasi
kinerja tinggi. Sistem tersebut dapat memasok daya komputasi yang jauh lebih
besar daripada prosesor tunggal atau bahkan sistem SMP karena mereka dapat
menjalankan aplikasi secara bersamaan di semua komputer dalam cluster.
Namun, aplikasi harus ditulis secara khusus untuk memanfaatkan cluster. Ini
melibatkan teknik yang dikenal sebagai paralelisasi, yang membagi program
menjadi komponen terpisah yang berjalan secara paralel pada inti individu dalam
komputer atau komputer dalam sebuah cluster. Biasanya, aplikasi ini dirancang
sedemikian rupa sehingga setelah setiap node komputasi dalam cluster telah
menyelesaikan bagian masalahnya, hasil dari semua node digabungkan menjadi
solusi akhir.
Bentuk lain dari cluster termasuk cluster paralel dan clustering melalui jaringan
area luas (WAN) (seperti yang dijelaskan dalam Bab 19). Cluster paralel
memungkinkan beberapa host untuk mengakses data yang sama pada
penyimpanan bersama. Karena kebanyakan oper-
1.4 Operasi Sistem Operasi 21
komputerinterkoneksikomputerinterkoneksikomputer

area penyimpanan
jaringan
Gambar 1.11 Struktur umum sistem cluster.
sistem kekurangan dukungan untuk akses data simultan oleh banyak host, cluster
paralel biasanya memerlukan penggunaan versi perangkat lunak khusus dan rilis
aplikasi khusus. Misalnya, Oracle Real Application Cluster adalah versi database
Oracle yang telah dirancang untuk berjalan di cluster paralel. Setiap mesin
menjalankan Oracle, dan lapisan perangkat lunak melacak akses ke disk bersama.
Setiap mesin memiliki akses penuh ke semua data dalam database. Untuk
menyediakan akses bersama ini, sistem juga harus menyediakan kontrol akses
dan penguncian untuk memastikan bahwa tidak ada operasi yang saling
bertentangan. Fungsi ini, umumnya dikenal sebagai manajer kunci terdistribusi
(DLM), termasuk dalam beberapa teknologi cluster.
Teknologi cluster berubah dengan cepat. Beberapa produk klaster mendukung
ribuan sistem dalam klaster, serta node klaster yang dipisahkan oleh mil. Banyak
dari peningkatan ini dimungkinkan oleh jaringan area penyimpanan (SAN), seperti
yang dijelaskan dalam Bagian 11.7.4, yang memungkinkan banyak sistem untuk
dilampirkan ke kumpulan penyimpanan. Jika aplikasi dan datanya disimpan di
SAN, maka perangkat lunak cluster dapat menetapkan aplikasi untuk dijalankan
pada host mana pun yang terpasang ke SAN. Jika host gagal, maka host lain dapat
mengambil alih. Dalam cluster database, lusinan host dapat berbagi database
yang sama, sangat meningkatkan kinerja dan keandalan. Gambar 1.11
menggambarkan struktur umum dari sistem berkerumun.
1.4 Operasi Sistem Operasi
Sekarang kita telah membahas informasi dasar tentang organisasi dan arsitektur
sistem komputer, kita siap untuk berbicara tentang sistem operasi. Sistem operasi
menyediakan lingkungan di mana program dijalankan. Secara internal, sistem
operasi sangat bervariasi, karena mereka diatur dalam banyak jalur yang berbeda.
Namun, ada banyak kesamaan, yang kami pertimbangkan di bagian ini.
Agar komputer mulai berjalan—misalnya, saat dinyalakan atau di-boot ulang—
komputer harus memiliki program awal untuk dijalankan. Seperti disebutkan
sebelumnya, program awal ini, atau program bootstrap, cenderung sederhana.
Biasanya, itu disimpan di dalam perangkat keras komputer dalam firmware. Ini
menginisialisasi semua aspek sistem, dari register CPU ke pengontrol perangkat
hingga konten memori. Program bootstrap harus tahu cara memuat sistem
operasi dan cara
22 Bab 1 Pendahuluan
HADOOP
Hadoop adalah kerangka kerja perangkat lunak sumber terbuka yang digunakan
untuk pemrosesan terdistribusi dari kumpulan data besar (dikenal sebagai data
besar) dalam sistem cluster yang berisi komponen perangkat keras sederhana dan
berbiaya rendah. Hadoop dirancang untuk menskalakan dari satu sistem ke
kluster yang berisi ribuan node komputasi. Tugas ditugaskan ke sebuah node di
cluster, dan Hadoop mengatur komunikasi antar node untuk mengelola
komputasi paralel untuk memproses dan menggabungkan hasil. Hadoop juga
mendeteksi dan mengelola kegagalan dalam node, menyediakan layanan
komputasi terdistribusi yang efisien dan sangat andal.
Hadoop diatur di sekitar tiga komponen berikut:
1. Sistem file terdistribusi yang mengelola data dan file di seluruh node komputasi
terdistribusi.
2. Kerangka YARN (“Yet Another Resource Negotiator”), yang mengelola sumber
daya di dalam cluster serta menjadwalkan tugas pada node dalam cluster.
3. Sistem MapReduce, yang memungkinkan pemrosesan paralel data di seluruh
node dalam cluster.
Hadoop dirancang untuk berjalan di sistem Linux, dan aplikasi Hadoop dapat
ditulis menggunakan beberapa bahasa pemrograman, termasuk bahasa scripting
seperti PHP, Perl, dan Python. Java adalah pilihan populer untuk mengembangkan
aplikasi Hadoop, karena Hadoop memiliki beberapa library Java yang mendukung
MapReduce. Informasi lebih lanjut tentang MapReduce dan Hadoop dapat
ditemukan di https://hadoop.Apache.org/docs/r1.2.1/mapred tutorial.html dan
https://hadoop.Apache.org
mulai menjalankan sistem itu. Untuk mencapai tujuan ini, program bootstrap
harus menemukan kernel sistem operasi dan memuatnya ke dalam memori.
Setelah kernel dimuat dan dijalankan, kernel dapat mulai memberikan layanan
kepada sistem dan penggunanya. Beberapa layanan disediakan di luar kernel oleh
program sistem yang dimuat ke dalam memori pada saat boot untuk menjadi
daemon sistem, yang berjalan sepanjang waktu kernel berjalan. Di Linux, program
sistem pertama adalah "systemd," dan menjalankan banyak daemon lainnya.
Setelah fase ini selesai, sistem sepenuhnya di-boot, dan sistem menunggu
beberapa peristiwa terjadi.
Jika tidak ada proses untuk dieksekusi, tidak ada perangkat I/O untuk diservis, dan
tidak ada pengguna yang harus ditanggapi, sistem operasi akan duduk diam,
menunggu sesuatu terjadi. Peristiwa hampir selalu ditandai dengan terjadinya
interupsi. Pada Bagian 1.2.1 kami menjelaskan interupsi perangkat keras. Bentuk
lain dari interupsi adalah jebakan (atau pengecualian), yang merupakan interupsi
yang dihasilkan oleh perangkat lunak yang disebabkan oleh kesalahan (misalnya,
pembagian dengan nol atau akses memori yang tidak valid) atau oleh permintaan
khusus dari program pengguna bahwa operasi- layanan sistem dilakukan dengan
menjalankan operasi khusus yang disebut panggilan sistem.
1.4 Operasi Sistem Operasi 23
1.4.1 Multiprogramming dan Multitasking
Salah satu aspek terpenting dari sistem operasi adalah kemampuan untuk
menjalankan banyak program, karena satu program secara umum tidak dapat
membuat CPU atau perangkat I/O sibuk setiap saat. Selain itu, pengguna biasanya
ingin menjalankan lebih dari satu program sekaligus.
Multiprogramming meningkatkan penggunaan CPU, serta membuat pengguna
puas, dengan mengatur program sehingga CPU selalu memiliki satu untuk
dieksekusi. Dalam sistem multiprogram, program yang sedang dieksekusi disebut
proses.
Idenya adalah sebagai berikut: Sistem operasi menyimpan beberapa proses dalam
memori secara bersamaan (Gambar 1.12). Sistem operasi mengambil dan mulai
menjalankan salah satu proses ini. Akhirnya, proses mungkin harus menunggu
beberapa tugas, seperti operasi I/O, untuk diselesaikan. Dalam sistem non-
multiprogram, CPU akan diam. Dalam sistem multiprogram, sistem operasi hanya
beralih ke, dan mengeksekusi, proses lain. Ketika proses itu perlu menunggu, CPU
beralih ke proses lain, dan seterusnya. Akhirnya, proses pertama selesai
menunggu dan mendapatkan CPU kembali. Selama setidaknya satu proses perlu
dijalankan, CPU tidak pernah menganggur.
Ide ini umum dalam situasi kehidupan lainnya. Seorang pengacara tidak bekerja
hanya untuk satu klien pada satu waktu, misalnya. Sementara satu kasus sedang
menunggu untuk diadili atau diketik surat-suratnya, pengacara dapat
mengerjakan kasus lain. Jika dia memiliki cukup klien, pengacara tidak akan
pernah menganggur karena kekurangan pekerjaan. (Pengacara yang menganggur
cenderung menjadi politisi, jadi ada nilai sosial tertentu dalam membuat
pengacara sibuk.)
Multitasking adalah perpanjangan logis dari multiprogramming. Dalam sistem
multitasking, CPU menjalankan beberapa proses dengan berpindah di antara
mereka, tetapi pergantian sering terjadi, memberikan waktu respons yang cepat
kepada pengguna. Pertimbangkan bahwa ketika suatu proses dijalankan, biasanya
dijalankan hanya dalam waktu singkat sebelum selesai atau perlu melakukan I/O.
I/O mungkin interaktif; yaitu, output masuk ke tampilan untuk pengguna, dan
input berasal dari keyboard, mouse, atau layar sentuh pengguna. Karena I/O
interaktif biasanya berjalan pada “kecepatan orang”, mungkin perlu waktu lama
untuk menyelesaikannya. Masukan, misalnya, mungkin
maksimal
sistem operasi
proses 1
proses 2
proses 3
0
proses 4
Gambar 1.12 Tata letak memori untuk sistem multiprogramming.
24 Bab 1 Pendahuluan
dibatasi oleh kecepatan mengetik pengguna; tujuh karakter per detik cepat untuk
orang tetapi sangat lambat untuk komputer.
Daripada membiarkan CPU diam saat input interaktif ini berlangsung, sistem
operasi akan dengan cepat mengalihkan CPU ke proses lain.
Memiliki beberapa proses dalam memori pada saat yang sama memerlukan
beberapa bentuk manajemen memori, yang kita bahas di Bab 9 dan Bab 10. Selain
itu, jika beberapa proses siap untuk dijalankan pada saat yang sama, sistem harus
memilih proses mana yang akan dijalankan selanjutnya. . Membuat keputusan ini
adalah penjadwalan CPU, yang dibahas dalam Bab 5. Akhirnya, menjalankan
beberapa proses secara bersamaan mengharuskan kemampuan mereka untuk
mempengaruhi satu sama lain dibatasi di semua fase sistem operasi, termasuk
penjadwalan proses, penyimpanan disk, dan manajemen memori. Kami
membahas pertimbangan ini di seluruh teks.
Dalam sistem multitasking, sistem operasi harus memastikan waktu respons yang
wajar. Metode umum untuk melakukannya adalah memori virtual, sebuah teknik
yang memungkinkan eksekusi proses yang tidak sepenuhnya ada dalam memori
(Bab 10). Keuntungan utama dari skema ini adalah memungkinkan pengguna
untuk menjalankan program yang lebih besar dari memori fisik yang sebenarnya.
Lebih lanjut, ia mengabstraksi memori utama ke dalam array penyimpanan yang
besar dan seragam, memisahkan memori logis seperti yang dilihat oleh pengguna
dari memori fisik. Pengaturan ini membebaskan pemrogram dari kekhawatiran
akan keterbatasan penyimpanan memori.
Sistem multiprogramming dan multitasking juga harus menyediakan sistem file
(Bab 13, Bab 14, dan Bab 15). Sistem file berada di penyimpanan sekunder;
karenanya, manajemen penyimpanan harus disediakan (Bab 11). Selain itu, sistem
harus melindungi sumber daya dari penggunaan yang tidak tepat (Bab 17). Untuk
memastikan eksekusi yang teratur, sistem juga harus menyediakan mekanisme
untuk sinkronisasi proses dan komunikasi (Bab 6 dan Bab 7), dan mungkin
memastikan bahwa proses tidak terjebak dalam kebuntuan, selamanya menunggu
satu sama lain (Bab 8).
1.4.2 Operasi Dual-Mode dan Multimode
Karena sistem operasi dan penggunanya berbagi sumber daya perangkat keras
dan perangkat lunak dari sistem komputer, sistem operasi yang dirancang dengan
benar harus memastikan bahwa program yang salah (atau berbahaya) tidak dapat
menyebabkan program lain —atau sistem operasi itu sendiri—untuk dijalankan
secara tidak benar. Untuk memastikan eksekusi sistem yang tepat, kita harus
dapat membedakan antara eksekusi kode sistem operasi dan kode yang
ditentukan pengguna. Pendekatan yang diambil oleh sebagian besar sistem
komputer adalah menyediakan dukungan perangkat keras yang memungkinkan
diferensiasi di antara berbagai mode eksekusi.
Paling tidak, kita memerlukan dua mode operasi terpisah: mode pengguna dan
mode kernel (juga disebut mode supervisor, mode sistem, atau mode istimewa).
Sebuah bit, disebut bit mode, ditambahkan ke perangkat keras komputer untuk
menunjukkan mode saat ini: kernel (0) atau pengguna (1). Dengan mode bit, kita
dapat membedakan antara tugas yang dijalankan atas nama sistem operasi dan
tugas yang dijalankan atas nama pengguna. Ketika sistem komputer dijalankan
atas nama aplikasi pengguna, sistem berada dalam mode pengguna. Namun,
ketika aplikasi pengguna meminta layanan dari sistem operasi (melalui panggilan
sistem), sistem harus beralih dari pengguna ke mode kernel untuk memenuhi
proses pengguna
1.4 Operasi Sistem Operasi 25 mode pengguna
eksekusi proses pengguna
panggilan panggilan sistem kembali dari panggilan sistem
(modus bit = 1)
inti
perangkap
modus bit = 0
kembali
mode bit = 1 mode kernel
(mode bit = 0) jalankan panggilan sistem
Gambar 1.13 Transisi dari mode pengguna ke kernel.
Permintaan. Hal ini ditunjukkan pada Gambar 1.13. Seperti yang akan kita lihat,
peningkatan arsitektur ini berguna untuk banyak aspek lain dari operasi sistem
juga. Pada saat boot sistem, perangkat keras dimulai dalam mode kernel. Sistem
operasi kemudian dimuat dan memulai aplikasi pengguna dalam mode pengguna.
Setiap kali jebakan atau interupsi terjadi, perangkat keras beralih dari mode
pengguna ke mode kernel (yaitu, mengubah status bit mode ke 0). Jadi, setiap kali
sistem operasi memperoleh kendali atas komputer, ia berada dalam mode kernel.
Sistem selalu beralih ke mode pengguna (dengan mengatur bit mode ke 1)
sebelum memberikan kontrol ke program pengguna.
Mode operasi ganda memberi kita sarana untuk melindungi sistem operasi dari
pengguna yang salah—dan pengguna yang salah dari satu sama lain. Kami
mencapai perlindungan ini dengan menetapkan beberapa instruksi mesin yang
dapat menyebabkan kerusakan sebagai instruksi yang diistimewakan. Perangkat
keras memungkinkan instruksi khusus untuk dieksekusi hanya dalam mode
kernel. Jika upaya dilakukan untuk mengeksekusi instruksi yang diistimewakan
dalam mode pengguna, perangkat keras tidak mengeksekusi instruksi tersebut
melainkan memperlakukannya sebagai ilegal dan menjebaknya ke sistem operasi.
Instruksi untuk beralih ke mode kernel adalah contoh dari instruksi yang
diistimewakan. Beberapa contoh lain termasuk kontrol I/O, manajemen timer,
dan manajemen interupsi. Banyak instruksi istimewa tambahan dibahas di seluruh
teks.
Konsep mode dapat diperluas melampaui dua mode. Misalnya, prosesor Intel
memiliki empat cincin perlindungan terpisah, di mana cincin 0 adalah mode
kernel dan cincin 3 adalah mode pengguna. (Meskipun ring 1 dan 2 dapat
digunakan untuk berbagai layanan sistem operasi, dalam praktiknya ring ini jarang
digunakan.) Sistem ARMv8 memiliki tujuh mode. CPU yang mendukung
virtualisasi (Bagian 18.1) sering kali memiliki mode terpisah untuk menunjukkan
kapan manajer mesin virtual (VMM) mengendalikan sistem. Dalam mode ini,
VMM memiliki lebih banyak hak istimewa daripada proses pengguna tetapi lebih
sedikit daripada kernel. Perlu tingkat hak istimewa itu sehingga dapat membuat
dan mengelola mesin virtual, mengubah status CPU untuk melakukannya.
Kita sekarang dapat lebih memahami siklus hidup eksekusi instruksi dalam sistem
komputer. Kontrol awal berada di sistem operasi, di mana instruksi dieksekusi
dalam mode kernel. Saat kontrol diberikan ke aplikasi pengguna, mode diatur ke
mode pengguna. Akhirnya, kontrol dialihkan kembali ke sistem operasi melalui
interupsi, jebakan, atau panggilan sistem. Sebagian besar sistem operasi
kontemporer—seperti Microsoft Windows, Unix, dan Linux—
26 Bab 1 Pendahuluan
manfaatkan fitur mode ganda ini dan berikan perlindungan yang lebih besar
untuk sistem operasi.
Panggilan sistem menyediakan sarana bagi program pengguna untuk bertanya
sistem operasi untuk melakukan tugas yang disediakan untuk sistem operasi atas
nama program pengguna. Panggilan sistem dipanggil dalam berbagai cara,
tergantung pada fungsionalitas yang disediakan oleh prosesor yang
mendasarinya. Dalam semua bentuk, itu adalah metode yang digunakan oleh
suatu proses untuk meminta tindakan oleh sistem operasi. Panggilan sistem
biasanya berbentuk jebakan ke lokasi tertentu dalam vektor interupsi. Perangkap
ini dapat dieksekusi oleh instruksi perangkap generik, meskipun beberapa sistem
memiliki instruksi syscall khusus untuk memanggil panggilan sistem.
Ketika panggilan sistem dijalankan, biasanya diperlakukan oleh perangkat keras
sebagai interupsi perangkat lunak. Kontrol melewati vektor interupsi ke rutin
layanan di sistem operasi, dan bit mode diatur ke mode kernel. Rutinitas layanan
panggilan sistem adalah bagian dari sistem operasi. Pemeriksaan kernel
memasukkan instruksi interupsi untuk menentukan panggilan sistem apa yang
telah terjadi; parameter menunjukkan jenis layanan apa yang diminta oleh
program pengguna. Informasi tambahan yang diperlukan untuk permintaan dapat
diteruskan di register, di tumpukan, atau di memori (dengan penunjuk ke lokasi
memori yang diteruskan di register). Kernel memverifikasi bahwa parameternya
benar dan legal, mengeksekusi permintaan, dan mengembalikan kontrol ke
instruksi setelah panggilan sistem. Kami menjelaskan panggilan sistem lebih
lengkap di Bagian 2.3.
Setelah perlindungan perangkat keras diterapkan, ia mendeteksi kesalahan yang
melanggar mode. Kesalahan ini biasanya ditangani oleh sistem operasi. Jika
program pengguna gagal dalam beberapa cara—seperti dengan melakukan upaya
untuk mengeksekusi instruksi ilegal atau mengakses memori yang tidak berada di
ruang alamat pengguna— kemudian perangkat keras menjebak ke sistem operasi.
Perangkap mentransfer kontrol melalui vektor interupsi ke sistem operasi, seperti
halnya interupsi. Ketika kesalahan program terjadi, sistem operasi harus
menghentikan program secara tidak normal. Situasi ini ditangani oleh kode yang
sama dengan penghentian abnormal yang diminta pengguna. Pesan kesalahan
yang sesuai diberikan, dan memori program mungkin dibuang. Dump memori
biasanya ditulis ke file sehingga pengguna atau pemrogram dapat memeriksanya
dan mungkin memperbaikinya dan memulai kembali program.
1.4.3 Pengatur Waktu
Kita harus memastikan bahwa sistem operasi mempertahankan kendali atas CPU.
Kami tidak dapat membiarkan program pengguna terjebak dalam loop tak
terbatas atau gagal memanggil layanan sistem dan tidak pernah mengembalikan
kontrol ke sistem operasi. Untuk mencapai tujuan ini, kita dapat menggunakan
timer. Timer dapat diatur untuk menginterupsi komputer setelah jangka waktu
tertentu. Periode dapat tetap (misalnya, 1/60 detik) atau variabel (misalnya, dari
1 milidetik hingga 1 detik). Pengatur waktu variabel umumnya diimplementasikan
oleh jam tingkat tetap dan penghitung. Sistem operasi mengatur penghitung.
Setiap kali jam berdetak, penghitung dikurangi. Ketika penghitung mencapai 0,
interupsi terjadi. Misalnya, penghitung 10-bit dengan jam 1-milidetik
memungkinkan interupsi pada interval dari 1 milidetik hingga 1.024 milidetik,
dalam langkah 1 milidetik.
Sebelum menyerahkan kendali kepada pengguna, sistem operasi memastikan
bahwa pengatur waktu diatur untuk menyela. Jika pengatur waktu menyela,
kontrol secara otomatis ditransfer ke sistem operasi, yang dapat memperlakukan
interupsi sebagai kesalahan fatal atau
1.5 Manajemen Sumber Daya 27
TIMER LINUX
Pada sistem Linux, parameter konfigurasi kernel HZ menentukan frekuensi
interupsi timer. Nilai HZ 250 berarti timer menghasilkan 250 interupsi per detik,
atau satu interupsi setiap 4 milidetik. Nilai HZ tergantung pada bagaimana kernel
dikonfigurasi, serta jenis dan arsitektur mesin yang menjalankannya. Variabel
kernel terkait adalah jiffies, yang mewakili jumlah interupsi timer yang telah
terjadi sejak sistem di-boot. Sebuah proyek pemrograman di Bab 2 lebih jauh
mengeksplorasi waktu di kernel Linux.
dapat memberikan program lebih banyak waktu. Jelas, instruksi yang mengubah
isi timer adalah hak istimewa.
1.5 Manajemen Sumber Daya
Seperti yang telah kita lihat, sistem operasi adalah manajer sumber daya. CPU
sistem, ruang memori, ruang penyimpanan file, dan perangkat I/O adalah
beberapa sumber daya yang harus dikelola oleh sistem operasi.
1.5.1 Manajemen Proses
Sebuah program tidak dapat melakukan apa-apa kecuali instruksinya dieksekusi
oleh CPU. Sebuah program dalam eksekusi, seperti yang disebutkan, adalah
sebuah proses. Program seperti kompiler adalah sebuah proses, dan program
pengolah kata yang dijalankan oleh pengguna individu pada PC adalah sebuah
proses. Demikian pula, aplikasi media sosial di perangkat seluler adalah sebuah
proses. Untuk saat ini, Anda dapat menganggap sebuah proses sebagai instance
dari program yang sedang dieksekusi, tetapi nanti Anda akan melihat bahwa
konsepnya lebih umum. Seperti yang dijelaskan dalam Bab 3, dimungkinkan untuk
menyediakan panggilan sistem yang memungkinkan proses membuat subproses
untuk dieksekusi secara bersamaan.
Suatu proses membutuhkan sumber daya tertentu—termasuk waktu CPU,
memori, file, dan perangkat I/O—untuk menyelesaikan tugasnya. Sumber daya ini
biasanya dialokasikan untuk proses saat sedang berjalan. Selain berbagai sumber
daya fisik dan logis yang diperoleh suatu proses ketika dibuat, berbagai data
inisialisasi (input) dapat diteruskan. Misalnya, pertimbangkan proses menjalankan
browser web yang fungsinya untuk menampilkan konten halaman web di layar.
Proses akan diberikan URL sebagai input dan akan mengeksekusi instruksi dan
panggilan sistem yang sesuai untuk mendapatkan dan menampilkan informasi
yang diinginkan di layar. Ketika proses berakhir, sistem operasi akan
mendapatkan kembali semua sumber daya yang dapat digunakan kembali.
Kami menekankan bahwa sebuah program dengan sendirinya bukanlah sebuah
proses. Program adalah entitas pasif, seperti konten file yang disimpan di disk,
sedangkan proses adalah entitas aktif. Proses single-threaded memiliki satu
program counter yang menentukan instruksi berikutnya untuk dieksekusi. (Utas
dibahas dalam Bab 4.) Eksekusi proses semacam itu harus berurutan. CPU
mengeksekusi satu instruksi proses demi satu, sampai proses selesai. Selanjutnya,
setiap saat, satu instruksi paling banyak dieksekusi atas nama proses. Jadi,
meskipun
28 Bab 1 Pendahuluan
dua proses dapat diasosiasikan dengan program yang sama, mereka tetap
dianggap sebagai dua urutan eksekusi yang terpisah. Proses multithreaded
memiliki beberapa penghitung program, masing-masing menunjuk ke instruksi
berikutnya untuk dieksekusi untuk utas yang diberikan.
Proses adalah unit kerja dalam suatu sistem. Sebuah sistem terdiri dari kumpulan
proses, beberapa di antaranya adalah proses sistem operasi (yang mengeksekusi
kode sistem) dan sisanya adalah proses pengguna (yang menjalankan kode
pengguna yang lucu). Semua proses ini berpotensi dapat dijalankan secara
bersamaan—dengan melakukan multiplexing pada satu inti CPU—atau dalam
paralel di beberapa core CPU.
Sistem operasi bertanggung jawab atas aktivitas berikut yang berhubungan
dengan manajemen proses:
• Membuat dan menghapus proses pengguna dan sistem
• Penjadwalan proses dan thread pada CPU
• Menangguhkan dan melanjutkan proses
• Menyediakan mekanisme untuk sinkronisasi proses
• Menyediakan mekanisme untuk proses komunikasi
Kami membahas teknik proses-manajemen dalam Bab 3 sampai Bab 7.
1.5.2 Manajemen Memori
Seperti yang dibahas dalam Bagian 1.2.2, memori utama merupakan pusat
pengoperasian sistem komputer modern. Memori utama adalah array besar byte,
mulai dari ukuran ratusan ribu hingga miliaran. Setiap byte memiliki alamatnya
sendiri. Memori utama adalah tempat penyimpanan data yang dapat diakses
dengan cepat yang dibagikan oleh CPU dan perangkat I/O. CPU membaca instruksi
dari memori utama selama siklus pengambilan instruksi dan keduanya membaca
dan menulis data dari memori utama selama siklus pengambilan data (pada
arsitektur von Neumann). Seperti disebutkan sebelumnya, memori utama
umumnya merupakan satu-satunya perangkat penyimpanan besar yang dapat
ditangani dan diakses oleh CPU secara langsung. Misalnya, agar CPU memproses
data dari disk, data tersebut harus terlebih dahulu ditransfer ke memori utama
melalui panggilan I/O yang dihasilkan CPU. Dengan cara yang sama, instruksi
harus ada di memori agar CPU dapat mengeksekusinya.
Untuk program yang akan dieksekusi, itu harus dipetakan ke alamat absolut dan
dimuat ke dalam memori. Saat program dijalankan, ia mengakses instruksi
program dan data dari memori dengan menghasilkan alamat absolut ini. Akhirnya,
program berakhir, ruang memorinya dinyatakan tersedia, dan program berikutnya
dapat dimuat dan dieksekusi.
Untuk meningkatkan penggunaan CPU dan kecepatan respons komputer
terhadap penggunanya, komputer untuk keperluan umum harus menyimpan
beberapa program dalam memori, sehingga menciptakan kebutuhan akan
manajemen memori. Banyak skema manajemen memori yang berbeda
digunakan. Skema ini mencerminkan berbagai pendekatan, dan efektivitas
algoritma yang diberikan tergantung pada situasinya. Dalam memilih skema
manajemen memori untuk sistem tertentu, kita harus mempertimbangkan
banyak faktor—terutama desain perangkat keras sistem. Setiap algoritma
membutuhkan dukungan perangkat kerasnya sendiri.
1.5 Manajemen Sumber Daya 29
Sistem operasi bertanggung jawab atas aktivitas berikut yang berhubungan
dengan manajemen memori:
• Melacak bagian memori mana yang sedang digunakan dan proses mana yang
menggunakannya
• Mengalokasikan dan membatalkan alokasi ruang memori sesuai kebutuhan
• Memutuskan proses (atau bagian dari proses) dan data mana yang akan masuk
dan keluar dari memori
Teknik manajemen memori dibahas dalam Bab 9 dan Bab 10.
1.5.3 Manajemen Sistem File
Untuk membuat sistem komputer nyaman bagi pengguna, sistem operasi
menyediakan tampilan yang seragam dan logis dari penyimpanan informasi.
Sistem operasi mengabstraksi dari sifat fisik perangkat penyimpanannya untuk
menentukan unit penyimpanan logis, file . Sistem operasi memetakan file ke
media fisik dan mengakses file-file ini melalui perangkat penyimpanan.
Manajemen file adalah salah satu komponen yang paling terlihat dari sistem
operasi. Komputer dapat menyimpan informasi pada beberapa jenis media fisik
yang berbeda. Penyimpanan sekunder adalah yang paling umum, tetapi
penyimpanan tersier juga dimungkinkan. Masing-masing media tersebut memiliki
ciri dan organisasi fisik tersendiri. Sebagian besar dikendalikan oleh perangkat,
seperti disk drive, yang juga memiliki karakteristik uniknya sendiri. Properti ini
termasuk kecepatan akses, kapasitas, kecepatan transfer data, dan metode akses
(berurutan atau acak).
File adalah kumpulan informasi terkait yang ditentukan oleh pembuatnya.
Umumnya, file mewakili program (baik bentuk sumber maupun objek) dan data.
File data mungkin numerik, alfabet, alfanumerik, atau biner. File dapat berbentuk
bebas (misalnya, file teks), atau dapat diformat secara kaku (misalnya, bidang
tetap seperti file musik mp3). Jelas, konsep file adalah konsep yang sangat umum.
Sistem operasi mengimplementasikan konsep abstrak file dengan mengelola
media penyimpanan massal dan perangkat yang mengendalikannya. Selain itu,
file biasanya diatur ke dalam direktori untuk membuatnya lebih mudah
digunakan. Terakhir, ketika banyak pengguna memiliki akses ke file, mungkin
diinginkan untuk mengontrol pengguna mana yang dapat mengakses file dan
bagaimana pengguna tersebut dapat mengaksesnya (misalnya, membaca,
menulis, menambahkan).
Sistem operasi bertanggung jawab atas aktivitas berikut yang berhubungan
dengan manajemen file:
• Membuat dan menghapus file
• Membuat dan menghapus direktori untuk mengatur file
• Mendukung primitif untuk memanipulasi file dan direktori • Memetakan file ke
penyimpanan massal
• Mencadangkan file pada media penyimpanan yang stabil (nonvolatile)
30 Bab 1 Pendahuluan
Teknik manajemen file dibahas dalam Bab 13, Bab 14, dan Bab 15.
1.5.4 Manajemen Penyimpanan Massal
Seperti yang telah kita lihat, sistem komputer harus menyediakan penyimpanan
sekunder untuk mencadangkan memori utama. Sebagian besar sistem komputer
modern menggunakan HDD dan perangkat NVM sebagai media penyimpanan
online utama untuk program dan data. Sebagian besar program—termasuk
kompiler, browser web, pengolah kata, dan game—disimpan di perangkat ini
hingga dimuat ke dalam memori. Program kemudian menggunakan perangkat
sebagai sumber dan tujuan pemrosesannya. Oleh karena itu, manajemen
penyimpanan sekunder yang tepat sangat penting untuk sistem komputer. Sistem
operasi bertanggung jawab atas aktivitas berikut sehubungan dengan manajemen
penyimpanan sekunder:
• Memasang dan melepas
• Manajemen ruang bebas
• Alokasi penyimpanan
• Penjadwalan disk
• Partisi
• Perlindungan
Karena penyimpanan sekunder sering dan ekstensif digunakan, itu harus
digunakan secara efisien. Seluruh kecepatan operasi komputer mungkin
bergantung pada kecepatan subsistem penyimpanan sekunder dan algoritme
yang memanipulasi subsistem itu.
Pada saat yang sama, ada banyak kegunaan penyimpanan yang lebih lambat dan
biayanya lebih rendah (dan terkadang kapasitasnya lebih tinggi) daripada
penyimpanan sekunder. Cadangan data disk, penyimpanan data yang jarang
digunakan, dan penyimpanan arsip jangka panjang adalah beberapa contohnya.
Drive pita magnetik dan kasetnya serta CD DVD dan Blu-ray drive dan piringan
adalah perangkat penyimpanan tersier yang khas.
Penyimpanan tersier tidak penting untuk kinerja sistem, tetapi tetap harus
dikelola. Beberapa sistem operasi mengambil tugas ini, sementara yang lain
menyerahkan manajemen penyimpanan tersier ke program aplikasi. Beberapa
fungsi yang dapat disediakan sistem operasi termasuk memasang dan melepas
media di perangkat, mengalokasikan dan membebaskan perangkat untuk
penggunaan eksklusif oleh proses, dan memigrasikan data dari penyimpanan
sekunder ke tersier.
Teknik untuk penyimpanan sekunder dan manajemen penyimpanan tersier
dibahas dalam Bab 11.
1.5.5 Manajemen Tembolok
Caching adalah prinsip penting dari sistem komputer. Inilah cara kerjanya.
Informasi biasanya disimpan dalam beberapa sistem penyimpanan (seperti
memori utama). Seperti yang digunakan, itu adalah
disalin ke sistem penyimpanan yang lebih cepat— cache—secara sementara.
Ketika kami membutuhkan informasi tertentu, pertama-tama kami memeriksa
apakah itu ada di cache. Jika ya, kami menggunakan informasi langsung dari
cache.
1.5 Manajemen Sumber Daya 31
Tingkat
1
2
3
4
5
Nama
Ukuran tipikal
Teknologi implementasi
Waktu akses (ns) Bandwidth (MB/dtk) Dikelola oleh
registers cache main memory solid-state
disk

< 1 KB < 16MB < 64GB < 1 TB

custom memory with on-chip or CMOS SRAM flash


multiple memory
off-chip
ports CMOS CMOS SRAM

0.25-0.5 0.5-25 80-250 25,000-


50,000

20,000-100,000 5,000-10,000 1,000-5,000 500

compiler hardware operating operating


system system

disk magnetik < 10 TB


cakram magnetik
5.000.000
20-150
sistem operasi
Didukung oleh
cache
memori utama
piringan
piringan
disk atau pita
Gambar 1.14 Karakteristik berbagai jenis penyimpanan.
Jika tidak, kami menggunakan informasi dari sumbernya, meletakkan salinan di
cache dengan asumsi bahwa kami akan membutuhkannya lagi segera.
Selain itu, register internal yang dapat diprogram menyediakan cache
berkecepatan tinggi untuk memori utama. Pemrogram (atau kompiler)
mengimplementasikan alokasi register dan algoritme penggantian register untuk
memutuskan informasi mana yang disimpan di register dan mana yang disimpan
di memori utama.
Cache lainnya diimplementasikan sepenuhnya dalam perangkat keras. Misalnya,
sebagian besar sistem memiliki cache instruksi untuk menampung instruksi yang
diharapkan akan dieksekusi berikutnya. Tanpa cache ini, CPU harus menunggu
beberapa siklus sementara instruksi diambil dari memori utama. Untuk alasan
yang sama, sebagian besar sistem memiliki satu atau lebih cache data
berkecepatan tinggi dalam hierarki memori. Kami tidak peduli dengan cache
hanya perangkat keras ini dalam teks ini, karena mereka berada di luar kendali
sistem operasi.
Karena cache memiliki ukuran yang terbatas, manajemen cache merupakan
masalah desain yang penting. Pemilihan ukuran cache dan kebijakan penggantian
yang cermat dapat menghasilkan kinerja yang sangat meningkat, seperti yang
Anda lihat dengan memeriksa Gambar 1.14. Algoritme penggantian untuk cache
yang dikontrol perangkat lunak dibahas dalam Bab 10.
Pergerakan informasi antara tingkat hierarki penyimpanan mungkin eksplisit atau
implisit, tergantung pada desain perangkat keras dan perangkat lunak sistem
operasi yang mengendalikan. Misalnya, transfer data dari cache ke CPU dan
register biasanya merupakan fungsi perangkat keras, tanpa campur tangan sistem
operasi. Sebaliknya, transfer data dari disk ke memori biasanya dikendalikan oleh
sistem operasi.
Dalam struktur penyimpanan hierarkis, data yang sama mungkin muncul di
berbagai tingkat sistem penyimpanan. Untuk Sebagai contoh, anggaplah bahwa
bilangan bulat A yang akan bertambah 1 terletak di file B, dan file B berada di
hard disk. Operasi kenaikan dilanjutkan dengan terlebih dahulu mengeluarkan
operasi I/O untuk menyalin blok disk tempat A berada ke memori utama. Operasi
ini diikuti dengan menyalin A ke cache dan ke register internal. Jadi, salinan A
muncul di beberapa tempat: di hard disk, di memori utama, di cache, dan di
register internal (lihat Gambar 1.15). Setelah kenaikan terjadi di register internal,
nilai A berbeda di berbagai sistem penyimpanan. Nilai A
32 Bab 1 Pengantar magnet
utama
perangkat keras
AAA
piringan
Penyimpanan
daftarkan cache
Gambar 1.15 Migrasi integer A dari disk ke register.
menjadi sama hanya setelah nilai baru A ditulis dari register internal kembali ke
hard disk.
Dalam lingkungan komputasi di mana hanya satu proses yang dieksekusi pada
satu waktu, pengaturan ini tidak menimbulkan kesulitan, karena akses ke bilangan
bulat A akan selalu ke salinan pada tingkat hierarki tertinggi. Namun, dalam
lingkungan multitasking, di mana CPU diaktifkan bolak-balik di antara berbagai
proses, harus sangat berhati-hati untuk memastikan bahwa, jika beberapa proses
ingin mengakses A, maka masing-masing proses ini akan mendapatkan nilai
terbaru dari A.
Situasi menjadi lebih rumit dalam lingkungan multiprosesor di mana, selain
memelihara register internal, masing-masing CPU juga berisi cache lokal (lihat
kembali Gambar 1.8). Dalam lingkungan seperti itu, salinan A mungkin ada secara
bersamaan di beberapa cache. Karena berbagai CPU semuanya dapat dijalankan
secara paralel, kita harus memastikan bahwa pembaruan nilai A dalam satu cache
segera tercermin di semua cache lain tempat A berada. Situasi ini disebut
koherensi cache, dan biasanya merupakan masalah perangkat keras (ditangani di
bawah level sistem operasi).
Dalam lingkungan terdistribusi, situasinya menjadi lebih kompleks. Dalam
lingkungan ini, beberapa salinan (atau replika) dari file yang sama dapat disimpan
di komputer yang berbeda. Karena berbagai replika dapat diakses dan diperbarui
secara bersamaan, beberapa sistem terdistribusi memastikan bahwa, ketika
replika diperbarui di satu tempat, semua replika lainnya diperbarui sesegera
mungkin. Ada berbagai cara untuk mencapai jaminan ini, seperti yang kita bahas
di Bab 19.
1.5.6 Manajemen Sistem I/O
Salah satu tujuan dari sistem operasi adalah untuk menyembunyikan kekhasan
perangkat keras tertentu dari pengguna. Misalnya, di UNIX, kekhasan perangkat
I/O disembunyikan dari sebagian besar sistem operasi itu sendiri oleh subsistem
I/O. Subsistem I/O terdiri dari beberapa komponen:
• Komponen manajemen memori yang mencakup buffering, caching, dan spooling
• Antarmuka driver-perangkat umum
• Driver untuk perangkat keras tertentu
Hanya driver perangkat yang mengetahui kekhasan perangkat tertentu yang
ditugaskan.
Kami telah membahas sebelumnya dalam bab ini bagaimana penangan interupsi
dan driver perangkat digunakan dalam pembangunan subsistem I/O yang efisien.
Dalam Bab 12, kita membahas bagaimana subsistem I/O berinteraksi dengan
komponen sistem lainnya, mengelola perangkat, mentransfer data, dan
mendeteksi penyelesaian I/O.
1.6 Keamanan dan Perlindungan 33
1.6 Keamanan dan Perlindungan
Jika sistem komputer memiliki banyak pengguna dan memungkinkan eksekusi
beberapa proses secara bersamaan, maka akses ke data harus diatur. Untuk
tujuan itu, mekanisme memastikan bahwa file, segmen memori, CPU, dan sumber
daya lainnya dapat dioperasikan hanya oleh proses yang telah memperoleh
otorisasi yang tepat dari sistem operasi. Misalnya, perangkat keras pengalamatan
memori memastikan bahwa suatu proses hanya dapat dijalankan di dalam ruang
alamatnya sendiri. Timer memastikan bahwa tidak ada proses yang dapat
mengontrol CPU tanpa akhirnya melepaskan kontrol. Register kontrol perangkat
tidak dapat diakses oleh pengguna, sehingga integritas berbagai perangkat
periferal dilindungi.
Perlindungan, kemudian, adalah mekanisme untuk mengontrol akses proses atau
pengguna ke sumber daya yang ditentukan oleh sistem komputer. Mekanisme ini
harus menyediakan sarana untuk menentukan kontrol yang akan diberlakukan
dan untuk menegakkan kontrol.
Perlindungan dapat meningkatkan keandalan dengan mendeteksi kesalahan laten
pada antarmuka antara subsistem komponen. Deteksi dini kesalahan antarmuka
sering kali dapat mencegah kontaminasi subsistem yang sehat oleh subsistem lain
yang tidak berfungsi. Selain itu, sumber daya yang tidak dilindungi tidak dapat
bertahan terhadap penggunaan (atau penyalahgunaan) oleh pengguna yang tidak
berwenang atau tidak kompeten. Sebuah sistem berorientasi perlindungan
menyediakan sarana untuk membedakan antara penggunaan yang sah dan tidak
sah, seperti yang kita bahas di Bab 17.
Sebuah sistem dapat memiliki perlindungan yang memadai tetapi masih rentan
terhadap kegagalan dan memungkinkan akses yang tidak tepat. Pertimbangkan
pengguna yang informasi otentikasinya (caranya mengidentifikasi dirinya ke
sistem) dicuri. Datanya dapat disalin atau dihapus, meskipun perlindungan file
dan memori berfungsi. Ini adalah tugas keamanan untuk mempertahankan sistem
dari serangan eksternal dan internal. Serangan semacam itu menyebar dalam
jangkauan yang sangat luas dan mencakup virus dan worm, serangan penolakan
layanan (yang menggunakan semua sumber daya sistem dan dengan demikian
menjauhkan pengguna yang sah dari sistem), pencurian identitas, dan pencurian
layanan (penggunaan sistem yang tidak sah ). Pencegahan beberapa serangan ini
dianggap sebagai fungsi sistem operasi pada beberapa sistem, sementara sistem
lain menyerahkannya pada kebijakan atau perangkat lunak tambahan. Karena
meningkatnya insiden keamanan yang mengkhawatirkan, fitur keamanan sistem
operasi menjadi area penelitian dan implementasi yang berkembang pesat. Kami
membahas keamanan di Bab 16.
Proteksi dan keamanan menuntut sistem untuk dapat membedakan semua
penggunanya. Sebagian besar sistem operasi memelihara daftar nama pengguna
dan pengidentifikasi pengguna terkait (ID pengguna). Dalam bahasa Windows, ini
adalah ID keamanan (SID). ID numerik ini unik, satu per pengguna. Ketika
pengguna masuk ke sistem, tahap otentikasi menentukan ID pengguna yang
sesuai untuk pengguna. ID pengguna itu adalah terkait dengan semua proses dan
utas pengguna. Ketika ID perlu dibaca oleh pengguna, itu diterjemahkan kembali
ke nama pengguna melalui daftar nama pengguna.
Dalam beberapa keadaan, kami ingin membedakan antara kumpulan pengguna
daripada pengguna individu. Misalnya, pemilik file pada sistem UNIX mungkin
diizinkan untuk mengeluarkan semua operasi pada file itu, sedangkan
sekumpulan pengguna yang dipilih hanya diizinkan untuk membaca file tersebut.
Untuk mencapai ini, kita perlu mendefinisikan nama grup dan kumpulan
pengguna yang termasuk dalam grup itu. Fungsionalitas grup dapat
diimplementasikan sebagai daftar nama grup dan pengenal grup di seluruh
sistem. Seorang pengguna dapat berada dalam satu atau lebih grup, tergantung
pada desain sistem operasi
34 Bab 1 Pendahuluan
keputusan. ID grup pengguna juga disertakan dalam setiap proses dan utas
terkait.
Selama penggunaan sistem normal, ID pengguna dan ID grup untuk pengguna
sudah cukup. Namun, terkadang pengguna perlu meningkatkan hak istimewa
untuk mendapatkan izin tambahan untuk suatu aktivitas. Pengguna mungkin
memerlukan akses ke perangkat yang dibatasi, misalnya. Sistem operasi
menyediakan berbagai metode untuk memungkinkan eskalasi hak istimewa. Di
UNIX, misalnya, atribut setuid pada program menyebabkan program itu berjalan
dengan ID pengguna pemilik file, bukan ID pengguna saat ini. Proses berjalan
dengan UID yang efektif ini hingga mematikan hak istimewa tambahan atau
berakhir.
1.7 Virtualisasi
Virtualisasi adalah teknologi yang memungkinkan kita untuk mengabstraksi
perangkat keras dari satu komputer (CPU, memori, disk drive, kartu antarmuka
jaringan, dan sebagainya) ke dalam beberapa lingkungan eksekusi yang berbeda,
sehingga menciptakan ilusi bahwa setiap lingkungan yang terpisah sedang
berjalan. pada komputer pribadinya sendiri. Lingkungan ini dapat dilihat sebagai
sistem operasi individu yang berbeda (misalnya, Windows dan UNIX) yang
mungkin berjalan pada waktu yang sama dan dapat berinteraksi satu sama lain.
Pengguna mesin virtual dapat beralih di antara berbagai sistem operasi dengan
cara yang sama seperti pengguna dapat beralih di antara berbagai proses yang
berjalan secara bersamaan dalam satu sistem operasi.
Virtualisasi memungkinkan sistem operasi berjalan sebagai aplikasi dalam sistem
operasi lain. Pada blush pertama, tampaknya ada sedikit alasan untuk fungsi
seperti itu. Tetapi industri virtualisasi sangat luas dan berkembang, yang
merupakan bukti utilitas dan pentingnya.
Secara garis besar, perangkat lunak virtualisasi merupakan salah satu anggota
kelas yang juga termasuk emulasi. Emulasi, yang melibatkan simulasi perangkat
keras komputer dalam perangkat lunak, biasanya digunakan ketika jenis CPU
sumber berbeda dari jenis CPU target. Misalnya, ketika Apple beralih dari IBM
Power CPU ke CPU Intel x86 untuk komputer desktop dan laptopnya, itu termasuk
fasilitas emulasi yang disebut "Rosetta," yang memungkinkan aplikasi yang
dikompilasi untuk CPU IBM berjalan di CPU Intel. Konsep yang sama dapat
diperluas untuk memungkinkan seluruh sistem operasi yang ditulis untuk satu
platform berjalan di platform lain. Namun, emulasi datang dengan harga yang
mahal. Setiap instruksi tingkat mesin yang berjalan secara native pada sistem
sumber harus diterjemahkan ke fungsi yang setara pada sistem target, sering kali
menghasilkan beberapa instruksi target. Jika CPU sumber dan target memiliki
tingkat kinerja yang serupa, kode yang diemulasi dapat berjalan jauh lebih lambat
daripada kode asli.
Dengan virtualisasi, sebaliknya, sistem operasi yang secara asli dikompilasi untuk
arsitektur CPU tertentu berjalan di dalam sistem operasi lain yang juga asli dari
CPU itu. Virtualisasi pertama kali muncul pada mainframe IBM sebagai metode
bagi banyak pengguna untuk menjalankan tugas secara bersamaan. Menjalankan
beberapa mesin virtual diperbolehkan (dan masih memungkinkan) banyak
pengguna untuk menjalankan tugas pada sistem yang dirancang untuk satu
pengguna. Kemudian, sebagai tanggapan atas masalah menjalankan beberapa
aplikasi Microsoft Windows pada CPU Intel x86, VMware menciptakan teknologi
virtualisasi baru dalam bentuk aplikasi yang berjalan di Windows. Aplikasi
tersebut menjalankan satu atau lebih salinan tamu Windows atau sistem operasi
x86 asli lainnya, masing-masing menjalankan aplikasinya sendiri. (Lihat Gambar
1.16.)
proses

inti
perangkat keras (a)
antarmuka pemrograman
1.8 Sistem Terdistribusi 35
proses
proses
proses

kernel kernel kernel


VM1 VM3 VM2
mesin virtual
Pengelola
perangkat keras
(B)
Gambar 1.16 Komputer yang menjalankan (a) satu sistem operasi dan (b) tiga
mesin virtual.
Windows adalah sistem operasi host, dan aplikasi VMware adalah manajer mesin
virtual (VMM). VMM menjalankan sistem operasi tamu, mengelola penggunaan
sumber daya mereka, dan melindungi setiap tamu dari yang lain.
Meskipun sistem operasi modern sepenuhnya mampu menjalankan banyak
aplikasi dengan andal, penggunaan virtualisasi terus berkembang. Pada laptop
dan desktop, VMM memungkinkan pengguna untuk menginstal beberapa sistem
operasi untuk eksplorasi atau untuk menjalankan aplikasi yang ditulis untuk
sistem operasi selain host asli. Misalnya, laptop Apple yang menjalankan macOS
pada CPU x86 dapat menjalankan tamu Windows 10 untuk memungkinkan
eksekusi aplikasi Windows. Perusahaan yang menulis perangkat lunak untuk
beberapa sistem operasi dapat menggunakan virtualisasi untuk menjalankan
semua sistem operasi tersebut pada satu server fisik untuk pengembangan,
pengujian, dan debugging. Di dalam pusat data, virtualisasi telah menjadi metode
eksekusi yang umum dan mengelola lingkungan komputasi. VMM seperti VMware
ESX dan Citrix XenServer tidak lagi berjalan pada sistem operasi host tetapi lebih
merupakan sistem operasi host, menyediakan layanan dan manajemen sumber
daya untuk proses mesin virtual.
Dengan teks ini, kami menyediakan mesin virtual Linux yang memungkinkan Anda
untuk menjalankan Linux—serta alat pengembangan yang kami sediakan—di
sistem pribadi Anda terlepas dari sistem operasi host Anda. Detail lengkap fitur
dan implementasi virtualisasi dapat ditemukan di Bab 18.
1.8 Sistem Terdistribusi
Sistem terdistribusi adalah kumpulan sistem komputer yang terpisah secara fisik,
mungkin heterogen, yang terhubung ke jaringan untuk menyediakan pengguna
dengan akses ke berbagai sumber daya yang dikelola sistem. Akses ke sumber
daya bersama meningkatkan kecepatan komputasi, fungsionalitas, ketersediaan
data, dan keandalan. Beberapa sistem operasi menggeneralisasi akses jaringan
sebagai bentuk akses file, dengan rincian jaringan yang terkandung dalam driver
perangkat antarmuka jaringan.
36 Bab 1 Pendahuluan
Lainnya membuat pengguna secara khusus memanggil fungsi jaringan. Umumnya,
sistem berisi campuran dua mode—misalnya FTP dan NFS. Protokol yang
membuat sistem terdistribusi dapat sangat mempengaruhi utilitas dan
popularitas sistem tersebut.
Jaringan, dalam istilah yang paling sederhana, adalah jalur komunikasi antara dua
atau lebih sistem. Sistem terdistribusi bergantung pada jaringan untuk
fungsionalitasnya. Jaringan bervariasi menurut protokol yang digunakan, jarak
antara node, dan media transportasi. TCP/IP adalah protokol jaringan yang paling
umum, dan menyediakan arsitektur dasar Internet. Sebagian besar sistem operasi
mendukung TCP/IP, termasuk semua yang serba guna. Beberapa sistem
mendukung protokol berpemilik agar sesuai dengan kebutuhan mereka. Untuk
sistem operasi, protokol jaringan hanya perlu memiliki perangkat antarmuka—
adaptor jaringan, misalnya—dengan driver perangkat untuk mengelolanya, serta
perangkat lunak untuk menangani data. Konsep-konsep ini dibahas di seluruh
buku ini.
Jaringan dicirikan berdasarkan jarak antara node mereka. Jaringan area lokal
(LAN) menghubungkan komputer di dalam ruangan, gedung, atau kampus.
Jaringan area luas (WAN) biasanya menghubungkan bangunan, kota, atau negara.
Sebuah perusahaan global mungkin memiliki WAN untuk menghubungkan
kantornya di seluruh dunia, misalnya. Jaringan ini dapat menjalankan satu
protokol atau beberapa protokol. Munculnya terus teknologi baru membawa
bentuk-bentuk baru dari jaringan. Misalnya, jaringan area metropolitan (MAN)
dapat menghubungkan bangunan di dalam kota. Perangkat BlueTooth dan 802.11
menggunakan teknologi nirkabel untuk berkomunikasi melalui jarak beberapa
kaki, pada dasarnya menciptakan jaringan area pribadi (PAN) antara telepon dan
headset atau smartphone dan komputer desktop.
Media untuk membawa jaringan sama-sama bervariasi. Mereka termasuk kabel
tembaga, untaian serat, dan transmisi nirkabel antara satelit, piringan gelombang
mikro, dan radio. Ketika perangkat komputasi terhubung ke telepon seluler,
mereka membuat jaringan. Bahkan komunikasi inframerah jarak sangat pendek
dapat digunakan untuk jaringan. Pada tingkat dasar, setiap kali komputer
berkomunikasi, mereka menggunakan atau membuat jaringan. Jaringan ini juga
bervariasi dalam kinerja dan keandalannya.
Beberapa sistem operasi telah mengambil konsep jaringan dan sistem
terdistribusi lebih jauh daripada gagasan menyediakan konektivitas jaringan.
Sistem operasi jaringan adalah sistem operasi yang menyediakan fitur seperti
berbagi file di seluruh jaringan, bersama dengan skema komunikasi yang
memungkinkan proses yang berbeda pada komputer yang berbeda untuk
bertukar pesan. Sebuah komputer yang menjalankan sistem operasi jaringan
bertindak secara mandiri dari semua komputer lain di jaringan, meskipun
menyadari jaringan dan mampu berkomunikasi dengan komputer jaringan
lainnya. Sistem operasi terdistribusi menyediakan lingkungan yang kurang
otonom. Komputer yang berbeda berkomunikasi cukup dekat untuk memberikan
ilusi bahwa hanya satu sistem operasi yang mengontrol jaringan. Kami membahas
jaringan komputer dan sistem terdistribusi di Bab 19.
1.9 Struktur Data Kernel
Kami beralih ke topik sentral untuk implementasi sistem operasi: cara data
terstruktur dalam sistem. Pada bagian ini, kami menjelaskan secara singkat
beberapa struktur data dasar yang digunakan secara luas dalam sistem operasi.
Pembaca
1.9 Struktur Data Kernel 37
data data data nol • • •
Gambar 1.17 Daftar tertaut tunggal.
yang memerlukan rincian lebih lanjut tentang struktur ini, serta yang lain, harus
berkonsultasi dengan bibliografi di akhir bab ini.
1.9.1 Daftar, Tumpukan, dan Antrian
Array adalah struktur data sederhana di mana setiap elemen dapat diakses secara
langsung. Misalnya, memori utama dibangun sebagai array. Jika item data yang
disimpan lebih besar dari satu byte, maka beberapa byte dapat dialokasikan ke
item tersebut, dan item tersebut dialamatkan sebagai "nomor item x ukuran
barang.” Tapi bagaimana dengan menyimpan barang yang ukurannya bisa
bervariasi? Dan bagaimana dengan menghapus item jika posisi relatif dari item
yang tersisa harus dipertahankan? Dalam situasi seperti itu, array memberi jalan
ke struktur data lainnya.
Setelah array, daftar mungkin merupakan struktur data paling mendasar dalam
ilmu komputer. Sedangkan setiap item dalam array dapat diakses secara
langsung, item dalam daftar harus diakses dalam urutan tertentu. Artinya, daftar
mewakili kumpulan nilai data sebagai urutan. Metode yang paling umum untuk
menerapkan struktur ini adalah daftar tertaut, di mana item terkait satu sama
lain. Daftar tertaut terdiri dari beberapa jenis:
• Dalam single linked list, setiap item menunjuk ke penggantinya, seperti yang
diilustrasikan pada Gambar 1.17.
• Dalam daftar tertaut ganda, item tertentu dapat merujuk ke pendahulunya atau
penerusnya, seperti yang diilustrasikan pada Gambar 1.18.
• Dalam daftar yang ditautkan secara sirkular, elemen terakhir dalam daftar
mengacu pada elemen pertama, bukan nol, seperti yang diilustrasikan pada
Gambar 1.19.
Daftar tertaut mengakomodasi item dengan berbagai ukuran dan memungkinkan
penyisipan dan penghapusan item dengan mudah. Salah satu kelemahan
potensial menggunakan daftar adalah bahwa kinerja untuk mengambil item
tertentu dalam daftar ukuran n adalah linier—O(n), karena memerlukan
kemungkinan melintasi semua n elemen dalam kasus terburuk. Daftar beberapa
kali digunakan langsung oleh algoritma kernel. Namun, sering kali, mereka
digunakan untuk membangun struktur data yang lebih kuat, seperti tumpukan
dan antrian.
Tumpukan adalah struktur data berurutan yang menggunakan prinsip masuk
terakhir, keluar pertama (LIFO) untuk menambah dan menghapus item, artinya
item terakhir
data nol data data nol • • •
Gambar 1.18 Daftar tertaut ganda.
38 Bab 1 Pendahuluan
data data data data • • •
Gambar 1.19 Daftar tertaut sirkular.
ditempatkan ke tumpukan adalah item pertama yang dihapus. Operasi untuk
memasukkan dan menghapus item dari tumpukan dikenal sebagai push dan pop,
masing-masing. Sistem operasi sering menggunakan tumpukan saat menjalankan
panggilan fungsi. Parameter, variabel lokal, dan alamat pengirim didorong ke
tumpukan saat fungsi dipanggil; kembali dari panggilan fungsi mengeluarkan
barang-barang itu dari tumpukan.
Antrian, sebaliknya, adalah struktur data berurutan yang menggunakan prinsip
masuk pertama, keluar pertama (FIFO): item dihapus dari antrian sesuai urutan
penyisipannya. Ada banyak contoh antrian sehari-hari, termasuk pembeli yang
menunggu di antrean checkout di toko dan mobil yang mengantri di lampu lalu
lintas. Antrian juga cukup umum di sistem operasi—pekerjaan yang dikirim ke
printer biasanya dicetak sesuai urutan pengirimannya, misalnya. Seperti yang
akan kita lihat di Bab 5, tugas yang menunggu untuk dijalankan pada CPU yang
tersedia sering diatur dalam antrian.
1.9.2 Pohon
Pohon adalah struktur data yang dapat digunakan untuk merepresentasikan data
secara hierarkis. Nilai data dalam struktur pohon dihubungkan melalui hubungan
induk-anak. Dalam pohon umum, orang tua mungkin memiliki jumlah anak yang
tidak terbatas. Dalam pohon biner, orang tua mungkin memiliki paling banyak dua
anak, yang kita sebut anak kiri dan anak kanan. Pohon pencarian biner juga
memerlukan pemesanan antara dua anak induk di mana anak kiri <= anak kanan .
Gambar 1.20 memberikan contoh pohon pencarian biner. Saat kami mencari item
di pohon pencarian biner, kinerja kasus terburuk adalah O(n) (pertimbangkan
bagaimana ini bisa terjadi). Untuk memperbaiki situasi ini, kita dapat
menggunakan algoritma untuk membuat pohon pencarian biner seimbang. Di
sini, pohon yang berisi n item memiliki paling banyak lg n level, sehingga
memastikan kinerja terburuk dari O(lg n). Kita akan melihat di Bagian 5.7.1 bahwa
Linux menggunakan pohon pencarian biner seimbang (dikenal sebagai pohon
merah-hitam) sebagai bagian dari algoritma penjadwalan CPU-nya.
1.9.3 Fungsi Hash dan Peta
Fungsi hash mengambil data sebagai inputnya, melakukan operasi numerik pada
data, dan mengembalikan nilai numerik. Nilai numerik ini kemudian dapat
digunakan sebagai indeks ke dalam tabel (biasanya array) untuk mengambil data
dengan cepat. Sedangkan mencari item data melalui daftar ukuran n dapat
memerlukan perbandingan hingga O(n), menggunakan fungsi hash untuk
mengambil data dari tabel bisa sebaik O(1), tergantung pada detail implementasi.
Karena kinerja ini, fungsi hash digunakan secara luas dalam sistem operasi.
Salah satu kesulitan potensial dengan fungsi hash adalah bahwa dua input unik
dapat menghasilkan nilai output yang sama— yaitu, mereka dapat menautkan ke
tabel yang sama
12
1.9 Struktur Data Kernel 39 17
35
6 14
40
38
Gambar 1.20 Pohon pencarian biner.
lokasi. Kami dapat mengakomodasi tabrakan hash ini dengan memiliki daftar
tertaut di lokasi tabel yang berisi semua item dengan nilai hash yang sama. Tentu
saja, semakin banyak tabrakan, semakin tidak efisien fungsi hash.
Salah satu penggunaan fungsi hash adalah untuk mengimplementasikan peta
hash, yang mengaitkan (atau memetakan) pasangan [key:value] menggunakan
fungsi hash. Setelah pemetaan dibuat, kita dapat menerapkan fungsi hash ke
kunci untuk mendapatkan nilai dari peta hash (Gambar 1.21). Misalnya, anggaplah
nama pengguna dipetakan ke kata sandi. Otentikasi kata sandi kemudian
berlanjut sebagai berikut: pengguna memasukkan nama pengguna dan kata
sandinya. Fungsi hash diterapkan ke nama pengguna, yang kemudian digunakan
untuk mengambil kata sandi. Kata sandi yang diambil kemudian dibandingkan
dengan kata sandi yang dimasukkan oleh pengguna untuk otentikasi.
1.9.4 Bitmap
Abitmap adalah string n digit biner yang dapat digunakan untuk mewakili status n
item. Misalnya, kita memiliki beberapa sumber daya, dan ketersediaan setiap
sumber daya ditunjukkan dengan nilai digit biner: 0 berarti sumber daya tersedia,
sedangkan 1 menunjukkan tidak tersedia (atau sebaliknya). NS
fungsi_hash(kunci)
peta hash
01..n
nilai
Gambar 1.21 Peta hash.
40 Bab 1 Pendahuluan
STRUKTUR DATA LINUX KERNEL
Struktur data yang digunakan dalam kernel Linux tersedia dalam kode sumber
kernel. File include <linux/list.h> menyediakan detail struktur data linked-list yang
digunakan di seluruh kernel. Antrian di Linux dikenal sebagai kfifo, dan
implementasinya dapat ditemukan di file kfifo.c di direktori kernel kode sumber.
Linux juga menyediakan implementasi pohon pencarian biner seimbang
menggunakan pohon merah-hitam. Detailnya dapat ditemukan di file include
<linux/rbtree.h>.
nilai posisi ke-i dalam bitmap dikaitkan dengan sumber daya ke-i. Sebagai contoh,
perhatikan bitmap yang ditunjukkan di bawah ini:
001011101
Sumber daya 2, 4, 5, 6, dan 8 tidak tersedia; sumber 0, 1, 3, dan 7 tersedia.
Kekuatan bitmap menjadi jelas ketika kita mempertimbangkan efisiensi ruangnya.
Jika kita menggunakan nilai Boolean delapan bit dan bukan satu bit, struktur data
yang dihasilkan akan menjadi delapan kali lebih besar. Dengan demikian, bitmap
biasanya digunakan ketika ada kebutuhan untuk mewakili ketersediaan sejumlah
besar sumber daya. Disk drive memberikan ilustrasi yang bagus. Disk drive
berukuran sedang dapat dibagi menjadi beberapa ribu unit individu, yang disebut
disk
blok. Sebuah bitmap dapat digunakan untuk menunjukkan ketersediaan setiap
blok disk. Singkatnya, struktur data meresap dalam implementasi sistem operasi.
Jadi, kita akan melihat struktur yang dibahas di sini, bersama dengan yang lain, di
seluruh teks ini saat kita menjelajahi algoritme kernel dan implementasinya.
1.10 Lingkungan Komputasi
Sejauh ini, kami telah menjelaskan secara singkat beberapa aspek sistem
komputer dan sistem operasi yang mengelolanya. Sekarang kita beralih ke diskusi
tentang bagaimana sistem operasi digunakan dalam berbagai lingkungan
komputasi.
1.10.1 Komputasi Tradisional
Ketika komputasi telah matang, garis yang memisahkan banyak lingkungan
komputasi tradisional menjadi kabur. Pertimbangkan "lingkungan kantor yang
khas." Hanya beberapa tahun yang lalu, lingkungan ini terdiri dari PC yang
terhubung ke jaringan, dengan server yang menyediakan layanan file dan cetak.
Akses jarak jauh canggung, dan portabilitas dicapai dengan menggunakan
komputer laptop.
Saat ini, teknologi web dan peningkatan bandwidth WAN memperluas batas
komputasi tradisional. Perusahaan membuat portal, yang menyediakan akses web
ke server internal mereka. Jaringan komputer (atau thin client)—yang pada
dasarnya adalah terminal yang memahami komputasi berbasis web—digunakan
sebagai pengganti workstation tradisional di mana lebih banyak keamanan atau
perawatan yang lebih mudah diinginkan. Komputer seluler dapat menyinkronkan
dengan PC untuk memungkinkan penggunaan informasi perusahaan yang sangat
portabel. Perangkat seluler juga bisa
1.10 Lingkungan Komputasi 41
terhubung ke jaringan nirkabel dan jaringan data seluler untuk menggunakan
portal web perusahaan (serta berbagai sumber daya web lainnya).
Di rumah, sebagian besar pengguna pernah memiliki satu komputer dengan
koneksi modem yang lambat ke kantor, Internet, atau keduanya. Saat ini,
kecepatan koneksi jaringan yang dulu hanya tersedia dengan biaya tinggi, relatif
murah di banyak tempat, memberi pengguna rumahan lebih banyak akses ke
lebih banyak data. Koneksi data yang cepat ini memungkinkan komputer rumah
untuk menyajikan halaman web dan menjalankan jaringan yang mencakup
printer, PC klien, dan server. Banyak rumah menggunakan firewall untuk
melindungi jaringan mereka dari pelanggaran keamanan. Firewall membatasi
komunikasi antar perangkat di jaringan.
Pada paruh kedua abad ke-20, sumber daya komputasi relatif langka. (Sebelum
itu, mereka tidak ada!) Untuk jangka waktu tertentu, sistem bersifat batch atau
interaktif. Sistem batch memproses pekerjaan secara massal, dengan input yang
ditentukan sebelumnya dari file atau sumber data lainnya. Sistem interaktif
menunggu masukan dari pengguna. Untuk mengoptimalkan penggunaan sumber
daya komputasi, beberapa pengguna berbagi waktu pada sistem ini. Sistem
pembagian waktu ini menggunakan algoritme pengatur waktu dan penjadwalan
untuk menggilir proses dengan cepat melalui CPU, memberi setiap pengguna
bagian dari sumber daya.
Sistem pembagian waktu tradisional jarang terjadi saat ini. Teknik penjadwalan
yang sama masih digunakan pada komputer desktop, laptop, server, dan bahkan
komputer seluler, tetapi seringkali semua proses dimiliki oleh pengguna yang
sama (atau satu pengguna dan sistem operasi). Proses pengguna, dan proses
sistem yang menyediakan layanan kepada pengguna, dikelola sehingga masing-
masing sering mendapat bagian waktu komputer. Pertimbangkan jendela yang
dibuat saat pengguna bekerja pada PC, misalnya, dan fakta bahwa mereka
mungkin melakukan tugas yang berbeda pada waktu yang sama. Bahkan browser
web dapat terdiri dari beberapa proses, satu untuk setiap situs web yang sedang
dikunjungi, dengan pembagian waktu yang diterapkan untuk setiap proses
browser web.
1.10.2 Komputasi Seluler
Komputasi mobile mengacu pada komputasi pada smartphone genggam dan
komputer tablet. Perangkat ini berbagi fitur fisik yang membedakan karena
portabel dan ringan. Secara historis, dibandingkan dengan komputer desktop dan
laptop, sistem seluler menyerahkan ukuran layar, kapasitas memori, dan
fungsionalitas keseluruhan sebagai imbalan atas akses seluler genggam ke
layanan seperti email dan web. menjelajah. Namun, selama beberapa tahun
terakhir, fitur pada perangkat seluler telah menjadi begitu kaya sehingga
perbedaan fungsionalitas antara, katakanlah, laptop konsumen dan komputer
tablet mungkin sulit untuk dibedakan. Faktanya, kami mungkin berpendapat
bahwa fitur perangkat seluler kontemporer memungkinkannya menyediakan
fungsionalitas yang tidak tersedia atau tidak praktis di komputer desktop atau
laptop.
Saat ini, sistem seluler digunakan tidak hanya untuk email dan penelusuran web,
tetapi juga untuk memutar musik dan video, membaca buku digital, mengambil
foto, dan merekam serta mengedit video definisi tinggi. Dengan demikian,
pertumbuhan luar biasa terus berlanjut dalam berbagai aplikasi yang berjalan di
perangkat tersebut. Banyak pengembang kini merancang aplikasi yang
memanfaatkan fitur unik perangkat seluler, seperti chip sistem penentuan posisi
global (GPS), akselerometer, dan giroskop. Chip GPS tertanam memungkinkan
perangkat seluler menggunakan satelit untuk menentukan lokasi tepatnya di
Bumi. Fungsi itu adalah
42 Bab 1 Pendahuluan
sangat berguna dalam merancang aplikasi yang menyediakan navigasi— misalnya,
memberi tahu pengguna jalan mana yang harus berjalan atau mengemudi atau
mungkin mengarahkan mereka ke layanan terdekat, seperti restoran.
Akselerometer memungkinkan perangkat seluler mendeteksi orientasinya
terhadap tanah dan mendeteksi gaya tertentu lainnya, seperti kemiringan dan
guncangan. Dalam beberapa permainan komputer yang menggunakan
akselerometer, pemain berinteraksi dengan sistem bukan dengan menggunakan
mouse atau keyboard melainkan dengan memiringkan, memutar, dan
menggoyangkan perangkat seluler! Mungkin lebih praktis penggunaan fitur ini
ditemukan dalam aplikasi augmented-reality, yang overlay informasi pada
tampilan lingkungan saat ini. Sulit untuk membayangkan bagaimana aplikasi yang
setara dapat dikembangkan pada laptop tradisional atau sistem komputer
desktop.
Untuk menyediakan akses ke layanan on-line, perangkat seluler biasanya
menggunakan jaringan data seluler atau nirkabel standar IEEE 802.11. Namun,
kapasitas memori dan kecepatan pemrosesan perangkat seluler lebih terbatas
daripada PC. Sementara smartphone atau tablet mungkin memiliki penyimpanan
256 GB, tidak jarang menemukan penyimpanan 8 TB di komputer desktop.
Demikian pula, karena konsumsi daya menjadi perhatian, perangkat seluler sering
menggunakan prosesor yang lebih kecil, lebih lambat, dan menawarkan inti
pemrosesan yang lebih sedikit daripada prosesor yang ditemukan pada komputer
desktop dan laptop tradisional.
Dua sistem operasi saat ini mendominasi komputasi seluler: Apple iOS dan Google
Android. iOS dirancang untuk berjalan di perangkat seluler Apple iPhone dan iPad.
Android mendukung smartphone dan komputer tablet yang tersedia dari banyak
produsen. Kami memeriksa kedua sistem operasi seluler ini secara lebih rinci di
Bab 2.
1.10.3 Klien – Komputasi Server
Arsitektur jaringan kontemporer menampilkan pengaturan di mana sistem server
memenuhi permintaan yang dihasilkan oleh sistem klien. Bentuk sistem
terdistribusi khusus ini, yang disebut sistem client-server, memiliki struktur umum
yang digambarkan pada Gambar 1.22.
Sistem server dapat dikategorikan secara luas sebagai server komputasi dan
server file:
• Sistem server komputasi menyediakan antarmuka tempat klien dapat mengirim
permintaan untuk melakukan tindakan (misalnya, membaca data). Sebagai
tanggapan, server menjalankan tindakan dan mengirimkan hasilnya ke klien.
Sebuah server
klien
Desktop
jaringan server
klien
laptop
klien
smartphone
Gambar 1.22 Struktur umum sistem client-server.
1.10 Lingkungan Komputasi 43
menjalankan database yang merespon permintaan klien untuk data adalah
contoh dari sistem tersebut.
• Sistem file-serve menyediakan antarmuka sistem file di mana klien dapat
membuat, memperbarui, membaca, dan menghapus file. Contoh dari sistem
tersebut adalah server web yang mengirimkan file ke klien yang menjalankan
browser web. Isi sebenarnya dari file dapat sangat bervariasi, mulai dari halaman
web tradisional hingga konten multimedia yang kaya seperti video definisi tinggi.
1.10.4 Komputasi Peer-to-Peer
Struktur lain untuk sistem terdistribusi adalah model sistem peer-to-peer (P2P).
Dalam model ini, klien dan server tidak dibedakan satu sama lain. Sebaliknya,
semua node dalam sistem dianggap rekan, dan masing-masing dapat bertindak
sebagai klien atau server, tergantung pada apakah itu meminta atau menyediakan
layanan. Sistem peer-to-peer menawarkan keunggulan dibandingkan sistem
client-server tradisional. Dalam sistem klien-server, server adalah hambatan;
tetapi dalam sistem peer-to-peer, layanan dapat disediakan oleh beberapa node
yang didistribusikan di seluruh jaringan.
Untuk berpartisipasi dalam sistem peer-to-peer, sebuah node harus terlebih
dahulu bergabung dengan jaringan peer-to-peer. Setelah sebuah node bergabung
dengan jaringan, node tersebut dapat mulai menyediakan layanan ke—dan
meminta layanan dari—node lain dalam jaringan. Menentukan layanan apa yang
tersedia dilakukan dengan salah satu dari dua cara umum:
• Ketika sebuah node bergabung dengan jaringan, ia mendaftarkan layanannya
dengan layanan pencarian terpusat di jaringan. Setiap node yang menginginkan
layanan tertentu terlebih dahulu menghubungi layanan pencarian terpusat ini
untuk menentukan node mana yang menyediakan layanan tersebut. Sisa
komunikasi terjadi antara klien dan penyedia layanan.
• Skema alternatif tidak menggunakan layanan pencarian terpusat. Sebagai
gantinya, rekan yang bertindak sebagai klien harus menemukan node apa yang
menyediakan layanan yang diinginkan dengan menyiarkan permintaan layanan ke
semua node lain dalam jaringan. Node (atau node) yang menyediakan layanan
tersebut merespons rekan yang membuat permintaan. Untuk mendukung
pendekatan ini, protokol penemuan harus disediakan yang memungkinkan rekan-
rekan untuk menemukan layanan yang disediakan oleh rekan-rekan lain dalam
jaringan. Gambar 1.23 mengilustrasikan skenario seperti itu.
Jaringan peer-to-peer mendapatkan popularitas luas di akhir 1990-an dengan
beberapa layanan file-sharing, seperti Napster dan Gnutella, yang memungkinkan
peer untuk bertukar file satu sama lain. Sistem Napster menggunakan pendekatan
yang mirip dengan tipe pertama yang dijelaskan di atas: server terpusat
memelihara indeks semua file yang disimpan pada node peer di jaringan Napster,
dan pertukaran file yang sebenarnya terjadi antara node peer. Sistem Gnutella
menggunakan teknik yang mirip dengan tipe kedua: klien menyiarkan permintaan
file ke node lain dalam sistem, dan node yang dapat melayani permintaan
merespons langsung ke klien. Jaringan peer-to-peer dapat digunakan untuk
bertukar materi berhak cipta (musik, misalnya) secara anonim, dan ada undang-
undang yang mengatur distribusi materi berhak cipta. Khususnya, Napster
mengalami masalah hukum karena pelanggaran hak cipta, dan layanannya
ditutup pada tahun 2001. Karena alasan ini, masa depan pertukaran file tetap
tidak pasti.
44 Bab 1 Pendahuluan
klien
klien klien
klien klien
Gambar 1.23 Sistem peer-to-peer tanpa layanan terpusat.
Skype adalah contoh lain dari komputasi peer-to-peer. Hal ini memungkinkan
klien untuk membuat panggilan suara dan panggilan video dan untuk mengirim
pesan teks melalui Internet menggunakan teknologi yang dikenal sebagai voice
over IP (VoIP). Skype menggunakan pendekatan peer to-peer hybrid. Ini termasuk
server login terpusat, tapi itu juga menggabungkan rekan-rekan yang
terdesentralisasi dan memungkinkan dua rekan untuk berkomunikasi.
1.10.5 Komputasi Awan
Komputasi awan adalah jenis komputasi yang memberikan komputasi,
penyimpanan, dan bahkan aplikasi sebagai layanan di seluruh jaringan. Dalam
beberapa hal, ini adalah perpanjangan logis dari virtualisasi, karena menggunakan
virtualisasi sebagai dasar untuk fungsionalitasnya. Misalnya, fasilitas Amazon
Elastic Compute Cloud (ec2) memiliki ribuan server, jutaan mesin virtual, dan
penyimpanan petabyte yang tersedia untuk digunakan oleh siapa saja di Internet.
Pengguna membayar per bulan berdasarkan seberapa banyak sumber daya yang
mereka gunakan. Sebenarnya ada banyak jenis komputasi awan, di antaranya
sebagai berikut:
• Cloud publik—cloud yang tersedia melalui Internet bagi siapa saja yang bersedia
membayar untuk layanan tersebut
• Cloud pribadi—cloud yang dijalankan oleh perusahaan untuk digunakan sendiri
oleh perusahaan itu
• Hybrid cloud—cloud yang mencakup komponen cloud publik dan privat
• Software as a service (SaaS)—satu atau lebih aplikasi (seperti pengolah kata
atau spreadsheet) tersedia melalui Internet
• Platform as a service (PaaS)—tumpukan perangkat lunak yang siap digunakan
aplikasi melalui Internet (misalnya, server database)
• Infrastruktur sebagai layanan (IaaS)—server atau penyimpanan yang tersedia
melalui Internet (misalnya, penyimpanan yang tersedia untuk membuat salinan
cadangan data produksi)
1.10 Lingkungan Komputasi 45
Internet
pelanggan
permintaan
firewallcloud
pelanggan
antarmuka
penyeimbang beban
awan
perintah manajemen
Maya
mesin
Maya
mesin
penyimpanan
awan
layanan manajemen
server server
Gambar 1.24 Komputasi awan.
Jenis komputasi awan ini tidak terpisah, karena lingkungan komputasi awan dapat
menyediakan kombinasi dari beberapa jenis. Misalnya, sebuah organisasi dapat
menyediakan SaaS dan IaaS sebagai layanan yang tersedia untuk umum.
Tentu saja, ada sistem operasi tradisional dalam banyak jenis infrastruktur cloud.
Di luar itu adalah VMM yang mengelola mesin virtual tempat proses pengguna
dijalankan. Pada tingkat yang lebih tinggi, VMM itu sendiri dikelola oleh alat
manajemen cloud, seperti VMware vCloud Director dan rangkaian alat Eucalyptus
open-source. Alat-alat ini mengelola sumber daya dalam awan tertentu dan
menyediakan antarmuka ke komponen awan, membuat argumen yang baik untuk
mempertimbangkan mereka jenis baru dari sistem operasi.
Gambar 1.24 mengilustrasikan cloud publik yang menyediakan IaaS. Perhatikan
bahwa layanan cloud dan antarmuka pengguna cloud dilindungi oleh firewall.
1.10.6 Sistem Tertanam Waktu Nyata
Komputer tertanam adalah bentuk paling umum dari komputer yang ada.
Perangkat ini ditemukan di mana-mana, mulai dari mesin mobil dan robot
manufaktur hingga drive optik dan oven microwave. Mereka cenderung memiliki
tugas yang sangat spesifik. Sistem yang mereka jalankan biasanya primitif,
sehingga sistem operasi menyediakan fitur yang terbatas. Biasanya, mereka
memiliki sedikit atau tanpa antarmuka pengguna, lebih memilih untuk
menghabiskan waktu mereka memantau dan mengelola perangkat keras, seperti
mesin mobil dan lengan robot.
Sistem tertanam ini sangat bervariasi. Beberapa adalah komputer tujuan umum,
menjalankan sistem operasi standar—seperti Linux—dengan aplikasi tujuan
khusus untuk mengimplementasikan fungsionalitas. Lainnya adalah perangkat
keras dengan sistem operasi tertanam tujuan khusus yang hanya menyediakan
fungsionalitas yang diinginkan. Namun yang lain adalah perangkat keras
46 Bab 1 Pendahuluan
dengan sirkuit terintegrasi khusus aplikasi (ASIC) yang melakukan tugas mereka
tanpa sistem operasi.
Penggunaan sistem tertanam terus berkembang. Kekuatan perangkat ini, baik
sebagai unit mandiri maupun sebagai elemen jaringan dan web, pasti akan
meningkat juga. Bahkan sekarang, seluruh rumah dapat terkomputerisasi,
sehingga komputer pusat—baik komputer serba guna atau sistem tertanam—
dapat mengontrol pemanas dan penerangan, sistem alarm, dan bahkan pembuat
kopi. Akses web dapat memungkinkan pemilik rumah untuk memberi tahu
rumahnya agar memanas sebelum dia tiba di rumah. Suatu hari nanti, lemari es
akan dapat memberi tahu toko kelontong saat mengetahui bahwa susu sudah
habis.
Sistem tertanam hampir selalu berjalan secara real-time
sistem operasi. Sistem waktu nyata digunakan ketika persyaratan waktu yang
kaku telah ditempatkan pada pengoperasian prosesor atau aliran data; dengan
demikian, sering digunakan sebagai perangkat kontrol dalam aplikasi khusus.
Sensor membawa data ke komputer. Komputer harus menganalisis data dan
mungkin menyesuaikan kontrol untuk memodifikasi input sensor. Sistem yang
mengontrol eksperimen ilmiah, sistem pencitraan medis, sistem kontrol industri,
dan sistem tampilan tertentu adalah sistem waktu nyata. Beberapa sistem injeksi
bahan bakar mesin mobil, pengontrol peralatan rumah tangga, dan sistem senjata
juga merupakan sistem waktu nyata.
Sistem real-time memiliki batasan waktu yang tetap dan terdefinisi dengan baik.
Pemrosesan harus dilakukan dalam batasan yang ditentukan, atau sistem akan
gagal. Misalnya, tidak ada gunanya lengan robot diinstruksikan untuk berhenti
setelah menabrak mobil yang sedang dibangunnya. Sistem real-time berfungsi
dengan benar hanya jika mengembalikan hasil yang benar dalam batasan waktu.
Bandingkan sistem ini dengan sistem laptop tradisional yang diinginkan (tetapi
tidak wajib) untuk merespons dengan cepat.
Dalam Bab 5, kami mempertimbangkan fasilitas penjadwalan yang diperlukan
untuk mengimplementasikan fungsionalitas waktu nyata dalam sistem operasi,
dan dalam Bab 20 kami menjelaskan komponen waktu nyata Linux.
1.11 Sistem Operasi Gratis dan Sumber Terbuka
Studi tentang sistem operasi memiliki telah dibuat lebih mudah dengan
kemampuan memanfaatkan sejumlah besar perangkat lunak bebas dan rilis
sumber terbuka. Baik sistem operasi bebas maupun sistem operasi sumber
terbuka tersedia dalam format kode sumber daripada sebagai kode biner yang
dikompilasi. Namun, perhatikan bahwa perangkat lunak bebas dan perangkat
lunak sumber terbuka adalah dua gagasan berbeda yang diperjuangkan oleh
kelompok orang yang berbeda (lihat http://gnu.org/philosophy/open-source-
misses-the-point.html/ untuk diskusi tentang topik). Perangkat lunak bebas
(kadang-kadang disebut sebagai perangkat lunak bebas/gratis) tidak hanya
menyediakan kode sumber tetapi juga dilisensikan untuk memungkinkan
penggunaan, redistribusi, dan modifikasi tanpa biaya. Perangkat lunak sumber
terbuka tidak selalu menawarkan lisensi seperti itu. Jadi, meskipun semua
perangkat lunak bebas adalah sumber terbuka, beberapa perangkat lunak sumber
terbuka tidak “bebas”. GNU/Linux adalah sistem operasi open-source yang paling
terkenal, dengan beberapa distribusi gratis dan yang lainnya hanya open source
(http://www.gnu.org/distros/). Microsoft Windows adalah contoh terkenal dari
pendekatan sumber tertutup yang berlawanan. Windows adalah perangkat lunak
berpemilik—Microsoft memilikinya, membatasi penggunaannya, dan dengan hati-
hati melindungi kode sumbernya. Sistem operasi macOS Apple terdiri dari hibrida
1.11 Sistem Operasi Gratis dan Sumber Terbuka 47
mendekati. Ini berisi kernel open-source bernama Darwin tetapi juga mencakup
komponen sumber tertutup. Dimulai dengan kode sumber memungkinkan
programmer untuk menghasilkan kode biner yang dapat dieksekusi pada suatu
sistem. Melakukan yang sebaliknya—merekayasa balik kode sumber dari binari—
merupakan pekerjaan yang cukup berat, dan item yang berguna seperti komentar
tidak akan pernah dipulihkan. Mempelajari sistem operasi dengan memeriksa
kode sumber juga memiliki manfaat lain. Dengan kode sumber di tangan, siswa
dapat memodifikasi sistem operasi dan kemudian mengkompilasi dan
menjalankan kode untuk mencoba perubahan tersebut, yang merupakan alat
pembelajaran yang sangat baik. Teks ini mencakup proyek yang melibatkan
modifikasi kode sumber sistem operasi, sementara juga menjelaskan algoritme
pada tingkat tinggi untuk memastikan semua topik sistem operasi penting
tercakup. Sepanjang teks, kami memberikan petunjuk ke contoh kode sumber
terbuka untuk studi lebih dalam.
Ada banyak manfaat untuk sistem operasi sumber terbuka, termasuk komunitas
pemrogram yang tertarik (dan biasanya tidak dibayar) yang berkontribusi pada
kode dengan membantu menulisnya, men-debugnya, menganalisisnya,
memberikan dukungan, dan menyarankan perubahan. Diperdebatkan, kode
sumber terbuka lebih aman daripada kode sumber tertutup karena lebih banyak
mata yang melihat kode tersebut. Tentu saja, kode sumber terbuka memiliki bug,
tetapi pendukung sumber terbuka berpendapat bahwa bug cenderung ditemukan
dan diperbaiki lebih cepat karena jumlah orang yang menggunakan dan melihat
kode tersebut. Perusahaan yang memperoleh pendapatan dari penjualan
program mereka sering ragu untuk membuka kode sumber mereka, tetapi Red
Hat dan banyak perusahaan lain melakukan hal itu dan menunjukkan bahwa
perusahaan komersial mendapat manfaat, daripada menderita, ketika mereka
membuka sumber kode mereka. Pendapatan dapat dihasilkan melalui kontrak
dukungan dan penjualan perangkat keras yang menjalankan perangkat lunak
tersebut, misalnya.
1.11.1 Sejarah
Pada hari-hari awal komputasi modern (yaitu, tahun 1950-an), perangkat lunak
umumnya datang dengan kode sumber. Peretas asli (penggemar komputer) di
MIT's Tech Model Railroad Club meninggalkan program mereka di laci untuk
dikerjakan orang lain. Grup pengguna "Homebrew" bertukar kode selama
pertemuan mereka. Grup pengguna khusus perusahaan, seperti DECUS Digital
Equipment Corporation, menerima kontribusi program kode sumber,
mengumpulkannya ke dalam kaset, dan membagikan kaset itu kepada anggota
yang berminat. Pada tahun 1970, sistem operasi Digital didistribusikan sebagai
kode sumber tanpa batasan atau pemberitahuan hak cipta.
Perusahaan komputer dan perangkat lunak akhirnya berusaha membatasi
penggunaan perangkat lunak mereka untuk komputer resmi dan pelanggan yang
membayar. Hanya merilis file biner yang dikompilasi dari kode sumber, bukan
kode sumber itu sendiri, membantu mereka mencapai tujuan ini, serta
melindungi kode dan ide mereka dari pesaing mereka. Meskipun kelompok
pengguna Homebrew tahun 1970-an bertukar kode selama pertemuan mereka,
sistem operasi untuk mesin hobi (seperti CPM) adalah hak milik. Pada tahun 1980,
perangkat lunak berpemilik adalah kasus biasa.
1.11.2 Sistem Operasi Gratis
Untuk melawan langkah untuk membatasi penggunaan dan redistribusi perangkat
lunak, Richard Stallman pada tahun 1984 mulai mengembangkan sistem operasi
gratis yang kompatibel dengan UNIX yang disebut GNU (yang merupakan akronim
rekursif untuk "GNU's Not Unix!"). Bagi Stallman, "gratis" mengacu pada
kebebasan penggunaan, bukan harga. Gerakan perangkat lunak bebas tidak
keberatan
48 Bab 1 Pendahuluan
memperdagangkan salinan untuk sejumlah uang tetapi menyatakan bahwa
pengguna berhak atas empat kebebasan tertentu: (1) menjalankan program
secara bebas, (2) mempelajari dan mengubah kode sumber, dan memberikan
atau menjual salinan baik (3) dengan atau (4) tanpa perubahan. Pada tahun 1985,
Stallman menerbitkan Manifesto GNU, yang menyatakan bahwa semua perangkat
lunak harus bebas. Ia juga membentuk Free Software Foundation (FSF) dengan
tujuan mendorong penggunaan dan pengembangan perangkat lunak bebas.
FSF menggunakan hak cipta pada programnya untuk menerapkan "copyleft",
suatu bentuk lisensi yang ditemukan oleh Stallman. Menyalin karya memberikan
kepada siapa pun yang memiliki salinan karya tersebut empat kebebasan esensial
yang membuat karya tersebut bebas, dengan syarat bahwa redistribusi harus
menjaga kebebasan tersebut. GNU General Public License (GPL) adalah lisensi
umum di mana perangkat lunak bebas dirilis. Pada dasarnya, GPL mengharuskan
kode sumber didistribusikan dengan binari apa pun dan semua salinan (termasuk
versi yang dimodifikasi) dirilis di bawah lisensi GPL yang sama. Lisensi Creative
Commons “Attribution Sharealike” juga merupakan lisensi copyleft; "sharealike"
adalah cara lain untuk menyatakan ide copyleft.
1.11.3 GNU/Linux
Sebagai contoh sistem operasi sumber terbuka dan gratis, pertimbangkan
GNU/Linux. Pada tahun 1991, sistem operasi GNU hampir selesai. Proyek GNU
telah mengembangkan kompiler, editor, utilitas, perpustakaan, dan permainan —
bagian apa pun yang tidak dapat ditemukan di tempat lain. Namun, kernel GNU
tidak pernah siap untuk prime time. Pada tahun 1991, seorang mahasiswa di
Finlandia, Linus Torvalds, merilis kernel mirip UNIX yang belum sempurna
menggunakan kompiler dan alat GNU dan mengundang kontribusi di seluruh
dunia. Munculnya Internet berarti bahwa siapa pun yang tertarik dapat
mengunduh kode sumber, memodifikasinya, dan mengirimkan perubahan ke
Torvalds. Rilis pembaruan seminggu sekali memungkinkan apa yang disebut
sistem operasi "Linux" ini berkembang pesat, ditingkatkan oleh beberapa ribu
pemrogram. Pada tahun 1991, Linux bukanlah perangkat lunak bebas, karena
lisensinya hanya mengizinkan redistribusi nonkomersial. Namun, pada tahun
1992, Torvalds merilis ulang Linux di bawah GPL, menjadikannya perangkat lunak
bebas (dan juga, untuk menggunakan istilah yang kemudian diciptakan, "sumber
terbuka").
Sistem operasi GNU/Linux yang dihasilkan (dengan kernel yang benar disebut
Linux tetapi sistem operasi lengkap termasuk alat GNU yang disebut GNU/Linux)
telah melahirkan ratusan distribusi unik, atau pembuatan khusus, dari sistem.
Distribusi utama termasuk Red Hat, SUSE, Fedora, Debian, Slackware, dan
Ubuntu. Distribusi bervariasi dalam fungsi, utilitas, aplikasi yang diinstal,
dukungan perangkat keras, antarmuka pengguna, dan tujuan. Misalnya, Red Hat
Enterprise Linux ditujukan untuk penggunaan komersial besar. PCLinuxOS adalah
live CD—sistem operasi yang dapat di-boot dan dijalankan dari CD-ROM tanpa
diinstal pada disk boot sistem. Varian PCLinuxOS—disebut PCLinuxOS Supergamer
DVD—adalah DVD live yang menyertakan driver grafis dan game. Seorang gamer
dapat menjalankannya pada sistem yang kompatibel hanya dengan boot dari
DVD. Ketika gamer selesai, reboot sistem akan mengatur ulang ke sistem operasi
yang diinstal.
Anda dapat menjalankan Linux pada sistem Windows (atau lainnya) menggunakan
pendekatan sederhana dan gratis berikut:
1.11 Sistem Operasi Gratis dan Sumber Terbuka 49
1. Unduh alat VMM Virtualbox gratis dari
https://www.virtualbox.org/
dan menginstalnya di sistem Anda.
2. Pilih untuk menginstal sistem operasi dari awal, berdasarkan gambar instalasi
seperti CD, atau pilih gambar sistem operasi yang dibuat sebelumnya yang dapat
diinstal dan dijalankan lebih cepat dari situs seperti
http://virtualboxes.org/images/
Gambar-gambar ini sudah diinstal sebelumnya dengan sistem operasi dan aplikasi
dan mencakup banyak rasa GNU/Linux.
3. Boot mesin virtual di dalam Virtualbox.
Alternatif untuk menggunakan Virtualbox adalah dengan menggunakan program
gratis Qemu (http://wiki.qemu.org/Download/), yang menyertakan perintah
qemu-img untuk mengonversi gambar Virtualbox ke gambar Qemu agar mudah
mengimpornya.
Dengan teks ini, kami menyediakan gambar mesin virtual GNU/Linux yang
menjalankan rilis Ubuntu. Gambar ini berisi kode sumber GNU/Linux serta alat
untuk pengembangan perangkat lunak. Kami membahas contoh yang melibatkan
gambar GNU/Linux di seluruh teks ini, serta dalam studi kasus terperinci di Bab
20.
1.11.4 BSD UNIX
BSD UNIX memiliki sejarah yang lebih panjang dan lebih rumit daripada Linux. Ini
dimulai pada tahun 1978 sebagai turunan dari AT&T's UNIX. Rilis dari University of
California at Berkeley (UCB) datang dalam bentuk sumber dan biner, tetapi bukan
open source karena diperlukan lisensi dari AT&T. Pengembangan BSD UNIX
diperlambat oleh gugatan oleh AT&T, tetapi akhirnya versi sumber terbuka yang
berfungsi penuh, 4.4BSD-lite, dirilis pada tahun 1994.
Seperti halnya Linux, ada banyak distro BSD UNIX, termasuk FreeBSD, NetBSD,
OpenBSD, dan DragonflyBSD. Untuk menjelajahi kode sumber FreeBSD, cukup
unduh image mesin virtual dari versi yang diinginkan dan boot dalam Virtualbox,
seperti dijelaskan di atas untuk Linux. Kode sumber disertakan dengan distribusi
dan disimpan di /usr/src/. Kode sumber kernel ada di /usr/src/sys. Misalnya,
untuk memeriksa kode implementasi memori virtual di kernel FreeBSD, lihat file
di /usr/src/sys/vm. Atau, Anda dapat melihat kode sumber secara online di
https://svnweb.freebsd.org.
Seperti banyak proyek sumber terbuka, kode sumber ini terkandung dan
dikendalikan oleh sistem kontrol versi—dalam hal ini, “subversion”
(https://subversion.apache.org/source-code). Sistem kontrol versi memungkinkan
pengguna untuk "menarik" seluruh pohon kode sumber ke komputernya dan
"mendorong" perubahan apa pun kembali ke repositori untuk kemudian ditarik
oleh orang lain. Sistem ini juga menyediakan fitur lain, termasuk seluruh riwayat
setiap file dan fitur resolusi konflik jika file yang sama diubah secara bersamaan.
Lain
50 Bab 1 Pendahuluan
sistem kontrol versi adalah git, yang digunakan untuk GNU/Linux, serta program
lain (http://www.git-scm.com).
Darwin, komponen kernel inti macOS, didasarkan pada BSD UNIX dan juga
bersumber terbuka. Kode sumber tersebut tersedia dari
http://www.opensource.apple.com/. Setiap rilis macOS memiliki komponen
sumber terbuka yang diposting di situs tersebut. Nama paket yang berisi kernel
dimulai dengan "xnu." Apple juga menyediakan alat pengembang, dokumentasi,
dan dukungan ekstensif di http://developer.apple.com.
STUDI SISTEM OPERASI
Tidak pernah ada waktu yang lebih menarik untuk mempelajari sistem operasi,
dan tidak pernah semudah ini. Pergerakan open-source telah mengambil alih
sistem operasi, menyebabkan banyak dari mereka tersedia dalam format sumber
dan biner (dapat dieksekusi). Daftar sistem operasi yang tersedia dalam kedua
format termasuk Linux, BSD UNIX, Solaris, dan bagian dari macOS. Ketersediaan
kode sumber memungkinkan kami untuk mempelajari sistem operasi dari dalam
ke luar. Pertanyaan yang dulu bisa kita jawab hanya dengan melihat dokumentasi
atau perilaku sistem operasi sekarang bisa kita jawab dengan memeriksa kode itu
sendiri.
Sistem operasi yang tidak lagi layak secara komersial telah open-source juga,
memungkinkan kita untuk mempelajari bagaimana sistem beroperasi dalam
waktu lebih sedikit CPU, memori, dan sumber daya penyimpanan. Daftar proyek
sistem operasi sumber terbuka yang ekstensif namun tidak lengkap tersedia dari
http://dmoz.org/Computers/Software/Operating Systems/Open Source/ .
Selain itu, munculnya virtualisasi sebagai fungsi komputer utama (dan seringkali
gratis) memungkinkan untuk menjalankan banyak sistem operasi di atas satu
sistem inti. Misalnya, VMware (http://www.vmware.com) menyediakan “player”
gratis untuk Windows di mana ratusan “peralatan virtual” gratis dapat dijalankan.
Virtualbox (http://www.virtualbox.com) menyediakan manajer mesin virtual
open-source gratis di banyak sistem operasi. Dengan menggunakan alat tersebut,
siswa dapat mencoba ratusan sistem operasi tanpa perangkat keras khusus.
Dalam beberapa kasus, simulator perangkat keras tertentu juga tersedia,
memungkinkan sistem operasi berjalan pada perangkat keras "asli", semua dalam
batasan komputer modern dan sistem operasi modern. Misalnya, simulator
DECSYSTEM-20 yang berjalan di macOS dapat mem-boot TOPS-20, memuat kaset
sumber, dan memodifikasi serta mengompilasi file baru. kernel TOPS-20. Siswa
yang tertarik dapat mencari di Internet untuk menemukan makalah asli yang
menjelaskan sistem operasi, serta manual asli.
Munculnya sistem operasi open-source juga mempermudah perpindahan dari
pelajar ke pengembang sistem operasi. Dengan sedikit pengetahuan, sedikit
usaha, dan koneksi Internet, seorang siswa bahkan dapat membuat distribusi
sistem operasi baru. Beberapa tahun yang lalu, sulit atau tidak mungkin untuk
mendapatkan akses ke kode sumber. Sekarang, akses tersebut hanya dibatasi
oleh seberapa besar minat, waktu, dan ruang disk yang dimiliki siswa.
1.12 Ringkasan 51
1.11.5 Solaris
Solaris adalah sistem operasi komersial berbasis UNIX dari Sun Microsystems.
Awalnya, sistem operasi SunOS Sun didasarkan pada BSD UNIX. Sun pindah ke
AT&T System V UNIX sebagai basisnya pada tahun 1991. Pada tahun 2005, Sun
membuka sebagian besar kode Solaris sebagai proyek OpenSolaris. Pembelian
Sun oleh Oracle pada tahun 2009, bagaimanapun, membuat keadaan proyek ini
tidak jelas.
Beberapa grup yang tertarik menggunakan OpenSolaris telah memperluas
fiturnya, dan perangkat kerja mereka adalah Project Illumos, yang telah
berkembang dari basis Open Solaris untuk menyertakan lebih banyak fitur dan
menjadi dasar untuk beberapa produk. Illumos tersedia di http://wiki.illumos.org.
1.11.6 Sistem Sumber Terbuka sebagai Alat Pembelajaran
Gerakan perangkat lunak bebas mendorong banyak pemrogram untuk membuat
ribuan proyek sumber terbuka, termasuk sistem operasi. Situs seperti
http://freshmeat.net/ dan http://distrowatch.com/ menyediakan portal ke
banyak proyek ini. Seperti yang kami nyatakan sebelumnya, proyek sumber
terbuka memungkinkan siswa untuk menggunakan kode sumber sebagai alat
pembelajaran. Mereka dapat memodifikasi program dan mengujinya, membantu
menemukan dan memperbaiki bug, dan sebaliknya menjelajahi sistem operasi
yang matang dan berfitur lengkap, kompiler, alat, antarmuka pengguna, dan jenis
program lainnya. Ketersediaan kode sumber untuk proyek-proyek bersejarah,
seperti Multics, dapat membantu siswa untuk memahami proyek-proyek tersebut
dan untuk membangun pengetahuan yang akan membantu dalam pelaksanaan
proyek-proyek baru.
Keuntungan lain bekerja dengan sistem operasi sumber terbuka adalah
keragamannya. GNU/Linux dan BSD UNIX keduanya adalah sistem operasi open-
source, misalnya, tetapi masing-masing memiliki tujuan, utilitas, lisensi, dan
tujuannya sendiri. Kadang-kadang, lisensi tidak saling eksklusif dan penyerbukan
silang terjadi, memungkinkan perbaikan cepat dalam proyek sistem operasi.
Sebagai contoh, beberapa komponen utama OpenSolaris telah di-porting ke BSD
UNIX. Keunggulan perangkat lunak bebas dan sumber terbuka kemungkinan akan
meningkatkan jumlah dan kualitas proyek sumber terbuka, yang mengarah pada
peningkatan jumlah individu dan perusahaan yang menggunakan proyek ini.
1.12 Ringkasan
• Sistem operasi adalah perangkat lunak yang mengelola perangkat keras
komputer, serta menyediakan lingkungan untuk menjalankan program aplikasi.
• Interupsi adalah cara utama di mana perangkat keras berinteraksi dengan
sistem operasi. Perangkat keras memicu interupsi dengan mengirimkan sinyal ke
CPU untuk memperingatkan CPU bahwa beberapa peristiwa memerlukan
perhatian. Interupsi dikelola oleh penangan interupsi.
• Agar komputer dapat menjalankan tugasnya dalam mengeksekusi program,
program tersebut harus berada di memori utama, yang merupakan satu-satunya
area penyimpanan besar yang dapat diakses prosesor secara langsung.
• Memori utama biasanya merupakan perangkat penyimpanan yang mudah
menguap yang kehilangan isinya saat daya dimatikan atau hilang.
52 Bab 1 Pendahuluan
• Penyimpanan nonvolatil adalah perpanjangan dari memori utama dan mampu
menyimpan data dalam jumlah besar secara permanen.
• Perangkat penyimpanan non-volatil yang paling umum adalah hard disk, yang
dapat menyediakan penyimpanan program dan data.
• Berbagai macam sistem penyimpanan dalam sistem komputer dapat diatur
dalam hierarki menurut kecepatan dan biaya. Level yang lebih tinggi mahal, tetapi
mereka cepat. Saat kita bergerak ke bawah hierarki, biaya per bit umumnya
menurun, sedangkan waktu akses umumnya meningkat.
• Arsitektur komputer modern adalah sistem multiprosesor di mana setiap CPU
berisi beberapa inti komputasi.
• Untuk memanfaatkan CPU dengan sebaik-baiknya, sistem operasi modern
menggunakan multiprogramming, yang memungkinkan beberapa pekerjaan
berada di memori secara bersamaan, sehingga memastikan bahwa CPU selalu
memiliki pekerjaan untuk dieksekusi.
• Multitasking adalah perpanjangan dari multiprogramming dimana algoritma
penjadwalan CPU dengan cepat beralih antar proses, memberikan pengguna
waktu respon yang cepat.
• Untuk mencegah program pengguna mengganggu pengoperasian sistem yang
benar, perangkat keras sistem memiliki dua mode: mode pengguna dan mode
kernel.
• Berbagai instruksi diistimewakan dan hanya dapat dieksekusi dalam mode
kernel. Contohnya termasuk instruksi untuk beralih ke mode kernel, kontrol I/O,
manajemen timer, dan manajemen interupsi.
• Proses adalah unit dasar kerja dalam sistem operasi. Manajemen proses
termasuk membuat dan menghapus proses dan menyediakan mekanisme untuk
proses untuk berkomunikasi dan menyinkronkan satu sama lain.
• Sistem operasi mengelola memori dengan melacak bagian mana dari memori
yang digunakan dan oleh siapa. Ia juga bertanggung jawab untuk mengalokasikan
dan membebaskan ruang memori secara dinamis.
• Ruang penyimpanan dikelola oleh sistem operasi; ini termasuk menyediakan
sistem file untuk mewakili file dan direktori dan mengelola ruang pada perangkat
penyimpanan massal.
• Sistem operasi menyediakan mekanisme untuk melindungi dan mengamankan
sistem operasi dan pengguna. Tindakan perlindungan mengontrol akses proses
atau pengguna ke sumber daya yang disediakan oleh sistem komputer.
• Virtualisasi melibatkan abstraksi perangkat keras komputer ke dalam beberapa
lingkungan eksekusi yang berbeda.
• Struktur data yang digunakan dalam sistem operasi termasuk daftar, tumpukan,
antrian, pohon, dan peta.
• Komputasi terjadi di berbagai lingkungan, termasuk komputasi tradisional,
komputasi mobile, sistem client-server, sistem peer-to-peer, komputasi awan,
dan sistem tertanam real-time.

Anda mungkin juga menyukai