Akses yang dilakukan terhadap perangkat keras terbatas, sedangkan terdapat lebih dari satu program yang harus dilayani dalam waktu yang bersamaan, maka kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program dapat menggunakan perangkat keras tersebut yang disebut dengan Multiplexing. Suatu akses terhadap komputer secara langsung merupakan suatu masalah yang kompleks, oleh karena itu kernel mengimplementasikan sekumpulan abstraksi hardware yang berguna untuk menyembunyikan kompleksitas dan memungkinkan akses terhadap perangkat keras menjadi lebih mudah dan seragam, dan juga untuk memudahkan pekerjaan programmer.
Kernel sistem operasi tidak harus ada dan dibutuhkan untuk menjalankan suatu komputer. Program dapat langsung dijalankan secara langsung dalam mesin. (contohnya CMOS Setup) sehingga para pembuat program tersebut membuat program tanpa adanya dukungan dari sistem operasi atau hardware abstraction. Cara kerja seperti ini, adalah cara kerja yang digunakan pada zaman awal-awal dikembangkannya komputer (pada sekitar tahun 1950). Kerugian dari diterapkannya metode ini adalah pengguna harus melakukan reset ulang komputer tersebut dan memuatkan program lainnya untuk berpindah program, dari satu program ke program lainnya.
Kemampuan Dasar Kernel
Tujuan utama kernel adalah untuk mengelola sumber daya komputer dan
memungkinkan program lain untuk menjalankan dan menggunakan sumber daya. Biasanya,
sumber daya terdiri atas:
- Central
Processing Unit. Ini adalah bagian paling sentral dari sebuah sistem
komputer, yang bertanggung jawab untuk menjalankan atau mengeksekusi
program-program. Kernel bertanggung jawab untuk memutuskan saat mana
saja dari banyak program yang sedang berjalan yang harus dialokasikan ke
prosesor atau prosesor (masing-masing yang biasanya hanya dapat
menjalankan satu program pada satu waktu)
- Memori
Komputer. Memori digunakan untuk menyimpan instruksi program kedua
dan data. Biasanya, keduanya harus hadir dalam memori dalam rangka
untuk mengeksekusi sebuah progam. Seringkali beberapa program akan
menginginkan akses ke memori, sering menuntut memori lebih dari komputer
telah tersedia. Kernel bertanggung jawab untuk memutuskan yang memori
setiap proses dapat menggunakan, dan menentukan apa yang harus dilakukan
bila memori tidak tersedia.
- Setiap
Input / Output (I / O) yang ada di komputer perangkat, seperti keyboard,
mouse, disk drive, printer, display, dll Kernel mengalokasikan permintaan
dari aplikasi untuk melakukan I / O ke perangkat yang sesuai (atau
sub-bagian dari perangkat, dalam kasus file pada disk atau jendela di
layar) dan memberikan metode yang nyaman untuk menggunakan perangkat
(biasanya diabstraksikan ke titik di mana aplikasi tidak perlu tahu detail
implementasi perangkat). Aspek utama yang diperlukan dalam manajemen
sumber daya adalah definisi dari domain eksekusi (address space) dan
mekanisme perlindungan yang digunakan untuk memediasi akses ke sumber daya
dalam sebuah domain. Kernel juga biasanya menyediakan metode untuk
sinkronisasi dan komunikasi antar proses (disebut inter-proses komunikasi
atau IPC). Kernel mungkin mengimplementasikan fitur ini sendiri, atau
bergantung pada beberapa proses berjalan untuk menyediakan fasilitas untuk
proses lainnya, meskipun dalam kasus ini harus menyediakan mekanisme IPC
untuk memungkinkan proses untuk mengakses fasilitas yang disediakan oleh
masing-masing lain. Akhirnya, kernel harus menyediakan menjalankan
program dengan metode untuk membuat permintaan untuk mengakses fasilitas
tersebut.
Perkembangan komputer telah membuat para arsitek sistem operasi untuk ikut
mengembangkan kernel sistem operasi. Kernel dibagi menjadi 4 bagian yang
memiliki desain berbeda, yaitu:
- Kernel monolitik. Kernel monolitik mengintegrasikan banyak fungsi
di dalam kernel dan menyediakan lapisan abstraksi perangkat keras secara
penuh terhadap perangkat keras yang berada di bawah sistem operasi.
- Mikrokernel. Mikrokernel menyediakan sedikit saja dari abstraksi perangkat keras
dan menggunakan aplikasi yang berjalan di atasnya—yang disebut dengan
server—untuk melakukan beberapa fungsionalitas lainnya.
- Kernel hibrida. Kernel hibrida adalah pendekatan desain microkernel yang
dimodifikasi. Pada hybrid kernel, terdapat beberapa tambahan
kode di dalam ruangan kernel untuk meningkatkan performanya.
- Exokernel.
Exokernel menyediakan hardware abstraction secara minimal, sehingga
program dapat mengakses hardware secara langsung. Dalam pendekatan desain
exokernel, library yang dimiliki oleh sistem operasi dapat melakukan
abstraksi yang mirip dengan abstraksi yang dilakukan dalam desain monolithic
kernel.
Bagaimana dengan sistem operasi linux, desain kernel yang mana yang
diterapkan?
Jawab: Sistem operasi Linux dan Unix menggunakan kernel monolitik,
dimana pada kernel dikenal dengan desain monolitik memiliki desain yang sangat
efisien, meskipun sangat sulit dalam pembuatannya.