Penyebab Kemungkinan Deadlock
Mutual Exclusion
Hanya satu
proses yang dapat menggunakan sumber daya pada satu kali
waktu.
Hold-and-wait
Suatu
proses dapat menahan sumber daya yang
dialokasikan sambil menunggu sumber daya lainnya dapat dipakai.
No preemption
Tidak ada sumber daya yang
dapat dilepaskan dari
proses yang sedang menggunakannya.
Pencegahan Deadlock
Pada Mutual Exclusion
Exclusive
access hanya untuk
write saja,
proses-proses lain tetap bisa read
Pada Hold and Wait
Semua
resource yang dibutuhkan diminta sejak awal
Pada No Preemption
Proses
melepaskan
resource dan nanti memintanya kembali
Pada Circular Wait
Membuat urutan pengaksesan
resource
Ada 2 cara untuk menggunakan shared memory :
Menggunakan mmap()
Menggunakan shmget()
Metode IPC tercepat
Tidak ada mekanisme untuk menangani penulisan pada waktu yang bersamaan
Langkah-langkah Membuat
Shared Memory
Membuat segment di memory dengan shmget()
Mendaftarkan (attach) segment ke data space dari proses dengan shmat()
Tulis/Baca dari memori
Detach segment dari data space dari proses dengan shmdt()
shmget()
System call untuk membuat suatu segmen shared memory
Definisi :
#include
<sys/ipc.h>
#include
<sys/shm.h>
int shmget(key_t key,
size_t
size, int shmflg);
shmflg bisa diisi dengan :
IPC_CREATE,
IPC_EXCL, permission
shmat()
System call untuk mendaftarkan segment shared memory ke dalam data space dari suatu proses
Definisi :
#include
<sys/types.h>
#include
<sys/shm.h>
void
*shmat(int shmid, const void
*shmaddr, int shmflg);
Parameter :
Shmid → ID
dari
shared memory
Shmaddr → Lokasi
shared memory di main memory
jika NULL
akan dicarikan lokasi pada
memory yang ingin ditempati
Return :
Pointer
ke lokasi
shared memory
shmdt()
System call untuk melepaskan shared memory segment dari data space dari proses.
Definisi :
#include
<sys/types.h>
#include
<sys/shm.h>
int shmdt(const void
*shmaddr);
Parameter :
Shmaddr →
pointer ke lokasi
shared memory
Return :
0 → sukses
(void
*) -1 → error
shmctl()
System call untuk mengetahui atau merubah informasi yang berkaitan dgn suatu shared memory
Definisi :
#include
<sys/ipc.h>
#include
<sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
Argument cmd bisa berisi :
IPC_STAT
: mengambil informasi ttg
shared memory segment
IPC_SET
: mengubah informasi ttg
shared memory segment
IPC_RMID
: menandai suatu
segment untuk dibuang ketika semua
process yang menggunakannya sudah melepasnya
SHM_LOCK
: Lock suatu
segment, membuatnya tidak bisa
di-swap
SHM_UNLOCK
: Unlock suatu
segment
Program Tambahan
Ada 2 program yang berguna untuk melihat apa yang terjadi pada IPC yang dibuat, yaitu :
ipcs
Menyediakan informasi yang
berkaitan dengan IPC
yang sedang digunakan
(message queue, shared memory, semaphore)
ipcrm
Menghapus IPC tertentu
(message queue, shared memory, semaphore)
0 komentar:
Posting Komentar