45
1 Chapter 13 – 병병 병병병병병병 병병 병병 Outline 13.1 병병 병병 병병 13.2 병병 병병병 병병병병병 병병 13.3 병병병병 13.4 병병병 13.5 병병병 병병 병병 13.6 병병병 병병

Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

  • Upload
    lykhanh

  • View
    220

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

1

Chapter 13 – 병렬 프로그래밍과 병렬 처리

Outline13.1 병렬 처리 소개13.2 병렬 처리와 프로그래밍 언어13.3 세마포어13.4 모니터13.5 메시지 전달 기법13.6 실시간 언어

Page 2: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

2

13.1 병렬 처리 소개

• 병렬 처리 (parallel processing)– 다수의 프로세서들이 여러 개의 프로그램들 또는 한 프로그램의

분할된 부분들을 동시에 처리하는 기술• 병렬 프로그래밍에 대한 연구

병렬 프로그래밍 언어 자체에 대한 연구 Ada, Occam, Concurrent Pascal 병렬 컴파일러에 관한 연구

Page 3: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

3

13.1 병렬 처리 소개

• 컴퓨터 시스템을 분류 - Flynn 의 분류– 스트림

• 하나의 프로세서에 의하여 순서대로 처리되는 일련의 명령어들과 데이터들의 흐름

– Flynn 에 의한 네 가지 분류• SISD(Single-instruction Single-data)• SIMD(Single-instruction Multiple-data)• MISD(Multiple-instruction Single-data)• MIMD(Multiple-instruction Multiple-data)

Page 4: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

4

13.1 병렬 처리 소개

• 컴퓨터 시스템을 분류 - Flynn 의 분류– 병렬 처리 컴퓨터는 SIMD 와 MIMD

프로그램

제어 프로세서

...

...자 료

프로세서

자 료

프로세서

자 료

프로세서

자 료

프로세서

프로그램

자 료

프로세서

프로그램

자 료

프로세서

프로그램...

...

...

Page 5: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

5

13.1 병렬 처리 소개

• MIMD 형태의 병렬 처리 컴퓨터는 프로세서들이 메모리를 사용하는 방식

– 공유 메모리 구조 (shared-memory architecture)

– 분산 메모리 구조 (distributed-memory architecture)

Page 6: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

6

13.1 병렬 처리 소개

• 공유 메모리 구조

• 공유 메모리 구조에서 일반적으로 사용되는 상호 연결망– 버스 (Bus)– 크로스바 스위치 (Crossbar Switch)– 다 단 계 상 호 연 결 망 (Multistage Interconnection Network :

MIN)

프로세서 프로세서프로세서

주기억 장소

공유 메모리 구조의 형태

Page 7: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

7

13.1 병렬 처리 소개

• 분산 메모리 구조 (1)

– 초기의 병렬 처리 컴퓨터• 메시지 전달 (message passing) 방식

주기억 장소

프로세서

주기억 장소

프로세서

주기억 장소

프로세서

주기억 장소

프로세서

주기억 장소

프로세서

분산 메모리 구조의 형태

Page 8: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

8

13.1 병렬 처리 소개

• 분산 메모리 구조 (2)– 분산 메모리 구조에서 사용되는 상호 연결망

• 선형 배열 구조• 원형 구조• 성형 구조• 트리 구조• 메시 (mesh) 구조• 시스톨릭 (systolic) 구조• 완전 연결 (completely connected) 구조• 코달 원형 (chordal ring) 구조• 하이퍼큐브 (hypercube)

Page 9: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

9

13.2 병렬 처리와 프로그래밍 언어

• 병렬 , 병행• 병행성의 표현

① 문제가 지니고 있는 고유의 병행성을 자연스럽게 표현② 효율적인 병행 기계어 프로그램으로 번역

• 병렬 구조 모델① 언어들이 분산 모델을 가정하고 통신 기능을 제공② 공유 기억 장소 모델과 상호 배제를 위한 기능들을 사용

Page 10: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

10

13.2 병렬 처리와 프로그래밍 언어

• 대표적 예제– 유한 버퍼 문제 (the bounded buffer problem)– 병렬 행렬 곱셈 (parallel matrix multiplication)

• 정수형 행렬 선언 VAR a,b,c : ARRAY[n,n] OF INTEGER

FOR i := 1 TO n DO FOR j := 1 TO n DO c[i,j] := 0 ; FOR k := 1 TO n DO c[i,j] := c[i,j] + a[i,k] * b[k,j] ; END ; END ; END ;

Page 11: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

11

13.2 병렬 처리와 프로그래밍 언어

• 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍– 묵시적으로 본래의 병렬성을 포함

• 함수형 언어 , 논리형 언어 , 객체 지향 언어– 프로그래밍 언어에서 병렬 구조를 정의

• 번역기에게 프로그래머가 병렬성이 요구되는 프로그램의 부분을 명확히 지적할 수 있도록 컴파일러 옵션을 주는 것

– 병렬 처리를 할 수 있는 라이브러리를 제공• m_set_procs, m_fork, m_kill_procs, m_get_myid

Page 12: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

12

13.2 병렬 처리와 프로그래밍 언어표 13.1 병렬 처리를 제공하는 라이브러리 사용의 예

#include <parallel/paralle.h>#define SIZE 100#define NUMPROCS 10

shared int a[SIZE][SIZE], b[SIZE][SIZE], c[SIZE][SIZE];

void main(void) { int err; int multiply(); m_set_procs(NUMPROCS); m_fork(multiply); m_kill_procs();}

void multiply(void) { int i,j,k; for(i = m_get_myid(); i < SIZE; i += NUMPROCS) for(j = 0; j < SIZE; ++j)

for(k = 0;k < SIZE; ++k) c[i][j] += a[i][k] * b[k][j];

}

Page 13: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

13

13.2 병렬 처리와 프로그래밍 언어

• 프로세스 생성과 소멸 (1)– 병렬 처리 메커니즘 지원

• 프로세스 생성 기능– m_set_procs 와 m_fork 라이브러리 프로시저– 프로세스를 생성하는 방법

• 현 프로세스를 두 개 이상의 프로세스로 분리 사용 .– 같은 프로그램의 사본 사용– 부모 프로세스 , 자식 프로세스– SIMD 구조와 유사– SPMD(Single Program Multiple Data) 프로그래밍

• 각 코드 세그먼트 – 새 프로세스 – 각각의 다른 프로세스는 다른 코드를 가짐– MPMD– 전형적인 예 (fork – join 모델 )

Page 14: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

14

13.2 병렬 처리와 프로그래밍 언어

• 프로세스 생성과 소멸 (2)– MPMD

• MPMD 예 - fork-join 모델• 다수의 자식 프로세스 생성 (a fork)• 모든 자식 프로세스 종결 기다림 (a join)• UNIX 시스템 호출 fork() 는 SPMD 프로세스 생성기

– fork-join 생성기가 아님 ( 용어 혼돈 )• fork-join 모델을 MPMD 프로세스 생성기라 칭함• 표 12.1 은 MPMD 예 (m_kill_procs – join)

Page 15: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

15

13.2 병렬 처리와 프로그래밍 언어

• 병렬 처리를 위한 세 가지 선택 방법• 입상 (granularity) 크기에 따른 분류

① 명령어 수준의 병렬성 - 작은 덩이② 프로시저 수준의 병렬성 - 중간 덩이③ 프로그램 수준의 병렬성 - 큰 덩이– 작은 덩이 : 입상 프로세스 생성 유지 오버헤드– 큰 덩이 : 병렬성 부여 기회 소멸

Page 16: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

16

13.2 병렬 처리와 프로그래밍 언어

• 프로세스 생성자 ( 부모 ), 피생성자 ( 자식 ) – 구분가능 ( 생성방법 관계없이 )

• 프로세스 생성 기법 고려 사항 자식 프로세스 수행 중

- 부모 프로세스 일시 중지 가능한가 ?- 부모 프로세스 동시 실행 가능한가 ?

기억 장소 공유 가능- 부모 프로세스와 자식 프로세스- 자식 프로세스들 사이

• 표 13.1 사용 예- 부모 프로세스 일시 중지- 전역 변수 a, b, c (shared 선언 ) – 모든 프로세스 공유

• 프로세스 종결 기법 제공

Page 17: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

17

13.2 병렬 처리와 프로그래밍 언어

• 명령어 수준의 병렬성

- 명령어 수준의 병렬성은 VHDL 과 같은 하드웨어 기술 언어

parbegin S1 ; S2 ; . . . Sn ;parend

for i := 1 to n do parallel begin

for j := 1 to n do begin c[i,j] := 0 ; for k := 1 to n do begin c[i,j] := c[i,j] + a[i,k] * b[k,j] ; end ; end ; end ;

for j := 1 to n do begin c[i,j] := 0 ;

end ;

for k := 1 to n do begin c[i,j] := c[i,j] + a[i,k] * b[k,j] ; end ;

Page 18: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

18

13.2 병렬 처리와 프로그래밍 언어

• 프로시저 수준의 병렬성• 한 프로시저 – 한 프로세스 대응• 생성 소멸 기법 ( p : 프로시저 , x : 프로세스 )

1)

2) 선언문 사용

• X 의 영역과 생성 종결 : 지역 변수와 유사• Ada 에서 이 기법 사용

x := newprocess(p) ;. . .. . .killprocess(x) ;

var x : process(p);

Page 19: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

19

13.2 병렬 처리와 프로그래밍 언어

• 프로그램 수준의 병렬성– 프로세스 – 전체 프로그램– MPMD 방식 ( 자신의 사본을 생성 : 자식 프로세스 )– 예 : UNIX 의 fork()

• 호출 시점에 환경 상속• fork() 반환 값 – 부모 (n: 번호 ), 자식 (0) 프로세스 구별• exit - 생성 프로세스 종료• wait - 프로세스 동기 ( 부모 프로세스 일시 중지 )

Page 20: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

20

13.2 병렬 처리와 프로그래밍 언어

표 13.2 Fork 구조를 나타내는

C 코드 예

#define SIZE 100#define NUMPROCS 10int a[SIZE][SIZE], b[SIZE][SIZE], c[SIZE][SIZE];

void main(void) { int myid; for (myid = 0; myid < NUMPROC; ++myid ) if(fork( ) == 0) { multiply(myid);

exit(0); } for (myid = 0; myid < NUMPROCS; ++myid) wait(0); /* code to output c goes here */}

void multiply(int myid){ int i,j,k; for( i=myid; i < SIZE; i += NUMPROCS) for ( j=0; j < SIZE; ++j) {

c[i][j] = 0;for(k = 0; k<SIZE; ++k) c[i][j] += a[i][k] * b[k][j];

} }

Page 21: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

21

13.2 병렬 처리와 프로그래밍 언어

• 병행 언어는 다음 사항들을 필요① 병렬로 실행될 수 있는 코드 묶음을 한정

• 프로세스 , 태스크 , collateral 절

② 프로세스의 실행 시작을 기술하는 방법③ 공유 자료의 상호 배제를 보장하는 방법④ 병행 프로그램들을 동기화 시킬 수 있는 수단이 제공

• 모니터의 대기 - 신호 (wait-signal) 연산과 Ada 의 랑데뷰(rendezvous)

⑤ 프로세스에 우선 순위를 부여하는 방법⑥ 프로세스를 지정된 시간 동안 지연시키는 기법

Page 22: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

22

13.3 세마포어

• Process– Terminate ( 정해진 시간 안에 임계구역 실행 끝냄 )– Fair scheduling ( 한정된 시간 안에 임계구역 들어감 )

• 임계구역 (critical region) – mutual exclusion 요구• 세마포어 (semaphor) - Dijkstra 개발 , Algol 68

– Binary valued variable : s– 두 연산 wait(s), signal(s)

• Queue, fair scheduling 요구

wait(s) : if s = 1 then s := 0 else 프로세스 P 를 큐에 저장signal(s) : if queue empty then 대기중인 프로세스 준비

else s:= 1

Page 23: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

23

13.3 세마포어

표 13.3 Mutual Exclusion Using a Binary Semaphore

procedure READERbegin . . . wait(mutex)

DB 에서 자료 읽음 signal(mutex) . . .end

procedure WRITERbegin . . . wait(mutex)

DB 에 기록 signal(mutex) . . .end

Page 24: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

24

13.3 세마포어

표 13.4 세마포어를 이용하여 해결한 생산자 - 소비자 문제

ok := 0 ; fin := 1procedure PRODUCER while 입력할 레코드가 있으면 do

wait(fin) 한 레코드를 버퍼에 채움signal(ok)

endprocedure CONSUMER loop

wait(ok) 버퍼에서 한 레코드를 읽어서 출력signal(fin) 결과를 출력

repeatend

Page 25: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

25

13.3 세마포어

• Counting semaphore : ALGOL 68 (sema)– 선언문 : sema mutex

• Collateral 문 – ( , ) 로 분리 , begin – end 또는 ( ) 로 쌓임

Down mutex : if mutex = 0 then 실행이 블록됨 else mutex := mutex – 1

Up mutex : mutex := mutex + 1, mutex 때문에 블록된 프로그램

을 실행 제개함

BEGIN

S1, S2, … , Sn

END

begin

end

S1 S2 Sn

그림 13.5 Algol 68 의 collateral statement

Page 26: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

26

13.3 세마포어

• 병렬절 (parallel clause)표 13.5 Algol 68 에서 해결한 생산자 - 소비자 문제

Begin int buffer[50] ; int I := 0, j := 0; sema numberin := level 0, openspots := level 50 ; par (do down openspots ;

I := I mod 50 + 1read(buffer[I]) ;up numberin ;

od do down numberin ;

j := j mod 50 + 1;print(buffer[j]) ;up openspots ;

od) end

Page 27: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

27

13.4 모니터

• 모니터 (monitor)• 공유 자료 접근 코드를 하나로 묶은 단위 프로그램• Syntax

– SIMULA 의 CLASS 비슷 ( 추상 자료형 지원 )monitor name begin 이 모니터의 지역 자료 선언 프로시저들 선언 지역 자료 초기화 코드 end name

선언된 프로시저 P 를 호출하는데 다음과 같은 형식 name.P ( 실 매개변수들 )

Page 28: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

28

13.4 모니터

• 어느 주어진 시간에는 한 프로세스만이 모니터 프로시저를 실행시킴

• Queue 구성 자동• Wait – signal• Concurrent Pascal (Brinch Hansen) Modula (Wirth) Mesa (Xerox) CSP/K (Holt) – Concurrent SP/K

Page 29: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

29

13.4 모니터

• CSP/K– 선언문

• Monitor 선언 (monitor 안에 entry 선언 )• Process 선언

name : procedure options (concurrent)

Page 30: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

30

13.4 모니터

• 표 13.6 CSP/K 예

EXAMPLE: PROCEDURE OPTIONS(CONCURRENT) CRITICAL: MONITOR DECLARE (SUM) BINARY FIXED; DO; SUM=0; END; COUNT: ENTRY; SUM=SUM+1; END; WATCH: ENTRY; PUT SKIP LIST(SUM); SUM=0; END; END CRITICAL;COUNTER: PROCESS; . . . CALL COUNT; . . . END COUNTER; WATCHER: PROCESS; . . . CALL WATCH; . . . END WATCHER;END EXAMPLE;

Page 31: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

31

13.4 모니터

• Concurrent-Pascal(1)– 프로세스 , 모니터 , 클래스 개념삽입– init, delay(wait), continue(signal)– 자료형 : queue– 프로세스 형식 (외부영역변수 상속불허 )

type 프로세스이름 = process ( 형식 매개 변수들 ) 변수 , 상수 , 자료형 , 프로시저 선언문들 ; 몸체end

Page 32: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

32

13.4 모니터

• Concurrent-Pascal(2)– 모니터 형식

– entry 선언 procedure

type 모니터이름 = monitor ( 형식 매개 변수들 ) 공유 변수들 지역 프로시저들 진입점을 갖는 프로시저들begin 초기화 코드end

procedure entry controldisk(var x: buffer)

Page 33: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

33

13.4 모니터

• Concurrent-Pascal(3)– 프로세스 선언과 초기화

– 모니터 선언과 초기화

var X:( 프로세스 이름 )

init X( 실매개 변수 )

var p, q: 모니터 이름 ;

을 선언한 후 , 문장

init q( 실매개변수들 )

Page 34: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

34

13.4 모니터 표 13.7 Concurrent-Pascal 의 생산자 - 소비자 문제

type buffer = array (1..80) of char,

producer = process var card : buffer begin card(1) := ‘N’ while card(1) <> ‘E’ do begin read(card); spool(card) end end;

consumer = process var line : buffer begin line := ‘N’ while line <> ‘E’ do begin unspool(line); write(line) end end;

Page 35: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

35

13.4 모니터

cbuffer = monitor var pool : array(1..5) of buffer front, read, nobuf, noful : interger procedure entry spool(contents : buffer) begin if noful = nobuf then delay; pool(rear) := contents rear := rear mod nobuf +1;noful := noful +1; continue end;

procedure entry unspool(contents : buffer) begin if noful = 0 then delay;

contents := pool(front); front := front mod nobuf +1; noful := noful –1; continue

end; begin front := 1; rear := 1; nobuf := 5; oful := 0 end

var x: producer, y : consumer, z : cbuffer

begininit x, y, z

end.

Page 36: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

36

13.4 모니터

• 모니터– 병행 프로세스들이 자원을 액세스하지 못하도록 자원들의 집합 둘레에 벽을 만드는 기법

– 프로그래머에게 세 가지 설비를 제공① 모니터 안에 정의된 프로시저를 호출하는 방법②외부에서의 다양한 호출에 대한 스케줄링 방법

- 일반적으로 큐 사용③ 모니터를 호출한 프로세스들의 대기와 실행 계속을 허용하는 기법

- 예 ) wait-signal 또는 delay-continue 문

Page 37: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

37

13.5 메시지 전달 기법

• Processor 들의 network 구축 (최근 )• Monitors

– 단일 processor 또는 공동기억장소사용 다중 processor• 분산형 병행처리언어

– Brinch Hansen : DP , Hoare : CSP• DP, CSP

– 병행 프로그램의 실행 단위로 프로세스 선택– 프로세스들 간의 통신 : 메시지– 느슨히 결합된 분산 네트워크

Page 38: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

38

13.5 메시지 전달 기법

• CSP 에서 프로세서 P

– action : 메시지 형태 지정 ( 형태 )• DP : Brinch-Hansen

Q! action(x) // Q 프로세스에 메시지 송신 //

P? action(y) // 프로세스 P 로부터 메시지 수신 //

call Q.R(input # output) // 프로세스 Q 의 프로시저 R 를 실행 //- input : 실입력 매개 변수- output : 프로세스 Q 에서 값을 받기 위해 사용된 매개 변수

procedure R( 입력매개변수들 # 출력매개변수들 ) // Q 에서 프로시저 R 선언

Page 39: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

39

13.5 메시지 전달 기법

• 동기화 문제– CSP, Ada, DP

• 보호 명령어 (Guarded command)– non-deterministic 지원

• CSP 프로세스 선언

• 보호 조건을 사용할 수 있는 문장 택일 명령문 (alternative command) 반복 명령문 (repetitive command)

[p :: commands | q :: commands] - ‘|’ : p,q 프로세스 , 병행 수행 가능

Page 40: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

40

13.5 메시지 전달 기법

• 택일 명령문

• CSP 반복 명령문

• DP 의 Guard 문– When B1 : S1 | B2 : S2 | . . . End

• 조건이 참인것이 있을 때까지 기다림

– cycle B1 : S1 | B2 : S2 | . . . End• B1 - Bn 의 조건 중 하나 이상이 참인 경우 무한 반복

[ x > 0 y := +1 | x < 0 y := -1 | x=0 y := 0 ]

i := 1; *[ i <= n; A(i) 0 A(i) := b(i) / A(i) ]- i 가 1 에서 n까지 배열 A(i) 가 0 인 경우를 제외한 모든 A(i) 의 요소들을 B(i)/A(i) 로 배정

Page 41: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

41슬라이드 쇼가 끝났습니다 .

Page 42: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

42

용 어 정리

Page 43: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

43

임계 구역 (critical section)

용어 국제 표준 규격 15.04.02

critical section 임계 구역

A portion of a task during the execution of which other parts of this or other tasks are

prohibited from execution.

어떤 태스크의 일부분으로 이 부분을 실행 시에는 이 태스크의 다른 부분이나 다른

태스크들의 실행이 금지된다 .

Page 44: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

44

세마포어 (semaphore)

용어 국제 표준 규격 15.07.06

semaphore 세마포어

A data structure for controlling, by means of a queue, access to the resources that are available to more than one task, but only to one task at a time.

두 개 이상의 태스크가 사용 가능한 자원에 접근을 큐로써 제어하기 위한 자료 구조이다 . 그러나 어느 한 시간에 오직 하나의 태스크만이 사용 가능하다 .

Page 45: Chapter 12 : 병렬 프로그래밍과 병렬처리 - Byeongdo Kangcomsori.daegu.ac.kr/lectures/pl2011/PL13.… · PPT file · Web view · 2011-09-15Chapter 12 : 병렬 ... ╕φ┴╢

45

모니터 (monitor)

용어 국제 표준 규격 15.07.07monitor (in programming language) 모니터 ( 프로그래밍

언어에서 )

A shared data object together with a set of operations that may manipulate the data

object in order to control requests for resources or access to the resources that are

available to parallel processes, but only to one process at a time.

자원 요청을 제어하기 위하여 , 또는 병렬 프로세스들이 한번에 한 개씩 이용할 수

있게

자원에 접근하도록 , 자료 객체를 다룰 수 있는 연산들의 집합을 가진 공유 자료 객

체 .