(정처산기)응용 SW 기초 응용 활용

병행 프로세스

mynote6676 2025. 4. 13. 17:45

병행 프로세스(Concurrent Process)

-PCB를 가진 두개 이상의 프로세스가 동시에 실행되는 것을 의미한다.

-병행 프로세스의 고려사항

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

 2)병행 프로세스들 사이에는 협력 또는 동기화가 이루어져야 한다

 3)교착상태를 해결해야 하며 병렬 처리도를 극대화해야한다.

 

임계 구역(Critical Section)

-두개 이상의 프로세스가 운영될 때 서로 공유하게 되는 자원 중에서

상호 배제 시켜야 하는 일정 부분의 영역을 의미

-문제 해결하기 위한 조건 : 상호 배제( Mutual Exclusion), 진행(Process),

한계 대기( Bounded Waitng)

 

상호 배제(Mutual Exclusion)

-병행 중인 프로세서들 간에 공유 변수를 엑세스 하고 있는 하나의 프로세스 이외에는 다른 모든 프로세스들이

공유 변수를 엑세스하지 못하도록 제어하는 기법이다.

-여러 개의 병렬 프로세스가 공토의 변수 또는 자우너에 접근할 떄, 그 조작을 정당하게 실행하기 위하여 접근 중인 임의의 시점에서 하나의 프로세스만이 그 접근을 허용하도록 제어하는 기법

-상호 배제를 구현하는 기법으로 데커 알고리즘, 피터슨 알고리즘, test anf set 기법, Lamport의 빵집 알고리즘, Swap 명령어 기법등이 있다.

 

상호 배제 구현 시 요건

1. 두 개 이사의 프로세스들이 동시에 임계 영역에 있어서는 안된다.

2. 임계 구역 바깥에 있는 프러세스가 다른 프로세스의 임계구역에 진입을 막어서는 안된다.

3. 어떤 프로세스도 임계 구역으로 들어가는 것이 무한정 연기되어서는 안된다.

4. 임계 구역은 특정 프로세스가 독점할 수 없다.

5. 프로세스들의 상대적인 속도에 대해서는 어떤한 가정도 하지 않는다.

 

1) 세마포어(Swmaphore)

-E.J Dijkstra가 제안한 방법으로 상호 배제의 원리를 보장하는 것이다.

-반드시 상호 배제의 원리가 지켜져야 하는 공유 영역에 대해 각각의 프로세스들이 

 접근하기 위하여 사용되는 두 개의 연산 P(wait) 와 V(Singnal)통해서 프로세스 사이의 동기를 유지한다.

p조작  프로세스를 대기시키는 wait동작
v조작 대기 중인 프로세스를 깨우는 신호를 보내는 signal 동작

 

-프로세스 블록 큐는 임계 영역에 진입할 수 없는 프로세스를 블록화하여 대기시키는 순서를 유지하는데 사용하는 큐이다.

 

세마포어 종류

이진 세마포어
(Binary semaphore)
오직01의 두가지 값을 가진다..
산술 세마포어
(Counting semaphore)
0양의 정수를 값으로 가질 수 있다
동일한 자원들이 있는 풀에서 자우너을 할당할때 사용하며, 풀에 있는 자원 수가 
같은 값으로 초기화한 후, 세마포어가 0까지 줄어들었을 때 대기한다.

 

 

2) 모니터(Monitor)

-병행 다중 프로그래밍에서 상호 배제를 구현하기 위한 특수 프로그램 기법이다.

-구조적인 면에서유 데이터와 이 데이터를 처리하는 프로시저의 집합이다.

-자료 추상화정보 은폐 개념이다.

-공유 데이터와 이 데이터를 처리하는 프로시저로 구성된다.

-모니터 외부의 프로세서는 모니터 내부의 데이터를 직접 엑서스할 수 없다.

-자원 요구 프로세스는 그 자원 관련 모니터 진입부를 반드시 호출한다.

-모니터에서는 Wait와 Signal 연산이 사용된다.

 

교착상태(DeadLock)

 

1) 교착상태 발생의 필요 충분 조건

상호 배제
(Mutual Excliusion)
한번에 하나의 프로세스만
점유 및 대기
(hild and wait)
-프로새스가 다른 자원을 기다리면서 이들에게 ㅇ미 할당된 자원을 갖고 있다.
-최소한 하나의 자원을 점유하고 있는 프로세스가 있어야 하며, 이 프로세스가 다른 프로세스에 의하여 점유된 자원을 추가로 얻기 위하여 대기하고 있어야 한다,
비선점
(Non Preemption)
자우너은 사용이 끝날 때까지 이들이 갖고 있는 프로세스로 부터 제거 할 수 없다
환형 대기
(circular wait)
-대기하고 있는 프로세스의 집합 {P0, P1,.......Pn}에서 P0은 P1이 점유한 자원을 대기하고 P1은 P2를대기하며, Pn은 P0가 점유한 자우너을 요청하기 위해 대기한다.

-프로새스의 환형 사슬이 존해서 이를 구성하는 각 프로세스는 사슬 내의 다음에 있는 프로세스가 요구하는 하나 또는 그 이상의 자우너을 갖고 있다.

 

2) 교착상태 해결 방법

예방
(Prevention)
-교착상태 발생조건 중 하나를 발생하지 않게 하는 방법이다.
-상호 배제 부정, 점유와 대기 부정 , 비선점 부정, 환형 대기  부정
회피
(Avoidance)
-교착상태의 발생 가능성을 인정하고, 교착상태 가능성을 피해가는 방법
-은행원 알고리즘(banker's algorithm)과 관계된다.
발견
(Detection)
교착상태가 발생했는지 검사하여 교착상태에 빠진 프로세스와 자원을 발견하는 방법이다

회복
(Recovery)
교착상태에 빠진 프로세스를 종료하거나 해당 프로세스가 점우하고 있는 자우너을 선점하여 다른 프로세스에게 할당하는 기법이다.