LAPORAN PRAKTIKUM 4B - SISTEM OPERASI (LINUX) "PROSES DAN MANAJEMEN PROSES"

  LAPORAN PRAKTIKUM 4B - SISTEM OPERASI (LINUX)

"PROSES DAN MANAJEMEN PROSES"







Disusun oleh

Rizki Azka Fihi Aghnia                 2103423004











PROGRAM STUDI RPL BROADBAND MULTIMEDIA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
2021
Pokok Bahasan  
  • Proses pada Sistem Operasi Linux
  • Manajemen Proses pada Sistem Operasi Linux
Tujuan Belajar
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
  • Memahami konsep proses pada sistem operasi Linux
  • Menampilkan beberapa cara menampilkan hubungan proses parent dan child
  • Menampilkan status proses dengan beberapa format berbeda
  • Melakukan pengontrolan proses pada shell
  • Memahami penjadwalan prioritas
Dasar Teori
1.  Konsep Proses pada Linux
Proses adalah program yang sedang dieksekusi. Setiap kali menggunakan utilitas sistem atau program aplikasi dari shell, satu atau lebih proses “child” akan dibuat oleh shell sesuai perintah yang diberikan. Setiap kali instruksi diberikan pada Linux shell, maka kernel akan menciptakan sebuah proses-id. Proses ini disebut juga dengan terminology Unix sebagai sebuah Job. Proses ID (PID) dimulai dari 0, yaitu proses INIT, kemudian diikuti oleh proses berikutnya (terdaftar pada /etc/inittab).

Beberapa tipe proses:
  • Foreground
Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif, dialog).

  • Batch
Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). Proses Batch tidak diasosiasikan (berinteraksi) dengan terminal.

  • Daemon
Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankan tugas sesuai dengan permintaan tersebut. Bila tidak ada request, maka program ini akan berada dalam kondisi “idle” dan tidak menggunakan waktu hitung CPU. Umumnya nama proses daemon di UNIX berakhiran d, misalnya inetd, named, popd dll.

2.  Sinyal

Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Proses mengirim sinyal melalui instruksi “kill” dengan format:

kill [-nomor sinyal] PID

Nomor sinyal: 1 s/d maksimum nomor sinyal yang didefinisikan sistem

Standar nomor sinyal yang terpenting adalah:

3.  Mengirim Sinyal
Mengirim sinyal adalah satu alat komunikasi antar proses, yaitu memberitahukan proses yang sedang berjalan bahwa ada sesuatu yang harus dikendalikan. Berdasarkan sinyal yang dikirim ini maka proses dapat bereaksi dan administrator/programmer dapat menentukan reaksi tersebut. Mengirim sinyal menggunakan instruksi

kill [-nomor sinyal] PID

Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu.

4.  Mengontrol Proses pada Shell
Shell menyediakan fasilitas job control yang memungkinkan mengontrol beberapa job atau proses yang sedang berjalan pada waktu yang sama. Misalnya bila melakukan pengeditan file teks dan ingin melakukan interrupt pengeditan untuk mengerjakan hal lainnya. Bila selesai, dapat kembali (switch) ke editor dan melakukan pengeditan file teks kembali.

Job bekerja pada foreground atau background. Pada foreground hanya diperuntukkan untuk satu job pada satu waktu. Job pada foreground akan mengontrol shell - menerima input dari keyboard dan mengirim output ke layar. Job pada background tidak menerima input dari terminal, biasanya berjalan tanpa memerlukan interaksi.

Job pada foreground kemungkinan dihentikan sementara (suspend), dengan menekan [Ctrl-Z]. Job yang dihentikan sementara dapat dijalankan kembali pada foreground atau background sesuai keperluan dengan menekan “fg” atau “bg”. Sebagai catatan, menghentikan job seme ntara sangat berbeda dengan melakuakan interrupt job (biasanya menggunakan [Ctrl-C]), dimana job yang diinterrup akan dimatikan secara permanen dan tidak dapat dijalankan lagi.

5.  Mengontrol Proses Lain
Perintah ps dapat digunakan untuk menunjukkan semua proses yang sedang berjalan pada mesin (bukan hanya proses pada shell saat ini) dengan format:

ps –fae atau

ps -aux

Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang menyediakan cara interaktif untuk memonitor aktifitas sistem. Statistik secara detail dengan proses yang berjalan ditampilkan dan secara terus-menerus di-refresh. Proses ditampilkan secara terurut dari utilitas CPU. Kunci yang berguna pada top adalah

s – set update frequency

u – display proses dari satu user

k – kill proses (dengan PID)

q – quit

Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada sistem UNIX adalah perintah killall. Perintah ini akan menghentikan proses sesuai PID atau job number proses.
Percobaan

Percobaan 5 - Menghentikan dan memulai kembali job

$ yes > /dev /null digunakan untuk memulai job. Job dapat dihentikan sementara atau sering di sebut (suspend) dengan menggunakan Ctrl+Z.

$ fg digunakan untuk memulai kembali job yang telah disuspend pada foreground.

$ bg digunakan untuk meletakan job di background.

Setelah diletakan di background, job tidak dapat dihentikan sehingga harus dipindahkan ke foreground menggunakan perintah $ fg.

$ yes & berjalan pada job background yang dibuat tadi. Kita dapat menghentikan prosesnya dengan cara kita mengetik perintah fg lalu enter agar proses pindah ke foreground, kemudian dilanjutkan menekan Ctrl + Z agar berhenti sementara.

$ fg %2 dan $bg %2 berguna untuk menjalankan banyak job dalam waktu bersamaan. Job – job yang sedang tidak dipakai dimasukkan ke proses background, dan untuk mengenalinya kita menggunakan nomor job ID karena tidak ada job yang memiliki nomor ID sama.

Setelah fg ditekan, muncul hasil dari perintah $ yes & tadi. Jadi fungsi perintah fg adalah untuk memanggil proses yang berjalan di background. Dan kita bisa menghentikannya dengan menekan Ctrl + Z.


$ ps –fae digunakan untuk menampilkan secara lengkap seluruh proses yang sedang berjalan beserta detailnya termasuk proses dari perintah $ps –fae sendiri. $ kill -9 <nomor PID> digunakan untuk menghentikan atau terminate suatu proses, berdasarkan nomor PID proses yang ingin dihentikan.

Percobaan 6 - Percobaan dengan Penjadwalan Prioritas

Pertama-tama, buka 3 terminal. Ini dapat dilakukan dengan menambah tab baru di terminal, lalu klik kanan dan klik detach terminal untuk memisahkannya. Selanjutnya, memasukkan perintah $ sudo su untuk masuk sebagai root. Perintah $ PS1=”\w:” digunakan untuk masuk ke directory home dari user root. Bila posisi kita masih berada di /home/<user>, maka kita bisa gunakan perintah $ cd ~ digunakan untuk masuk ke root dan untuk mengeceknya digunakan perintah $ pwd.


Ketik "i"


Ketik "lmt"

Pada terminal 4 akan menjalankan program top. Perintah top disini digunakan untuk mengetahui semua rincian proses yang berjalan, dan beberapa fungsi lainnya. Mengetikkan "i" pada window top akan menampilkan proses yang sedang aktif. Mengetikkan "lmt" untuk menghilangkan atau tidak menampilan informasi pada bagian atas dari tampilan top.

Pada terminal 1 dieksekusi perintah $ yes yang menjalankan proses yes sehingga pada terminal 4 dapat terlihat proses yes sedang berjalan.

Pada terminal 2 dieksekusi juga perintah $ yes sehingga pada terminal 4 terdapat lebih dari satu proses yes yang berjalan.

$ renice 19 <PID> digunakan untuk mengganti penjadwalan prioritas ke angka yang ditentukan, yakni 19. Dapat dilihat di terminal 4, proses yes dengan PID 3398 nilai NI nya berubah menjadi 19 setelah dijalankan perintah $ renice 19 3398. Proses yes dengan PID 4144 berjalan lebih cepat dari proses yes dengan PID 3398 karena penjadwalan prioritasnya lebih kecil.

Program top juga memiliki fungsi yang sama dengan program renice. Jadi kita dapat mengubah konfigurasi proses melalui program renice maupun top. Selain dengan menggunakan perintah renice, kita juga dapat langsungmelakukan perubahan penjadwalan prioritas di top, dengan menekan r lalu pilih PID dan valuenya -19. Tunggu beberapa saat sampai top berubah danlihat nilai %CPU pada kedua proses.
$ nice –n -10 yes digunakan untuk membuat proses baru dan opsi -10 merupakan penentuan prioritas dari proses tersebut. PID dari proses yang kita buat adalah 4107, dan disana terlihat pada kolom NI terdapat angka -10.

Saat kita memindahkan kursor mouse, beberapa proses yang muncul tadi penggunaan %CPU nya berubah semua yaitu cenderung bertambah. Dan juga muncul lagi proses lain dengan penggunaan %CPU lumayan banyak. Kita dapat mengubah konfigurasi suatu proses melalui perintah – perintah yang terdapat pada proses top. Dan ternyata setelah proses 3398 diubah prioritasnya menjadi 0, penggunaan sumber daya oleh terminal top menjadi lebih stabil (tidak banyak perubahan) walaupun mouse digerakkan ke sekeliling screen.
Latihan

1. Masuk ke tty2 dengan Ctrl+Alt+F2. Ketik ps –au dan tekan Enter. Kemudian perhatikan keluaran sebagai berikut:
Hasil:


a. Sebutkan nama-nama proses yang bukan root
Jawab:
Untuk menampilkan proses dari seluruh user menggunakan perintah ps -aux untuk melihat nama proses yang bukan root. Berdasarkan gambar di atas, nama-nama proses yang bukan root adalah:
  • User = systemd+ , PID = 547 , cmd = /lib/systemd/systemd-resolved
  • User = avahi , PID = 583 , cmd = avahi-daemon
  • User = message+ , PID = 586 , cmd = /usr/bin/dbus-daemon
  • User = syslog , PID = 598 , cmd = /usr/sbin/rsyslogd
  • User = whoopsie , PID = 765 , cmd = /usr/bin/whoopsie
  • User = kernoops , PID = 774 , cmd = /usr/sbin/kerneloops
  • User = rtkit , PID = 973 , cmd = /usr/libexec/rtkit-daemon
  • User = colord , PID = 1327 , cmd = /usr/libexec/colord
  • User = randomu+ , PID = 1368, cmd = (sd-pam)
b. Tulis PID dan COMMAND dari proses yang paling banyak menggunakan CPU time
Jawab:
  • User = randomu+ , PID = 1659, cmd = /usr/bin/gnome-shell
c. Sebutkan buyut proses dan PID dari proses tersebut.
Jawab:

d. Sebutkan beberapa proses daemon
Jawab:
  • User = avahi , PID = 583 , cmd = avahi-daemon
  • User = message+ , PID = 586 , cmd = /usr/bin/dbus-daemon
  • User = rtkit , PID = 973 , cmd = /usr/libexec/rtkit-daemon
e. Pada prompt login lakukan hal- hal sebagai berikut:
  • $ csh
  • $ who
  • $ bash
  • $ ls
  • $ sh
  • $ ps
Jawab:
  • $ csh : Shell interaktif yang memiliki sintaks yang lebih banyak dibandingkan bourne shell
  • $ who : Untuk melihat user aktif yang login.
  • $ bash : Shell interpreter bahasa sh untuk mengeksekusi perintah yang dibaca dari standart input atau dari sebuah file.
  • $ ls : Untuk melihat nama file/direktori secara lengkap.
  • $ sh : Bourne Shell atau shell (command interpreter) default dari unix.
  • $ ps : Untuk menampilkan kondisi proses yang ada.
f. Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses sampai ke PPID = 1.
Jawab:
$ ps --sort -pid digunakan untuk melihat urutan proses sampai ke PPID = 1. Berdasarkan gambar, PID terbesar adalah 9005.

2. Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil tampilannya:
  • -f       daftar penuh
  • -j       format job
  • j        format job control
  • l        daftar memanjang
  • s        format sinyal
  • v       format virtual memory
  • x       format register i386
Jawab:
  • $ps -f : menampilkan dalam format penuh. seperti UID, PID, PPID, C, STIME, TTY, TIME, CMD.
  • $ ps -j : menampilkan dalam format job. Isinya dipenuhi oleh angka, karena cenderung menampilkan ID dimana proses sedang bekerja, berisi PID, PGID, SID, TTY, TIME, CMD.
  • $ ps j : menampilkan dengan format jobBSD. hasilnya berupa format job yang lebih detail, berisi PPID, PID, PGID, SID, TTY, TPGID, STAT, UID, TIME, COMMAND.
  • $ ps l : menampilkan daftar memanjang yang berisi F, UID, PID, PPID, PRI, NI, VSZ, RSS, WCHAN, STAT, TTY, TIME, COMMAND.
  • $ ps s : menampilkan dengan format sinyal. (Biasanya angka yang muncul banyak), berisi UID, PID, PENDING, BLOCKED, IGNORED, CAUGHT, STAT, TTY, TIME, COMMAND.
  • $ ps v : menampilkan dengan format memori virtual. Berisi PID, TTY, STAT, TIME, MAJFL, TRS, DRS, RSS, %MEM, COMMAND.
  • $ ps x : menampilkan dengan format register. Berisi PID, STACKP, ESP, EIP, TMOUT, ALARM, STAT, TTY, TIME, COMMAND.
3. Lakukan urutan pekerjaan berikut :
a. Gunakan perintah find ke seluruh direktory pada sistem, belokkan output sehingga daftar direktori dialihkan ke file directories.txt dan daftar pesan error dialihkan ke file errors.txt
Jawab :
Perintah dilakukan dengan $ find > directories.txt > error.txt.

b.  Gunakan perintah sleep 5. Apa yang terjadi dengan perintah ini?
Jawab :
Proses Terminal terhenti selama 5 detik dan setelah 5 detik baru bisa menulis command selanjutnya.

c. Jalankan perintah pada background menggunakan &
Jawab :
Karena proses hanya berlangsung selama 5 detik, statusnya akan selesai saat dilihat di jobs.

d.  Jalankan sleep 15 pada foreground, hentikan sementara dengan Ctrl-Z dan kemudian letakkan pada background dengan bg. Ketikkan jobs. Ketikkan ps. Kembalikan job ke foreground dengan perintah fg.
Jawab :
Pertama-tama, perintah sleep 15 dieksekusi, lalu dihentikan sebelum terminal dapat digunakan kembali. Setelah itu, dilihat di background dengan perintah $ bg. Alasan disini pada saat jobs diketikan tidak keluar apa apa adalah karena proses sleep 15 telah selesai, jadi sudah tidak ada lagi jobs atau pekerjaan yang masih berjalan. Kita juga bisa memastikannya melalui perintah $ ps dan tidak ada proses sleep yang berjalan, maka dari itu pada saat kita melakukan perintah $ fg muncul output “no such job” yang berarti tidak ada job yang sedang berlangusng.

e. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan perintah kill untuk menghentikan proses diikuti job number.
Jawab:
$ kill digunakan untuk menghentikan job sleep 15 yang berjalan di background. Saat dilihat di jobs, status job telah menjadi Terminated.

f. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan kill untuk menghentikan sementara proses. Gunakan bg untuk melanjutkan menjalankan proses.
Jawab:
Proses dapat dihentikan menggunakan kill. Option -STOP digunakan untuk menghentikan proses sleep 15. Jika tidak menggunakan opsi tersebut, maka proses sleep akan berhenti sehingga proses sleep tidak dapat dilanjutkan.

g. Jalankan sleep 60 pada background 5 kali dan terminasi semua pada dengan menggunakan perintah killall.
Jawab:
$ for i in {1..5} do sleep 60 & done adalah perintah forloop yang digunakan untuk melooping proses atau job sebanyak yang kita mau. $ killall sleep digunakan untuk menghentikan semua job sleep yang berjalan.

h. Gunakan perintah ps, w dan top untuk menunjukkan semua proses yang sedang dieksekusi.
Jawab:
ps
$ ps digunakan untuk melihat kondisi proses yang ada.

w
$ w digunakan untuk menampilkan proses secara lengkap (running, done, terminated).

top
$ top adalah tool baris perintah, tetapi perintah ini memberikan output interaktif dari semua proses yang sedang berjalan, menampilkan informasi dalam interface grafis. Output dari perintah top memberi kita banyak informasi, termasuk penggunaan CPU dan RAM secara keseluruhan pada sistem.


i. Gunakan perintah ps –aeH untuk menampilkan hierarki proses. Carilah init proses. Apakah Anda bisa identifikasi sistem daemon yang penting? Dapatkan Anda identifikasi shell dan subproses?
Jawab:
Init proses disini adalah pada system dengan PID = 1. Terdapat beberapa sistem daemon yang penting yaitu system, rsyslogd, cryptd, cupsd. Pada gambar akhir, bisa dilihat bahwa terdapat subproses dari gnome terminal.

j. Kombinasikan ps –fae dan grep, apa yang Anda lihat?
Jawab:
$ Ps -aeH hanya mengarahkan pada proses yang dimasukan setelah grep, contohnya $ ps -aeH | grep budgie daemon, berarti $ ps –aeH hanya mengarahkan pada semua proses yang bernama budgie daemon, dan pada tampilannya akan berwarna merah. Begitupula pada $ ps -aeH | grep daemon. Semua proses yang mengandung daemon, maka tampilannya akan berwarna merah.

k. Jalankan proses sleep 300 pada background. Log off komputer dan log in kembali. Lihat daftar semua proses yang berjalan. Apa yang terjadi pada proses sleep?
Jawab:
Pada log off menggunakan GUI, proses sleep masih berjalan selama waktunya belum habis. Sedangkan pada log off secara GUI, proses sleep tidak berjalan lagi walaupun waktunya belum habis.
Kesimpulan
Dari percobaan yang telah dilakukan, dapat disimpulkan bahwa Proses adalah program yang sedang berjalan atau yang sedang dieksekusi. Setiap kali menggunakan utilitas sistem atau program aplikasi dari shell, satu atau lebih proses “child” akan dibuat oleh shell sesuai perintah yang diberikan. Setiap kali instruksi diberikan pada Linux shell, maka kernel akan menciptakan sebuah Proses ID (PID). Terjadinya proses ditandai dengan adanya informasi berupa PID yang berfungsi untuk menampilkan nomor identitas proses, TTY yang berfungsi untuk menampilkan nama terminal dimana proses tersebut aktif, TIME berfungsi menampilkan waktu yang diperlukan dalam mengakses perintah, serta CMD (Command) yang berfungsi untuk menampilkan instruksi/perintah yang digunakan. Terdapat berbagai perintah untuk melakukan proses, dan untuk menghentikannya dapat menggunakan perintah kill. Proses juga dapat dibuat dan ditampilkan secara pohon atau hierarki.




Komentar

Postingan populer dari blog ini