Anda di halaman 1dari 13

Sistem operasi menyediakan lingkungan di mana program berada dieksekusi.

Secara internal, sistem


operasi sangat bervariasi dalam susunannya, karena mereka diatur dalam berbagai jalur. Desain sistem
operasi baru adalah tugas utama. Adalah penting bahwa tujuan sistem didefinisikan dengan baik
sebelum desain dimulai. Sasaran-sasaran ini membentuk dasar bagi pilihan di antara beragam algoritma
dan strategi.

Kita dapat melihat sistem operasi dari beberapa tempat yang menguntungkan. Satu tampilan berfokus
pada layanan yang disediakan sistem; lain, pada antarmuka itu itu tersedia untuk pengguna dan
pemrogram; yang ketiga, pada komponen dan interkoneksi mereka. Dalam bab ini, kami mengeksplorasi
ketiga aspek operasi sistem, menunjukkan sudut pandang pengguna, pemrogram, dan sistem operasi
desainer. Kami mempertimbangkan layanan apa yang disediakan sistem operasi, bagaimana layanan
mereka disediakan, bagaimana mereka dipertaruhkan, dan apa berbagai metodologi adalah untuk
merancang sistem seperti itu. Terakhir, kami jelaskan bagaimana sistem operasinya dibuat dan
bagaimana komputer memulai sistem operasinya.

2.1 Layanan Sistem Operasi

Sistem operasi menyediakan lingkungan untuk pelaksanaan program. Itu membuat layanan tertentu
tersedia untuk program dan bagi pengguna program tersebut. Layanan spesifik yang disediakan, tentu
saja, berbeda dari satu operasi atau dirinya sendiri ke sistem, biasanya dengan kata sandi, untuk
mendapatkan akses ke sumber daya sistem. Ini meluas ke membela perangkat I / O eksternal, termasuk
adaptor jaringan, dari upaya akses yang tidak valid dan merekam semua itu koneksi untuk deteksi
pembobolan. Jika suatu sistem harus dilindungi dan aman, tindakan pencegahan harus dilakukan di
seluruh itu. Rantai hanya sebagai sekuat tautan terlemahnya.

2.2 Antarmuka Pengguna dan Sistem Operasi

Kami sebutkan sebelumnya bahwa ada beberapa cara bagi pengguna untuk berinteraksi sistem operasi.
Di sini, kami membahas tiga pendekatan mendasar. Satu menyediakan antarmuka baris perintah, atau
juru bahasa perintah, yang memungkinkan pengguna untuk langsung memasukkan perintah yang akan
dilakukan oleh sistem operasi. Yang lain dua memungkinkan pengguna untuk berinteraksi dengan sistem
operasi melalui pengguna grafis antarmuka, atau GUI.

2.2.1 Penerjemah Perintah

Sebagian besar sistem operasi, termasuk Linux, UNIX, dan Windows, memperlakukan juru bahasa
mandat sebagai program khusus yang sedang berjalan ketika suatu proses dimulai atau ketika pengguna
pertama kali masuk (pada sistem interaktif). Pada sistem dengan beberapa penafsir perintah untuk
dipilih, penafsir dikenal sebagai kerang. Misalnya, pada sistem UNIX dan Linux, pengguna dapat memilih
di antara beberapa shell yang berbeda, termasuk shell C, shell Bourne-Again, shell Korn, dan lainnya.
Kerang pihak ketiga dan kerang yang ditulis pengguna gratis juga tersedia. Palingshell menyediakan
fungsionalitas yang serupa, dan pilihan pengguna yang mana shell untuk digunakan umumnya
didasarkan pada preferensi pribadi. Gambar 2.2 menunjukkan Bourne-Again (atau bash) shell command
interpreter sedang digunakan di macOS.

Fungsi utama dari penerjemah perintah adalah untuk mendapatkan dan menjalankan perintah
berikutnya perintah yang ditentukan pengguna. Banyak perintah yang diberikan pada level ini manipu
file-file yang terlambat: buat, hapus, daftar, cetak, salin, jalankan, dan sebagainya. Berbagai kerang
tersedia pada sistem UNIX beroperasi dengan cara ini. Perintah-perintah ini dapat diimplementasikan
dengan dua cara umum.

Dalam satu pendekatan, interpreter perintah itu sendiri berisi kode untuk exe cute perintah. Misalnya,
perintah untuk menghapus file dapat menyebabkan memerintahkan penerjemah untuk melompat ke
bagian kode yang mengatur parameter dan melakukan panggilan sistem yang sesuai. Dalam hal ini,
jumlah perintah yang dapat diberikan menentukan ukuran interpreter perintah, karena masing-masing
perintah membutuhkan kode implementasinya sendiri.

Pendekatan alternatif — digunakan oleh UNIX, di antara sistem operasi lain—Menambah sebagian besar
perintah melalui program sistem. Dalam hal ini, command interpreter tidak memahami perintah dengan
cara apa pun; itu hanya menggunakan perintah untuk mengidentifikasi file yang akan dimuat ke dalam
memori dan dieksekusi. Dengan demikian, perintah UNIX untuk menghapus file.

rm file.txt

akan mencari file bernama rm, memuat file ke dalam memori, dan menjalankannya dengan parameter
file.txt. Logika yang terkait dengan perintah rm adalah

GAMBAR

didefinisikan sepenuhnya oleh kode dalam file rm. Dengan cara ini, programmer bisa tambahkan
perintah baru ke sistem dengan mudah dengan membuat file baru dengan prope logika program.
Program interpreter-perintah, yang bisa kecil, tidak tidak harus diubah untuk perintah baru yang akan
ditambahkan.

2.2.2 Antarmuka Pengguna Grafis

Strategi kedua untuk berinteraksi dengan sistem operasi adalah melalui antarmuka pengguna grafis yang
ramah pengguna, atau GUI. Di sini, daripada memasukkan perintah langsung melalui antarmuka baris
perintah, pengguna menggunakan sistem menu dan jendela berbasis mouse yang ditandai dengan
metafora desktop. Pengguna memindahkan mouse untuk menempatkan penunjuknya pada gambar,
atau ikon, di layar (desktop) yang mewakili program, file, direktori, dan fungsi sistem. Tergantung di
lokasi penunjuk tetikus, mengklik tombol pada tetikus dapat memanggil a program, pilih file atau
direktori — dikenal sebagai folder — atau tarik menu yang berisi perintah.

Antarmuka pengguna grafis pertama kali muncul karena sebagian untuk mengambil penelitian
ditempatkan pada awal 1970-an di fasilitas penelitian Xerox PARC. GUI pertama muncul pada komputer
Xerox Alto pada tahun 1973. Namun, antarmuka grafis menjadi semakin meluas dengan munculnya
komputer Apple Macintosh pada 1980-an.
Antarmuka pengguna untuk sistem operasi Macintosh telah mengalami berbagai variasi perubahan
selama bertahun-tahun, yang paling signifikan adalah adopsi Aqua antarmuka yang muncul dengan
macOS. Versi Windows pertama dari Microsoft—Versi 1.0 — didasarkan pada penambahan antarmuka
GUI ke MS-DOS sistem operasi. Versi Windows yang lebih baru telah membuat perubahan signifikan
pada Windows tampilan GUI beserta beberapa perangkat tambahan dalam fungsinya Secara tradisional,
sistem UNIX telah didominasi oleh antar-muka baris perintah. Berbagai antarmuka GUI tersedia, namun,
dengan pengembangan signifikan dalam desain GUI dari berbagai proyek sumber terbuka, seperti K
Desktop Lingkungan (atau KDE) dan desktop GNOME oleh proyek GNU. Keduanya Desktop KDE dan
GNOME berjalan di Linux dan berbagai sistem UNIX tersedia di bawah lisensi sumber terbuka, yang
berarti kode sumbernya sudah siap tersedia untuk dibaca dan untuk modifikasi di bawah persyaratan
lisensi tertentu.

2.2.3 Antarmuka Layar Sentuh

Karena antarmuka baris perintah atau sistem mouse-dan-keyboard adalah tidak praktis untuk sebagian
besar sistem seluler, ponsel cerdas dan tablet genggam tablet biasanya menggunakan antarmuka layar
sentuh. Di sini, pengguna berinteraksi dengan membuat gerakan pada layar sentuh— misalnya,
menekan dan menggesekkan jari melintasi layar. Meskipun smartphone sebelumnya termasuk keyboard
fisik, sebagian besar ponsel cerdas dan tablet sekarang mensimulasikan keyboard di layar sentuh

Gambar 2.3

mengilustrasikan layar sentuh Apple iPhone. Baik iPad dan iPhone menggunakan antarmuka layar
sentuh Springboard.

2.2.4 Pilihan Antarmuka

Pilihan apakah akan menggunakan command-line atau antarmuka GUI sebagian besar salah satu
preferensi pribadi. Administrator sistem yang mengelola computer dan kekuatan pengguna yang
memiliki pengetahuan mendalam tentang suatu sistem sering menggunakan program pengguna. Dari
sudut pandang sistem operasi, kami tidak membedakan antara program pengguna dan program sistem.

2.3 Panggilan Sistem

Panggilan sistem menyediakan antarmuka ke layanan yang disediakan oleh sistem pengoperasian.
Panggilan ini umumnya tersedia sebagai fungsi yang ditulis dalam C dan C ++, meskipun tugas tingkat
rendah tertentu (misalnya, tugas di mana perangkat keras harus diakses secara langsung) mungkin harus
ditulis menggunakan bahasa assembly instruksi.

2.3.1 Contoh

Sebelum kita membahas bagaimana sistem operasi membuat panggilan sistem tersedia, mari pertama
gunakan contoh untuk menggambarkan bagaimana panggilan sistem digunakan: menulis sederhana
program untuk membaca data dari satu file dan menyalinnya ke file lain. Pertama input yang dibutuhkan
oleh program adalah nama-nama dari dua file: file input dan file output. Nama-nama ini dapat
ditentukan dalam banyak cara, tergantung pada desain sistem operasi. Salah satu pendekatan adalah
dengan menyebutkan nama keduanya file sebagai bagian dari perintah— misalnya, perintah UNIX cp:

cp in.txt out.txt

Perintah ini menyalin file input in.txt ke file output out.txt. Pendekatan kedua adalah bagi program
untuk menanyakan nama-nama pengguna. Secara interaktif sistem, pendekatan ini akan membutuhkan
urutan panggilan sistem, terlebih dahulu untuk menulis pesan yang muncul di layar dan kemudian
membaca dari keyboard karakter yang menentukan dua file. Pada sistem berbasis ikon dan mouse,
menu nama file biasanya ditampilkan di jendela. Pengguna kemudian dapat menggunakan mouse untuk
memilih nama sumber, dan sebuah jendela dapat dibuka untuk nama tujuan harus ditentukan. Urutan
ini membutuhkan banyak panggilan sistem I / O.

Setelah dua nama file diperoleh, program harus membuka file input file dan buat dan buka file output.
Setiap operasi ini membutuhkan panggilan sistem lain. Kemungkinan kondisi kesalahan untuk setiap
panggilan sistem harus ditangani. Misalnya, ketika program mencoba membuka file input, mungkin saja
menemukan bahwa tidak ada file dengan nama itu atau file itu dilindungi terhadap akses.

Dalam kasus ini, program harus menampilkan pesan kesalahan (urutan lain panggilan sistem) dan
kemudian berakhir secara tidak normal (panggilan sistem lain). Jika file input ada, maka kita harus
membuat file output baru. Kita mungkin menemukan itu di sana sudah merupakan file keluaran dengan
nama yang sama. Situasi ini dapat menyebabkan program untuk dibatalkan (panggilan sistem), atau
kami dapat menghapus file yang ada (yang lain panggilan sistem) dan buat yang baru (panggilan sistem
lain). Opsi lain, di sistem interaktif, adalah untuk meminta pengguna (melalui urutan panggilan sistem ke
output pesan yang diminta dan untuk membaca respons dari terminal) apakah untuk mengganti file
yang ada atau membatalkan program.

Ketika kedua file diatur, kita memasuki satu loop yang membaca dari input file (panggilan sistem) dan
menulis ke file output (panggilan sistem lain). Setiap baca dan tulis harus mengembalikan informasi
status mengenai berbagai kemungkinan kesalahan kondisi. Pada masukan, program mungkin
menemukan bahwa akhir file telah

GAMBAR

mencapai atau bahwa ada kegagalan perangkat keras di baca (seperti kesalahan paritas). Operasi tulis
mungkin mengalami berbagai kesalahan, tergantung pada output perangkat (misalnya, tidak ada lagi
ruang disk yang tersedia).

Akhirnya, setelah seluruh file disalin, program dapat menutup kedua file (dua panggilan sistem), tulis
pesan ke konsol atau jendela (sistem lainnya panggilan), dan akhirnya berakhir secara normal (panggilan
sistem terakhir). Panggilan sistem ini urutan ditunjukkan pada Gambar 2.5

2.3.2 Antarmuka Pemrograman Aplikasi


Seperti yang Anda lihat, bahkan program sederhana dapat menggunakan sistem operasi dengan berat.
Seringkali, sistem mengeksekusi ribuan panggilan sistem per detik.

Namun, sebagian besar programmer tidak pernah melihat tingkat detail ini. Biasanya, pengembang
aplikasi merancang program sesuai dengan pemrograman aplikasi antarmuka (API). API menetapkan
seperangkat fungsi yang tersedia untuk pemrogram aplikasi, termasuk parameter yang diteruskan ke
setiap fungsi dan nilai pengembalian yang bisa diharapkan oleh programmer. Tiga yang paling umum API
yang tersedia untuk pemrogram aplikasi adalah API Windows untuk Windows sistem, API POSIX untuk
sistem berbasis POSIX (yang mencakup hampir semua versi UNIX, Linux, dan macOS), dan Java API untuk
program yang berjalan di mesin virtual Java. Seorang programmer mengakses API melalui pustaka kode
disediakan oleh sistem operasi. Dalam hal UNIX dan Linux untuk program ditulis dalam bahasa C,
perpustakaan disebut libc. Perhatikan bahwa — kecuali ditentukan - nama panggilan sistem yang
digunakan di seluruh teks ini adalah contoh umum. Setiap sistem operasi memiliki nama sendiri untuk
setiap panggilan sistem.

Di belakang layar, fungsi yang membentuk API biasanya memanggil panggilan sistem aktual atas nama
programmer aplikasi. Misalnya, Fungsi Windows CreateProcess () (yang, tidak mengejutkan, digunakan
untuk membuat

GAMBAR 2.7

register digunakan. Jika ada lebih dari lima parameter, metode blok adalah bekas. Parameter juga dapat
ditempatkan, atau didorong, ke tumpukan oleh program dan muncul dari tumpukan oleh sistem operasi.
Beberapa sistem operasi lebih suka metode blok atau tumpukan karena pendekatan tersebut tidak
membatasi jumlah atau panjang parameter yang diteruskan.

2.3.3 Jenis Panggilan Sistem

Panggilan sistem dapat dikelompokkan secara kasar ke dalam enam kategori utama: kontrol proses,
manajemen fil, manajemen perangkat, pemeliharaan informasi, komunikasi, dan perlindungan. Di
bawah ini, kami membahas secara singkat jenis-jenis panggilan sistem itu dapat disediakan oleh sistem
operasi. Sebagian besar dukungan panggilan sistem ini, atau didukung oleh, konsep dan fungsi yang
dibahas dalam bab selanjutnya. Gambar 2.8 merangkum jenis-jenis panggilan sistem yang biasanya
disediakan oleh sistem operasi. Seperti disebutkan, dalam teks ini, kami biasanya merujuk ke system
panggilan dengan nama generik. Namun, di seluruh teks, kami memberikan contoh dari rekan yang
sebenarnya ke sistem panggilan untuk UNIX, Linux, dan Window sistem.

2.3.3.1 Kontrol Proses

Program yang sedang berjalan harus dapat menghentikan pelaksanaannya secara normal (end ()) atau
tidak normal (batalkan ()). Jika panggilan sistem dilakukan untuk mengakhiri sedang menjalankan
program secara tidak normal, atau jika program mengalami masalah dan menyebabkan jebakan
kesalahan, dump memori terkadang diambil dan a pesan kesalahan dihasilkan. Dump ditulis ke file log
khusus pada disk dan dapat diperiksa oleh debugger — program sistem yang dirancang untuk
membantu programmer dalam menemukan dan memperbaiki kesalahan, atau bug - untuk menentukan
penyebab masalah. Dalam keadaan normal atau abnormal, sistem operasi harus mentransfer kendali ke
interpreter perintah pemanggilan.

Interpreter perintah kemudian membaca perintah selanjutnya. Secara interaktif sistem, interpreter
perintah hanya melanjutkan dengan perintah berikutnya; diasumsikan bahwa pengguna akan
mengeluarkan perintah yang sesuai untuk merespons sumber daya seperti file dan disk. Izinkan
pengguna () dan sangkal sistem pengguna () panggilan menentukan apakah pengguna tertentu dapat —
atau tidak bisa — diizinkan mengakses ke sumber daya tertentu. Kami membahas perlindungan pada
Bab 17 dan yang jauh lebih besar masalah keamanan — yang melibatkan penggunaan perlindungan
terhadap ancaman eksternal — dalam Bab 16.

2.4 Layanan Sistem

Aspek lain dari sistem modern adalah pengumpulan layanan sistemnya. Penarikan Gambar 1.1, yang
menggambarkan hirarki komputer logis. Di level terendah adalah perangkat keras. Berikutnya adalah
sistem operasi, kemudian layanan sistem, dan akhirnya program aplikasi. Layanan sistem, juga dikenal
sebagai utilitas sistem, memberikan lingkungan yang nyaman untuk pengembangan dan pelaksanaan
program.

Beberapa dari mereka hanyalah antarmuka pengguna untuk panggilan sistem. Yang lain dianggap cakap
lebih kompleks. Mereka dapat dibagi ke dalam kategori ini:

 Manajemen file. Program-program ini membuat, menghapus, menyalin, mengganti nama,


mencetak, daftar, dan umumnya mengakses dan memanipulasi file dan direktori.

 Informasi status. Beberapa program hanya menanyakan tanggalnya kepada sistem, waktu,
jumlah memori yang tersedia atau ruang disk, jumlah pengguna, atau informasi status serupa.
Yang lain lebih kompleks, memberikan perincian informasi kinerja, pencatatan, dan debugging.
Biasanya, program ini memformat dan mencetak output ke terminal atau perangkat output
lainnya atau file atau menampilkannya di jendela GUI. Beberapa sistem juga mendukung a
registry, yang digunakan untuk menyimpan dan mengambil informasi konfigurasi.

 Modifikasi file. Beberapa editor teks mungkin tersedia untuk membuat dan mengubah konten
file yang disimpan pada disk atau perangkat penyimpanan lainnya. Disana mungkin juga menjadi
perintah khusus untuk mencari konten file atau melakukan transformasi teks.

 Dukungan bahasa pemrograman. Compiler, assembler, debuggers, dan interpreter untuk bahasa
pemrograman umum (seperti C, C ++, Java, dan Python) sering dilengkapi dengan sistem operasi
atau tersedia sebagai unduhan terpisah.

 Pemuatan dan eksekusi program. Setelah sebuah program dirakit atau di-kompilasi, ia harus
dimuat ke dalam memori untuk dieksekusi. Sistem mungkin menyediakan pemuat absolut,
pemuat relokasi, editor tautan, dan overlay loader. Sistem debug untuk bahasa atau mesin
tingkat tinggi bahasa juga dibutuhkan.

 Komunikasi. Program-program ini menyediakan mekanisme untuk membuat koneksi virtual


antara proses, pengguna, dan sistem komputer. Mereka memungkinkan pengguna untuk
mengirim pesan ke layar satu sama lain, untuk menjelajahi web halaman, untuk mengirim pesan
email, untuk login jarak jauh, atau untuk mentransfer file dari satu mesin ke mesin lainnya.

 Layanan latar belakang. Semua sistem tujuan umum memiliki metode untuk meluncurkan
proses program sistem tertentu pada saat boot. Beberapa di antaranya proses berakhir setelah
menyelesaikan tugas mereka, sementara yang lain melanjutkan

Jalankan sampai sistem dihentikan. Menjalankan proses sistem-program secara terus-menerus dikenal
sebagai layanan, subsistem, atau daemon. Salah satu contohnya adalah daemon jaringan yang dibahas
dalam Bagian 2.3.3.5. Dalam contoh itu, sistem membutuhkan layanan untuk mendengarkan koneksi
jaringan agar dapat terhubung permintaan tersebut ke proses yang benar. Contoh lain termasuk proses
penjadwal yang memulai proses sesuai dengan jadwal yang ditentukan, system layanan pemantauan
kesalahan, dan server cetak. Sistem tipikal memiliki lusinan daemon. Selain itu, sistem operasi yang
menjalankan aktivitas penting di konteks pengguna daripada dalam konteks kernel dapat menggunakan
daemon untuk menjalankan ini kegiatan.

Seiring dengan program sistem, sebagian besar sistem operasi dipasok dengan program yang berguna
dalam memecahkan masalah umum atau melakukan hal yang sama operasi. Program aplikasi semacam
itu termasuk browser web, pengolah kata, dan pemformat teks, spreadsheet, sistem basis data,
kompiler, merencanakan dan paket analisis statistik, dan permainan.

Tampilan sistem operasi yang dilihat oleh sebagian besar pengguna ditentukan oleh program aplikasi
dan sistem, bukan oleh panggilan sistem yang sebenarnya. Pertimbangkan PC pengguna. Ketika
komputer pengguna menjalankan operasi macOS sistem, pengguna mungkin melihat GUI, yang
menampilkan antarmuka mouse-dan-windows.

Atau, atau bahkan di salah satu jendela, pengguna mungkin memiliki shell UNIX baris perintah.
Keduanya menggunakan set panggilan sistem yang sama, tetapi panggilan sistem terlihat berbeda dan
bertindak dengan cara yang berbeda. Lebih lanjut membingungkan pandangan pengguna,
pertimbangkan pengguna dual-boot dari macOS ke Windows. Sekarang pengguna yang sama di Internet
perangkat keras yang sama memiliki dua antarmuka yang sama sekali berbeda dan dua set aplikasi yang
menggunakan sumber daya fisik yang sama. Pada perangkat keras yang sama, maka, pengguna dapat
terpapar ke beberapa antarmuka pengguna secara berurutan atau bersamaan.

2.5 Linker dan Loader

Biasanya, sebuah program berada di disk sebagai file biner yang dapat dieksekusi — misalnya, a.out atau
prog.exe. Untuk dijalankan pada CPU, program harus dimasukkan ke dalam memori dan ditempatkan
dalam konteks suatu proses. Di bagian ini, kami menjelaskan langkah-langkahnya dalam prosedur ini,
dari menyusun program hingga menempatkannya di memori, di mana ia menjadi memenuhi syarat
untuk dijalankan pada inti CPU yang tersedia. Langkah-langkahnya disorot di

Gambar 2.11.

File sumber dikompilasi ke dalam file objek yang dirancang untuk dimuat ke dalam lokasi memori fisik,
format yang dikenal sebagai objek yang dapat dipindahkan fil. Selanjutnya, linker menggabungkan file
objek yang dapat dipindahkan ini menjadi satu biner file yang dapat dieksekusi. Selama fase penautan,
file objek lain atau pustaka mungkin disertakan juga, seperti standar C atau pustaka matematika
(ditentukan dengan bendera-lm).

Loader digunakan untuk memuat file biner yang dapat dieksekusi ke dalam memori, di mana ia berada
memenuhi syarat untuk berjalan pada inti CPU. Aktivitas yang dikaitkan dengan menautkan dan memuat
adalah relokasi, yang memberikan alamat akhir ke bagian-bagian program dan menyesuaikan kode dan
data dalam program untuk mencocokkan alamat-alamat itu sehingga, misalnya, kode dapat memanggil
fungsi pustaka dan mengakses variabelnya saat dijalankan. Dalam Gambar

2.11, kita melihat bahwa untuk menjalankan loader, yang diperlukan hanyalah memasukkan nama file
yang dapat dieksekusi pada baris perintah. Ketika nama program dimasukkan pada menu

GAMBAR

file yang dapat dieksekusi. Salah satu informasi dalam file ELF untuk file yang dapat dieksekusi adalah
titik masuk program, yang berisi alamat instruksi pertama dieksekusi ketika program berjalan. Sistem
Windows menggunakan Portable Format executable (PE), dan macOS menggunakan format Mach-O.

2.6 Mengapa Aplikasi Khusus Sistem Operasi

Pada dasarnya, aplikasi yang dikompilasi pada satu sistem operasi tidak dapat dipotong pada sistem
operasi lain. Jika ya, dunia akan menjadi lebih baik tempat, dan pilihan kita tentang sistem operasi apa
yang akan digunakan tergantung pada utilitas dan fitur daripada aplikasi mana yang tersedia.

Berdasarkan diskusi kita sebelumnya, kita sekarang dapat melihat bagian dari masalahnya — masing-
masing sistem operasi menyediakan serangkaian panggilan sistem yang unik. Panggilan sistem adalah
bagian dari set layanan yang disediakan oleh sistem operasi untuk digunakan oleh aplikasi. Bahkan jika
panggilan sistem entah bagaimana seragam, hambatan lain akan menyulitkan bagi kita untuk
menjalankan program aplikasi pada sistem operasi yang berbeda. Tapi jika Anda telah menggunakan
banyak sistem operasi, Anda mungkin telah menggunakan beberapa aplikasi yang sama pada mereka.
Bagaimana mungkin? Aplikasi dapat dibuat tersedia untuk dijalankan pada banyak sistem operasi dalam
satu dari tiga cara:

1. Aplikasi dapat ditulis dalam bahasa yang ditafsirkan (seperti Python

atau Ruby) yang memiliki juru bahasa yang tersedia untuk beberapa sistem operasi. Penerjemah
membaca setiap baris dari program sumber, mengeksekusi setara instruksi pada set instruksi asli, dan
panggilan sistem operasi asli. Kinerja menderita relatif untuk itu untuk aplikasi asli, dan interpreter
hanya menyediakan sebagian dari setiap fitur sistem operasi, mungkin membatasi rangkaian fitur
aplikasi terkait.

2. Aplikasi dapat ditulis dalam bahasa yang mencakup virtual


mesin yang berisi aplikasi yang sedang berjalan. Mesin virtual adalah bagian RTE lengkap bahasa Salah
satu contoh dari metode ini adalah Java. Java memiliki RTE yang menyertakan pemuat, byte-code
verifier, dan komponen lain itu memuat aplikasi Java ke dalam mesin virtual Java. RTE ini telah
tumpukan run-time, format biner perpustakaan sistem, dan ukuran data jenis, hanya untuk beberapa
nama. Biasanya, ABI ditentukan untuk arsitektur yang diberikan (misalnya, ada ABI untuk prosesor
ARMv8). Jadi, ABI adalah setara dengan tingkat arsitektur API. Jika file executable biner telah dikompilasi
dan dihubungkan sesuai dengan ABI tertentu, itu harus dapat berjalan sistem berbeda yang mendukung
ABI itu. Namun, karena ABI tertentu didefinisikan untuk sistem operasi tertentu yang berjalan pada
arsitektur yang diberikan, ABI lakukan sedikit untuk memberikan kompatibilitas lintas platform.

Singkatnya, semua perbedaan ini berarti bahwa kecuali seorang juru bahasa, RTE, atau file executable
biner ditulis untuk dan dikompilasi pada sistem operasi tertentu pada tipe CPU tertentu (seperti Intel
x86 atau ARMv8), aplikasi akan gagal menjalankan. Bayangkan jumlah pekerjaan yang diperlukan untuk
program seperti Browser Firefox dapat dijalankan di Windows, macOS, berbagai rilis Linux, iOS, dan
Android, terkadang di berbagai arsitektur CPU.

2.7 Desain dan Implementasi Sistem Operasi

Pada bagian ini, kita membahas masalah yang kita hadapi dalam merancang dan mengimplementasikan
suatu sistem operasi. Tentu saja, tidak ada solusi lengkap untuk masalah seperti itu, tetapi ada
pendekatan yang terbukti berhasil.

2.7.1 Tujuan Desain

Masalah pertama dalam mendesain sistem adalah menentukan tujuan dan spesifikasi. Di tingkat
tertinggi, desain sistem akan dipengaruhi oleh pilihan perangkat keras dan jenis sistem: desktop / laptop
tradisional, ponsel, didistribusikan, atau waktu nyata.

Di luar level desain tertinggi ini, persyaratannya mungkin jauh lebih sulit menentukan. Namun,
persyaratan dapat dibagi menjadi dua kelompok dasar: pengguna tujuan dan sasaran sistem.

Pengguna menginginkan sifat jelas tertentu dalam suatu sistem. Sistem seharusnya nyaman digunakan,
mudah dipelajari dan digunakan, andal, aman, dan cepat. Tentu saja, spesifikasi ini tidak terlalu berguna
dalam desain sistem, karena di sana tidak ada kesepakatan umum tentang cara mencapainya.

Serangkaian persyaratan serupa dapat ditentukan oleh pengembang yang harus mendesain, membuat,
memelihara, dan mengoperasikan sistem. Sistemnya harus mudah mendesain, mengimplementasikan,
dan memelihara; dan harus fleksibel, dapat diandalkan, bebas kesalahan, dan efisien. Sekali lagi,
persyaratan ini tidak jelas dan dapat ditafsirkan dalam berbagai cara.

Singkatnya, tidak ada solusi unik untuk masalah pendefinisian persyaratan untuk sistem operasi.
Berbagai macam sistem yang ada menunjukkan bahwa persyaratan yang berbeda dapat menghasilkan
beragam solusi untuk perbedaan lingkungan. Misalnya, persyaratan untuk Wind River VxWorks, sistem
operasi waktu nyata untuk sistem tertanam, harus secara substansial berbeda dengan Windows Server,
sistem operasi multi-akses yang besar dirancang untuk aplikasi perusahaan.

Menentukan dan merancang sistem operasi adalah tugas yang sangat kreatif. Meskipun tidak ada buku
teks yang dapat memberitahu Anda bagaimana melakukannya, prinsip-prinsip umum telah
28. Struktur Sistem Operasi

Suatu sistem yang besar dan kompleks seperti sistem operasi modern harus dirancang dengan hati-hati
jika ingin berfungsi dengan baik dan mudah dimodifikasi. Biasa Pendekatannya adalah mempartisi tugas
menjadi komponen-komponen kecil, atau modul daripada memiliki satu sistem tunggal. Masing-masing
modul harus didefinisikan dengan baik bagian dari sistem, dengan antarmuka dan fungsi yang
ditentukan dengan cermat. Kamu boleh gunakan pendekatan serupa ketika Anda menyusun program
Anda: daripada menempatkan semua kode Anda dalam fungsi utama (), Anda sebaliknya memisahkan
logika menjadi sejumlah fungsi, mengartikulasikan parameter dengan jelas dan mengembalikan nilai,
dan kemudian memanggil fungsi-fungsi dari main ().

2.9 Membangun dan Mem-boot Sistem Operasi

Dimungkinkan untuk merancang, kode, dan mengimplementasikan sistem operasi secara khusus untuk
satu konfigurasi mesin tertentu. Namun, yang lebih umum, beroperasi sistem dirancang untuk berjalan
pada salah satu kelas mesin dengan beragam konfigurasi periferal.

2.10 Debugging Sistem Operasi

Kami telah menyebutkan debugging dari waktu ke waktu dalam bab ini. Di sini, kita ambil melihat lebih
dekat. Secara umum, debugging adalah aktivitas mencari dan memperbaiki kesalahan dalam suatu
sistem, baik dalam perangkat keras maupun perangkat lunak. Masalah kinerja adalah dianggap bug,
sehingga debugging juga dapat mencakup penyempurnaan kinerja, yang berupaya meningkatkan kinerja
dengan menghilangkan hambatan pemrosesan. Di dalam bagian, kami mengeksplorasi proses debugging
dan kesalahan kernel dan kinerja masalah. Debugging perangkat keras berada di luar cakupan teks ini

2.11 Ringkasan

• Sistem operasi menyediakan lingkungan untuk pelaksanaan program dengan memberikan layanan
kepada pengguna dan program.

• Tiga pendekatan utama untuk berinteraksi dengan sistem operasi adalah (1) penafsir perintah, (2)
antarmuka pengguna grafis, dan (3) antarmuka layar sentuh.

• Panggilan sistem menyediakan antarmuka ke layanan yang disediakan oleh sistem operasi.
Programmer menggunakan program aplikasi panggilan system antarmuka (API) untuk mengakses
layanan panggilan sistem.

• Panggilan sistem dapat dibagi menjadi enam kategori utama: (1) kontrol proses, (2) manajemen file,
(3) manajemen perangkat, (4) pemeliharaan informasi, (5) komunikasi, dan (6) perlindungan.

• Perpustakaan C standar menyediakan antarmuka panggilan sistem untuk UNIX dan Sistem Linux.
• Sistem operasi juga mencakup kumpulan program sistem yang menyediakan utilitas untuk pengguna.

• Seorang penghubung menggabungkan beberapa modul objek yang dapat dipindahkan ke dalam satu
biner file yang dapat dieksekusi. Loader memuat file yang dapat dieksekusi ke dalam memori, di mana
file tersebut menjadi layak untuk dijalankan pada CPU yang tersedia.

• Ada beberapa alasan mengapa aplikasi spesifik untuk sistem operasi. Ini termasuk berbagai format
biner untuk program yang dapat dieksekusi, berbeda set instruksi untuk CPU yang berbeda, dan
panggilan sistem yang berbeda dari satu sistem operasi ke yang lain.

• Sistem operasi dirancang dengan tujuan spesifik. Tujuan-tujuan ini pada akhirnya menentukan
kebijakan sistem operasi. Sistem operasi mengimplementasikan kebijakan ini melalui mekanisme
spesifik.

• Sistem operasi monolitik tidak memiliki struktur; semua fungsionalitas disediakan dalam satu file biner
statis yang berjalan dalam satu ruang alamat tunggal. Meskipun sistem seperti itu sulit untuk
dimodifikasi, manfaat utamanya adalah efisiensi.

• Sistem operasi berlapis dibagi menjadi beberapa lapisan diskrit, di mana lapisan bawah adalah
antarmuka perangkat keras dan lapisan tertinggi adalah antarmuka pengguna. Meskipun sistem
perangkat lunak berlapis memiliki beberapa dukungan cess, pendekatan ini umumnya tidak ideal untuk
merancang sistem operasi karena masalah kinerja.

• Pendekatan microkernel untuk merancang sistem operasi menggunakan minimal inti; sebagian besar
layanan dijalankan sebagai aplikasi tingkat pengguna. Komunikasi dibutuhkan tempatkan lewat pesan.

• Pendekatan modular untuk merancang sistem operasi menyediakan layanan sistem operasi melalui
modul yang dapat dimuat dan dihapus selama waktu berjalan. Banyak sistem operasi kontemporer
dibangun sebagai hibrida sistem menggunakan kombinasi kernel dan modul monolitik.

• Boot loader memuat sistem operasi ke dalam memori, melakukan inisialisasi, dan memulai eksekusi
sistem.

• Kinerja sistem operasi dapat dimonitor menggunakan salah satunya penghitung atau penelusuran.
Penghitung adalah kumpulan statistik seluruh sistem atau per proses, sementara pelacakan mengikuti
pelaksanaan program melalui sistem operasi.

Latihan Latihan

2.1 Apa tujuan dari pemanggilan sistem?

2.2 Apa tujuan dari juru bahasa perintah? Kenapa biasanya begitu

terpisah dari kernel?

2.3 Panggilan sistem apa yang harus dijalankan oleh penerjemah perintah atau shell

untuk memulai proses baru pada sistem UNIX?

2.4 Apa tujuan dari program sistem?


2.5 Apa keuntungan utama dari pendekatan berlapis untuk desain sistem?

Apa kerugian dari pendekatan berlapis?

2.6. Daftar lima layanan yang disediakan oleh sistem operasi, dan jelaskan bagaimana masing-masing

menciptakan kenyamanan bagi pengguna. Dalam hal mana tidak mungkin untuk itu

program tingkat pengguna untuk menyediakan layanan ini? Jelaskan jawabanmu.

2.7 Mengapa beberapa sistem menyimpan sistem operasi dalam firmware, sementara

orang lain menyimpannya di disk?

2.8 Bagaimana suatu sistem dapat dirancang untuk memungkinkan pilihan sistem operasi

dari mana untuk boot? Apa yang perlu dilakukan oleh program bootstrap?

Bacaan lebih lanjut

[Bryant dan O'Hallaron (2015)] memberikan ikhtisar sistem komputer,

termasuk peran tautan dan pemuat. [Atlidakis et al. (2016)] mendiskusikan POSIX

panggilan sistem dan bagaimana kaitannya dengan sistem operasi modern. [Levin (2013)]

mencakup internal MacOS dan iOS, dan [Levin (2015)] menjelaskan detail

dari sistem Android. Windows 10 internal dicakup dalam [Russinovich et al.

(2017)]. BSD UNIX dijelaskan dalam [McKusick et al. (2015)]. [Cinta (2010)] dan

Masalah Pemrograman

2.24 Di Bagian 2.3, kami menggambarkan sebuah program yang menyalin isi dari satu file

ke file tujuan. Program ini bekerja dengan terlebih dahulu meminta pengguna nama file sumber dan
tujuan. Tulis program ini menggunakan baik POSIX atau Windows API. Pastikan untuk memasukkan
semua kesalahan yang diperlukan memeriksa, termasuk memastikan bahwa file sumber ada.

Setelah Anda merancang dan menguji program dengan benar, jika Anda menggunakannya sebuah
sistem yang mendukungnya, menjalankan program menggunakan utilitas yang melacak panggilan
sistem. Sistem Linux menyediakan utilitas strace, dan sistem macOS gunakan perintah dtruss. (Perintah
dtruss, yang sebenarnya adalah a front end to dtrace, membutuhkan hak admin, jadi harus dijalankan
menggunakan sudo.) Alat-alat ini dapat digunakan sebagai berikut (asumsikan bahwa nama th file yang
dapat dieksekusi adalah FileCopy:

Linux:

strace ./FileCopy
macOS:

sudo dtruss ./FileCopy

Karena sistem Windows tidak menyediakan alat seperti itu, Anda harus melakukannya telusuri versi
Windows dari program ini menggunakan debugger.

Anda mungkin juga menyukai