관리 메뉴

Kim's Programming

병행 프로세스와 상호배제(1/2) 본문

Computer Theory/Operating System

병행 프로세스와 상호배제(1/2)

Programmer. 2017. 6. 23. 21:56

1. 병행 프로세스


1. 병행 프로세스의 개념


* 프로세스

        • 병행 프로세스: 동시에 여러개 프로세스가 진행되고 있는 경우이나 어느 한 순간에는 하나의 프로세스만 실행 됨.(프로세스 1개)
        • 병렬 프로세스: 동시에 여러개의 프로세스가 실행되고 있는 것(프로세스 n개)


2. 병행 프로세스의 해결 과제



      • 공유 자원을 상호 배타적으로 사용해야 한다. 통신망 등은 한순간에 프로세스 하나만 사용해야 한다.
      • 병행 프로세스 간에는 협력이나 동기화가 되어야한다.
      • 실행 순서에 맞게 수행되어야 한다.
      • 교착 상태를 해경해야한다.
      • 병행 프로세스를 수행하는 과정에서 발생하는 상호배제를 보장해야 한다.

2. 상호배제와 동기화



1. 상호배제의 개념


상호배제는 병행 프로세스에서 프로세스 하나가 공유 자원을 사용할 때 다른 프로세스들이 동일한 사원을 사용할 수 없도록 하는 방법이다.(Mutual Exclusion). 변수나 파일은 프로세스별로 하나씩 차례로 읽거나 쓰도록 해야 하는데, 공유 자원을 동시에 사용하지 못하게 실행을 제어하는 방법을 동기화라고한다. 


어떤 두 프로세스를 동일한 컴퓨터에서 실행한다고 했을 때 두 프로세스가 동시에 사용할 수 없는 공유 자원을 임계자원(Critical Resource)이라고 하고, 임계자원에 접근하고 실행하는 프로그램 코드 부분을 임계영역(Critical Section)이라고 한다.


어떤 프로세스가 다른 프로세스와 충돌하지 않는 연산을 할 때는 프로세스를 동시에 수행하도록 허용해야하므로 다음 조건들을 만족해야한다.


*상호배제를 만족하는 조건

        • 두 프로세스는 동시에 임계영역에 진입할 수 없다.
        • 프로세스가 공유 자원을 사용하려고 너무 오래 기다리게 하면 안 된다.
        • 임계 영역이 비어 있으면 어느 프로세스나 접근 가능 해야한다.

2. 임계 영역

 임계 영역에는 반드시 한 번에 프로세스 하나만 진입할 수 있어야 한다. 임계영역에는 다른 프로세스가 있으면 이 프로세스는 다른 프로세스가 임계영역에 들어가지 못하게 진입 상호배제를 수행해야 한다. 또 임계 영역에서 나오는 프로세스는 탈출 상호배제를 수행하여 다른 프로세스가 임계 영역에 들어갈 수 있도록 해야 한다.


* 임계영역은 다음 세 가지 조건을 만족해야한다.

        • 상호배제: 어떤 프로세스가 임계 영역에서 작업 중이면, 다른 프로세는 임계 영역으로 들어갈 수 없다.
        • 진행: 임계 영역에 프로세스가 없는 상태에서 여러 프로세스가들어가려고 할 때는 어떤 프로세스는 반드시 진입할 수 있어야 한다.
        • 한정 대기: 다른 프로세스가 임계 영역을 무한정 기다리는 상황을 방지해야한다.




위의 경우 처럼 여러 프로세스가 동시에 공유 데이터에 접근할 때 접근 순서에 따라 실행 결과가 달라지는 상황에 놓인 프로세스들을 경쟁상태(Race Condition)에 있다고 한다. 경쟁 상태를 예방하려면 병행 프로세스들을 동기화해야 하는데 이는 임계 영역을 이용한 상호배제로 구현할 수 있다.즉 한 순간에는 하나의 프로세스만 공유변수를 수정할 수 있도록 해야한다.

'Computer Theory > Operating System' 카테고리의 다른 글

교착 상태와 기아 상태  (0) 2017.06.24
병행 프로세스와 상호배제(2/2)  (0) 2017.06.24
스레드(Thread)  (0) 2017.06.22
프로세스(Process)  (0) 2017.06.22
운영체제란? (2/2)  (0) 2017.06.21