반응형
- 공유 데이터 (Shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다.
- 일관성 (consistency) 유지를 위해서는 협력 프로세스 (cooperating process)간의 실행 순서 (orderly execution)를 정해주는 메커니즘 필요
Race condition
- 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황
- Memory를 공유하는 CPU가 여럿 있는 경우 Race condition의 가능성이 있음
- 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐
- Race condition을 막기 위해서는 병행적으로 실행되는 프로세스는 동기화(Synchronize)되어야 한다
OS에서 race condition은 언제 발생하는가??
- kernel 수행 중 인터럽트 발생 시
- Process가 Sytsem call을 하여 kernel mode로 수행 중인데 문맥 교환(context switch)가 일어나는 경우
- Multiprocessor에서 shared memory 내의 kernel data
임계구역( The Critical-Section Problem)
- N개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우, 각 프로세스의 code segment에는 공유 데이터에 접근 하는 코드인 Critical Section이 존재한다.
- 하나의 프로세스가 Critical Section에 있을 때 다른 모든 프로세스는 Critical Section에 들어갈 수 없어야 한다.
- 프로세스들은 수행의 동기화(Synchronize)를 위해 몇몇 변수를 공유할 수 있다. -> Synchronization varaibles
임계구역 문제를 해결하기 위해선 3가지 조건이 충족되어야 한다.
- Mutual Exclusion (상호 배제)
- Process Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 Critical section에 들어가면 안ㄷ 된다.
- Progress (진행)
- 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다
- Bounded waiting (한정 대기)
- 프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다
이 포스팅은 이화여대에서 무료로제공하는 반효경님의 운영체제강의를 수강하며 정리한 내용입니다.
필자가 잘 이해하지 못해서 잘못된 내용이 있을 수 있으므로 주의바라며, 발견되면 알려주시면 감사하겠습니다.
http://www.kocw.net/home/search/kemView.do?kemId=1046323
반응형
'CS > 운영체제' 카테고리의 다른 글
운영체제(9) - 고전적인 동기화 문제들 (1) | 2023.10.05 |
---|---|
운영체제(8) -Semaphores ,Monitor (1) | 2023.10.05 |
운영체제(6) - CPU 스케줄링 (0) | 2023.09.22 |
운영체제(5) - 프로세스의 생성과 관련 시스템콜 (1) | 2023.09.22 |
운영체제(4) - 스케줄러와 Thread (0) | 2023.09.22 |