menu

Kernel Dalam Sistem Oprasi (OS)

Dalam ilmu komputer, 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 diatas 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 denga 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.

Kernel monolitik

Pendekatan kernel monolitik didefinisikan sebagai sebuah antarmuka virtual yang berada pada tingkat tinggi di atas perangkat keras, dengan sekumpulan primitif atau system call untuk mengimplementasikan layanan-layanan sistem operasi, seperti halnya manajemen proses, konkurensi (concurrency), dan manajemen memori pada modul-modul kernel yang berjalan di dalam mode supervisor.

Meskipun jika setiap modul memiliki layanan operasi-operasi tersebut terpisah dari modul utama, integrasi kode yang terjadi di dalam monolithic kernel sangatlah kuat, dan karena semua modul berjalan di dalam address space yang sama, sebuah bug dalam salah satu modul dapat merusak keseluruhan sistem. Akan tetapi, ketika implementasi dilakukan dengan benar, integrasi komponen internal yang sangat kuat tersebut justru akan mengizinkan fitur-fitur yang dimiliki oleh sistem yang berada di bawahnya dieksploitasi secara efektif, sehingga membuat sistem operasi dengan monolithic kernel sangatlah efisien—meskipun sangat sulit dalam pembuatannya.

Pada sistem operasi modern yang menggunakan monolithic kernel, seperti halnya Linux, FreeBSD, Solaris, dan Microsoft Windows, dapat memuat modul-modul yang dapat dieksekusi pada saat kernel tersebut dijalankan sehingga mengizinkan ekstensi terhadap kemampuan kernel sesuai kebutuhan, dan tentu saja dapat membantu menjaga agar kode yang berjalan di dalam ruangan kernel (kernel-space) seminim mungkin.

Di bawah ini ada beberapa sistem operasi yang menggunakan Monolithic kernel:

Mikrokernel

Pendekatan mikrokernel berisi sebuah abstraksi yang sederhana terhadap hardware, dengan sekumpulan primitif atau system call yang dapat digunakan untuk membuat sebuah sistem operasi agar dapat berjalan, dengan layanan-layanan seperti manajemen thread, komunikasi antar address space, dan komunikasi antar proses. Layanan-layanan lainnya, yang biasanya disediakan oleh kernel, seperti halnya dukungan jaringan, pada pendekatan microkernel justru diimplementasikan di dalam ruangan pengguna (user-space), dan disebut dengan server.

Server atau disebut sebagai peladen adalah sebuah program, seperti halnya program lainnya. Server dapat mengizinkan sistem operasi agar dapat dimodifikasi hanya dengan menjalankan program atau menghentikannya. Sebagai contoh, untuk sebuah mesin yang kecil tanpa dukungan jaringan, server jaringan (istilah server di sini tidak dimaksudkan sebagai komputer pusat pengatur jaringan) tidak perlu dijalankan. Pada sistem operasi tradisional yang menggunakan monolithic kernel, hal ini dapat mengakibatkan pengguna harus melakukan rekompilasi terhadap kernel, yang tentu saja sulit untuk dilakukan oleh pengguna biasa yang awam.

Dalam teorinya, sistem operasi yang menggunakan microkernel disebut jauh lebih stabil dibandingkan dengan monolithic kernel, karena sebuah server yang gagal bekerja, tidak akan menyebabkan kernel menjadi tidak dapat berjalan, dan server tersebut akan dihentikan oleh kernel utama. Akan tetapi, dalam prakteknya, bagian dari system state dapat hilang oleh server yang gagal bekerja tersebut, dan biasanya untuk melakukan proses eksekusi aplikasi pun menjadi sulit, atau bahkan untuk menjalankan server-server lainnya.

Sistem operasi yang menggunakan microkernel umumnya secara dramatis memiliki kinerja di bawah kinerja sistem operasi yang menggunakan monolithic kernel. Hal ini disebabkan oleh adanya overhead yang terjadi akibat proses input/output dalam kernel yang ditujukan untuk mengganti konteks (context switch) untuk memindahkan data antara aplikasi dan server.

Beberapa sistem operasi yang menggunakan microkernel:

Kernel hibrida

Kernel hibrida aslinya adalah mikrokernel yang memiliki kode yang tidak menunjukkan bahwa kernel tersebut adalah mikrokernel di dalam ruangan kernel-nya. Kode-kode tersebut ditaruh di dalam ruangan kernel agar dapat dieksekusi lebih cepat dibandingkan jika ditaruh di dalam ruangan user. Hal ini dilakukan oleh para arsitek sistem operasi sebagai solusi awal terhadap masalah yang terjadi di dalam mikrokernel: kinerja.

Beberapa orang banyak yang bingung dalam membedakan antara kernel hibrida dan kernel monolitik yang dapat memuat modul kernel setelah proses booting, dan cenderung menyamakannya. Antara kernel hibrida dan kernel monolitik jelas berbeda. Kernel hibrida berarti bahwa konsep yang digunakannya diturunkan dari konsep desain kernel monolitik dan mikrokernel. Kernel hibrida juga memiliki secara spesifik memiliki teknologi pertukaran pesan (message passing) yang digunakan dalam mikrokernel, dan juga dapat memindahkan beberapa kode yang seharusnya bukan kode kernel ke dalam ruangan kode kernel karena alasan kinerja.

Di bawah ini adalah beberapa sistem operasi yang menggunakan kernel hibrida:

Exokernel

Sebenarnya, Exokernel bukanlah pendekatan kernel sistem operasi yang umum—seperti halnya microkernel atau monolithic kernel yang populer, melainkan sebuah struktur sistem operasi yang disusun secara vertikal.

Ide di balik exokernel adalah untuk memaksa abstraksi yang dilakukan oleh developer sesedikit mungkin, sehingga membuat mereka dapat memiliki banyak keputusan tentang abstraksi hardware. Exokernel biasanya berbentuk sangat kecil, karena fungsionalitas yang dimilikinya hanya terbatas pada proteksi dan penggandaan sumber daya.

Kernel-kernel klasik yang populer seperti halnya monolithic dan microkernel melakukan abstraksi terhadap hardware dengan menyembunyikan semua sumber daya yang berada di bawah hardware abstraction layer atau di balik driver untuk hardware. Sebagai contoh, jika sistem operasi klasik yang berbasis kedua kernel telah mengalokasikan sebuah lokasi memori untuk sebuah hardware tertentu, maka hardware lainnya tidak akan dapat menggunakan lokasi memori tersebut kembali.

Exokernel mengizinkan akses terhadap hardware secara langsung pada tingkat yang rendah: aplikasi dan abstraksi dapat melakukan request sebuah alamat memori spesifik baik itu berupa lokasi alamat physical memory dan blok di dalam hard disk. Tugas kernel hanya memastikan bahwa sumber daya yang diminta itu sedang berada dalam keadaan kosong—belum digunakan oleh yang lainnya—dan tentu saja mengizinkan aplikasi untuk mengakses sumber daya tersebut. Akses hardware pada tingkat rendah ini mengizinkan para programmer untuk mengimplementasikan sebuah abstraksi yang dikhususkan untuk sebuah aplikasi tertentu, dan tentu saja mengeluarkan sesuatu yang tidak perlu dari kernel agar membuat kernel lebih kecil, dan tentu saja meningkatkan performa.

Exokernel biasanya menggunakan library yang disebut dengan libOS untuk melakukan abstraksi. libOS memungkinkan para pembuat aplikasi untuk menulis abstraksi yang berada pada level yang lebih tinggi, seperti halnya abstraksi yang dilakukan pada sistem operasi tradisional, dengan menggunakan cara-cara yang lebih fleksibel, karena aplikasi mungkin memiliki abstraksinya masing-masing. Secara teori, sebuah sistem operasi berbasis Exokernel dapat membuat sistem operasi yang berbeda seperti halnya Linux, UNIX, dan Windows dapat berjalan di atas sistem operasi tersebut.



  • Fungsi Kernel Dalam OS

Dalam komputer, kernel merupakan komponen utama sistem komputer yang paling penting, yang merupakan jembatan antara aplikasi dan pengolahan data yang sebenarnya dilakukan pada bagian hardware. Tanggung jawab Kernel termasuk mengelola sumber daya sistem (komunikasi antara hardware dan komponen software). Biasanya sebagai komponen dasar dari suatu sistem operasi, kernel dapat menyediakan lapisan abstraksi terendah-level untuk sumber daya (terutama prosesor dan perangkat Input Output) bahwa perangkat lunak aplikasi harus terkontrol untuk melakukan fungsinya. Kernel biasanya membuat fasilitas tersebut tersedia untuk proses aplikasi melalui inter-process communication mechanisms dan system calls.


Tugas sistem operasi dilakukan secara berbeda oleh kernel yang berbeda pula, tergantung pada desain dan implementasi. Meskipun kernel monolitik mengeksekusi semua kode sistem operasi di ruang alamat yang sama untuk meningkatkan kinerja sistem, microkernels menjalankan sebagian besar layanan pengguna sistem operasi di ruang sebagai server, yang bertujuan untuk meningkatkan pemeliharaan dan modularitas dari sistem operasi.
Fungsi utama kernel adalah untuk mengelola sumber daya komputer dan memungkinkan program lain untuk menjalankan dan menggunakan sumber daya koputer tersebut. Biasanya, sumber daya komputer terdiri dari:


Central Processing Unit (CPU/prosesor)
Ini adalah bagian paling sentral dari sebuah sistem komputer, bertanggung jawab untuk menjalankan atau mengeksekusi program di atasnya. Kernel bertanggung jawab untuk memutuskan setiap saat dimana banyak program yang berjalan serta harus dialokasikan ke prosesor (yang biasanya masing-masing prosesor hanya dapat menjalankan satu program pada satu waktu)


Memori komputer.
Memori digunakan untuk menyimpan instruksi program baik dan data. Biasanya, berdua harus hadir dalam memori agar program untuk mengeksekusi. Seringkali beberapa program akan menginginkan akses ke memori, sering menuntut memori lebih dari komputer telah tersedia. Kernel bertanggung jawab untuk menentukan memori memilih proses yang dapat menggunakan, dan menentukan apa yang harus dilakukan bila tidak cukup kapasitas memori yang tersedia.


Input / Output (I / O)
Perangkat-perangkat komputer I/O, seperti keyboard, mouse, disk drive, printer, monitor, dll kernel mengalokasikan permintaan dari aplikasi untuk melakukan I/O ke perangkat yang sesuai (atau pemilihan perangkat, misal dalam kasus pemilihan file pada disk atau menampilakan windows pada monitor) dan memberikan metode mudah untuk menggunakan perangkat (biasanya diabstraksikan ke titik di mana aplikasi tidak perlu tahu rincian pelaksanaan perangkat).
Kernel juga biasanya menyediakan metode untuk sinkronisasi dan komunikasi antara proses (disebut antar-proses komunikasi atau IPC inter-process communication).
Kernel dapat mengimplementasikan fitur-fitur ini sendiri, atau bergantung pada beberapa proses dijalankan untuk menyediakan fasilitas untuk proses lainnya, meskipun dalam hal ini harus menyediakan beberapa cara untuk memungkinkan proses IPC untuk mengakses fasilitas yang disediakan oleh masing-masing lain.
Akhirnya, kernel harus memberikan program yang berjalan dengan metode untuk membuat permintaan untuk mengakses fasilitas ini.

Contoh implementasi kernel

Windows

Pada sistem operasi Windows, kernel ditangani oleh file kernel32.dll. Kernel ini menangani manajemen memori, operasi masukan / keluaran dan interrupt. Ketika boot Windows, kernel32.dll di-load ke dalam spasi protected memory sehingga spasi memorinya tidak digunakan oleh aplikasi lain. Apabila ada aplikasi yang mencoba mengambil spasi memori kernel32.dll, akan muncul pesan kesalahan "invalid page fault".

Pengertian GNU Kernel Open Source

GNU/Linux adalah sebuah sistem operasi yang diciptakan oleh Linus Benedict Torvalds seorang mahasiswa Universitas Helsinki Finlandia di tahun 1991.Proyek GNU ini diluncurkan pada tahun 1984 untuk mengembangkan sebuah sistem operasi lengkap mirip UNIX berbasis perangkat lunak bebas: yaitu sistem GNU (GNU merupakan akronim berulang dari “GNU’s Not Unix”; GNU dilafalkan dengan “genyu”). Varian dari sistem operasi GNU, yang menggunakan kernel Linux, dewasa ini telah digunakan secara meluas. Walau pun sistem ini sering dirujuk sebagai “Linux”, sebetulnya lebih tepat jika disebut sistem GNU/Linux. Ada salah satu fitur atau kemampuan yang sangat menarik dari GNU/Linux yang belum ada pada sistem operasi populer lainnya, yaitu menjalankan sistem operasi dan aplikasi lengkap tanpa menginstalnya di hard disk. Dengan cara ini dengan mudah kita dapat menggunakan GNU/Linux di komputer orang lain karena tak perlu menginstalnya (tak perlu mengutak-atik hard disk dan partisinya). Sejarah sistem operasi Linux berkaitan erat dengan proyek GNU, proyek program bebas freeware terkenal diketuai oleh Richard Stallman. Proyek GNU diawali pada tahun 1983 untuk membuat sistem operasi seperti Unix lengkap — kompiler, utiliti aplikasi, utiliti pembuatan dan seterusnya — diciptakan sepenuhnya dengan perangkat lunak bebas. Pada tahun 1991, pada saat versi pertama kerangka Linux ditulis, proyek GNU telah menghasilkan hampir semua komponen sistem ini — kecuali kernel. Torvalds dan pembuat kernel seperti Linux menyesuaikan kernel mereka supaya dapat berfungsi dengan komponen GNU, dan seterusnya mengeluarkan Sistem operasi yang cukup berfungsi. Oleh karena itu, Linux melengkapi ruang terakhir dalam rancangan GNU.

open source adalah sistem pengembangan yang tidak dikoordinasi oleh suatu orang/lembaga pusat, tetapi oleh para pelaku yang bekerja sama dengan memanfaatkan kode sumber (source-code) yang tersebar dan tersedia bebas (biasanya menggunakan fasilitas komunikasi internet). Pola pengembangan ini mengambil model ala bazaar, sehingga pola Open Source ini memiliki ciri bagi komunitasnya yaitu adanya dorongan yang bersumber dari budaya memberi, yang artinya ketika suatu komunitas menggunakan sebuah program Open Source dan telah menerima sebuah manfaat kemudian akan termotivasi untuk menimbulkan sebuah pertanyaan apa yang bisa pengguna berikan balik kepada orang banyak. Pengembangan Linux bersifat open source artinya source code dari aplikasi pembentuk sistem dan aplikasi lainnya diberikan secara terbuka sehingga setiap orang dapat melakukan modifikasi atau kustomisasi sesuai dengan kebutuhan masing-masing.

Pola Open Source lahir karena kebebasan berkarya, tanpa intervensi berpikir dan mengungkapkan apa yang diinginkan dengan menggunakan pengetahuan dan produk yang cocok. Kebebasan menjadi pertimbangan utama ketika dilepas ke publik. Komunitas yang lain mendapat kebebasan untuk belajar, mengutak-ngatik, merevisi ulang, membenarkan ataupun bahkan menyalahkan, tetapi kebebasan ini juga datang bersama dengan tanggung jawab, bukan bebas tanpa tanggung jawab. Pada intinya konsep sumber terbuka adalah membuka “kode sumber” dari sebuah perangkat lunak. Konsep ini terasa aneh pada awalnya dikarenakan kode sumber merupakan kunci dari sebuah perangkat lunak. Dengan diketahui logika yang ada di kode sumber, maka orang lain semestinya dapat membuat perangkat lunak yang sama fungsinya. Sumber terbuka hanya sebatas itu. Artinya, dia tidak harus gratis. Definisi sumber terbuka yang asli adalah seperti tertuang dalam OSD (Open Source Definition)/Definisi sumber terbuka. Pergerakan perangkat lunak bebas dan sumber terbuka saat ini membagi pergerakannya dengan pandangan dan tujuan yang berbeda. Sumber terbuka adalah pengembangan secara metodelogi, perangkat lunak tidak bebas adalah solusi suboptimal. Bagi pergerakan perangkat lunak bebas, perangkat lunak tidak bebas adalah masalah sosial dan perangkat lunak bebas adalah solusi

0 komentar:

Posting Komentar