Inter Process Communication. Pratikum SO

dokumen-dokumen yang mirip
Mengamati Proses pada SO Linux

Moh. Fajar

signal() kill() pause() Signal Praktikum Sistem Operasi Praktikum Sistem Operasi Signal

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM II (a) PROSES

I. Dasar Teori. Process dan Thread

Praktikum Modul 9. Unix System Call dan Manajemen Memory

Bab 10. Konsep Proses

Spesifikasi Tugas Besar II IF3055 Sistem Operasi

1. Mengenal konsep proses di Linux 2. Mengerti konsep sinyal dan bagaimana cara mengelola sinyal tersebut

Praktikum 5. Proses dan Manajemen Proses 2 POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI: 1 KONSEP PROSES PADA SISTEM OPERASI LINUX

1. Mengenal konsep proses di Linux 2. Mengerti konsep sinyal dan bagaimana cara mengelola sinyal tersebut

TUGAS SISTEM OPERASI. Disusun Oleh : : Nurul Annisa Putri. Nim : Jurusan/ Kelas : Teknik Informatika/ 4 (Empat) B

Proses pada Sistem Operasi Linux Manajemen Proses pada Sistem Operasi Linux

POSTEST SISTEM OPERASI. Disusun Oleh : : Nurul Annisa Putri. Nim : Jurusan/ Kelas : Teknik Informatika/ 4 (Empat) B

Pengantar. Manajemen Proses

Praktikum Sistem Operasi Proses dan Manajemen Proses. Zaid Romegar Mair, ST., M.Cs

PERCOBAAN 6 Pemrograman Socket Transport Control Protocol (TCP)

BAB II PROCESS DAN THREAD

Proses pada Sistem Operasi Linux Manajemen Proses pada Sistem Operasi Linux

Algoritma Pemrograman 2B (Pemrograman C++)

IF ELSE IF ELSE. BU : if (kondisi1) Statement; else if (kondisi2) Statement;

Kurikulum Qt. { Basic OOP } Chapter 4. Function

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

PRAKTIKUM 6 PENGULANGAN PROSES 2

PERTEMUAN KE <JUDUL PERTEMUAN PRAKTIKUM>

Percobaan I Pengenalan Sistem Operasi

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Struktur Program Bahasa C

MODUL IV Analisis Kasus/Pemilihan

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

Proses Perulangan (Looping) DASAR PROGRAMMING 1

Pendahuluan Pemrograman Mikrokontroler

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Pemrograman Dasar C. Minggu 8

printf (" ======== Program untuk memilih nama bulan dalam setahun ======== \n \n");

1.1. Sejarah Bahasa C

FUNCTIONS. Function adalah satu blok instruksi yang akan dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

Pemrograman Dasar C. Minggu 6

PERANCANGAN HOST-BASED INTRUSION DETECTION SYSTEM BERBASIS ARTIFICIAL NEURAL NETWORK

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Bab 3: Proses-Proses. Konsep Proses

BAB IV PENGULANGAN PROSES

KENDALI PROSES. 6.1 PENYELEKSIAN KONDISI (Selection)

PERULANGAN PROSES. Proses perulangan ditandai dengan mekanisme yang disebut loop. Proses Loop : Proses yang berulang-ulang

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi. System Calls dan Thread

OPERASI PERNYATAAN KONDISI

Kurikulum Qt. Chapter 4 Function. Fungsi

PENGENALAN BAHASA C. Praktikum 3

Fungsi DASAR PEMROGRAMAN

Bab 3: Proses-Proses. Konsep Proses

BAHASA PEMROGRAMAN C LANGUAGE

Looping : break, continue, nested loop

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Algoritma dan Struktur Data Tahar Agastani Teknik Informatika UIN

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Bab 2. Dasar-Dasar Pemrograman C

Fungsi : Dasar Fungsi

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Bahasa C-M6 By Jamilah, Skom 1

MODUL III CONTROL FLOW & FLOWCHART

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Algoritma dan Struktur Data. Ramos Somya

PERULANGAN 2 DASAR PEMROGRAMAN

Struct Lanjutan: Studi Kasus

Kondisional/Pencabangan/Pemilihan. Konsep Pencabangan Sintaks Konsep if (kasus tunggal) Konsep if-else (2-3 kasus) Konsep switch (lebih dari 3 kasus)

Masih ingat MS DOS? Ketika Anda

PERTEMUAN XI OPERASI FILE

BAB 6 FUNGSI TUJUAN PRAKTIKUM

PRAKTIKUM SOCKET PROGRAMMING (TCP dan UDP)

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

Pemrograman Dasar C. Minggu 4

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

BAB I PENGENALAN BAHASA C

P R E T R EM N 5 STRUKTUR LOOPING

BAB 4 KONDISI / PEMILIHAN

PERTEMUAN III DECISION. Prepared by Vosco

Algoritma dan Pemrograman. Pertemuan Ke-7 Statement Pengendalian 2

A. TUJUAN PEMBELAJARAN

Modul IV Pemrograman Bahasa C ( bagian I )

Struktur Kontrol. 1.Pemilihan (Selection) 2.Pengulangan (Repetition)

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Pertemuan Function. Obyektif Praktikum : 1. Mengerti konsep dasar penggunaan Function

Operator, Statement kondisional, dan Iterasi pada Java

Perulangan 2 DASAR PEMROGRAMAN

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

Konsep Pemrograman. Bab 8. Fungsi 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

PERCABANGAN. Bentuk if Sederhana

Object Oriented Programming (OOP)

PEMROGRAMAN TERSTRUKTUR PERTEMUAN VI KOMPONEN KOMPONEN PEMROGRAMAN TERSTRUKTUR

PENGENALAN SOFTWARE R

PRAKTIKUM 5 PENGULANGAN PROSES 1

Transkripsi:

Inter Process Communication Pratikum SO

Inter Process Communication Proses proses yang berjalan di sistem dapat berupa proses yang independent atau proses yang saling bekerjasama. Jika 2 atau lebih proses saling bekerjasama berarti keduanya saling berkomunikasi, terdapat beberapa mekanisme komunikasi yang dapat dilakukan seperti komunikasi menggunakan socket dijaringan dengan protokol tertentu, komunikasi melalui mekanisme pipe atau komunikasi melalui pengiriman signal. Aplikasi di bawah memperlihatkan bagaimana komunikasi antar proses secara internal (IPC) menggunakan signal. Bagi pemakai sistem operasi linux ataupun unix tentunya sudah sering menggunakan perintah sistem kill untuk mengirim signal tertentu kesebuah proses, biasanya perintah kill ini digunakan untuk menghentikan eksekusi suatu proses (termination).

Cont. Perintah kill membutuhkan argumen berupa nomor PID proses, pada contoh, proses dengan PID 773, secara default jika signal tidak dispesifikasikan maka digunakan SIGTERM dengan nomor 15, hal ini membuat proses tersebut dihentikan. Jadi dapat dituliskan dengan cara berikut. kill s SIGTERM 773 atau kill s 15 773

Fitur Help Untuk melihat signal yang dapat digunakan oleh perintah kill sertakan opsi l seperti contoh berikut kill l atau man 7 signal

GNU-C Pustaka GNU C menyediakan beberapa system call untuk pengelolaan proses yang berjalan di sistem. Misalnya fungsi kill() untuk mengirim signal ke suatu proses yang serupa dengan perintah kill. Dengan bentuk prototype sbb: kill(pid,int SIGNAL); dimana : PID adalah PID dari proses yang akan dikirimi signal SIGNAL adalah signal yang ingin dikirimkan baik berupa nama konstanta ataupun nilainya (lihat jenis jenis signal pada manual)

Contoh program serupa perintah kill s SIGTERM 773 /* contoh9.c */ #include <signal.h> /* kill() */ #include <sys/types.h> /* pid_t */ int main(){ pid_t PID=773; kill(pid,sigterm);

Cont. Jika dijalankan maka program mencoba mengirim signal termination (SIGTERM) ke proses yang memiliki PID 773. Pengubahannya dapat dilakukan dengan signal SIGQUIT atau SIGKILL yang juga berfungsi untuk menghentikan suatu proses.

Mendefinisikan Aksi Untuk mendefinisikan suatu aksi terhadap signal tertentu dapat digunakan system call sigaction() atau signal(). Sebagai contoh apabila proses child berakhir maka secara otomatis sistem akan mengirim sebuah signal SIGCHLD ke proses parentnya yang menandakan bahwa proses child berakhir. Aksi tertentu dapat didefinisikan apabila parent menerima signal ini. Berikut contoh programnya

/* contoh10.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> /* signal() */ #include <sys/types.h> #include <sys/wait.h> /* wait() */ /* prototype fungsi penanganan signal */ void sig_handler();

int main(){ pid_t pid; int i; signal(sigchld, sig_handler); /* install signal handler baru untuk SIGCHLD */ pid = fork(); /* buat proses baru */ switch (pid) { case -1: perror("fork"); /* proses fork() gagal */ exit(exit_failure); /* exit jika gagal */ case 0: /* ini proses child */ printf("child: Hello parent\n"); sleep(3); /* tunda selama 3 detik */ exit(exit_success); /* akhiri proses child */ default : /* ini proses parent */ printf("parent: Hello child\n"); for (i=1; i<=5; i++) { printf("parent: %d\n", i); sleep(1); /* tunda selama 1 detik */ printf("parent Selesai.\n"); exit(exit_success); /* akhiri proses parent */

/* ini definisi fungsi penanganan signal */ void sig_handler(){ printf("child Selesai.\n");

Alur Program 1. Menginstal fungsi penanganan signal SIGCHLD pada parent, hal ini memberitahukan bahwa apabila sistem mengirim SIGCHLD ke parent maka parent mengarahkan aksi penanganannya ke fungsi sig_handler(). 2. fork() untuk membuat proses baru (child) 3. Child dibuat tertunda selama 3 detik dan parent melakukan pencetakan nilai i. 4. Setelah 3 detik child mengeksekusi exit() untuk mengakhiri prosesnya 5. Pada saat child selesai sistem mengirim SIGCHLD ke parent dan parent mengarahkannya ke fungsi sig_handler yang menampilkan pesan child selesai 6. Parent melanjutkan kembali prosesnya sampai selesai.

Cont. Pada contoh program diatas signal dikirim secara otomatis oleh sistem begitu child mengeksekusi fungsi exit. tentunya dapat dikirim suatu signal ke proses lain menggunakan system call kill() seperti yang telah dilakukan. Berikut contoh program yang mendefenisikan aksi untuk signal tertentu serta mengirim signal tersebut untuk melihat aksi dari rutin yang disiapkan.

/* contoh11.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> void sigquit (); /*prototype fungsi penanganan signal */

int main (){ pid_t pid; pid=fork(); switch (pid) { case -1: perror("fork"); /* proses fork() gagal */ exit(exit_failure); /* exit jika gagal */ case 0: /* ini proses child */ signal (SIGQUIT, sigquit); /* install signal handler baru untuk child */ for (;;); /* loop terus */ default: /* ini proses parent */ printf ("\nparent: Kirim signal SIGQUIT ke CHILD\n\n"); kill (pid, SIGQUIT); /* kirim signal */ sleep (3); /* tunda 3 detik */ exit(exit_success); /* akhiri proses parent */

/* ini definisi fungsi penanganan signal */ void sigquit (){ printf ("CHILD: Terima SIGQUIT dari parent.\n"); exit (0);

Lakukan Tugas Lain Tentunya dapat didefinisikan banyak fungsi penanganan signal untuk kebutuhan program seperti contoh berikut ini.

/* contoh12.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> /*prototype fungsi penanganan signal */ void sighup(); void sigint(); void sigquit(); void sigterm();

int main(){ pid_t pid; pid=fork(); if ((pid==-1) { perror("fork"); exit(exit_failure); if (pid == 0) { /* install signal habdler*/ signal(sighup,sighup); signal(sigint,sigint); signal(sigquit, sigquit); signal(sigterm, sigterm);

for(;;); /* loop terus menerus */ else { /* kirim signal ke child */ printf("\nparent : kirim signal SIGHUP\n\n"); kill(pid,sighup); sleep(3); /* tunda 3 detik */ printf("\nparent : kirim signal SIGINT\n\n"); kill(pid,sigint); sleep(3); printf("\nparent : kirim signal SIGQUIT\n\n"); kill(pid,sigquit); sleep(3); printf("\nparent : kirim signal SIGTERM\n\n"); kill(pid,sigterm); sleep(3);

void sighup() { signal(sighup,sighup); /* reset signal */ printf("child : Terima signal SIGHUP\n"); void sigint() { signal(sigint,sigint); /* reset signal */ printf("child : Terima signal SIGINT\n"); void sigquit(){ printf("child : Terima signal SIGQUIT\n"); void sigterm(){ printf("child : Terima signal SIGTERM\n"); exit(exit_failure); /* hentika proses child */

Kembalikan ke Default Untuk mengembalikan signal handler ke rutin defaultnya gunakan SIG_DFL, seperti berikut void sigquit(){ printf("child : Terima signal SIGQUIT\n"); signal(sigquit,sig_dfl); /* reset signal ke rutin default */

Referensi 1.Free Software Foundation.`The GNU C Library Reference Manual', for Version 2.2.x of the GNU C Library. 2001 2.Stallings, William. Operating Systems, New jersey. Prentice-Hall Inc.1995 3.Sams Development Team. Unix Unleashed,Sams Publishing.1994 4.Husain, Kamran. Parker, Tim. Red Hat Linux Unleashed,Sams Publishing.1996 5.Hariyanto, Bambang. Sistem Operasi, Edisi 2, Informatika Bandung. 2000