Selasa, 08 April 2014

Proses dan Manajemen Proses Linux

21.35 Posted by Unknown No comments


Proses dan Manajemen Proses Linux

Proses adalah Program yang sedang dieksekusi. Setiap kali menjalankan suatu program, Sistem UNIX melakukan suatu fork, yaitu melakukan beberapa urutan operasi untuk membuat suatu proses konteks dan kemudian mengeksekusi program tersebut dalam konteks yang sudah dibuat. Oleh karena itu kita harus menguasai Manajemen Proses Linux. Manajemen Proses Linux adalah salah satu hal yang sangat penting yang harus dikuasai oleh seorang Teknisi Komputer. Kenapa? Karena selain kita mengetahui proses di Windows, kita harus tahu proses di Linux dan dengan penguasaan manajemen prose ini kita bisa mengetahui proses apa saja yang running pada setiap user. Atau dalam suatu jaringan juga kita bisa melakukan controlling terhadap proses setiap client.
Dalam Manajemen proses beberapa hal penting yang harus dikuasai, yaitu :
1. Mengetahui proses yang terjadi Linux
2. Dapat melakukan proses controlling terhadap proses di Linux
3. Menghentikan proses yang tidak dibutuhkan dan mengurangi performa Linux

TIPE PROSES
Terdapat beberapa tipe proses yang dikenal dalam OS berbasis Linux pada umumnya, antara lain:
  1. Interactive : proses yang dimulai (dan dikontrol oleh) shell[i][i][i]. Bisa tampak di luar (foreground) ataupun hanya di dalam (background).
  2. Batch : proses yang tidak berhubungan dengan terminal, tetapi menunggu untuk dieksekusi secara berurutan (sekuensial).
  3. Daemon : proses yang dimulai ketika Linux booting dan berjalan secara background. Proses ini menunggu permintaan dari proses lainnya, bila tidak ada request, maka berada dalam keadaan ‘idle’.
Dalam Linux, sifat-sifat proses dibagi menjadi tiga bagian, yakni: Identitas Proses, Lingkungan, dan Konteks.

IDENTITAS PROSES
Identitas proses memuat beberapa hal penting berikut:
  • Process ID (PID) → pengenal unik untuk proses; digunakan untuk menentukan proses-proses mana yang dibawa ke dalam OS saat suatu aplikasi membuat system call  untuk mengirim sinyal, mengubah, atau menunggu proses lainnya. PID adalah 32-bit bilangan yang mengidentifikasikan setiap proses dengan unik. Linux membatasi PID sekitar 0-32767 untuk menjamin kompatibilitas dengan sistem UNIX tradisional.
  • Mandat (Credentials) → setiap proses harus memiliki sebuah user ID dan satu atau lebih group ID yang menentukan hak proses untuk mengakses sumber daya sistem dan file.
  • Personality → tidak ditemukan dalam sistem UNIX, namun dalam Linux setiap proses memiliki sebuah pengenal pribadi (personality) yang dapat (sedikit) mengubah system call tertentu secara semantic. Terutama digunakan oleh library emulation agar system call dapat kompatibel dengan bentuk tertentu UNIX.
Status Proses yang dikenali dalam Linux
  1. Task Running : Proses yang siap untuk dieksekusi CPU
  2. Task Interruptable : Proses yang menunggu sebuah kondisi. Interupsi, Sinyal dan aktifitas lain akan membangunkan proses.
  3. Task Uninterruptable : Proses yang sedang sleep, dan tidak dapat di interrupt oleh signal.
  4. Task Stopped : Proses yang dihentikan
  5.  Task Zombie : Proses telah berhenti, namun masih memiliki struktur data ditask_struct di task vektor dan masih memegang sumber daya yang tidak digunakan lagi.

PERINTAH PS
Perintah atau command ps (process status) di gunakan untuk menampilkan informasi proses yang sedang berjalan termasuk nomor PID (Process Identification Number) dari proses tersebut. Proses atau biasa disebut task akan berjalan jika ada sebuah aplikasi yang sedang dijalankan, setiap proses yang berjalan oleh system diberi nomor PID yang unik.

Syntak dasar dari perintah ps adalah
ps [option]
Jika anda menggunakan perintah ps tanpa diikuti option apapun, maka akan ditampilkan output standart dari perintah ps tersebut yang terdiri dari PID, TTY, TIME, dan CMD

1. Memulai menggunakan perintah ps
Ketikkan perintah berikut untuk menampilkan semua prosess yang sedang berjalan
ps -aux | less
2. Menampilkan semua proses yang sedang berjalan pada sistem
ps -A
contoh :
arie@natty:~$ ps -A
  PID TTY          TIME CMD
    1 ?        00:00:00 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0
    6 ?        00:00:00 migration/0
    7 ?        00:00:00 migration/1
    9 ?        00:00:00 ksoftirqd/1
   10 ?        00:00:00 kworker/0:1
   11 ?        00:00:00 cpuset
   12 ?        00:00:00 khelper
   13 ?        00:00:00 netns
   15 ?        00:00:00 sync_supers
   16 ?        00:00:00 bdi-default
   17 ?        00:00:00 kintegrityd
   18 ?        00:00:00 kblockd
   19 ?        00:00:00 kacpid
   20 ?        00:00:00 kacpi_notify
   21 ?        00:00:00 kacpi_hotplug
   22 ?        00:00:00 ata_sff
   23 ?        00:00:00 khubd
........
Atau gunakan perintah berikut
ps -e

3. Melihat semua proses yang berjalan kecuali root
ps -U root -u root -N

contoh:
arie@natty:~$ ps -U root -u root -N
  PID TTY          TIME CMD
  611 ?        00:00:00 rsyslogd
  615 ?        00:00:00 dbus-daemon
  658 ?        00:00:00 avahi-daemon
  659 ?        00:00:00 avahi-daemon
  834 ?        00:00:00 xrdp
 1097 ?        00:00:00 gnome-session
 1147 ?        00:00:00 ssh-agent
 1150 ?        00:00:00 dbus-launch
 1151 ?        00:00:00 dbus-daemon
 1156 ?        00:00:00 gconfd-2
 1165 ?        00:00:00 gnome-keyring-d
 1170 ?        00:00:00 gnome-settings-
 1175 ?        00:00:00 gvfsd
 1179 ?        00:00:09 compiz
......
4.Menampilkan proses yang sedang dijalankan oleh user tertentu
ps -u user

contoh :
arie@natty:~$ ps -u arie
  PID TTY          TIME CMD
 1097 ?        00:00:00 gnome-session
 1147 ?        00:00:00 ssh-agent
 1150 ?        00:00:00 dbus-launch
 1151 ?        00:00:00 dbus-daemon
 1156 ?        00:00:00 gconfd-2
 1165 ?        00:00:00 gnome-keyring-d
 1170 ?        00:00:00 gnome-settings-
 1175 ?        00:00:00 gvfsd
 1179 ?        00:00:10 compiz
 1183 ?        00:00:00 pulseaudio
 1195 ?        00:00:00 gvfs-fuse-daemo
 1255 ?        00:00:00 nautilus
 1261 ?        00:00:00 polkit-gnome-au
 1262 ?        00:00:00 bluetooth-apple
 1263 ?        00:00:00 zeitgeist-datah
......
5. Menampilkan proses yang sedang berjalan dalam bentuk bagan
pstree

PERINTAH KILL
    Perintah kill adalah salah satu perintah daasar Linux yang digunakan untuk menghentikan atau mematikan proses yang sedang berjalan pada Sistem Operasi Linux / UNIX. perintah ini sangat penting karena dengan memahami perintah ini kita bisa mengetahui mana proses yang mengganggu performa, tidak dibutuhkan, dll.

Contoh perintah Kill :
$ kill <sinyal> <pid>
PID adalah nomor proses yang akan di hentikan. Tidak tahu PID proses mana yang akan dihentikan? Cobalah bereksperimen dengan perintah:
ps aux | grep <myusername>
Konsep Pembuatan dan Penghentian Proses
Konsep pembuatan proses pada sistem operasi linux :
  • Setiap proses diberi nomor khusus sebagai identifikasi yang disebut process identification atau PID berupa angka integer unik.
  • Jika proses selesai (Terminated) maka semua sumber daya yang digunakan termasuk PID dibebaskan kembali.
  • Proses dibuat menggunakan system call fork() yang sering disebut forking proses
  • System call fork() mengkopi proses pemanggil sehingga akan terdapat 2 proses yaitu :
1. Proses pemanggil disebut PARENT
2. Proses hasil kopian disebut CHILD
  • Proses CHILD identik dengan proses PARENT-nya tetapi memiliki PID yang berbeda.
  • Setelah proses baru (child) berhasil dibuat eksekusi dilanjutkan secara normal di masing –masing proses pada aris setelah pemanggilan system call fork().
  • Proses pemanggil (PARENT) dapat melakukan forking proses lebih dari satu kali sehingga memungkinkan terdapat banyak proses CHILD yang dieksekusi.
  • Proses CHILD dapat melakukan forking proses seperti halnya PARENT sehingga dapat terbentuk struktur pohon proses.

Sedangkan pada proses penghentian pada OS linux, jika telah menyelesaikan pernyataan terakhir, dan meminta pada sistem operasi untuk menghapusnya dengan menggunakan system call exit. Proses mengembalikan semua data (output) ke parent proses melalui system call wait. Kemudian proses dihapus dari list atau tabel sistem, dilanjutkan dengan menghapus PCB.
Penghapusan proses ini akan menjadi sangat kompleks jika ternyata proses yang akan dihentikan tersebut membuat proses-proses yang lain. Pada beberapa sistem, proses-proses anak akan dihentikan secara otomatis jika proses induknya berhenti. Namun, ada beberapa sistem yang menganggap bahwa proses anak ini terpisah dengan induknya, sehingga proses anak tidak ikut dihentikan secara otomatis pada saat proses induk dihentikan.
Parent dapat menghentikan eksekusi proses child dengan menggunakan system call abort. Proses anak dihentikan parent karena beberapa alasan, antara lain :
  • Child mengalokasikan sumber daya melampaui batas
  • Tugas child tidak dibutuhkan lebih lanjut
  • Parent berhenti, karena system operasi tidak mengijinkan child untuk melanjutkan jika parent berhenti dan terminasi dilanjutkan


Alasan lain adalah:
·         Proses selesai mengerjakan tugasnya(selesai normal)
·         Proses berjalan melebihi batas waktu
·         Memory tidak tersedia
·         Proses mengakses kawasan memori yang tidak boleh diakses
·         Terjadi kesalahan karena pelanggaran proteksi
·         Terjadi kesalahan perhitungan
·         Proses menunggu terlalu lama
·         Terjadi kegagalan I/O
·         Proses mengeksekusi instruksi yang tidak ada
·         Proses mengguinakan instruksi yang disimpan untuk SO
·         Terjadi kesalahan penggunaan data
·         Terjadi intervensi dari operator atau SO (contoh : deadlock)
·         Proses induk berahir
·         Atas permintaan proses induk

referensi :
 http://dionajie.blog.upi.edu/2013/10/manajemen-proses-pada-linux/
http://xvongola.blogspot.com/2011/09/manajemen-proses-linux-perintah-ps-kill.html
http://minitux.wordpress.com/2009/03/23/definisi-proses-pada-os-windows-linux/

0 komentar:

Posting Komentar