Kernel
Kernel adalah bagian utama dari sebuah sistem operasi komputer. Sistem ini berupa perangkat lunak yang mempunyai tugas untuk melayani berbagai macam program aplikasi yang diinstal agar dapat terhubung dengan hardware atau perangkat keras komputer secara aman.
Definisi lain dari kernel menyebutkan bahwa kernel adalah software mediator antara aplikasi dan hardware yang menyediakan berbagai pelayanan sistem seperti pengaturan memori terhadap berbagai aplikasi yang sedang berjalan, pengaturan file, pengaturan keluar masuk program atau aplikasi lain, mengatur keyboard, mouse, monitor, printer, speaker dan berbagai pengaturan perangkat hardware lainnya.
Kernel akan menerjemahkan berbagai bahasa software sehingga mudah dimengerti oleh hardware. Setelah itu, hardware akan segera memprosesnya sesuai dengan perintah. Dengan sistem ini pengguna memungkinkan bekerja dengan menggunakan komputer melalui bantuan software.
Jenis Kernel
Kernel Monolitik

Jenis pertama dari kernel adalah kernel monolitik. Kernel monolitik merupakan kernel yang mengintegrasikan berbagai macam fungsi di dalam sebuah kernel. Kernel ini juga menyediakan sebuah lapisan abstraksi secara penuh dari hardware terhadap hardware yang berada di bawah sistem operasi sebuah komputer. Semua layanan pada sistem operasi akan berjalan secara bersamaan melalui kernel utama. Hal ini akan membuat kernel monolitik memiliki akses secara penuh dan beragam terhadap hardware. Namun, kernel satu ini memiliki kelemahan, yakni adanya ketergantungan pada kernel utama sehingga menyebabkan sistem operasi akan mudah mengalami crash. Crash terjadi meskipun hanya terjadi gangguan pada salah satu driver. Saat ini kernel monolitik terus dikembangkan menjadi beberapa jenis turunannya, beberapa diantaranya Linux dan FreeBSD.
Kernel Microkernel

Kemudian, jenis kedua kernel adalah microkernel. Ini merupakan kernel yang menyediakan sebagian kecil abstraksi perangkat keras secara sederhana. Kernel jenis ini menggunakan berbagai macam aplikasi yang disebut server untuk menunjang fungsi-fungsi lainnya. Mikrokernel menggunakan sebuah server sebagai pembatas akses kernel terhadap hardware. Server ini berperan memilah temuan menerjemahkan perintah yang dikirim oleh software/aplikasi sehingga kernel dapat mengakses hardware secara tepat dan efektif. Sistem kerja microkernel seperti di atas akan mudah dikelola, memiliki tingkat stabilitas dan keamanan tinggi.
Kelemahan microkernel yaitu kinerjanya akan melambat apabila software/aplikasi yang diakses cukup banyak. Namun karena sistem operasi kernel ini aman dan cukup stabil membuat microkernel tetap digunakan server dari sistem operasi komputer. Kernel ini pernah digunakan sebagai sistem operasi yang berjalan pada ponsel yakni Symbian.
Kernel Hybrid

Kernel hybrid merupakan kernel hasil modifikasi atau pengembangan dari microkernel sehingga mirip dengan microkernel. Yang membedakan dengan mikrokernel adalah kernel jenis ini memasukkan kode-kode ataupun kode tambahan ke dalam ruangan kernel agar performa meningkat atau kecepatannya bertambah. Hybrid merupakan server yang terintegrasi di dalam sebuah kernel yang membuat kinerja kernel lebih cepat seperti kinerja monolitik dan memiliki tingkat keamanan yang tinggi seperti microkernel.
Di sisi lain, hybrid memungkinkan terbentuknya banyak lubang pada keamanan sistem operasi. Hal ini karena banyaknya lapisan yang harus dilalui untuk melakukan akses komunikasi terhadap hardware. Lapisan-lapisan tersebut tidak mempunyai tingkat keamanan yang seragam. Sistem kernel hybrid banyak digunakan oleh sistem operasi modern yang telah banyak dikomersilkan seperti Microsoft Windows.
Kernel Exokernel

Exokernel adalah jenis kernel yang tidak menyediakan abstraksi hardware sama sekali. Kernel jenis ini hanya menyediakan fungsi akses hardware secara langsung. Kernel ini memaksa abstraksi yang dilakukan oleh developer dilakukan secara terbatas. Karena fungsinya yang terbatas pada proteksi dan pengadaan sumber daya membuat bentuk exokernel sangat kecil. Kernel-kernel lainnya, seperti monolitik dan mikrokernel melakukan abstraksi pada hardware. Caranya dengan menyembunyikan semua sumber daya yang terdapat di bawah hardware abstraction layer atau dibalik driver. Seperti contoh ketika sistem monolitik dan mikrokernel atau yang biasa disebut sistem operasi klasik mengalokasikan memori untuk hardware tertentu maka hardware lain tidak akan dapat menggunakan lokasi memori tersebut.
Fungsi Kernel
Pengurusan proses
Tugas utama sebuah system pengoperasian kernel ialah membenarkan aplikasi yang lain untuk berjalan dan menyokong mereka dengan ciri-ciri tambahan, seperti pengabstrakan perkakasan, untuk menjalan proses, kernel mesti memuat turun failnya kepada ingatan, menyediakan stack untuk program dan pergi ke lokasi yang diberikan di dalam program, ini memulakan perjalanan sesebuah program, cara ini dipanggil scheduling.
Dalam sistem berbilang kerja, kernel secara asasnya akan memberikan setiap program sedikit masa dan menukarkan dari proses ke proses dengan cepat dengan itu ia akan muncul kepada pengguna jika proses ini dijalankan secara terus menerus. Kernel mesti juga menyediakan proses ini untuk berkomunikasi, ini dikenali sebagai inter-process communication. Ini kemungkinan ada multipemprosesan yang menyokong kernel tersebut.
Pengurusan ingatan
Kernel mempunyai akses penuh dalam ingatan sistem dan menyediakan cara-cara untuk membenarkan userland program untuk mengakses memori ini dengan selamat. Cara pertama untuk mengurus ingatan ialah virtual addressing, biasanya arkib dengan mukasurat atau segmentation. Virtual addressing membenarkan kernel untuk memberikan alamat fizikal yang muncul sebagai alamat yang lain iaitu virtual address, ini membenarkan setiap program mempercayai ia hanya satu program (sebahagian daripada kernel) yang berjalan, dan ini mengelakkan aplikasi daripada berlanggar antara satu sama lain.
Pengurusan peranti
Dalam arahan untuk melakukan sesuatu tugas, kernel perlu untuk mengakses perbagai peranti yang bersambungan di dalam komputer, sebagai contoh, dalam arahan untuk memaparkan pengguna apa-apa sahaja, pemacu monitor perlu untuk muncul, peranti ini boleh dikawal melalui pemacu, di mana ia mesti dibuat oleh pembangun dan/atau disediakan oleh pengilang sesuatu peranti tersebut.
Pengurus peranti pertamanya akan melakukan semakan keatas bas perkakasan yang berbeza (seperti USB, PCI), dalam arahan unruk mengesan semua peranti yang telah dipasang dan kemudiannya mencari pemacu yang bersesuaian, selepas ini, semuanya bergantung kepada jenis kernel dan rekaan kernel.
Sistem panggilan
Dalam arahan untuk menyediakan kerja yang berguna, program userland mesti mempunyai akses kepada semua perkhidmatan yang disediakan oleh kernel. Ini dilaksanakan secaar berbeza-beza oleh kernel yang berlainan, tetapi mesti disediakan oleh C library, dimana ia menukarkan kelemahan kesemua system panggilan, sama ada diberikan atau melalui memori yang dikongsi.
Shell
Shell adalah perisian atau aplikasi yang menjadi alat untuk perhubungan antara pangguna untuk berhubung dengan sistem operasi, shella akan membaca apa sahaja yang dimasukkan oleh pengguna dan memahaminya sebagai arahan untuk menjalankan perisian lain, memanipulasi fail, dan memberikan output.
Shell juga turut dikenali sebagai command line interface. Terdapat pelbagai shell untuk Unix/Linux. Korn shell atau POSIX shell adalah shell yang biasa di kebanyakkan jenis unix atau linux.
Secara singkat
- Fungsi utama sebuah kernel adalah mengelola segala sumber daya yang terdapat dalam komputer dan memungkinkan software/aplikasi lain menjalankan dan menggunakan sumber daya tersebut.
- Kernel berfungsi sebagai pelayan terhadap software agar dapat mengakses hardware pada sistem komputer secara aman
- Karena akses terhadap hardware terbatas sedangkan lebih dari satu aplikasi harus dilayani secara bersamaan maka kernel dapat mengatur kapan dan berapa lama waktu yang digunakan sebuah aplikasi ketika menggunakan bagian dari hardware sebuah komputer. Proses ini disebut dengan Multiplexing
- Berfungsi sebagai pembantu dan pendukung dari sebuah aplikasi agar dapat mengeksekusi fitur abstraksi
- Kernel mempunyai akses secara penuh terhadap ingatan sebuah sistem sehingga kernel berperan dalam menyediakan cara-cara untuk membenarkan userland suatu software/aplikasi dalam mengakses memori dengan benar dan aman.
- Kernel sebagai shell yakni software yang dijadikan sebagai alat penghubung antara user dan sistem operasi. Shell akan membaca segala macam perintah user/pengguna, memahaminya sebagai perintah untuk dijalankan, memanipulasi berbagai macam kegagalan dan memberikan output sesuai dengan perintah pengguna. Shell juga dikenal sebagai command line interface.
- Kernel dapat mengimplementasikan sekumpulan abstraksi perangkat keras. Abstraksi tersebut adalah cara untuk menyembunyikan kompleksitas serta akses terhadap perangkat keras menjadi lebih mudah dan seragam. Abstraksi ini akan memudahkan pekerjaan dari seorang programmer.
Konsep Kernel
Kernel adalah jembatan antara hardware dan aplikasi-aplikasi yang menerjemahkan bahasa software sehingga mampu dimengerti oleh hardware dan hardware akan segera memprosesnya sesuai dengan permintaan. Akibatnya hal tersebut memungkinkan pengguna untuk menggunakan atau bekerja dengan komputernya melalui software. Hal-hal yang dilakukan oleh Kernel:
- Interrupt handler, yang mampu menangani I/O request
- Memory management untuk melakukan hal-hal tersebut, beberapa orang/kelompok mempunyai pertimbangan dan arahan pengembangan yang berbeda. Hal ini yang menyebabkan Operating System muncul dalam berbagai jenis, seperti :
- Windows 3.11 dengan metoda non pre-emptive multitasking yang kemudian dikembangkan dalam Windows 9x menjadi Pre-Emptive MultiTasking.
- Windows yang menggunakan Driver untuk mengakses hardware, berbeda dengan Unix lainnya yang memasukkannya ke dalam kernel. Linux, MacOSdan BeOS adalah hibrid dari dua konsep ini, sebagian (yang esensial) dimasukkan ke dalam kernel dan sisanya dijadikan module-module (karena tidak semua komputer perlu/sama).
Sedangkan shell adalah jembatan antara User Input dengan Kernel, berfungsi memberikan fasilitas pada Pengguna agar bisa berinteraksi dengan Komputer (baik Software maupun Hardware). Ilustrasi Shell: Shell dalam Windows95 dikenal sebagai Windows Explorer, sedangkan untuk Windows 98 telah diubah menjadi Internet Explorer (4.0 dan 5.0).
Alternatif lain shell untuk Windows adalah LiteStep, yang memberikan tampilan Windows menyerupai XWindow Afterstepnya Unix. Shell lebih dikenal oleh para pengguna Unix, antara lain : csh, tcsh, bash, pdksh, sh, dan lain-lain.
Cara Kerja Kernel
Proses Manajemen
Salah satu cara kerja kernel adalah sebagai proses manajemen. Proses manajemen ini merupakan sebuah bagian yang mengatur sebuah proses keluar/masuk antara software atau aplikasi di dalam komputer.
Memori Manajemen
Cara kerja selanjutnya yaitu memori manajemen. Maksudnya bahwa pengaturan penggunaan sebuah memori oleh beberapa aplikasi akan diatur oleh kernel. Kernel juga akan mengatur penggunaan memori dan penggunaan addressing.
Device Manajemen
Device manajemen berperan sebagai jembatan penggunaan hardware pada sistem operasi komputer sehingga hardware akan dikenali oleh software/aplikasi dan juga dikenali oleh sistem operasi yang berjalan pada komputer tersebut.
System Call
Sistem kerja dari kernel yang terakhir adalah sistem call. Pada system call ini, kernel akan mengatur hubungan antara sebuah software atau aplikasi dengan hardware.