Back to IF2130 Sistem Operasi

Layanan dan Interaksi Dasar OS

Questions/Cues

  • Apa saja layanan fungsional OS?

  • Apa saja layanan efisiensi OS?

  • Apa itu System Call?

  • Apa peran API?

  • Bagaimana cara melewatkan parameter ke system call?

  • Apa saja tipe-tipe system call?

  • Apa itu System Programs?

Reference Points

  • Slides 2-4, 16-33, IF2130-02-2025-OS-Structure.pdf

Layanan Sistem Operasi untuk Pengguna & Program

OS menyediakan serangkaian layanan untuk memberikan fungsionalitas dan kemudahan. Layanan ini dibagi menjadi dua kategori utama.

1. Layanan Fungsional (Untuk Pengguna):

  • User Interface (UI): Menyediakan cara bagi pengguna untuk berinteraksi, baik melalui GUI (Graphical User Interface), CLI (Command-Line Interface), maupun touch screen.

  • Eksekusi Program: Memuat, menjalankan, dan mengelola siklus hidup program.

  • Operasi I/O: Mengabstraksi interaksi dengan perangkat keras seperti disk atau printer.

  • Manipulasi Sistem File: Mengelola pembuatan, pembacaan, penulisan, dan penghapusan file/direktori.

  • Komunikasi: Memfasilitasi pertukaran data antar proses (IPC) atau antar komputer dalam jaringan.

  • Deteksi Error: Mendeteksi dan merespons error dari hardware, jaringan, atau program.

2. Layanan Efisiensi Sistem:

  • Alokasi Sumber Daya: Mengalokasikan sumber daya (CPU, memori) kepada banyak pengguna atau proses secara adil.

  • Akuntansi (Accounting): Melacak penggunaan sumber daya oleh setiap pengguna.

  • Proteksi dan Keamanan: Mengontrol akses ke sumber daya dan melindungi sistem dari ancaman internal maupun eksternal.

System Call: Jembatan ke Kernel

System Call adalah mekanisme terprogram yang disediakan oleh OS agar sebuah aplikasi (yang berjalan di user mode) dapat meminta layanan dari kernel (yang berjalan di kernel mode). Ini adalah satu-satunya “pintu” masuk yang sah bagi aplikasi untuk mengakses sumber daya yang dilindungi atau melakukan operasi-operasi khusus.

  • Application Program Interface (API): Programmer jarang sekali menulis system call secara langsung. Mereka menggunakan API (seperti Win32 API, POSIX API, atau Java API) yang menyediakan fungsi-fungsi pustaka (library) yang lebih mudah digunakan. Fungsi API inilah yang kemudian akan “membungkus” dan memanggil system call yang sesungguhnya di latar belakang. Contoh: fungsi printf() di C pada akhirnya akan memanggil system call write() untuk menampilkan teks ke layar.

Parameter Passing untuk System Call

Seringkali, sebuah system call butuh parameter (misalnya, nama file yang akan dibuka). Ada tiga cara umum untuk melewatkan parameter dari program ke kernel:

  1. Melalui Register: Cara tercepat, namun terbatas oleh jumlah register CPU yang tersedia.

  2. Melalui Blok Memori: Parameter disimpan dalam sebuah tabel/blok di memori, dan alamat blok tersebut yang dilewatkan melalui register. Digunakan oleh Linux & Solaris.

  3. Melalui Stack: Parameter di-push ke dalam stack oleh program, lalu di-pop oleh kernel. Fleksibel dan tidak membatasi jumlah parameter.

Tipe-Tipe System Call

System call dapat dikelompokkan berdasarkan fungsinya:

  • Kontrol Proses: create, terminate, load, execute, wait.

  • Manajemen File: create, delete, open, close, read, write.

  • Manajemen Perangkat: request device, release device, read, write.

  • Pemeliharaan Informasi: get_time, set_time, get_system_data.

  • Komunikasi: create_connection, send_message, shm_create (shared memory).

  • Proteksi: chmod, set_permissions.

System Programs

Sebagian besar pengguna tidak berinteraksi langsung dengan system call, melainkan dengan System Programs. Ini adalah program-program yang menyediakan lingkungan yang nyaman untuk pengembangan dan eksekusi. Contohnya termasuk: file manager, text editor, compiler, dan background services (dikenal sebagai daemons di UNIX atau services di Windows).

Summary

Sistem Operasi menyediakan serangkaian layanan untuk fungsionalitas pengguna (UI, eksekusi program) dan efisiensi sistem (alokasi sumber daya, keamanan). Aplikasi mengakses layanan ini melalui System Call, sebuah antarmuka terprogram yang menjadi jembatan antara user mode dan kernel mode. Programmer biasanya berinteraksi dengan System Call secara tidak langsung melalui API yang lebih sederhana, sementara pengguna akhir berinteraksi dengan OS melalui System Programs yang menyediakan lingkungan kerja yang utuh.