-
5-2. Process Synchronization 1OS/운영체제 강의정리 2021. 12. 30. 19:55
데이터의 접근

Race Condition
race condition이란 두 개 이상의 프로세스가, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다.
storage-box를 공유하는 execution-box가 여럿 있는 경우 경쟁상태 의 가능성이 있음
만약, CPU가 여러개가 있다면, 메모리를 공유하고 있다면, 하나의 CPU가 A라는 데이터를 읽어가는 동안에 또다른 CPU가 A라는 데이터를 읽어가면, Race-condition의 문제가 생길 수 있음
프로세스는 자기 자신만의 주소공간을 접근할 수 있지만, 공유 메모리를 사용할 수 있는 방법이 있는데 이런 상황에서도 문제가 생길 수 있음
운영체제 커널과 관련해서 생기는 문제가 가장 큰 문제임
프로세스들이 본인이 직접 실행할 수 없는경우 운영체제한테 요청해야하는 경우에는 시스템콜을 하는데, 커널 내부 데이터를 접근하는 루틴들 간에 문제 (예를들어 커널모드 수행 중 인터럽트로 커널모드 다른 루틴 수행시)
OS에서 Race Condition은 언제 발생하는가?
1. Kermel 수행 중 인터럽트 발생 시

2. Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우

3. Multiprocessor에서 shared memory 내의 kernel data

Process Synchronization 문제
- 공유 데이터(shared data)와 동시 접근 (concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다.
- 일관성(consistency) 유지를 위해서는 협력 프로세스(cooperating process)간의 실행 순서(orderly execution)를 정해주는 메커니즘 필요 (하나가 읽어서 처리하는 동안에는 다른 프로세스는 접근을 못하게 막는 lock 과 같은!!)
- Race condition
- 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황
- 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐
- race condition을 막기위해서는 concurrent process는 동기화(synchronize)되어야 한다.
The Critical-Section Problem (임계구역)
critical-section : 공유데이터를 접근하는 코드를 말함
- n개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우
- 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 critical section이 존재
- Problem
- 하나의 프로세스가 critical section에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다.

'OS > 운영체제 강의정리' 카테고리의 다른 글
6-2. Process Synchronization 2 (0) 2021.12.30 6-1. Process Synchronization 1 (0) 2021.12.30 5-2. CPU Scheduling 2 (0) 2021.12.30 5-1. CPU Scheduling 1 (0) 2021.12.30 4-1~2. Process Management 1,2 (0) 2021.12.30