728x90
Process Synchronization
컴퓨터 시스템 내에서 데이터가 접근되는 패턴이 있다.
위의 그림처럼 데이터가 저장되는 공간에서 연산할 데이터만 로드시켜서 CPU에서 연산을 한다. 연산 결과는 다시 저장공간에 저장된다.
- 공유 데이터의 동시 접근이 일어나면 데이터의 불일치 문제가 발생할 수 있다.
- 일관성 유지를 위해서 협력 프로세스 간의 실행 순서를 정해주는 매커니즘이 필요
Race Condition
- 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황
- 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐
- race condition을 막기 위해서 concurrent process는 동기화 되어야 한다.
Race Condition 이 발생하는 상황
1. Kernel Code 수행 중 인터럽트가 발생하는 경우
- 인터럽트 작업을 disable시킨 후, kernel 작업이 다 끝나면 처리한다.
2. Process가 system call 을 하여 kernel mode로 수행중인데, context switch가 일어나는 경우
- 커널 모드에서 수행 중일 때는 CPU를 빼앗지 않는다. 대신 커널모드에서 사용자 모드로 돌아갈 때 CPU를 preempt 한다.
3. Multiprocessor에서 shared memory 내에 kernel data에 여러 CPU가 접근하는 경우
- 한번에 하나의 CPU만이 커널에 들어갈 수 있게 함
- 커널 내부에 있는 각 공유 데이터에 접근할 때마다 lock / unlock 을 하는 방법
Critical Section Problem
- N개의 프로세스가 공유 데이터를 동시에 사용하기 원하는 경우
- 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 critical section이 존재
- 하나의 process가 critical section에 있을 때 다른 모든 processs는 critical section에 들어갈 수 없어야 한다.
728x90
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 7. Process 3 - Thread의 장점 2 (0) | 2023.06.18 |
---|---|
[운영체제] 6. Process (2) - Thread와 Thread의 장점 (0) | 2023.06.18 |
[OS] 운영체제 5.2 CPU Scheduling (0) | 2023.05.28 |
[OS] 운영체제 5.1 Process (0) | 2023.05.22 |
[OS] 운영체제 4. 시스템의 구조와 프로그램의 실행 (0) | 2023.05.21 |