Interaksi Proses

3.3. Interaksi Proses

Proses yang dijalankan pada suatu sistem operasi dapat bekerja secara bersama-sama ataupun sendiri saja. Bagian sebelum ini telah menjelaskan mengenai konsep proses dan bagaimana penjadualan proses itu. Disini kita akan melihat bagaimana hubungan antara proses-proses itu.

3.3.1. Proses yang Kooperatif

Proses yang bersifat concurrent bekerja sama dengan proses lain. Proses itu kooperatif jika mereka dapat saling mempengaruhi. Kerja sama antar proses itu penting karena beberapa alasan:

• Pembagian informasi: Beberapa proses dapat mengakses beberapa data yang sama. • Kecepatan komputasi: Tugas yang dijalankan dapat berjalan dengan lebih cepat jika tugas tersebut

dipecah-pecah menjadi beberapa sub bagian dan dieksekusi secara paralel dengan sub bagian yang lain. Peningkatan kecepatan ini dapat dilakukan jika komputer tersebut mempunyai beberapa elemen pemrosesan, seperti CPU atau jalur I/O.

• Modularitas: Akan lebih mudah untuk mengatur tugas yang kompleks jika tugas tersebut dipecah menjadi

beberapa sub bagian, kemudian mempunyai proses atau thread yang berbeda untuk menjalankan setiap sub bagian.

• Kenyamanan: User dapat dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama. Contohnya satu user dapat mengetik, mengedit, dan mencetak suatu halaman tertentu secara bersamaan.

Kerja sama antar proses membutuhkan suatu mekanisme yang memperbolehkan proses-proses untuk mengkomunikasikan data dengan yang lain dan meng-synchronize kerja mereka sehingga tidak ada yang saling menghalangi. Salah satu cara proses dapat saling berkomunikasi adalah Interprocess Communication (IPC) yang akan dijelaskan lebih lanjut di bagian berikut.

3.3.2. Masalah Produser/Konsumer

Produser membuat suatu informasi yang dapat dibagi dengan proses lainnya. Konsumer menghabiskan data yang dibuat oleh produser. Misalnya program cetak memproduksi karakter yang dipakai oleh printer.

Masalah yang biasanya dihadapi oleh produser dan konsumer adalah bagaimana caranya mensinkronisasikan kerja mereka sehingga tidak ada yang saling mengganggu. Salah satu contoh bagaimana masalah ini dapat terjadi adalah Bounded Buffer Problem.

Solusi pembagian memori untuk Bounded Buffer Problem diterangkan dengan program sebagai berikut:

Gambar 3-8. Bounded Buffer Problem

import java.util.*; public class BoundedBuffer {

public BoundedBuffer() { // buffer diinisialisasikan kosong count

= 0; in

= 0; out

= 0; buffer = new Object[BUFFER_SIZE];

} // produser memanggil method ini

public void enter (Object item) { while ( count == BUFFER_SIZE ) ; // tidak melakukan apa-apa

// menambahkan suatu item ke dalam buffer ++count; buffer[in] = item; in = ( in + 1 ) % BUFFER_SIZE;

if ( count == BUFFER_SIZE ) System.out.println( "Producer Entered " + item + " Buffer FULL" );

else System.out.println( "Producer Entered " + item + " Buffer Size = " + count );

} // konsumer memanggil method ini

public Object remove() { Object item ;

while ( count == 0 ) ; // tidak melakukan apa-apa

// menyingkirkan suatu item dari buffer --count; item = buffer[out]; out

= ( out + 1 ) % BUFFER_SIZE; if ( count == 0 )

System.out.println( "Consumer consumed " + item + " Buffer EMPTY" ); else System.out.println( "Consumer consumed " + item + " Buffer Size = " +count );

return item; }

public static final int NAP_TIME = 5; private static final int BUFFER_SIZE = 5;

private volatile int count; private int in;

// arahkan ke posisi kosong selanjutnya

private int out; // arahkan ke posisi penuh selanjutnya private Object[] buffer; }

Buffer adalah tempat penyimpanan data dimana produser mengisinya dan konsumer mengosongkan buffer tersebut. Jika buffer kosong, konsumer harus menunggu, dan ketika buffer penuh, produser harus menunggu. Disinilah produser harus bekerja sama dengan konsumer. Konsumer harus menunggu sampai ada barang yang diproduksi.

Program di bawah ini menggambarkan proses yang dijalankan oleh produser untuk Bounded Buffer Problem.

Gambar 3-9. Produser Bounded Buffer Problem

//Producer.java import java.util.*;

public class Producer extends Thread { public Producer(BoundedBuffer b) { buffer = b; } public void run() {

Date message; while (true) {

int sleeptime = (int) (BoundedBuffer.NAP_TIME * Math.random() ); System.out.println("Producer sleeping for " + sleeptime + " seconds");

try { sleep(sleeptime*1000); } catch(InterruptedException e) {} // membuat suatu barang & memasukkannya ke buffer message = new Date(); System.out.println("Producer produced " + message); buffer.enter(message);

} } private BoundedBuffer buffer;

Program berikut menggambarkan proses yang dijalankan oleh konsumer pada Bounded Buffer Problem

Gambar 3-10. Konsumer Bounded Buffer Problem

// Consumer.java import java.util.*; public class Consumer extends Thread {

public Consumer(BoundedBuffer b) { buffer = b; } public void run() {

Date message; while (true) {

int sleeptime = (int) (BoundedBuffer.NAP_TIME * Math.random() ); System.out.println("Consumer sleeping for " + sleeptime + " seconds");

try { sleep(sleeptime*1000); } catch(InterruptedException e) {}

// mengambil barang dari buffer System.out.println("Consumer wants to consume."); message = (Date)buffer.remove(); // mengambil barang dari buffer System.out.println("Consumer wants to consume."); message = (Date)buffer.remove();

Masalah produser-konsumer dengan unbounded-buffer tidak menempatkan batas praktikal pada ukuran pada buffer . Konsumer harus menunggu untuk barang baru, tetapi produser dapat selalu memproduksi barang baru. Sedangkan masalah produser-konsumer bounded-buffer mengasumsikan ukuran buffer yang ditetapkan. Pada kasus ini, konsumer harus menunggu sampai buffer kosong dan produser harus menunggu sampai buffer penuh.

Dokumen yang terkait

ANALISIS EFISIENSI PEMASARAN DAN PENDAPATAN USAHATANI ANGGUR (Studi Kasus di Kecamatan Wonoasih Kotamadya Probolinggo)

52 472 17

Studi Kualitas Air Sungai Konto Kabupaten Malang Berdasarkan Keanekaragaman Makroinvertebrata Sebagai Sumber Belajar Biologi

23 176 28

ANALISIS KOMPARATIF PENDAPATAN DAN EFISIENSI ANTARA BERAS POLES MEDIUM DENGAN BERAS POLES SUPER DI UD. PUTRA TEMU REJEKI (Studi Kasus di Desa Belung Kecamatan Poncokusumo Kabupaten Malang)

23 307 16

PENILAIAN MASYARAKAT TENTANG FILM LASKAR PELANGI Studi Pada Penonton Film Laskar Pelangi Di Studio 21 Malang Town Squere

17 165 2

Analisis Sistem Pengendalian Mutu dan Perencanaan Penugasan Audit pada Kantor Akuntan Publik. (Suatu Studi Kasus pada Kantor Akuntan Publik Jamaludin, Aria, Sukimto dan Rekan)

136 695 18

DOMESTIFIKASI PEREMPUAN DALAM IKLAN Studi Semiotika pada Iklan "Mama Suka", "Mama Lemon", dan "BuKrim"

133 700 21

PEMAKNAAN MAHASISWA TENTANG DAKWAH USTADZ FELIX SIAUW MELALUI TWITTER ( Studi Resepsi Pada Mahasiswa Jurusan Tarbiyah Universitas Muhammadiyah Malang Angkatan 2011)

59 326 21

STRATEGI KOMUNIKASI POLITIK PARTAI POLITIK PADA PEMILIHAN KEPALA DAERAH TAHUN 2012 DI KOTA BATU (Studi Kasus Tim Pemenangan Pemilu Eddy Rumpoko-Punjul Santoso)

119 459 25

STRATEGI PUBLIC RELATIONS DALAM MENANGANI KELUHAN PELANGGAN SPEEDY ( Studi Pada Public Relations PT Telkom Madiun)

32 284 52

FAKTOR-FAKTOR PENYEBAB ORANG TUA MENIKAHKAN ANAK PEREMPUANYA PADA USIA DINI ( Studi Deskriptif di Desa Tempurejo, Kecamatan Tempurejo, Kabupaten Jember)

12 105 72