데이터의 접근
컴퓨터 시스템 안에서 데이터가 접근되는 패턴(1-2-3-4)
Race Condition(경쟁상태)
- 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서로 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. Race의 뜻 그대로, 간단히 말하면 경쟁하는 상태, 즉 두 개의 프로세스(스레드)가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다.
- 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라진다.
- 프로세스는 일반적인 경우, 자기 주소 공간만 접근하기 때문에 Race Condition이 발생할 일이 없음.
OS에서 발생하는 Race Condition
- Kernel 수행 중 인터럽트 발생 시
*해결 방법: 커널모드 running 중 interrupt가 들어오면 disable 시키고 3단계(Store)까지 다 끝났을 때 Enable 시켜 Interrupt처리 루틴으로 넘김
- Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우
*해결 방법: 커널 모드에서 수행 중일 때는 CPU를 preempt하지 않고, 커널 모드에서 사용자 모드로 돌아갈 때 preempt →할당 시간에 편차가 생길 수는 있으나 큰 문제는 아님.
- Multiprocessor에서 shared memory 내의 kernel data
*멀티 프로세서 환경에서의 경우 interrupt enable/disable로 해결되지 않음
**해결 방법 :
- 한 번에 하나의 CPU만이 커널에 접근할 수 있게 하는 방법(커널 전체에 lock → 비효율적)
- 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock/unlock을 하는 방법
Process Synchronization 문제
- 공유 데이터의 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있다.
- 일관성 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요
- Race Condition을 막기 위해 concurrent process는 동기화되어야 함.
The Critical-Section Problem
- n개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우
- 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 cirtical section이 존재
- 해결방법
- 하나의 프로세스가 critical section(공유데이터를 접근하는 코드)에 있을 때 CPU가 넘어가더라도 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다.
출처
KOCW : 이화여대 반효경 교수님 <운영체제, 2014>
'Computer Science > Operating System(OS)' 카테고리의 다른 글
Process Synchronization(3)-프로세스 동기화 (0) | 2022.03.16 |
---|---|
Process Synchronization(2)-프로세스 동기화 (0) | 2022.03.16 |
CPU Scheduling-CPU스케줄링 (0) | 2022.03.10 |
Process Management-프로세스 관리 (0) | 2022.03.08 |
Process(2)-프로세스 (0) | 2022.03.03 |