Deadlock dan Shared Memory
Deadlock adalah situasi dimana dua atau lebih proses tidak dapat berjalan karena saling menunggu resource dari yang lainnya. Penyebab kemungkinan deadlock antara lain;- 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.
Cara - cara pencegahan deadlock antara lain;
- Pada Mutual Exclusion -> access hanya untuk write saja, proses - proses lain tetap bisa read.
- Pada Hold and Wait -> semua resources yang dibutuhkan diminta sejak awal.
- Pada No preemption -> proses melepaskan resource dan nanti memintanya kembali.
- Pada circular wait -> membuat urutan pengaksesan resource.
Shared Memory
Shared memory merupakan metode IPC tercepat. Tidak ada mekanisme untuk menangani penulisan pada waktu yang bersamaan. Terdapat 2 cara untuk menggunakan shared memory;- Menggunakan mmap()
- Menggunakan shmget()
- 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()
Shmat() adalah system call untuk mendaftarkan segment shared memory ke dalam data space dari suatu proses. Definisi dengan : #include <sys/types.h> #include <sys/shm.h>void *shmat(int shmid, const void *shmaddr, int shmflg). Mempunyai parameter :
- Shmid -> ID dari shared memory
- Shmaddr -> Lokasi shared memory di main memory. Jika NULL akan dicarikan lokasi pada memory yang ingin ditempati.
Tidak ada komentar:
Posting Komentar