1. 동기화(Synchronization)란?
- 다중 프로그래밍(multi-programming) 시스템에서는 다수의 프로세스(스레드 포함)가 동시에 실행
- 동시에 실행되는 프로세스간에 공유하는 자원이나 데이터가 존재할 경우 문제가 발생할 수 있음
- 프로세스가 서로 비동기적이라고 함은 프로세스가 서로의 존재를 모르고 독립적으로 동작중임을 의미한다.
- 프로세스의 실행 순서를 맞추거나 공유 자원에 대한 접근 정책을 설정여 문제를 해결하는 것을 동기화라고 한다.
2. 상호 배제(Mutual Exclusion)
- 코드에서 여러 프로세스가 공유하는 데이터에 접근하는 부분을 임계 영역(Critical Section)라고 한다.
- 임계 영역에 여러 프로세스가 동시에 들어가지 않도록 하는 것을 상호 배제(Mutual Exclusion)라고 한다.
- 기본 연산
- Lock
- 임계영역에 진입하기 위한 연산
- 임계영역에 진입한 다른 프로세스가 존재하지 않을 경우 진입
- 진입하는 즉시 다른 프로세스가 들어오지 못하도록 함
- Unlock
- 임계영역에서의 작업을 마치고 빠져나오는 연산
- 임계영역에 다른 프로세스가 들어올 수 있도록 비어있음을 알림
- Lock
- 상호배제 구현의 조건
- 상호 배제(Mutual Exclusion)
- 말그대로 임계영역에 진입한 프로세스가 있다면 다른 프로세스는 진입할 수 없도록 해야함
- 말그대로 임계영역에 진입한 프로세스가 있다면 다른 프로세스는 진입할 수 없도록 해야함
- 진행(Progress)
- 임계영역에 진입한 프로세스가 없는 상태이고 하나 이상의 프로세스가 임계영역에 진입하고자
하는 상황일 경우 어느 프로세스를 임계영역에 진입시킬지 정해진 시간 내에 선택해야함
- 임계영역에 진입한 프로세스가 없는 상태이고 하나 이상의 프로세스가 임계영역에 진입하고자
- 한정된 대기(Bounded Waiting)
- 프로세스의 임계영역으로의 진입까지의 대기시간은 유한해야한다.
- 프로세스의 임계영역으로의 진입까지의 대기시간은 유한해야한다.
- 상호 배제(Mutual Exclusion)
- 상호배제 구현의 방식
- 소프트웨어적 해결책(SW Solution)
- 개발자가 소프트웨어 수준에서 직접 상호배제를 보장하는 코드를 작성하는 방식
- Dekker's Algorithm, Peterson's Algorithm, Dijkstra's Algorithm 등이 있다.
- 하드웨어적 해결책(HW Solution)
- 하드웨어 수준에서 자체적으로 상호배제를 보장하도록 설계하는 방식
- TestAndSet(TAS) 구조 등이 있다.
- OS에서 지원하는 소프트웨어적 해결책(OS Supported SW Solution)
- 운영체제가 자체적으로 지원하는 소프트웨어적 해결책
- 스핀 락(Spin Lock), 뮤텍스(Mutex), 세마포어(Semaphore) 등이 있다.
- 언어 수준에서의 해결책(Language-Level Solution)
- 프로그래밍 언어에서 자체적으로 지원하는 소프트웨어적 해결책
- 자바의 모니터(Monior)가 대표적이다.
- 소프트웨어적 해결책(SW Solution)
'CS > 운영체제' 카테고리의 다른 글
#6 동기화(Synchronization) 3 - HW Solution (0) | 2021.12.24 |
---|---|
#5 동기화(Synchronization) 2 - SW Solution (0) | 2021.12.23 |
#3 프로세스 스케줄링(Scheduling) (0) | 2021.12.21 |
#2 스레드(Thread) (0) | 2021.12.20 |
#1 프로세스(Process) (0) | 2021.12.14 |