Tampilkan postingan dengan label Sistem Operasi Mikrokomputer. Tampilkan semua postingan
Tampilkan postingan dengan label Sistem Operasi Mikrokomputer. Tampilkan semua postingan

Manajemen Perangkat Keras



Manajemen Perangkat Keras

POKOK BAHASAN :
Manajemen Perangkat Keras

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengetahui bagaimana melihat perangkat keras yang terpasang pada sistem
komputer.
Menggunakan perintah mount dan umount pada sistem file
Menggunakan perintah-perintah untuk manajemen perangkat keras.

DASAR TEORI:

1  FILE PERANGKAT KERAS
/dev berisi file device (perangkat) yang merupakan aspek penting pada sistem
file Linux.  /dev/cdrom da n /dev/fd0 merupakan drive CD-ROM dan floppy pada
komputer Anda.  Kita dapat melkaukan akses read dan write pada perangkat.  Sebagai
contoh /dev/dsp merupakan perangkat speaker.  Sembarang data yang ditulis ke file ini
akan dialihkan ke speaker.  ’cat /boot/vmlinuz > /dev/dsp’ menyebabkan kita dapat
mendengarkan suara dari speaker.  Untuk mencetak file dapat dikirim ke perangkat
/dev/lp0.  Mengirim data ke dan membaca data dari /dev/ttyS0 akan menyebabkan
komunikasi dengan perangkat modem.
Mayoritas device  berupa block device atau character device.  Block device
adalah device yang menyimpan atau membawa data, character device adalah device
119

PRAKTIKUM 9   MANAJEMEN PERANGKAT KERAS
120
yang mengirim atau transfer data.  Sebagai contoh, diskette drive, hard drive dan CD-
ROM drive adalah block device, seda ngkaan serial port, mouse dan paralel printer
adalah character device.
Beberapa file perangkat yang umum digunakan yang perlu diingat adalah :
/dev/ttyS0 (First communication port, COM1) : First serial port (mouse, modem)
/dev/psaux (PS/2) : PS/2 mouse connection (mouse, keyboard)
/dev/lp0 (First printer port, LPT1) : First parallel prot (printer, scanner dsb)
/dev/dsp (First audio device) : sound card, digitized voice dan PCM
/dev/usb (USB Device) : node USB device
/dev/sda (C:/SCSI device) : First SCSI de vice (HDD, Memory stick, external mass
storage device seperti CD-ROM pada laptop)
/dev/scd (D:\, SCSI CD-ROM device) : First SCSI CD-ROM device
/dev/js0 (Standard gameport joystick) : First joystick device
Device didefinisikan sebagai tipe seperti block atau character dan nomor mayor
dan minor.  Nomor mayor digunakan untuk melakukan katagori device dan nomor
minor untuk mengidentifikasi tipe device khusus.  Sebagai contoh, semua IDE device
dihubungkan dengan primary controller mempunyai nomor mayor 3.  Perangkat master
dan slave, didefinisikan lebih jauh dengan nomor minor.  Terdapat dua nomor sebelum
tanggal yang tercetak.  Jika kita lakukan perintah ls –l /hd* maka akan terlihat nomor
mayor untuk perangkat hda dan hdb adalah 3.  Nomor minor berubah untuk setiap
partisi tertentu. Kita dapat selalu membuat perangkat menggunakan skrip MAKEDEV
dimana akan diletakkan pada directory /dev.
# MAKEDEV *

2  PERINTAH MOUNT dan UMOUNT
Sebelum menggunakan sistem file, harus di-mount terlebih dahulu.   Kemudian
sistem operasi dapat mengerjakan penyimpanan file.  Karena semua file UNIX berada
pada satu pohon direktori, operasi mount akan  terlihat seperti isi dari sub direktory yang
ada pada sistem file yang sudah dilakukan mounting.  Contoh perintah mount
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr

PRAKTIKUM 9  MANAJEMEN PERANGKAT KERAS
121
Perintah mount mempunyai 2 argumen, argumen pertama adalah file device yang
berhubungan dengan disk atau partisi dari sistem file.  Argumen kedua adalah direktory
yang dimounting.  Perintah diatas berarti bahwa ”/dev/hda2 dilakukan mounting ke
/home” begitu juga dengan /usr.  Perbedaan antara file device /dev/hda2 dan direktory
mount /home adalah file device memberikan akses ke isi disk mentah, direktory mount
memberikan akses ke file dari disk.  Direktory mount disebut mount point.
Linux mendukung beberapa tipe sistem file.   Mount akan menebak tipe dari
sistem file.  Opsi  –t fstype akan memberikan spesifikasi tipe sistem flie.  Sebagai
contoh, untuk mount floppy MS-DOS, dapat menggunakan perintah berikut :
$ mount –t msdos /dev/fd0 /floppy
Sistem file root dilakukan mounting pada waktu booting.  Jika sistem file root
tidak dapat dimounting, sistem tidak dapat melakukan booting.    Nama sistem file
dimounting sebagai root.  Sistem file root mula- mula bersifat read-only.  Skrip startup
kemudian menjalankan fsck untuk melakukan verifikasi validitas dan jika tidak ada
permasalahan, dilakukan mounting lagi sehingga write diperbolehkan.  Fsck tidak boleh
dijalankan pada saat sistem file dimounting, karena setiap perubahan  ke sistem file saat
fsck berjalan mengakibatkan kesalahan.  Bila sistem file root dimounting read- only saat
dilakukan pengecekan, fsck dapat memperbaiki permasalahan.
Jika sistem file tidak diperlukan untuk dimounting, dapat dilakukan unmounting
dengan perintah umount.  Perintah umount mempunyai satu argumen berupa file device
atau mount point.  Sebagai contoh untuk unmount direktory pada contoh diatas dapat
digunakan perintah
$  umount /dev/hda2
$  umount /usr
Kita dapat melihat perangkat floppy da n mount point yang diijinkan pada
/etc/fstab.
$ cat /etc/fstab
/dev/fd0   /mnt/floppy  auto    rw,user,noauto  0 0
/dev/hdc   /mnt/cdrom   iso9660 ro,user,noauto  0 0
/dev/hdc   /mnt/cdrom   iso9660 0 0 0

PRAKTIKUM 9   MANAJEMEN PERANGKAT KERAS
122
Kolom terdiri dari file device, directory mounting, tipe sistem file, opsi, frekuensi
backup, fsck pass number (0 berarti tanpa cek).  Opsi noauto menghentikan mounting
yang dilakukan secara otomatis jika sistem dimulai (misalnya menghentikan mount  –a).
Opsi user mengijinkan sembarang use r melakukan mounting sistem file dan karena
alasan keamanan, eksekusi program tidak diijinkan (normal atau setuid)
Jika ingin menyediakan akses ke beberapa tipe floppy, perlu diberikan beberapa
mount point.  Setting berbeda untuk setiap mount point.  Seba gai contoh untuk
memberikan akses ke floppy MS-DOS dan ext2, dilakukan perubahan baris pada
/etc/fstab :
/dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0
/ext2floppy ext user,noauto 0 0

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan,  jawablah pertanyaan-pertanyaan berikut ini :
1.   Perangkat keras diakses oleh sistem operasi Linux melalui directory /dev.   Apa saja
isi sub directory /dev dan sebutkan perangkatnya.
2.   Apa yang dimaksud dengan block device dan character device ?  Sebutkan contoh
perangkat yang merupakan block device dan character device.
3.   Apa yang dimaksud dengan mounting ? Apa maksud perintah mount dan umount ?
PERCOBAAN :
1.   Pada percobaan ini setiap mahasiswa harus membawa sebuah floppy disk dan atau
CDROM
2.   Login sebagai user.
3.   Bukalah Console Termina l dan lakukan percobaan- percobaan di bawah ini
kemudian analisa hasil percobaan.
4.   Selesaikan soal-soal  latihan.

PRAKTIKUM 9  MANAJEMEN PERANGKAT KERAS
123
Percobaan 1 : Melihat perangkat pada sistem komputer
1.   Melihat daftar perangkat.  Perhatikan apakah perangkat-perangkat yang
disebutkan pada dasar teori terdapat pada komputer anda.  Perhatikan tipe
perangkat berupa block device atau character device.  Apa yang membedakan
suatu perangkat merupakan block device atau character device?
$
ls –l /dev
2.   Perhatikan nomor mayor dan minor pada perangkat hard disk Anda.   Apa
maksudnya ?
$
ls –l /dev/hd*
Percobaan  2  : Menangani Removable Media
1.   Melihat daftar perangkat yang ada pada sistem file utama .  Perhatikan titik
mount untuk perangkat floppy dan CDROM.  Perhatikan opsi yang ada
jelaskan maksudnya.
$
cat /etc/fstab
2.   Cobalah melakukan mounting pada floppy disk
$
mount /dev/fd0 /mnt/floppy
$
cd /mnt/floppy
$
ls –l
3.   Agar semua perubahan data tertulis pada floppy  dan mengambil floppy disk dari
sistem file gunakan perintah umount.
$
cd
$
umount /mnt/floppy
4.   Lakukan hal yang sama untuk perangkat CDROM.

PRAKTIKUM 9   MANAJEMEN PERANGKAT KERAS
124
Percobaan 3 : Melak ukan format MSDOS pada floppy
1.   Linux  dapat membaca dan menulis dengan format MSDOS maupun Linux.
Untuk menggunakan floppy MS, dapat digunakan perintah MS -DOS dengan
didahului huruf ”m”.  Misalnya, ”mdir a:” akan melihat daftar file pada drive a,
”mcopy” melakukan copy file, ”mdel” melakukan  penghapusan file. Lakukan
format floppy dengan perintah
$
fdformat /dev/fd0H1440
$
mformat a:
2.   Cobalah melakukan list directory, copy dan delete file
$
mdir a:
$
mcopy <namafile> a:
$
mdel a:/<namafile>
3.   Lakukan pembuatan direktory pada floppy dengan perintah mmd, copy file
dengan mcopy, delete file dengan mdel,  pindah directory dengan mcd dan
melihat isi directory dengan mdir.
4.   Lakukan format floppy disk menggunakan perintah mkfs
$
mkfs –t msdos /dev/fd0
5.   Sebelum menggunakan floppy yang sudah terformat la kukan mounting sistem
file
$
mount /mnt/floppy
6.   Untuk melihat apakah floppy sedang digunakan ketikkan
$
df
7.   Lakukan unmount terhadap floppy disk.
$
umount /mnt/floppy

PRAKTIKUM 9  MANAJEMEN PERANGKAT KERAS
125

LATIHAN:
1.   Lihatlah directory /proc/devices yang berisi perangkat-perangkat yang terdapat pada
sistem komputer.  Perlihatkan tampilannya dan sebutkan block device dan character
device apa saja  yang terdapat pada sistem komputer.
2.   Lakukan  operasi file  dan directory  dengan menggunakan perintah MS-DOS seperti
mdir, mmd, mcd,  mcopy dan mdel, mmove .  Tuliskan perintah yang anda lakukan.
3.   Lakukan mounting terhadap floppy disk kemudian cobalah pindah ke directory
/mnt/floppy dan lakukan operasi file dan directory (perintah cp, rm, mkdir, rmdir ,
cd, move ).
4.   Lihat manual dari  fdisk dan fsck, kemudian lakukan percobaan menggunakan
perintah tersebut.
5.   Lihat manual dari perintah mke2fs, kemudian lakukan percoba an dengan
menggunakan perintah tersebut.

LAPORAN RESMI:
1.   Analisa hasil percobaan yang Anda lakukan.
2.   Kerjakan latihan diatas dan analisa hasil tampilannya.
3.   Berikan kesimpulan dari praktikum ini.


READMORE
 

Editor Vi



EDITOR Vi

TUJUAN PRAKTIKUM
1)
Praktikan menguasai apa yang dimaksud dengan editor vi.
2)
Praktikan mengetahui apa saja yang termasuk dalam utilitas aritmatika.
3)
Praktikan mengetahui perintah-perintah yang terdapat utilitas teks.

TEORI PENUNJANG
2.1
Editor vi
Posisi vi dibedakan me njadi dua, yaitu:
1.
Mode perintah.
Setia p pemakai  masuk ke dalam editor vi, langsung pada mode perintah. Pada
kondisi ini, pemakai dapat melakukan:
a)
menggerakkan kursor.
b)
menghapus teks.
c)
mengubah teks.
d)
menc ari kata.
e)
kelua r dari vi ke shell.
2.
Mode Penyisipan.
a)
untuk  berpindah  ke  mode  penyisipan  dari  mode  perintah,  dilakukan
dengan mengetikkan  huruf i.
b)
untuk  kembali  ke  mode  perintah,  dilakukan  denga n  menekan  tombol
<ESC>.
Ada beberapa cara untuk keluar dari editor vi (harus pada mode perintah), yaitu:
1)
:wq <enter>, digunakan untuk menyimpan teks.
2)
:x <enter>, digunakan untuk menyimpan teks.
3)
:zz , digunakan untuk menyimpan teks.
4)
:q! <enter>, keluar dari vi tanpa menyimpan.
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      10
2.2   Mode-mode Perintah pada Editor vi
Beberapa perintah yang digunakan adalah :
1.
Menggerakkan Kursor
Perintah yang digunakan adalah sebagai berikut:
Tabel 2.1 Perintah menggerakka n kursor
Perintah  Fungsi
h  satu karakter ke kiri
l  satu karakter ke kana n
j  satu karakter ke atas
k  satu karakter ke bawah
w  ke awal kata berikutnya
e  ke akhir kata
b  ke awal kata sebelumnya
^  ke karakter bukan spasi atau tab yang pertama
0  ke awal baris
$  ke akhir baris
|  ke awal baris
n  ke kolom n
-  ke karakter non-spasi pertama pada baris sebelum posisi kursor
<enter>  ke karakter non-spasi pertama pada baris berikutnya
(  ke awal kalimat
)  ke akhir kalimat
{  ke awal paragraph
}  ke akhir paragraph
%  ke pasangan dari ({[ atau ]}) yang terletak pada posisi kursor
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      11
2.
Menggerakkan Layar
Perintah-perintah yang digunakan seba gai berikut:
Tabel 2.2 Perintah menggerakkan layar
Perintah  Fungsi
z <enter>  menempatkan  baris  pa da  posisi  kursor  menjadi  baris  awal  pada
layar
z  menempatkan baris pada posisi kursor menjadi di tengah layar
z-  menempatkan  baris  pada  posisi  kursor  menjadi  baris  terakhir
pada layar
<ctrl-e>  layar bergerak naik satu baris
<ctrl-y>  layar turun satu baris
<ctrl-u>  tampilan bergerak turun setengah layar
<ctrl-d>  tampilan bergerak naik setengah layar
<ctrl-f>  tampilan bergerak naik satu layar penuh
<ctrl-b>  tampilan bergerak mundur satu layar penuh
nG  menuju baris ke-n
$G  menuju baris terakhir
3.
Pembatalan atau Pengulangan Perintah
Perintah-perintahnya seba gai berikut :
Tabel 2.3 Pembatalah atau pengulanga n perintah
Perintah  Fungsi
u  membatalkan perintah terakhir yang dilakukan
U  membatalkan beberapa perintah yang  telah dibuat pada satu baris
(mengembalikan baris ke keadaan semula)
dot (.)  melakukan pengulangan perintah terakhir
4.
Menyisipkan Teks
Perintah-perintah yang digunakan seba gai berikut :
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      12
Tabel 2.4 Perintah menyisipkan teks
Perintah  Fungsi
a  menambahkan teks mulai posisi sesudah kursor
i  menambahkan teks mulai posisi sebelum kursor
A  menambahkan teks setelah akhir baris
I  menambahkan  teks  dimulai  pada  posisi  karakter  bukan  spasi
pertama
o  menyisipkan baris kosong sesudah baris pada posisi kursor
O  menyisipkan baris kosong sebelum baris pada posisi kursor
5.
Menghapus Teks
Perintah-perintah yang digunakan seba gai berikut :
Tabel 2.5 Perintah menghapus teks
Perintah  Fungsi
x  menghapus karakter pada posisi kursor
nx  menghapus n karakter dari posisi kursor
X  menghapus karakter di sebelah kiri kursor
nX  menghapus n karakter di sebelah kiri kursor
dd<enter>  menghapus baris yang ada pada posisi kursor
d <enter>  menghapus  dua  baris  dimulai  dari  posisi  kursor  (sama  dengan
2dd)
ndd
menghapus  13  baris  dimulai  pada  posisi  kursor  (sama  dengan
dnd),  jika  jumlah  baris  sesudah  posisi  kursor  kurang  dari  13,
<enter>
maka penghapusan dibatalkan
d  menghapus teks dari awal baris hingga sebelum posisi kursor
dw  menghapus dari posisi kursor sampai akhir kata
dW  menghapus  dari  posisi  kursor  sampai  akhir  kata  yang  dipisah
oleh  spasi
db  menghapus dari awal kata sampai sebelum posisi kursor semula
dB  identik  dengan  db,  kecuali  pengertian  kata  di  sini  adalah  yang
dipisah oleh spasi
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      13
d$  menghapus dari posisi kursor hingga akhir baris
D  sama dengan d$
d(  menghapus dari  awal kalimat hingga sebelum posisi kursor
d)  menghapus dari posisi  kursor hingga akhir kalimat
d{  menghapus dari posisi kursor hingga akhir paragraf
d}  menghapus dari awal kalimat hingga sebelum posisi kusor
6.
Mengganti Teks
Perintah-perintah yang digunakan seba gai berikut :
Tabel 2.6 Perintah mengganti teks
Perintah  Fungsi
r  mengganti tepat satu karakter pada posisi kursor adalah r  (tanpa
berada pada mode penyisipan)
nrq  mengganti n karakter dari posisi kursor dengan karakter q
R  mengganti  karakter    dimulai  dari  posisi  kursor  dan  berhenti
apabila pemakai menekan tombol <esc>
s  mengganti  satu  karakter  dengan  beberapa  karakter  lainnya
sampai tombol <esc> ditekan
S  mengganti teks pada baris tempat kursor sedang berada
cw  penggantian sampai akhir kata
cW  penggantian sampai akhir kata yang dipisah oleh spasi
cb  penggantian dari awal ka ta sampai sebelum posisi kursor
cB  penggantian dari awal ka ta yang dipisah oleh posisi kursor
cc  penggantian pada baris tempat kursor berada
c  penggantian dari awal sampai sebelum posisi kursor
c$  penggantian dari posisi kursor hingga akhir ba ris
C  sama dengan c$
c(  penggantian dari awal ka limat sampai sebelum posisi kursor
c)  penggantian dari posisi kursor sampai akhir kalimat
c{  penggantian dari posisi kursor sampai akhir paragraf
c}  penggantian dari awal pa ragraf sampai sebelum posisi kursor
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      14
~  mengganti  huruf    kapita l  menjadi  huruf  kecil  atau  sebaliknya,
pada posisi kursor
n~  mengkonversi n karakter mulai dari posisi kursor
2.3    Utilitas Aritmatika
1)
expr
Merupakan  utilitas  yang  biasa  dipakai  untuk  melakukan  perhitungan
bilangan bulat dan operasi perbandingan . Operator yang digunakan:
Tabel 2.7 Operator expr
Operator  Keterangan
+  Penjumlahan
-  Pengurangan
\*  Perkalian
/  Pembagian
%  Sisa Pembagia n
=  Sama dengan
\<  Kurang dari
\<=  Kurang dari atau sama dengan
\>  Lebih dari
\>=  Lebih dari atau sama dengan
!=  Tidak sama dengan
\|  Operator or
\&  Operator and
:  Operator  match  (digunakan  untuk  mencocokan  string
operand kedua terhadap string operand pertama).
2)
bc
Merupakan  utilitas  yang  sangat  bermanfaat  untuk  membantu  melakukan
perhitungan aritmatika, baik bilangan bulat  maupun pecahan. Operator ya ng
ada di antaranya:
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      15
Tabel 2.8 Operator bc
Operator  Keterangan
+  Penjumahan
-  Pengurangan
*  Perkalian
/  Pembagian
%  Sisa pembagian
++  menikan variable sebesar satu
--  menurunkan nilai
3)
dc
Merupakan  utilitas  yang  sama  dengan  bc,  perbedaannya  hanya  pada  bentuk
notasi  ekspresi  aritmatikanya.  Jika  pada  bc  ekspresi  aritmatika  dinyatakan
dengan  operasi  infix  (operator  berada  di  antara  operand)  maka  pada  dc
dinyatakan  dengan  operasi  postfix  (operator  berada  di  akhir  dari  dua
operand).
Contoh:
Tabel 2.9 Perbedaan bc dan dc
bc (INFIX)  dc (POSTFIX)
2 + 3  2 3 +
a + b ^ c  a b c ^ +
2.4    Utilitas Teks
1)
pg
•
Bentuk umum:
pg [ file…]
•
Merupakan perintah untuk me nampilkan isi satu file  atau lebih per layar.
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      16
•
Setiap data satu layar ditandai dengan simbol : pada bagian bawah layar.
•
Tombol <enter> digunakan untuk berpindah  layar.
•
Untuk keluar dari pg, digunakan tombol q <enter>.
•
Akhir file ditandai dengan (EOF): singkatan dari end of file.
2)
more
•
Bentuk umum:
more [ file…]
•
Digunakan untuk menampilkan isi satu file atau lebih per layar.
•
Setiap data  satu  layar  ditandai  dengan  simbol  -more  pada  bagian bawah
layar dan diikuti dengan prose ntase data yang telah ditampilkan ke layar.
•
Tombol <enter> digunakan untuk menggeser satu baris ke atas.
•
Untuk berpindah layar digunakan tombol <spasi>.
•
Untuk keluar dari more, digunakan tombol q.
3)
head
•
Bentuk umum:
head [-n] [ file ]
•
Digunakan  untuk  mendapatkan  baris  yang  merupakan  bagian  awal  dari
suatu file.
•
Option  -n  digunakan  jika  hanya  n  baris  pertama  dari  file  yang  akan
ditampilkan  ke  standar  output,  jika tidak  diberikan  maka  hanya  10  baris
pertama dari file yang akan ditampilkan.
4)
tail
•
Bentuk umum:
tail [-n] [ file ]
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      17
•
Digunakan  untuk  mendapatkan  bagian  akhir  dari  suatu  file,  kebalikan
dari he ad.
•
Option  -n  digunakan  jika  hanya  n  baris  terakhir  dari  file  yang  akan
ditampilkan  ke  standar  output,  jika tidak  diberikan  maka  hanya  10  baris
terakhir dari file yang akan ditampilkan.
•
Simbol  + dapat  digunakan  untuk  menggantikan  simbol  -,  jika  data  ya ng
ingin ditampilkan dimulai dari baris ke-n sampai ke akhir file .
5)
line
•
Bentuk umum:
line [ < file ]
•
Digunakan  untuk  membaca  baris  pertama  dari  standar  input  ke  standar
output.
•
line < file sama dengan head -1 file.
6)
cmp
•
Bentuk umum:
cmp [ -l  | -s ]  file1  file2
•
Digunakan  untuk  membandingkan  isi  file1  dengan  file2,  terutama   file
biner.
•
Tidak  akan  memberikan  keluaran  apapun  jika  kedua  file  ya ng
dibandingkan ternyata sama.
•
Jika  file1  dan  file2  berbeda,  maka  karakter/byte  dan  nomor  baris  ya ng
berbe da ditampilkan.
•
Option -s digunakan untuk memperoleh nilai exit saja ( 0 jika sama dan 1
jika tidak sa ma) dan option -l digunakan untuk menampilkan nomor baris
dalam  bentuk  desimal  dan  karakter  kedua  file  yang  berbeda dalam  kode
oktal.
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      18
7)
diff
•
Bentuk umum:
diff [ -b | -e | -f | -h ]  file1  file2
•
Digunakan  untuk  memberitahukan  perbedaan  dari  dua  file  te ks,  dimana
pembandingan dilakukan pe rbaris.
•
Setelah  perintah  ini  digunakan,  ada  beberapa  karakter  yang  perlu
diperhatikan.  Di  antaranya  adalah  <  (menyatakan  file1),  >  (menyatakan
file2), a (append), c (change) dan d (delete).
•
Option:
-
b, Untuk mengabaikan seluruh kara kter whitespace (spasi dan tab)
-
e ,  Digunakan  untuk  membangkitkan  perintah  a,  c,  atau  d  guna
menciptakan file2 dari file1
-
f, Untuk menghasilkan perintah dalam urutan terbalik.
-
h, Untuk file yang berukuran besar.
8)
diff3
•
Bentuk umum:
diff3 [ -e | -x ]  file1  file2  file3
•
Digunakan  untuk  membandingkan  isi  dari  3  file  dan  memberitahukan
perbe daannya ke standar output.
•
Setelah  perintah  ini  dijalankan  ada  beberapa  karakter  yang  perlu
diperhatikan,  yaitu:  ====  (ketiga  file  berbeda),  ====n    (file  ke-n
berbe da)
•
Setelah itu ada format yang perlu diperhatikan, yaitu:
a)
f:n a, teks perlu ditambahkan setelah baris n pada file f.
b)
f:n1 n2 c, teks perlu  diubah dari baris n1 sampai n2 pada file f.
•
Option:
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      19
-
e,  keluarannya  berisi  langkah untuk  mengubah  file1  dan  file2 agar
menjadi  file3  (hanya  untuk  pembandingan  file  yang  menghasilkan
kode “====” atau “====3”.
-
x,  serupa  dengan  -e  namun  hanya  berlaku  khusus  untuk  kondisi
“====”
9)
comm3
•
Bentuk umum:
comm [ -123 ] file1
file2
•
Digunakan  untuk  memberitahukan  perbedaan  atau  persamaan  baris  dari
dua buah file.
•
File1 dan file2 merupakan dua buah file yang telah diurutkan.
•
Jika  tanpa  option,  laporan  yang  dihasilkan  dalam  bentuk  tiga  kolom
(kolom  ke-1  memberitahukan  isi  yang  ha nya  terdapat  pada  file1  dan
kolom  ke-2 pada file2 dan kolom ke-3 adalah isi yang terdapat pada file1
dan file2).
•
Apabila  option disebutkan,  maka  kolom  yang  bersesuaian  dengan  option
tidak akan ditampilkan.
10)
grep (global regular expression printer)
•
Bentuk umum:
grep [ option ]  ‘regular_ekspresi’ [ file… ]
•
Digunakan  untuk  mencari  string  pada  suatu  file  dengan  melibatkan
regular ekspresi.
•
Regular ekspresi yang ada:
a)
. Sebarang karakter tunggal.
b)
* Nol atau sejumlah karakter apa saja.
c)
[] Sebuah karakte r yang terletak di dalam tanda [].
d)
[^…] Selain karakter yang terletak sesudah tanda ^ dan sebelum ].
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      20
e)
^ Terletak di awa l baris.
f)
$ Terletak di akhir baris.
g)
\(expr\) Cocok dengan ekspresi expr.
h)
\n Cocok dengan n ekspresi (n berupa bilangan bulat).
11)
fgrep (fixed grep atau fast grep)
•
Bentuk umum:
fgrep [ option ] [ file… ]
•
Digunakan  untuk  mencari  beberapa  string  tetapi  pemakaian  regular
ekspresi tidak didukung.
•
Di  antara  keluarga  grep,  fgrep  merupakan  program  yang  menggunakan
memori paling sedikit.
•
Pencarian  beberapa  string  harus  diletakkan  pada  baris  yang  berlainan.
Dimana target  awal  diawali  denga n ‘  atau “ dan target  terakhir diakhiri
dengan ‘ atau “.
12)
egre p (extended grep)
•
Bentuk umum:
egrep [ option ]  ‘regular_e kspresi’ [ file… ]
•
Digunakan  untuk  mencari  beberapa  string  dan  dapat  melibatkan  regular
ekspresi.
•
Perintah  ini  menggunakan  memori  lebih  banyak  daripada  dua  perintah
lainnya, namun memberikan kecepatan yang paling tinggi.
•
Regular ekspresi \( dan \) tidak ada  pada egrep.
•
Regular ekspresi tambahan:
a)
+ Cocok  dengan  satu atau beberapa karakter yang terletak  di depan
tanda ini.
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      21
b)
?  Cocok  dengan  nol atau  beberapa  karakter  yang  terletak di  depan
tanda ini.
c)
| atau.
d)
( ) Penggolongan.
13)
sort
•
Bentuk umum:
sort [ option ] [ file… ]
•
Digunakan  untuk  mengurutkan  data  yang  terdapat  pada  satu  atau
beberapa file, dan hasilnya  diletakkan ke standar output.
•
File  yang  akan  diurutkan  memiliki  organisasi  sepe rti:  record,  field,  dan
kunci.
•
Secara default, hasil pengurutan dalam bentuk ascending.
14)
cut
•
Bentuk umum:
cut -clist [ file… ]
cut -list [ -d char ] [ -s ] [ file…]
•
Digunakan  untuk  mengambil  data  tertentu  berdasarkan kolom  atau  field
dari suatu file.
•
list digunakan untuk menyatakan range, seperti:1,4,7,1-3.
•
clist  digunakan  jika  kolom  yang  dijadikan  sebagai  patokan  pengambilan
data.
•
list digunakan jika data yang diambil ditampilkan perbaris.
•
Option:
-
d diikuti sebuah karakter menyatakan karakter yang dipakai sebagai
pembatas  antarfield,  jika  tidak  disertakan  maka  karakter  tab  ya ng
dijadikan sebagai pemisah field.
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      22
-
s akan mengabaikan baris yang tidak punya pembatas.
15)
paste
•
Bentuk umum:
paste [ -s ] [ -dlist ] [ file… ]
•
Digunakan  untuk  merekatkan  sejumlah  baris  dari  beberapa  file,  ya ng
dilakukan  baris  perbaris. Baris  pertama file  ke-1 direkatkan dengan  baris
pertama file ke-2.
•
Option:
-  s,  digunakan  untuk  menggabungkan  isi  file  secara  sekuensial,  -dlist,
lihat perintah cut.
LAPORAN PENDAHULUAN
1)
Bagaimana  cara  menulis  naskah  dengan  editor  vi?   Jelaskan  dari  mulai
prompt, menulis hingga menyimpan dan keluar!
2)
Dapatkah  kita  menjalankan  perintah  Linux  dari  editor  vi  ?  Jika  Ya,
bagaimanakah caranya?
3)
Pada  editor  vi,  se cara  umum  terdapat  dua  mode  yaitu  mode  perintah  dan
mode penyisipan. Jelaskan masing-masing mode tersebut!
4)
Selain  editor  vi  adakah  editor  lain yang  dapat  digunakan  untuk  menuliskan
perintah linux? Jelaskan jika ada!
5)
Tulis  beberapa  utilitas  teks  beserta  penjelasan  da ri  contoh  penggunaanya  !
(min. 5)
6)
Tulis  beberapa  utilitas  layar  beserta  penjelasan  dari  contoh  penggunaanya
(min. 3)!
7)
Tulis  beberapa  utilitas  aritmetika  beserta  penjelasan  dan  contoh
penggunaanya (min. 3)!
8)
Bagaimana cara untuk menggera kkan kursor di dalam editor vi! (min 10)?
Modul Praktikum Sistem Operasi – AK045333

Bab 2 – Editor vi      23
9)
Dan bagaimanakah menyisipkan, menghapus dan mengganti teks ?
10)
Perintah  yang  digunakan  untuk  mengurutkan  data  yang  terdapat  pada  satu
atau beberapa file, dan hasilnya  diletakkan ke standa r output adalah?
LAPORAN AKHIR
1)
Bagaimana menuliskan naskah pada editor vi? Jelaskan!
2)
Jelaskan mode perintah yang ada pada editor vi!
3)
Jelaskan fungsi perintah j, n, k, w, e dan ^ !
4)
Jelaskan fungsi ctrl-e, ctrl-f, dan ctrl b!
5)
Sebutkan perintah pembatalan atau pengulangan perintah !
6)
Perintah apa saja ya ng digunakan untuk menyisipkan teks?
7)
Utilitas  yang biasa  dipakai untuk melakukan perhitungan bilangan bulat dan
operasi perbandingan adalah ? Jelaskan operatornya min 4!
8)
Utilitas  yang  digunakan  untuk  menuliskan  ekspresi  aritmatika  infix  dan
postfix adalah? Jelaskan bentuk umumnya!
9)
Bentuk umum : fgrep [ option ] [ file… ] berfungsi untuk?
10)
Jelaskan fungsi perintah diff !
Modul Praktikum Sistem Operasi – AK045333


READMORE
 

Linux Booting Process



Linux Booting Process


POKOK BAHASAN :
Linux Booting Process

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengetahui  inisialisasi booting proses pada sistem operasi Linux
Me lakukan perubahan inisia lisasi booting proses

DASAR TEORI:

1  PC BOOT DAN LINUX INIT PROCESS
Pada praktikum ini membahas PC boot process dan inisialisasi sistem operasi
Linux pada aplikasi background (daemons/service).
1.   BIOS  :  Basic Input/Output System adalah antar muka level  terendah antara
komputer dan peripheral.  Bios melakukan pemeriksaan pada memori dan mencari
instruksi pada Master Boot Record (MBR) pada floppy atau hard drive.
2.   MBR menunjuk  ke boot loader (LILO : Linux boot loader)
3.   LILO akan menanyakan label sistem operasi yang akan mengidentifikasi kernel
yang dijalankan.  Kernel akan menjalankan sistem operasi Linux.
4.   Yang pertama kali dikerjakan oleh kernel adalah menjalankan program init.  Init
adalah root/parent dari semua proses yang dijalankan pada Linux
5.   Proses per tama yang memulai init adalah skrip
.
/etc/rc.d/rc/sysinit
126


PRAKTIKUM 10  LINUX  BOOTING PROCESS
127
6.   Berdasarkan run-level yang ditentukan, skrip dieksekusi untuk memulai proses
tertentu untuk menjalankan sistem dan membuat sistem lebih fungsional.

2.  LINUX INIT PROCESS
Proses init adalah langkah terakhir pada prosedur boot dan diidentifikasi sebagai
process ide “1”.  Init bertanggung-jawab untuk memulai proses sistem seperti yang
ditentukan pada file
.  Init biasanya memulai “
” yang menunggu
/etc/inittab
getty
layar login yang  menandakan proses shell seorang user.  Pada saat shutdown, init
mengontrol urutan dan proses untu shutdown.  Proses init tidak pernah shut down.
Proses init merupakan proses user dan bukan proses sistem kernel meskipun dijalankan
sebagai root.
Proses sistem :
Process ID  Description
0    The Scheduler
1    The init process
2    kflushd
3    kupdate
4    kpiod
5    kswapd
6    mdrecoveryd

3.  PROSEDUR BOOT
Linux mempunyai 6 state operasi dimana “0” adalah shutdown state dan “3”
keatas adalah operasional penuh dengan semua proses yang esensial  dijalankan untuk
interaksi user.  Berdasarkan sistem boot, Linux sistem akan melakukan :
•
Mengeksekusi program
yang memulai semua proses -proses lain.
/sbin/init
Program ini akan  diberikan ke mesin oleh proses awal yang didefinisikan pada  file
/etc/inittab
•
Komputer akan di-booting ke runlevel yang didefinisikan oleh baris
initdefault
pada file
.
/etc/inittab
id:5:initdefault:


PRAKTIKUM 10  LINUX BOOTING PROCESS
128
Pada contoh diatas, runlevel ”5” dipilih.   Runlevel “5” akan melakukan booting
sistem pada mode GUI menggunakan XDM dan X-Windows.  Booting ke runlevel
”3” (biasanya disebut mode console) biasanya digunakan oleh server yang tidak
memerlukan GUI.
File inittab mengijinkan menggunakan kunci (Ctrl-Alt-Del), memulai dial ke
koneksi internet dll.
•
Satu dari proses-proses yang dimulai oleh init adalah
.   Skrip ini
/sbin/rc
menjalankan sekumpulan skrip pada direktory
/etc/rc.d/rc0.d/,
dan seterusnya.
/etc/rc.d/rc1.d, /etc/rc.d/rc2.d
•
Skrip pada direktory tersebut dieksekusi pada setiap boot state dari oeprasi sampai
menjadi operasi yang lengkap.   Skrip mulai dengan S yang merupakan skrip startup
sedangkan skrip yang dimulai dengan K menandakan skrip shutdown (kill).  Angka
yang mengikuti huruf tersebut merupakan urutan eksekusi (terendah ke tertinggi)
Jika Anda menginstall semua daemons (proses bac kground), Linux akan
menjalankan semua , menyebabkan mesin lebih lambar.  Kita bisa memulai (start)  /
menghentikan (stop) daemon secara individual dengan mengubah direktory :
/etc/rc.d/init.d (Redhat)
dan diikuti perintah pilihan start, stop, status, restart atau reload, misalnya untuk stop
web server :
cd /etc/rc.d/init.d
httpd stop
Gunakan perintah ps –aux untuk melihat semua proses pada mesin Anda.

4.  LINUX RUN LEVEL
Runlevel “3” akan booting dalam mode teks atau console dan “5” akan booting
dalam mode gr aphical login.
State pada Runlevel / Halt :
0  shutdown (Do NOT set initdefault to this)
1  Single user mode
2  Multiuser, without NFS (The same as 3, if you do not have networking)


PRAKTIKUM 10  LINUX  BOOTING PROCESS
129
3  Default text start. Full multiuser
4  unused
5  X11
6  Reboot    (Do NOT set initdefault to this)
Anda bila melakukan perpindahan level init de ngan menggunakan perintah  init
dengan runlevel tertentu.  Gunakan perintah
dimana # adalah satu dari 0, 1, 3,
”init#”
5, 6.  Dapat juga menggunakan perintah
.
telinit
Skrip untuk run level  yang diberikan dijalankan selama boot dan shutdown.
Skrip ditemukan pada direktory
dimana simbol # menandakan
/etc/rc.d/rc#.d/
run level, misalnya run level ”3” akan menjalankan semua skrip pada direktory
yang dimulai dengan huruf ”S” selama sistem boot.  Skrip ini
/etc/rc.d/rc3.d/
akan menjalankan proses background yang dibutuhkan oleh sistem.  Pada saat shutdown
semua skrip pada direktory yang dimulai dengan huruf ”K” akan dieksekusi.  Sistem ini
menyediakan urutan sistem ke state yang berbeda untuk mode  produksi dan
maintenance.
TIP : Daftar state dan run level dari semua service dimulai oleh ini :
chkconfig –list
GUI tool :
/usr/X11R6/bin/tksysv

5.  AKTIVASI SKRIP INIT
Menambah suatu skrip ke  direktory
baik prefik S atau K,
/etc/rc.d/rc#.d/
menambah skrip ke proses boot atau shutdown.  Skrip berjalan dengan urutan numerik.
S20abc dijalankan sebelum S30xyz.  Keberadaan prosedur boot dan shutdown ini
merupakan kekuatan sistem operasi UNIX.    Inisialisasi proses dengan urutan tertentu
dapat dikoordinasikan  untuk proses dependent.   Shutdown dari proses biasanya
dibutuhkan untuk program yang kompleks misalnya database.  Proses individual
dapatkemunginan dimonitore, shutdown dan start pada sembarang waktu menggunakan
skrip tersebut.  Misalnya
.  Mofidikasi start, stop
/etc/rc.d/rc2.d/httpd start
atau status kemungkinan digunakan.
Skrip start / stop /status berada pada direktory
adalah
/etc/rc.d/init.d/
suatu link ke direktory sebenarnya.  Link tersebut kemungkinan dibuat atau dihapus
menggunakan perintah
, misalnya
akan
chkconfig
chkconfig  –del httpd


PRAKTIKUM 10  LINUX BOOTING PROCESS
130
menghapus web server dari proses startup dan shutdown.  Sebaliknnya
chkconfig  –
akan menambahke ke proses startup/shutdown dengan membangkitkan
add httpd
link dari skrip pada
ke direktory
yang
/etc/rc.d/init.d/
/etc/rc.d/rc#.d/
sebenarnya.  Untuk informasi lebih lanjut gunakan halaman manual LINUX untuk init.
Pada Red Hat 9.0, GUI tool /usr/bin/redhat-config-services dapat membantu
untuk mengkonfigurasi service untuk start dan menyediakan deskripsi untuk setiap
service yang tersedia.  Service dasar meliputi :
Sistem Service   Deskripsi
anacron  Run jobs which were scheduled for execution while computer was
turned off. Catch up with system duties.
arpwatch  Keeps track of IP address to MAC address pairings
atd  Run scheduled batch jobs.
autofs  automounts file systems on demand.
crond  Job sheduler for periodic tasks
gpm  Allows console terminal cut and paste. (Non X-window consoles)
https   Apache web server.
iptables  Firewall rules interface to kernel
keytable   Loads se lected keyboard map as set in /etc/sysconfig/keyboard
kudzu  New harware probe/detection during system boot.
lpd  Network printer services
microcode_ctl  Uploads microcode to kernel and ultimately to the Intle Pentium
processor. (Hardware specific.)
mysqld  Database services
named DNS  name services (Bind)
network  Active network services during system boot.
nfs  Network file system. Unix file sharing services.
nscd  Password and group lookup services for use with network
authentication (NIS, LDAP,...).
ntpd  Network Time Protocol time synchronization services.
random  Random number generation tool used for encryprion
rawdevices  Enables raw IO. Useful for Oracle and software which utilizes this


PRAKTIKUM 10  LINUX  BOOTING PROCESS
131
for high speed disk access.
smb  SAMBA: MS/Windows PC file s haring services
syslog  System log file facility.
ypbind NIS  file sharing/authentication infrastructure service.
yppasswd  NIS file sharing/authentication infrastructure service.
xfs  X-Windows font server.
Service utama yang direkomendasikan adalah  :
anacron, ard, autofs,
(Intel32
crond, gpm, iptables, keytable, kudzu, microcode_ctl
hardware only),
network, random. syslog
Graphics Workstation - add:
xfs
File Server for PC clients - add:
smb
Print Server - add:
atau
lpd
cups
File server Linux/Unix clients - add:
nfs, netfs, nfslock, portmap, ypbind,
yppasswd, ypserv
Web Server - add:
httpd, tux, xinetdi, sshd
6.  SKRIP INIT
Skrip init berada pada direktory
.  Gunakan
/etc/rc.d/
script-name
perintah
untuk membangkitkan soft link ke direktory yang sebenarnya
chkconfig
untuk beberapa run level.
#!/bin/sh
#
# Startup script for program
#
# chkconfig: 345 85 15
- This statement tells the chkconfig
command how to add or delete this process to the boot process
# description: Description of program
# processname:
process-name
# pidfile: /var/run/
process-name
.pid
# Source function library.
This creates the operating
environment for the process to be started
. /etc/rc.d/init.d/functions
case "$1" in


PRAKTIKUM 10  LINUX BOOTING PROCESS
132
start)
echo  -n "Starting
process-name
: "
daemon
process-name       -Starts only one process of a
given name.
echo
touch /var/lock/subsys/
process-name
;;
stop)
echo  -n "Shutting down
process-name
: "
killproc
process-name
echo
rm -f /var/lock/subsys/
process-name
rm  -f /var/run/
process-name
.pid
- Only if process
generates this file
;;
status)
status
process-name
;;
restart)
$0 stop
$0 start
;;
reload)
echo  -n "Reloading
process-name
: "
killproc
process-name
-HUP
echo
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0
Fungsi skrip bash
dan
dapat ditemukan dalam
daemon, killproc
status
skrip
.
/etc/rc.d/functions
Skrip harus dieksekusi untuk menjalankannya (
)
chmod +x script-name
Misalnya skrip digunakan untuk memulai dan menghentikan proses seperti
/etc/rc.d/init.d/httpd restart
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
atau menggunakan perintah service :
service httpd restart
service httpd stop
service httpd start


PRAKTIKUM 10  LINUX  BOOTING PROCESS
133
Dua baris dalam skrip yang memungkinkan perintah
mengontrol
chkconfig
skrip untuk proses boot dan shutdown adalah
# chkconfig: 345 85 15
# description: Description of program
Bila menambahkan ke proses booting menggunakan perintah  "
chkconfig --
" awal  order/priority  akan diset 80 sedangkan   stop/shutdown diset
add
script-name
15.  Proses akan ditambahkan ke runlevel 3, 4, dan 5.  Hal ini dapat dilakukan dengan
membangkitkan lin k dari lokasi skrip  (/etc/rc.d/init.d/)  ke direktori run level :
/etc/rc.d/rc#.d/.   Nama file dalam direktory run level akan menunjukkan apa yang
digunakan untuk boot (mulai dengan “S”) atau shutdown (mulai dengan “K”).
7.  CHKCONFIG
Perintah chkconfig membangkitkan dan memutuskan link antara direktori
dan direktori run level
untuk
/etc/rc.d/init.d/
/etc/rc.d/rc
[0-6].
d/
mengontrol inisialisasi proses boot dan proses shutdown.
chkconfig [--level <levels>] <name> on | off | reset >
chkconfig --list
chkconfig --list
chkconfig --add <name>
chkconfig --del <name>
chkconfig --level 0123456 <name> o ff
Contoh :
chkconfig --level 345 httpd on
- apache diberikan  3, 4  dan 5.
chkconfig --add httpd
- memulai web server daemon  pada system boot.
chkconfig --del sen dmail
- Tidak memulai sendmail daemon  pada system boot.
chkconfig --list ]
- Daftar semua servis dan level init.
chkconfig --list | grep on
-  Daftar semua service yang dimulai pada sistem boot


PRAKTIKUM 10  LINUX BOOTING PROCESS
134
TUGAS PENDAHULUAN :
Sebagai tugas pendahulua n,  jawablah pertanyaan-pertanyaan berikut ini   :
1.   Sebutkan inisialisasi proses apa saja yang dilakukan oleh sistem operasi Linux pada
saat booting
2.   Apa yang dilakukan sistem operasi Linux pada saat booting ?
3.   Apakah isi dari file
.  Sebutkan siste m proses yang dapat
/etc/inittab
dimasukkan pada variabel
dan jelaskan maksudnya.
initdefault
4.   Apa yang dimaksud dengan run level pada linux ? Sebutkan perbedaan file pada
yang menggunakan awalan ”S” dan awalan ”K”.
/etc/rc.d/rc#.d/
5.   Apa yang dimaksud dengan perintah
dan
?
service
chkconfig

PERCOBAAN :
1.   Login sebagai root.
2.   Bukalah Console Terminal dan lakukan percobaan- percobaan di bawah ini
kemudian analisa hasil percobaan.
3.   Selesaikan soal-soal  latihan.


PRAKTIKUM 10  LINUX  BOOTING PROCESS
135
Percobaan 1 :  Linux INIT Process
1.   Program
akan dijalankan pada saat booting.  Eksekusi program
/sbin/init
ini berdasarkan file
.  Lihatlah isi file
dan
/etc/inittab
/etc/inittab
perhatikan mode default runlevel pada baris
initdefault
#
cat /etc/inittab
2.   Berdasarkan runlevel yang dipilih, proses init kemudian mengeksekusi skrip
startup yang berada pada sub direktory
.  Skrip yang digunakan
/etc/rc.d
untuk runlevel 0 sampai dengan  6 berada pada sub direktory
sampai
.
/etc/rc.d/rc0.d
/etc/rc.d/rc6.d
#
ls -l /etc/rc.d
3.   Setiap nama file pada  direktori misalnya
dimulai dengan
/etc/rc.d/rc5.d
huruf “S” merupakan skrip startup sedangkan skrip yang dimulai dengan huruf
“K” merupakan skrip shutdown.  Angka yang mengikuti "K" atau "S"
menandakan urutan skrip yang dijalankan.   Contohnya ”kudzu” denga n nilai
”05” dijalankan sebelum ”wlan” dengan nilai ”09”
#
ls /etc/rc.d/rc5.d
Percobaan  2  : Menentukan default boot runlevel
1.  Default boot runlevel pada file
diset dengan menggunakan
/etc/inittab
variabel
.  Jika diset  "3", sistem boot menggunakan antar muka
initdefault
teks pada console VGA; jika diset "5", menggunakan GUI.
2.  Hapus baris
yang tidak diperlukan pada file
initdefault
/etc/inittab.
Buatlah bari baru untuk set sistem boot menggunakan console VGA / teks
#
vi /etc/inittab


PRAKTIKUM 10  LINUX BOOTING PROCESS
136
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2  - Multiuser, without NFS (The same as 3, if you do not
have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:                   # Console Text Mode
#id:5:initdefault:                   # Console GUI Mode
3.  Setelah dilakukan perubahan variabel
, lakukan reboot.
initdefault
Perhatikan apakah masuk ke mode teks
#
reboot
4.  Lakukan perubahan kembali dari 3 ke 5 dan lakukan reboot sistem.  Ingat,
jangan melakukan setting ke 6 karena sistem akan reboot terus -menerus.
Sedangkan setting 0 maka sistem tidak pernah dimulai.
Percobaan 3 : Menggunakan Console GUI
1.  Kita dapat masuk ke console GUI jika sistem berada pada mode teks.  Pertama
ubahlah variabel
pada file
dan ubahlah ke
initdefault
/etc/inittab
mode 3 atau dengan menggunakan perintah init
#
init 3
2.
Metode Manual
:  Jalankan aplikasi X terminal GUI dengan menjalankan
perintah “
” pada console VGA.  Untuk keluar gunakan logout
startx
#
startx
3.
Metode Otomatis
: Anda dapat menjalankan X terminal GUI setiap kali reboot
menggunakan perintah
.  Anda harus mengedit variabel
init
i
”pada file
seperti percobaan 2 agar setiap
nitdefault
/etc/inittab
booting masuk ke mode GUI.  Ubahlah kembali ke mode 5.
#
init 5


PRAKTIKUM 10  LINUX  BOOTING PROCESS
137
Percobaan 4 : Menggunakan Virtual Console
1.   Untuk mendapatkan command prompt dapat dilakukan dengan membuka
terminal pada Jendela GUI.  Default- nya, Linux menjalankan 6 virtual consol
atau TTY session yang dijalankan pada console VGA.  Hal ini didefinisikan
dengan statement
pada file
.  Console X terminal
mingetty
/etc/inittab
GUI membuat virtual console sendiri menggunakan TTY pertama yang
tersedia yang tidak dikontrol oleh
.  Hal ini menyebabkan GUI
mingetty
berjalan sebagai nomor 7.   Perhatikan baris
pada file
mingetty
/etc/
, virtual console nomor berapa yang dikontrol ?
inittab
#
cat /etc/inittab
2.   Cobalah masuk ke virtual console menggunakan <CTRL> <ALT> <F1>
sampai dengan <F6>.
3.   Untuk masuk ke login GUI gunakan <CTL> <ALT> <F7>, hanya jika berada
pada run level 5 atau GUI dijalankan setelah ”startx”.
Percobaan 5 :  Shutdown dan rebooting sistem
1.   Perintah
akan mengubah runlevel, untuk shutdown nilainya adalah 0.
init
#
init 0
2.   Perintah
menyebabkan efek yang sama.  Opsi ”–y” untuk
shutdown
mengabaikan prompt pesan dan ”–h” untuk halt sistem.  Opsi 0 menunjukkan
berapa lama menunggu memulai prosedur, dalam hal ini 0 menit.
#
shutdown –hy 0
3.   Anda juga bisa menggunakan perintah init untuk reboot sistem dengan
memasukkan runlevel 6
#
init 6


PRAKTIKUM 10  LINUX BOOTING PROCESS
138
4.  Perintah
menpunyai efek yang sama, tetapi juga mengirimkan pesan
reboot
warning ke semua user
#
reboot
5.  Reboot juga dapat dilakukan dengan perintah
menggunakan opsi
shutdown
“-r” dan menentukan delai misalnya 10 menit.
#
shutdown –ry 10
Percobaan 6: Berpindah ke mode single user
1.   Beberapa aktifitas membutuhkan sistem untuk log off semua user, aplikasi dan
networkin g sehingga hanya sistem administrator yang mengakses sistem dari
console VGA.  Alasan lainnya adalah untuk memperbaiki password ”root”.
2.   Jika sistem berjalan normal, berpindah ke mode single user dapat dilakukan
dengan perintah init dan memasukkan runlevel  1.
#
init 1
3.   Perintah diatas tidak memberikan warning ke user dan perintah shutdown tidak
mempunyai opsi mode single user.   Hal  ini akan muncul dengan menjalankan
perintah shutdown dengan delay.
#
shutdown 1
Percobaan 7: Berpindah ke mode single user pada layar Grub
1.   Anda dapat masuk ke mode single user secara langsung setelah menghidupkan
power sistem.
2.   Hidupkan sistem Anda
3.   Jika screen Linux muncul, Anda dapat memilih kernel yang diinstal pada
sistem.  Ketik ”a” untuk ”append”.  Maka akan didapa tkan prompt untuk
menambah opsi boot pada file
.
grub.conf


PRAKTIKUM 10  LINUX  BOOTING PROCESS
139
grub append>
ro root=LABEL=/
4.  Tambahkan “1” pada akhir string
grub append>
ro root=LABEL=/1
5.  Tekan Enter.  Sistem akan melanjutkan booting, tetapi akan menuju ke promp
root # tanpa menanyakan username dan password
Percobaan 8: Berpindah ke default runlevel dari mode single user
1.  Perintah “exit” akan menyebabkan sistem keluar dari runlevel 1 dan mengubah
ke default runlevel untuk sistem.  Anda juga dapat menggunakan perintah init
(misalnya “init 3” dan “init 5”)
bash-2.05b#
exit
Percobaan 9: Memperbaiki password root
3.  Kadangkala anda kehilangan atau lupa pada password root, atau sistem
administrator sebelumnya tidak memberi password kepada Anda
4.  Masuk ke console VGA dan tekan <CTRL> <ALT> <DEL>.  Sistem akan
shutdown
5.  Reboot sistem dan masuk ke  mode single user
6.  Setelah masuk ke command prompt, ubahlah password root.  Mode single user
mengasumsikan orang pada consol sebagai “root”, sehingga anda tidak perlu
menentukan nama user “root”
7.  Masuk ke default runlevel dengan menggunakan perintah “exit”.


PRAKTIKUM 10  LINUX BOOTING PROCESS
140
Percobaan 10 : Menggunakan perintah chkconfig
1.  Perintah
digunakan untuk melihat aplikasi mana yang dimulai
chkconfig
pada setiap runlevel.  Opsi ”—list” untuk melihat daftar paket pada /etc/init.d
dan runlevel yang ”on” atau ”off”
#
chkconfig –list
2.  Anda dapat menggunakan
untuk  mengubah runlevel untuk paket
chkconfig
tertentu.   Misalnya Sendmail akan dimulai pada startup runlevel 3 atau 5.
Ubahlah Sendmail tidak dimulai pada saat boot.
3.  Perintah
dapat digunakan dengan
untuk menentukan run
chkconfig
grep
level dimana Sendmail akan berjalan.   Disini terlihat berjalan pada level 3 dan
5.
#
chkconfig –list | grep mail
4.  Perintah
dengan opsi “—level” mengindikasikan bahwa beberapa
chkconfig
aksi dikerjakan pada runlevel yang dimasukkan seba gai nilai.  Argumen
pertama pada perintah adalah paket dan argumen kedua apakah “on” atau
“off”.  Dalam hal ini Anda ingin Sendmail tidak dimulai jika masuk ke
runlevel 3 dan 5
#
chkconfig –level 35 sendmail off
5.  Hal tersebut juga dapat dilakukan tanpa ops i “—level”, otomatis chkconfig
akan mengubah runlevel 3 dan 5
#
chkconfig sendmail off
6.  Anda juga dapat shutdown permanen dan stop dari running saat ini.
#
service sendmail stop
7.  Anda dapat menggunakan
untuk memeriksa  kembali  pekerjaan
chkconfig
Anda
#
chkconfig –list | grep mail


PRAKTIKUM 10  LINUX  BOOTING PROCESS
141
LATIHAN:
1.   Pada percobaan 1  lihatlah urutan eksekusi pada saat startup dan shutdown  pada
runlevel 5 untuk file :
a.  netfs
b.   pcmcia
c.  nfslock
d.   kudzu
e.  portmap
f.  wlan
g.   isdn
h.   ne twork
i.  syslog
j.  keytable
2.   Laporkan hasil perubahan password  pada mode single user  pada percobaan 9.
Gunakan password root “redhat” (jangan lainnya !).
3.   Apakah kegunaan menggunakan perintah service ?   Berikan contoh.
4.   Apa kegunaan menggunakan perintah chkconfig  ?  Berikan contoh.
LAPORAN RESMI:
1.   Analisa hasil percobaan yang Anda lakukan.
2.   Kerjakan latihan diatas dan analisa hasil tampilannya.
3.   Berikan kesimpulan dari praktikum ini.

READMORE
 

Manajemen Aplikasi


Manajemen Aplikasi


POKOK BAHASAN :
Redhat Package Manager
Tar, Gzip

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengerti konsep RPM, TAR dan GZIP.
Menggunakan RPM.
Menggunakan TAR dan GZIP untuk  instalasi software .

DASAR TEORI:

1  MANAJEMEN PAKET SOFTWARE
Setiap system Linux mempunyai manajemen paket software,  yang
paling popular adalah RPM (RedHat Package Management).
RPM mengatur instalasi paket software, maintenance/upgrade dan
menghapus paket software dari system, atau lebih dikenal dengan install dan
uninstall (install / remove).
RPM menyimpan informasi tentang paket yang diinstalasi dalam sebuah
database.  Penghapusan paket berarti juga menghapus semua files dan direktori
yang terdaftar pada database tersebut, lengkap dengan nama PATH (lokasi diman
afile dan direktori tersebut berada).
150


PRAKTIKUM 12  MANAJEMEN APLIKASI
151
RPM menyimpan paket dalam bentuk file yang telah dikompres dan
ditulis sebagai file degan ekstensi *.rpm.

2  FUNGSI MANAJER PAKET SOFTWARE
•
Menghitung besar paket yang disesuaikan dengan kapasitas penyimpanan
disk yang masih tersedia, apakah cukup atau tidak.
•
Memeriksa apakah ada library atau file- file lain yang dibutuhkan untuk
software tersebut.
•
Menghindari konflik dengan software yang telah terpasang di system.
•
Proses instalasi tidak mengacaukan system (membuat system file menjadi
terganggu / korup).
•
Upgrade ke versi yang baru tanpa mengganggu konfigurasi yang sudah ada.
•
Verifikasi files dalam paket tersebut.

3  PAKET SOFTWARE
Terdiri dari 2 jenis :
1.
Paket binary (biner)
Terdiri atas kumpulan program executable.  Paket ini berekstensi *.rpm.
2.
Paket source
Berisi teks dari program yang kemudian dapat dikompilasi menjadi executable.
Paket ini mempunyai ekstensi *.src.rpm.

4  NAMA PAKET
Penamaan paket diatur dengan konvensi sebagai berikut   :
•
Nama
•
Versi
•
Release
•
Platform arsitektur (Intel, Alpha, Risc, …)


PRAKTIKUM 12  MANAJEMEN APLIKASI
152
xyz-1.2-6.i386.rpm
nama  versi  release  platform
Platform :
i386  Intel
alpha   DEC
sparc   SUN
mips   MIPS
ppc   PowerPC
m68k   Motorola 680x0
noarch  Bebas, tanpa platform

5  RPM QUERY
RPM dengan opsi
–q
memberikan informasi tentang paket sebagai berikut :
#
rpm –q samba
samba –2.0.5-1S
#
Informasi tentang versi paket samba adalah versi 2.0.5.
Beberapa sub- opsi dapat diberikan, antara lain :
i    menampilkan informasi yang lebih rinci
l    list (daftar) semua file(s)
d    tampilkan hanya file dokumentasi saja
c    tampilkan hanya konfigurasi file
f    info tentang paket memiliki file apa saja
p    berfungsi pada paket yang belum diinstalasi
--scripts  menampilkan script untuk instalasi

6  TAR
Tar singkatan dari Tape ARchive. Tar mula -mula didesain untuk backup tape,
tetapi digunakan untuk membuat file tar pada semua sistem file.  tar membuat satu "tar


PRAKTIKUM 12  MANAJEMEN APLIKASI
153
file" (yang disebut dengan "tarball") pada beberapa file dan direktori. File tar tidak
dikompresi, hanya sebuah file heap yang dibentuk bersama dalam satu kontainer.
Sehingga file tar akan mempunyai jumlah byte yang sama dengan semua file individu
yang dikombinasikan ditambah sedikit file ekstra.  File tar dapat dikompresi dengan
menggunakan gzip atau bzip2.
Contoh :
•
mengekstraksi isi dari
dan
tar  –xvf example.tar
example.tar
menunjukkan file yang akan diekstraksi
membuat file tar bernama
•
tar  –cf backup.tar /home/ftp/pub
dari isi direktori
backup.tar
/home/ftp/pub
•
menampilkan isi dari example.tar pada screen.
tar –tvf example.tar

7  GZIP
Gzip merupakan format ZIP UNIX yang asli.  Biasanya membentuk file tar
terlebih dahulu dan kemudian mengkompresi dengan menggunakan gzip.  File -file ini
mempunyai ekstensi .tar.gz yang menunjukkan file tar yang di- zip dengan gzip.  Selain
itu juga terdapat file berekstensi .tgz.  File ini merupakan file kompresi dengan gzip
yang kompatibel dengan WinZip dan PkZip.  Sehingga file zip pada UNIX dapat di
unzip pada Windows.
Contoh :
•
Untuk kompresi file menggunakan gzip, eksekusi perintah berikut  : gzip
filename.tar (dimana filename.tar adalah nama file yang dikompres).  Hasil dari
operasi ini adalah file yang bernama filename.tar.gz.  Defaultnya, gzip akan
menghapus file filename.tar
•
Untuk dekompresi file menggunakan gzip, eksekusi perintah berikut : gzip  –d
filename.tar.gz.  Hasil dari operasi ini adalah file bernama filename.tar.  Defaultnya,
gzip akan menghapus file filename.tar.gz


PRAKTIKUM 12  MANAJEMEN APLIKASI
154

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan,  jawablah pertanyaan-pertanyaan berikut ini   :
1.   Apa yang dimaksud dengan RPM ? Sebutkan fungsi-fungsi RPM.
2.   Sebutkan opsi-opsi yang digunakan pada perintah
dan jelaskan maksudnya.
rpm
3.   Apa yang dimaksud dengan perintah
?
tar
4.   Apa yang dimaksud dengan perintah
?
gzip

PERCOBAAN :
1.   Login sebagai root.
2.   Bukalah Console Terminal dan lakukan percobaan- percobaan di bawah ini
kemudian analisa hasil percobaan.
3.   Selesaikan soal-soal  latihan.


PRAKTIKUM 12  MANAJEMEN APLIKASI
155

Percobaan 1 : RPM Query
1.   Pada percobaan ini paket samba dapat didownload pada website
http://www.samba.org
.  Tetapi pada percobaan ini sudah disediakan pada
halaman website ini.
2.   Ekstrak file samba menggunakan perintah tar
#
tar –xvf samba
3.   Informasi tentang paket software
#
rpm –qi samba | more
4.   Instal dari CDROM, bukan dari paket yang sudah diinstalasi.  Untuk itu
pindah direktori ke tempat dimana file rpm tersebut berada
#
cd /mnt/cdrom/Packages/RPMS
#
rpm –qpi samba-2.0.5-1S.i386.rpm | more
5.   Melihat files apa saja yang sudah diinstalasi, gunakan sub-opsi –l.
#
rpm –ql samba | more
6.   Melihat file konfigurasi
#
rpm –qc samba | more
7.   Melihat dokumentasi file
#
rpm –qd samba | more
8.   Melihat script file yang digunakan untuk instalasi.  Perhatikan bahwa hasil
output tergantung atas versi Linux yang digunakan
#
rpm –q --scripts samba


PRAKTIKUM 12  MANAJEMEN APLIKASI
156

Percobaan  2  : Menghapus Paket
1.  Opsi  –e digunakan untuk menghapus paket yang sudah instalasi.  Bila ada
ketergantungan paket lain atas paket yang akan dihapus, maka RPM
membatalkan penghapusan tersebut
#
rpm –q apache
#
rpm –e apache
2.  Paket apache tidak bisa dihapus karena masih ada paket lain yang tergantung
atas paket tersebut, yaitu modul PHP.  Maka paket mod_php3 harus dihapus
lebih dahulu
#
rpm –e mod_php3
3.  Setelah itu paket apache baru bisa dihapus
#
rpm –e mod_php3
#
rpm –q --scripts samba

Percobaan 3 : Menggunakan TAR
1.  Logout dari root dan login sebagai <
>.
user
2.  Pastikan berada pada home directory.  Dan lihatlah isi home direktori  Pindah
ke direktori Desktop.  Setelah itu kembali ke home direktori
$
cd
$
ls –al
$
cd Desktop
$
cd
3.  Buatlah file tar pada direktori Desktop
$
tar –cvf desktop.tar Desktop
$
ls -al
4.  Rename direktori Desktop menjadi Desktop.old. Lihatlah file desktop.tar
pada direktori Desktop.old
$
mv Desktop Desktop.old
$
ls –l
$
cd Desktop.old
$
ls –l
$
cd ..


PRAKTIKUM 12  MANAJEMEN APLIKASI
157
5.  Ekstraksi isi dari file tar.  Lihatlah isi direktori dan seharusnya akan terlihat
direktori Desktop yang original
$
tar –xvf desktop.tar
$
ls –al
$
cd Desktop
6.  Hapus direktori Desktop
$
rm –rf Desktop

Percobaan 4 : Menggunakan GZIP
1.  Buatlah file gzip dari desktop.tar, pastikan terbentuk file desktop.tar.gz
$
gzip desktop.tar
$
ls –al
2.  Dekompresi file gzip desktop.tar.gz dan cobalah untuk ekstraksi isi file tar
$
gzip –d desktop.tar.gz
$
ls –al
$
tar –xvf desktop.tar
$
ls –al
$
cd Desktop
3.  Hapus file tar dan direktori Desktop.old
$
rm desktop.tar
$
rm -rf Desktop.old

LATIHAN:
1.   Buatlah file menggunakan editor vi dengan nama [Nama Anda].txt.  Pada file ini
tuliskan langkah- langkah membuat file zip dari suatu direktori pada Linux.
Kemudian file tersebut buatlah menjadi file tar dan kompresi file tersebut
menggunakan gzip.


PRAKTIKUM 12  MANAJEMEN APLIKASI
158

LAPORAN RESMI:
1.   Analisa hasil percobaan yang Anda lakukan.
2.   Kerjakan latihan diatas dan analisa hasil tampilannya.
3.   Berikan kesimpulan dari praktikum ini.

READMORE
 

Pemrograman Shell



Pemrograman Shell


POKOK BAHASAN :
Pemrograman Shell

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mempelajari elemen dasar shell script
Membuat program shell interaktif
Menggunakan parameter dalam program
Mempelajari test kondisi serta operator logic yang terkait dengan instruksi test
Mengenal variable built- in dari shell
Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
Menggunakan struktur case – esac.
Loop dengan while, for, do while.
Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.

DASAR TEORI:

1  SHELL SCRIPT
Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan
ekstensi “.sh”.  Script selalu diawali dengan komentar, yang dimulai dengan tanda #,
disambung dengan ! dan nama shell yang digunakan.
#!/bin/sh
# Program shell
#
var1=x
var2=8
66


PRAKTIKUM 6  PEMROGRAMAN SHELL
67
Awal dari program shell, komentar awal ini akan dibaca oleh system, kemudian
system mengaktifkan program shell (/bin/sh) yang tertera di situ.  Program shell
dapat dipilih, misalnya /bin/csh, /bin/ksh dan lainnya
Adalah komentar, sebagai dokumentasi, baris ini akan diabaikan oleh program
shell
Penggunaan variable (assignment), tidak boleh ada spasi di antara nama variable
dan konstanta

2  VARIABEL
Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String.
Tata penulisan variable adalah sebagai berikut :
nama_var =
nilai_var
Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter
lain.  Variabel dapat ditulis dalam  huruf kecil atau huruf besar atau campuran keduanya.
Shell membedakan huruf besar dan huruf kecil (
case sensitive
), contoh :
VPT=poltek
i=5
Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akan
menganggap pemisahan tersebut sebagai parameter, contoh :
VPT   =poltek    ##error
VPT=   poltek    ##error
Untuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama
variable tersebut.  Pada shell, instruksi echo dapat menampilkan isi variable tersebut,
contoh :
VPT=poltek
echo $VPT
Gaji=450000
echo $Gaji
echo $VPT $Gaji
Bila menggunakan string yang terdiri dari lebih dari satu kata, maka string
tersebut harus berada dalam tanda kutip atau apostrof, contoh :
VPT=poltek
VPT2=”poltek elektronika ITS”


PRAKTIKUM 6   PEM ROGRAMAN SHELL
68

3  MEMBACA KEYBOARD
Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi
.
read

4  PARAMETER
Sebuah program shell dapat mempunyai parameter sebanyak 9 buah dan
direpresentasikan melalui variable khusus yaitu variable $!, $2, $3, $4, $5, $6, $7, $8
dan $9.  Nama program she ll (nama script) direpresentasikan melalui variable $0.
Jumlah parameter dinyatakan sebagai $#.  Bila tidak memberikan parameter,
maka nilai $# adalah 0.
Shell variable $* menyatakan seluruh string yang menjadi parameter / argumen
sebuah script ($@ mempunyai arti yang sama).  $$ menyatakan nomor proses id (pid)
dari script yang dijalankan.  Pid ini akan terus berubah (umumnya) menaik, setiap kali
proses berjalan.

5  STATUS EXIT
Setiap program setelah selesai dieksekusi akan memberikan informasi melalui
variable spesial $?.  Indikasi yang diberikan adalah :
o
Bila program berakhir dengan sukses, $? = 0
o
Bila program berakhir dengan error,    $?
0
Nilai dari status exit dapat dilihat melalui instruksi echo $?

6  KONSTRUKSI IF
if
instruksi-awal
then
instruksi1
instruksi2
………………
fi
akan mengeksekusi instruksi-aw al, dan exit status dari instruksi tersebut akan
if
menjadi kondisi.  Bila 0, maka instruksi selanjutnyua masuk ke dalam blok
.  Bila
then
tidak 0, maka alur program diteruskan setelah kunci kata
.
fi


PRAKTIKUM 6  PEMROGRAMAN SHELL
69

7  KONSTRUKSI IF THEN ELSE
if
instruksi1
then
instruksi1.1
instruksi1.2
………………
else
instruksi2.1
instruksi2.2
………………
fi
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah
else akan dijalankan.

8  INSTRUKSI TEST
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi.
Ekspresi terdiri dari factor dan operator yang dipisahkan oleh spasi.  Hasil test akan
memberikan nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil
adalah
0.
•
Operator untuk test
Operator  0 atau TRUE, jika
Identical
string1 = string2
string1 != string2
Not identical
-n string
String is not null
-z string
String is null
•
Test untuk files dan directory
Test dapat dilakukan untuk memeriksa apakah file ada (Exist), dapat dibaca, dapat
ditulis, kosong dan lainnya.
Operator  0 atau TRUE, jika
-f namafile
File ada, file biasa
-d namafile
File ada, file adalah direktori
-r namafile
File dapat dibaca


PRAKTIKUM 6   PEM ROGRAMAN SHELL
70
File dapat ditulis
-w namafile
-x namafile
File adalah executable
-s namafile
File ada dan tidak kosong
-w namafile
File dapat ditulis
Untuk memudahkan pembacaan (readability), test dapat ditulis dengan
[ ekspresi ]
sebenarnya adalah nama lain dari test, bedanya
akan mencari kurung
[
[
penutup
pada akhir ekspresi yang harus dipisahkan oleh spasi.
]

9  LOGICAL && DAN || (SHELL LEVEL)
Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai
alternatif untuk if then else.  Notasi && dan || sering ditemukan dalah shell script
system administrator untuk menjalankan routine dari system operasi.
•
instruksi1 && instruksi2
shell akan mengeksekusi
, dan bila exit status
adalah
instruksi1
instruksi1
FALSE, maka hasil dari AND tersebut sudah pasti sama dengan FALSE, sehingga
tidak mempunyai pengaruh lagi.  Oleh karena itu,
instruksi2
instruksi2
tidak dijalankan.  Sebaliknya bila hasil
adalah TRUE(0), maka
instruksi1
dijalankan
instruksi2
•
instruksi1 || instruksi2
shell akan menge ksekusi
, bila exit status adalah TRUE(0), hasil dari
instruksi1
operasi OR tersebut sudah pasti menghasilkan TRUE, terlepas dari hasil eksekusi
.  Oleh karena itu
tidak perlu dijalankan.  Bila hasil
instruksi2
instruksi2
adalah FALSE, maka
akan dijalankan
instruksi1
instruksi2
.

10  OPERATOR BILANGAN BULAT UNTUK TEST
Untuk membandingkan 2 buah bilangan, test memerlukan operator yang
berbeda dengan string.


PRAKTIKUM 6  PEMROGRAMAN SHELL
71
Operator  0 atau TRUE, jika
Bilangan sama
i1 –eq i2
i1 –ge i2
Lebih besar atau sama dengan
i1 –gt i2
Lebih besar
i1 –le i2
Lebih kecil atau sama dengan
i1 –lt i2
Lebih kecil
i1 –ne i2
Bilangan tidak sama

11  OPERATOR LOGICAL (TEST LEVEL)
Logical operator terdiri dari AND, OR dan NOT.  Operator ini menggabungkan
hasil ekspresi sebagai berikut :
NOT
: symbol
!
!
True   False
False  True
AND
: symbol
-a
V1   V2  V1 –a V2
False  False  False
False  True   False
True  False  False
True  True   True
OR
: symbol
-o
V1   V2  V1 –o V2
False  False  False
False  True   True
True  False  True
True  True   True


PRAKTIKUM 6   PEM ROGRAMAN SHELL
72

12  KONSTRUKSI IF THEN ELSE IF
if
instruksi1
then
instruksi1.1
instruksi1.2
………………
elif
instruksi2
then
instruksi2.1
instruksi2.2
………………
else
instruksi3.1
instruksi3.2
………………
fi
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah
else akan dijalankan.

13  HITUNGAN ARITMETIKA
Tipe dari variable SHELL hanya satu yaitu STRING.  Tidak ada tipe lain
seperti Numerik, Floating, Boolean ata u lainnya.  Akibatnya variable ini tidak dapat
membuat perhitungan aritmetika, misalnya :
A=5
B=$A +1  ## error
UNIX menyediakan utilitas yang bernama
expr
yaitu suatu utilitas yang
melakukan aritmetika sederhana.

14  INSTRUKSI EXIT
Program dapat dihentikan (terminated/selesai) dengan instruksi exit.  Sebagai
nilai default program tersebut akan memberikan status exit 0.


PRAKTIKUM 6  PEMROGRAMAN SHELL
73

15  KONSTRUKSI CASE
Case digunakan untuk menyederhanakan pemakaian if yang berantai,
sehingga dengan case, kondisi dapat dikelompokkan secara lo gis dengan lebih
jelas dan mudah untuk ditulis.
case variable in
match1)
instruksi1.1
instruksi1.2
………………
;;
match2)
instruksi2.1
instruksi2.2
………………
;;
*)
instruksi3.1
instruksi3.2
………………
;;
esac
Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;;.  Pada
akhir pilihan yaitu *) yang berarti adalah “default”, bila kondisi tidak memenuhi pola
sebelumnya

16  KONSTRU KSI FOR
For digunakan untuk pengulangan dengan menggunakan var yang pada
setiap pengulangan akan diganti dengan nilai yang berada pada daftar (list).
for var in str
1
str
2
…..str
n
do
instruksi1
instruksi2
………………
done


PRAKTIKUM 6   PEM ROGRAMAN SHELL
74

17  KONSTRUKSI WHILE
While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan
suatu kondisi.  Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan.
Loop akan berhenti, bila kondisi FALSSE, atau program keluar dari blok while melalui
exit atau break.
while
kondisi
do
instruksi1
instruksi2
………………
done

18  INSTRUKSI DUMMY
Instruksi dummy adalah instruksi yang tidak melakukan apa -apa, namun
instruksi ini memberikan status exit 0 (TRUE).  Oleh karena itu, instruksi dummy dapat
digunakan sebagai kondisi forever pada loop (misalnya while).
Simbol instruksi dummy adalah
:

19  FUNGSI
Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan
menggunakan notasi NamaFungsi().  Fungsi memberikan exit status ($?) yang
dinyatakan dengan
return nr
, atau nilai 0 sebagai default.
Membuat fungsi diawali dengan nama fungsi, parameter, kemudian blok
program yang dinyatakan dalam { … }.
Contoh :
F1( ) {
……..
……..
return 1
}
Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global.
Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi,


PRAKTIKUM 6  PEMROGRAMAN SHELL
75
jangan sampai bentrok dengan nama variable yang sam adi luar fungsi, sehingga tidak
terjadi isi variable berubah.

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, bacalah dasar teori diatas kemudian buatlah
program Shell untuk Latihan 1 sampai dengan 5.

PERCOBAAN :
1.   Login sebagai user.
2.   Bukalah Console Terminal dan lakukan percobaan- percobaan di bawah ini
kemudian analisa hasil percobaan.
3.   Selesaikan soal-soal  latihan.


PRAKTIKUM 6   PEM ROGRAMAN SHELL
76
Percobaan 1  : Membuat shell script
1.  Buatlah  file prog01.sh dengan editor vi
$
vi prog01.sh
#!/bin/sh
# Program shell
#
var1=x
var2=8
2.  Untuk menjalankan shell, gunakan notasi TITIK di depan nama program
$
. prog01.sh
3.  Untuk menjalankan shell, dapat juga dengan  membuat executable file dan
dieksekusi relatif dari current directory
$
chmod +x prog01.sh
$
./prog01.sh
Percobaan 2 :  Variabel
1.  Contoh menggunakan variable pada shell interaktif
$
VPT=poltek
$
echo $VPT
2.  Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah instruksi.
Karakter $ harus ada pada awal nama variable untuk melihat isi variable
tersebut, jika tidak, maka echo akan mengambil parameter tersebut sebagai
string.
(Terdapat pesan error)
$
VPT2=poltek elektronika
$
VPT2=”poltek elektronika”
$
echo VPT2
$
echo $VPT2
3.  Menggabungkan dua variable atau lebih
$
V1=poltek
$
V2=’:’
$
V3=elektronika
$
V4=$V1$V2$V3
$
echo $V4


PRAKTIKUM 6  PEMROGRAMAN SHELL
77
4.  Menggabungkan isi variable dengan string yang lain.  Jika digabungkan
dengan nama variable ya ng belum didefinisikan (kosong) maka instruksi echo
menghasilkan string kosong.  Untuk menghindari kekeliruan, nama variable
perlu diproteksi dengan { } dan kemudian isi variable tersebut digabung
dengan string.
$
echo $V3
$
echo $V3ITS
$
echo ${V3}ITS
5.  Variabel dapat berisi instruksi, yang kemudian bila dijadikan input untuk
shell, instruksi tersebut akan dieksekusi
$
CMD=who
$
$CMD
$
CMD=”ls –l”
$
$CMD
6.  Modifikasi file
berikut
prog01.sh
$
vi prog01.sh
#!/bin/sh
V1=poltek
V2=’:’
V3=elektronika
echo “Pemrograman shell”
echo $V1$V2$V3
V3=ITS
echo $V1$V2 di $V3
7.  Cara sederhana mengeksekusi shell adalah dengan menggunakan notasi titik
di depan nama shell script tersebut.  Bila direktori actual tidak terdaftar dalam
PATH, maka command tersebut tidak dapat ditemukan.  Bila script belum
executable, script tidak dapat dieksekusi.
$
. prog01.sh
(Terdapat pesan error)
$
prog01.sh
(Terdapat pesan error)
$
./prog01.sh
$
chmod +x prog01.sh
$
./prog01.sh


PRAKTIKUM 6   PEM ROGRAMAN SHELL
78
Percobaan 3 : Membaca keyboard
1.  Menggunakan instruksi
read
$
read nama
amir
$
echo $nama
2.   Membaca nama dan alamat dari keyboard
$
vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat
echo “Nama Anda : “
read nama
echo “Alamat : “
read alamat
echo “Kota : “
read kota
echo
echo “Hasil adalah : $nama, $alamat di $kota”
3.  Eksekusi program
prog02.sh
$
. prog02.sh
Nama Anda :
Amir
Alamat :
Jl semangka 67
Kota :
Surabaya
Hasil adalah : Amir, Jl semangka di Surabaya
4.  Instruksi echo secara otomatis memberikan baris baru, maka untuk
menghindari hal tersebut disediakan opsi  –n, yang menyatakan kepada  echo
untuk menghilangkan baris baru.  Modifikasi program
prog02.sh
$
vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat


PRAKTIKUM 6  PEMROGRAMAN SHELL
79
echo –n “Nama Anda : “
read nama
echo –n “Alamat : “
read alamat
echo –n “Kota : “
read kota
echo
echo “Hasil adalah : $nama, $alamat di $kota”
5.  Eksekusi program
prog02.sh
$
. prog02.sh
Nama Anda :
Amir
Alamat :
Jl semangka 67
Kota :
Surabaya
Hasil adalah : Amir, Jl semangka di Surabaya
6.   Variabel kosong adalah variable yang tidak mempunyai nilai.  Variabel ini
didapat atas assignment atau membaca dari keyboard atau variable yang
belum didefinisikan
$
read nama
<CR>
$
echo $nama
$
A=
$
B=””
$
C=$A$B
$
echo $C
7.  Variabel dapat disubtitusikan dengan hasil eksekusi dari sebuah instruksi.
Pada contoh dibawah , instruksi pwd dieksekusi lebih dahulu dengan
sepasang Back Quate  (tanda kutip terbalik).  Hasil dari eksekusi tersebut akan
masuk sebagai nilai variable DIR
$
pwd
$
DIR=`pwd`
$
echo $DIR


PRAKTIKUM 6   PEM ROGRAMAN SHELL
80
8.   Buatlah shell script
prog03.sh
$
vi prog03.sh
#!/bin/sh
# prog03.sh
#
NAMA=`whoami`
echo Nama Pengguna Aktif adalah $NAMA
tanggal=`date | cut –c1-10`
echo Hari ini tanggal $tanggal
9.  Eksekusi
prog03.sh
$
. prog03.sh
Percobaan 4 :  Parameter
1.   Membuat shell script
prog04.sh
$
vi prog04.sh
#!/bin/sh
# prog04.sh versi 1
# Parameter passing
#
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
2.   Eksekusi
tanpa parameter, dengan 2 parameter, dengan 4
prog04.sh
parameter
$
. prog04.sh
$
. prog04.sh amir hasan
$
. prog04.sh amir hasan badu ali


PRAKTIKUM 6  PEMROGRAMAN SHELL
81
3.   Membuat shell script
versi 2 dengan memberikan jumlah
prog04.sh
parameter
$
vi prog04.sh
#!/bin/sh
# prog04.sh versi 2
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
4.   Eksekusi
tanpa parameter dan dengan 4 parameter
prog04.sh
$
. prog04.sh
$
. prog04.sh amir hasan badu ali
5.  Membuat shell script
versi 3 dengan menambahkan total
prog04.sh
parameter dan nomor proses id (PID)
$
vi prog04.sh
#!/bin/sh
# prog04.sh versi 3
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
echo “Total parameter adalah $*”
echo “PID proses shell ini adalah $$”
6.  Eksekusi
dengan 4 parameter
prog04.sh
$
. prog04.sh amir hasan badu ali


PRAKTIKUM 6   PEM ROGRAMAN SHELL
82
Percobaan 5 :  Status Exit
1.  String tidak diketemukan, maka status exit adalah 1
$
grep xyz /etc/passwd
$
echo $?
2.  String diketemukan, maka status exit adalah 0
$
grep <user> /etc/passwd
$
echo $?
Percobaan 6 :  Konstruksi if
1.  Instruksi dengan exit status 0
$
who
$
who | grep <user>
$
echo $?
2.  If membandingkan exit status dengan 0, bila sama, maka blok program masuk
ke dalam blok then-fi
$
if [ $? = 0 ]
>
then
>
echo “Pemakai tersebut sedang aktif”
>
fi
3.  Nomor (1) dan (2) diatas dapat disederhanakan dengan
$
if who|grep <user> >/dev/null
>
then
>
echo okay
>
fi


PRAKTIKUM 6  PEMROGRAMAN SHELL
83
Percobaan 7 :  Konstruksi if then else
1.   Membuat shell script
prog05.sh
$
vi prog05.sh
#!/bin/sh
# prog05.sh
# Program akan memberikankonfirmasi apakah nama
# user sedang aktif atau tidak
#
echo –n “Berikan nama pemakai : ”
read nama
if who | grep $nama > /dev/null
then
echo “$nama sedang aktif”
else
echo “$nama tidak aktif”
fi
2.   Jalankan
, masukkan nama pemakai yang aktif yang tampil pada
prog05.sh
instruksi who dan coba juga untuk nama pemakai yang tidak aktif
$
who
$
. prog05.sh
[nama=<user>]
$
. prog05.sh
[nama=studentOS]

READMORE
 

Bab 5 Sinkronisasi Proses


Bab 5
Sinkronisasi Proses


POKOK BAHASAN:

·         Permasalahan Critical Section
·         Sinkronisasi Perangkat Keras
·         Semaphore
·         Masalah-masalah Klasik dalam Sinkronisasi

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
·         Memahami permasalahan critical section
·         Memahami algoritma sinkronisasi 
·         Memahami konsep semaphore untuk sinkronisasi proses
·         Memahami implementasi sinkronisasi dengan masalah-masalah klasik dalam
 sinkronisasi proses

5.1   LATAR BELAKANG
Proses-proses yang konkuren adalah proses-proses (lebih dari satu) berada
pada saat yang sama.  Proses-proses ini dapat sepenuhnya tak bergantung dengan yang
lainnya, tapi dapat juga saling berinteraksi.  Proses-proses yang berinteraksi
memerlukan sinkronisasi agar terkendali dengan baik.
Proses-proses yang melakukan akses secara konkuren pada data yang
digunakan bersama-sama menyebabkan data tidak konsisten (inconsistence).  Agar data
konsisten dibutuhkan mekanisme untuk menjamin eksekusi yang berurutan pada proses-
proses yang bekerja sama.  Pada model shared memory untuk penyelesaian 
permasalahan bounded-buffer paling banyak menyimpan n – 1 item pada buffer pada
saat yang bersamaan.  Untuk mendapatkan solusi dimana semua N buffer digunakan
bukan masalah yang sederhana.  Misalnya dilakukan modifikasi kode producer-
consumer dengan menambahkan variabel  counter yang diinisialisasi 0 dan dinaikkan
setiap satu item baru ditambahkan ke buffer.  Definisi data  yang digunakan bersama-
sama (shared data) adalah sebagai berikut :
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int counter = 0;

Proses pada producer akan menambahkan satu nilai variabel counter sebagai berikut :
 item nextProduced;
 while (1) {
  while (counter == BUFFER_SIZE)
   ; /* do nothing */
  buffer[in] = nextProduced;
  in = (in + 1) % BUFFER_SIZE;
   counter++;
 }
Sebaliknya juga proses pada consumer akan menurunkan satu nilai variabel counter
sebagai berikut :
  item nextConsumed;
 while (1) {
  while (counter == 0)
   ; /* do nothing */
  nextConsumed = buffer[out];
  out = (out + 1) % BUFFER_SIZE;
   counter--;
 }
Pernyataan  counter++  dan  counter--  harus dilakukan secara atomik. 
Operasi atomik adalah operasi yang harus menyelesaikan seluruh pernyataannya tanpa
interupsi.  Pernyataan counter++ akan diimplementasikan dalam bahasa mesin sebagai
berikut :
register1 = counter
 register1 = register1 + 1
counter = register1

Sedangkan pernyataan  counter--  akan diimplementasikan dalam bahasa mesin
sebagai berikut :
register1 = counter
 register1 = register1 + 1
counter = register1

Apabila baik producer dan consumer mencoba mengubah buffer secara
konkuren, pernyataan dalam bahasa mesin diatas akan dilakukan secara terpisah. 
Misalnya counter diinisialisasi 5.  Pernyataan yang dijalankan adalah :
producer: register1 = counter (register1 = 5)
producer: register1 = register1 + 1 (register1 = 6)
consumer: register2 = counter (register2 = 5)
consumer: register2 = register2 – 1 (register2 = 4)
producer: counter = register1 (counter = 6)
consumer: counter = register2 (counter = 4)
Nilai  counter kemungkinan bernilai 4 atau 6, sedangkan hasil yang benar
seharusnya 5, hal ini yang dimaksud dengan data yang tidak konsisten.  Situasi dimana
beberapa proses mengakses dan memanipulasi data yang digunakan bersama-sama
secara konkuren disebut dengan race condition.  Nilai akhir dari data yang digunakan
bersama-sama tersebut tergantung dari proses yang terakhir selesai.  Untuk mencegah
race condition tersebut, proses yang konkuren harus dilakukan sinkronisasi.

 5.2   PERMASALAHAN CRITICAL-SECTION (CRITICAL-SECTION PROBLEM)
Suatu system terdiri dari n proses dimana semuanya berkompetisi menggunakan
data yang digunakan bersama-sama.  Masing-masing proses mempunyai sebuah kode
segmen yang disebut dengan  critical section, dimana proses memungkinkan untuk
mengubah variabel umum, mengubah sebuah tabel, menulis file dan lain sebagainya. 
Gambaran penting dari sistem adalah, ketika sebuah proses dijalankan di dalam critical
section, tidak ada proses lain yang diijinkan untuk menjalankan  critical section-nya. 
Sehingga eksekusi dari  critical section oleh proses-proses tersebut berlaku eksklusif
(mutually exclusive).  Permasalahan critical section digunakan untuk mendesain sebuah
protokol dimana proses-proses dapat bekerja sama.  Masing-masing proses harus
meminta ijin untuk memasuki  critical section-nya.  Daerah kode yang
mengimplementasikan perintah ini disebut daerah  entry.   Critical section biasanya
diikuti oleh daerah exit.  Kode pengingat terletak di daerah remainder.
Sebuah solusi dari permasalahan  critical section harus memenuhi 3 syarat
sebagai berikut :
1.  Mutual Exclusion.  Apabila proses Pi  menjalankan critical section-nya, maka tidak
ada proses lain yang dapat menjalankan critical section.
2.  Progress.  Apabila tidak ada proses yang menjalankan  critical section-nya dan
terdapat beberapa proses yang akan memasuki  critical section-nya, maka hanya
proses-proses itu yang tidak diproses di dalam daerah pengingat (remainder) dapat
ikut berpartisipasi di dalam keputusan proses mana yang akan memasuki  critical
section selanjutnya, dan pemilihan ini tidak dapat ditunda tiba-tiba.
3.  Bounded Waiting.  Terdapat batasan jumlah waktu yang diijinkan oleh proses lain
untuk memasuki critical section setelah sebuah proses membuat permintaan untuk
memasuki critical section-nya dan sebelum permintaan dikabulkan.
Asumsi bahwa masing-masing proses dijalankan pada kecepatan bukan nol
(nonzero).  Akan tetapi tidak ada asumsi mengenai kecepatan relatif dari proses ke n.
Pemecahan masalah critical section tidak mengandalkan semua asumsi tentang
instruksi hardware atau jumlah prosessor dari hardware yang mendukung.  Akan tetapi,
diasumsikan bahwa instruksi dasar bahasa mesin (instruksi primitif, misalnya  load,
store dan  test) dijalankan secara otomatis.  Sehingga apabila dua instruksi dijalankan
bersama-sama, hasilnya ekuivalen dengan deret eksekusi dalam beberapa pesanan yang
tidak diketahui.  Sehingga apabila perintah  load dan  store dijalankan bersama-sama,
perintah  load  akan mempunyai nilai lama atau nilai baru, tetapi tidak kombinasi dari
kedua perintah itu.
Ketika mengimplementasikan suatu algoritma, kita menentukan dahulu hanya
variable-variabel yang digunakan untuk keperluan sinkronisasi dan menggambarkan
hanya proses Pi seperti struktur seperti Gambar 5-1.  Entry section dan exit section di
dalam kotak untuk menunjukkan segmen kode yang penting.  Proses-proses
kemungkinan menggunakan variabel-variabel umum untuk sinkronisasi kegiatannya.

do {

critical section

remainder section
} while(1)



5.2.1  Pemecahan Dua Proses
Pada sub bab ini kita membatasi pada algoritma yang dapat diaplikasikan
hanya terhadap dua proses pada satu waktu.  Proses tersebut diberi nama P0 dan  P1. 
Untuk jelasnya, ketika menyatakan Pi, kita gunakan Pj untuk menyatakan proses yang
lain, dimana j = 1 – i.

5.2.1.1 Algoritma 1
Pendekatan pertama adalah memperbolehkan semua proses menggunakan
variable integer turn diinisialisasi ke 0 (atau 1).  
int turn;
Apabila turn = i, maka proses Pi diijinkan untuk menjalankan critical section – nya. 
Struktur dari proses Pi adalah sebagai berikut :

entry section
exit section
Gambar 5-1 : Struktur umum dari proses Pi
do {
while (turn != i) ;
    critical section
turn = j;
reminder section
} while (1);

Pemecahan ini menjamin hanya satu proses pada satu waktu yang dapat berada
di critical section.  Tetapi hal ini tidak memuaskan kebutuhan progress, karena hal ini
membutuhkan proses lain yang tepat pada eksekusi dari  critical section.  Sebagai
contoh, apabila  turn=0 dan  P1 siap untuk memasuki  critical section,  P1  tidak dapat
melakukannya, meskipun P0 mungkin di dalam remainder section – nya.

5.2.1.2 Algoritma 2
Kelemahan dengan algoritma 1 adalah tidak adanya informasi yang cukup
tentang state  dari masing-masing proses.  Untuk mengatasi masalah ini dilakukan
penggantian variabel turn dengan array
boolean flag[2];
Inisialisasi awal flag [0] = flag [1] = false.  Apabila flag[i] bernilai true, 
nilai ini menandakan bahwa  Pi  siap  untukmemasuki  critical section.  Struktur dari
proses Pi adalah sebagai berikut :
do {
  flag[i] := true;
while (flag[j]) ;
 critical section
   flag [i] = false;
   remainder section
 } while (1);

Pemecahan ini menjamin  mutual exclusion, tetapi masih belum memenuhi
progress .


5.2.1.3 Algoritma 3
Algoritma ini merupakan kombinasi algoritma 1 dan algoritma 2.  Harapannya
akan didapatkan solusi yang benar untuk masalah  critical-section, dimana proses ini
menggunakan dua variabel :
int turn;
boolean flag[2];
Inisialisasi flagI[0] = flag[1] = false  dan nilai dari turn bernilai 0 atau 1. 
Struktur dari proses Pi adalah :
do {
flag [i]:= true;
  turn = j;
  while (flag [j] and turn = j) ;
critical section
flag [i] = false;
remainder section
} while (1);

Algoritma ketiga ini memenuhi ketiga kebutuhan diatas yaitu  mutual exclusion,
progress dan  bounded waiting  dan memecahkan permasalahan  critical section untuk
dua proses.

5.2.2  Algoritma Bakery
Algoritma Bakery adalah algoritma yang digunakan untuk pemecahan
permasalahan critical section pada n proses.  Sebelum memasuki critical section, proses
menerima nomo.  Proses yang mempunyai nomor terkecil dapat memasuki  critical
section.  Jika proses Pi dan Pj menerima nomor yang sama, jika  i <  j maka Pi dilayani
lebih dahulu, sebaliknya Pj akan dilayani lebih dahulu.  Skema pemberian nomor selalu
membangkitkan nomor dengan menaikkan nilai urut misalnya 1, 2, 3, 3, 3, 3, 4, 5, ….. 
Pada algoritma bakery terdapat notasi <≡ untuk urutan nomor (ticket #, process id #)
sebagai berikut :
•  (a,b) < (c,d) if a < c or if a = c and b < d
•  max (a0,…,  an-1) is a number,  k, such that  k  ≥ ai for  i - 0, 
…, n – 1
Variabel umum  yang digunakan adalah :
  boolean choosing[n];
 int number[n];
Struktur data diatas diinisialisasi false dan 0.  Struktur dari proses Pi adalah :
do { 
 choosing[i] = true;
 number[i] = max(number[0], number[1], …, number [n – 1])+1;
 choosing[i] = false;
 for (j = 0; j < n; j++) {
  while (choosing[j]) ; 
  while ((number[j] != 0) && (number[j],j < number[i],i)) ;
 }
   critical section
 number[i] = 0;
   remainder section
} while (1);


5.3   PERANGKAT KERAS SINKRONISASI
Pada sistem multiprosessor, proses-pmroses bertindak independen.  Interupsi di
satu pemroses tidak mempengaruhi pemroses-pemroses yang lain.  Pemroses-pemroses
yang memakai memori bersama maka pengaksesan terhadap suatu memori dijaga pada
tingkat perangkat keras agar tidak boleh pemroses lain tidak dapat mengakses suatu
lokasi yang sama di saat yang sama.
Perancang perangkat keras menyediakan instruksi-instruksi atomik yang tak
dapat diinterupsi.  Instruksi dilaksanakan sampai selesai.  Instruksi ini biasanya
dilaksanakan dengan cara mngunci bus sehingga pemroses-pemroses lain tak dapat
menggunakan bus.  Pemroses yang mengunci bus dengan leluasa membaca dan/atau
memodifikasi suatu lokasi memori.
Beragam instruksi mesin disediakan oleh perancang pemroses guna membantu
implementasi mutual exclusion. 
•  tsl (test and set lock)
•  tas atau ts (test and set), digunakan IBM S/360, keluarga Motorola M68000, dan
lain-lain
•  cs (compare and set), digunakan IBM 370 series
•  exchange (xchg), digunakan intel X86
•  dsb

5.3.1  Metode Test and Set
Metode Test and Set melakukan testing dan memodifikasi isi memori secara
atomik menggunakan fungsi Test and Set sebagai berikut :
boolean TestAndSet (boolean &target)
{
boolean rv = target;
 tqrget = true;
 return rv;
}

Untuk menyelesaikan permasalahan mutual exclusion dengan metode Test and
Set maka digunakan variable umum berikut :
  boolean lock = false;
Sedangkan Process Pi mempunyai struktur sebagai berikut :
  do {
   while (TestAndSet(lock)) ;
     critical section
   lock = false;
     remainder section
  }

5.3.2  Metode Swap
Metode swap menggunakan prosedur swap untuk menukar dua variable secara
atomic.  Prosedur swap adalah sebagai berikut :

  void Swap(boolean &a, boolean &b) {
    boolean temp = a;
    a = b;
    b = temp;
  }
Untuk menyelesaikan permasalahan  mutual exclusion menggunakan prosedur swap,
variabel umum yang digunakan adalah
   boolean lock;
  boolean waiting[n];
Kedua variable diatas diinisialisasi  false.  Sedangkan struktur process  Pi  adalah
sebagai berikut :
  do {
    key = true;
    while (key == true) 
     Swap(lock,key);
       critical section
     lock = false;
      remainder section
   }


5.4   SEMAPHORE
Semaphore adalah pendekatan yang dikemukakan Dijkstra.  Prinsip semaphore
adalah sebagai berikut :  Dua proses atau lebih dapat bekerja sama dengan
menggunakan penanda-penanda sederhana.  Proses dipaksa berhenti sampai proses
memperoleh penanda tertentu.  Sembarang kebutuhan koordinasi kompleks dapat
dipenuhi dengan strukstur penanda yang sesuai kebutuhannya.  Variabel khusus untuk
penandaan ini disebut semaphore.
Semaphore  adalah alat untuk sinkronisasi yang tidak membutuhkan  busy
waiting.  Semaphore S  berupa variable integer.  Semaphore hanya dapat diakses melalui
operasi atomic yang tak dapat diinterupsi sampai kode selesai.  Operasi dari semaphore
S adalah wait dan signal berikut :
wait (S):  
while S≤ 0 do no-op;
S--;

signal (S): 
S++;

Adanya semaphore mempermudah penyelesaian persoalan critical section pada
n proses.  Penyelesaian critical section menggunakan semaphore menggunakan variabel
umum berikut :
semaphore mutex; 
Variabel  semaphore  mutex diinisialisasi  mutex = 1.  Sedangkan struktur program
untuk proses Pi adalah :
 do {
wait(mutex);
         critical section
signal(mutex);
        remainder section
} while (1);
Implementasi  semaphore  harus dapat menjamin  mutual exclusion variabel
semaphore, yaitu hanya mengijinkan satu proses pada satu saat yang boleh
memanipulasi semaphore.  Implementasi sebuah semaphore menggunakan struktur data
record sebagai berikut :
typedef struct {
   int value;
     struct process *L;
} semaphore;
Pada  semaphore  terdapat dua operasi sederhana yaitu  block untuk menghentikan
sementara proses yang menggunakan  semaphore dan  wakeup(P) untuk melanjutkan
eksekusi proses P yang di-blok.  Operasi wait dan signal dari semaphore didefinisikan
sebagai :
wait(S): 
 S.value--;
if (S.value < 0)  {
    tambahkan proses ke S.L;
 block;
  }
  
signal(S): 
  S.value++;
if (S.value <= 0) {
  hapus proses P dari S.L;
 wakeup(P);
}

Sebagai alat sinkronisasi yang umum,  semaphore dieksekusi oleh suatu proses
setelah proses lain.  Misalnya semaphore  B pada proses  Pj  hanya dieksekusi setelah
semaphore  A dieksekusi pada proses Pi.  Pada saat menggunakan semaphore,  flag
diinisialisasi 0.  Kode yang diakses proses Pi dan Pj dapat dilihat berikut ini :
  Pi   Pj
   M      M
   A    wait(flag)
   signal(flag)   B

Semaphore merupakan salah satu sumber daya sistem.  Misalnya dua proses P1
dan  P2, dua sumber daya kritis  R1 dan  R2, proses  P1  dan  P2 harus mengakses kedua
sumber daya.  Kondisi berikut dapat terjadi : R1 diberikan ke P1, sedang R2 diberikan ke
P2.  Apabila dua proses untuk melanjutkan eksekusi memerlukan kedua sumber daya
sekaligus maka kedua proses akan saling menunggu sumber daya lain selamanya.  Tak
ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena
menunggu sumber daya lain yang tak pernah diperolehnya.  Kedua proses dalam kondisi
deadlock, tidak dapat membuat kemajuan apapun. 
Pada saat beberapa proses membawa  semaphore  dan masing-masing proses
menunggu  semaphore  yang sedang dibawa oleh proses lain maka kemungkinan akan
terjadi deadlock.  Misalnya terdapat dua semaphore S dan Q  yang diinisialisasi 1.  
P0     P1
wait(S);    wait(Q);
wait(Q);    wait(S);
M      M
signal(S);    signal(Q);
signal(Q);   signal(S);

Proses P0 dan P1 masing-masing menjalankan operasi wait(S) dan wait(Q).   Kemudian
proses P0  dan P1 menjalankan operasi wait(Q) dan wait(S) maka sistem akan deadlock
sampai salah satu proses menjalankan operasi signal.  
Apabila suatu proses tidak pernah dihapus dari antrian semaphore setelah suatu
semaphore dihentikan sementara, maka terjadi bloking yang tak terbatas.  Keadaan ini
disebut starvation.
Keadaan starvation digambarkan sebagai berikut.  Misalnya terdapat tiga proses
P1, P2 dan P3 yang memerlukan pengaksesan sumber daya R secara periodik.  Skenario
yang bisa terjadi :
•  P1 sedang diberi sumber daya R, P2 dan P3 blocked menunggu sumber daya R.
•  Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R.
•  Asumsi P3 diberi hak akses.  Kemudian setelah selesai, hak akses kembali diberikan
ke P1 yang saat itu kembali membutuhkan sumber daya R.
Jika pemberian hak akses bergantian terus-menerus antara P1 dan P3, maka P2
tidak pernah memperoleh pengaksesan sumber daya R, meski tidak ada deadlock.  Pada
situasi ini, P2 mengalami yang disebut Starvation.
Terdapat dua bentuk  semaphore  yaitu  counting semaphore   dan  binary
semaphore.   Counting semaphore  menggunakan nilai integer yang mempunyai
jangkauan tak terbatas seperti pada struktur yang telah dijelanskan diatas.   Binary
semaphore  menggunakan nilai integer dengan jangkauan antara 0 dan 1 sehingga
implementasinya lebih sederhana.   Counting semaphore S  diatas dapat
diimplementasikan dengan binary semaphore.  Struktur data yang digunakan adalah :
binary-semaphore S1, S2;
 int C:  
Struktur data diatas diinisialisasi dengan
 S1 = 1
 S2 = 0
  C = initial value of semaphore S
Implementasi operasi wait dan signal pada binary semaphore S adalah sebagai berikut :
Operasi wait :
wait(S1);
C--;
if (C < 0) {
 signal(S1);
 wait(S2);
}
signal(S1);
  
Operasi signal :
wait(S1);
C ++;
if (C <= 0)
 signal(S2);
else
 signal(S1);


5.5   MASALAH-MASALAH KLASIK SINKRONISASI
Untuk mengimplementasikan permasalahan sinkronisasi dapat menggunakan
model yang digunakan untuk permasalahan Bounded Buffer, Reader Writer dan Dining
Philosopher yang akan dijelaskan di bawah ini.

5.5.1  Bounded-Buffer (Producer-Consumer) Problem
Produsen menghasilkan barang dan konsumen yang akan menggunakannya. 
Ada beberapa batasan yang harus dipenuhi, antara lain :
-  Barang yang dihasilkan oleh produsen terbatas
-  Barang yang dipakai konsumen terbatas
-  Konsumen hanya boleh menggunakan barang yang dimaksud setelah produsen
menghasilkan barang dalam jumlah tertentu
-  Produsen hanya boleh memproduksi barang jika konsumen sudah kehabisan barang
Untuk penyelesaian permasalahan  bounded buffer  menggunakan  semaphore
menggunakan variabel umum berikut :
semaphore full, empty, mutex;
Inisialisasi untuk variable diatas, full = 0, empty = n, mutex = 1.   Struktur
program untuk produsen adalah 
do { 
   …
    menghasilkan item pada nextp
    …
  wait(empty);
  wait(mutex);
    …
    menambah nextp ke buffer
    …
  signal(mutex);
  signal(full);
 } while (1);
Sedangkan struktur program untuk konsumen adalah 
do { 
  wait(full)
  wait(mutex);
    …
   mengambil item dari buffer ke nextc
    …
  signal(mutex);
  signal(empty);
    …
   menggunakan item pada nextc
    …
 } while (1);
5.5.2  Reader and Writer Problem
Terdapat dua variasi pada masalah ini, yaitu :
a.  seorang  reader tidak perlu menuggu  reader lain untuk selesai hanya karena ada
writer menunggu (reader memiliki prioritas lebih tinggi disbanding dengan writer)
b.  Jika ada  writer yang sedang menunggu, maka tidak boleh ada  reader  lain yang
bekerja (writer memiliki prioritas yang lebih tinggi)
Jika terdapat  writer dalam  critical section dan terdapat  n  reader  yang
menunggu, maka satu  reader  akan antri di wrt dan n-1  reader  akan antri di mutex.  
Jika  writer mengeksekusi  signal(wrt), maka dapat disimpulkan bahwa eksekusi
adalah menunggu reader atau menunggu satu writer.  Variabel umum yang digunakan
adalah
semaphore mutex, wrt;
Inisialisasi variable diatas adalah  mutex = 1, wrt = 1, readcount = 0. 
Struktur proses writer adalah 
wait(wrt);
   …
   menulis
   …
  signal(wrt);
Sedangkan struktur proses reader adalah
wait(mutex);
 readcount++; 
 if (readcount == 1)
  wait(rt);
 signal(mutex);
    …
  membaca
   …
  wait(mutex);
 readcount--;
 if (readcount == 0)
  signal(wrt);
 signal(mutex):
5.5.3  Dining-Philosophers Problem
Permasalahan dining-philosophers digambarkan pada Gambar 5-2 dimana terdapat
5 filosof yang akan makan.  Di sana disediakan 5 supit.  Jika filosof lapar, ia akan
mengambil 2 supit yaitu di tangan kanan dan kiri.  Namun adakalanya hanya diambil
supit satu saja.  Jika ada filosof yang mengambil 2 supit, maka ada filosof yang harus
menunggu sampai supit tersebut diletakkan.   Hal ini dapat diimplementasikan dengan
wait dan signal.

Struktur data yang digunakan untuk penyelesaian permasalahan ini dengan semaphore
adalah 
semaphore chopstick[5];
Dimana semua nilai array dinisialisasi 1.  Struktur program untuk filosof ke i adalah
 do {
  wait(chopstick[i])
  wait(chopstick[(i+1) % 5])
    …
    makan
    …
Gambar 5-2 : Lima filosof dalam satu meja makan
   signal(chopstick[i]);
  signal(chopstick[(i+1) % 5]);
    …
    berfikir
    …
 } while (1);

Meskipun solusi ini menjamin bahwa tidak ada 2 tetangga yang makan bersama-
sama, namun masih mungkin terjadi deadlock, yaitu jika tiap-tiap filosof lapar dan
mengambil supit kiri, maka semua nilai supit = 0, dan juka kemudian tiap-tiap filosof
akan mengambil supit kanan, maka akan terjadi  deadlock.  Ada beberapa cara untuk
menghindari deadlock, antara lain :
a.  mengijinkan paling banyak 4 orang filosof yang duduk bersama-sama pada satu
meja.
b.  Mengijinkan seorang filosof mangambil supit hanya jika kedua supit itu ada (dengan
catatan, bahwa ia harus mengambil pada critical section)
c.  Menggunakan suatu solusi asimetrik, yaitu filosof pada nomor ganjil mengambil
supit kanan dulu baru supit kiri.  Sedangkan filosof yang duduk di kursi genap
mengambil supit kanan dulu baru supit kiri.


5.6   CONTOH SINKRONISASI
5.6.1  Sinkronisasi pada Solaris 2
Pada Solaris 2, sinkronisasi diimplementasikan dengan menggunakan beberapa
kunci untuk mendukung sistem multitasking, multithreading (termasuk thread real time)
dan multiprosessing.  Solaris 2 menggunakan  adaptive mutex untuk efisiensi sistem
pada saat proteksi data dari kode segment yang pendek.  Selain itu juga menggunakan
variabel kondisi dan kunci  reader writer apabila kode segmen lebih panjang
memerlukan akses ke data.  Solaris 2 juga menggunakan  turnstile untuk mengurutkan
daftar thread yang menunggu untuk memperoleh baik adaptive mutex atau kunci reader
writer.

5.6.2  Sinkronisasi pada Windows 2000
Implementasi sinkronisasi pada Windows 2000 menggunakan  interrupt mask
untuk memproteksi akses ke sumber daya global pada sistem uniprosessor sedangkan
ada sistem multiprosessor menggunakan  spinlock.  Selain itu Windows 2000 juga
menyediakan  dispatcher object  yang berfungsi sebagai  mutual exclusion  dan
semaphore.  Dispatcher object juga menyediakan event yang berfungsi sebagai variabel
kondisi.

RINGKASAN:

LATIHAN SOAL :

1.  Apa yang dimaksud dengan race condition?
2.  Apakah yang dimaksud dengan critical section ? Untuk menyelesaikan masalah
critical section , ada tiga hal yang harus dipenuhi, sebutkan dan jelaskan !
3.  Bagaimana algoritma Bakery untuk sinkronisasi banyak proses (n proses) ?
4.  Apa yang dimaksud semaphore dan sebutkan operasi pada semaphore
5.  Bagaimana struktur semaphore yang digunakan untuk menyelesaikan
permasalahan :
a.  bounded buffer problem. 
b.  reader and writer problem.
c.  dining philosopher problem.





READMORE