개발자 면접 공부/운영체제,CS

임계영역(Critical Section)

chogyujin 2024. 4. 8. 19:02
728x90

1. 개요

오늘은 임계영역(Critical Section)에 대해 알아보겠습니다.


2. 임계영역

임계영역을 설명하기 전에 봤던 내용중 Race Condition(경쟁 상태)를 알아야합니다.
경쟁 상태란 두 개 이상의 멀티 쓰레드가 하나의 자원을 두고 경쟁을 하는 상태로 잘못된 값을 가질수있다고 하였습니다.

https://chogyujin-study.tistory.com/104

 

Race Condition 경쟁상태

1. 개요 오늘은 OS에 경쟁상태 Race Condition에 대해서 공부하도록 하겠습니다. 2. Race Condition(경쟁상태)? 경쟁상태란 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근

chogyujin-study.tistory.com

그렇다면 임계영역은 무엇일가요?

둘 이상의 멀티 쓰레드가 하나의 자원을 접근할 때, 오직 한 쓰레드만 접근을 허용하게 만들어주는 구역이라고 생각하면 됩니다.
일반 동기화 객체와 달리 개별 프로세스의 유저 메모리 영역에 존재하는 단순한 구조체이며, 다른 프로세스가 접근할 수 없으므로 한 프로세스에 속한 스레드 간 동기화에만 사용합니다.

일반 동기화 객체보다 빠르고 효율적입니다.

 

임계영역은 말 그대로 한 쓰레드만 접근을 허용하는 구역입니다.
임계영역을 만드는것은 LOCK이라는 개념이 있습니다.

이러한 LOCK을 뮤텍스 혹은 세마포어로 잠글수가 있습니다.(C++ 에는 atomic도 있음)


3. 임계영역 조건

  1. 상호배제 = 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야한다.
  2. 진행 = 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러개라면 어느것이 들어갈지 결정해줘야함
  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