Anda di halaman 1dari 7

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya...

| Tutorial
Proses di Linux

Memahami Proses di Linux


Linux adalah sistem operasi multi tasking yang sangat sukses. Pengaturan proses yang
optimal adalah salah satu kunci keberhasilannya. Dengan memahami proses di Linux, kita
akan dapat memahami Linux lebih baik lagi.

M
asih ingat MS DOS? Ketika An- melayani dalam satuan seperseribu detik. Dari sisi hardware sudah pasti. Namun,
da menjalankan satu program, Masih jauh lebih kecil. Namun, dengan dari sisi software pun harus kuat. Maka,
word star misalnya, maka Anda perumpamaan kita sebelumnya, maka jika umumnya mereka ada mempergunakan
hanya bisa menjalankan program tersebut ada 1000 aplikasi, maka untuk melayani ap- sistem operasi besar kelas enterprise dengan
(single task). Tidak ada mekanisme resmi likasi A1 lagi setelah berkeliling, maka akan harga selangit tersebut.
untuk menjalankan dua program atau lebih membutuhkan waktu 1 detik. Lama sekali. Dulu, Linux belum mampu sekelas
sekaligus. Program resident tidak dimasuk- Bagaimana jika A1 adalah aplikasi pemutar sistem operasi enterprise. Namun, sejak
kan dalam kategori multitasking karena lagu dan setiap 1 detik lagu Anda akan ber- kernel 2.6 lahir, banyak hal yang mampu
mem-bypass sistem untuk dapat berjalan di henti berputar, berputar lagi, lalu berhenti menjadikan Linux memasuki pasar enter-
latar belakang. lagi? Baiklah. Jadikan time slice 1/10000 de- prise dengan harga yang sangat masuk akal.
Oleh karena itulah, maka MS DOS tik. Tetap saja akan kerepotan. Beberapa catatan misalnya. Jumlah user dari
seringkali dikatakan sangat stabil. Tentu saja Hal tersebut belum termasuk ada proses 64K (sekitar 65.000) menjadi lebih dari 4 ju-
karena hanya menangani satu program user yang memiliki prioritas berbeda. Ada yang ta (16 bit ke 32 bit). Dan untuk kasus proses,
dalam satu waktu. Masih teringat di benak minta dilayani agak lama. Ada yang lebih batas PID tidak lagi 32000, namun menjadi
penulis ketika Windows 95 muncul dan egois lagi. Dan sebagainya. Dan, yang pen- lebih dari 1 juta.
ketahuan senang sekali hang, orang-orang ting, bagaimana kalau ada program yang Hal ini berarti, teorinya, memungkinkan
suka bersungut-sungut dan mengatakan MS harus mengakses perangkat keras seperti Linux melayani mendekati hampir 1 juta
DOS 6 lebih stabil. printer misalnya, dan ngambek menunggu proses. Dnegan kemampuan memasuki
Perbandingan tersebut tidaklah relevan printer yang tidak mau mencetak? Apakah enterprise ini, wajar apabila Red Hat mulai
karena Windows 95 adalah sistem operasi sistem harus menunggu? Bagaimana kalau lebih fokus. Novell membeli SUSE dan lain
yang multitasking. Artinya, dalam satu wak- program tersebut memiliki prioritas tinggi sebagainya.
tu, bisa banyak program yang berjalan. Anda dan sistem kebetulan menunggu? Jadilah Mau dijual mahal pun, server enterprise
bisa mendengarkan lagu sambil mengetik di kita sebut komputer kita hang. Linux masih akan tampak lebih masuk akal.
Microsoft Word misalnya. Hal tersebut di- Sistem yang sebenarnya memang tidak Kita, tentu saja tidak bisa mengatakan Red
mungkinkan dengan berbagi waktu dengan sesederhana itu. Tentunya ada mekanisme Hat, yang menjual Linux seharga 10.000
alokasi waktu yang singkat dalam interval yang lebih unggul yang membuat pergan- USD misalnya, keterlaluan. Kontribusi Red
yang singkat untuk masing-masing proses. tian melayani proses menjadi jauh lebih Hat dan SUSE pada source code kernel turut
Misalnya, katakanlah aplikasi pemutar efisien. Tapi, kondisi sederhana tersebut bi- menjadikan kernel Linux jauh lebih baik.
lagu kita sebut sebagai aplikasi A1. Micro- sa kita gunakan untuk mengetahui mengapa Di artikel ini, kita akan membahas
soft Word kita sebut sebagai aplikasi A2 Un- suatu sistem operasi lebih mudah dan sering bagaimana memahami proses di linux.
tuk melayani kedua program tersebut, Win- ‘hang’ dibanding yang lainnya. Pembahasan akan dilakukan mulai dari sisi
dows akan berpindah ke A1 dan melayani Coba lihat sistem operasi - sistem operasi user, sysadmin dan developer. Ketiga katego-
A1 untuk – katakanlah – 0.001 detik (time besar kelas enterprise dengan harga selangit ri pengguna dilibatkan untuk contoh dan
slice). Kemudian, berpindah lagi ke A2 dan yang melayani bank yang sibuk misalnya. pembahasan yang lebih luas.
melayani A2 – katakanlah – juga 0.001 detik. Dalam satu waktu, mungkin terdapat lebih
Setelah itu kembali lagi ke A1 dan seterus- dari 1000 proses berjalan secara konkuren. Simulasi sistem multi tasking
nya. Di mata pengguna, A1 dan A2 tampak Atau, coba amati server AOL atau Yahoo! Sebelum kita memasuki pembahasan pro-
jalan berbarengan karena interval 0.001 de- Dalam satu waktu, bisa-bisa terdapat lebih ses, ada baiknya kalau kita sedikit melaku-
tik sangat sudah diukur. Dengan mekanisme dari 10.000 proses yang berjalan. Tidak bisa kan simulasi bagaimana sistem bekerja. Kita
serupa, kita bisa mengatakan kalau ada 1000 dipastikan karena jumlah pelanggan mereka akan membuat sistem yang melayani dua
aplikasi, maka Windows akan mengunjungi sangat besar. Dan pengguna adalah raja. program yang sedang berjalan: A dan B.
dari A1 sampai A1000. Oleh karena itu, berbagai cara harus dilaku- Berikut ini adalah source codenya dalam
Sayangnya, sistem tidaklah seseder- kan agar pelayanan tetap dapat dilakukan. bahasa C. Penjelasan dan output dibahas
hana itu. Sistem sebenarnya memang tidak Sesibuk apapun juga. setelahnya.

54 INFOLINUX 12/2004 www.infolinux.web.id


Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial TUTORIAL
Proses di Linux

#include <stdio.h> atau hasil modulus. Termasuk untuk lebih


banyak proses.
int main(void) { Di MS DOS, dimulasi ini dapat diterap-
kan secara sederhana pada beberapa per-
unsigned long int counter=1; mainan seperti arkanoid yang sementara
unsigned long int limit=9; bola berjatuhan, kita masih dapat meng-
while (1) { gerakkan paddle. Tentu saja, menggerakkan
paddle memiliki prioritas lebih tinggi.
counter++; Linux dan sistem operasi multitasking
if ( (counter % limit) == lain tentu jauh lebih kompleks. Tidak ha-
0) { nya sekedar menggunakan counter. Teknik
sistem operasi terus berkembang. Di Linux,
printf(“melayani apabila ada hal yang tidak efisien, maka
proses B\n”); bisa-bisa ditulis ulang dari awal. Contoh
counter = 1; kasus paling menghebohkan adalah diganti-
nya Virtual Memory (VM) Linux ke sistem
} else { milik Andrea Arcangeli (SUSE) dari sistem
VM milik Rik van Riel.
printf(“melayani
proses A\n”); Program, proses, thread
Kita sering mendengar istilah ini. Banyak
} pembuat program yang menyatakan pro-
gram saya multithreading, loh! Jadi, pasti
} lebih baik. Atau, tak jarang kita mendengar,
thread di Java canggih sekali, yang lain ka-
return 0; lah. Itu tentang thread.
Kalau tentang proses. Proses saya sudah
} ribuan, dengan proses A menggunakan re-
source sistem lebih dari 40%, misalnya.
Penjelasan kode: Atau, di sistem saya, banyak sekali proses
 Perulangan akan dilakukan terus yang tidur. Macam-macam.
menerus (while (1)) Bagi kalangan developer, tak jarang ada
 Setiap perulangan dilakukan, counter mengatakan, jangan pakai fork(), tidak jalan
akan ditambah satu (counter++) di windows, Windows tidak mendukung
 Pemeriksaan variabel counter akan di- pembuatan anak proses. Dan bermacam-
lakukan. Apabila sisa bagi counter ter- macam alasan lainnya.
hadap limit adalah 0, maka saatnya mela- Dari sisi user. Di sistem saya, ada sekitar
yani proses B. Apabila sisa bagi bukan 0, 100 program yang sedang berjalan. Dan,
maka proses A masih terus dilayani. sistem saya tidak hang sama sekali!
Apakah program, proses, dan thread itu,
Apabila program tersebut dijalankan, dan apa pula hubungan diantara mereka?
maka tulisan melayani proses A akan ter- Secara sederhana, proses adalah pro-
cetak beberapa kali, setelah itu tulisan me- gram yang berjalan. Program yang tidak
layani proses B akan tercetak sekali. Setelah dijalankan tidak akan mendaftarkan dirinya
itu, melayani proses A dicetak lagi selama sebagai suatu proses. Tapi, harap diperhati-
beberapa kali, diikuti dicetaknya tulisan me- kan, suatu proses tidak selalu harus berjalan.
layani proses B satu kali dan seterusnya. Be- Ada kalanya suatu proses tidur, berhenti,
berapa kali tersebut tentunya dapat diatur di menunggu dan mati (dan masih terdaftar).
variabel limit. Cobalah buka program top dan amatilah
Kondisi ini mensimulasikan sistem multi- tulisan bagian atas program ini. Anda akan
tasking untuk dua proses. A di sini lebih melihat tulisan running, sleeping, stopped
dominan dari B (prioritas lebih tinggi). Ten- dan zombie. Semua ada status proses. De-
tu saja, dengan mudah kita bisa mengubah ngan perumpamaan kita sebelumnya, suatu
nilai prioritas dengan mengubah limit dan sistem harus melayani proses-proses yang

www.infolinux.web.id INFOLINUX 12/2004 55


TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Proses di Linux

ada. Suatu proses bisa pula menjadi sangat nakan), user CPU time (waktu pada user Library) telah digunakan. NPTL lebih baik
serakah (prioritas tinggi). Setelah dilayani, mode), System CPU time (waktu untuk dan cepat dari penerapan thread lama yaitu
dia minta lagi untuk dilayani segera. Maka, eksekusi pada kernel mode). linuxthreads.
dia pun selalu menunggu. Dikatakan, pro-
ses ini sedang menunggu dan siap jalan lagi. Di sini, kita akan membahas hanya PID Anak, orang tua proses, daemon
Ada proses yang tertidur karena tidak perlu dan PPID. Real dan effective ID terutama Linux juga ternyata memperhatikan ke-
terlalu aktif. Ada proses yang dihentikan sangat berguna untuk masalah keamanan, luarga. Paling tidak, Linux mengenal orang
sementara, mungkin karena memang tidak dan digunakan banyak pada kasus program tua proses dan anak-anak proses. Selain itu,
dibutuhkan dulu. Setuid dan SetGid. di Linux, kita juga mengenal istilah proses
Di Linux, setiap proses memiliki atribut Sampai di sini, kita melihat beda proses nenek moyang.
seperti halnya file. Proses memiliki ID dan program. Sekarang, bagaimana dengan Sebenarnya, bagaimanakah hirarki ke-
proses. Ini akan membedakan suatu proses thread? Secara sederhana, kita bisa katakan luarga proses di Linux? Secara sederhana,
dengan proses lain secara unik. Proses tentu bahwa thread-thread akan berbagi memory berikut ini adalah ilustrasinya.
punya nama, resource yang digunakan, pe- space yang sama. Jadi, hubungannya lebih Pada awalnya, nenek moyang lahir. Ne-
milik proses dan lain sebagainya. Cobalah intim. Thread mirip dengan proses, berbagai nek moyang lahir tepat setelah kernel selesai
berikan perintah berikut ini untuk melihat memory space yang sama, lebih ringan, dan mengurus struktur data internalnya pada
proses sistem: relatif lebih susah untuk digunakan, ter- saat booting sistem dan menjalanan program
$ ps ax utama pada aplikasi cross platform. init untuk melanjutkan ketahap berikutnya.
Mengapa para developer menggunakan Init adalah proses nenek moyang dengan
Semua proses sistem dapat terlihat (Anda thread? Berikut ini adalah beberapa alasan: PID 1. Setelah itu, init pun menjalankan
dapat meminta kernel untuk meniadakan  Efisiensi dan kecepatan. Hal ini men- beberapa proses untuk melanjutkan proses
fitur ini sehingga user hanya dapat melihat cakup multiple CPU, IO blocking secara booting. Proses-proses tersebut adalah
proses milik masing-masing). Di kolom pa- paralel dan lain sebagainya. anak-anak generasi pertama Linux.
ling kiri adalah ID proses. Kita sebut sebagai  Responsif. Sebagai contoh, pembuatan Beberapa proses penting kernel juga ikut
PID. thread untuk menangani pembuatan lahir dalam tahap ini. Proses-proses kernel
Sebuah proses memiliki banyak infor- GUI misalnya. adalah proses-proses inti sistem. Seperti ses-
masi, diantaranya: epuh dalam suatu keluarga besar.
 PID, Process ID. Aplikasi dengan pembuatan berbagai Selanjutnya, ada proses lain yang lahir
 PPID, Parent Process ID thread umumnya sering sekali ditemukan dan seiiring dengan campur tangan user,
 Real User ID. pada pemutar multimedia, download accelle- semakin banyak pula proses yang hadir.
 Effective User ID rator dan lain sebagainya. Harap diperhatikan, tidak semua proses ha-
 Real Group ID Thread sendiri bukanlah isu yang seder- rus memiliki anak.
 Effective Group ID hana. Di Linux sendiri, beberapa distro telah Skema proses di Linux sangatlah kom-
 Informasi user menerapkan pustaka thread yang lebih baik. pleks. Untuk melihat tree proses, jalankan-
 resource yang digunakan proses seperti Di SUSE 9.1 atau SLES 9 misalnya, pustaka lah program berikut ini:
wall clock time (waktu yang dipergu- thread baru NPTL (Native Posix Thread pstree

Contoh program pembuat anak proses. Daemon abcd.

56 INFOLINUX 12/2004 www.infolinux.web.id


Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial TUTORIAL
Proses di Linux

Program ini akan memvisualisasikan hi- id == 0) { CHILD: sudah dibuat


rarki proses dalam sebuah tree. dengan PID: 4248, dan PPID: 4243
Catatan lain tentang proses adalah ada- printf(“\tCHILD: sudah dibuat
nya sesi proses. Ketika Anda membuka dengan PID: %d, dan PPID: %d\n”, Kita bisa melihat di sini bahwa terdapat
xterm di X dan menjalankan suatu program, getpid(), getppid()); lima anak yang dibuat (sesuai permintaan)
maka ada beberapa proses yang terkelom- exit(0); dan PPID setiap anak adalah sama, yang
pok dalam suatu sesi bersama. Ketika suatu sama pula dengan PID program fork_test.
sesi diakhiri (xterm diterminasi misalnya) } Pada download accellerator yang me-
maka seluruh proses juga akan diterminasi. manfaatkan forking, cara kerjanya bisa di-
Berikut ini adalah contoh program C un- } asumsikan sebagai berikut:
tuk menghasilkan anak sesuai dengan per-  Mengambil ukuran file yang akan di-
mintaan user. Program akan meminta input return 0; download.
jumlah anak yang akan dibuat dan setelah  Membagi sama rata sesuai jumlah anak
itu, program akan menampilkan PID anak- proses.
anaknya beserta orang tuanya (PPID). Hi- }  Membuat anak proses dan memberikan
rarki proses kemudian dapat diamati dari tugas untuk mendownload sesuai pada
keluaran program tersebut (PPID orang Penjelasan program: posisi tertentu.
harus sama tentunya).  Pertama-tama, user diminta untuk  Menggabungkan file yang telah berhasil
#include <stdio.h> memasukkan jumlah anak yang akan didownload oleh anak-anak proses ter-
#include <stdlib.h> dibuat. Lakukan validasi dengan maksi- sebut.
mal 5 anak.
int main(void){  Mencetak PID untuk memudahkan Umumnya, orang tua tidak terlalu ba-
pengecekan lebih lanjut bagi user. nyak bekerja. Lebih banyak anak-anaknya.
pid_t temp_id;  Mengulang sebanyak jumlah anak. Orang tua melakukan satu atau dua tugas,
int child_amount;  Di dalam perulangan, akan memanggil lalu memonitor anak-anaknya dan kemu-
int i; system call fork() untuk membuat anak dian melakukan finishing.
proses. Apabila fork() mengembalikan - Pembahasan akan kita lanjutan ke da-
printf(“Masukkan jumlah 1 yang artinya gagal, maka kita mencetak emon. Daemon adalah hal yang menarik
anak [max 5]: “); pesan kegagalan. untuk dicermati di Linux. Banyak sekali
scanf(“%d”, &child_  Harap memperhatikan benar-benar daemon di Linux. Anda bisa mengetahui-
amount); sifat fork() yang asinkron. Pada pem- nya dengan melihat akhiran d yang umum-
buatan anak proses yang berhasil, fork() nya digunakan pada nama suatu program.
if (child_amount > 5) { akan mengembalikan nol untuk sesi Sebagai contoh httpd, ftpd, sshd dan lain
anak proses dan mengembalikan pid sebagainya. Akhiran d tersebut menunjuk-
printf(“terlalu banyak anak untuk sesi orang tua. Kita tidak kan daemon.
anak yang akan dibuat\ bisa bergantung pada kode yang me- Sebenarnya, apakah daemon itu? Se-
n”); mastikan kapan anak akan dibuat dan cara sederhana, daemon dapat diartikan
return 1; kemudian melakukan kode-kode ter- sebagai program yang berjalan di latar be-
} tentu di sana. Bisa menyebabkan race lakang, atau tidak memiliki terminal con-
condition. trol. Umumnya, daemon digunakan pada
printf(“PARENT: PID orang aplikasi jaringan dan menunggu pada port
tua: %d\n”, getpid()); Berikut adalah contoh keluaran pro- tertentu.
gram: Lebih teknikal lagi, daemon adalah proses
for (i=0; i< child_ $ ./fork_test yang egois (dalam pengistilahan oleh umat
amount; i++) { Masukkan jumlah anak [max 5]: 5 manusia). Kenapa? Karena, daemon terben-
PARENT: PID orang tua: 4243 tuk dari suatu proses orang tua yang mem-
if ((temp_id = CHILD: sudah dibuat buat anak proses, setelah itu membunuh
fork()) == -1) { dengan PID: 4244, dan PPID: 4243 dirinya. Jadi, anak-anaknya akan tumbuh
CHILD: sudah dibuat tanpa orang tua dan menjadi daemon.
printf(“ERROR: terjadi kesalahan dengan PID: 4245, dan PPID: 4243 Orang tua sebenarnya telah berkorban un-
pada pengulangan ke %d\n”, i+1); CHILD: sudah dibuat tuk menjadikan anaknya sebagai daemon.
exit(1); dengan PID: 4246, dan PPID: 4243 Orang tua daemon setelah itu adalah init.
CHILD: sudah dibuat Anak yang menjadi daemon itupun kemu-
} else if (temp_ dengan PID: 4247, dan PPID: 4243 dian tumbuh membentuk sesi sendiri.

www.infolinux.web.id INFOLINUX 12/2004 57


TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Proses di Linux

Program top. Contoh keluaran program ls.

Berikut adalah contoh daemon sederha- exit(2);


na. Sebutlah abcd, abc daemon, yang akan strncpy(buf,
membuat log pada /tmp/abcd.log. }; “kecap ABC, baterai ABC, mie
#include <stdio.h> instan ABC, sirup ABC, * ABC”,
#include <stdlib.h> len+1);
#include <fcntl.h> if ( (chdir(“/tmp”)) <
#include <unistd.h> 0) {
write (fd, buf,
int main(void) { printf(“gagal len+1);
masuk ke area kerja\n”); close(fd);
pid_t pid, sid; exit(3);
int fd, len=100; sleep(60);
};
printf(“PARENT: Pid saya
adalah %d\n”, getpid()); umask (0); }

pid = fork(); close(STDIN_FILENO); return 0;


if (pid < 0) { close(STDOUT_FILENO);
close(STDERR_FILENO); }
printf(“gagal
membuat anak proses\n”); /* bekerja sesuai Penjelasan program:
exit(1); fungsinya, abc daemon */  Pertama-tama, orang tua membuat anak
proses, lantas membunuh dirinya.
} else if (pid > 0) { while (1) {  Anak pun membentuk sesi sendiri
 Setelah itu, anak masuk ke /tmp yang
printf(“PARENT: char *buf = merupakan area kerja.
Saya bunuh diri\n”); malloc(sizeof(char) * (len+1));  Umask kemudian diset ke 0.
exit(0);  Karena daemon, maka stdin, stdout dan
stderr tidak terbuka. Kita menutup ke-
}; if ( (fd = tiga handle file tersebut.
open(“/tmp/abcd.log”, O_CREAT |  Kita bekerja dalam perulangan tanpa
O_WRONLY | O_APPEND, 0600)) < henti.
if (sid = setsid() < 0) 0) {  Dalam perulangan, kita membuka file /
{ tmp/abcd.log dan menambahkan isinya
exit(4); apabila file telah ada. Kalau tidak ada,
printf(“gagal kita akan membuatnya terlebih dahulu.
membentuk sesi\n”); }  Dalam perulangan, kita menuliskan se-

58 INFOLINUX 12/2004 www.infolinux.web.id


Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial TUTORIAL
Proses di Linux

jumlah karakter ke dalam file tersebut  Exe. Sebuah link kepada executable pro- VmStk: 8 kB
/tmp/abcd.log). ses. VmExe: 4 kB
 Kita menunda setiap 1 menit untuk  Maps. Peta memori. VmLib: 1152 kB
menulis kembali.  Root. Sebuah link yang menunjuk pada Threads: 1
root directory proses. SigPnd: 0000000000000000
Sekali dijalankan, abcd akan berjalan  Statm. Status memori. ShdPnd: 0000000000000000
terus. Anda dapat mempergunakan program SigBlk: 0000000000000000
kill untuk membunuh abcd. Sebagai contoh: Berikut ini adalah contoh beberapa isi SigIgn: 0000000000000000
$ killall abcd file untuk proses abcd: SigCgt: 0000000000000000
Name: abcd CapInh: 0000000000000000
Berikut ini adalah contoh keluaran pro- State: S (sleeping) CapPrm: 0000000000000000
gram: SleepAVG: 26% CapEff: 0000000000000000
$ ./abcd Tgid: 6547
PARENT: Pid saya adalah 6018 Pid: 6547 Dari file ini, kita dapat mengetahu ba-
PARENT: Saya bunuh diri PPid: 1 nyak hal yang berhubungan dengan proses
TracerPid: 0 abcd, mulai dari statusnya (sleeping), PID
Berikut ini adalah contoh log /tmp/abcd. Uid: 1000 1000 1000 dan PPID (harap diperhatikan bahwa orang
log: 1000 tua daemon adalah proses init dengan PID
kecap ABC, baterai ABC, mie instan Gid: 100 100 100 1), resource yang digunakan, pemilik pro-
ABC, sirup ABC, * ABCkecap ABC, baterai 100 ses, dan informasi lainnya.
ABC, mie instan ABC, sirup ABC, * ABCk- FDSize: 32 Tentunya, kita dapat menggunakan
ecap ABC, baterai ABC, mie instan ABC, Groups: 14 16 17 33 100 script untuk membaca file-file tersebut un-
sirup ABC, * ABC VmSize: 1360 kB tuk keperluan tertentu.
VmLck: 0 kB
Kontribusi proses pada /proc VmRSS: 360 kB Berkomunikasi dengan proses
Linux menganut sistem yang transparan. VmData: 156 kB Kita, sebagai pengguna, sistem dapat ber-
Begitupun dengan proses-proses di dalam-
nya. Pada file sistem semu /proc, kita dapat
melihat direktori-direktori dengan nama
direktori berupa angka.
Angka-angka tersebut adalah pid pro-
ses. Oleh karena itu, dari waktu ke waktu,
angka-angka tersebut bisa berubah-ubah.
Manakala sebuah proses diterminasi, maka
direktori PID proses tersebut pada /proc
akan ikut menghilang pula. Demikian juga
ketika terjadi penambahan proses baru.
Cobalah masuk ke dalam salah satu di-
rektori tersebut. Kita akan menemukan be-
berapa file berikut ini:
 cmdline. File ini bertugas merekam com-
mad line yang diberikan ketika men-
jalankan proses.
 Environ. Nilai-nilai environment vari-
able.
 fd. Direktori yang mengandung semua
file descriptor.
 Mem. Memori yang digunakan oleh
proses.
 Stat. Status proses.
 Status. Status proses dalam bentuk hu-
man readable.
 Cwd. Sebuah link yang menunjuk pada
direktori aktif proses.

www.infolinux.web.id INFOLINUX 12/2004 59


TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Proses di Linux

Signal sistem. Entri direktori proses di /proc.

komunikasi dengan proses. Begitu pula Harap diperhatikan bahwa proses juga sudah ada pembatasan. Dan, pada limit ter-
proses A dapat berkomunikasi dengan memiliki informasi hak pemilik. Anda tidak tentu, admin akan diberitahu dengan SMS.
proses B. Kita atau proses sistem juga dapat dapat membunuh proses yang bukan milik Admin tersebut, yang ceritanya berdedikasi
berkomunikasi dengan proses daemon. Anda, misalnya. tinggi, langsung dapat menonaktifkan virus
Salah satu cara tertua komunikasi proses tersebut. Saat ini, secara teknologi, respon
(Inter Process Communication, IPC) adalah Kasus Virus (memori) di Linux cepat (kapan saja, dimana saja, bahkan
dengan Signal. Beberapa analis yang - menurut penulis untuk sistem gerbang masuk yang tidak
Ketika suatu proses menerima signal, – agak konyol mengatakan Linux juga akan berfungsi) atas permasalahan sudah sangat
ada tiga tindakan yang mungkin dilakukan diserang virus sama seperti halnya Win- memungkinkan.
oleh suatu proses: dows dan semua tersebut hanyalah masalah Dalam konteks tersebut., virus tersebut
 Mengabaikan signal. Namun, ada dua waktu. Mari kita analisa virus di Linux dan tidak dapat berbuat apa-apa. Begitupun
signal yang tidak dapat diabaikan, yakni hubungannya dengan proses. dengan virus file sistem. Yang terinfeksi
signal nomor 9 dan 19. Kita tahu bahwa proses di Linux adalah hanyalah file-file milik user. Tidak akan ber-
 Membuat handler sendiri untuk signal. transparan, memiliki skema keamanan se- akibat fatal pada sistem.
Ada dua signal yang tidak dapat diper- perti file sistem, dan dapat dibatasi dengan Tentunya, semua hal tersebut kembali
lakukan dengan cara demikian, yakni resource limit. Hal ini adalah fundamental kepada usernya sendiri. Oleh karena itu,
signal nomor 9 dan 19. dari sisi proses kenapa virus tidak menye- jangan menggunakan root dalam peng-
 Mengikuti default action signal. rang di Linux. gunaan biasa. Walaupun by design Linux
Seorang admin yang berhati-hati pada aman, keamanan komputer ditentukan
Signal dapat diberikan dengan perintah suatu jaringan besar akan menerapkan re- lebih dari 75% oleh usernya.
kill. Walaupun namanya terdengar kejam source limit pada sistem. Dengan demikian, Proses adalah sesuatu yang luar biasa.
begitu, sifatnya tidaklah sekejam namanya. seorang user hanya boleh menggunakan Salah mengatur proses, maka konseku-
Bahkan, pengiriman signal tertentu, um- sekian resource. Dengan program tertentu, ensinya besar. Linux telah dikembangkan
umnya SIGHUP pada beberapa daemon proses-proses juga dapat diamati, dan apa- lebih dari 10 tahun dan terus menerus
menyebabkan daemon tersebut membaca bila ada proses yang tiba-tiba minta re- mengembangkan kemampuan penanganan
file konfigurasinya dan kemudian mengapli- source besar, sebuah SMS atau mail dapat prosesnya.
kasikannya. dikirimkan. Dengan kata lain, manajemen proses
Untuk melihat signal-signal yang terse- Katakanlah tiba-tiba virus menyerang adalah hal yang benar-benar menjadi kunci
dia di sistem berikan perintah berikut ini: user xyz di jaringan tersebut. User tersebut seberapa ebuah sistem operasi bisa dikate-
kill -l adalah pengguna OpenOffice.org dan tidak gorikan serius atau tidak untuk melayani ke-
peduli apapun soal sistem. Virus yang di- butuhan enterprise misalnya. Jadi, penanga-
Untuk mengirimkan signal, berikanlah dapatkan dari internet tersebut bermaksud nan proses bukanlah hal yang sepele dalam
perintah berikut ini: untuk mengacaukan sistem dengan mem- sistem operasi, terutama sistem operasi yang
kill -<SIGNAL> <PID> buat proses sebanyak mungkin dan mengu- didedikasikan khusus sebagai server.
asai resource sistem. Semacam stress test. Demikianlah pembahasan kita tentang
sebagai contoh: Ketika virus tersebut berjalan, limit re- proses. Selamat mencoba, dan sukses!
kill -KILL 6546 source xyz akan membatasi kerjanya karena Noprianto (noprianto@infolinux.co.id)

60 INFOLINUX 12/2004 www.infolinux.web.id

Anda mungkin juga menyukai