배경
여러 프로세스가 같은 데이터를 공유할 때
동시 접근시 문제가 생김
경쟁 상황(Race Condition)
- 동시에 같은/공유된 데이터에 접근할 경우
- 실행의 결과는 접근이 일어나는 순서에 의존적
- 해결 방법
- 한개의 프로세스만 공유 데이터를 관리할 수 있다고 보장
- = 프로세스 동기화
- 예시
- 계좌이체 상황
임계 영역 문제
- 프로세스의 세그먼트 영역을 임계 영역으로 칭함
- 한 프로세스가 임계영역에서 실행하고 있을 때
- 다른 프로세스가 접근할 수 없음
- 서로 다른 프로세스는 임계 영역에서 동시 실행이 불가능
- 코드 영역
- 진입 영역
- 임계 영역에 대한 진입허가를 요청하는 영역
- 임계 영역
- 출구 영역
- remainder 영역 (여분 영역)
- 남아있는 코드를 위한 영역
- 진입 영역
- 3가지 요구사항(전부 만족해야 임계 영역을 충족)
- 상호 배제(Mutual Exclusion)
- 절차(데드락 피하기)
- 무한으로 진입이 연기되는 상황을 피하자
- 한정 대기(Bounded Waiting) (기아를 피하기)
- 어떤 프로세스는 무한정 대기해야하는 상황을 피하자
- 해결책(싱글 코어 상황)
- 실행중에는 인터럽트를 발생하지 않게 해버린다
- 실행중에 컨텍스트 스위칭 발생 못하게 한다
- 멀티프로세서 환경에서는 효율성이 별로다
- 선점형 비선점형
- 비선점형
- 경쟁 상황이 일어날 일이 없다
- 선점형
- 설계가 어렵지만 최근에는 대부분 효율성 측면에서 선점형을 사용한다
- 비선점형
'Computer Science > 운영체제' 카테고리의 다른 글
뮤텍스와 세마포어(Mutex Locks & Semaphore) (0) | 2023.01.18 |
---|---|
동기화 문제의 해결책 (Synchronization Solution) (0) | 2023.01.05 |
CPU 스케줄링 (CPU Scheduling) (0) | 2022.12.13 |
멀티쓰레딩 (Pthread) (0) | 2022.12.06 |
쓰레드의 이해 (Thread & Concurrency) (0) | 2022.12.06 |