동시성 이슈(Race Condition)
동일한 프로세스 내에 2개 이상의 Process 혹은 Thread가 동시에 동일한 자원(공유 자원)을 변경하려고 할 때, 개발자가 의도하지 않은 방향으로 데이터 변경이 발생
예시
계좌에 5000원이 있을 때,
Thread1은 2000원을 입금해서 7000원으로 변경하려고 한다.
Thread2는 3000원을 출금해서 2000원으로 변경하려고 한다.
올바른 결과는 5000 + 2000 - 3000 = 4000원이다.
하지만, 동시에 읽고 그 값을 변경하다보면 결과는 7000원이 되거나 2000원이 될 수 있다.(돈이 사라지거나, 더 많아질 수 도 있다.)

공유 자원
각 Process 혹은 Thread가 동시에 접근할 수 있는 자원, 변수
임계 영역(Critical Section)
동시성 이슈가 발생하는 코드/로직 영역
해결방법: 뮤텍스(Mutex), 세마포어
Mutex(뮤텍스)
Mutual Exclusion: 상호 배제
공유 자원에 대해서 Process 혹은 Threadrk 사용하는 시점에 Lock을 걸고 사용이 끝난 후에 Unlock한다.

Semaphore(세마포어)
공유 자원에 대해서 동시에 접근 할 수 있는 Process 혹은 Thread의 수를 제어한다.
공유 자원에 대해 동시에 접근하면 문제가 발생하기 때문에, 개발자 판단하에 사용한다.
임계영역에서 프로세스 및 스레드가 여러 개 있어도 문제가 발생하지 않을 때 사용(접근 숫자를 높임)
Binary Semaphore는 Mutex와 유사함
Counting Semaphore
다수의 Process 혹은 Thread가 동시에 공유 자원에 접근할 수 있음
'CS > Operating System' 카테고리의 다른 글
| [Operating System] CPU Scheduling (0) | 2025.09.04 |
|---|---|
| [Operating System] 교착상태(Dead Lock) (0) | 2025.09.03 |
| [Operating System] Multi Process, Multi Thread (0) | 2025.09.01 |
| [Operating System] Process, Thread (0) | 2025.08.26 |
| [Operating System] 운영체제(OS) (0) | 2025.08.25 |