Praktikum Proses dan Manajemen Proses pada Linux

Praktikum

Proses dan Manajemen Proses

Tujuan Praktikum

Setelah mempelajari materi dalam bab ini, Anda diharapkan dapat:

  1. Memahami konsep proses.
  2. Memahami hubungan proses parent dan child.
  3. Mengetahui bagaimana pembuatan, mengeksekusi dan menunggu proses.
  4. Mengetahui dan melakukan inisialisasi proses booting.
  5. Memahami penjadwalan prioritas.

Persiapan Praktikum:

  • Baca diktat/buku pendukung mengenai sistem operasi, khususnya mengenai proses dan manajemen proses.

Dasar-Dasar Teori

A. Definisi Proses

Pengertian proses secara informal adalah sebuah program yang sedang dijalankan (eksekusi). Perlu ditekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti misalnya isi dari sebuah berkas/file yang disimpan didalam disket.

'/proc' filesystem:
Informasi mengenai proses yang sedang berjalan disimpan di filesystem '/proc', yang terdiri dari data kernel yang berubah-ubah secara real-time. Oleh karena bukan file sistem sungguhan seperti yang lainnya, data-data nya tidak memakan tempat di harddisk dan Anda tidak dapat menulisinya. Tetapi kita dapat menampilkan dan merubah informasi yang terdapat di dalamnya (misalnya dengan perintah cat). Di dalam '/proc' Anda akan menemukan banyak sekali direktori yang namanya terdiri dari angka-angka. Angka-angka ini yang disebut dengan "process IDs" (PID). Jika Anda menampilkan salah satu direktori, Anda akan menemukan seperti 'cmdline', yang berisi perintah yang menjalankan proses tersebut, atau 'stat', yang terdiri dari kode dari proses tersebut.

# ls /proc/6933/cmdline bash

Yang berarti 'Proses dengan PID 6933 dimulai dengan perintah bash'. Anda sendiri tidak perlu mencoba perintah diatas, karena PID untuk proses bash saja mungkin akan berbeda pada linux Anda.

B. Tipe-Tipe Proses dalam Linux

  • Interactive processes: proses yang dimulai (dan dikontrol oleh) shell. Bisa tampak diluar (foreground) ataupun hanya didalam (background). Dimaksud dengan shell adalah sebuah program yang dapat berkomunikasi dengan pengguna komputer (manusia) dan memungkinkan pengguna komputer untuk berinteraksi dengan komputer.
  • Batch processes: proses yang tidak berhubungan dengan terminal, tetapi menunggu untuk dieksekusi secara sekuensial (satu per satu).
  • Daemon processes: proses yang dimulai ketika Linux booting dan berjalan secara background. Proses ini 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.

C. Hubungan Proses parent dan child

Pusat (parent/ayah) dari semua proses adalah 'INIT'. Perintah pstree memperlihatkannya dengan jelas. 'INIT' mengendalikan proses mana yang akan dijalankan dan dihentikan. Anak (child) dari 'INIT' dapat memiliki proses anak lagi. Jika Anda menjalankan program dengan mengetikkan namanya di baris perintah, program tersebut akan menjadi anak dari program yang menangani baris perintah. Dalam kebanyakan kasus, program ini adalah 'Bash' (Bourne-Again-Shell). Satu hal penting yang harus diketahui bahwa anak-anak proses 'mewarisi' beberapa sifat dari ayahnya. Jika Anda menjalankan suatu proses dengan hak akses 'root', anak prosesnya juga akan memiliki hak yang sama.

D. Menggunakan 'ps' untuk Mengontrol Proses

Tentu saja akan sangat merepotkan untuk melihat proses-proses dengan membaca file-nya di direktori '/proc'. Ada dua program yang dapat melakukannya: ps dan top. Keduanya mengambil semua informasi tentang proses di dalam direktori '/proc' dan mencetaknya dalam format yang mudah dibaca.

Mungkin bagi orang yang belum mengerti, formatnya tidak begitu rapih. Sehingga beberapa penjelasan mungkin akan membantu. 'ps' menyediakan tampilan statis dari proses yang diminta ketika ps dijalankan. Ps sendiri tidak begitu membantu, karena Anda hanya akan melihat tampilan seperti berikut:

$ ps PID TTY TIME CMD 546 pts/0 00:00:00 bash 1138 pts/0 00:00:00 ps

Hanya itu, menampilkan informasi prosesnya sendiri yaitu 'parent'. Karena Anda menjalankan ps dari baris perintah, parent-nya adalah shell baris perintah (=program yang menerjemahkan perintah Anda, dalam kebanyakan kasus adalah 'bash'). Oleh karena itu ps mempunyai banyak sekali option. Untuk melihat semuanya ketik:

$ ps auxf

Anda dapat menggunakan output redirection untuk membuat file yang berisi status dari proses yang sedang berjalan:

$ ps auxf > status.txt

'ps' memiliki banyak sekali option untuk mengatur tampilan tersebut. Anda dapat mengurutkan tampilan berdasarkan field, menaik/menurun, hanya menampilkan proses dengan karakteristik tertentu, hanya menampilkan beberapa field, merubah format beberapa field, dsb. man ps akan menjelaskannya kepada Anda.

Beberapa penjelasan field dan nilai yang digunakan oleh 'ps':

  • %CPU: persentase dari waktu CPU yang telah digunakan oleh proses tersebut.
  • %MEM: persentase dari memori sistem yang digunakan oleh proses.
  • SIZE: jumlah memori yang digunakan.
  • RSS: Resident Set Size. Ukuran sebenarnya ('berat bersih') dari running process.
  • STAT: status proses sekarang. S berarti 'sleeping', R kepanjangan dari 'running', W untuk 'no resident pages in memory', T untuk 'stopped', D untuk 'defunct' dan Z untuk 'zombie'. Proses defunct merupakan proses yang berjalan sembarangan. Kill saja secepat mungkin. 'Zombie' sepertinya tidak kelihatan baik, tapi tidak berpengaruh apa-apa pada sistem. Mereka akan dihilangkan pada shutdown berikutnya.
  • START: kapan proses tersebut aktif.

Menggunakan 'top'

top memberikan Anda tampilan dinamis dari status proses yang sedang berjalan. Dia menampilkan suatu tabel proses yang diperbaharui pada interval waktu tertentu (defaultnya: 5 detik). Pada bagian atas tabel ini ada keterangan mengenai status dari sumber daya sistem saat ini. Mungkin top akan membingungkan pada awalnya, tetapi fasilitasnya dapat diatur sedemikian rupa sesuai kebutuhan Anda. Option yang paling penting adalah -d[sec], yang menentukan interval update dalam detik. Setelah masuk ke top Anda dapat merubah jumlah field yang ditampilkan dan ukurannya dengan menekan tombol 'f' atau 'o'. Tombol yang dapat digunakan adalah 'AbcDeFgHiJklMnOpqrstuvVyEFX'. Huruf kecil menentukan field yang tidak akan ditampilkan dan urutan huruf menjelaskan urutan dari field yang ditampilkan. Cobalah sendiri dan jika Anda ingin menyimpan konfigurasinya, tekan tombol 'W' untuk menyimpan konfigurasi pada suatu file di direktori home Anda ('.toprc').

Tugas Pendahuluan (Pre Test)

Jawablah pertanyaan-pertanyaan di bawah ini :

  1. Apakah yang dimaksud dengan proses?
  2. Apa perbedaan antara kedua perintah untuk menampilkan status proses berikut ini: ps, pstree.
  3. Sebutkan dan jelaskan opsi-opsi yang dapat diberikan pada perintah ps!
  4. Apakah yang dimaksud dengan proses foreground dan background pada process control?
  5. Apa yang dimaksud perintah-perintah penjadwalan prioritas berikut ini: top

Percobaan (Praktikum)

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

Percobaan 1 : Direktori

  1. Pindah ke command line terminal dan login ke terminal sebagai user.
  2. Instruksi ps digunakan untuk melihat kondisi proses yang ada. PID adalah Nomor Identitas Proses, TTY adalah nama terminal dimana proses tersebut aktif, COMMAND merupakan instruksi yang digunakan.
    $ ps
  3. Untuk melihat faktor/elemen lainnya, gunakan option -u (user).
    $ ps -u
  4. Mencari proses yang spesifik pemakai. Proses berikut hanya terbatas pada proses milik pemakai, dimana pemakai tersebut melakukan login.
    $ ps -u [nama_user]
  5. Mencari proses lainnya gunakan opsi a (all) dan au (all user).
    $ ps -a $ ps -au

Percobaan 2 : Menampilkan Hubungan Proses parent dan child

  1. Ketik ps -eH dan tekan Enter. Opsi e memilih semua proses dan opsi H menghasilkan tampilan proses secara hierarki. Proses child (anak) akan muncul dibawah proses parent (ayah). Proses child ditandai dengan awalan beberapa spasi.
    $ ps -eH

    Notes: Ingat!!! Dalam Linux, besar kecilnya huruf sangat berpengaruh (case sensitive).

  2. 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
  3. Ketik pstree dan tekan Enter. Akan ditampilkan semua proses pada sistem dalam bentuk hierarki 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 (lagi). Proses login mempunyai proses bash sebagai child. Proses bash mempunyai proses child startx. Proses startx mempunyai child xinit dan seterusnya.
    $ pstree
  4. Ketik pstree | grep daemon. Kata kunci grep digunakan untuk mencari teks yang ada pada suatu file atau output perintah sebelumnya (dalam hal ini pstree). Perintah ini akan menampilkan setiap baris output dari pstree yang mengandung kata daemon.
    $ pstree | grep daemon
  5. Untuk melihat semua PID setiap proses, gunakan opsi -p.
    $ pstree -p
  6. Untuk menampilkan proses dan ancestor yang tercetak tebal, gunakan opsi -h.
    $ pstree -h

Percobaan 3 : Menampilkan Status Proses dengan Berbagai Format

  1. Ketik ps -e | more dan tekan Enter. Opsi -e akan menampilkan semua proses dalam bentuk 4 kolom: PID, TTY, TIME, CMD.
    $ ps -e | more
  2. Ketik ps ax | more dan tekan Enter. Opsi a akan menampilkan semua proses yang tidak dihasilkan terminal (TTY). Opsi x menampilkan semua proses yang tidak dihasilkan terminal. Secara logika, opsi ini sama dengan opsi -e. Terdapat 5 kolom yang ditampilkan: PID, TTY, STAT, TIME dan COMMAND.
    $ ps ax | more

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

  3. Ketik ps -e f | more dan tekan Enter. Opsi -e f akan menampilkan semua proses dalam format daftar penuh.
    $ ps -e f | more
  4. 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
  5. 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 memori sistem yang digunakan oleh proses. Jika proses hanya menggunakan sedikit memori sistem akan ditampilkan 0.
    $ ps -eo pid,ppid,%mem,cmd | more

Percobaan 4 : Mengontrol Proses pada shell

  1. Gunakan perintah yes yang akan mengirim output y yang tidak pernah berhenti. Untuk menghentikannya gunakan Ctrl+C.
    $ yes
  2. Belokkan standar output ke /dev/null
    $ yes > /dev/null

    Untuk menghentikannya gunakan Ctrl+C.

  3. 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. Angka dalam "[ ]" merupakan job number diikuti PID.
    $ yes > /dev/null &
  4. Untuk melihat status proses gunakan perintah jobs
    $ jobs
  5. Untuk menghentikan proses/job, gunakan perintah kill diikuti job number atau PID proses: kill %[nomor job]. Untuk identifikasi job number, diikuti prefix dengan karakter "%".
    $ kill %1
  6. Lihat status job setelah diterminasi
    $ jobs

Latihan Soal

  1. Buka terminal kemudian ketik ps -aux dan tekan Enter. Kemudian perhatikan keluaran sebagai berikut:
    • Tandai nama-nama proses yang bukan root.
    • Tulis PID dan COMMAND dari proses yang paling banyak menggunakan CPU Time.
    • Sebutkan beberapa proses daemon.
    • Pada prompt login lakukan hal-hal sebagai berikut:
      $ csh $ who $ bash $ ls $ sh $ ps
    • Sebutkan PID yang paling besar, dan kemudian buat urut-urutan proses sampai ke PPID = 1.
  2. Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil tampilannya:
    OpsiKeterangan
    -fdaftar penuh
    -jformat job
    -lformat job control
    ldaftar memanjang
    sformat sinyal
    vformat virtual memo
    Xformat register i386

Komentar

Postingan populer dari blog ini

Instalasi Linux Ubuntu pada VirtualBox

Instalasi Windows 10 pada VirtualBox

Remastering OS Linux Ubuntu menggunakan Cubic