Gunakan MimeTex/LaTex untuk menulis simbol dan persamaan matematika.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 12:00:27 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 169
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 1
Guests: 135
Total: 136

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

bikin flowcart operasi down,up,sleep an wake up,semaphore,mutual exlusion

Dimulai oleh dimas bagus, Oktober 13, 2009, 06:46:06 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

dimas bagus

Operasi Down:

Type Semaphore = Integer,

Procedure Down(Var: semaphore);
Begin
   s := s-1;
   if s < 0 Then
   Begin
      Tempatkan antrian pada antrian untuk semaphore s
      Proses diblocked
   End;
End;

Operasi Up:

Type Semaphore = Integer,

Procedure Up(Var: semaphore);
Begin
   s := s+1;
   if s <= 0 Then
   Begin
      Tempatkan antrian pada antrian untuk semaphore s
      Proses diblocked
   End;
End;

Penyelesaian Kasus Producer-Consumer dengan Sleep and Wakeup:

PROGRAM Producer_Consumer_With_SleepAndWakeUp;

Const N = 100;
Var
     Count : integer;
     Buffer: array [0..N-1] of item_type;

Procedure Produce_Item;
{Menghasilkan item baru}

Procedure Enter_Item;
{Memasukkan item ke buffer}

Procedure Consume_Item;
{Mengkonsumsi item}

Procedure Remove_Item;
{Mengambil item dari buffer}

Procedure Producer;
Begin
     Repeat
          Produce_Item;
          If Count = N Then Sleep;
          Enter_Item;
          Count := Count + 1;
          If Count = 1 Then Wakeup(Consumer);
     Forever
End;

Procedure Consumer;
Begin
     Repeat
          If Count = 0 Then Sleep;
          Remove_Item;
          Count := Count - 1;
          If Count = N-1 Then Wakeup(Producer);
          Consume_Item;
     Forever
End;

Begin
     Count := 0;
     Parbegin
          Producer;
          Consumer;
     ParEnd
End.

Penyelesaian dengan Semaphore:

PROGRAM Producer_Consumer_With_Semaphore;
Const N = 100;
Type
     Semaphore = Integer;
Var
     Buffer: Array [0..N-1] Of item_type;
     mutex : sempahore;
     full  : sempahore;
     empty : sempahore;
     
Procedure Produce_Item;
{Menghasilkan item baru}

Procedure Enter_Item;
{Memasukkan item ke buffer}

Procedure Consume_Item;
{Mengkonsumsi item}

Procedure Remove_Item;
{Mengambil item dari buffer}

Procedure Producer;
Begin
     Repeat
          Produce_Item;
          Down (empty);
          Down (mutex);
          Enter_Item;
          Up (empty);
          Up (full);
     Forever
End;

Procedure Consumer;
Begin
     Repeat
          Down (full);
          Down (mutex);
          Remove_Item;
          Up (mutex);
          Up (empty);
          Consume_Item;
     Forever
End;
Begin
     mutex := 1;
     full := 0;
     empty := N;
     Parbegin
          Producer;
          Consumer;
     ParEnd
End.

Skema penyelesaian mutual exclusion mempunyai bagan sebagai berikut:

Cons N = 2;
Var S:semaphore;
Procedure enter_critical_section;
{
   mengerjakan kode-kode kritis
}

Procedure enter_noncritical_section;
{
   mengerjakan kode-kode tak kritis
}

ProcedureProses(i: integer);
Begin
   Repeat
   Down(s);
   Enter_critical_section;

   Up(s);
   Enter_noncritical_section;
   Forever
End;

Begin
   S:= 1;
   Parbegin
      Proses(0);
      Proses(1);
   ParEnd
End;



dri proses2 diatas di ubh ke bentuk flowcart...plllisss....bisa bantu ga???

-trima kasih-

???


dimas bagus