동기화(Synchronization)
1. 동기화는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다.
2. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길 수 있는 문제 상황이 발생한다.
3. 동기화로 생길 수 있는 이슈가 있고 이를 해결할 수 있는 방법들이 있다. (교착상태, 뮤텍스, 세마포어 등)
4. 동기화가 필요한 배경(병행성 & 병렬성)
- 멀티 프로세서 환경, 시분할 스케줄링은 곧 병행성과 병렬성을 의미한다.
- 현대의 운영체제는 병행성(운영체제에서의 시분할 스케줄링)와 병렬성(다중 코어)을 제공해주고 있다.
- 사용자는 많은 프로그램을 실행시키면서 동시에 프로그램이 동작하는 사용자 경험을 제공받는다.
※ 병행성(Concurrency)
- 동일 시간에 순서 없이 시작하여 실행 및 완료되는 여러 작업을 의미한다.
- 동일한 환경이라면 실제로 모든 작업이 처리되는 시간은 시분할 스케줄링을 하지않았을 때와 동일하다.
- 시분할 스케줄링을 통해서 여러 작업이 진행되는 것처럼 느끼게 해준다.
- 따라서 사용자는 빨라 보이는 응답성으로 인해 좋은 사용자 경험을 제공받는다.
※ 병렬성(Paralleism)
- 여러 작업 또는 하나의 작업을 여러 부분으로 나누어 동시에 실행되는 것을 의미한다.
- n개의 코어로 처리하는 멀티 프로세싱, n개의 스레드로 멀티 스레딩을 의미한다.
- 다중 코어로 여러 개의 작업을 수행할 수 있기에 동시에 처리할 수 있는 처리량 및 시간 효율성을 높여준다.
- 따라서 사용자는 실제로 빠른 응답성으로 인해 좋은 사용자 경험을 제공받는다.
동기화 이슈
1. 현대에는 많은 프로세스가 협력 프로세스이다.
2. 병행성과 병렬성의 환경에서 문제는 한정된 자원에서 발생한다.
3. 많은 프로세스가 돌아가는 상황에서 한정된 자원을 공유해서 사용한다.
4. 이 자원의 사용 영향으로 프로세스가 다른 프로세스에 영향을 주게 되고 공유자원의 일관성이 깨질 수 있다.
5. 여러 프로세스가 공유하는 자원에서 프로세스가 사용하려는 자원의 일관성이 깨지게 되면 해당 자원을 사용하는 모든 프로세스가 신뢰성을 잃게 된다.
6. 신뢰성이 깨지는 순간이 언제인지, 신뢰성이 깨져 생긴 문제들을 추적하는 것이 불가능에 가깝다.
7. 공유 자원과 관련해서 일관성이 깨질 수 있는 환경을 우리는 경쟁 조건이라고 하고 일관성과 관련된 영역을 임계 영역(Critical Section)이라고 한다.
※ 협력 프로세스(Cooperating Process) - 한 프로세스가 다른 프로세스에 영향을 받거나 주는 상황에 있는 프로세스이다.
※ 독립 프로세스(Independent process) - 한 프로세스가 다른 프로세스에 영향을 주지 않는 프로세스이다.
※ 경쟁 조건(Race Condition)
- 경쟁 조건은 2개 이상의 병행(Concurrent) 프로세스가 공유 자원에 동기화 메커니즘없이 접근하는 상황을 의미한다.
- 동기화 메커니즘을 통해 공유 자원을 보호하고, 프로세스 순서를 자체적으로 지킬 수 없다.
- 여러 프로세스가 공유 자원을 다루게 되는데 여기서 공유 자원 영역은 상당히 민감한 영역이다.
- 공유 자원은 곧 데이터를 말하며 공유 자원 영역이 민감한 이유는 데이터의 일관성 문제가 발생할 수 있기 때문이다.
임계 영역(Critical Section)
경쟁 조건에서 공유 자원을 사용하게 되는 영역
1. Entry section : 진입 영역
- 임계 영역에 들어가기 위해서 요청하는 영역이다.
- 해당 영역에서 동기화 객체가 요구(Require)된다.
2. Critical section : 임계 영역
- 하나의 프로세스만 접근(Access)해야 하는 영역이다.
- 데이터가 일관성, 정합성, 무결성 문제가 생기는 것을 방지한다.
3. Exit section : 퇴장 영역
- 임계 영역을 사용했음을 알리는 영역이다.
- 동기화 객체를 해제(Release)한다.
1. 임계 영역이란 2개 이상의 프로세스가 공유 자원에 접근해서 실행 결과가 달라지게 될 수 있는 영역을 의미한다.
2. 운영체제는 해당 영역을 원자적(Atomic)으로 다룬다.
3. 원자적 성질을 얻을 수 있도록 동기화 객체를 사용하는데 Lock, 뮤텍스, 세마포어, 모니터가 있다.
4. 동기화가 이루어지는 실질적인 영역이 임계 영역이다.
5. 운영체제의 목표는 임계 영역을 사용하는 프로세스가 하나임을 보장한다.
6. 임계 영역을 사용하고 싶은 프로세스들을 관리해야 한다.
- 해당 영역을 대기하는 프로세스는 wait()으로 Entry section에서 대기한다.
- 해당 영역을 사용하고 나온 프로세스는 signal()을 통해서 임계 영역 사용이 끝났음을 알린다.
임계 영역 문제를 해결하기 위한 3가지 조건
ps. 이는 곧 프로세스 동기화가 지켜야 하는 조건이다.
상호배제(Mutual Exclusion)
1. 오직 하나의 프로세스만 임계 영역을 사용해야 한다는 조건이다.
2. 한 프로세스가 임계 영역에 들어가면 다른 프로세스는 임계 영역에 들어갈 수 없어야 한다.
3. 해당 조건이 지켜지지 않으면 임계 영역이 경쟁 조건에 빠지게 된다.
한정대기(Bounded Waiting)
1. 특정 프로세스가 무한히 대기해서는 안된다는 것이다.
2. 프로세스들이 임계 영역에 진입할 수 있는 횟수에 한계가 있어야 한다.
3. 특정 프로세스가 기아(Starvation)현상에 빠지는 것을 방지한다.
2024.05.21 - [소프트웨어 공학 용어 정리] - Starvation 정리
유연한 진행(Progress flexibility)
1. 임계 영역이 비어있는 경우, 임계 영역에 들어가기 위해 대기하던 프로세스들만 해당 임계 영역으로 진입할 수 있는 결정에 참여 가능하고 이는 무한정 연기되지 않는다.
2. 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다.
3. 이는 Deadlock(교착상태)이 일어나지 않게 하기위한 것이다.
결론
1. 동기화에 있어서 여러 프로세스가 공유하는 자원의 일관성을 유지해야 한다.
2. 프로세스가 동시에 사용하고자 하는 자원을 관리해줘야 한다.
3. 경쟁 조건에 빠진 프로세스들을 임계 영역을 보호하면서 관리해줘야 한다.
4. 프로세스 동기화에 있어 상호배제, 한정대기, 진행의 융통성을 지켜 임계 영역 문제를 해결해야한다.
'소프트웨어 공학 용어 정리' 카테고리의 다른 글
[SW 용어] Mutex, Semaphore 정리 (0) | 2024.05.28 |
---|---|
[SW 용어] 데이터 무결성, 정합성, 정확성, 완전성, 일관성, 유효성 (0) | 2024.05.27 |
[SW 용어] Starvation 정리 (1) | 2024.05.21 |
[SW 용어] Deadlock 정리 (0) | 2024.05.20 |
[SW 용어] 유저 유스케이스 다이어그램 (0) | 2023.08.23 |
댓글