Skip to main content
Si Ipung

follow us

Stay home but let your heart should be in a spirit of prayer.

Kernel adalah bagian penting dalam OS yang mengelola operasi perangkatmu

Kernel adalah komponen sentral dari sistem operasi yang mengelola operasi komputer dan perangkat keras anda. Yuk pelajari selengkapnya tentang kernel.

Pengertian Kernel

Kernel adalah program komputer pada inti komputer sistem operasi yang memiliki kontrol penuh atas segala sesuatu dalam sistem. Ini adalah "bagian dari kode sistem operasi yang selalu ada di memori",  dan memfasilitasi interaksi antara komponen perangkat keras dan perangkat lunak. Pada kebanyakan sistem, kernel adalah salah satu program pertama yang dimuat saat startup (setelah bootloader ). Ini menangani sisa permulaan serta permintaan memori, periferal , dan input / output (I / O) dari perangkat lunak , menerjemahkannya ke dalam pemrosesan datainstruksi untuk unit pemrosesan pusat .

Kode kritis kernel biasanya dimuat ke dalam area memori terpisah, yang dilindungi dari akses oleh program aplikasi atau bagian lain yang kurang penting dari sistem operasi. Kernel melakukan tugasnya, seperti menjalankan proses, mengelola perangkat keras seperti hard disk , dan menangani interupsi, di ruang kernel yang dilindungi ini . Sebaliknya, program aplikasi seperti browser, pengolah kata, atau pemutar audio atau video menggunakan area memori yang terpisah, ruang pengguna . Pemisahan ini mencegah data pengguna dan data kernel saling mengganggu dan menyebabkan ketidakstabilan dan kelambatan, serta mencegah program aplikasi yang tidak berfungsi agar tidak menabrak seluruh sistem operasi.

Antarmuka kernel adalah lapisan abstraksi tingkat rendah . Ketika suatu proses meminta layanan ke kernel, itu harus memanggil panggilan sistem , biasanya melalui fungsi pembungkus yang diekspos ke aplikasi ruang pengguna oleh perpustakaan sistem yang menyematkan kode perakitan untuk memasuki kernel setelah memuat register CPU dengan nomor syscall dan parameternya (misalnya, sistem operasi mirip UNIX menyelesaikan tugas ini menggunakan pustaka standar C ).

Ada desain arsitektur kernel yang berbeda. Kernel monolitik berjalan sepenuhnya dalam satu ruang alamat dengan CPU yang dijalankan dalam mode supervisor , terutama untuk kecepatan. Mikrokernel menjalankan sebagian besar tetapi tidak semua layanan mereka di ruang pengguna,  seperti yang dilakukan oleh proses pengguna, terutama untuk ketahanan dan modularitas . MINIX 3 adalah contoh penting dari desain mikrokernel. Sebaliknya, kernel Linux bersifat monolitik, meskipun juga modular, karena kernel Linux dapat menyisipkan dan menghapus modul kernel yang dapat dimuat saat runtime.

Komponen sentral dari sistem komputer ini bertanggung jawab untuk 'menjalankan' atau 'menjalankan' program. Kernel bertanggung jawab untuk memutuskan kapan saja dari sekian banyak program yang sedang berjalan yang harus dialokasikan ke prosesor atau prosesor.


Sejarah dan perkembangan kernel

Sebelum kernel, pengembang mengkodekan tindakan langsung ke prosesor , alih-alih mengandalkan OS untuk menyelesaikan interaksi antara perangkat keras dan perangkat lunak.

Upaya pertama untuk membuat OS yang meneruskan pesan melalui kernel adalah pada tahun 1969 dengan Sistem Multiprogram RC 4000. Programmer Per Brinch Hansen menemukan bahwa lebih mudah membuat nukleus dan kemudian membangun OS, daripada mengubah OS yang ada agar kompatibel dengan perangkat keras baru. Inti ini - atau kernel - berisi semua kode sumber untuk memfasilitasi komunikasi dan sistem pendukung, menghilangkan kebutuhan untuk memprogram secara langsung pada CPU.

Setelah RC 4000, peneliti Bell Labs mulai mengerjakan Unix, yang secara radikal mengubah pengembangan OS dan integrasi kernel. Tujuan dari Unix adalah untuk membuat utilitas yang lebih kecil yang melakukan tugas-tugas tertentu dengan baik daripada menggunakan utilitas sistem untuk melakukan banyak tugas. Dari sudut pandang pengguna, ini menyederhanakan pembuatan skrip shell yang menggabungkan alat sederhana.

Ketika adopsi Unix meningkat, pasar mulai melihat berbagai OS komputer mirip Unix, termasuk Berkeley Software Distribution ( BSD ), NeXTSTEP dan Linux . Struktur Unix mengabadikan gagasan bahwa lebih mudah membangun kernel di atas OS yang menggunakan kembali perangkat lunak dan memiliki perangkat keras yang konsisten, daripada mengandalkan sistem waktu bersama yang tidak memerlukan OS.

Unix membawa OS ke sistem yang lebih individual, tetapi para peneliti di Carnegie Mellon memperluas teknologi kernel. Dari 1985 hingga 1994, mereka memperluas pekerjaan pada kernel Mach. Tidak seperti BSD, kernel Mach adalah OS-agnostik dan mendukung banyak arsitektur prosesor. Peneliti membuatnya kompatibel dengan biner dengan perangkat lunak BSD yang sudah ada, memungkinkannya tersedia untuk penggunaan langsung dan percobaan lanjutan.

Tujuan asli Mach kernel adalah menjadi versi Unix yang lebih bersih dan versi yang lebih portabel dari kernel Accent interprocess communication (IPC) Carnegie Mellon. Seiring waktu, kernel menghadirkan fitur-fitur baru, seperti port dan program berbasis IPC, dan akhirnya berkembang menjadi mikrokernel.

Tak lama setelah kernel Mach, pada tahun 1986, pengembang Vrije Universiteit Amsterdam Andrew Tanenbaum merilis MINIX (mini-Unix) untuk kasus penggunaan pendidikan dan penelitian. Distribusi ini berisi struktur berbasis mikrokernel, multitasking, mode terlindungi, dukungan memori tambahan dan kompiler C American National Standards Institute (ANSI).

Kemajuan besar berikutnya dalam teknologi kernel terjadi pada tahun 1992, dengan dirilisnya kernel Linux. Pendiri Linus Torvalds mengembangkannya sebagai hobi, tetapi dia masih melisensikan kernel di bawah lisensi publik umum ( GPL ), menjadikannya open source. Ini pertama kali dirilis dengan 176.250 baris kode.

Mayoritas OS - dan kernelnya - dapat ditelusuri kembali ke Unix, tetapi ada satu pencilan: Windows. Dengan popularitas PC yang kompatibel dengan DOS dan IBM, Microsoft mengembangkan kernel NT dan mendasarkan OS-nya pada DOS, itulah sebabnya menulis perintah untuk Windows berbeda dari sistem berbasis Unix.


Fungsi Kernel

Kernel berfungsi pada abstraksi terendah dari OS dan merupakan penghubung langsung antara perangkat keras dan lapisan perangkat lunak. Beberapa fungsi dasar Kernel adalah:

Manajemen proses: Proses adalah sesuatu yang saat ini berjalan di sistem operasi. Karena setiap proses yang berjalan membutuhkan beberapa perangkat keras, disk, memori dan interupsi, dll., Kernellah yang memastikan sumber daya mana yang akan didistribusikan ke proses mana. Informasi antara proses ini dibagikan dan sinkronisasi yang tepat dilakukan. 

Manajemen perangkat: Salah satu fungsi inti OS adalah mengelola semua perangkat yang terkait dengan sistem Operasi. Ia mengatur semua perangkat keras, perangkat lunak, penyimpanan dan perangkat input / output. Kernel OS memastikan status dibagikan dan dilacak melalui driver dan pengontrol perangkat yang terdiri dari tiga jenis register; perintah, status dan data. 

Manajemen memori : Awalnya semua proses disimpan dalam disk dan memiliki ruang yang dialokasikan di sana, di mana itu seperti kumpulan proses. Proses mentransfernya dari ruang disk ke ruang utama tempat menjalankannya di latar depan adalah manajemen memori . Kernel memindahkan proses bolak-balik dengan cara yang sama dan melacak ruang yang dialokasikan. Keputusan untuk membebaskan atau menugaskan memori ke proses apapun dilakukan dalam manajemen memori. Tiga jenis pengalamatan yang dilakukan di sini adalah simbolis, relatif, dan fisik.

Penanganan interupsi : Tugas ini dilakukan oleh penangan interupsi Kernel. Interupsi adalah sinyal yang dikirim ke kernel atas permintaan oleh panggilan sistem. Suatu proses dapat terus bekerja sampai interupsi oleh proses lain dikirim dan diminta untuk dibawa ke memori utama. Alokasi tugas ini dilakukan oleh kernel yang meninjau interupsi yang paling sesuai.

Komunikasi I / O : Komunikasi perangkat keras, khususnya perangkat input dan output memerlukan kernel untuk bertindak sebagai perantara antara perangkat keras dan lapisan perangkat lunak. Dengan demikian, perangkat ini mengirim permintaan ke kernel yang kemudian mengirimkan kembali interupsi dan menjadwalkannya untuk dipertimbangkan dan dieksekusi sesuai dengan itu.


Keputusan desain kernel 

Perlindungan 

Pertimbangan penting dalam desain kernel adalah dukungan yang diberikannya untuk perlindungan dari kesalahan ( toleransi kesalahan ) dan dari perilaku jahat ( keamanan ). Kedua aspek ini biasanya tidak dibedakan secara jelas, dan penerapan perbedaan ini dalam desain kernel menyebabkan penolakan struktur hierarki untuk perlindungan . 

Mekanisme atau kebijakan yang disediakan oleh kernel dapat diklasifikasikan menurut beberapa kriteria, termasuk: statis (diberlakukan pada waktu kompilasi ) atau dinamis (diberlakukan pada waktu proses ); pre-emptive atau post-detection; sesuai dengan prinsip perlindungan yang mereka penuhi (misalnya, Denning  ); apakah mereka didukung perangkat keras atau berbasis bahasa; apakah mereka lebih merupakan mekanisme terbuka atau kebijakan yang mengikat; dan masih banyak lagi.

Dukungan untuk domain perlindungan hierarki biasanya diimplementasikan menggunakan mode CPU .

Banyak kernel menyediakan implementasi "kemampuan", yaitu objek yang disediakan untuk kode pengguna yang mengizinkan akses terbatas ke objek pokok yang dikelola oleh kernel. Contoh umum adalah penanganan file: file adalah representasi informasi yang disimpan di perangkat penyimpanan permanen. Kernel mungkin dapat melakukan banyak operasi yang berbeda, termasuk membaca, menulis, menghapus atau mengeksekusi, tetapi aplikasi tingkat pengguna mungkin hanya diizinkan untuk melakukan beberapa operasi ini (misalnya, mungkin hanya diizinkan untuk membaca file). Implementasi umum dari hal ini adalah kernel menyediakan objek untuk aplikasi (biasanya disebut "pegangan file") di mana aplikasi kemudian dapat menjalankan operasi, validitas yang diperiksa kernel pada saat operasi diminta.

Cara yang efisien dan sederhana untuk memberikan dukungan kemampuan perangkat keras adalah dengan mendelegasikan ke unit manajemen memori (MMU) tanggung jawab untuk memeriksa hak akses untuk setiap akses memori, mekanisme yang disebut pengalamatan berbasis kemampuan .  Kebanyakan arsitektur komputer komersial tidak memiliki dukungan MMU untuk kapabilitas.

Pendekatan alternatif adalah untuk mensimulasikan kemampuan menggunakan domain hierarki yang umumnya didukung. Dalam pendekatan ini, setiap objek yang dilindungi harus berada dalam ruang alamat yang tidak dapat diakses oleh aplikasi; kernel juga menyimpan daftar kemampuan dalam memori tersebut. Saat aplikasi perlu mengakses objek yang dilindungi oleh kapabilitas, ia melakukan panggilan sistem dan kernel kemudian memeriksa apakah kapabilitas aplikasi memberinya izin untuk melakukan tindakan yang diminta, dan jika diizinkan melakukan akses untuknya (baik secara langsung, atau dengan mendelegasikan permintaan ke proses tingkat pengguna lain). Biaya kinerja pengalihan ruang alamat membatasi kepraktisan pendekatan ini dalam sistem dengan interaksi kompleks antar objek,

Jika firmware tidak mendukung mekanisme perlindungan, maka dimungkinkan untuk mensimulasikan perlindungan pada tingkat yang lebih tinggi, misalnya dengan mensimulasikan kemampuan dengan memanipulasi tabel halaman , tetapi terdapat implikasi kinerja. Kurangnya dukungan perangkat keras mungkin tidak menjadi masalah, namun, untuk sistem yang memilih untuk menggunakan perlindungan berbasis bahasa.

Keputusan desain kernel yang penting adalah pilihan tingkat abstraksi di mana mekanisme dan kebijakan keamanan harus diterapkan. Mekanisme keamanan kernel memainkan peran penting dalam mendukung keamanan di tingkat yang lebih tinggi. 

Salah satu pendekatannya adalah dengan menggunakan firmware dan dukungan kernel untuk toleransi kesalahan (lihat di atas), dan membangun kebijakan keamanan untuk perilaku jahat di atas itu (menambahkan fitur seperti mekanisme kriptografi jika perlu), mendelegasikan beberapa tanggung jawab ke kompilator . Pendekatan yang mendelegasikan penegakan kebijakan keamanan ke compiler dan / atau level aplikasi sering disebut keamanan berbasis bahasa .

Kurangnya banyak mekanisme keamanan penting dalam sistem operasi arus utama saat ini menghambat implementasi kebijakan keamanan yang memadai pada tingkat abstraksi aplikasi. Faktanya, kesalahpahaman umum dalam keamanan komputer adalah bahwa kebijakan keamanan apa pun dapat diterapkan dalam aplikasi terlepas dari dukungan kernel.


Perlindungan berbasis perangkat keras atau bahasa 

Sistem komputer tipikal saat ini menggunakan aturan yang didukung perangkat keras tentang program apa yang diizinkan untuk mengakses data apa. Prosesor memantau eksekusi dan menghentikan program yang melanggar aturan, seperti proses pengguna yang mencoba menulis ke memori kernel. Dalam sistem yang tidak mendukung kapabilitas, proses diisolasi satu sama lain dengan menggunakan ruang alamat terpisah. Panggilan dari proses pengguna ke kernel diatur dengan mengharuskan mereka untuk menggunakan salah satu metode panggilan sistem yang dijelaskan di atas.

Pendekatan alternatif adalah dengan menggunakan perlindungan berbasis bahasa. Dalam sistem proteksi berbasis bahasa , kernel hanya akan mengizinkan kode untuk dieksekusi yang telah dihasilkan oleh kompilator bahasa tepercaya . Bahasa tersebut kemudian dapat dirancang sedemikian rupa sehingga tidak mungkin bagi programmer untuk menginstruksikannya melakukan sesuatu yang akan melanggar persyaratan keamanan.

Keuntungan dari pendekatan ini meliputi:

  • Tidak perlu ruang alamat terpisah. Beralih antar ruang alamat adalah operasi lambat yang menyebabkan banyak overhead, dan banyak pekerjaan pengoptimalan saat ini dilakukan untuk mencegah pengalihan yang tidak perlu dalam sistem operasi saat ini. Pengalihan sama sekali tidak diperlukan dalam sistem perlindungan berbasis bahasa, karena semua kode dapat beroperasi dengan aman di ruang alamat yang sama.
  • Fleksibilitas. Skema perlindungan apa pun yang dapat dirancang untuk diekspresikan melalui bahasa pemrograman dapat diimplementasikan menggunakan metode ini. Perubahan skema perlindungan (misalnya dari sistem hierarki ke sistem berbasis kemampuan) tidak memerlukan perangkat keras baru.

Kekurangannya meliputi:

  • Waktu pengaktifan aplikasi lebih lama. Aplikasi harus diverifikasi ketika dimulai untuk memastikan bahwa mereka telah dikompilasi oleh kompilator yang benar, atau mungkin perlu dikompilasi ulang baik dari kode sumber atau dari bytecode .
  • Sistem tipe tidak fleksibel . Pada sistem tradisional, aplikasi sering melakukan operasi yang bukan tipe aman . Operasi semacam itu tidak dapat diizinkan dalam sistem perlindungan berbasis bahasa, yang berarti bahwa aplikasi mungkin perlu ditulis ulang dan mungkin, dalam beberapa kasus, kehilangan kinerja.
Contoh sistem dengan perlindungan berbasis bahasa termasuk JX dan Microsoft 's Singularity .


Proses kerjasama 

Edsger Dijkstra membuktikan bahwa dari sudut pandang logis, operasi kunci dan buka kunci atom yang beroperasi pada semaphore biner cukup primitif untuk mengekspresikan fungsionalitas apa pun dari kerja sama proses. Namun pendekatan ini umumnya dianggap kurang dalam hal keamanan dan efisiensi, sedangkan pendekatan penyampaian pesan lebih fleksibel. Sejumlah pendekatan lain (baik tingkat yang lebih rendah atau lebih tinggi) juga tersedia, dengan banyak kernel modern menyediakan dukungan untuk sistem seperti memori bersama dan panggilan prosedur jarak jauh .


Manajemen perangkat I / O 

Ide tentang kernel di mana perangkat I / O ditangani secara seragam dengan proses lain, sebagai proses kerja sama paralel, pertama kali diusulkan dan diimplementasikan oleh Brinch Hansen (meskipun ide serupa disarankan pada tahun 1967 ). Dalam uraian Hansen tentang ini, proses "umum" disebut proses internal , sedangkan perangkat I / O disebut proses eksternal . 

Mirip dengan memori fisik, mengizinkan aplikasi mengakses langsung ke port dan register pengontrol dapat menyebabkan pengontrol tidak berfungsi, atau sistem macet. Dengan ini, tergantung pada kerumitan perangkat, beberapa perangkat dapat menjadi sangat rumit untuk diprogram, dan menggunakan beberapa pengontrol yang berbeda. Karena itu, penting untuk menyediakan antarmuka yang lebih abstrak untuk mengelola perangkat. Antarmuka ini biasanya dilakukan oleh driver perangkatatau lapisan abstraksi perangkat keras. Seringkali, aplikasi memerlukan akses ke perangkat ini. Kernel harus memelihara daftar perangkat ini dengan menanyakan sistem untuk mereka dengan cara tertentu. Ini dapat dilakukan melalui BIOS, atau melalui salah satu dari berbagai bus sistem (seperti PCI / PCIE, atau USB). Ketika aplikasi meminta operasi pada perangkat (seperti menampilkan karakter), kernel perlu mengirim permintaan ini ke driver video yang aktif saat ini. Pengemudi video, pada gilirannya, perlu melaksanakan permintaan ini. Ini adalah contoh komunikasi antar proses (IPC).


Jenis Kernel

Secara umum ada lima jenis Kernel. Mereka:

1. Kernel Monolitik

Monolitik Kernel adalah kernel di mana layanan pengguna dan layanan kernel diimplementasikan dalam ruang memori yang sama, yaitu memori yang berbeda untuk layanan pengguna dan layanan kernel tidak digunakan dalam kasus ini. Dengan demikian, ukuran Kernel bertambah dan ini, pada gilirannya, meningkatkan ukuran Sistem Operasi. Karena tidak ada User Space dan Kernel Space yang terpisah, maka eksekusi proses akan lebih cepat di Monolithic Kernels.

Keuntungan:

  • Ini menyediakan penjadwalan CPU, penjadwalan memori, manajemen file melalui panggilan Sistem saja.
  • Eksekusi prosesnya cepat karena tidak ada ruang memori terpisah untuk pengguna dan kernel.

Kekurangan:

  • Jika ada layanan yang gagal, maka itu menyebabkan kegagalan sistem.
  • Jika layanan baru akan ditambahkan maka seluruh Sistem Operasi perlu dimodifikasi.


2. Mikrokernel

Microkernel berbeda dari kernel Monolitik karena dalam Microkernel, layanan pengguna dan layanan kernel diimplementasikan ke dalam ruang yang berbeda, yaitu kami menggunakan Ruang Pengguna dan Ruang Kernel untuk Mikrokernel. Karena kami menggunakan Ruang Pengguna dan Ruang Kernel secara terpisah, maka itu mengurangi ukuran Kernel dan ini, pada gilirannya, mengurangi ukuran Sistem Operasi.

Karena kami menggunakan ruang yang berbeda untuk layanan pengguna dan layanan kernel, maka komunikasi antara aplikasi dan layanan dilakukan dengan bantuan penguraian pesan dan ini, pada gilirannya, mengurangi kecepatan eksekusi.

Keuntungan:

  • Jika layanan baru akan ditambahkan maka itu dapat dengan mudah ditambahkan.

Kekurangan:

  • Karena kami menggunakan Ruang Pengguna dan Ruang Kernel secara terpisah, sehingga komunikasi di antara keduanya dapat mengurangi waktu eksekusi secara keseluruhan.


3. Kernel Hibrid

Hybrid kernel adalah kombinasi dari Monolithic Kernel dan Microkernel. Itu memanfaatkan kecepatan Monolithic Kernel dan modularitas Microkernel.

Kernel hibrid adalah kernel mikro yang memiliki beberapa kode "tidak penting" di ruang kernel agar kode dapat berjalan lebih cepat daripada di ruang pengguna. Jadi, beberapa layanan seperti tumpukan jaringan atau sistem file dijalankan di ruang Kernel untuk mengurangi overhead kinerja, tetapi tetap menjalankan kode kernel sebagai server di ruang pengguna.


4. Nanokernel

Dalam Nanokrnel, seperti namanya, seluruh kode kernel sangat kecil yaitu kode yang dieksekusi dalam mode privileged dari perangkat keras sangat kecil. Istilah nanokernel digunakan untuk menggambarkan kernel yang mendukung resolusi jam nanodetik.


5. Exokernel

Exo kernel adalah kernel Sistem Operasi yang dikembangkan oleh paralel MIT dan grup Sistem Operasi Terdistribusi. Di sini, di kernel jenis ini, perlindungan sumber daya dipisahkan dari manajemen dan ini, pada gilirannya, memungkinkan kita untuk melakukan penyesuaian khusus aplikasi.

Di Exokernel, idenya bukanlah untuk mengimplementasikan semua abstraksi. Tetapi idenya adalah untuk memaksakan sesedikit mungkin abstraksi dan dengan melakukan itu abstraksi harus digunakan hanya jika diperlukan. Jadi, tidak ada abstraksi paksa yang akan ada di Exokernel dan ini adalah fitur yang membuatnya berbeda dari Monolithic Kernel dan Microkernel. Namun kekurangannya adalah desainnya yang rumit. Desain Exokernel sangat kompleks.


Kernel adalah komponen penting dalam sebuah sistem operasi, semoga bermnafaat jangan lupa bagikan artikel ini.


You Might Also Like:

Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar