데이터의 접근
Race Condition: 경쟁 상태
- S-box(memory address space)를 공유하는 E-box(CPU process)가 여러 개 있는 경우, race condition의 가능성이 있다.
(1) 커널 내부 데이터를 접근하는 루틴들 간의(운영체제에서의) race condition
▶ kernel mode 수행 중 인터럽트 발생 시
- Solution: kernel mode 수행 시, interrupt disable
▶ Process가 system call을 하여 kernel mode로 수행중인데, context switch가 일어나는 경우
- user mode: 두 프로세스의 address space 간의 data sharing (x)
- kernel mode: kernel address space의 data를 공유하게 된다. --> kernel mode 중간에 CPU를 preempt해가면, race condition 발생한다.
- Solution: kernel mode에서 수행중일 때는 CPU를 preempt하지 않는다. kernel mode에서 user mode로 돌아갈 때 preempt한다. (비록 CPU 할당 시간이 다 끝났지만, 이를 연장해주는 개념)
▶ Multiprocessor에서 shared memory 내의 kernel data
: Multiprocessor(CPU가 여러 개)일 때, 두 CPU가 모두 system call을 하여 운영체제의 코드를 수행하면, race condition이 발생할 수 있다. 이는 CPU가 여러 개이기 때문에, 하나의 interrupt만 막는다고 해결되지 않는다.
- Solution1: kernel에 한번에 하나의 CPU만이 들어갈 수 있게 하는 방법(kernel에 대한 lock/unlock); 비효율적
- Solution 2: kernel 내부에 있는 각 공유데이터에 접근할 때마다 그 공유데이터에 대한 lock/unlock을 하는 방법
(2) 공유메모리를 사용하는 프로세스들 간의 race condition
- Problem: 공유데이터(shared memory)의 동시 접근은 데이터 불일치 문제(inconsistency)를 발생시킬 수 있다.
- Solution: 일관성(consistency) 유지를 위해서는 협력 프로세스(cooperating process)간의 실행 순서를 정해주는 메커니즘이 필요하다
- race condition을 막기 위해서는, concurrent process 동기화(synchronization)가 필요하다.
▶ The Critical-Section Problem
- 각 프로세스의 code segment에는 critical section(공유데이터에 접근하는 코드)이 존재한다.
- Problem: 하나의 프로세스가 critical section 코드를 수행중일 때, 다른 프로세스가 critical section에 들어오면, 데이터 불일치 문제(inconstency)가 발생한다.
- Solution: 하나의 프로세스가 critical section에 있을 때, 다른 모드는 프로세스는 critical section에 들어갈 수 없어야 한다.
'운영체제' 카테고리의 다른 글
[운영체제] KOCW 6.2 - Ch6: Process Synchronization (0) | 2023.06.09 |
---|---|
[운영체제] KOCW 6.1 - Ch6: Process Synchronization (0) | 2023.06.09 |
[운영체제] KOCW 5.3 - Ch6: Process Synchronization (0) | 2023.06.09 |
[운영체제] Ch1. Introduction to Operating System (0) | 2023.04.30 |
[운영체제] Ch0. 운영체제 특론 (0) | 2023.04.30 |