12장. 프로세스 동기화
12-1. 동기화란
동기화 : 실행되는 프로세스의 순서와 자원의 일관성을 보장하여 수행시기를 맞추는 작업
- 동기화 종류
1) 실행 순서 제어 : 프로세스들이 올바른 순서대로 실행.
2) 상호 배제 목적 : 동시 사용을 피하기 위해, 단일 프로세스만 접근
공유 자원과 임계구역
- 공유자원 : 공동의 자원(전역변수, 입출력장치..)
- 임계구역 : 문제가 발생하는 자원에 접근하는 코드영역
두 개 이상의 프로세스가 접근 시, 하나는 대기해야함.- 레이디스 컨디션(race condition) : 여러 프로세스가 동시 다발적으로 코드를 실행하여 문제가 발생하는 경우.
- 상호 배제 동기화 원칙
- 상호배제(mutual exclusion): 하나의 프로세스가 임계 구역 내에 있다면, 다른 프로세스 접근 금지
- 진행(progress): 임계 구역 내에 진입한 프로세스가 없다면 접근 가능
- 유한대기(bounded waiting): 단일 프로세스가 임계 구역에 언젠가는 진입이 가능(무한정 대기는 안됨)
12-2. 동기화 방법
뮤텍스 락(Mutex lock)
- 동시에 접근하지 않도록 만드는 도구 (상호배제를 위한 동기화 도구)
- 구현방식
- 자물쇠(lock) : 프로세스 공유하는 전역변수
- 임계 구역 잠금(acquire)
- 잠금해제(release)
세마포(semaphore)
- 뮤텍스 락과 비슷하지만, 일반화된 방식의 동기화 도구
- 여러 자원에서 적용이 가능
- 구현방식
- 전역변수 S: 임계 구역에 진입 가능한 프로세스 개수
- wait(): 임계 구역 진입/대기여부를 확인
- signal(): 대기 프로세스에게 진입 가능 신호를 전달
모니터(monitor)
- 세마포에 비하면, 사용하기 편리한 도구
- 공유 자원과 인터페이스를 묶어서 관리
- 실행 순서를 제어 가능
- 조건변수 사용(wait, signal 함수로 연산)
13장. 교착 상태
13-1. 교착상태란
모든 철학자가 포크를 집어 식사를 하면 누구도 식사를 할 수 없다.
- 철학자 : 프로세스 혹은 스레드
- 포크 : 자원
- 생각하는 행위 : 자원을 기다리는 것
- 교착 상태
일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
- 교착 상태를 해결하기 위해서
- 교착 상태가 발생했을 때의 상황을 정확히 표현
- 교착 상태가 일어나는 근본적인 이유 이해
자원 할당 그래프
- 어떤 프로세스가 어떤 자원을 사용하고 있고, 어떤 자원을 기다리고 있는지를 표현하는 그래프
교착 상태는 자원 할당 그래프를 통해 단순하게 표현 가능하다.
자원 할당 그래프 그리는 규칙
- 프로세스는 원으로, 자원의 종류는 사각형으로 표현한다.
- 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현한다.
- 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
- 프로세스가 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
교착 상태 발생 조건
- 상호 배제
한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 - 점유와 대기
자원을 할당받은 상태에서 다른 자원을 할당 받기를 기다리는 상태 - 비선점
어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태 - 원형 대기
프로세스들이 원의 형태로 자원을 대기하는 상태
원의 형태를 띈다고 해서 반드시 교착 상태가 발생하는 것은 아니다.
교착 상태 해결 방법
교착 상태 예방
- 애초에 교착 상태가 발생하지 않도록 하는 방법
- 교착 상태 발생 조건 중 하나를 없애버리기
상호 배제를 없애기
- 모든 자원을 공유하게 만든다는 말과 같다.
- 이론적으로는 가능하지만 현실적인 방법은 아니다.
점유와 대기를 없애기
- 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분한다.
- 단점
- 자원의 활용률을 낮출 수 있는 방식
- 많은 자원을 필요로 하는 프로세스의 기아 현상 야기할 수 있음
비선점 조건을 없애기
- 선점이 가능한 자원(CPU 등)에 한해 효과적이다.
하지만 모든 자원이 선점 가능한 것은 아니다.
원형 대기 조건을 없애기
- 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기 발생X
- 철학자 예시
낮은 포크에서 높은 포크 순으로 집도록 하면 된다.
- 단점
- 모든 자원에 번호를 붙이는 것은 어려운 작업
- 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라진다.
교착 상태 회피
- 교착 상태를 한정된 자원의 무분별한 할당으로 인해 발생하는 문제로 간주
- 교착 상태가 발생하지 않을 정도로만 조심 조심 자원 할당하는 방식
- 배분할 수 있는 자원의 양을 고려해 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법
- 안전 순서열
교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 안전 상태
교착 상태 없이 모든 프로세스가 자원 할당 받고 종료될 수 있는 상태
안전 순서열이 있는 상태
- 불안전 상태
교착 상태가 발생할 수도 있는 상태
안전 순서열이 없는 상태
교착 상태 검출 후 회복
- 교착 상태의 발생을 인정하고 사후에 조치하는 방식
- 프로세스가 자원을 요구하면 일단 할당, 교착 상태 검출되면 회복
선점을 통한 회복
- 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
프로세스 강제 종료를 통한 회복
- 교착 상태에 놓인 프로세스 모두 강제 종료
→ 작업 내역을 읽게 될 가능성이 있다. - 교착 상태 없어질 때까지 한 프로세스씩 강제 종료
→ 교착 상태 여부 확인 과정에서 오버헤드 야기
미션
p. 363 - 확인 문제 1번
4번) 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.
반드시(X) 대기 상태가 되는 것도 가능하다.
Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기
- 임계 구역(Critical Section)
동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역 - 상호 배제(Mutex: mutual exclusion)
동시에 접근할 수 없는 영역에 하나의 프로세스만 접근 가능하도록 하는 것
'서평활동' 카테고리의 다른 글
혼공 컴운 회고 (0) | 2023.02.19 |
---|---|
혼공 컴운 - 6주차 정리 (0) | 2023.02.19 |
혼공 컴운 - 4주차 정리 (0) | 2023.02.06 |
혼공 컴운 - 3주차 정리 (0) | 2023.01.25 |
혼공 컴운 - 2주차 정리 (0) | 2023.01.15 |
댓글