Download presentation
Presentation is loading. Please wait.
1
03. 병행 프로세스(Parallel Process)
컴퓨터 소프웨어 과 2A 송 상 훈
2
수행되는 것들이 하나로 모여서 “순차적 수행”으로 돌아가도록 지시
- 개요 – => 순차적인 수행으로 부터 여러 개의 동시 수행, 갈라짐을 지시하 는 명령어, 수행되는 것들이 하나로 모여서 “순차적 수행”으로 돌아가도록 지시 선형 그래프는 각 문장에 대응되는 노드들이 유향 비순환 그래프 (directed acyclic graph)를 이루는 것. 노드 Si에서 노드Sj로 가는 에지(edge)는 문장 Si가 수행된 다음에 문장 SJ가 수행의미. S1 S2 S3 S4 S6 S5 S7
3
선형 그래프는 각 문장에 대응되는 노드들이 유향 비순환 그래프 (directed acyclic graph)를 이루는 것
선형 그래프는 각 문장에 대응되는 노드들이 유향 비순환 그래프 (directed acyclic graph)를 이루는 것. 노드 Si에서 노드Sj로 가는 에지(edge)는 문장 Si가 수행된 다음에 문장 SJ가 수행의미. 그림3.2 순환 선형 그래프 ● S2와 S3은 S1이 끝난 후 수행된다. ● S4는 S2가 긑난후 수행된다. ● S5와 S6은 S4가 끝난 후 수행된다. ● S7은 S5, S6, S3가 긑난 후 수행된다. S1 S2 S3
4
그림 3.2은 “2개의 프로세스가 상호배제를 수행하는 것을 해결 할려는 첫 번째 예문, parbrgin/parend 때문에 pone과 ptwo가 동시에 수행된다.
- 상호배제 (Mutual Exclusion) - => 공용변수를 액세스하고 있는 하나의 프로세스 이외에는 다른 모든 프로세스들이 공용변수를 액세스하지 못하도록 제어하는 기법. 따라, 상호배제는 ‘프로그래’ 들이 공용 데이터를 함께 액세스하려 할 때 필요하다. 어떤 프로세스가 공용 데이터를 액세스하고 있을 때, 프로세스는 임계영역(Critical Section) 내에 있다고 함.
5
- 임계영역 (Critical Section) = > 임계영역에 있다는 것은 ‘한 프로세스만이 공용 데이터를
= > 임계영역에 있다는 것은 ‘한 프로세스만이 공용 데이터를 배타적으로 액세스하고 나머지 프로세스들은 공용 데이터의 액세스를 필요로 하더라도 기다려야 함, 그러므로 임계영역내의 수행은 가능한 빨리 끝내야 하며, 임계영 역에 들어가서 프로세스가 보류(block)되는 일은 없어야 한다. 상호배제 탈출은 Pnumber라는 변수를 상대방 프로세스의 번호 로 치환시키게끔 구현. - 개요 – => 순차적인 하나로 모여서 “순차적 수행”으로 돌아가도록 지시 하는 명령어 가 있다.
6
-상호배제 프리미티브 1 var pnumber : integer; procedure pone; begin
while true do while pnumber=2 do; CSone; pnumber :=2; end end; procedure ptwo; while pnumber=1 do; CStwo; pnumber :=1; end end; begin parbegin pone; ptwo; parend
7
- 상호배제 프리미티브 2 var p1,p2 : boolean; Procedure pone; begin while true do while p2 do p1:=true; CSone; p1:=false; end Procedure ptwo; begin while p1 do p2 := true; CStwo; p2 := false; end Begin P1:=false; P2:=false; parbegin pone; ptwo; parend
8
repeat P(mutex); 임계영역 V(mutex); 나머지영역 until false; 3.3.1 사용 3.3.2 구현
P(S) : S.value:=S.value-1; if(s.value<0) then begin add this process to S.L; block; end; V(S):S.value:=S.value+1; if(S.value <=0) remove a process P from S.L; wakeup(P);
9
- 상호배제 프리미티브 3 var p1,p2 : boolean; Procedure pone; begin while true do p1:=true; while p2 do CSone; p1:=false; end Procedure ptwo; begin p2:=true; while p1 do; CStwo; p2:=false; end p1:=false; parbegin pone; ptwo; parend
10
3.3 세마포어(Semaphore) - 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법 - E.J.Dijkstra가 제안하였으며, P와 V라는 2개의 연산에 의해서 동기화를 유지시키고, 상호 배제의 원리를 보장함 - S는 P와 V연산으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1혹은 0과 양의 값을 가질 수 있음 - P연산 : 자원을 사용하려는 프로세스들의 진입여부를 자원의 개수(s)를 통해 결정하는 것으로, wait 동작이라 함 - V연산 :대기중인 프로세스를 깨우는 신호(wake up)로서, signal 동작이라 함.
11
- 모니터(Monitor) 여러 프로세스 사이에 공유 데이터와 이 공유 데이터에 접근 하는 여러 프로시저다. 즉, 임계영역 코드의 집합으로 정의 할 수 있다. 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는데 필요한 데이터와 이 데이터 를 처리하는 프로시저로 구성됨. 자료 추상화와 정보 은폐개념을 기초로 하며 공유 자원을 할 당하기 위한 병행성 구조로 이루어져 있음 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모 니터의 진입부를 호출해야 함 외부의 프로시저는 직접 액세스할 수 없으며, 모니터의 경계 에서 상호 배제가 시행됨 한순간에 하나의 프로세스만 진입하여 자원을 사용 할 수 있 음
Similar presentations