2025-12-19

오늘 배운 것

Q1. 임계 구역(Critical Section)이란 무엇이고, 왜 문제가 되나요?

A.

임계 구역은 여러 프로세스나 스레드가 공유 자원에 접근하는 코드 영역으로, 동시에 실행되면 데이터의 일관성이 깨질 수 있는 부분입니다.

여러 실행 흐름이 동시에 임계 구역에 진입하면 레이스 컨디션이 발생할 수 있고, 이로 인해 잘못된 결과가 만들어집니다.

그래서 임계 구역에는 반드시 상호 배제 동기화가 필요합니다.


Q2. 레이스 컨디션과 교착 상태의 차이를 설명해보세요.

A.

레이스 컨디션은 여러 프로세스가 동시에 임계 구역을 실행하면서 실행 순서에 따라 결과가 달라지는 문제입니다.

반면 교착 상태는 여러 프로세스가 서로가 가진 자원을 기다리며 아무도 진행하지 못하고 멈춰 있는 상태입니다.

즉, 레이스 컨디션은 “잘못 실행되는 문제”이고,

교착 상태는 “아예 진행되지 않는 문제”라는 차이가 있습니다.


Q3. 뮤텍스와 세마포어의 차이를 설명해보세요.

A.

뮤텍스는 한 번에 하나의 프로세스만 임계 구역에 접근하도록 보장하는 동기화 도구입니다.

주로 단일 공유 자원에 대한 상호 배제에 사용됩니다.

세마포어는 정수 값을 이용해 동시에 접근 가능한 프로세스 수를 제어할 수 있어, 여러 개의 공유 자원을 관리할 수 있습니다.

즉, 뮤텍스는 “하나만”, 세마포어는 “여러 개도 가능”하다는 점이 핵심적인 차이입니다.


Q4. 교착 상태가 발생하기 위한 조건 4가지를 설명해보세요.

A.

교착 상태는 다음 네 가지 조건이 모두 동시에 만족될 때 발생합니다.

  1. 상호 배제
  2. 점유와 대기
  3. 비선점
  4. 원형 대기

이 중 하나라도 성립하지 않으면 교착 상태는 발생하지 않기 때문에, 예방 기법들은 이 조건 중 하나를 의도적으로 제거하는 방식으로 동작합니다.


Q5. 교착 상태를 해결하는 방법에는 어떤 것들이 있나요?

A.

대표적으로 세 가지 접근 방식이 있습니다.

  • 예방: 교착 상태 발생 조건 자체를 제거
  • 회피: 자원 할당 시 안전 상태인지 판단하여 할당
  • 검출 및 회복: 교착 상태를 허용하고, 발생 후 선점이나 프로세스 종료로 해결

시스템 성격에 따라 자원 활용률과 안정성 사이에서 적절한 방식을 선택합니다.

results matching ""

    No results matching ""