[OS] Race Condition 이해하기[미완]
목표
1. 모드 정리(커널모드,사용자 모드), 시스템콜,인터럽트 정리
2. RaceCondition 발생 케이스 정리
3. RaceCondition 해결 방법 정리
4. RaceCondition 테스트 프로그램 및 파일 정리
1. 사전 용어 및 개념 정리
1. 커널모드, 사용자 모드
2. 인터럽트, 시스템 콜
2. 레이스 컨디션 발생 조건
공유자원에 대해 여러 프로세스가 동시에 접근할 때, 결과 값에 영향을 줄 수 있는 상태
- 커널 작업을 수행 중에 인터럽트 발생
- 프로세스가 시스템 콜을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생할 때
- 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때
3. 발생 조건 별 해결 방법
결국 발생 조건들은 공유자원을 여러 프로세스가 동시에 사용할 경우에 발생하는 문제로
2가지 방법을 통해 해결이 가능하다.
- 세마포어
- 뮤텍스
4. 테스트 방법 (PetriNet 프로그램)
PetriNet 프로그램은 Race Condition을 테스트 해볼 수 있는 기능을 제공한다.
결론
1. 공유자원을 여러 프로세스가 사용하는 경우에는 RaceCondition이 발생할 수 있다.
2. RaceCondition을 해결하기 위해선, 세마포어와 뮤텍스을 통해 임계구역에 접근하는 프로세스를
제어해야 한다.
3. RaceCondition이 발생하는 지를 테스트하는 방법은 PetriNet이라는 프로그램으로 수행해 볼 수 있다.
추후 공부할 것
1. 메모리와 페이징, 세그먼트의 내용을 숙지한다.