kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi. Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman.
Karena akses terhadap perangkat keras
 terbatas, sedangkan ada 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 satu bagian 
perangkat keras tersebut. Hal tersebut dinamakan sebagai multiplexing.
Akses kepada perangkat keras secara langsung merupakan masalah yang 
kompleks, oleh karena itu kernel biasanya mengimplementasikan sekumpulan
 abstraksi hardware.
 Abstraksi-abstraksi tersebut merupakan sebuah cara untuk menyembunyikan
 kompleksitas, dan memungkinkan akses kepada perangkat keras menjadi 
mudah dan seragam. Sehingga abstraksi pada akhirnya memudahkan pekerjaan
 programer.
Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel sistem operasi. Sebuah program dapat saja langsung diload
 dan dijalankan di atas mesin 'telanjang' komputer, yaitu bilamana 
pembuat program ingin melakukan pekerjaannya tanpa bantuan abstraksi 
perangkat keras atau bantuan sistem operasi. Teknik ini digunakan oleh 
komputer generasi awal, sehingga bila kita ingin berpindah dari satu 
program ke program lain, kita harus mereset dan meload kembali program-program tersebut.
Beberapa desain Kernel
 Sebuah kernel sistem operasi tidak harus ada dan dibutuhkan untuk 
menjalankan sebuah komputer. Program dapat langsung dijalankan secara 
langsung di dalam sebuah mesin (contohnya adalah 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. Selanjutnya, para pembuat
 program tersebut membuat beberapa komponen program yang sengaja 
ditinggalkan di dalam komputer, seperti halnya loader atau debugger, atau dimuat dari dalam ROM (Read-Only Memory).
 Seiring dengan perkembangan zaman komputer yang mengalami akselerasi 
yang signifikan, metode ini selanjutnya membentuk apa yang disebut 
dengan kernel sistem operasi.
Sebuah kernel sistem operasi tidak harus ada dan dibutuhkan untuk 
menjalankan sebuah komputer. Program dapat langsung dijalankan secara 
langsung di dalam sebuah mesin (contohnya adalah 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. Selanjutnya, para pembuat
 program tersebut membuat beberapa komponen program yang sengaja 
ditinggalkan di dalam komputer, seperti halnya loader atau debugger, atau dimuat dari dalam ROM (Read-Only Memory).
 Seiring dengan perkembangan zaman komputer yang mengalami akselerasi 
yang signifikan, metode ini selanjutnya membentuk apa yang disebut 
dengan kernel sistem operasi.
Selanjutnya, para arsitek sistem operasi mengembangkan kernel sistem 
operasi yang pada akhirnya terbagi menjadi empat bagian yang secara 
desain berbeda, sebagai berikut:
- 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.
 
