| Tutorial
Proses di Linux
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.
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
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.
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)