PRAKTIKUM 4
MANAJEMEN PROSES
SISTEM OPERASI
DOSEN PENGAMPU: MOHAMMAD FATHURAHMAN, S.T., M.T.
DISUSUN OLEH:
ALVIANA SIRAJUDIN – 2103421024
BM 5A
PROGRAM STUDI BROADBAND MULTIMEDIA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
2023
Tujuan Belajar :
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu :
- Memahami konsep proses pada sistem operasi Linux.
- Menampilkan beberapa cara tentang hubungan proses parent dan child.
- Menampilkan status proses dengan beberapa format berbeda.
- Melakukan pengontrolan proses pada shell.
- Memahami penjadwalan prioritas.
Dasar Teori :
A. Konsep Proses pada Sistem Operasi Linux
Proses adalah program yang sedang dieksekusi. Setiap kali menggunakan program aplikasi dari shell, satu atau lebih proses "child" akan dibuat oleh shell sesuai perintah yang diberikan. Setiap kali intruksi diberikan pada Linux shell, maka kernel akan menciptakan sebuah proses id. Proses tersebut disebut juga dengan terminology Unix sebagai sebuah Job. Proses ID dimulai dari 0, yaitu proses INT, kemudian diikuti oleh proses berikutnya (terdaftar pada /etc/inittab). Berikut beberapa tipe proses :
- Foreground : Proses yang diciptakan oleh pemakai langsung pada terminal.
- Batch : Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu).
- Daemon : Proses yang menunggu permintaan dari proses lainnya dan menjalankan tugas sesuai dengan permintaan tersebut.
B. Sinyal
Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Proses mengirim sinyal melalui intruksi "kill" dengan format : kill [-nomor sinyal] PID . Nomor sinyal : 1 s/d maks nomor sinyal yang di definisikan sistem Standar nomor sinyal yang terpenting adalah :
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 programmer/administrator dapat menentukan reaksi tersebut. Mengirim sinyal menggunakan intruksi : " kill [-nomor sinyal] PID ". Sebelum menigirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu.
D. 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 mnegerjakan hal lainnya. Bila selesai, dapat kembali (switch) ke editor dan melakukan pengeditan file teks kembali. Job bekerja pada foreground atau background. Pada foreground 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 dengan menekan [Ctrl-Z]. Kemudian hal tersebut dapat dijalankan kembali dengan menekan "fg" atau "bg". Jika ingin mematikan job dengan interrupt dimatikan secara permanen dan tidak dapat dijalankan lagi, maka menggunakan [Ctrl-C].
E. 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. Kunci yang berguna pada top adalah :
- s - set update frequency
- u - display proses dari satu user
- k - kill proses (dengan PID)
- q - quit.
PERCOBAAN
Percobaan 1: Status Proses
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user
2. Instruksi ps (process status) digunakan untuk melihat kondisi proses yang ada.
PID adalah Nomor Identitas Proses, TTY adalah nama terminal dimana proses
tersebut aktif, STAT berisi S (Sleepin g) dan R (Running), COMMAND
merupakan instruksi yang digunakan.
3. Untuk melihat faktor/elemen lainnya, gunakan option –u (user). %CPU adalah
presentasiCPU time yang digunakan oleh proses tersebut, %MEM adalah
presentasi system memori yang digunakan proses, SIZE adalah jumlah
memori yang digunakan, RSS (Real System Storage) adalah jumlah memori
yang digunakan, START adalah kapan proses tersebut diaktifkan.
4. Mencari proses yang spesifik pemakai. Proses diatas hanya terbatas pada
proses milik pemakai, dimana pemakai teresbut melakukan login
5. Mencari proses lainnya gunakan opsi a (all) dan au (all user)
6. Logout dan tekan Alt+F1 untuk kembali ke mode grafis
Percobaan 2: Menampilkan Hubungan Proses Parent and Child
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F4 dan
login ke terminal sebagai user.
2. Ketik ps –eH dan tekan Enter. Opsi e memilih semua proses dan opsi H
menghasilkan tampilan proses secara hierarki. Proses child muncul dibawah
proses parent. Proses child ditandai dengan awalan beberapa spasi. - Analisis: Perintah ini digunakan untuk memilih seluruh proses dan ditampilkan
secara hirearki
3. Ketik ps –e f dan tekan Enter. Tampilan serupa dengan langkah 2. Opsi –f
akan menampilkan status proses dengan karakter grafis (\ dan _)
- Analisis: Menampilkan suatu proses dengan menampilkan dalam bentuk grafik(\
dan _)
4. Ketik pstree dan tekan Enter. Akan ditampilkan semua proses pada sistem
dalam bentuk hirarki parent/child. Proses parent di sebelah kiri proses child.
Sebagai contoh proses init sebagai parent (ancestor) dari semua proses pada
sistem. Beberapa child dari init mempunyai child. Proses login mempunya i
proses bash sebagai child. Proses bash mempunyai proses child startx. Proses
startx mempunyai child xinit dan seterusnya. - Analisis: Perintah ini digunakan untuk menampilkan seluruh proses pada sistem
dalam bentuk hirarki/child
5. Ketik pstree | grep mingetty dan tekan Enter. Akan menampilkan semua proses
mingetty yang berjalan pada system yang berupa console virtual. Selain
menampikan semua proses, proses dikelompokkan dalam satu baris dengan
suatu angka sebagai jumlah proses yang berjalan.
- Analisis: pstree | grep mingetty digunakan untuk mencari proses yang
mengandung kata mingetty, karena di saya tidak ada, maka tidak muncul apa
apa
6. Untuk melihat semua PID untuk proses gunakan opsi
- Analisis: Digunakan untuk menampilkan semua pid
7. Untuk menampilk an proses dan ancestor yang tercetak tebal gunakan opsi –h.
- Analisis: Digunakan untuk mencetak tebal ancestor
Percobaan 3: Menampilkan Status Proses dengan Berbagai Format
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan
login ke terminal sebagai user.
2. Ketik ps –e | more dan tekan Enter. Opsi -e menampilkan semua proses dalam
bentuk 4 kolom : PID, TTY, TIME dan CMD.
- Analisis: Option e digunakan untuk menampilkan 4 kolomPID, TTY, TIME, CMD
dan more menyuruh akan ditampilkan sesuai layer
3. Ketik ps ax | more dan tekan Enter. Opsi a akan menampilkan semua proses yang
dihasilkan terminal (TTY). Opsi x menampilkan semua proses yang tidak dihasilkan terminal. Secara logika opsi ini sama dengan opsi –e. Terdapat 5
kolom : PID, TTY, STAT, TIME dan COMMAND.
- Analisis: Perintah tersebut digunakan untuk menampilkan proses dengan 5 kolom
PID, TTY, STAT, TIME, COMMAND. Lalu more menampilkan data
sesuai layer
4. Ketik ps –e f | more dan tekan Enter. Opsi –e f akan menampilkan semuaproses
dalam format daftar penuh.
- Analisis: Opsi –e f akan menampilkan semuaproses dalam format daftar penuh.
Lalu | more, artinya di tampilkan secara more seperti pada gambar.
5. Ketik ps –eo pid, cmd | more dan tekan Enter. Opsi –eo akan menampilkan
semua proses dalam format sesuai definisi user yaitu terdiri dari kolom PID dan
CMD.
- Analisis: Opsi eo, pid, cmd akan menampilkan semua proses dengan format pid,
cmd. Lalu more artinya ditampilkan sesuai layer
6. Ketik ps –eo pid,ppid,%mem,cmd | more dan tekan Enter. Akan menampilkan
kolom PID, PPID dan %MEM. PPID adalah proses ID dari proses parent.
%MEM menampilkan persentasi memory system yang digunakan proses. Jika
proses hanya menggunakan sedikit memory system akan dita mpilkan 0.
- $ ps –eo pid,ppid,%mem,cmd | more
- Analisis: Opsi –eo pid,ppid,%mem,cmd akan menampilkan semua proses dalam
format pid, ppid, %mem dan cmd. Lalu | more, artinya di tampilkan sesuai
layer
7. Log out dengan menekan Ctrl+Alt+F1
Percobaan 4: Mengontrol Proses pada Shell
1. Pindah ke command line dengan menekan Ctrl+Alt+F4 dan login sebagai user
2. Gunakan input yes yang akan mengirim y yang tidak akan berhenti
3. Belokkan standar output ke /dev/null
- Analisis: Perintah tersebut digunakan untuk membelokkan output perintah yes ke /dev/null
maka tidak keluar output ke terminal tetapi pada sebenarnya perintah yes berjalan
4. Salah satu cara agar perintah yes tetap dijalankan tetapi shell tetap digunakan
untuk hal yang lain dengan meletakkan proses pada background dengan
menambahkan karakter & pada akhir perintah.
- Analisis: Perintah & digunakan untuk menjalankan program di background
5. Untuk melihat status proses gunakan perintah jobs.
- Analisis: Jobs digunakan untuk melihat proses yang berjalan di background
6. Untuk menghentikan job, gunakan perintah kill diikuti job number atau PID
proses. Untuk identifikasi job number, diikuti prefix dengan karakter ”%”.
- $ kill % contoh : kill %1
- Analisis: Perintah kill digunakan untuk menghentikan proses yang berjalan
7. Lihat status job setelah diterminasi
- Analisis: Dapat dilihat kalau proses yang kita kill sudah berhenti
Percobaan 5: Menghentikan dan Memulai Kembali Job
1. Cara lain meletakkan job pada background dengan memulai job secara normal
(pada foreground), stop job dan memulai lagi pada background
2. Untuk restart job pada foreground , gunakan perintah fg.
- $ fg
- Analisis: Perintah fg digunakan untuk menampilkan proses pada foreground
3. Shell akan menampilkan nama perintah yang diletakkan di foreground. Stop job
lagi dengan Ctrl-Z. Kemudian gunakan perintah bg untuk meletakkan job pada
background.
- $ bg
- Analisis: Perintah bg digunakan untuk melihat proses yang berjalan pada background dan Perintah fg untuk menampilkan program yang berjalan di foreground
4. Job pada background dapat digunakan untuk menampilkan teks pada terminal,
dimana dapat diabaikan jika mencoba mengerjakan job lain.
- Analisis: Berikut adalah menjalankan proses di foreground dan kemudian
menghentikannya
5. Apabila ingin menjalankan banyak job dalam satu waktu, letakkan job pada
foreground atau background dengan memberikan job ID
- $ fg %2 atau $ %2
- $ bg %2
6. Tekan fg dan tekan Enter, kemudian dilanjutkan dengan Ctrl -Z untuk
menghentikan sementara.
- Analisis: Percobaan diatas adalah untuk menghentikan proses yes
7. Lihat job dengan perintah ps -fae dan tekan Enter. Kemudian hentikan proses
dengan perintah kill.
- $ kill -9 <nomor PID>
- Analisis: Kill digunakan untuk menghentikan suatu proses
8. Logout dan tekan Alt+F7 untuk kembali ke mode grafis
Percobaan 6: Percobaan dengan Penjadwalan Prioritas
1. Login sebagai root
2. Buka 3 terminal, tampilkan pada screen yang sama
3. Pada setiap terminal, ketik PS1= ” \w:” diikuti Enter. \w menampilkan path
pada direktori home.
4. Karena login sebagai root, maka akan ditampilkan ~: pada setiap terminal.
Untuk setiap terminal ketik pwd dan tekan Enter untuk melihat bahwa Anda
sedang berada pada direktori /root.
5. Buka terminal lagi (keempat), atur posisi sehingga keempat terminal terlihat pada
screen.
6. Pada terminal keempat, ketik top dan tekan Enter. Maka program top akan
muncul. Ketiki. Top akan menampilkan proses yang aktif. Ketik lmt. Top tidak
lagi menampilkan informasi pada bagian atas dari screen. Pada percobaan ini,
terminal ke empat sebagai jendela Top.
- Ketik i, maka top akan menampilkan proses yang aktif
- Ketik lmt, maka top tidak lagi menampilkan informasi pada bagian atas dari screen.
7. Pada terminal 1, bukalah program executable C++ dengan mengetik program yes
dan tekan Enter
8. Ulangi langkah 7 untuk terminal 2. setelah melakukan nya lagi di terminal 2 kita
dapat lihat di terminal 4 ad2 perintah yes yang berjalan dengan pid 4375 untuk yes
diterminal 1 dan 4406 untuk yes di terminal 2
9. Jendela Top akan menampilkan dua program yes sebagai proses yang berjalan.
Nilai %CPU sama pada keduanya. Hal ini berarti kedua proses mengkonsumsi
waktu proses yang sama dan berjalan sama cepat. PID dari kedua proses akan
berbeda, misalnya 4665 dan 4669. Kemudian gunakan terminal 3 (yang tidak
menjalankan primes maupun Jendela Top) dan ketik renice 19
(contoh : renice 19 4665) dan diikuti Enter. Hal ini berarti mengganti
penjadwalan prioritas dari proses ke 19. 10. Tunggu beberapa saat sampai program top berubah dan terlihat pada jendela Top.
Pada kolom STAT memperlihatkan N untuk proses 4665. Hal ini berarti bahwa
penjadwalan prioritas untuk proses 4669 lebih besar (lebih lambat) dari 0. Proses 4665 berjalan lebih cepat. 11. Program top juga mempunyai fungsi yang sama dengan program renice. Pilih
Jendela Top dan tekan r. Program top terdapat prompt PID to renice: tekan 3148
(ingat bahwa Anda harus mengganti 3148 dengan PID Anda sendiri) dan tekan
Enter. Program top memberikan prompt Renice PID 3148 to value: tekan -19 dan
tekan Enter 12. Tunggu beberapa saat sampai top berubah dan lihat nilai %CPU pada kedua
proses. Sekarang proses 4665 lebih cepat dari proses 4669. Kolom status
menunjukkan < pada proses 4665 yang menunjukkan penjadwalan prioritas lebih
rendah (lebih cepat) dari nilai 0. 13. Pilih terminal 3 (yang sedang tidak menjalankan yes atau program top) dan ketik
nice –n - 10 yes dan tekan Enter. Tunggu beberapa saat agar program top
berubah dan akan terlihat proses primes ketiga. Misalnya PID nya 4107. Opsi -10
berada pada kolom NI (penjadwalan prioritas). 14. Jangan menggunakan mouse dan keyboard selama 10 detik. Program top
menampilkan proses yang aktif selain program yes. Maka akan terlihat proses top
terdaftar tetapi %CPU kecil (dibawah 1.0) dan konsisten. Juga terlihat proses
berhubungan dengan dekstop grafis seperti X, panel dll. 15. Pindahkan mouse sehingga kursor berubah pada screen dan lihat apa yang terjadi
dengan tampilan top. Proses tambahan akan muncul dan nilai %CPU berubah
sebagai bagian grafis yang bekerja. Satu alasan adalah bahwa proses 4107 berjalan
pada penjadwalan prioritas tinggi. Pilih jendela Top, ketik r. PID to renice : muncul
prompt. Ketik 4107 (ubahlah 4107 dengan PID Anda) dan tekan Enter. Renice PID
4107 to value: muncul prompt. Ketik 0 dan tekan Enter. Sekarang pindahkan mouse
ke sekeliling screen. Lihat perubahannya.
16. Tutup semua terminal windows 17. Login kembali sebagai user LATIHAN
1. Masuk ke tty2 dengan Ctrl+Alt+F2. Ketik ps –au dan tekan Enter. Kemudian
perhatikan keluaran sebagai berikut :
a. Sebutkan nama-nama proses yang bukan root
User: alviana; PID: 2653
User: alviana; PID: 2699
User: alviana; PID: 3247
User: alviana; PID: 3251
User: alviana; PID:4571
User: alviana; PID: 4655
User: alviana; PID: 4662
User: alviana; PID: 5157
b. Tulis PID dan COMMAND dari proses yang paling banyak
menggunakan CPU time
Tidak ada, karena semua proses di atas memakan cpu bernilai 0.0
c. Sebutkan buyut proses dan PID dari proses tersebut
d. Sebutkan beberapa proses daemon
e. Pada prompt login lakukan hal- hal sebagai berikut :
- $ csh = sebuah shell dengan command interpreter dengan c
- $ who = melihat siapa yang login
- $ bash = GNU Bourne-Again Shell
- $ ls = melihat isi direktori
- $ sh = command interpreter shell
- $ ps = melihat proses yang aktif
f. Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses
smpi ke PPID= 1.
2. Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil
tampilannya :
- j format job control: ps j
- v format virtual memory: ps v
- X format register i386: ps X
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
- $ find > directories.txt 2> errors.txt
- $ cat errors.txt
- $ cat directories.txt
b. Gunakan perintah sleep 5. Apa yang terjadi dengan perintah ini ?
c. Jalankan perintah background dengan
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.
e. Jalankan sleep 15 pada background menggunakan & dan kemudian
gunakan perintah kill untuk menghentikan proses diikuti job number.
- $ sleep 15 &
- $ kill %[nomorjob]
f. Jalankan sleep 15 pada background menggunakan & dan kemudian
gunakan kill untuk menghentikan sementara proses. Gunakan bg untuk
melanjutkan menjalankan proses.
- $ sleep 15 &
- $ kill -STOP %[nomorjob]
- $ bg
Disini diggunakan option stop untuk menstop proses sleep 15, karena
jika tidak menggunakan opsi tersebut maka proses sleep 15 akan terminated
maksudnya berhenti tidak dapat dilanjutkan.
g. Jalankan sleep 60 pada background 5 kali dan terminasi semua pada
dengan menggunakan perintah killall.
h. Gunakan perintah ps, w dan top untuk menunjukkan semua proses yang
sedang dieksekusi.
i. Gunakan perintah ps –aeH untuk menampilkan hierarki proses. Carilah init
proses. Apakah anda bisa identifikasi sistem daemon yang penting? Dapatkah anda identifikasi shell dan subprose?
Init adalah induk dari semua proses pada Linux, ditandai dengan PID = 1 yaitu systemd. Service daemon ditandai dengan terdapat huruf D dibelakangnya.
Shell terdapat pada terminal yang sedang aktif (pts/0) yaitu proses seperi pada bash dan ps
j. Kombinasikan ps –fae dan grep, apa yang Anda lihat ?
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 ?
Setelah melakukan log out dan login kembali ternyata ketika saya
melihat jobs kosong, ini berarti proses sleep 300 yang berjalan di background
telah terminated pada saat melakukan logout.
KESIMPULAN
Proses adalah entitas kunci dalam sistem operasi Linux. Ketika kita menjalankan perintah atau program melalui shell, proses-proses ini menjadi inti dari semua aktivitas yang terjadi di dalam sistem. Setiap program atau utilitas yang dijalankan oleh shell akan menciptakan satu atau lebih proses "child." Ini berarti bahwa ketika Anda mengetikkan perintah apa pun di shell, seperti `ls` untuk melihat daftar file, shell akan menghasilkan proses yang terkait dengan perintah tersebut.
Setiap proses memiliki identifikasi unik yang disebut sebagai Process ID (PID). PID adalah cara sistem untuk mengidentifikasi dan melacak proses-proses ini. Pada dasarnya, PID adalah nomor yang diberikan kepada setiap proses yang berjalan pada sistem. Proses dengan PID 0 disebut proses INIT, yang merupakan proses inisialisasi sistem. Proses lainnya akan memiliki PID yang berurutan, dimulai dari 1 dan seterusnya.
Ada beberapa jenis proses dalam sistem Linux, dengan tiga jenis utama adalah foreground, batch, dan shell. Proses foreground adalah yang saat ini mendapatkan perhatian dari pengguna, yang berarti bahwa Anda sedang berinteraksi dengannya di shell Anda. Batch processes adalah proses-proses yang dijalankan di latar belakang dan tidak memerlukan perhatian langsung dari pengguna. Shell processes, seperti yang telah dijelaskan sebelumnya, adalah proses-proses yang dihasilkan oleh shell ketika Anda menjalankan perintah atau program.
Penting untuk diingat bahwa proses dalam sistem Linux memiliki kemampuan untuk berkomunikasi satu sama lain dengan mengirimkan sinyal. Ini adalah cara di mana proses dapat berinteraksi dan mengoordinasikan tugas-tugas mereka. Sinyal ini dapat digunakan untuk berbagai tujuan, seperti menghentikan proses, menghentikan proses sementara (suspend), atau menginformasikan proses lainnya tentang peristiwa tertentu.
Selain itu, shell Linux menyediakan fasilitas yang disebut job control. Job control memungkinkan pengguna untuk mengendalikan beberapa job atau proses yang berjalan secara bersamaan. Misalnya, ketika Anda menjalankan beberapa perintah di latar belakang, Anda dapat menggunakan job control untuk beralih antara mereka, menghentikan sementara proses tertentu, atau mengembalikan proses tertentu ke foreground atau background sesuai kebutuhan. Dengan menekan [Ctrl-Z], Anda dapat menyetop sementara proses yang sedang berjalan dan kemudian menjalankannya lagi di foreground atau background dengan perintah yang sesuai. Semua ini memungkinkan pengguna untuk lebih efisien mengelola dan mengendalikan proses dalam sistem Linux.
Komentar
Posting Komentar