TIL (Today I Learned)

TIL_230309

남 희 2023. 3. 10. 14:17

오늘 한 일 [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는 채택.

 

 


참고 자료

더보기
주홍철, <면접을 위한 cs 전공지식 노트>, 길벗, 2022

 

'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