그냥 블로그

[운영체제] 교착 상태 본문

CS/운영체제

[운영체제] 교착 상태

코딩하는 공대생 2023. 10. 29. 14:06
반응형
3.4 교착 상태
    3.4.1 공유 자원과 임계 영역
    3.4.2 교착 상태

3.4.1 공유 자원과 임계 영역

 

공유 자원 

시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수

경쟁상태 : 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황 

 

임계 영역

둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역. 

=> 해결방법 1) 뮤텍스 2) 세마포어 3) 모니터

=> 상호 배제, 한정 대기, 융통성 만족 / lock

=> 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식.

 

* 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음

* 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안됨

* 융통성 : 한 프로세스가 다른 프로세스의 일을 방해하면 안됨

 

1) 뮤텍스

프로세스나 스레드가 공유하는 자원을 lock()을 통해 잠금 설정하고 사용 후 unlock()으로 해제 하는 객체. 잠금이 설정되면 다른 프로세스나 스레드는 잠긴 코드 영역에 접근할 수 없다. 

 

 

 

2) 세마포어

일반화된 뮤텍스. 간단한 정수 값과 두 가지 함수 wait, signal로 공유 자원에 대한 접근 처리. 

wait은 자신의 차례가 올 때까지 기다리는 함수, signal은 다음 프로세스로 순서 넘겨주는 함수

세마 포어에는 조건 변수가 없고 프로세스나 스레드가 세마포어 값을 수정할 때 다른 프로세스나 스레드는 동시에 세마포어 값을 수정할 수 없다. 

3) 모니터

둘 이상의 스레드나 프로세스가 공유 자원에 안전하게 접근할 수 있도록 공유 자원을 숨기고 해당 접근에 대해 인터페이스만 제공한다. 

 

3.4.2 교착 상태

두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태.

A가 점유한 자원을 B가, B가 점유한 자원을 A가 요청함.

 

교착 상태의 원인

상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근 불가능

점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태

비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없음

환형 대기 : 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황

 

교착 상태 해결법

1. 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계

2. (회피) 교착 상태 가능성이 없을 때만 자원 할당, 프로세스 당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 '은행원 알고리즘' 사용.

3. 교착 상태 발생 시 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한개 씩 지움.

4. (무시) 교착 상태는 매우 드물게 발생하기 떄문에 발생 시 사용자가 작업을 종료한다. ex) 프로세스 응답 없음 => 현대 운영체제

 

* 은행원 알고리즘 : 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원 할당.

 

 

++ 뮤텍스랑 세마포어 쪽은 추후에 강의 수강 필요.

 

[뮤텍스와 세마포어의 차이]

 

[운영체제] Mutex 뮤텍스와 Semaphore 세마포어의 차이

프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 Critical Section(여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유

heeonii.tistory.com

[은행원 알고리즘]

 

[운영체제]교착상태 회피-은행원 알고리즘(Banker's Algorithm) 쉬운 예시, 안전상태, 불안전상태

[한 번에 끝내는 운영체제 목차!] Deadlock Avoidance 교착상태 회피 저번 시간에 교착상태 해결 방안 4종류를 알아봤어요 교착상태 예방, 교착상태 회피, 교착상태 탐지, 교착상태 복구! 이렇게 4가지

jhnyang.tistory.com