1. 동기화란?
2. 동기화의 개념과, 동기화를 하는 이유
3. 동기화와 관련된 개념
4. 상호배제와 기법
00 동기화란?
동기화(Synchronization) 은 쉽게 말해 시스템 프로세스 간 정보를 공유하는 행위라 정리할 수 있다. (프로세스의 대화)
01 동기화, 하는 이유
우리가 평소 이용하는 컴퓨터는 '다중 프로그래밍 시스템' => 여러 프로세스가 동시에 돌아간다
- 프로세스는? 자원을 제어해 작업을 수행하여 목적을 달성한다
- 그렇다면 여러 프로세스가 하나의 자원을 동시에 쓰려고 한다면? 문제가 발생할 수 있다
ex. race condition : 실행 순서에 따라 결과가 달라지는 것
특히 프로세스는 기본적으로 '비동기적' 이면서 '병행적' 이다
- 비동기적(Asynchronous) : 다른 프로세스에 대해 모름
- 병행적(Concurrent) : 프로세스들이 동시에 동작함
따라서 이러한 특징을 가진 프로세스들이 같은 자원을 공유하고, 이 자원에 동시에 접근해야 하는 상황에서 문제가 생기지 않도록 동기화 작업이 필요한 것이다.
02 관련 개념들
02-1 공유 데이터 : Shared data, Critical data. 즉 여러 프로세스들이 공유하는 자원(데이터)
02-2 임계 영역 : Critical Section. 공유 데이터에 접근하는 코드의 영역
02-3 상호 배제 : mutual exclusion. 둘 이상의 프로세스가 임계 영역에 동시에 접근하는 것을 방지하는 것. 동기화를 위해서는 상호배제가 필요하다. (= 한 프로세스가 임계영역에 진입했을 때 다른 프로세스가 임계영역으로 진입하지 못하도록 방지해야함)
02-4 기계어 명령 : Machine Instruction. 실제 프로세스가 실행하는 가장 작은 단위(atomic) 명령어로 원자성을 가지며 분리 불가능하다는 특성이 있다. 따라서 하나의 기계어 수행 중에는 다른 명령의 인터럽트를 받지 않는다. 즉 preemption이 중간에 발생할 수 없는 명령.
03 상호배제
핵심 : 임계영역에서 작업중인 프로세스가 있으면, 다른 프로세스는 임계영역에 접근하지 못하게 한다
참고) Primitives : 어떤 목적을 달성하기 위한 가장 기본이 되는 연산
03-1 Mutual exclusion primitives
상호 배제를 구현하기 위해 최소한 꼭 필요한 정보는 다음 두 가지다
(1) enter CS() primitive : 프로세스가 CS에 진입했는지 나타내는 정보
(2) exit CS() primitive : 프로세스가 CS를 벗어났다는 것을 알리는 정보
03-2 Requirements for Mutual exclusion primitives
위의 두 정보를 통해 상호배제를 구현할 때 최소한 3가지 조건을 만족해야 한다
- 상호배제 조건
- 진행 조건 : 만약 CS에 어떤 프로세스도 들어가있지 않은 상태라면 계속 진행시켜라(=진입 시켜라)
- 한정 대기시간 조건 : 대기시간이 무한정으로 길어져서는 안된다
이러한 조건을 만족하는 상호배제 구현 기법에는 다양한 것들이 있다. 예를 들어 turn, flag 등을 활용하는 방법이 있는데 다음에 계속 살펴볼 것...
** KOREATECH 무료 OS강의(클릭) 학습 후 나름대로 이해한 뒤 정리한 내용입니다. **
'CS > Operating System' 카테고리의 다른 글
[ OS 기초 ] 07. Deadlock (0) | 2021.07.06 |
---|---|
[ OS 기초 ] 06. 프로세스 동기화, 상호배제 (2) - 상호배제 기법 (0) | 2021.07.02 |
[ OS 기초 ] 05. 스케줄링 알고리즘 (0) | 2021.06.29 |
[ OS 기초 ] 04. 프로세스 스케줄링 (0) | 2021.06.24 |
[ OS 기초 ] 03. 스레드 관리 (0) | 2021.06.23 |
댓글