728x90
1. 개요
오늘은 임계영역(Critical Section)에 대해 알아보겠습니다.
2. 임계영역
임계영역을 설명하기 전에 봤던 내용중 Race Condition(경쟁 상태)를 알아야합니다.
경쟁 상태란 두 개 이상의 멀티 쓰레드가 하나의 자원을 두고 경쟁을 하는 상태로 잘못된 값을 가질수있다고 하였습니다.
https://chogyujin-study.tistory.com/104
그렇다면 임계영역은 무엇일가요?
둘 이상의 멀티 쓰레드가 하나의 자원을 접근할 때, 오직 한 쓰레드만 접근을 허용하게 만들어주는 구역이라고 생각하면 됩니다.
일반 동기화 객체와 달리 개별 프로세스의 유저 메모리 영역에 존재하는 단순한 구조체이며, 다른 프로세스가 접근할 수 없으므로 한 프로세스에 속한 스레드 간 동기화에만 사용합니다.
일반 동기화 객체보다 빠르고 효율적입니다.
임계영역은 말 그대로 한 쓰레드만 접근을 허용하는 구역입니다.
임계영역을 만드는것은 LOCK이라는 개념이 있습니다.
이러한 LOCK을 뮤텍스 혹은 세마포어로 잠글수가 있습니다.(C++ 에는 atomic도 있음)
3. 임계영역 조건
- 상호배제 = 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야한다.
- 진행 = 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러개라면 어느것이 들어갈지 결정해줘야함
- 한정대기 = 다른 프로세스의 기아를 방지하기 위해, 한번 임계구역에 들어간 프로세스는 다음번 임계 영역에 들어갈 때 제한을 두어야함
4. Ref
https://velog.io/@hsjung2015/%EC%9E%84%EA%B3%84%EC%98%81%EC%97%AD
'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글
가상메모리, 번외(why name random access memory?) (0) | 2024.04.09 |
---|---|
메모리 영역 (1) | 2024.03.23 |
TCB (0) | 2023.12.14 |
가상메모리 관리 (2) | 2023.12.08 |
캐시메모리와 지역성 그리고 캐시라인 (0) | 2023.11.30 |