Hubungan Antara Proses

Sebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari pengertiannya, cara kerjanya, sampai operasi-operasinya seperti proses pembentukannya dan proses pemberhentiannya setelah selesai melakukan eksekusi. Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung, misal bagaimana beberapa proses dapat saling berkomunikasi dan bekerja-sama.

Proses yang Kooperatif

Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakaan menjadi yaitu proses independent dan proses kooperatif. Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem.

Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain. Ada empat alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif:

1.     Pembagian informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama (sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang mengizinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut.

2.     Kecepatan penghitungan/ komputasi: jika kita menginginkan sebuah tugas khusus untuk menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari subtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O).

3.     Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah model modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.

4.     Kenyamanan: bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak, dan meng-compile secara paralel.

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 )
     ; // do nothing

        // 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 );
       }

// consumer memanggil method ini
      public Object remove() {
          Object item ;

         while ( count == 0 )
               ; // do nothing

         // 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;
}



Sebuah proses produser membentuk informasi yang dapat digunakan oleh konsumen proses. Sebagai contoh sebuah cetakan program yang membuat banyak karakter yang diterima oleh driver pencetak. Untuk memperbolehkan produser dan konsumer proses agar dapat berjalan secara terus menerus, kita harus menyediakan sebuah item buffer yang dapat diisi dengan proses produser dan dikosongkan oleh proses konsumer. Proses produser dapat memproduksi sebuah item ketika konsumer sedang mengkonsumsi item yang lain. Produser dan konsumer harus dapat selaras. Konsumer harus menunggu hingga sebuah item diproduksi.

0 Response to "Hubungan Antara Proses"

Posting Komentar

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme