Salah satu fungsi dari sistem operasi adalah menyediakan layanan serta antarmuka bagi pengguna maupun program aplikasi. Pengguna berinteraksi dengan sistem operasi menggunakan suatu program antarmuka (shell). Suatu shell dapat memiliki antarmuka berbasis perintah teks (CUI, Command User Interface) seperti pada gambar dibawah, ataupun GUI (Graphical User Interface) seperti gambar dibawah. Program-program shell ini merupakan program pengguna dan umumnya selalu disertakan pada paket instalasi suatu sistem operasi.

Command User Interface
Command User Interface

Graphical User Interface
Graphical User Interface

Dilain pihak , program-program aplikasi berinteraksi atau memanggil rutin-rutin sistem operasi menggunakan pustaka API (Application Programming Interface) sistem operas. Prosedur atau rutin yang disediakan oleh pustaka API ini disebut dengan system call. Setiap sistem operasi umumnya memiliki spesifikasi system call standar, misalnya UNIX memiliki POSIX sebagai spesifikasi standar system call-nya, sedangkan keluarga sistem operasi Windows memiliki spesifikasi Win32 API. Pusataka API atau system call umumnya berisi trap (semacam sinyal interupsi perangkat lunak) untuk memanggil rutin-rutin dari sistem operasi.

Pada sistem yang menerapkan sistem proteksi, rutin kernel sistem operasi berjalan dalam modus kernel tempat seluruh instruksi prosesor dapat dieksekusi secara lega. Rutin-rutin dari program aplikasi berjalan dalam modus user dimana hanya tidak seluruh instruksi prosesor dapat dieksekusi secara legal. Instruksi seperti pengaksesan peranti I/O tidak dapat dieksekusi jika prosesor dalam modus user. Perpindahan dari modus kernel ke user ataupun sebaliknya hanya terjadi dengan trap, semacam sinyal interupsi perangkat lunak ke prosesor. Sebelum trap dilakukan perameter-parameter yang mengidentifikasi rutin sistem operasi yang hendak dipanggil (nomor system call) beserta argumentnya harus disalin ke register prosesor. Instruksi seperti ini umumnya ditulis dalam bahasa assembly. Jadi umumnya pustaka. Jadi umumnya pustaka API, yang berisi instruksi trap, terdiri atas sebagian kode bahasa C dan sebagian lagi kode assembly. Proses pemanggilan rutin operasi menggunakan system call.

Prosedur Pemanggilan Rutin Sistem Operasi Lewat System Call
Prosedur Pemanggilan Rutin Sistem Operasi Lewat System Call

Pada gambar diilustrasikan pemanggilan system call read untuk membaca berkas. Pertama, program aplikasi memanggil rutin read (1) yang disediakan oleh pustaka API. Isi dari rutin read adalah mengisi ke register nomor system call yang berkaitan dengan rutin read, lalu melakukan fungsi trap. Ketika trap menadi maka akan dilakukan perpindahan modus eksekusi dari modus user ke modus kernel (2). Ketika berpindah ke modus eksekusi kernel, komponen sistem operasi yang disebut dengan dispatch, akan memeriksa nomor system call yang disalin ke register lalu memeriksa rutin penanganan di suatu tabel rutin interupsi (IST, Interrupt Service Table) (3). Selanjutnya rutin penanganan system call (ISR, Interrupt Service Routine) akan dieksekusi (4). Setelah selesai, modus eksekusi dikembalikan ke modus user, dan kontrol eksekusi kembali lagi ke rutin pustaka API (5). Jika seluruh instruksi dalam read sudah dieksekusi, kontrol eksekusi dikembalikan ke program aplikasi (6).

Skenario trap dapat dianalogikan dengan mekanisme penarikan uang tunai di bank. Kita sebagai pelanggan (ibaratnya program aplikasi) yang meminta layanan penarikan uang tunai, tidak dapat mengambil uang kita yang ada di brankas bank. Yang diperlukan adalah mengisi slip penarikan (ibarat pemanggilan pustaka API dengan mengisi nomor system call dan parameternya), dan menyerakannya (sinyal trap) ke kasir (ibaratnya sebagai dispatcher). Kasi yang kemudian melakukan pengambilan uang di brankas (ibaratnya melakukan rutin sistem operasi).