오늘 한 일 [DONE]
- CS 스터디에서 운영체제를 공부했다.
- 직무 면접 스터디를 진행했다.
- DFS/BFS 알고리즘 문제를 풀었다.
1️⃣ 공유 자원 (Shared Resource)
공유 자원 : 각 프로세스, 스레드가 함께 접근할 수 있는 자원 (모니터, 프린터, 메모리, 파일 등)
경쟁 상태(Race Condition) : 공유 자원에 2개 이상의 프로세스나 스레드가 읽거나 쓰는 상태
2️⃣ 임계 영역 (Critical Section)
임계 영역 : 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역.
해결 방법 : 뮤텍스, 세마포어, 모니터
해결 방법 조건
1. 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 접근 X
2. 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어 가지 못하면 X
3. 융통성 : 한 프로세스가 다른 프로세스 일을 방해 X
뮤텍스(mutex) : lock(), unlock()
세마포어(semaphore) : 최대 접근 가능한 정수 값, wait(), signal()
모니터(monitor) : 자원 숨기고 접근 인터페이스, 모니터 큐
3️⃣ 교착 상태 (Deadlock)
교착 상태 : 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태.
원인
1. 상호 배제 : 한 프로세스 자원 독점 시, 다른 프로세스 접근 불가
2. 점유 대기 : 프로세스가 점유한 자원을 다른 프로세스가 요청
3. 비선점 : 다른 프로세스 자원을 강제 뺏기 불가
4. 환형 대기 : 프로세스 A, 프로세스 B가 서로가 서로의 자원을 요구
해결 방법
위 원인 4가지 중 하나라도 충족되지 않게 하면 됨.
- 위 조건이 성립되지 않게 설계
- 위 조건이 성립되지 않을 때 자원 할당되는 '은행원 알고리즘' 적용.
- 교착 상태는 매우 드물기 때문에 처리 비용이 더 커서 작업을 종료하는 방법을 현대 OS는 채택.
참고 자료
'TIL (Today I Learned)' 카테고리의 다른 글
TIL_230313 (0) | 2023.03.13 |
---|---|
TIL_230310 (0) | 2023.03.11 |
TIL_230308 (0) | 2023.03.08 |
TIL_230302-0307 (0) | 2023.03.08 |
TIL_230301 (0) | 2023.03.02 |