본문 바로가기
CS/운영체제

[운영체제] 상호배재와 교착상태

by 창이2 2021. 5. 24.

1. 상호배재와 임계영역

  • 상호배재 : A프로세스가 공유자원을 사용할 때 B프로세스가 제어하지 못하게 하는 것
  • 임계영역 : 하나의 프로세스만 접근 할 수 있는 영역

     ※임계영역 3가지 조건 : 상호배재, 진행(어느 프로세스가 진입할 지 결정), 한정대기(무한히 대기하면 안됨)

 

 

2. 상호배재 방법

 

 세마포어

  • 이진 세마포어 : 0과 1로 카운트하여 1개의 자원만 접근 하도록 설계된 세마포어
  • 계수 세마포어 : n개 자원까지 접근 할 수 있도록 설계된 세마포어
  • 문제점 : 세마포어가 프로그램이 전체에 퍼져있을때 세마포어의 영향을 파악하기 어려움

모니터

  • 세마포어보다 제어하기 더 쉽게 만든 동기화 도구
  • 한개의 프로세스만이 모니터에 접근 가능
  • 프로시저, 공유데이터, 초기화코드로 구성됨

 

3. 교착상태

교창상태란 서로 다른 프로세스가 서로가 가지는 자원을 요구하는 상태를 말한다.

교착상태가 되기위한 전제조건은 상호배재, 점유 및 대기, 비선점, 순환대기 일때 발생한다.

 

해결방법은 크게 3가지가 있다.

1. 예방

  1.1 상호배제 조건 방지 : 상호배제란 하나의 자원을 하나의 프로세스만 사용하는 것이다.

상호배제 방지의 좋은 예는 파일을 read하는 경우이다. 반면에 write하는 경우에는 적용하면 안된다.

 

  1.2 점유 및 대기 조건 방지 : 이 조건을 방지하려면 프로세스가 할당될때 모든 자원을 먼저 할당하여 처리하는 것이다.

 

  1.3 비선점 조건방지 : 프로세스가 다른 자원을 요청할 때 가질 수 없으면 현재 가진 자원을 모두 해제하여 예방하는 방법이다. 이때 프로세스 상태를 잃기 쉬우므로 빈번하게 발생하지 않는 경우에 사용한다.

 

 1.4 순환대기 방지 : 자원에 순서를 부여하고 프로세스는 자원의 순서에 맞게 요청하게 하는 방법이다.

만약 A 프로세스가 

 

 

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 프로세스와 쓰레드  (0) 2021.05.16

댓글