MATERI PERTEMUAN 8 (KERNEL DAN KERNEL LINUX)

Nama          : I Gede Ary Suta Sanjaya
Nim             : 1605551006
Dosen         : I Putu Agus Eka Pratama ST., MT.
Matakuliah  : Network Operating System
Kampus      : Universitas Udayana, Fakultas Teknik, Program Studi Teknologi Informasi

Pada artikel kali ini, saya akan menjelaskan mengenai  apa itu kernel dan apa itu kernel Linux. Topik pembahasan pada artikel ini mencangkup definisi kernel, bagian-bagian kernel, beserta kernel Linux dan penggambaran sistem yang terdapat pada kernel Linux dan praktek membedah Kernel Linux.

KERNEL
Definisi
Kernel merupakan program komputer yang menjadi inti dari sebuah sistem operasi komputer, dengan kontrol terhadap segala hal atas sistem tersebut. Pada kebanyakan sistem, kernel merupakan salah satu dari program yang dijalankan dalam urutan pertama saat komputer dinyalakan. Kernel menangani fungsi-fungsi selanjutnya atas proses penyiapan komputer dari sejak komputer dinyalakan seperti menangani layanan input/output dari program lain, menerjemahkanya ke dalam instruksi-instruksi untuk dieksekusi oleh prosesor. Kernel juga menangani perangkat kerja lain seperti memori, papan ketik, tetikus, monitor, printer, speaker, serta perangkat-perangkat lainnya.

Dapat dikatakan bahwa kernel merupakan inti dari sistem operasi dan bagian yang pertama kali di-load ke memori ketika sistem mulai dan tetap berjalan sampai sistem berhenti. Servisnya diperlukan oleh bagian dari sistem operasi lainnya dan program aplikasi. Kernel menjalankan servis dasar dari sistem operasi seperti manajemen memori, manajemen proses, manajemen file, dan manajemen I/O..

Adapun, kernel memiliki fungsi-fungs sebagai berikut :

1.   Melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman.
2.   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.

3.   Membantu eksekusi aplikasi dan mendukungnya dengan fitur abstraksi hardware.

Bagian-bagian Kernel
Para arsitek sistem operasi mengembangkan kernel sistem operasi yang pada akhirnya terbagi menjadi empat bagian yang secara desain berbeda, sebagai berikut:

1.  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.

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.

2.  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.

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.

3.  Kernel hibrida
Kernel hibrida adalah pendekatan desain microkernel yang dimodifikasi. Pada hybrid kernel, terdapat beberapa tambahan kode di dalam ruangan kernel untuk meningkatkan performanya.

Kernel hibrida aslinya merupakan 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.

4.  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.

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 Linux
Definisi
Kernel Linux adalah kernel yang digunakan dalam sistem operasi GNU/Linux. Kernel ini merupakan turunan dari keluarga sistem operasi UNIX, dirilis dengan menggunakan lisensi GNU General Public License (GPL), dan dikembangkan oleh pemrogram di seluruh dunia. Linux merupakan contoh utama dari perangkat lunak bebas dan sumber terbuka.

Kernel Linux dirilis di bawah Lisensi Publik Umum GNU versi 2 (GPLv2) (dengan bermacam-macam Firmware dengan lisensi tidak gratis yang bervariatif[butuh rujukan]), dan dikembangkan oleh kontributor dari seluruh dunia. Diskusi perkembangan dari hari ke hari dilakukan di Mailing List Linux Kernel.


Kernel Linux pada awalnya dibayangkan dan kemudian dibuat oleh murid Ilmu Komputer berkebangsaan Finlandia, Linus Torvalds pada tahun 1991. Pengembang dan Pengguna Linux bertambah dengan cepat, lalu mereka mengadaptasi kode dari proyek-proyek software gratis untuk digunakan sebagai Sistem Operasi baru. Linux kernel telah menerima kontribusi dari ribuan programmer. Banyak Distribusi Linux telah dirilis berdasarkan Kernel Linux.

Penggambaran sistem pada Kernel Linux dapat digambarkan sebagai berikut



Praktek Membedah Linux
Pada praktek kali ini, akan dilakukan pembedahan Kernel Linux. Pembedahan hanya dilakukan sebatas pengecekan isi source code pada kernel Linux versi awal. Terdapat beberapa direktori yang akan dibahas sebagai berikut.

1. Direktori boot 
Terdapat 2 file pada dikertori boot yaitu boot.s dan head.s. Adapun penjelasan mengenai file yaitu sebagai berikut.
-  boot.s   = file yang berfungsi untuk menjalankan startup BIOS. 
-  head.s  = file yang berfungsi sebagai kode startup 32-bit pada Linux. 

2. Direktori lib
Terdapat 11 file pada ditektori lib yaitu _exit.c, close.c, ctype.c, dup.c, errno.c, execve.c, open.c, setsid.c, string.c, wait.c, dan write.c. Adapun penjelasan mengenai file yaitu sebagai berikut.
- _exit.c berfungsi menjalan fungsi _exit(int exit_code) 
- close.c berfungsi menjalankan fungsi syscall1(int,close,int,fd)
- ctype.c berfungsi menggunakan library ctype.h yang berfungsi untuk menguji dan mengkonversi karakter.
- dup.c berfungsi menjalankan fungsi yang sama dengan file close.c namun parameternya berbeda yaitu syscall1(int,dup,int,fd)
- execve.c berfungsi menjalankan fungsi _syscall3(int,execve,const char*, file, char **, argv, char **, envp)
- open.c berfungsi menggunakan library stdarg. yang berfungsi mengakses berbagai jumlah argumen dilewatkan ke fungsi. File ini menjalankan fungsi open.
- setsid.c berfungsi menjalankan fungsi _syscall0(pid_t,setsid)
- string.c berfungsi menggunakan library string.h dan mendeklarasikan fungsi extern, inline, dan __LIBRARY__ 
- wait.c berfungsi menggunakan library sys/wait.h dan menjalankan fungsi wait.

- write.c berfungsi menjalankan fungsi _syscall3(int,write,intfd,const char*, buf, off_t, count)


Referensi 
[1] I Putu Agus Eka Pratama. "PPT Network Operating System Pertemuan ke-8". 2018.
Previous
Next Post »