Minggu, 08 April 2018

Kernel dan Kernel Linux

Nama                : Made Andika Verdiana
Nim                  : 1605551120
Mata Kuliah     : Network Operating Sistem
Dosen               : I Putu Agus Eka Pratama, ST., MT
Teknologi Informasi / Fakultas Teknik / Universitas Udayana


Pendahuluan
Matakuliah Network Operating System merupakan matakuliah yang membahas kernel secara umum pada semua OS, serta praktek sederhana mempelajari sumber kode Kernel Linux versi awal (1991).

Kernel
Kernel merupakan program komputer yang menjadi inti dari sebuah sistem operasi komputer, dengan kontrol terhadap segala hal atas sistem tersebut. Pada dasarnya, 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.

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

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. Di bawah ini ada beberapa sistem operasi yang menggunakan Monolithic kernel:
  • Kernel sistem operasi UNIX tradisional, seperti halnya kernel dari sistem operasi UNIX keluarga BSD (NetBSD, BSD/I, FreeBSD, dan lainnya).
  • Kernel sistem operasi GNU/Linux, Linux.
  • Kernel sistem operasi Windows (versi 1.x hingga 4.x; kecuali Windows NT).

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. Beberapa sistem operasi yang menggunakan microkernel:
  • IBM AIX, sebuah versi UNIX dari IBM
  • Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi
  • Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP, dan Mac OS/X
  • Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi
  • Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device, embedded device, dan PDA Phone.

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. Di bawah ini adalah beberapa sistem operasi yang menggunakan kernel hibrida:
  • BeOS, sebuah sistem operasi yang memiliki kinerja tinggi untuk aplikasi multimedia.
  • Novell NetWare, sebuah sistem operasi yang pernah populer sebagai sistem operasi jaringan berbasis IBM PC dan kompatibelnya.
  • Microsoft Windows NT (dan semua keturunannya).
  • Android


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

Linux Kernel
Secara umum, kernel memiliki fungsi melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman. Dimana, akses ke perangkat keras secara langsung merupakan masalah yang kompleks. Karena itu, kernel biasanya mengimplementasikan sekumpulan abstraksi hardware.

Linux Kernel 0.01 Walkthrough
1.             Direktori boot dari Linux 0.01 berisi head.s dan boot.s.
boot.s
Bootstrap loader dijalankan dari startup BIOS
head.s
Merupakan blok startup 32-bit untuk linux. Panggilan init _main ()

2.             Direktori fs dari Linux 0.01 berisi fungsi-fungsi sistem file
bitmap.c
new_block(), free_block(), new_inode(), free_inode()
block_dev.c
block_write(), block_read(), ll_rw_block()
buffer.c
get_hash_table(), getblk(), sys_sync(), brelse(), bread(), buffer_init()
char_dev.c
rw_char()
exec.c
read_head(), read_ind(), read_area(), do_execve()
fcntl.c
sys_dup2(), sys_dup(), sys_fcntl()
file_dev.c
file_read(), file_write()
file_table.c
file_table[]
inode.c
sync_inodes(), bmap(), create_block(), iput(), get_empty_inode(), get_pipe_inode(), iget()
ioctl.c
sys_ioctl()
namei.c
namei(), open_namei(), sys_mkdir(), sys_rmdir(), sys_unlink(), sys_link()
open.c
sys_utime(), sys_access(), sys_chdir(), sys_chroot(), sys_chmod(), sys_chown(), sys_open(), sys_creat(), sys_close()
pipe.c
read_pipe(), write_pipe(), sys_pipe()
read_write.c
sys_lseek(), sys_read(), sys_write()
stat.c
sys_stat(), sys_fstat()
super.c
superblock[], do_mount(), mount_root()
truncate.c
truncate()
tty_ioctl.c
tty_ioctl()

3.             Daftar file pada linux kerner 0.01
asm.s
Perakit tingkat rendah untuk interupsi perangkat keras (kecuali pengecualian halaman, ditangani oleh mm)
console.c
Fungsi output terminal VT sederhana (konsol)
exit.c
Fungsi sistem exit dan waitpid
fork.c
Fungsi sistem fork
hd.c
Berfungsi sebagai hard disk interrupt handler, hard disk I / O
keyboard.c
Berfungsi sebagai keyboard interrupt handler
mktime.c
Versi sederhana dari mktime untuk digunakan di kernel
panic.c
Fungsi panik kernel sederhana
printk.c
Versi Kernel dari printf yang mempertahankan register FS
rs_io.s
RS-232 (serial) interrupt handler
sys.c
Fungsi sistem
system_call.c
Antarmuka pemanggilan sistem
traps.c
Trap handler - mencetak informasi proses dan informasi berakhir
tty_io.c
tty interface untuk serial dan konsol I / O
vsprintf.c
Versi kernel dari vsprintf ()

4.             Direktori mm Linux 0.01 berisi fungsi-fungsi manajemen memori.
page.s
Page fault exception handler
memory.c
Paged memory management functions. get_free_page(), free_page(), free_page_tables(), copy_page_tables(), put_page(), un_wp_page(), do_wp_page(), write_verify(), do_no_page(), calc_mem()

Referensi
[1] I Putu Agus Eka Pratama,“PPT Matakuliah Network Operating System Pertemuan 8 : Kernel dan Kernel Linux ” 2018.

0 komentar:

Posting Komentar