본문 바로가기
IT Auditor Study/운영체제

[Part2-공룡책] 4. 프로세스 동기화 - Operating System(OS)

by latteart 2024. 6. 6.
반응형

Operating System(OS)에 이어서 Part2에는  다음과 같은 순서*로 알아보겠습니다.

*공룡책을 기반

  
[프로세스 관리]
1. 프로세스
2. 스레드와 병행성
3.CPU 스케줄링
[프로세스 동기화]
4. 프로세스동기화
5. 동기화 예제
6. 교착상태
[메모리 관리]
7. 메인 메모리
8. 가상 메모리
[저장장치 관리]
9. 대용량 저장장치 구조
10. 입출력 시스템
[파일시스템]
11. 파일시스템 
12. 파일시스템 구현

 

Operating System(OS) Part2 - 4. 프로세스동기화

 

1. 개요
프로세스 동기화는 여러 프로세스나 스레드가 공유 자원에 동시에 접근하는 것을 조절하는 메커니즘이다. 
만약 두 프로세스가 동시에 어떤 변수의 값을 바꾼다면 프로그래머의 의도와는 다른 결과가 나올 것이다. 이처럼 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 경쟁 상태(race condition)라고 한다.
이는 데이터 일관성과 실행의 예측 가능성을 보장하기 위해 필수적이다. 
동기화는 경쟁 조건과 데이터 불일치 문제를 방지하여 시스템의 안정성을 유지한다.

2. 임계구역 문제(The Critical-Section Problem)
임계구역은 공유 자원에 접근하는 코드 부분으로, 한 번에 하나의 프로세스만 접근할 수 있다. 프로세스가 임계구역에 진입하면 다른 프로세스는 대기해야 한다. 임계구역 문제를 해결하기 위해서는 상호 배제, 진행, 유한 대기 조건을 만족해야 한다.

코드상에서 경쟁 조건이 발생할 수 있는 특정 부분을 critical section이라고 부른다. critical section problem를 해결하기 위해서는 몇가지 조건을 충족해야 한다.

- Mutual exclution (상호 배제): 이미 한 프로세스가 critical section에서 작업중일 때 다른 프로세스는 critical section에 진입해서는 안 된다.
- Progress (진행): critical section에서 작업중인 프로세스가 없다면 다른 프로세스가 critical section에 진입할 수 있어야 한다.
- Bounded waiting (유한 대기): critical section에 진입하려는 프로세스가 무한하게 대기해서는 안 된다.
Non-preemptive kernels로 구현하면 임계 영역 문제가 발생하지 않는다. 하지만 비선점 스케줄링은 반응성이 떨어지기 때문에 슈퍼 컴퓨터가 아니고선 잘 사용하지 않는다.


3. 피터슨의 해결안(Peterson's Solution)
피터슨의 해결안은 두 개의 프로세스가 공유 자원에 동시에 접근하는 경우의 상호 배제 문제를 해결하는 방법 중 하나이다. 이 알고리즘은 특정한 변수를 사용하여 상호 배제를 구현하며, 교착 상태와 같은 문제를 방지하기 위해 주의해야 한다.

4. Mutex Locks
Mutex Locks는 상호 배제 문제를 해결하기 위한 동기화 기법 중 하나이다. Mutex는 락을 얻어 임계구역에 들어가고, 작업을 마치면 락을 해제하여 다른 프로세스가 접근할 수 있게 한다. 이를 통해 임계구역에 대한 안전한 접근을 보장한다.

5.세마포어(Semaphore)
세마포어는 동기화 문제를 해결하기 위한 동기화 기법 중 하나로, 카운팅 세마포어와 이진 세마포어로 나뉜다. 세마포어는 락의 개념을 확장하여 임계구역에 대한 접근을 제어하며, 대기 큐를 관리하여 프로세스의 실행을 조절한다.

6. 모니터(Monitor)
모니터는 동기화 문제를 해결하기 위한 추상화된 데이터 형식이다. 모니터 내부에는 공유 자원에 대한 접근을 관리하는 방법과 조건 변수를 사용하여 프로세스 간의 통신을 지원한다. 모니터를 통해 프로세스가 안전하게 임계구역에 접근할 수 있다.

7. 고전적인 동기화 문제들(Classic Problems of Synchronization)
7.1. 유한 버퍼 문제 (The Bounded-Buffer Problem)

고정된 크기의 버퍼에 여러 프로세스가 동시에 접근할 때 발생하는 문제를 다룬다. 이를 해결하기 위해 세마포어나 모니터를 사용하여 버퍼에 대한 접근을 조절한다.
7.2. Readers-Writers 문제(The Readers-Writers Problem) 

여러 프로세스가 데이터를 읽거나 쓰는 동안 발생하는 문제를 다룬다. 읽는 동안에는 여러 프로세스가 접근할 수 있지만, 쓰는 동안에는 배타적으로 접근해야 한다.
7.3. 식사하는 철학자들 문제 (The Dining-Philosophers Problem)

다섯 명의 철학자가 테이블에 앉아 식사를 하려 할 때 발생하는 교착 상태와 안전한 동기화 방법에 대한 문제를 다룬다.

 

 

애슐리 쉐프메이드 부채살 스테이크 (냉장), 200g, 1개

COUPANG

www.coupang.com

*이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공을 수 있습니다.



8.종합
프로세스 동기화는 공유 자원에 대한 안전한 접근을 보장하고 시스템의 안정성을 유지하기 위해 중요하다. 다양한 동기화 기법과 알고리즘이 존재하며, 문제의 복잡성에 따라 적절한 기법을 선택해야 한다. 동기화 문제를 효과적으로 해결함으로써 시스템의 성능과 신뢰성을 향상시킬 수 있다.

반응형