- Race Condition
- 보통 데이터를 읽으면 -> 연산 처리를 마치고 -> 다시 데이터를 저장
- 그런데 연산을 처리하는 동안 그 값을 다른 누군가 가져가서 다른 연산 -> 문제가 발생할 수 있음
- 이렇게 데이터에 동시에 접근하여 문제를 발생시킬 수 있는 상황을 race condition이라고 함
- Race condition이 발생하는 환경
- Race condition이 발생할 것 같지 않음
- CPU가 1개면 메모리 접근을 혼자서 함
- 프로세스는 자신의 메모리 영역만 접근
- CPU가 여러 개인 시스템
- 메모리에서 한 CPU가 데이터를 가져가서 처리중
- 다른 CPU가 그 데이터(메모리)에 접근하여 다른 연산 처리
- 공유 메모리 (커널 데이터)
- 한 프로세스가 시스템 콜을 호출하여 커널모드에서 동작
- 커널모드에서 동작한다는 것은 커널 데이터에 접근한다는 것
- CPU가 다른 프로세스에게 점유되어 또 시스템 콜로 커널 데이터에 접근
- race condition -> 대부분 커널모드에서 발생한다고 함
- Race condition이 발생할 것 같지 않음
운영체제에서 race condition이 발생하는 상황
- 커널모드에서 수행 중 인터럽트 발생
- 해결 방법 : 인터럽트 disable -> 수행 중인 작업 완료 -> 인터럽트 enable
- 커널모드 수행 중 Context switching 후 커널모드 진입
- 해결 방법 : 할당 시간이 끝났더라도, 커널모드에서 유저모드로 빠져나올 때 CPU를 빼앗음
- CPU가 여러 개 있을 때 (위 방법들로 해결되지 않음)
- 해결 방법2 : 한 CPU가 접근한 메모리에 lock
- 해결 방법1 : 커널모드로 하나의 CPU만 접근 가능 (커널 자체에 lock)
- Process Synchronization 문제
- 공유 데이터에 동시 접근하여 데이터 불일치 문제가 발생할 수 있음
- 사용자 프로세스 P1이 수행중 timer interrupt로 context switching이 일어나 P2가 수행되는 것은 문제가 아님
- 1) P1과 P2가 공유 메모리를 사용하거나
- 2) P1이 커널모드에서 수행중 P2가 커널모드를 수행할 때
- 문제가 발생할 수 있음
- Critical Section 문제
- Critical section : 공유 데이터를 접근하는 코드
- P1이 critical section을 수행하는 도중에 P2가 실행할 수 없게 해야함
'CS > 운영체제' 카테고리의 다른 글
[운영체제] KOCW 반효경 교수님 강의 - 11. CPU Scheduling 2 (0) | 2022.04.12 |
---|---|
[운영체제] KOCW 반효경 교수님 강의 - 10. CPU Scheduling 1 (0) | 2022.04.06 |
[운영체제] KOCW 반효경 교수님 강의 - 9. Process Management 2 (0) | 2022.03.30 |
[운영체제] KOCW 반효경 교수님 강의 - 8. Process Management 1 (0) | 2022.03.30 |
[운영체제] KOCW 반효경 교수님 강의 - 7. Process 3 (0) | 2022.03.30 |