15
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 ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

  • Upload
    others

  • View
    75

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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;

}

Page 2: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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()

Page 3: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 4: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 5: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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.

Page 6: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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") ;

Page 7: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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");

Page 8: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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);

Page 9: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 10: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 11: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 12: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 13: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 14: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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

Page 15: LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM ...blog.ub.ac.id/wahyumega/files/2015/08/Wahyu-Mega-K...LAPORAN PRAKTIKUM SISTEM OPERASI PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS

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)