12 Juni 2013

DAEMON adalah....

Daemon proses adalah proses yang bekerja pada background karena tidak memiliki terminal pengontrol. Dalam sistem operasi Windows lebih dikenal dengan sebutan service. Daemon adalah proses yang didesain agar proses tidak mendapatkan intervensi dari user. Daemon biasanya bekerja untuk jangka waktu yang sangat lama dan bertugas “mendengarkan” request dan menjalankan responsnya. Contoh dari daemon ini misalnya adalah Apache Web Server HTTP daemon. Daemon ini bekerja pada background dan mendengarkan request HTTP pada port tertentu (biasanya 80 atau 8080) dan memberikan respon terhadap request tersebut, berdasarkan tipe dari request. ciri-ciri daemon yang membedakan dari proses lainnya? - Tidak memiliki parent process ID. - Tidak memiliki terminal pengontrol baik STDOUT, STDIN, maupun STDERR. - Berjalan dalam previlege super user. Membuat Daemon 1. Forking dan Pembunuhan Proses Induk Langkah pertama dalam pembuatan daemon adalah menspawn proses menjadi induk dan anak dengan melakukan forking, kemudian mematikan proses induk. Proses induk yang mati akan membuat sistem operasi mengira bahwa proses telah selesai sehingga akan kembali ke terminal user. Dari langkah ini kita telah mendapatkan satu proses yang hampir bekerja di background, yaitu proses anak yang melanjutkan program setelah kita membunuh induknya. 2. Membuat Proses Bekerja Secara Independen Daemon harus bekerja secara independen dari proses lain, termasuk proses yang menjalankannya. Langkah ini dapat dilakukan dengan cara memanggil fungsi setsid(), sehingga proses akan mendapatkan session ID yang baru. 3. Menutup Standard I/O Descriptor yang diwarisi Standard I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup untuk mencegah intervensi dari user serta untuk pengamanan. Ada tiga jenis standar I/O descriptor, yaitu standard input (STDIN), standard output (STDOUT), dan standard error (STDERR). 4. Melakukan Masking pada File Creation Sebagian besar daemon bekerja dalam previlege super user. Untuk alasan keamanan, daemon harus memproteksi setiap file yang dibuat. Fungsi umask() akan mencegah file previleges yang tidak aman dalam setiap pembuatan file. Misalnya: 2 umask (027) akan membatasi mode pembuatan file ke 750 (komplemen dari 027). 5. Running Directory Direktori kerja suatu daemon harus berada pada direktori yang selalu hidup. Bisa saja pada saat starting, working directory berada pada user home. Karena daemon bekerja hingga sistem reboot, maka file system user directory tidak akan pernah bisa di unmount. 6. Mendengarkan Signal Tugas utama dari sebuah daemon sebenarnya adalah mendengarkan request. Maka di dalam daemon harus terdapat pendengar signal yang akan merespon ketika daemon dikirimi signal tertentu. Hal ini dapat dilakukan dengan memanggil fungsi signal() untuk mengintall sebuah signal listener. Perlu diketahui bahwa signal 15 (SIGTERM) dan signal 9 (SIGKILL) tidak dapat ditangkap oleh signal handler. 7. Logging Karena daemon tidak memiliki terminal pengontrol, maka satu-satunya cara untuk mengetahui apa yang terjadi dengan daemon tersebut adalah dengan logging. Logging digunakan untuk menulis suatu pesan dari daemon atau untuk mendebug kesalahan yang terjadi. Logging harus banyak dilakukan oleh daemon untuk menyediakan informasi sebaik-baiknya baik bagi user maupun programmer. Ada beberapa cara untuk melakukan logging, antara lain: - Metode Log File: Semua pesan ditulis ke dalam file tertentu yang diatur d alam file konfigurasi daemon tersebut. Kita dapat melakukannya dengan memanggil fungsi fopen(). - Metode Log Server: Sistem operasi UNIX dan keluarganya memiliki daemon khusus yang digunakan untuk logging yang dinamakan syslogd. Daemon ini mengelompokkan pesan-pesan menjadi beberapa kelompok (disebut facility) dan kelompok-kelompok ini dapat dikirim ke tempat-tempat yang berbeda, misalnya langsung dikirim ke sysadmin lewat email, dikirimkan ke console terminal semua pengguna yang sedang logged in, atau ditulis dalam suatu file logger. Konfigurasi dari daemon syslogd ini ditulis dalam file /etc/syslog.conf. sumber tulisan ini...

Tidak ada komentar: