Perngertian dan fungsi dari semaphore
●Semaphore adalah sebuah variabel yang dilindungi atau tipe data abstrak yang digunakan untuk membatasi akses ke sumber daya bersama seperti shared memory dalam suatu lingkungan pemrograman paralel.
●Semaphore biasanya digunakan untuk
memonitor dan mengontrol ketersediaan system resource seperti dalam shared memory atau untuk menghindari terjadinya konkurensi.
●Semget dan semctl digunakan untuk
mengalokasikan dan membebaskan semaphore.
Contoh Implementasi Semaphore dalam bahasa pemograman C :
#include <semaphore.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
int main(int argc, char **argv)
{
int fd, i,count=0,nloop=10,zero=0,*ptr;
sem_t mutex;
fd = open("log.txt",O_RDWR|O_CREAT,S_IRWXU);
write(fd,&zero,sizeof(int));
ptr = mmap(NULL,sizeof(int),PROT_READ |PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
if( sem_init(&mutex,1,1) < 0)
{
perror("semaphore initilization");
exit(0);
}
if (fork() == 0) {
for (i = 0; i < nloop; i++) {
sem_wait(&mutex);
printf("child entered crititical section: %d\n", (*ptr)++);
sleep(2);
printf("child leaving critical section\n");
sem_post(&mutex);
sleep(1);
}
exit(0);
}
for (i = 0; i < nloop; i++) {
sem_wait(&mutex);
printf("parent entered critical section: %d\n", (*ptr)++);
sleep(2);
printf("parent leaving critical section\n");
sem_post(&mutex);
sleep(1);
}
exit(0);
}
No comments:
Post a Comment