본문 바로가기
Computer Science/운영체제

[운영체제] 프로세스 동기화

by Sky Titan 2020. 9. 14.
728x90

※출처 : TOPCIT 에센스

이미지를 클릭하면 사이트로 이동합니다.

프로세스 동기화

  • 2개 이상의 프로세스가 동시에 처리 중인 동일한 자료에 접근하여 변경하거나, 자료 조작 순서가 실행된 결과에 영향을 줄 때를 경합상태 (Race Condition) 이라고 한다.
  • 경합 상태에서는 하나의 프로세스만 자료를 조작하도록 보호해야함 -> 프로세스 동기화

임계구역 (Critical Section)

  • 다른 프로세스와 공유하는 자료를 변경하는 작업을 수행
  • 한 번에 1개의 프로세스만이 접근 가능한 영역
do { 
	entry section 
	critical section //임계구역 
	exit section 
	remainder section //잔류구역 
}while(TRUE);

임계구역 문제 해결 방안의 3가지 조건

조건

설명

상호배제 (Mutual Exclusion)

한 프로세스가 임계구역에 진입하면 다른 프로세스들은 진입 못함

진행 (Progress)

임계구역에 실행되는 프로세스가 없을 때, 잔류 구역에서 실행 중이지 않는 프로세스만 임계구역 진입 가능

한정된 대기 (Bounded Waiting)

프로세스가 임계구역에 진입 요청 한 후 진입할 때까지 다른 프로세스들이 임계구역에 진입할 수 있도록 허용하는 시간은 한정적이어야 함

교착 상태

  • 멀티 프로그래밍 환경에서 여러 프로세스들이 한정된 자원을 두고 경쟁한다.
  • 한 프로세스가 자원을 요청했는데 사용 불가능하다면 '대기 상태'가 되고 다른 대기 중인 프로세스에 의해 해당 자원이 점유되고 있으면 다시 프로세스 상태를 변경시킬 수 없음 -> 이것을 '교착 상태' 라고 함
  • 교착 상태 발생 -> 프로그램 종료 불가 -> 다른 작업 시작 불가

 

교착 상태 발생 조건

조건

설명

상호배제(Mutual Exclusion)

한 번에 하나의 프로세스만이 공유 자원을 사용할 수 있는 상태

점유 및 대기 (Hold & Wait)

프로세스들이 현재 자원을 점유하고 다른 자원을 요구하는 상태

비선점 (Non-Preemption)

각 프로세스에 할당된 자원은 사용 완료 시 까지 강제로 해제 불가능

환형 대기 (Circular Wait)

서로 다른 프로세스 간의 자원 요구가 연속적으로 반복되는 상태

교착상태 해결 방안

방안

설명

예방(Prevention)

교착상태 발생 조건을 제거 -> 미리 예방

회피(Avoidance)

교착상태 발생 조건 제거 x -> 적절하게 피해 나감

발견(Detection)

교착상태 발생 허용 -> 발생 시 원인을 찾아 해결

회복(Recovery)

교착상태 빠진 프로세스 재시작, 혹은 복구

 

728x90

댓글