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

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
Vision System Lab, Sang-Hun Han
Project #2-2. Pintos User Program
제 4 장 프로세스 Section 1 프로세스의 개념 Section 2 프로세스 스케줄링
1.1 병렬처리의 한계와 가능성 1.2 병렬처리의 단위 1.3 병렬컴퓨터의 분류 1.4 병렬컴퓨터의 성능 척도
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
제 6장 프로세스 간 동기화 및 통신 6.1 개요 6.2 병행 처리의 문제점
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
Concurrency: Mutual Exclusion and Synchronization (상호배제와 동기화)
Concurrency: Mutual Exclusion and Synchronization (상호배제와 동기화)
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Internet Computing KUT Youn-Hee Han
프로세스 관리.
제7장 제어구조 I – 식과 문장.
제 6 장 프로세스 동기화 (Process Synchronization)
4장 병행 프로세스 병행성의 원리를 이해한다 병행 프로세스 수행과 관련된 상호 배 제 해결방안을 알아본다
Lecture #10 제8장 병렬컴퓨터 구조.
제8장 병렬컴퓨터 구조.
14장. 병렬 프로세서 다루는 내용 병렬 프로세서로의 개념 병렬 처리와 병렬 컴퓨터 분류 배열 프로세서와 다중 프로세서의 개념
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
컴퓨터 구조.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
Ch2-2. VHDL Basic VHDL lexical element VHDL description
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
제6장 프로세스 동기화(Process Synchronization)
4 병행 프로세스와 상호배제.
Chapter 4 The Von Neumann Model.
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
제19강 병렬처리시스템 1.
성균관대학교 전자전기컴퓨터공학과 오영환, 박효진
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
제 6 장 프로세스 동기화 (Process Synchronization)
Introduction to Programming Language
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
2. 상호배제와 동기화 01 program versionone; // 첫 번째 버전
프로그래밍 기초와 실습 Chapter 11 Recursion.
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 4 변수 및 바인딩.
Operating System Multiple Access Chatting Program using Multithread
병행 프로세서 과목 : 운영체제 학번 : 이름 : 조장호.
Chapter 02. 소프트웨어와 자료구조.
Signature, Strong Typing
Signature, Strong Typing
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
Internet Computing KUT Youn-Hee Han
Signature, Strong Typing
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
제5장 디버깅과 추적 문봉근.
03. 병행 프로세스(Parallel Process)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Concurrency: Mutual Exclusion and Synchronization (상호배제와 동기화)
DataScience Lab. 박사과정 김희찬 (화)
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
프로그래밍 기법 최적화 프로그래밍.
3장 병행 프로세스 2A 박훈.
Chapter 7: Deadlocks.
3장 – 병행 프로세스 A 김정문.
Presentation transcript:

Chapter 13 – 병렬 프로그래밍과 병렬 처리 Outline 13.1 병렬 처리 소개 13.2 병렬 처리와 프로그래밍 언어 13.3 세마포어 13.4 모니터 13.5 메시지 전달 기법 13.6 실시간 언어

13.1 병렬 처리 소개 병렬 처리(parallel processing) 병렬 프로그래밍에 대한 연구 다수의 프로세서들이 여러 개의 프로그램들 또는 한 프로그램의 분할된 부분들을 동시에 처리하는 기술 병렬 프로그래밍에 대한 연구  병렬 프로그래밍 언어 자체에 대한 연구 Ada, Occam, Concurrent Pascal  병렬 컴파일러에 관한 연구

13.1 병렬 처리 소개 컴퓨터 시스템을 분류 - Flynn의 분류 스트림 Flynn에 의한 네 가지 분류 하나의 프로세서에 의하여 순서대로 처리되는 일련의 명령어들과 데이터들의 흐름 Flynn에 의한 네 가지 분류 SISD(Single-instruction Single-data) SIMD(Single-instruction Multiple-data) MISD(Multiple-instruction Single-data) MIMD(Multiple-instruction Multiple-data)

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

13.1 병렬 처리 소개 MIMD 형태의 병렬 처리 컴퓨터는 프로세서들이 메모리를 사용하는 방식 공유 메모리 구조(shared-memory architecture) 분산 메모리 구조(distributed-memory architecture)

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

13.1 병렬 처리 소개 분산 메모리 구조의 형태 분산 메모리 구조(1) 초기의 병렬 처리 컴퓨터 메시지 전달(message passing) 방식 분산 메모리 구조의 형태

13.1 병렬 처리 소개 분산 메모리 구조(2) 분산 메모리 구조에서 사용되는 상호 연결망 선형 배열 구조 원형 구조 성형 구조 트리 구조 메시(mesh) 구조 시스톨릭(systolic) 구조 완전 연결(completely connected) 구조 코달 원형(chordal ring) 구조 하이퍼큐브(hypercube)

13.2 병렬 처리와 프로그래밍 언어 병렬, 병행 병행성의 표현 병렬 구조 모델 ① 문제가 지니고 있는 고유의 병행성을 자연스럽게 표현 ② 효율적인 병행 기계어 프로그램으로 번역 병렬 구조 모델 ① 언어들이 분산 모델을 가정하고 통신 기능을 제공 ② 공유 기억 장소 모델과 상호 배제를 위한 기능들을 사용

13.2 병렬 처리와 프로그래밍 언어 FOR i := 1 TO n DO 대표적 예제 유한 버퍼 문제(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;

13.2 병렬 처리와 프로그래밍 언어 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍 묵시적으로 본래의 병렬성을 포함 함수형 언어, 논리형 언어, 객체 지향 언어 프로그래밍 언어에서 병렬 구조를 정의 번역기에게 프로그래머가 병렬성이 요구되는 프로그램의 부분을 명확히 지적할 수 있도록 컴파일러 옵션을 주는 것 병렬 처리를 할 수 있는 라이브러리를 제공 m_set_procs, m_fork, m_kill_procs, m_get_myid

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];

13.2 병렬 처리와 프로그래밍 언어 프로세스 생성과 소멸(1) 병렬 처리 메커니즘 지원 프로세스 생성 기능 m_set_procs와 m_fork 라이브러리 프로시저 프로세스를 생성하는 방법 현 프로세스를 두 개 이상의 프로세스로 분리 사용. 같은 프로그램의 사본 사용 부모 프로세스, 자식 프로세스 SIMD 구조와 유사 SPMD(Single Program Multiple Data) 프로그래밍 각 코드 세그먼트 – 새 프로세스 각각의 다른 프로세스는 다른 코드를 가짐 MPMD 전형적인 예(fork – join 모델)

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)

13.2 병렬 처리와 프로그래밍 언어 병렬 처리를 위한 세 가지 선택 방법 입상(granularity)크기에 따른 분류 ① 명령어 수준의 병렬성- 작은 덩이 ② 프로시저 수준의 병렬성 - 중간 덩이 ③ 프로그램 수준의 병렬성- 큰 덩이 작은 덩이 : 입상 프로세스 생성 유지 오버헤드 큰 덩이 : 병렬성 부여 기회 소멸

13.2 병렬 처리와 프로그래밍 언어 프로세스 생성자(부모), 피생성자(자식) 프로세스 생성 기법 고려 사항 구분가능(생성방법 관계없이) 프로세스 생성 기법 고려 사항 자식 프로세스 수행 중 - 부모 프로세스 일시 중지 가능한가? - 부모 프로세스 동시 실행 가능한가? 기억 장소 공유 가능 - 부모 프로세스와 자식 프로세스 자식 프로세스들 사이 표 13.1 사용 예 부모 프로세스 일시 중지 전역 변수 a, b, c (shared 선언) – 모든 프로세스 공유 프로세스 종결 기법 제공

13.2 병렬 처리와 프로그래밍 언어 명령어 수준의 병렬성 parbegin S1; S2; . . . Sn; parend - 명령어 수준의 병렬성은 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; 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;

13.2 병렬 처리와 프로그래밍 언어 프로시저 수준의 병렬성 한 프로시저 – 한 프로세스 대응 생성 소멸 기법 ( p : 프로시저, x : 프로세스) 1) 2) 선언문 사용 X의 영역과 생성 종결 : 지역 변수와 유사 Ada에서 이 기법 사용 x := newprocess(p); . . . killprocess(x); var x : process(p);

13.2 병렬 처리와 프로그래밍 언어 프로그램 수준의 병렬성 프로세스 – 전체 프로그램 MPMD 방식(자신의 사본을 생성 : 자식 프로세스) 예 : UNIX 의 fork() 호출 시점에 환경 상속 fork() 반환 값 – 부모(n:번호), 자식(0) 프로세스 구별 exit - 생성 프로세스 종료 wait - 프로세스 동기(부모 프로세스 일시 중지)

13.2 병렬 처리와 프로그래밍 언어 표 13.2 Fork 구조를 나타내는 C코드 예 #define SIZE 100 #define NUMPROCS 10 int 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];

13.2 병렬 처리와 프로그래밍 언어 병행 언어는 다음 사항들을 필요 ① 병렬로 실행될 수 있는 코드 묶음을 한정 프로세스, 태스크, collateral절 ② 프로세스의 실행 시작을 기술하는 방법 ③ 공유 자료의 상호 배제를 보장하는 방법 ④ 병행 프로그램들을 동기화 시킬 수 있는 수단이 제공 모니터의 대기-신호(wait-signal) 연산과 Ada의 랑데뷰(rendezvous) ⑤ 프로세스에 우선 순위를 부여하는 방법 ⑥ 프로세스를 지정된 시간 동안 지연시키는 기법

13.3 세마포어 Process 임계구역 (critical region) – mutual exclusion 요구 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

13.3 세마포어 표 13.3 Mutual Exclusion Using a Binary Semaphore procedure READER begin . . . wait(mutex) DB에서 자료 읽음 signal(mutex) end procedure WRITER begin . . . wait(mutex) DB에 기록 signal(mutex) end

13.3 세마포어 표 13.4 세마포어를 이용하여 해결한 생산자-소비자 문제 ok := 0 ; fin := 1 procedure PRODUCER while 입력할 레코드가 있으면 do wait(fin) 한 레코드를 버퍼에 채움 signal(ok) end procedure CONSUMER loop wait(ok) 버퍼에서 한 레코드를 읽어서 출력 signal(fin) 결과를 출력 repeat

13.3 세마포어 Counting semaphore : ALGOL 68 (sema) Collateral 문 선언문 : 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

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 + 1 read(buffer[I]) ; up numberin ; od do down numberin ; j := j mod 50 + 1; print(buffer[j]) ; up openspots ; od) end

13.4 모니터 모니터 (monitor) 공유 자료 접근 코드를 하나로 묶은 단위 프로그램 Syntax monitor name SIMULA의 CLASS 비슷(추상 자료형 지원) monitor name begin 이 모니터의 지역 자료 선언 프로시저들 선언 지역 자료 초기화 코드 end name 선언된 프로시저 P를 호출하는데 다음과 같은 형식 name.P (실 매개변수들)

13.4 모니터 어느 주어진 시간에는 한 프로세스만이 모니터 프로시저를 실행시킴 Queue 구성 자동 Wait – signal Concurrent Pascal (Brinch Hansen) Modula (Wirth) Mesa (Xerox) CSP/K (Holt) – Concurrent SP/K

13.4 모니터 name : procedure options (concurrent) CSP/K 선언문 Monitor 선언 (monitor안에 entry선언) Process선언 name : procedure options (concurrent)

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; WATCH: ENTRY; PUT SKIP LIST(SUM); SUM=0; END CRITICAL; COUNTER: PROCESS; . . . CALL COUNT; END COUNTER; WATCHER: PROCESS; CALL WATCH; END WATCHER; END EXAMPLE; 표 13.6 CSP/K 예

13.4 모니터 type 프로세스이름 = process (형식 매개 변수들) 변수, 상수, 자료형, 프로시저 선언문들; 몸체 Concurrent-Pascal(1) 프로세스, 모니터, 클래스 개념삽입 init, delay(wait), continue(signal) 자료형 : queue 프로세스 형식 (외부영역변수 상속불허) type 프로세스이름 = process (형식 매개 변수들) 변수, 상수, 자료형, 프로시저 선언문들; 몸체 end

13.4 모니터 type 모니터이름 = monitor (형식 매개 변수들) 공유 변수들 지역 프로시저들 Concurrent-Pascal(2) 모니터 형식 entry 선언 procedure type 모니터이름 = monitor (형식 매개 변수들) 공유 변수들 지역 프로시저들 진입점을 갖는 프로시저들 begin 초기화 코드 end procedure entry controldisk(var x: buffer)

13.4 모니터 Concurrent-Pascal(3) 프로세스 선언과 초기화 모니터 선언과 초기화 var X:(프로세스 이름) init X(실매개 변수) var p, q: 모니터 이름; 을 선언한 후, 문장 init q(실매개변수들)

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 line := ‘N’ while line <> ‘E’ do begin unspool(line); write(line) end

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; begin front := 1; rear := 1; nobuf := 5; oful := 0 end var x: producer, y : consumer, z : cbuffer begin init x, y, z end.

13.4 모니터 모니터 병행 프로세스들이 자원을 액세스하지 못하도록 자원들의 집합 둘레에 벽을 만드는 기법 프로그래머에게 세 가지 설비를 제공 모니터 안에 정의된 프로시저를 호출하는 방법 외부에서의 다양한 호출에 대한 스케줄링 방법 - 일반적으로 큐 사용 모니터를 호출한 프로세스들의 대기와 실행 계속을 허용하는 기법 - 예) wait-signal 또는 delay-continue문

13.5 메시지 전달 기법 Processor들의 network 구축 (최근) Monitors 분산형 병행처리언어 DP, CSP 단일 processor 또는 공동기억장소사용 다중 processor 분산형 병행처리언어 Brinch Hansen : DP , Hoare : CSP DP, CSP 병행 프로그램의 실행 단위로 프로세스 선택 프로세스들 간의 통신 : 메시지 느슨히 결합된 분산 네트워크

13.5 메시지 전달 기법 Q! action(x) // Q 프로세스에 메시지 송신 // 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선언

13.5 메시지 전달 기법 [p :: commands | q :: commands] 동기화 문제 CSP, Ada, DP 보호 명령어(Guarded command) non-deterministic 지원 CSP 프로세스 선언 보호 조건을 사용할 수 있는 문장  택일 명령문(alternative command)  반복 명령문(repetitive command) [p :: commands | q :: commands] - ‘|’ : p,q 프로세스, 병행 수행 가능

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)로 배정

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

용 어 정리

임계 구역 (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. 어떤 태스크의 일부분으로 이 부분을 실행 시에는 이 태스크의 다른 부분이나 다른 태스크들의 실행이 금지된다.

세마포어 (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. 두 개 이상의 태스크가 사용 가능한 자원에 접근을 큐로써 제어하기 위한 자료 구조이다. 그러나 어느 한 시간에 오직 하나의 태스크만이 사용 가능하다.

monitor (in programming language) 모니터(프로그래밍 언어에서) 용어 국제 표준 규격 15.07.07 monitor (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. 자원 요청을 제어하기 위하여, 또는 병렬 프로세스들이 한번에 한 개씩 이용할 수 있게 자원에 접근하도록, 자료 객체를 다룰 수 있는 연산들의 집합을 가진 공유 자료 객체.