Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan I Pengenalan Sistem Operasi Tujuan Percobaan 1)
Memahami definisi dan fungsi sistem operasi dalam sistem komputer.
2)
Memahami struktur direktori sistem operasi Linux.
3)
Menggunakan utilitas sistem operasi bebasis Linux melalui antarmuka terminal.
Alat yang Digunakan −
Perangkat komputer dengan sistem operasi Linux.
−
Flashdrive.
−
Aplikasi unetbootin.
−
Image distribusi PuppyLinux (slacko-5.3.3-4g-SCSI.iso)
Dasar Teori Definisi dan fungsi sistem operasi Sistem operasi adalah sekumpulan perangkat lunak yang melakukan fungsi manajemen, regulasi dan abstraksi dalam sistem komputer. Tujuan sistem operasi adalah menyediakan lingkungan eksekusi program bagi pengguna untuk menjalankan program secara efesien dan nyaman. Secara logis sistem operasi menjadi jembatan antara aplikasi yang dijalankan pengguna dan perangkat keras.
1
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Sasaran sistem operasi adalah: - virtualisasi: melakukan abstraksi mekanisme internal sistem komputer agar pengguna melihat sistem komputer sebagai sistem yang konsisten dan sederhana, - efesiensi: melakukan manajemen sumber daya sistem komputer: perangkat keras, penjadwalan eksekusi, - dinamis: memungkinkan pengubahan fitur sistem operasi.
Gambar 1. Struktur Komputer yang Menggambarkan Lingkup Sistem Operasi
Secara teknis sistem operasi adalah kumpulan dari kernel, program utilitas dan pustaka (library) yang memungkinkan pengguna menjalankan aplikasi di atas perangkat keras sistem komputer. Kernel adalah program tunggal yang menjalankan fungsi utama sistem operasi, program utilitas adalah program yang menjalankan fungsi-fungsi umum yang dibutuhkan pengguna, pustaka adalah objek program yang disimpan dalam bentuk berkas yang dimuat oleh program yang membutuhkan. 2
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Struktur direktori sistem operasi Linux Sistem operasi Linux menggunakan struktur direktori untuk mengelompokkan berkas sesuai dengan fungsi masing-masing. Struktur direktori ini berkaitan dengan konfigurasi, mount-point berbagai media penyimpanan, deskriptor perangkat keras, informasi proses dan sebagainya.
Gambar 2. Stuktur Direktori Sistem Operasi Linux
Distribusi sistem operasi Linux melakukan modifikasi terhadap direktori di atas sesuai kebutuhan dan konfigurasi masing-masing distribusi tanpa mengubah menghilangkan struktur direktori utama.
3
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Prosedur Percobaan 1)
Gunakan unetbootin untuk memindahkan image distribusi PuppyLinux ke flashdrive
2)
Boot komputer melalui flashdrive yang berisi PuppyLinux
3)
Buka program emulator terminal
4)
Jalankan perintah uname -a dan cat /proc/cpuinfo untuk mengetahui berbagai informasi tentang sistem.
*lampirkan keluaran dari prosedur 4 Hasil Percobaan (terlampir)
4
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan II Proses Tujuan Percobaan 1)
Memahami tahapan proses di sistem operasi Linux.
2)
Mengimplementasikan kontrol eksekusi proses di sistem operasi Linux.
3)
Mengimplementasikan signal untuk interupsi proses di sistem operasi Linux.
4)
Mengimplementasikan komunikasi data antar proses dengan pipe dan FIFO (named pipe).
5)
Menggunakan utilitas sistem operasi untuk melakukan manajemen proses
Alat yang Digunakan −
Perangkat komputer dengan sistem operasi Linux.
Dasar Teori Proses adalah instansiasi program yang tersimpan dalam memori dan penjadwalannya sedang ditangani oleh kernel sistem operasi. Tahap eksekusi proses Berikut adalah model yang umum digunakan untuk menggambarkan tahap proses dalam sistem operasi Linux (dapat dilihat di sched.h pada source kernel): 1. berjalan pada user mode, 2. berjalan pada kernel mode, 3. siap dijalankan (stand-by), 4. sleep, 5. baru dibuat, belum siap dijalankan dan tidak sleep, 6. sudah melakukan exit() 5
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Gambar 3. Tahap Eksekusi Proses
Proses yang baru dibuat berada pada tahap 5 sebagai hasil dari fork(). Proses tersebut segera pindah ke tahap 1 atau 2 (sesuai tahap proses parent saat fork()). Jika konteks eksekusi proses diberikan dengan fungsi exec*() maka proses memasuki tahap 2. Saat proses berjalan di tahap 1 atau 2, jika ada interupsi maka proses akan dihentikan dan dipindahkan ke memori (tahap 3) dan CPU akan menjalankan proses lain (di tahap 1 atau 2). Jika proses melakukan system call saat berada tahap 1, maka proses akan berpindah ke tahap 2. Proses akan segera kembali ke tahap 2 jika system call yang dilakukan relatif cepat (contoh: pengaksesan memori). Jika system call relatif lama (contoh: pengaksesan hard drive), proses masuk ke tahap 4. Saat data telah siap proses diantrikan kembali sementara konteks eksekusinya berada di memori (tahap 3). Saat konteks eksekusi proses telah selesai, proses akan melakukan exit() dan memasuki tahap 6. Proses akan menjadi proses zombie sebelum proses parent-nya melakukan wait() untuk 6
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
menghilangkan proses yang telah selesai dari tabel proses kernel.
7
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Konteks eksekusi proses Sesuai definisi proses sebagai program yang sedang dieksekusi, eksekusi program berupa file dilakukan dengan variansi fungsi exec*():
execl(),
execlp(),
execle(),
execv(), execvp(), execve(), di mana l = leave (menginggalkan proses pemanggil) v = volativle (sementara, kembali ke proses pemanggil setelah selesai) p = path (menggunakan PATH untuk menentukan lokasi program) e = environtment (menggunakan ENV untuk menentukan environment sistem) Contoh argumen untuk varian exec*() adalah execl(*path,*args) di mana path adalah string yang menunjuk ke nama program dan args adalah string argumen. Proses dibedakan satu sama lain dengan PID berupa integer yang dapat ditunjukkan dengan fungsi getpid(), kita dapat pula melihat parent proses dengan fungsi getppid(). Fungsi fork() melakukan duplikasi proses yang menghasilkan proses child yang memiliki konteks eksekusi yang sama dengan proses parent-nya namun dengan PID dan beberapa konteks proses (memory lock, semaphore, timer, dan lainnya) yang berbeda. Duplikasi dilakukan dengan copy-on-write sehingga tidak ada penggunaan memori berlebih antara proses parent dan child. Fungi fork() memiliki nilai kembalian 0 di child process dan nilai lainnya (kecuali -1) pada parent process. Saat proses child selesai, child process menajalankan fungsi exit() dan mengirimkan SIGCHLD ke proses parent, yang kemudian proses parent melakukan wait() untuk membunuh proses child. Jika proses child tidak dibunuh maka akan menjadi proses defunct atau zombie.
8
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Komunikasi antar proses dengan signal Signal adalah message yang diberikan kernel untuk menginterupsi proses, terdapat berbagai macam signal untuk berbagai kondisi interupsi yang berbeda: Signal
Kondisi Interupsi
SIGABRT
Pembatalan proses
SIGTERM
Terminasi program (Ctrl+C)
SIGHUP
Sesi controlling terminal ditutup
SIGCHLD
Proses anak telah selesai
SIGINT
Sinyal interup dari terminal
SIGKILL
Kill (tidak bisa menggunakan handler atau SIG_IGN)
SIGSEGV
Segmentation vault (violasi rentang alamat memori)
SIGUSR1
Signal definisi user
SIGUSR2
Signal definisi user
Daftar lengkap sinyal dapat dilihat dalam header signal.h dalam source kernel. Tabel 1. Signal yang Umum Digunakan
Sinyal dapat dibangkitkan untuk proses itu sendiri dengan fungsi raise(), sementara pengriman sinyal ke proses lain dilakukan dengan fungsi kill(). Proses yang menerima sinyal dapat mendefisikan handler untuk masing-masing sinyal dengan fungsi singnal(), di mana handler dapat berupa alamat pointer ke SIG_IGN (abaikan sinyal), SIG_DFL (default), atau pointer yang difenisikan sendiri oleh pemrogram.
9
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Komunikasi data antar proses dengan pipe dan named pipe Komunikasi data antar proses yang paling sederhana dilakukan dengan pipe yang dicatat oleh kernel. Pipe adalah pasangan deskriptor file di mana ditulis di fd[1] dan dibaca di fd[0].
Gambar x. Pipe dan Larik Variabel Deskriptornya
Inisialisasi pipe dilakukan dengan: int fd[2]; pipe(fd); setelah itu fungsi write() dan read() dapat diterapkan terhadap pipe fd. FIFO (named pipe) adalah bentuk pipe yang lebih kompleks sebagai file dalam disk. Pembuatan file berjenis FIFO dilakukan dengan program mknod atau pemanggilan fugnsi : mknod(*name, mode, dev); name adalah pointer ke string berisi nama FIFO, mode adalah jenis dan mode akses file, dev adalah nomor device: bernilai 0 kecuali terhubung langsung dengan perangkat keras. Selanjutnya FIFO dapat diakses sebagai file reguler dengan fungsi open(), read() dan write().
10
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Prosedur Percobaan 1)
Tulis kode program yang mengimplementasikan fork() dengan child process ke-1 mencetak “1” tiap 1 detik, child process ke-2 mencetak “2” tiap 2 detik, dan child process ke-3 mencetak “3” tiap 3 detik; parent process akan menghentikan semua proses setelah 15 detik.
2)
Tulis kode program yang memberikan keluaran “Menerima SIGTERM” ke stdout saat menerima signal SIGTERM (Ctrl+C)
3)
Tulis kode program yang mengimplementasikan ls | grep a (menampilkan semua file yang mengandung huruf 'a' di working directory) dengan dua child process dan pipe (petunjuk: gunakan juga dup() dan exec*())
4)
Tulis kode sepasang program: satu program menulis string ke named pipe dari stdin dan program lainnya menampilkan string dari named pipe ke stdout.
Lakukan kompilasi dan jalankan semua program. Lampirkan keluaran eksekusi program. *semua kode program dalam bahasa C
Hasil Percobaan (terlampir)
11
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan III Manajemen Perangkat Keras
Tujuan Percobaan 1)
Memahami sistem operasi dalam memanajemen perangkat keras.
2)
Memahami pengaksesan perangkat keras.
Dasar Teori Kernel Linux mendukung banyak perangkat keras, dukungan perangkat keras tersebut dapat dilihat dengan banyaknya dukungan interkoneksi yang didukung, mulai soket lama ISA, PCI hingga Infiniband yang digunakan pada super komputer telah didukung oleh Linux. Untuk memanajemen berbagai perangkat keras yang ada, tersedia beberapa utilitas untuk menangani perangkat keras. Contohnya untuk perangkat keras PCI terdapat berbagai utilitas seperti lspci, pcilib dan setpci. lspci digunakan untuk melihat perangkat apa saja yang terhubung dengan socket PCI. $lspci 00:00.0 Host bridge: Silicon Integrated Systems [SiS] 671MX 00:01.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge 00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS968 [MuTIOL Media IO] (rev 01) … 00:05.0 IDE interface: Silicon Integrated Systems [SiS] SATA Controller / IDE mode (rev 03) 00:06.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge 00:0f.0
Audio
device:
Silicon
Integrated
Systems
[SiS]
Azalia
Audio
Controller 01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Mobility Radeon HD 4500/5100 Series]
12
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
lsusb digunakan untuk melihat perangkat apa saja yang terhubung dengan port USB. $lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus
001
Device
002:
ID
0bda:8189
Realtek
Semiconductor
Corp.
RTL8187B
Wireless 802.11g 54Mbps Network Adapter
Perangkat keras sebagai File descriptor Semua item perangkat keras oleh kernel linux diwujudkan sebagai berkas (file). Sehingga setiap perubahan pada perangkat keras dapat dipantau dengan membaca isi berkas tersebut, layaknya membaca berkas teks biasa. Begitu juga untuk memanipulasi perangkat keras dapat dilakukan seperti memanipulasi berkas teks biasa. Contoh : $echo “praktikum sisop” > /dev/pts/0
Prosedur Percobaan 1. Melihat hardware yang terhubung ke komputer Tuliskan informasi tentang kartu grafis berisi detail chipset, interrupt, control dan modul kernel yang digunakan dengan utilitas lscpi.
13
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
14
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
2.
Mengakses hardware lewat file descriptor Tuliskan program dalam C yang digunakan untuk mencetak informasi pergerakan mouse.
3.
Lakukan Hotswap Hardisk SATA a.
Matikan komputer.
b.
Lepas kabel data dan daya SATA dari HDD.
c.
Nyalakan komputer.
d.
Jalankan program blkid (sebagai super user) untuk mengetahui daftar partisi yang dapat diakses.
e.
Tancapkan kabel power dan data SATA ke HDD.
f.
Jalankan perintah echo “ 0 0 0” > /sys/class/scsi_host/hostX/scan untuk mendeteksi perangkat SATA yang baru ditancapkan (ganti 'X' dengan nomor enumerasi kontroler SATA yang bersesuaian)
g.
Jalankan blkid untuk mengetahui daftar partisi yang dapat diakses saat HDD baru terdeteksi
h.
Jalankan perintah echo 1 > /sys/block/sdX/device/delete (ganti 'X' dengan enumerasi HDD yang bersesuaian)
* lampirkan aktivitas terminal prosedur 3.
Hasil Percobaan (terlampir)
15
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan IV File dan Filesystem Tujuan Percobaan 1) Menggunakan utilitas sistem operasi untuk melakukan manajemen file system 2) Menggunakan utilitas sistem operasi untuk melakukan partitioning 3) Memahami konsep mounting 4) Memahami berbagai atribut file
Alat yang Digunakan −
Perangkat komputer dengan sistem operasi bebasis Linux
−
Flashdrive
Dasar Teori Berkas (file) adalah entitas dari kumpulan informasi (atau instruksi) dengan struktur data tertentu. Filesystem adalah metode penyimpanan dan pengaturan berkas dalam disk. Secara garis besar filesystem mengatur berkas dalam sebuah format database tertentu untuk disimpan, dimanipulasi dan dibaca/tulis oleh sistem operasi.
16
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Filesytem mencatumkan metadata yang merupakan informasi tambahan terhadap tiap berkas yang berisi antara lain: •
lokasi berkas dalam direktori
•
tipe file (file biasa, direktori, dan lain-lain)
•
ukuran file dalam byte
•
pemilik utama dari file
•
batasan akses file oleh pemilik dan user lain (owner, group dan other)
•
tanggal, waktu pembuatan file, akses terakhir dan modifikasi terakhir
•
tanggal, waktu backup dan recovery terakhir
Mounting Mounting adalah proses pemetaan struktur data berkas tertentu (berkas dapat berupa teks, program, device identifier atau sebagainya) ke struktur direktori system operasi. Sebagai contoh berkas dalam format ISO dapat dipetakan ke struktur direktori sistem operasi Linux sebagai block device. # mkdir /mnt/tmp # ls /mnt/tmp/ # mount -o loop slacko-5.3.3-4g-SCSI.iso /mnt/tmp/ mount: warning: /mnt/tmp/ seems to be mounted read-only. # ls /mnt/tmp/ README.HTM
boot.msg
help2.msg
isolinux.bin
logo.16
boot.cat
help.msg
initrd.gz
isolinux.cfg
puppy_slacko_5.3.3.sfs
vmlinuz
17
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Prosedur Percobaan 1) Jalankan program ls, cp, rm, mv, df, du dengan argumen yang sesuai. 2) Partisi dan mounting a) Dengan fdisk, buat tabel partisi (MSDOS) baru pada flashdrive yang berisi 1 partisi dengan format EXT2 dan 1 partisi dengan format FAT32. Lakukan mkfs.ext2 dan mkdosfs pada partisi yang bersesuaian. Tunjukkan perubahan tabel partisi dengan blkid (sebelum dan sesuah pengubahan) b) Lakukan mounting kedua partisi tersebut ke mount point masing-masing: c) Buat file bebas di masing-masing mount point. d) Jalankan umount terhadap kedua mount point tersebut. *lampirkan aktivitas terminal pada prosedur 1 dan 2
Hasil Percobaan (terlampir)
18
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan V Kernel
Tujuan Percobaan 1) Memahami modul kernel Linux 2) Menggunakan RAM disk
Dasar Teori Komponen Kernel Linux Kernel Linux berbentuk monolithic kernel yang berarti di dalamnya terdapat banyak komponen. Komponen dalam kernel linux digolongkan menjadi 6 (enam) kategori yaitu system, processing, memory, storage, networking, dan human interface. Mendukung banyak fitur dengan menyediakan banyak komponen juga menimbulkan satu kelemahan, sistem akan terbebani dengan komponen yang tidak digunakan. Karena itulah komponen pada kernel linux dibuat berbentuk modul, dimana setiap modulnya dapat dijalankan sesuai kebutuhan.
19
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Penggunaan Modul Kernel Linux Modul kernel linux dapat dijalankan, dihentikan maupun dihapus pada saat sistem berjalan. Namum sebagai bagian dari sistem tentunya modul kernel memiliki mekanisme tertentu untuk melakukan berbagai aksi tersebut: meihat daftar modul yang tersedia, # modprobe -l melihat daftar modul yang aktif, # lsmod melihat informasi tentang modul, # modinfo [nama modul] menjalankan modul yang tersedia, # modprobe [nama modul] menghentikan modul yang aktif, # modprobe -r [nama modul] RAM disk Kernel Linux mendukung pembuatan media penyimpanan tidak permanen di dalam memori (Random Access Memory). RAM disk memanfaatkan memori sehingga memiliki keunggulan dalam kecepatan, baik kecepatan akses, tulis maupun baca. Pada prakteknya RAM disk dianggap sama seperti media penyimpanan yang lainnya.
20
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Percobaan 1.
Menjalankan dan menghentikan modul mouse a. Gerak-gerakan tetikus. b. # lsmod c. # modprobe -r psmouse d. Gerak-gerakan tetikus. e. # modprobe psmouse *lampirkan aktivitas terminal disertai komentar tentang mouse dapat berfungsi atau tidak
2.
Menggunakan RamDisk a. # mkfs.ext4 -q /dev/ram1 25M b. # mkdir ramdisk c. # mount /dev/ram1 ./ramdisk d. # df -H ./ramdisk
2.
Buat modul kernel yang menampilkan “hello world” saat inisialisasi dan “goodbye world” saat cleanup. Lakukan kompilasi objek dan load/unload modul tersebut untuk melihat keluarannya.
Hasil Percobaan (terlampir)
21
Laboratorium Informatika dan Komputer Jurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Referensi Soebroto, Arief Andy. 2007. Diktat Mata Kuliah Sistem Operasi. Marshall, Dave. 1999. Process Control: <stdlib.h>,
http://www.cs.cf.ac.uk/Dave/C/node22.html Hall, Brian. 2010. Beej's Guide to UNIX IPC. Salzman, Peter Jay. 2001. The Linux Kernel Module Programming Guide
22