티스토리 뷰

세마포어는

추상적인 자료형이다. 세마포어는 신호등이라는 뜻이며, 비동기적으로 생성되는 여러 프로세스들을 동기화 시키는 역할을 한다.

다시 말하면 비규칙적으로 생성되는 여러 프로세스들을 신호등을 통해서 일렬로 들어오게끔 규칙적으로 순서를 맞춰주는 역할을 한다.


세마포어에는 두가지 연산이 존재한다


wait와 signal인데 p,v연산이라고도 한다.


wait는 세마포어의 값을 1개 깎으며 만약에 값을 깎았는데 그 값이 음수라면 대기큐(빨간불이라 차가 대기중인것과 같음)

에 넣는다.


signal은 세마포어 값을 1 증가 시키는데 만약 세마포어의 값이 음수여서 임계구역에 들어가려고 하는 프로세스가 대기중이었다고 했을때

보통 프로세스가 블락된 상태로 대기하게 되는데


이제 임계구역으로 들어가도 좋다고 깨우는 역할을 한다. 


만약에 대기큐에 프로세스가 없었으면 값만 증가하고 끝난다.


대기큐에는 세마포어값이 -1부터 들어가게 된다. 


비동기화를 동기화 시킨다는 것의 의미는

비규칙적으로 임계구역에 접근하는 프로세스들의 접근 순서들을 정해준다는 의미이다.


유한버퍼문제로도 알려진 생산자 프로세스 문제에서 한정된 버퍼에 프로세스들이 마구잡이로 랜덤으로 접근한다. 근데 이 문제또한

세마포어를 이용해서 동기화를 시켜줘야 한다. 예를들어 생산자 프로세스에서는 빵을 생산해서 한정된 그릇에 그 빵을 놓아야 한다.


그런데 그 그릇에 대한 접근권한이 없는 생산자거나 그릇이 꽉차있을때 접근하면 안된다 이런것들을 세마포어를 통해서 조정하게 되며


올바른 프로세스만 임계구역에 입장 시켜주는 역할을 하는 신호등이라고 생각하면 될것같다.




댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함