CS/OS

[운영체제] 프로세스 간 관계

IT록흐 2021. 10. 12. 11:04
반응형

프로세스간 관계는 3가지가 있다. 

 

1. 경쟁관계

 

독립적인 프로세스는 다른 프로세스를 인식하지 못하면 경쟁(competition)에 놓인다. 주로 '타이밍'에 영향을 받는다. 디스크, 파일, 프린터를 동시에 사용하려는 경쟁이 발생하므로 OS는 이를 제어해야한다.

 

- 상호배제

 

두 개의 프로세스가 동시에 접근할 수 없는 자원을 임계자원(critical resource)라 한다. 임계자원이 존재하는 코드를 임계영역(critical section)이라 한다. 상호배제란 한 프로세스만이 임계영역에 들어갈 수 있음을 의미한다. 

 

상호배제가 보장되지 않으면 여러 프로세스가 자원에 동시에 접근하게 된다. 그러므로 OS는 상호배제를 보장해주어야 한다. 그러나 상호배제 방식은 상황에 따라 다르며 OS가 모든 상호배제 요구사항을 보장할 수 없다. 그러므로 상호배제는 응용 프로그램이 자체적으로 자원접근을 막는 매커니즘을 갖고 있어야한다. 

 

/ 프로세스 1 /

void P1
// 프로세스는 자체적인 상호배제 매커니즘을 가져야한다. 
{
	while( true ) {
    	entercritical ( Ra ) ; // 임계 영역 접근 메소드
        // 임계영역
    	exitcritical ( Ra ) ;  // 임계 영역 탈출 메소드
     }
}

 

 

이런 상호배제의 보장은 교착상태기아문제를 발생시킨다. 

 

교착상태(deadlock)
기아상태(starving)

 

2. 공유를 통한 협력 (Cooperation)

 

다른 프로세스의 ID를 모르지만 공통된 자원을 공유하고 있는 관계이다. 공통된 자원을 공유하다보니 한 프로세스의 결과가 다른 프로세스의 결과에 영향을 준다. 

 

공유를 통한 협력 관계에서도 데이터를 공유하고 있기 때문에 상호배제가 필요하다. 그리고 이에 따라 교착상태와 기아상태도 발생된다. 여기에 데이터 일관성 유지라는 조건도 포함된다. 상호배제가 지켜지더라도 일관성은 깨질 수 있다.

 

공유 데이터 : a, b

조건 : a와 b는 동일한 값을 가진다. 

 

프로세스A 

A-1) a = a + 1

A-2) b = b + 1

 

프로세스B

B-1) a = 2*a

B-2) b = 2*b

 

a와 b의 초기값이 동일하면 프로세스A와 프로세스B의 실행결과도 a와 b가 동일하게 나올 것이다. 

 

그러나 만약 상호배제가 지켜져서 하나의 한 프로세스만 접근하더라도 A-1)B-1)A-2)B-2) 와 같이 번갈아 가며 프로세스가 수행된다면 a,b는 동일한 값을 가지지 못한다. 이렇듯 상호배제가 보장되더라도 일관성이 깨질수 있다.

 

 

3. 통신을 통한 협력 (Cooperation)

 

다른 프로세스의 ID를 알아 직접 통신하며 공통된 작업을 수행하기 위해 협력하는 관계이다. 프로세스들 사이에 메시지를 주고받을 때, 실제로 공유되는 것이 없다. 따라서 상호배제 제어 문제는 발생하지 않는다. 반면 교착상태와 기아상태는 발생할 수 있다. 각각 상태방의 메시지를 기다리며 블록될 수 있기 때문이다. 

 

 


 

 

참고자료

 

운영체제

컴퓨터 공학 전공자들을 위한 운영체제 내부구조 및 설계원리를 소개하는 책이다.

book.naver.com

 

반응형