병행 프로세스와 상호배제

2023. 11. 11. 15:48스터디/OS 스터디

728x90

병행 프로세스란?

운영체제가 프로세스를 빠르게 전환해서 프로세서 시간을 나눠서(시분할해서) 마치 프로세스 여러 개를 동시에 실행하는 것 처럼 보이게 하는 것을 말한다.

 

병행 프로세스는 독립 프로세스와 협력 프로세스로 구분한다.

독립 프로세스는 단일 처리 시스템에서 수행하는 방법으로, 다른 프로세스에 영향을 주고받지 않으면서(데이터를 주고받지 않으면서) 독립적으로 실행하는 것을 말한다. 

 

협력 프로세스는 다른 프로세스에 영향을 주고받으며, 즉 상호작용하며 특정 기능을 수행하는 비동기적 프로세스이다.

당연히 서로 자원을 공유하기 때문에 충돌이 발생한다. 근데 또 이런 자원들은 프로세스에 영향을 받음 안되기 때문에 다음 세가지 형태로 상호작용한다.

1. 프로세스는 서로 인식하지 못하는 경쟁 관계를 유지한다. OS가 자원 경쟁을 고려하여 접근을 조절한다.

2. 프로세스는 입출력 버스를 비롯한 개체를 공유하는 단계에서 간접적으로 서로 관계를 의존한다.

3. 프로세스는 서로 인식하고 프로세스끼리 통신할 수 있는 함수가 있다.

 

특히 경쟁 관계에 있는 프로세스들은 서로 정보를 교환하지 않지만, 한 프로세스의 수행이 나머지 프로세스에 영향을 미칠 수 있기 때문에

상호배제가 필요하다.

 

병행 프로세스의 해결 과제

 

1. 공유 자원을 상호 배타적으로 사용해야 한다.

2. 병행 프로세스 간에는 협력이나 동기화가 되어야한다.

3. 두 프로세스 사이에서는 데이터를 교환할 수 있도록 통신되어야 한다.

4. 항상 동일한 실행 결과를 보장하도록 결정성을 확보해야 한다.

5. 병렬 처리 능력을 극대화 해야 한다.

6. 실행 검증 문제를 해결해야 한다.

7. 상호배제, 즉 어떤 프로세스가 실행중일 때 다른 프로세스가 해당 작업을 수행할 수 없도록 보장해야 한다.

 

상호배제

상호배제는 병행 프로세스에서 프로세스 하나가 공유 자원을 사용할 때 다른 프로세스들이 동일한 일을 할 수 없도록 하는 방법이다.

즉 공유 자원 데이터를 사용중이면, 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것을 말한다.

공유 자원을 동시에 사용하지 못하게 실행을 제어하는 방법을 동기화라고 한다.

동기화로 상호배제를 보장할 수는 있으나, 교착 상태와 기아 상태를 유발할 수 있다.

 

두 프로세스가 동시에 상용 할 수 없는 공유 자원을 임계 자원, 임계 자원에 접근하고 실행하는 프로그램 코드를 임계영역이라고 한다.

 

상호 배제는 프로세스가 수정할 수 있는 공유 데이터에 접근할 때만 적용하고, 단순 읽기 능을 할 떄는 동시에 수행할 수 있도록 허용해야 한다.

따라서 프로세스 간 충돌이 나지 않으려면 다음 네 가지 조건을 만족해야 한다.

1. 두 프로세스는 동시에 공유 자원에 진입할 수 없다.

2. 프로세스의 속도나 프로세서 수에 영향을 받지 않는다.

3. 공유 자원을 사용하는 프로세스만 다른 프로세스를 차단한 수 있다.

4. 프로세스가 공유 자원을 사용하려고 너무 오래 대기하면 안 된다.

 

임계 영역

임계 영역에는 다수 프로세스가 접근할 수 있으나, 한 순간에는 한 프로세스만 사용해야 한다.

즉 임계 영역은 최대한 작업을 빠르게 수행하고, 특정 프로세스가 너무 오래 머물지 않도록 관리해야 한다.

임계 영역에 다른 프로세스가 있으면 이 프로세스는 다른 프로세스가 임계 영역에 들어가지 못하게 진입 상호배제를 수행해야 한다.

흔히 열쇠와 자물쇠로 관계를 설명한다.

열쇠는 단 한 개만 존재한다.

한 프로세스가 열쇠를 가지고 자물쇠를 열어 방에 들어간 후,

다시 잠궈서 다른 프로세스가 못들어가도록 한다.

 

즉, 임계 영역을 이용한 상호 배제는 어떤 프로세스가 열쇠를 사용할 수 있는지 확인하는 동작과,

다른 프로세스의 사용을 금지하는 동작으로 분류한다.

 

정리하자면, 임계 영역은 다음 세 가지 조건을 만족해야 한다.

1. 상호 배제 : 한 프로세스가 임계 영역에서 작업중이면, 다른 프로세스는 진입 불가

2. 진행 : 여러 프로세스가 동시에 들어가려 할 때 어떤 프로세스가 들어갈지 적절히 결정

3. 한정 대기 : 다른 프로세스가 무한정 대기하는 상황을 방지하기 위해 타이머 설정

 

경쟁 상태 : 접근 순서에 따라 실행 결과가 달라지는 상황에 놓인 프로세스들

 

상호 배제 방법들

여러 가지가 있지만 그 중 세마포어와 모니터에 대해 알아보자

 

 

  세마포어         모니터
추상화 수준 낮다. 정수 변수로 구성         높다. 프로시저(메서드)를 캡슐화
접근 제어 카운터를 통해 제어. 값을 허용하는 것 만큼 동시 진행 가능         상호 배제를 자동으로 제공. 모니터에 들어가면 호출 스레드 이외 다른 스레드들은 대기
구현 방식 카운터를 사용하여 동작. Wait 연산과 Signal 연산을 통해 구현         내부에서 상호배제 구현
복잡성 개발자가 직접 상호배제를 관리해야 함         더 간단한 인터페이스 제공

 

세마포어 실행 과정

세마포어의 count에 따라 동시 자원 진입 개수를 조절할 수 있다

 

모니터의 구조

 

참조 : 한빛아카데미 - 그림으로 배우는 구조와 원리 운영체제 - 구현회 저

728x90

'스터디 > OS 스터디' 카테고리의 다른 글

프로세스 스케줄링이란  (0) 2023.11.18
교착 상태와 기아 상태  (0) 2023.11.11
스레드  (0) 2023.11.11
프로세스 관리  (0) 2023.11.11
프로세스 상태 변화와 상태 정보  (0) 2023.11.11