기출문제/정보처리기사

2022년 1회 정보처리기사 기출문제 69번

엉클지니 2025. 3. 6. 22:12

69. 다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은?

 Dekker Algorithm       Lamport Algorithm

 Peterson Algorithm      Semaphore

 

 

문제:
다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은?

P(S) : while S <= 0 do skip; 
S := S - 1; 
V(S) : S := S + 1;

해설

이 문제는 상호배제(Mutual Exclusion) 를 구현하는 기법을 묻고 있습니다. 상호배제는 여러 프로세스나 스레드가 공유 자원(임계 구역)을 동시에 접근하지 못하게 하는 기법입니다. 해당 코드는 **세마포어(Semaphore)**를 사용하는 방식으로, 세마포어는 임계 구역의 접근을 제어하는데 매우 유용한 도구입니다.

선택지 분석

  1. ① Dekker Algorithm
    • Dekker Algorithm은 두 프로세스 간의 상호배제를 구현하는 알고리즘으로, 두 프로세스가 공유 변수를 통해 임계 구역을 보호합니다. 하지만 Dekker 알고리즘은 세마포어를 사용하지 않습니다. 또한 주어진 코드와 형태는 Dekker 알고리즘의 특징과 다릅니다.
  2. ② Lamport Algorithm
    • Lamport Algorithm두 개 이상의 프로세스를 위한 상호배제 알고리즘입니다. Lamport 알고리즘은 각 프로세스가 시간 스탬프를 사용하여 임계 구역에 접근하도록 설계되어 있습니다. 주어진 코드와는 다르게, Lamport 알고리즘에서는 세마포어나 주어진 코드와 유사한 형태의 연산을 사용하지 않습니다.
  3. ③ Peterson Algorithm
    • Peterson Algorithm은 두 프로세스 간의 상호배제를 위한 알고리즘입니다. 주어진 코드와 유사한 점이 있지만, 세마포어를 사용하지 않고 공유 변수를 사용하여 임계 구역을 제어합니다. Peterson 알고리즘은 두 프로세스에 대한 상호배제를 제공하며, 주어진 코드와 형태가 다르므로 정답은 아닙니다.
  4. ❹ Semaphore
    • **세마포어(Semaphore)**는 다수의 프로세스가 공유 자원에 접근하는 것을 제어하기 위해 사용되는 기법으로, 주어진 코드에서 볼 수 있는 **P(S)**와 V(S) 연산은 바로 세마포어에서 사용하는 연산입니다.
      • P(S)는 wait 연산으로, S 값이 0 이하일 경우 대기하고, 그렇지 않으면 S를 1 감소시킵니다.
      • V(S)는 signal 연산으로, S를 1 증가시켜 다른 프로세스가 대기하고 있다면 그 프로세스를 깨우게 됩니다.
    • 이 구조는 세마포어를 이용한 상호배제 기법에 해당합니다.

결론

**정답은 ❹ 세마포어(Semaphore)**입니다.
주어진 코드에서 사용된 P(S)와 V(S) 연산은 세마포어의 기본 연산으로, 상호배제를 구현하는 데 사용되는 기법입니다.

반응형