CS 기술 면접 준비/이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접

[운영체제] 3-3. 동기화와 교착 상태 (업데이트 중..)

annovation 2025. 7. 10. 08:12

공유 자원

 

 프로세스 간 통신이 이루어지는 상황에서, 프로세스 A가 공유 메모리 공간에 데이터를 쓰고, 프로세스 B가 해당 메모리 공간을 읽는 상황이 있다고 가정해보자. 두 프로세스가 공유 메모리 공간이라는 공유 자원을 통해 통신하는 것이다.

 동일한 프로세스 내 스레드 A와 B가 같은 파일을 수정하는 경우도 두 스레드는 파일 자원을 공유하고 있는 것이다. 이렇게 프로세스 혹은 스레드가 공유하는 자원을 공유 자원 (Shared Resource)이라고 한다.

 

💡공유 자원 (Shared Resource)

  • 두 개 이상의 프로세스 혹은 스레드가 공유하는 자원으로, 동시 접근 가능하다.
  • ex. 메모리, 파일, 전역 변수, 입출력 장치 등

다수의 프로세스 혹은 스레드가 동시에 공유 자원에 접근할 경우 문제가 발생할 수 있는데, 이 코드를 임계 구역 (Critical Section)이라고 한다.

 

💡임계 구역 (Critical Section)

  • 여러 프로세스나 스레드가 공유 자원에 동시에 접근하는 경우, 문제가 발생할 수 있는 코드

출처 : [OS] Lecture 6. Process Synchronization and Mutual Exclusion (1/7) - Introduction / 운영체제 강의

 

 상황 설명

  • 중앙에 공유 변수 sdata가 있다. sdata의 현재 값은 0이다.
  • 두 개의 프로세스 P_i와 P_j가 각자 sdata를 1 증가시키는 코드(sdata = sdata + 1)를 실행하려 한다.

 문제 발생 가능성

  1. Process-P_i sdata 값을 읽는다. (현재 0)
  2. Process-P_j도 거의 동시에 sdata 값을 읽는다. (여전히 0)

  → 두 프로세스 모두 자신이 읽은 0에 +1 연산을 수행한다.

  1. Process-P_i가 계산한 1을 sdata에 저장
  2. Process-P_j도 계산한 1을 sdata에 저장

 결과

  • 두 프로세스 모두 sdata를 +1 했다고 생각하지만,
  • 실제 최종 결과는 1만 증가한다.

  → 만약 두 프로세스가 순차적으로 실행되었다면, sdata는 2가 되었을 것이다.

 

 핵심 포인트

  • sdata = sdata + 1은 단순한 한 줄 코드처럼 보이지만, 실제로는
    1. 읽기 (Read)
    2. 계산 (Add 1)
    3. 쓰기 (Write)
    세 단계로 이루어진 작업이다.
  • 이러한 코드 실행 부분을 임계 구역(Critical Section) 이라고 한다.

 

💡레이스 컨디션 (Race Condition)

 

 

 

💡동기화 (Synchronization)

 

 


동기화 기법

 

💡뮤텍스 락 (Mutex Lock)

 

 

 

💡세마포 (Semaphore)

 

 

 

💡조건 변수와 모니터

 

 

 

💡스레드 안전 (Thread Safety)

 

 


출처

https://www.hanbit.co.kr/store/books/look.php?p_code=B3079890360

 

이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접

기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!

www.hanbit.co.kr


이미지 출처

1. 임계 구역

[OS] Lecture 6. Process Synchronization and Mutual Exclusion (1/7) - Introduction / 운영체제 강의