프로세스 동기화
- 프로세스 동기화는 두 개 이상의 프로세스가 공유된 데이터에 동시 접근하면 데이터 중복이 발생할 수 있기 때문에
데이터 일관성을 유지하기 위한 매커니즘이다.
Race Condition(경쟁 상태)
- 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이
달라질 수 있는 상황을 말한다. - 대표적으로 세 경우에서 경쟁 상태가 발생할 수 있다.
1. 커널 모드로 인터럽트가 발생하는 경우
- 커널 모드의 수행이 끝나지 전에는 인터럽트를 받지 않도록 하는 방법으로 문제를 해결할 수있다.
2. 프로세스가 시스템 콜을 호출해서 커널 모드로 수행 중인데 문맥 교환이 발생하는 경우
- 두 프로세스의 주소 공간에선느 데이터를 공유하지 않지만, 시스템 콜을 수행하는 동안에는 둘 다 커널 주소 공간에
데이터를 접근한다. 커널 주소 공간에서 작업을 수행하는 도중에 CPU를 빼앗으면 경쟁 상태가 발생한다. - 커널 모드를 수행 중일 땐 CPU가 선점되지 않도록 하고, 커널 모드에서 유저 모드로 돌아갈 때 선점 되도록 함으로써
해결할 수 있다.
3. 멀티 프로세서에서 공유 메모리 내의 커널 데이터에 접근하는 경우
- 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대해서만 Lock / Unlock을 하는 방식으로 해결
가능하다.
Critical Section(임계 구역)
- 코드 상에서 경쟁 상태가 발생할 수 있는 특정 부분을 말한다. 즉, 공유 데이터를 접근하는 코드 부분
- 임계 구역으로 인해 발생하는 문제들을 해결하기 위해서는 다음 조건들을 만족해야 한다.
- Mutual Exclusion(상호 배제)
- 이미 한 프로세스가 임계 구역에서 작업 중이면 다른 모든 프로세스는 임계 구역에 진입하면 안된다.
- Progress(진행)
- 임계 구역에서 작업중인 프로세스가 없다면, 임계 구역에 진입하고자 하는 프로세스가 존쟁하는 경우
진입할 수 있어야 한다.
- 임계 구역에서 작업중인 프로세스가 없다면, 임계 구역에 진입하고자 하는 프로세스가 존쟁하는 경우
- Bounded Waiting(한정 대기)
- 프로세스가 임계 구역에 들어가기 위해 요청한 후 부터 그 요청이 허용될 때까지 다른 프로세스들이
임계 구역에 들어가는 횟수가 제한이 있어야 한다.
즉, 임계 구역에 진입하려는 프로세스가 무한정 기다려서는 안된다.
- 프로세스가 임계 구역에 들어가기 위해 요청한 후 부터 그 요청이 허용될 때까지 다른 프로세스들이
- Mutual Exclusion(상호 배제)
Semaphores
- 세마포어(Semaphore)는 Busy Waiting이 필요 없는 동기화 도구이며, 여러 프로세스나 스레드가 임계 구역에
진입할 수 있는 Signaling 매커니즘이다.
- S는 사용 가능한 자원의 개수를 의미하며 프로세스의 자원이 모두 사용 중이면 wait하는 방식이다.
- 자원의 여유가 생가면 S--를 통해 자원을 획득하고, 모두 사용했다면 S++를 통해 반납한다.
Monitor
- Monitor(모니터)는 동시 수행 중인 프로세스 사이에서 추상 데이터의 안전한 공유를 보장하기 위한 High-Level 동기화
구조이다. - 공유 데이터에 접근하기 위해서는 모니터의 내부 절차를 통해서만 접근할 수 있도록 한다.
- 내부에 프로세스가 들어가 있어서 진입을 하지 못한 프로세스들은 모니터 큐에서 기다린다.
- 프로세스가 모니터 내에서 기다릴 수 있게 하도록 조건 변수가 사용된다.
- 조건 변수는 오직 wait과 signal 연산만 사용될 수 있다.
'CS(Computer Science)' 카테고리의 다른 글
[데이터베이스] 데이터베이스 설계 단계 (0) | 2023.07.16 |
---|---|
[데이터베이스] 이상 현상(Anomolay) (0) | 2023.07.09 |
CS Study : 11주차 - Synchronous(동기) / Asynchronous(비동기) (0) | 2023.01.26 |
CS Study : 10주차 - 스케줄러(Scheduler) / CPU 스케줄러 (0) | 2023.01.19 |
CS Study : 9주차 - 멀티 프로세스와 멀티 스레드 (0) | 2023.01.13 |