Linux : Proses dan Manajemen Proses

Proses dan Manajemen Proses


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 sis tem 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 Sistem Operasi 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 dibe rikan 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 system.
Standar nomor sinyal yang terpenting adalah :

No Sinyal

Nama

Deskripsi

1

SIGHUP

Hangup, sinyal dikirim bila proses terputus, misalnya melalui putusnya hubungan modem

2

SIGINT

Sinyal interrupt, melalui ^C

3

SIGQUIT

Sinyal Quit, melalui ^\

9

SIGKILL

Sinyal Kill, menghentikan proses

15

SIGTERM

Sinyal terminasi software


3 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 sementara 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.

Tugas Pendahuluan

Jawablah pertanyaan-pertanyaan di bawah ini :

1.        Apa yang dimaksud dengan proses ?

Proses adalah program yang sedang dieksekusi.

 

2.        Apa yang dimaksud perintah untuk menampilkan status proses ps, pstree.

ps: menunjukkan semua proses yang sedang berjalan pada mesin (bukan hanya proses pada shell saat ini). Jika menggunakan perintah ps tanpa diikuti option apapun, maka akan ditampilkan output standart dari perintah ps tersebut yang terdiri dari PID, TTY, TIME, dan CMD.


pstree : menampilkan hanya proses mingetty dan semua proses tersebut dikelompokkan lagi dengan susunan angka sebagai proses yang sedang berjalan.

 

3.        Sebutkan opsi yang dapat diberikan pada perintah ps

-e

Digunakan untuk menampilkan semua proses.

-C

Digunakan untuk menyaring proses berdasarkan nama/perintah.

-f

Digunakan untuk menampilkan semua informasi proses secara lengkap.

-r

Digunakan untuk menampilkan proses yang sedang berjalan.

-u

Digunakan untuk menampilkan proses pada user tertentu saja. Biasanya diikuti dengan menggunakan nama user yang ingin dilihat prosesnya.

-o

Digunakan untuk menampilkan proses yang menggunakan kata kunci tertentu saja.

-aux

-fae

Sedangkan jika ingin melihat informasi proses secara keseluruhan.

–pid

Digunakan untuk menampilkan informasi proses berdasarkan Process ID (PID).

–ppid

Digunakan untuk menampilkan informasi proses berdasarkan Parent Process ID (PPID).

 

 

4.        Apa yang dimaksud dengan sinyal ? Apa perintah untuk mengirim sinyal ?

        Sinyal adalah suatu gejala fisika dimana satu atau beberapa dari karakteristiknya melambangkan informasi.

Perintah mengirim sinyal :

kill [-nomor sinyal] PID

 

5.        Apa yang dimaksud dengan proses foreground dan background pada job control ?

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.

 

6.        Apa yang dimaksud perintah-perintah penjadwalan prioritas :

top, nice, renice.

  • top digunakan untuk melihat proses dengan PID masing-masing.

  • nice pada dasarnya digunakan untuk tugas-tugas disk atau CPU yang berat sehingga mungkin dapat menyebabkan penurunan kinerja sistem. Dengan perintah nice kita bisa mengubah prioritas pengerjaan sebuah proses, Secara  default prioritas nice diset pada nilai 10. Range nilai Nice dari +19 (very nice) hingga −20 (not very nice)

  • Operasi renice kebalikan dari nice, Renice digunakan untuk menurunkan prioritas pengerjaan sebuah proses. Misalkan kita memiliki proses yang dijalankan dengan  PID 785, yang mengerjakan perhitungan matematika yang panjang, sedangkan pada saat yang sama kita ingin melakukan operasi lain misalkan bermain game yang membutuhkan free system resources.

Percobaan I : Status Proses

1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2  dan login ke terminal sebagai user.
Ketika pertama masuk ke terminal akan langsung diarahkan untuk login dan password. Setelah itu baru bisa mengakses command line sebagai user. Jika password salah, command line tidak bisa diakses dan akan terus diarahkan untuk login seperti pada gambar di atas.


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 (Sleeping) dan R (Running), COMMAND  merupakan instruksi yang digunakan. 
    $ ps

Pada percobaan ini dapat diketahui bahwa terminal yang sedang aktif adalah terminal 2 (tty2). Perintah yang sudah dijalankan baru ada dua yaitu bash dan ps itu sendiri. Setiap perintah ini memiliki nomor identitas atau PID. Bash singkatan dari bourne again shell, digunakan untuk menerjemahkan user dengan kernel. PID dari bash yaitu 2379 dan PID dari instruksi ps adalah 2462.


3. Untuk melihat faktor/elemen lainnya, gunakan option –u (user).  %CPU  adalah presentasi CPU 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

$ ps -u

Berdasarkan gambar percobaan di atas, dapat diketahui ps -u adalah melihat semua proses yang dijalankan oleh user pada semua terminal. Karena hanya ada satu user, maka hasilnya mirip seperti hasil percobaan berikutnya (Percobaan 4), namun percobaan ini keterangannya lebih banyak. Hanya ada dua instruksi yang telah dijalankan pada terminal 2, dan sisanya pada terminal 1 sedangkan yang sedang aktif digunakan adalah terminal 2.

          

4. Mencari proses yang spesifik pemakai.  Proses diatas hanya terbatas pada proses milik pemakai, dimana pemakai teresbut melakukan login

$ ps –u <user>

Pada percobaan ini menghasilkan semua command/intruksi yang dijalankan user 'diah' beserta PID, tty, TIME dan command nya. Terdapat pula perintah yang tidak diketahui terminal mana yang sedang berjalan.

 

5.  Mencari proses lainnya gunakan opsi a (all) dan au (all user)

          $ ps –a

$ ps –au

Intruksi $ ps -a digunakan untuk menampilkan intruksi dari semua user beserta PID, tty, TIME dan commandnya. Sedangkan perintah $ ps -au merupakan gabungan dari perintah -a dan -u.

             

6.  Logout dan tekan Alt+F7 untuk kembali ke mode grafis


Dengan melakukan perintah logout maka terminal akan logout dan kembali seperti pertama kali terminal dibuka, yaitu meminta login.


Percobaan 2 : Menampilkan Hubungan Proses Parent dan Child

1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user.
Ketika pertama masuk ke terminal akan langsung diarahkan untuk login dan password. Setelah itu baru bisa mengakses command line sebagai user. Jika password salah, command line tidak bisa diakses dan akan terus diarahkan untuk login seperti pada gambar di atas.

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.
$ ps -eH
Perintah $ ps -eH digunakan untuk menampilkan semua proses dalam daftar dengan mempertimbangkan hierarki perintahnya. Proses child memiliki spasi di depan nama CMDnya. Dapat dilihat pada gambar, tedapat tulisan yang menjorok ke kanan pada kolom CMD (sebelah kanan).



3. Ketik ps –e f dan tekan Enter. Tampilan serupa dengan langkah 2. Opsi –f akan menampilkan status proses dengan karakter grafis (\ dan _)
$ ps –e f
Perintah ini mirip dengan perintah sebelumnya, namun proses child tidak ditandai dengan spasi, namun karakter grafis(\_). Sebagai contoh, command /bin/login -p -- memiliki proses child yaitu -bash dan proses -bash memiliki proses child ps -e f.



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 mempunyai proses bash sebagai child. Proses bash mempunyai proses child startx. Proses startx mempunyai child xinit dan seterusnya.
$ pstree
Perintah ini untuk menampilkan semua command dalam bentuk tree/pohon beserta garis-garis yang menghubungkannya. Perintah ini membuat proses parent dan child terlihat jelas. Proses child lebih menjorok ke kanan dari proses parentnya dan terdapat garis penghubungnya.


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.
$ pstree | grep mingetty
Pada percobaan di atas, perintah ini tidak menghasilkan apa-apa. Artinya tidak ada proses mingetty yang sedang berjalan.



6. Untuk melihat semua PID untuk proses gunakan opsi –p.
$ pstree –p
Percobaan ini hasilnya sama dengan percobaan empat, yaitu menampilkan semua perintah atau command beserta hierarki atau hubungan parent-child. Yang membedakan adalah setiap perintahnya terdapat PID dibelakang nama commandnya.


7. Untuk menampilkan proses dan ancestor yang tercetak tebal gunakan opsi –h.
$ pstree –h
Pada hasil percobaan gambar di atas, dapat dilihat ada perintah yang tercetak tebal. Ini yang dinamakan proses dan 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.

Ketika pertama masuk ke terminal akan langsung diarahkan untuk login dan password. Setelah itu baru bisa mengakses command line sebagai user. Jika password salah, command line tidak bisa diakses dan akan terus diarahkan untuk login seperti pada gambar di atas.

 

2.     Ketik ps –e | more dan tekan Enter. Opsi -e menampilkan semua proses dalam bentuk 4 kolom : PID, TTY, TIME dan CMD.

$ ps –e | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q untuk kembali ke prompt perintah.

Percobaan ini adalah untuk melihat semua intruksi/command yang ada secara berurutan dari perintah nomor 1 dalam satu halaman penuh (perintah $ more). Pada gambar di atas, pada bagian tty terdapat tanda tanya yang berarti perintah tersebut tidak sedang dijalankan pada terminal manapun.

 

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.

$ ps ax | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q untuk kembali ke prompt perintah.

Hasil perintah ini sama dengan perintah di nomor 2, yang berbeda hanyalah kolom yang ditampilkan ada 5 yaitu PID, tty, Stat, time dan CMD. TIME adalah waktu yang diperlukan oleh CPU untuk memproses perintah atau command aplikasi tersebut. STAT adalah kode status proses. Kode Status Process di Linux

D uninterruptible sleep (biasanya IO)
R proses sedang berjalan/dapat dijalankan (saat masuk queue/antrian)
S sleep dan sedang menunggu event selesai
T Diberhentikan oleh job kontrol
Z Zombi process karena tidak diberhentikan oleh induk process
< proses dengan prioritas tinggi
N proses dengan prioritas rendah
L process telah dikunci dalam memory untuk process realtime dan custom IO
s Session leader
l Multi threaded menggunakan CLONE_THREAD, seperti yang dilakukan oleh NPTL pthreads
+ group untuk proses yang ada tampilan nya dan bisa dilihat user,bukan background process.

 

 

4.      Ketik ps –e f | more dan tekan Enter. Opsi –e f akan menampilkan semua proses dalam format daftar penuh.

$ ps ef | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q untuk kembali ke prompt perintah.

Hasil perintah ini adalah menampilkan semua proses dalam format daftar penuh. Sebagai contoh, pada gambar di atas terdapat perintah –bash pada terminal 4, -ps ef dan more.

 

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.

$ ps –eo pid,cmd | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q untuk kembali ke prompt perintah.

Opsi –eo akan menampilkan semua proses dalam format sesuai definisi user yaitu terdiri dari kolom PID dan CMD. Karena perintahnya hanya PID dan CMD, maka yang ditampilkan hanya PID dan CMDnya. Kemudian perintah ini menggunakan perintah more, yang artinya hasil akan dalam satu halaman penuh, dan perlu menekan enter untuk menampilkan perintah selanjutnya.

 

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

Format yang ditampilkan hasil sesuai perintah yang diminta yaitu PID, PPID, %MEM dan CMD.

7.      Logout dan tekan Alt+F7 untuk kembali ke mode grafis

Dengan melakukan perintah logout maka terminal akan logout dan kembali seperti pertama kali terminal dibuka, yaitu meminta login.


Percobaan 4. Mengontrol Proses pada Shell

1.      Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user.

        Ketika pertama masuk ke terminal akan langsung diarahkan untuk login dan password. Setelah itu baru bisa mengakses command line sebagai user. Jika password salah, command line tidak bisa diakses dan akan terus diarahkan untuk login seperti pada gambar di atas.


 

2.      Gunakan perintah yes yang mengirim output y yang tidak pernah berhenti

$ yes

Untuk menghentikannya gunakan Ctrl-C.

Dapat dilihat pada gambar bahwa terdapat banyak huruf y. Huruf y ini akan terus berjalan selama belum di stop, dan untuk menghentikannya dengan cara menekan CTRL+C di keyboard.

 

3.      Belokkan standart output ke /dev/null

$ yes > /dev/null

Untuk menghentikannya gunakan Ctrl-C.

Perintah ini untuk memasukkan input dari keyboard dan outputnya dibelokkan ke file /dev/null. Input bisa diisi apa saja dan baru akan berhenti menggunakan CTRL+C.

 

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.

$ yes > /dev/null &

Angka dalam ”[ ]” merupakan job number diikuti PID.

Berdasarkan percobaan ini, job number perintah ini adalah 1 dan PID nya 2155.

 

5.      Untuk melihat status proses gunakan perintah jobs.

$ jobs

Dapat dilihat pada gambar, job number nomor 1 atau perintah pada percobaan 4 sedang berjalan (running). Tanda + artinya proses tersebut bisa dilihat user, bukan background process.

 

6.      Untuk menghentikan job, gunakan perintah kill diikuti job number atau PID proses. Untuk identifikasi job number, diikuti prefix dengan karakter ”%”.

$ kill %<nomor job> contoh : kill %1

Karena proses yang ingin dihentikan memiliki job number 1, maka menggunakan perintah seperti pada gambar di atas.

 

7.      Lihat status job setelah diterminasi

$ jobs

Dapat dilihat pada gambar di atas, setelah sebuah proses dihentikan dengan perintah kill, proses tersebut akan berhenti (Terminated).

 

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

$ yes > /dev/null

Hentikan sementara job (suspend ), bukan menghentikannya (terminate ), tetapi menghentikan sementara job sampai di restart. Untuk menghentikan sementara job gunakan Ctrl-Z.

Perintah ini untuk memasukkan input secara langsung dari keyboard kemudian outputnya dibelokkan. Untuk menghentikan sementara menggunakan CTRL+Z. Oleh karena itu, status prosesnya Stopped.

 

2.       Untuk restart job pada foreground , gunakan perintah fg.

$ fg 


Untuk memulai kembali perintah sebelumnya di foreground menggunakan perintah fg. Maka perintah yang sebelumnya akan kembali berjalan (percobaan 5.1).

 

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

 

Job tidak bisa dihentikan dengan Ctrl-Z karena job berada pada background. Untuk menghentikannya, letakkan job pada foreground dengan fg dan  kemudian hentikan sementara dengan Ctrl-Z.

$ fg

 


Dapat dilihat pada gambar bahwa proses yes > /dev/null & tetap berjalan meski tidak terlihat di layar, namun prosesnya Running. Untuk menghentikannya harus meletakkan proses tersebut di foreground. Barulah prosesnya bisa dihentikan (Stopped).

 

4.       Job pada background dapat digunakan untuk menampilkan teks pada terminal, dimana dapat diabaikan jika mencoba mengerjakan job lain.

$ yes &

Untuk menghentikannya tidak dapat menggunakan Ctrl-C. Job harus dipindah ke foreground, baru dihentikan dengan cara tekan fg dan tekan Enter, kemudian dilanjutkan dengan Ctrl-Z untuk menghentikan sementara.

Perintah ini menghasilkan hasil yang tidak bisa dihentikkan.

 

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


Jika terdapat beberapa atau banyak job, maka perintah fg dan bg membutuhkan keterangan job ID. Karena jika tidak ada job IDnya maka perintah yang otomatis dijalankan adalah perintah sebelumnya. Pada gambar di atas adalah job dengan job number 1.

 

6.      tekan fg dan tekan Enter, kemudian dilanjutkan dengan Ctrl -Z untuk menghentikan sementara.

Perintah ini untuk meletakkan proses background sebelumnya ke foreground, kemudian dihentikan. Dapat dilihat pada gambar bahwa prosesnya terhenti sementara (Stopped).

 

7.       Lihat job dengan perintah ps -fae dan tekan Enter. Kemudian hentikan proses dengan perintah kill.

$ ps –fae

$ kill -9 <NomorPID>

 

Perintah  $ ps –fae digunakan untuk menampilkan secara lengkap seluruh proses yang sedang berjalan beserta detailnya. Sedangkan perintah $ kill -9 <nomor PID> digunakan untuk menghentikan atau terminate suatu proses dengan memasukkann nomor PID sebagai pengenal prosesnya.

 

8.      Logout dan tekan Alt+F7 untuk kembali ke mode grafis

    Dengan melakukan perintah logout maka terminal akan logout dan kembali seperti pertama kali terminal dibuka, yaitu meminta login.

 

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.

Untuk login sebagai root menggunakan perintah $ sudo su. Tanda masuk ke kode root adalah nama mesin menjadi berakhiran tanda pagar ‘#’. Setelah menjalankan perintah seperti pada nomor 3, maka setiap terminal akan menampilkan ~: sebagai tanda bahwa posisi berada di direktori home.

 

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. Ketik i. 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 je ndela Top.

7.      Pada terminal 1, bukalah program executable C++ dengan mengetik program yes dan tekan Enter.

8.      Ulangi langkah 7 untuk terminal 2.

 

Gambar di atas adalah gabungan dari percobaan nomor 5, 6, 7 dan 8. Dapat dilihat ada empat terminal yang ditampilkan. Terminal nomor 4 atau kanan bawah menampilkan proses Top. Ketika ditekan ‘i’ maka hanya proses yang sedang berjalan saja yang akan ditampilkan. Pada gambar, terminal 1 dan terminal 2 telah menampilkan program yes. Program ini menampilkan y yang terus berjalan.

 

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 3148 dan 3149. Kemudian gunakan terminal 3 (yang tidak menjalankan primes maupun Jendela Top) dan ketik renice 19 <PID terimnal 1> (contoh : renice 19 3148) dan diikuti Enter. Hal ini berarti mengganti penjadwalan prioritas dari proses ke 19.

Gambar di atas adalah tampilan jendela Top. Percobaan kali ini adalah mencoba menghentikan salah satu dari program terminal yang menjalankan perintah ‘yes’. Perintah ini dapat diketahui pada kolom CMD atau yang memiliki nomor sama di kolom VIRT yaitu 7472. Untuk mencoba menghentikan proses di terminal 2, maka perintah yang diketikkan pada terminal 3 adalah $ renice 19 2997.

 

10.  Tunggu beberapa saat sampai program top berubah dan terlihat pada jendela Top. Pada kolom STAT memperlihatkan N untuk proses 3148. Hal ini berarti bahwa penjadwalan prioritas untuk proses 3148 lebih besar (lebih lambat) dari 0. Proses 3149 berjalan lebih cepat.

Dapat dilihat pada gambar di atas bahwa command yang memiliki PID 2997 sekarang pada urutan prioritas 19 pada kolom NI. Artinya, penjadwalan prioritas untuk proses 2997 lebih lambat dari proses 2996 (proses di terminal 1 atau terminal root).

 

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 3148 lebih cepat dari proses 3149. Kolom status menunjukkan < pada proses 3148 yang menunjukkan penjadwalan prioritas lebih rendah (lebih cepat) dari nilai 0.

Gambar ini menunjukkan cara mengetikkan perintah di jendela yang berisi proses Top. Jika ditekan enter, maka proses 2997 akan berada di bawah proses 2996 seperti sedia kala.

 

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).

Ketka perintah dijalankan, maka terminal 3 akan menampilkan proses ‘yes’ seperti pada terminal 1 dan 2.

 

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.

Dapat dilihat pada gambar, terdapat 3 command berisi ‘yes’. PID 2996 untuk terminal 1, 2997 untuk terminal 2 dan 3348 untuk terminal 3. Ketiganya memiliki nomor VIRT yang sama yaitu 7472.

 

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.

Gambar di atas adalah untuk menjalankan program tersebut dan tinggal tekan enter untuk mengeksekusinya.

 

16.  Tutup semua terminal window.

17.  Logout dan 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

Dari gambar di atas, banyak sekali proses yang bukan root. Nama-nama proses bisa dilihat di kolom COMMAND dengan user diah. Salah satunya adalah proses –bash, ps –au.

 

b.        Tulis PID dan COMMAND dari proses yang paling banyak menggunakan CPU time.

Dari gambar sebelumnya, proses yang memakan CPU paling banyak yaitu sebesar 2.5. Proses ini memiliki PID 1385 dengan nama proses /usr/bin/gnome-shell

 

c.         Sebutkan buyut proses dan PID dari proses tersebut

Salah satu buyut prosesnya adalah systemd dengan PID 1.

 

d.        Sebutkan beberapa proses daemon

 


Proses daemon adalah proses yang memiliki nama berakhiran d, contohnya systemd, boltd, cupsd, fwupd, dan lain-lain.

 

e.   Pada prompt login lakukan hal- hal sebagai berikut :

$ csh

$ who

$ bash

$ ls


Fungsi csh adalah untuk mengetikkan langsung. Untuk mengakhiri perintah ini menggunakan ‘exit’. Pada perintah who, hanya ada satu user yang berada di terminal yaitu user ‘diah’ di terminal 2. Ls adalah untuk menampilkan seluruh isi direktori yang sedang aktif.

 

$ sh

$ ps

Fungsi sh mirip denga csh. Proses yang sedang aktif,hanya ada 3 command.

 

f.         Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses sampai ke PPID = 1.

PID yang paling besar yaitu proses more dengan PID 2506.

 

2.      Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil tampilannya :

-f daftar penuh

 


Perintah ini akan menampilkan hasil dengan kolom UID, PID, PPID, C, STIME TTY, TIME dan CMD.

 

-j format job

 


Perintah ini akan menampilkan hasil dengan kolom PID, PGID, SID, TTY, TIME dan CMD.

 

j format job control

 


Perintah ini akan menampilkan hasil dengan kolom PPID, PID, PGID, SID, TTY, TPGID, STAT, UID TIME dan CMD.

 

l daftar memanjang

 


Perintah ini akan menampilkan hasil dengan kolom F, UID, PID, PPID, PRI, NI, VSZ, RSS, WCHAN, STAT, TTY, TIME dan COMMAND.

 

s format sinyal

 

Perintah ini akan menampilkan sinyal dengan 10 kolom yaitu UID, PID, PENDING, BLOCKED, IGNORED, CAUGHT, STAT, TTY, TIME, COMMAND. Sinyal ini direpresentasikan dalam bentuk hexadecimal karena ada huruf-huruf di dalam sinyalnya.

 

v format virtual memory

 

Perintah ini akan menampilkan hasil dengan kolom PID, TTY STAT, TIME, MAJFL, TRS, DRS, RSS, %MEM, dan COMMAND.

 

X format register i386

 


Perintah ini akan menampilkan hasil dengan kolom PID, STACKP, ESP, EIP, TMOUT, ALARM, STAT, TTY, TIME and 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

b.      Gunakan perintah sleep 5. Apa yang terjadi dengan perintah ini ?

c.       Jalankan perintah pada background menggunakan &


Gambar di atas adalah untuk nomor b dan c. perintah sleep menghentikan sementara eksekusi pada perintah berikutnya selama beberapa detik. Ketika tidak ada suffix digunakan, standarnya adalah dalam hitungan detik. Artinya, perintah di atas adalah menghentikan eksekusi selama 5 detik. Perintah ini berada di job number 1 dan memiliki PID 1948.

 

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.

 


Ketika akan mengembalikan job ke foreground, waktu yang ditempuh lebih dari 15 detik, oleh karena itu prosesnya sudah selesai saat menjalankan perintah $ jobs.

 

e.       Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan perintah kill untuk menghentikan proses diikuti job number.

Dapat dilihat pada gambar bahwa proses ini sudah dihentikan. Keterangan terminated artinya proses dihentikan.

 

f.       Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan kill untuk menghentikan sementara proses. Gunakan bg untuk melanjutkan menjalankan proses.

 


Pada percobaan, ketika akan menghentikan proses menggunakan kill, terdapat pesan error. Hal ini karena sleep 15  berarti menjeda eksekusi selama 15 detik dan waktu 15 detik tersebut telah terlewat dan prosesnya sudah selesai.

 

g.       Jalankan sleep 60 pada background 5 kali dan terminasi semua pada dengan menggunakan perintah killall.

 


Karena proses ‘killall’ ini berhasil, maka ketika melihat proses yang sedang berjalan menggunakan perintah ‘job’ tidak akan menampilkan hasil apa-apa.

 

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 ? Dapatkan Anda identifikasi shell dan subprose s ?

Proses child terdapat beberapa spasi atau lebih menjorok ke kanan daripada proses parentnya. Sedangkan proses daemon adalah proses yang memiliki akhiran ‘d’ seperti kthreadd, khungtaskd, kblockd, ksmd, dan lain-lain.

 

j.        Kombinasikan ps –fae dan grep, apa yang Anda lihat ?

 


Sebagai contoh, kata yang dikutip adalah ‘daemon’ maka semua hasil ps –fae yang terdapat kata kunci ini akan dimunculkan.

 

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 ?

 


Prosesnya akan berhenti.



Referensi

https://rachmanmarangga.wordpress.com/2012/04/26/persamaan-dan-perbedaan-ps-dan-pstree-pada-linux/

https://www.hostinger.co.id/tutorial/manajemen-proses-linux-dengan-command-line/

https://www.linuxid.net/31474/tutorial-penggunaan-perintah-ps-di-linux-terminal/

https://www.belajarlinux.org/cara-mengelola-dan-monitor-proses-aplikasi-yang-berjalan-di-linux/

 https://www.hostinger.co.id/tutorial/manajemen-proses-linux-dengan-command-line/#:~:text=PPID%20%E2%80%93%20Process%20Parent%20ID.%20ID,bash%20lainnya%20atau%20yang%20serupa.

https://ambilgratis.com/2013/05/03/mengenal-daemon-pada-linux/#:~:text=Daemon%20adalah%20service%20yang%20berjalan,realtime%20dan%20berjalan%20dibelakang%20layar.




Komentar

Postingan populer dari blog ini

Linux : Operasi File dan Struktur Direktori

Anugerah Pewarta Astra 2022 : PEMANFAATAN KEMAJUAN TEKNOLOGI DALAM MEMBUAT LOBTECH, ALAT BANTU BUDIDAYA LOBSTER