프로세스는 기본적으로 비동기적이면서 병행적이다. 이는 여러 프로세스가 동시에 실행되며, 작업 순서를 알 수 없다는 의미다. 때문에 여러 프로세스가 하나의 자원을 동시에 사용한다면 실행 순서에 따라 결과가 달라 질 수 있다.
*Race Condition(경쟁 상태) - 여러 프로세스가 공유 데이터에 동시에 접근하여 기대한 실행 결과가 달리지는 상황

상호 배제(Mutual Exclusion)는 어떤 공유 자원에 대하여 한 번에 하나의 프로세스에 접근만 허용하는 상태이다.
임계 영역(Critical Sectipn)은 동시에 하나의 프로세스만이 접근할 수 있는 코드 영역으로 다수의 프로세스가 하나의 공유 자원에 접근하는 경우, 상호 배제를 보장하기 위해서 임계 영역을 구현하여 공유 자원의 접근을 제어한다. 이를 프로세스의 상호 배제를 통한 동기화라고 한다. (임계 영역은 일반적으로 상호 배제 알고리즘을 통해 구현된다.)
병행성(Concurrent) & 병렬성(Parallel)
병행성(Concurrent)과 병렬성(Parallel)은 동일한 시간동안 여러 프로세스(스레드)를 동시에 실행이라는 의미를 담고 있다. 하지만 둘은 전혀 다른 개념이다.
- 병행성
하나의 프로세서(CPU)가 빠르게 여러 프로세스(스레드)를 번갈아가며 처리해 마치 동시에 실행되는 것처럼 보이게 하는 것이다. 싱글 코어 프로세서에서도 사용이 가능하다. - 병렬성
실제로 다중의 프로세서(CPU)가 여러 프로세스(스레드)를 동시에 처리하는 것이다. 듀얼 코어, 쿼드 코어 등 이런 명칭이 붙는 멀티코어 프로세서에서 사용할 수 있다.
즉, 병행성은 논리적으로 프로세스(스레드)를 동시에 처리하는 방법이고, 병렬성은 물리적으로 프로세스(스레드)를 동시에 처리하는 방법이다.
동기(Syschronous) & 비동기(Asynchronous)
- 동기(Synchronization)
요청한 작업에 대하여 완료 여부를 따져 순차적으로 처리하는 것 - 비동기 (Asynchronization)
요청한 작업에 대하여 완료 여부를 따지지 않고 처리하는 것
즉, 동기(Synchronization)는 요청한 작업에 대해 순서가 지켜지는 것, 비동기(Asynchronization)는 순서가 지켜지지 않을 수 있다는 것이다. (단, 비동기의 경우 무작위의 순서 중 원하는 순서로 실행 될 경우가 존재한다.)
만약 A, B, C라는 3개의 작업이 주어졌을 때 동기 방식은 A - B - C 의 순서로 실행되고,
비동기 방식은 A - B - C / A - C - B / C - A - B / ... 다음과 같이 무작위 순서로 실행되는 것이다.
작업 요청 시 응답 순서를 알 수 있다면 '동기' 알 수 없다면 '비동기'이다.
상호 배제 알고리즘 (수정 필요)
프로세스의 동기화는 아래 2가지 형태로 구분할 수 있다.
1) 실행 순서의 동기화 : 프로세스(스레드)의 실행 순서(= 메모리 접근 순서)를 정의하고, 반드시 따르도록 한다.
2) 메모리 접근의 동기화 : 순서를 고려하지 않고, 공유 자원에 하나의 프로세스의 접근 만을 허용한다.
또한 운영체제의 커널 자원 사용 유무에 따라 아래 2가지 종류로 구분된다.
1) 유저 모드 동기화 : 동기화 과정에서 운영체제 커널의 자원을 이용하지 않는 동기화 기법으로
커널 모드로 전환이 이루어 지지 않아 성능상의 이점을 얻을 수 있지만
커널 모드를 사용하지 않아 기능이 제한된다.
2) 커널 모드 동기화 : 동기화 과정에서 운영체제 커널의 자원을 이용하는 동기화 기법으로
커널 모드로 전환 시 성능상의 저하는 있지만
유저 모드에서 제공하지 못하는 기능을 사용할 수 있다.
동기화 객체
1) Critical Section : 메모리 접근의 동기화 / 유저 모드 동기화
2) Mutex : 메모리 접근의 동기화 / 커널 모드 동기화
3) Semaphore : 메모리 접근의 동기화 / 커널 모드 공기화
4) Event : 실행 순서의 동기화 / 커널 모드 동기화
'OS' 카테고리의 다른 글
| [OS] 프로세스 스케줄링(Process Scheduling) (0) | 2024.07.29 |
|---|---|
| [OS] 프로세스 (Process) (0) | 2024.07.26 |
| [OS] 메모리 관리 (0) | 2024.01.13 |
| [OS] 3. 프로세스 (Process) (0) | 2024.01.13 |
| [OS] 컴퓨터 시스템의 동작 (0) | 2024.01.13 |