Mutual Exclusion

2026. 6. 6. 19:53·DevSec

Mutual Exclusion

상호 배제(Mutual Exclusion): 여러 프로세스나 스레드가 공유 자원에 동시에 접근하지 못하도록 제한하는 동기화 기법.

Mutual Exclusion 기법

Mutual Exclusion은 여러 실행 흐름이 같은 공유 자원에 접근할 때 한번에 하나의 실행 흐름만 해당 자원을 사용할 수 있도록 보장해주는 기법이다.

여러 스레드가 동시에 같은 변수, 파일, 메모리 영역, 커널 객체 등에 접근하면 실행 순서에 따라 결과가 달라질 수 있다.

이러한 문제를 Race Condition이라고 한다.

Mutual Exclusion은 Race Condition을 막기 위해 공유 자원에 접근하는 코드 영역을 보호한다.

이때 공유 자원에 접근하는 코드 영역을 Critical Section이라고 한다.

counter++;

위의 C언어 코드는 counter 값을 1 증가시키는 코드이다.

하지만 실제로는 하나의 동작이 아니라 여러 단계로 처리된다.

mov eax, DWORD PTR [counter]
add eax, 1
mov DWORD PTR [counter], eax

즉, counter 값을 메모리에서 읽고, 1을 더하고, 다시 메모리에 저장한다.

만약 두 개의 스레드가 동시에 이 코드를 실행하면 문제가 발생할 수 있다.

순서 Thread 1 Thread 2 counter

1 counter 읽기   0
2   counter 읽기 0
3 1 더하기   0
4   1 더하기 0
5 counter 저장   1
6   counter 저장 1

두 스레드가 각각 counter를 1씩 증가시켰기 때문에 결과는 2가 되어야 한다.

하지만 두 스레드가 모두 같은 값인 0을 읽고, 각각 1을 저장했기 때문에 결과는 1이 될 수 있다.

즉, 공유 자원에 동시에 접근하면 의도한 결과가 나오지 않을 수 있다.

Mutual Exclusion은 이러한 상황을 막기 위해 Critical Section에 동시에 하나의 실행 흐름만 들어갈 수 있도록 한다.

'DevSec' 카테고리의 다른 글

eBPF  (0) 2026.06.10
BPF  (0) 2026.06.10
Critical Section  (0) 2026.06.06
Busy Waiting  (0) 2026.06.05
Context Switching  (0) 2026.06.05
'DevSec' 카테고리의 다른 글
  • eBPF
  • BPF
  • Critical Section
  • Busy Waiting
hsnyus
hsnyus
rev, pwn
  • hsnyus
    hsnyus
    hsnyus
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • About (1)
      • 일반 (29)
      • DevSec (58) N
      • CTF&Wargame (24)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    문제풀이
    사이버가디언즈
    c언어
    프로그래밍
    스터디
    ctf
    워게임
    DreamHack
    개발
    드림핵
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
hsnyus
Mutual Exclusion
상단으로

티스토리툴바