Upload
others
View
75
Download
0
Embed Size (px)
Citation preview
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
1. Sebelum melakukan kompilasi kernel module, terlebih dahulu kita harus memasang
paket yang dibutuhkan antara lain : library header sesuai versi kernel Linux, gcc
(GNU C Compiler) dan make dengan perintah :
sudo apt-get install linux-headers-general make gcc
2. Buat file hello.c dengan editor favorit anda dengan isi sebagai berikut
hello.c
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world Mr. Praktikan\n");
return 0;
}
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr. Praktikan\n");
}
module_init(hello_start);
module_exit(hello_end);
Penjelasan source code :
Pada kode hello.c tersebut terdapat dua fungsi callback yang dipanggil yaitu
module_init() dan module_exit(). Fungsi callback module_init()
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
akan dipanggil ketika kernel module dipasang. Selanjutnya, fungsi
hello_start() sebagai parameter dari module_init() akan dieksekusi.
Pada hello_start() dilakukan pencetakan string dengan fungsi printk().
Prosedur yang sama berlaku untuk fungsi module_exit() yang dipanggil ketika
sebuah kernel module dilepas.
3. Buat sebuah file bernama Makefile di direktori yang sama dengan hello.c. Makefile
berisi informasi source code mana yang akan dikompilasi, lokasi library yang
dibutuhkan dan juga output dari proses kompilasi. Berikut isi Makefile :
Makefile
obj-m = hello.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
4. Compile source code dengan perintah
make
5. Pada direktori tersebut akan muncul file baru yaitu hello.ko. File tersebut adalah
file executable dari kernel module yang kita buat.
6. Pasang kernel module tadi dengan perintah
sudo insmod hello.ko
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
7. Cek apakah kernel module berhasil dipasang dengan perintah lsmod. Jika sudah
terpasang dengan benar, maka nama kernel module hello akan ada pada daftar
modul yang terpasang.
8. Cek output dari kernel module setelah dipasang dengan perintah dmesg.
9. Untuk melepas kernel module hello yang sudah terpasang tadi, kita dapat memakai
perintah :
sudo rmmod hello
10. Cek output dari kernel module setelah dilepas dengan perintah dmesg.
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
Tugas Praktikum
Carilah sebuah source code kernel module, kemudian kerjakan beberapa tugas berikut.
1. Compile dan pasang source code kernel module tersebut
2. Cek apakah kernel module tersebut sudah berjalan
3. Tampilkan output atau perubahan sistem setelah kernel module tersebut dipasang.
4. Lepas kernel module tersebut. Apakah terjadi perubahan?
5. Analisa dan jelaskan source code kernel module tersebut !
Penyelesaian :
1. Mengcompile dan memasang source code kernel module
hello.c
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/sched.h>
# include <linux/moduleparam.h>
MODULE_LICENSE ("GPL") ;
MODULE_AUTHOR ("ASHISH BUNKAR") ;
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
MODULE_DESCRIPTION ("Sample Module") ;
MODULE_VERSION ("0.1") ;
static int count = 2;
static int i = 0;
module_param(count, int, S_IRUGO);
static int hello_init (void) {
for (i=0; i < count; i++) {
printk (KERN_ALERT "This is my first hello world
program\n");
printk (KERN_ALERT "The current running process in the
system is :\"%s\" (pid %i) \n", current->comm, current->
pid);
}
return 0;
}
static void hello_exit (void) {
printk (KERN_ALERT "Goodbye we are done\n");
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
}
module_init (hello_init);
module_exit (hello_exit);
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
Makefile
obj-m = helloworld.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD)
modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
2. Mengecek kernel module sudah berjalan
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
3. Menampilkan output atau perubahan sistem setelah kernel module.
4. Lepas kernel module tersebut dan lihat perubahan
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
5. Analisa dan jelaskan source code kernel module tersebut !
hello_init (): ini disebut ketika modul dimasukkan ke dalam kernel menggunakan
insmod. Fungsi ini akan dipanggil oleh 'module_init' makro. Fungsi init bertanggung
jawab untuk mendaftarkan modul kernel. hello_exit (): Fungsi ini dipanggil saat modul
dihapus dari kernel menggunakan rmmod. Fungsi ini akan dipanggil oleh 'module_exit'
makro. Fungsi ini menghapus dan membersihkan modul dimasukkan. Macro
module_init (hello_init) & Module_init (hello_exit): Menggunakan macro ini,
programmer dapat memberikan pengguna nama didefinisikan dengan init dan
pembersihan fungsi. Macro ini didefinisikan dalam <linux / init.h>. Printk: Dalam
pemrograman modul kernel, 'printk' digunakan untuk mencetak pesan kernel ke log
kernel. Pesan printk terkait dengan prioritas yang terkait dengan mereka. Untuk semua
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
tujuan perilaku, kita menggunakan 'printk' dalam pemrograman modul kernel sebanyak
yang kita gunakan 'printf' dalam program tingkat pengguna C.
Kernel perintah manajemen modul
insmod < module - name> : Perintah ini untuk memasukkan modul baru ke dalam kernel lsmod : Ini daftar modul yang saat ini dimuat di kernel modinfo < module - name> : Hal ini untuk mendapatkan informasi lengkap tentang modul rmmod < module - name> : Perintah ini adalah untuk menghapus modul dari kernel modprobe < module - name> : Ini bekerja sama dengan insmod tetapi menggunakan ' Modul Penumpukan ' untuk memuat modul yang diperlukan untuk memuat modul saat ini . modprobe r < module > : Untuk menghapus modul dari kernel dmesg : Menunjukkan isi dari buffer lingkaran kernel
Kesimpulan
Secara umum, Sistem Operasi adalah software pada lapisan pertama
yang ditempatkan pada memori komputer pada saat komputer
dinyalakan. Sedangkan software- software lainnya dijalankan setelah
Sistem Operasi berjalan, dan Sistem Operasi akan melakukan layanan
inti umum untuk software-software itu. Layanan inti umum tersebut
seperti akses ke disk, manajemen memori, skeduling task, dan antar-
muka user. Sehingga masing-masing software tidak perlu lagi
melakukan tugas-tugas inti umum tersebut, karena dapat dilayani
dan dilakukan oleh Sistem Operasi. Bagian kode yang melakukan
tugas- tugas inti dan umum tersebut dinamakan dengan “kernel”
suatu Sistem Operasi. Kalau sistem komputer terbagi dalam lapisan-
lapisan, maka Sistem Operasi adalah penghubung antara lapisan
hardware dan lapisan software. Lebih jauh daripada itu, Sistem
Operasi melakukan semua tugas-tugas penting dalam komputer, dan
menjamin aplikasi-aplikasi yang berbeda dapat berjalan secara
bersamaan dengan lancar. Sistem Operasi menjamin aplikasi
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
software lainnya dapat menggunakan memori, melakukan input dan
output terhadap peralatan lain dan memiliki akses kepada sistem file.
Apabila beberapa aplikasi berjalan secara bersamaan, maka Sistem
Operasi mengatur skedule yang tepat, sehingga sedapat mungkin
semua proses yang berjalan mendapatkan waktu yang cukup untuk
menggunakan prosesor (CPU) serta tidak saling mengganggu.
Kelebihan dan kekurangan dari :
Mikrokernel
Kelebihan
Portabilitas
Kapasitas hardisk yang kecil
Kapasitas memori yang kecil
Keamanan
Kekurangan
Hardware harus bekerja melalui driver
Hardware mungkin bereaksi lebih lambat karena driver dalam user mode
Proses harus menunggu dalam antrian untuk mendapatkan informasi
Proses yang tidak bisa mendapatkan akses ke proses lainnya tanpa
menunggu
Monolitik Kernel
Kelebihan
Program dapat lebih langsung mengakses ke perangkat keras
Lebih mudah bagi pemrosesan untuk berkomunikasi satu sama lain
LAPORAN PRAKTIKUM SISTEM OPERASI
PROGRAM TEKNOLOGI INFORMASI DAN
ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
Nama : Wahyu Mega Kristanto
NIM : 145150407111042
Praktikum : Bab VI
Asisten : M. Wildan Alauddin
Praktikum Sistem Operasi PTIIK UB 2014/2015
Jika perangkat kerja Anda didukung, maka mereka dapat terus bekerja
tanpa instalasi tambahan
Proses bereaksi lebih cepat karena tidak ada antrian untuk waktu prosesor
Kekurangan
Kapasitas hardisk yang lebih besar
Kapasitas memori yang lebih besar
Kurang aman karena semuanya berjalan dalam mode supervisor
Kernel hibrida
Kelebihan
Kapasitas hardisk yang sedang
Kapasitas memori yang sedang
Pengembang dapat memilih dan memilih apa yang berjalan dalam user
mode dan apa yang berjalan dalam mode supervisor.
Lebih fleksibel dibandingkan model lain
Kekurangan
Bisa menderita proses antrian yang sama seperti mikrokernel
Device driver harus dikelola oleh pengguna (biasanya)