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).
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
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
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
inti
perangkat keras (a)
antarmuka pemrograman
1.8 Sistem Terdistribusi 35
proses
proses
proses