Catatan Kuliah: STRUKTUR SISTEM OPERASI (SO)
Materi ini membahas bagaimana SO disusun dan diorganisasi, mencakup layanan, antarmuka, arsitektur, hingga proses booting.

1. Layanan & Antarmuka Sistem Operasi (2.1 - 2.2) SO menyediakan lingkungan untuk menjalankan program dan memberikan layanan kepada pengguna:
- Layanan Utama: Antarmuka Pengguna (CLI, GUI, Batch), Eksekusi Program (memuat dan menjalankan), Operasi I/O, Manipulasi Sistem File, Komunikasi (IPC antar-proses), dan Deteksi Error.
- Efisiensi Sistem: Alokasi Sumber Daya (CPU, memori), Akuntansi (melacak penggunaan), serta Proteksi & Keamanan.
- Antarmuka Pengguna:
- CLI (Command Interpreter): Memproses permintaan pengguna dengan menjalankan program. Bisa berupa program terpisah (seperti Shell di UNIX) atau menyatu di kernel.
- GUI: Menggunakan metafora desktop (ikon, jendela) untuk interaksi. Perangkat mobile menggunakan layar sentuh dan gerakan tangan (swipes/gestures).
2. System Calls (2.3 - 2.4)System Calls adalah mekanisme bagi program pengguna untuk meminta layanan kernel SO.
- Mekanisme: Umumnya diakses melalui API (misal: POSIX, Win32) untuk portabilitas. API memanggil system call interface yang merujuk tabel nomor system call. Parameter dilewatkan melalui register atau stack memori.
- Kategori:
- Kontrol Proses: end, abort, load, execute, fork/exec (UNIX), manajemen memori.
- Manajemen File: create, delete, open, close, read, write.
- Manajemen Perangkat: request, release, I/O.
- Pemeliharaan Informasi: get/set waktu, atribut sistem.
- Komunikasi: Message Passing (simpel, untuk data kecil), Shared Memory (cepat, untuk data besar).
- Proteksi: Mengontrol akses sumber daya.
3. Program Sistem (System Programs) (2.5) Kumpulan aplikasi terpisah dari kernel yang menyediakan fungsionalitas SO bagi pengguna. Kategori meliputi: manajemen file, informasi status, modifikasi file, dukungan bahasa pemrograman, pemuatan program, komunikasi, dan layanan background (daemon).
4. Desain & Struktur Sistem Operasi (2.6 - 2.7)
- Desain: Dibedakan antara Kebijakan (what to do) dan Mekanisme (how to do it). Pemisahan ini memudahkan penyesuaian sistem tanpa mengubah kode mendasar.
- Implementasi: Dulu menggunakan assembly, kini dominan C/C++ untuk efisiensi dan portabilitas.
- Struktur/Arsitektur:
- Sederhana: (Contoh: MS-DOS, UNIX awal) Sedikit pembagian subsistem, akses perangkat keras langsung. UNIX awal menumpuk semua fungsionalitas dalam satu lapisan kernel besar.
- Berlapis (Layered): Dibagi menjadi lapisan-lapisan kecil di atas satu sama lain. Mudah di-debug, tapi sulit menentukan urutan lapisan dan kurang efisien.
- Mikrokernal: (Contoh: Mach, QNX) Menghapus layanan non-esensial dari kernel dan menjalankannya sebagai aplikasi sistem di user mode. Meningkatkan keamanan dan proteksi, namun sering terkendala performa.
- Modular: (Contoh: Solaris) Inti kernel kecil dengan modul-modul yang dapat dimuat secara dinamis saat runtime. Lebih fleksibel dibanding pendekatan berlapis.
- Hibrida: (Contoh: macOS, iOS, Android) Kombinasi berbagai arsitektur untuk keseimbangan performa, fungsionalitas, dan keterbatasan platform.
5. Debugging & Kinerja Sistem (2.8)
- Analisis Kegagalan: Penggunaan debugger dan profiler. Jika sistem crash, kernel dapat menyimpan dump memori ke partisi khusus disk untuk dianalisis.
- Penyesuaian Kinerja: Monitoring performa lewat file log, traces, atau utilitas seperti
topdan Task Manager. - DTrace (Solaris 10): Fasilitas canggih untuk melacak SO yang sedang berjalan menggunakan "probes" dinamis tanpa dampak performa saat tidak digunakan.
6. Generasi & Booting Sistem (2.9 - 2.10)
- Generasi SO: Mengonfigurasi parameter dan komponen SO agar sesuai dengan konfigurasi perangkat keras fisik tertentu.
- Sistem Boot:
- Listrik menyala memicu interrupt ke program bootstrap di ROM ( motherbord).
- Bootstrap melakukan POST (Power-On Self Test) untuk mengecek perangkat keras.
- Bootstrap mencari perangkat penyimpanan (disk, CD, dll.) yang berisi SO.
- Membaca boot block kecil dari disk untuk memuat program boot yang lebih besar.
- Program boot memuat kernel SO ke memori dan menyerahkan kendali.
- Kernel berjalan, memuat driver, dan memulai layanan multi-user/multi-tasking.
KESIMPULAN & MESIN VIRTUAL (VIRTUAL MACHINES)
Bagian ini membahas konsep dasar, sejarah, manfaat, serta implementasi dari teknologi Mesin Virtual (VM) dan lingkungan eksekusi berbasis platform-independent.
1. Konsep Dasar & Manfaat Mesin Virtual (2.8)
Mesin virtual dirancang untuk menyediakan antarmuka yang menyerupai perangkat keras independen bagi beberapa sistem operasi (SO) berbeda yang berjalan secara bersamaan pada satu perangkat keras fisik yang sama.
- Cara Kerja: Setiap OS merasa memiliki akses penuh dan kendali atas CPU, RAM, perangkat I/O, serta harddisk mereka sendiri. Harddisk fisik umumnya dipartisi menjadi beberapa disk virtual yang lebih kecil untuk setiap OS.
- Sejarah: VM pertama kali diperkenalkan oleh IBM pada tahun 1972 sebagai VM Operating System untuk komputer mainframe.
- Manfaat:
- Proteksi dan Keamanan: Setiap OS berjalan secara independen sehingga kegagalan satu OS tidak memengaruhi OS lainnya.
- Pengembangan Sistem: Sangat berguna untuk pengembangan OS dan pengujian perangkat lunak yang harus berjalan di berbagai platform tanpa mengganggu pengguna lain di mesin fisik.
2. Simulasi & Para-virtualisasi
- Simulasi (Emulasi): Alternatif di mana sebuah emulator dijalankan agar program yang ditulis untuk satu SO bisa berjalan di SO yang berbeda (misalnya, menjalankan program DOS di mesin UNIX). Kelemahannya, emulator berjalan jauh lebih lambat dan hasilnya sering kali tidak sempurna.
- Para-virtualisasi: Menyediakan lingkungan bagi program tamu (guest) yang mirip dengan SO aslinya tanpa meniru secara penuh. Program tamu harus dimodifikasi agar bisa berjalan di arsitektur ini.
- Sistem Zona (Solaris 10): Solaris menggunakan sistem zona di mana perangkat keras tingkat rendah tidak divirtualisasikan, melainkan SO dan device driver-nya yang divirtualisasikan. Di dalam sebuah zona, proses-proses terisolasi dan hanya dapat melihat sumber daya yang ada di zona tersebut.
3. Tantangan Implementasi (2.8.5)
Implementasi VM cukup menantang karena adanya perbedaan antara User Mode dan Kernel Mode.
- Kernel dari OS tamu perlu berjalan di kernel mode, padahal mesin virtual itu sendiri sebenarnya berjalan di user mode perangkat keras fisik.
- Akibatnya, kernel mode harus disimulasikan untuk setiap OS tamu, dan setiap system call dari OS tamu harus dilewatkan melalui mesin virtual ke kernel mode asli untuk mengakses perangkat keras. Hal ini bisa memperlambat performa, meski terkadang bisa lebih cepat berkat optimasi caching atau penggunaan perangkat virtual (seperti RAM disk).
4. Contoh Teknologi VM (2.8.6)
4.6.1 VMware
VMware mengabstraksikan platform perangkat keras Intel 80x86, memungkinkan pengoperasian beberapa OS Windows dan Linux secara simultan di atas satu mesin.
4.6.2 Java Virtual Machine (JVM)
Java dirancang agar mandiri-platform (platform independent) dengan cara menjalankan kodenya di atas JVM.
- Proses Kerja: Kode sumber Java dikompilasi menjadi Java byte code (file
.class) yang berisi instruksi biner untuk JVM. JVM juga menangani manajemen memori dan garbage collection secara otomatis. - Eksekusi & JIT: Byte code dapat diinterpretasikan langsung atau dikompilasi ke kode biner sistem asli menggunakan kompilasi Just-In-Time (JIT). Saat kode pertama kali dijalankan, interpreter Java mengubahnya menjadi kode biner mesin asli, lalu menyimpannya di cache agar eksekusi berikutnya bisa langsung digunakan tanpa kompilasi ulang.
4.6.3 .NET Framework
Mirip dengan konsep Java, framework .NET mengompilasi kode program menjadi bentuk perantara untuk mesin virtual yang disebut CLR (Common Language Runtime). Proses jalannya program juga memanfaatkan kompilasi JIT dan caching untuk dieksekusi pada perangkat keras spesifik.
Referensi
- Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, "Operating System Concepts, Ninth Edition ", Chapter 2