일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- REACT
- tfjs
- 백준 2133
- RBT
- WebRTC란
- 구현
- 데이터 링크 계층
- 테스트주도개발
- TDD란?
- 풀이
- 2623
- 페이지교체알고리즘
- OpenVidu
- Vite 사용 이유
- 메모리계층
- c++
- 자료구조
- 적두트리
- dp
- stl
- 3XN 타일링
- 1796
- TDD
- ESP32
- 백준
- LOLIN D32
- 구슬탈출
- mediastream
- 9996
- 13459
- Today
- Total
그냥 블로그
[운영체제] 교착 상태 본문
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) 프로세스 응답 없음 => 현대 운영체제
* 은행원 알고리즘 : 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원 할당.
++ 뮤텍스랑 세마포어 쪽은 추후에 강의 수강 필요.
[뮤텍스와 세마포어의 차이]
[은행원 알고리즘]
'CS > 운영체제' 카테고리의 다른 글
[Linux] 파일 및 디렉토리 구조/시스템 (1) | 2024.08.05 |
---|---|
[운영체제] 🧐 프로세스 메모리 구조 모델 (0) | 2024.07.22 |
[운영체제] 프로세스와 스레드 (1) | 2023.10.28 |
[운영체제] 메모리 (1) | 2023.10.22 |
[운영체제] 운영체제와 컴퓨터 (0) | 2023.10.19 |