13. 세마포어가 제대로 작동하지 않는 경우를 설명하시오.
1.
세마포어가 제대로 작동하지 않는 경우를 설명하시오.
세마포어 – 임계구역에 진입하기 전에 스위치를 사용하는 방법
P() : 잠금을 수행하는 코드, RS가 0보다 크면 1만큼 감소시키고 임계구역에 진입, 0보다 작으면 대기
V(): 잠금 해제와 동기화를 같이 수행하는 코드, RS값을 1 증가시키고 프로세스에게 진입 신호를 보냄
세마포어를 사용하지 않고 바로 임계구역에 들어간 경우
P()를 두 번 사용하여 wake_up신호가 발생하지 않는 경우
P()와 V()를 반대로 사용하여 상호 배제가 보장되지 않은 경우
1.
세마포어의 내부 코드도 타임아웃이 걸리면 문제가 발생할 수도 있다. 그래서 내부 코드는 무엇으로 보호받는가?
검사와 지정
P()와 V() 내부 코드가 실행되는 도중에 다른 코드가 실행되면 안되므로
분리 실행되지 않고 완전히 실행되게 해야한다.
1.
공유 자원을 내부적으로 숨기고 공유자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시키는 것으로, 세마포어의 단점을 해결하면서 임계구역 문제를 해결한 방식은 무엇인가?
모니터
•
세마포어를 사용하지 않고 바로 임계구역에 들어간 경우
•
P()를 두 번 사용하여 wake_up신호가 발생하지 않는 경우
•
P()와 V()를 반대로 사용하여 상호 배제가 보장되지 않은 경우
세마포어 잘못된 사용
세마포어 – 임계구역에 진입하기 전에 스위치를 사용하는 방법
P() : 잠금을 수행하는 코드, RS가 0보다 크면 1만큼 감소시키고 임계구역에 진입, 0보다 작으면 대기
V(): 잠금 해제와 동기화를 같이 수행하는 코드, RS값을 1 증가시키고 프로세스에게 진입 신호를 보냄
14. 세마포어의 내부 코드도 타임아웃이 걸리면 문제가 발생할 수도 있다. 그래서 내부 코드는 무엇으로 보호받는가?
•
검사와 지정 (Test and Set)
do {
while (TestAndSet(&lock))
; // do nothing
// critical section
lock = FALSE; // lock을 풀어준다.
// remainder section
} while (TRUE);
Java
복사
15. 공유 자원을 내부적으로 숨기고 공유자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시키는 것으로, 세마포어의 단점을 해결하면서 임계구역 문제를 해결한 방식은 무엇인가?
모니터
•
임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 P(), V()를 사용하지 않고 모니터에 작업을 요청한다.
•
모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다.