Posted by : Unknown Tuesday 6 December 2011

Sharing soal Daemon, dkk itung-itung buat Ulum gan! hahahaha ^^V
Check It Out!!

1.      PID adalah Berupa angka-angka yang dipakai dalam beberapa sistem operasi untuk mengindetifikasikan sebuah proses.
PPID adalah Merupakan PID yang bersifat Private, atau PID yang tidak langsung ditampilkan. Mengetahui parent process.
Child Proses merupakan sebuah proses yang diciptakan dari sebuah proses yang lain (parent process). Child process mewarisi atribut-atribur dari parent process seperti membuka file dari parent proses. Sebuah child process sebenarnya dibuat menggunakan fungsi fork() sebagai salinan dari parent processnya.
Parent Process merupakan proses yang telah menciptakan beberapa buah proses anak. Proses ini tercipta ketika mengeksekusi fungsi fork(), kemudian hasil dari pemggilan fork tersebut akan menciptakan beberapa child process.
Zombie Process terjadi karena adaanya child process yang di exit namun parrent processnya tidak tahu bahwa child process tersebut telah di terminate, misalnya disebabkan karena putusnya network. Sehingga parent process tidak merelease process yang masih digunakan oleh child process tersebut walaupun process tersebut sudah mati.
2.      Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Dalam sistem operasi Windows biasanya lebih dikenal dengan sebutan service. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. Contoh dari daemon ini misalnya adalah Apache Web Server HTTP daemon. Daemon ini bekerja pada background dan menerima request HTTP pada port tertentu (biasanya 80 atau 8080) dan memberikan
respon terhadap request tersebut, berdasarkan tipe dari request tersebut.
Adapun hal-hal yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN, maupun STDERR, dan daemon berjalan dalam previlege super user.
Berikut ini adalah beberapa cara untuk membuat daemon:
a. Forking dan pembunuhan Proses induk.
Langkah pertama dari pembuatan daemon adalah dengan menspawn proses menjadi induk dan anak dengan melakukan forking, kemudian membunuh proses induk. Proses induk yang mati akan menyebabakan sistem operasi mengira bahwa proses telah selesai sehingga akan kembali ke terminal user. Dari langkah tersebut kita akan mendaptkan sebuah proses anak yang melanjutkan program setelah induknya mati, sehingga kita mendapatkan sebuah proses yang hampir bekerja pada backround.
Contoh :
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
umask(0);
b. Membuat proses bekerja secara independen
Daemon harus bekerja secara independen daripada proses-proses lain, termasuk juga proses yang menjalankannya. Langkah bisa dilakukan dengan memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah session ID yang baru.
Contoh :
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
c. Menutup standar I/O deskriptor yang diwarisi
Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan, maka standar I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada 3 jenis standar I/O descriptor : STDIN (standar input), STDOUT (standar output), STDERR (standar error).
Contoh:
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
d. Melakukan masking pada File Creation
Sebagian besar daemon bekerja dalam previlege super user. Daemon biasanya memproteksi setiap file yang dibuat, dengan alasan keamanan. Fungsi umask() akan mencegah file-file previleges yang tidak aman dalam setiap pembuatan file.
Contoh :
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
umask(0);
e. Running Directory
Directory kerja daemon haruslah sebuah directory yang selalu hidup. Bisa saja pada saat starting working directorynya pada saat itu berada pada user home. Karena daemon bekerja sampai sistem reboot, maka file sistem user directorynya takkan pernah bisa di unmount.
Contoh :
sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);
}
if((chdir(“/home/assassin/modul2/shift2.1/”)) < 0)
{
exit(EXIT_FAILURE);
}
f. Mendengarkan signal
Sebenarnya tugas utama dari daemon adalah mendengatkan requst. Maka sidalam daemon haruslah terdapat pendangar signal yang dapat merespon ketika daemon dikirimi signal tertentu, hal ini dapat dilakukan dengan meamnggil fungsi signal() untuk menginstall sebuah signal listener. Perlu kita ketahui bahwa signal 15 (SIGTERM) dan signal 9 (SIGKILL) tidak dapat ditangkap oleh signal handler.
g. Logging
Karena daemon tidak memiliki terminal pengontrol maka satu-satunya cara untuk mengetahui apa saja yang terjadi pada daemon tersebut maka hanya degan cara logging. Logging sendiri digunakan untuk menulis suatu pesan dari daemon untuk mendebug kesalahan yang terjadi. Logging harus banyak dilakukan oleh daemon untuk memberikan user maupun programmaer inforamasi-informasi sebaik mungkin. Berikut ada beberapa cara untuk melakukan logging :
Ø Metode Log File
Semua file ditulis kedalam sebuah file tertentu yang diatur oleh file konfigursi daemon tersebut. Melakukannya dengan memanggil fungsi fopen().
Ø Metode Log Server
Untuk keluarga UNIX mereka meimiliki daemon khusus yang digunakan untuk logging yaitu syslogd. Daemon ini mengelompokkan pesan-pesan menjadi beberapa kelompok yang disebut facility, kemudian kelompok-kelompok ini dapat dikirim ke tempat-tempat yang berbeda, misalnya langsung dikirim ke sysadmin lewat e-mail, dikirimkan kepada semua console terminal yang sedang log in, atau ditulis dalam suatu file logger.konfigurasi dari daemon syslogd ini dapat  ditulis dalam sebuah file /etc/syslog.conf.
3.       Unnamed Pipes digunakan ketika program Linux mematikan sebuah proses yang terpisah setelah menggunakan pipe library call untuk men-create dua file descriptors (salah satunya tiap bagian akhir dari pipe). file unnamed_pipe.c mengimplementasikan ends of a pipe dengan meng-create dua input/output file descriptors:
int file_descriptors[2]
Pipe(file_descriptors)
Setelah itu baru menggunakan fork library call :
pid_t spawned_process_pid = fork().
Named pipes hanya bisa digunakan untuk komunikasi antara dua proses yang men-share common file system. Keuntungan dari named pipes adalah kemampuan untuk mengkomunikasikan dua proses yang dimulai secara independent, dimana salah satu proses tidak fork off sebuah proses baru.
$ mknod filename p
$ mkfifo filename
#include
#include
int mkfifo(const char *filename, mode_t mode);
int mknod(const char *filename, mode_t mode | S_IFIFO,
(dev_t) 0);
4.      Proscess : Kegiatan yang dilakukan oleh sebuah system operasi maka itulah yang dinamakan proses. Misalnya kita menjalankan sebuah program atau aplikasi maka ketika kita menjalankan aplikasi tersebut akan ada sebuah proses yang bekerja.  Atau Proses dapat dikatakan sebagai unit kerja terkecil yang secara individu memiliki sumber daya – sumber daya dan dijadwalkan oleh sistem operasi. Atau sistem yang sering dieksekusi.
Sebuah unit aktivitas yang ditandai dengan pengeksekusian suatu urutan instruksi, keadaan saat ini (current state), dan sebuah set instruksi dari sistem .
IPC : Inter Process Communication atau komunikasi antar proses adalah suatu mekanisme pertukaran data antar satu proses dengan proses lainnya, bak itu yang terjadi didalam satu komputer yang sama maupun yang terjadi antara komputer yang terhubung dengan jaringan: merupakan juga suatu perangkat teknik untuk pertukaran data antara beberapa thread dalam satu proses atau lebih, dan proses tersebut dapat juga terjadi antara beberapa komputer yang terhubung dengan jaringan. Teknik IPC ini terbagi metode message passing, synchronization, shared memory, dan remote procedure calls (RPC). Teknik IPC dapat digunakan dengan metode yang bervariasi tergantung olen latency dan bandwidth komunikasi antar thread dan jenis data yang dikomunikasikan.
IPC dan Proses mmpunyai keterkaitan karena IPC merupakan jembatan yang menghubungkan antar proses untuk berkomunikasi.
5.      Penjelasan :
a.     Shared Memory merupakan memory yang dapat diakses oleh beberapa buah program dengan tujuan untuk menyediakan komunikasi antar proses aatau untuk menghindari adanya salainan yang berlebihan.tergantung pada konteks pula program dapat  berjalan pada satu prosesor atau beberapa prosesor yang terpisah; Merupakan salah satu cara komunikasi salah satu cara komunikasi antar proses dengan menglokaskan suau alamt memory yang digunakan untuk berkomunikasi antar proses. Biasanya alamat dan besarnya memory ditentukan oleh pembuat program. Pada metode ini sistem akan mengatur proses mana saja yang memakai memory pada waktu terntu sehingga prosesn menajdi lebih efektif
b.         Pipes merupakan serangkaian proses berantai yang terjadi oleh aliran standar, sehingga tiap-tiap proses outputnya (stdout feed) secara langsung akan menjadi input (stdin) keproses yang berikutnya.masing-masing sambungan ini diimplementasikan oleh sebuah pipa anonim. Dan program filter sering juga dipakai dalam konfigurasi ini; sebuah pipes meruapakan teknik untuk melepas suatu informasi dari suatu program untuk proses lainnya. Berbeda dengan bentuk IPC, sebuah pipa hanya terdiri dari satu cara komunikasi saja. Pada dasarnya sebuah pipa melewati parameter seperti outpu dari satu proses menuju keproses yang lain yang menerima sebagai masukan; unnamed pipe merupakan sebuah metode standar yang digunakan untuk komunikasi antara proses induk dengan proses anak, unnamed pipe digunakan juga ketika program linux membuat sebuah proses yang terpisah sesudah menggunkan pipe library call untuk membuat dua buah file deskriptors (satu untuk masing-masing ujung pipe).
c.Message Queue merupakan sebuah metode dimana suatu proses dapat bertukar data melalui atau menggunakan sebuah interface  untuk sistem yang dikelola oleh message queue.  Sebuah pesan antrian dapat dibuat oleh sebuah proses dana dapt digunakan oleh banyak proses yang membaca atau menulis pesan ke antrian. Misalnya : sebuah server ptoses dapat membaca dari dan ke pesan atrian yang dibuat untuk klien proses. Semua pesan dapat dapat menghubungkan pesan dengan  klien tertentu meskipun  dengan antrian yang sama.
d.    Semaphore merupakan sebuah variabel yang dilindungi  atau tipe data abstrak yang merupakan subuah metode klasik yang digunakan unutk membatasi akses ke sunber daya bersama, seperti halnya shared memory dalam sebuah lingkungan pemrograman paralel. Semaphore ini merupakan sebuah solusi klasik untuk terjadinya race condotion pada dining philosopher problem, meskipun metode ini tidak mencegah deadlock sumber daya.
e.    Socket merupakan titik ujung dalam komunikasi dua arah. Socket diperkenalkan dalam UNIX (Barkely) pada tahun 1982, yang mana socket digunakan dalam mekanisme IPC (/it Inter-Proses Communication). Socket bersifat bidirectional, dalam hal ini koneksi dengan socket mempunyai kemampuan untuk mengirim dan menerima data.
6.       Alur Pembuatan Proses adalah sebagai berikut:
  • Memberi identitas (nama) pada proses yang dibuat
  • Menyisipkan proses pada list proses atau tabel proses
  • Menentukan prioritas awal proses
  • Membuat PCB
  • Mengalokasikan resource awal bagi proses tersebut.
Create process atau pembuatan proses dilakukan karena alasan-alasan sebagai berikut :
  • Batch Job Baru. Sistem Operasi diberikan dengan suatu aliran batch job control, biasanya pada pita atau disk. Pada saat disiapkan untuk mengambil job yang baru, sisitem operasi akan membaca rangkain job control command berikutnya.
  • Logon interaktif. Seorang pengguna di sebuah terminal masuk kesistem
  • Dibuat oleh OS untuk menyediakan layanan. Sistem operasi dapat membuat suatu proses untuk melakukan fungsi atas naa program pengguna, tanpa mengharuskan pengguna menunggu (misalnya, pencetakan)
  • Dibiakan (spawned) oleh proses yang telah ada.Untuk memenuhi tujuan modularitas atau untuk memanfaatkan paralelisme, sebuah program pengguna dapat mengatur pembiakan sejumlah proses .\
Berikut adalah kegiatan-kegiatan proses :
Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/ asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses mungkin adalah satu dari keadaan berikut ini:
New: Proses sedang dikerjakan/ dibuat.
Running: Instruksi sedang dikerjakan.
Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/O
atau penerimaan sebuah tanda/ signal).
Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.
Nama-nama tersebut adalah arbitrer/ berdasar opini, istilah tersebut bervariasi disepanjang system operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, sistem operasi tertentu juga lebih baik menggambarkan keadaan/ status proses. Adalah penting untuk menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun pada waktu kapan pun. Namun, banyak proses
yang dapat ready atau waiting. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada Gambar dibawah:



Gambar Keadaan Proses:

7.                   a). fork() : berguna untuk membentuk proses baru. Proses ini terbagi menjadi dua  yaitu child process dan parent process yang identik.
b). getpid()/getppid() : Berguna untuk mengembalikan ID proses aktif dan tidak membutuhkan argumen.
c). Exit() :
d). Wait(): menyebabkan proses menunggu sinyal. Biasanya digunakan oleh proses parent untuk menunggu sinyal dari sistem operasi ke parent bila child diterminasi. System call wait menghasilkan pid dari proses yang mengirimkan sinyal.
e). Exev():
8.       Alur message queue yang pertama tersebut dimulai dengan adanya struktur permission. Kemudian didalamnya terdiri dari 2 buah poiter yaitu untuk pesan pertma dan utnuk pesan terakhir dalam antrian. Kemudian tiap-tiap message akan ditempatkan sistem didalam sebuah linked list, dan tiap-tiap message terdiri dari 4 reference, reference to the next msg in the list, a long integer, user-assigned value denoting the message type, dan nilai integer singkat yang mengatakan size message. Dan reference yang mneunjuk kepesan yang sebenarnya.
9.    Shmctl() performs the control operation specified by cmd on the shared memory segment whose identifier is given in shmid.
The buf argument is a pointer to a shmid_ds structure, defined in <sys/shm.h> as follows:
struct shmid_ds {
struct ipc_perm shm_perm;    /* Ownership and permissions */
size_t          shm_segsz;   /* Size of segment (bytes) */
time_t          shm_atime;   /* Last attach time */
time_t          shm_dtime;   /* Last detach time */
time_t          shm_ctime;   /* Last change time */
pid_t           shm_cpid;    /* PID of creator */
pid_t           shm_lpid;    /* PID of last shmat()/shmdt() */
shmatt_t        shm_nattch;  /* No. of current attaches */

};
10.     Semctl() performs the control operation specified by cmd on the semaphore set identified by semid, or on the semnum-th semaphore of that set. (The semaphores in a set are numbered starting at 0.)
This function has three or four arguments, depending on cmd. When there are four, the fourth has the type union semun. The calling program must define this union as follows:
 
union semun {
    int              val;    /* Value for SETVAL */
    struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
    unsigned short  *array;  /* Array for GETALL, SETALL */
    struct seminfo  *__buf;  /* Buffer for IPC_INFO
                                (Linux specific) */
}; 
 
Sumber : http://biematas.wordpress.com/2011/01/25/daemon-dkk/ 

What do you want from me?

Federal Oil 2x Lebih Dingin Blog Competition

Federal Oil Spesial Blog Contest

Total Pageviews

Popular Post

- Copyright © S.M.I.L.E -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan - Edited by KS -