Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 프론트엔드
- 알고리즘
- 멀티캠퍼스IT부트캠프티
- git branch 협업
- 시간 복잡도
- 브루트포스
- 정렬
- 멀티캠퍼스IT부트캠프
- 부트캠프후기
- 자바
- 재귀
- 프로세스
- 코딩
- 프론트엔드 비대면반
- LG유플러스 유레카 3기 프론트엔드
- 애자일
- 스레드
- 2775번 문제
- 소수
- tanstack query
- LG유플러스 유레카 프론트엔드 개발자
- Java
- Do it! 자료구조와 함께 배우는 알고리즘 입문
- 웹시큐리티
- zod
- 백준
- 별찍기10
- LG유플러스 유레카 프론트엔드
- 유레카 부트캠프
- LG유플러스 유레카 부트캠프
Archives
- Today
- Total
개발 일기
경쟁 상태(Race Condition) 본문
경쟁 상태(Race Condition)
경쟁 상태란 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태이다.
임계 영역(Critical Section)
경쟁 상태를 이해하려면 임계 영역을 알아야 한다.
임계 영역은 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분이다.
경쟁 상태가 발생하는 경우
1. 커널 작업을 수행하는 중에 인터럽트 발생
- 문제점 : 커널 모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우
- 해결법 : 커널 모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다.
2. 프로세스가 'System Call'을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생할 때
- 문제점 : 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스2로 넘어가 같은 데이터를 조작하는 경우 (프로세스2가 작업에 반영되지 않음)
- 해결법 : 프로세스가 커널모드에서 작업을 하는 경우 시간이 초과되어도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 한다.
3. 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때
- 문제점 : 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
- 해결법 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 하는 방법
쉽게 이해하기 위한 예시 (은행 계좌 예제)
초기 잔액이 100원 있다고 할 때,
입금 스레드
+50
출금 스레드
-30
정상 결과
120원
경쟁 상태 발생
입금 스레드
100 읽음
출금 스레드
100 읽음
입금 결과 저장
150
출금 결과 저장
70
최종 결과
70원
잘못된 값이 된다.
참고 자료
https://gyoogle.dev/blog/computer-science/operating-system/Race%20Condition.html
경쟁 상태(Race Condition) | 👨🏻💻 Tech Interview
경쟁 상태(Race Condition) 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태 동시 접근 시 자료의 일관성을 해치는 결과가 나타남 Race Condition이 발생하는 경우
gyoogle.dev
'CS' 카테고리의 다른 글
| 세마포어(Semaphore) & 뮤텍스(Mutex) (0) | 2026.06.08 |
|---|---|
| 데드락(DeadLock, 교착 상태) (0) | 2026.06.08 |
| CPU Scheduling (0) | 2026.05.28 |
| 시스템 콜, IPC (0) | 2026.05.27 |
| PCB, Context Switching, Interrupt (0) | 2026.05.14 |
Comments