🌞 세마포
P와 V라는 표준 단위 연산에 의해서만 접근되는 정수형 변수
다수 프로세스들을 공유 자원 접근 관리를 위한 변수, 또는 ADT(Abstract Data type)
cf) Abstract Data Type = 연산과 데이터가 합쳐져 있는 것이다.
바쁜대기
공유 자원이 여러 개인 경우로 일반화가 어렵다.
상호배제
여러 개의 공유 자원 접근 관리
프로세스들 간의 동기화 - 연산의 순서 제어
정수 변수
사용 가능한 자원의 개수 표현
표준 단위 연산 P와 V으로만 접근
임계 영역에 진입하는 연산
프로세스가 대기하는 wait 동작
임계 영역에서 나오는 연산
대기 중인 다른 프로세스 깨우는 signal 동작
S의 값이 0일 때는 P연산 즉 wait을 할 것이다. 그리고 V 연산에 의해서 값이 1이 되면 while문을 탈출하고 다시 S값을 -- 하면서 0으로 바꾸고 임계영역을 차지한다.
바쁜대기 문제는 해결하지 못했고, 공유자원 문제는 해결했다. S=3으로 초기화시 공유자원이 3개 일 때 해결한다.
S1이 끝난 후에 S2를 수행
세마포 synch는 0 으로 초기화
뮤텍스 라고도 부름
공유 자원이 한개
S는 1로 초기화
공유 자원이 여러 개
S는 공유 자원 개수로 초기화
세마포를 기다리는 프로세스를 대기 상태로 전환
연산 wait과 signal 수정 -> 프로세스 대기전환(blocked)과 재시작(ready)을 추가
세마포는 운영체제의 지원이 필요한 작업이다.