laboratorium informatika dan komputer percobaan i...
TRANSCRIPT
Laboratorium Informatika dan KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
menghilangkan proses yang telah selesai dari tabel proses kernel.
7
Laboratorium Informatika dan KomputerJurusan 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 KomputerJurusan 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 userDaftar 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
14
Laboratorium Informatika dan KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 vmlinuz
boot.cat help.msg initrd.gz isolinux.cfg puppy_slacko_5.3.3.sfs
17
Laboratorium Informatika dan KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan 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 KomputerJurusan Teknik Elektro Fakultas Teknik Universitas Brawijaya Malang
Referensi
Soebroto, Arief Andy. 2007. Diktat Mata Kuliah Sistem Operasi.
Marshall, Dave. 1999. Process Control: <stdlib.h>,<unistd.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