A 장형태
병행프로세스 개요 상호배제 (Mutual Exclusion) 상호배제 ( 세마포어 ) 모니터 (monitor) 프로세스간 2 가지 통신방법
(1) 병행 프로세스란 여러 프로세스들이 동시에 수행상태에 있는 것을 말하며 독립적 또는 다른 프로세스와 협력하면서 기능을 수행한다. (2) 비동기성 (Asynchronous) 란 프로세스간의 상호협력 하는 것 (3) 병행 프로세스의 비동기성으로 인해 발생하는 문제점 ① 상호배제 (Mutual Exclusion) ② 동기화 (synchronization) ③ 결정적인 (Determinacy) 문제 ④ 통신 (Communication) 문제 ⑤ 교착상태 (Dead Lock)
S1 S2S3 S4 S8 S7 S6 노드 Si 에서 노드 Sj 로 가는 에지 (edge) 는 문장 Si 가 완전히 수행된 다음에 문장 Sj 가 수행됨을 의미함. S2 와 S3 은 S1 이 끝난 후 수행됨. S4 는 S2 가 끝난 후 수행됨. S5 와 S6 은 S4 가 끝난 후 수행됨.. S7 은 S5, S6, S3 가 끝난 후 수행됨.
* 상호배제란 여러 프로세스가 하나의 공유 데이터를 액세스 하면서 작업이 수행될 때 한 프로세스가 그 데이터를 액세스 할 때 다른 프로세스는 그 데이터를 액세스하지 못하도록 하는 기법. ① 소프트 웨어적인 상호배제 기법 - 2 개 프로세스 대상 : Dekker 알고리즘, Peterson 알고리즘 - n 개 프로세스 대상 : Dijstra 알고리즘, Knuth 알고리즘 & Mcguire 알고리즘, Lamport 알고리즘 ② 하드웨어적인 상호배제 기법 - Test and Set 명령어 - Swap 명령어 ③ 순환 반복대기 (Busy Waiting) 기법 - 세마포어 (Semaphore) - Eventcount/Sequencer( 시크벤저 ) 상호배제 기법
Dekker, Peterson, Dijstra 알고리즘은 소프트웨어적인 상호배제 해결방법 으로 실행시간이 길며, 프리미티브 (Primitives) 의 실행 중 블록 될 가능성이 있는 문제점이 있다. 이를 해결하기 위해 하드웨어적인 상호배제 해결 방법 으로 IBM 에서 제안한 Test and set 명령어가 있다. 하드 웨어 적인 상호배제 기법 * Test and set 알고리즘의 방법 먼저 변수를 읽고 그것의 값을 저장 영역 (Save Area) 에 기억시킨 후 그 변수에 다른 값을 Set 시키는 방법이다. → 임계구역 진입, 해제 전후에 다른 프로세스가 개입할 수 없게 만든다. 즉 아예 인터럽트를 걸지 못하게 한다. 다른 프로세스 개입 불가.
상호배제 기법 1965 년 Dijkstra 가 상호배제를 위한 enterCS( ) 프리미티브 (Primitives) 에서 존재하던 순환 반복되기 문제를 해결하기 위해 세마포어라는 개념 을 제안했다. 세마포어는 P 와, V, 초기화 연산에 의해서만 접근 가능한 통제된 변수이다. 종류 ① 세마포어 변수가 0 과 1 의 2 가지 종류 값만 갖는 이진 세마포어 ② 세마포어가 0 이상의 모든 정수 값을 갖는 카운팅 세마포어 - 이진 세마포어 : 상호배제 또는 프로세스 동기화 목적으로 사용 - 카운팅 세마포어 : 프로세스간에 통신 등을 해결하기 위해 사용
모니터란 여러 프로세스 사이에 공유 데이터와 이 공유 데이터에 접근하는 여러 프로시져 (Procedure) 이다. 즉, 임계영역 코드들의 집합으로 정의 한다. 프로시져 (Procedure) 란 자주 실행해야 하는 업무 흐름을 이 문법에 미리 작성하여 데이터베이스 내에 저장해 두었다가 필요할 때마다 호출하여 실행 할 수 있는 PL/SQL 블록이다. PL/SQL 은 APPLICATION LOGIC 을 추가하여 SQL 을 확장한 ORACLE 의 절차적인 언어입니다. 모니터에 프로시져가 몇 개 있는지에 따라 그 개수만큼 모니터 진입 큐 (entry queue) 가 존재 한다. 모니터 내의 프로시져를 호출하는 프로세스는 해당 프로시져에 대한 진입 큐를 통해 모니터 내로 진입하며 그 과정에서 이미 모니터 내에 진입해 있는 프로세스가 존재하는 경우 진입 큐에 대기한다. 즉, 모니터 내에는 항상 하나 이하의 프로세스만이 진입하도록 상호 배제 메커니즘이 자동으로 보장한다.
프로세스 사이에 통신을 하기 위한 방법은 공유 변수를 이용하여 통신을 하거나 메시지 전달을 이용하여 통신 ( 동기화 ) 할 수 가 있다. (1) 공유메모리 변수 시스템 송수신 프로세스가 공동으로 접근 가능한 메모리 공간을 할당 하며 공유변수를 이용하여 정보를 교환 한다. → 운영체제는 메모리만 제공하고 통신기능은 응용프로그래머 에게 주어진다. (2) 메시지 시스템 프로세스들이 메시지를 이용하여 정보를 교환하며, 통신 기능을 제공하는 책임이 운영체제에게 주어 진다. → 큐 )Queue) 의 기본원리를 이용하여 송수신 프로세스가 정보 를 메시지 큐를 통해 전달.
♣ 통신 방법의 사용 예 ① 중앙 집중식 시스템 공유변수를 이용하여 통신하며, 세마포오어 같은 메커니즘을 이용하여 동기화 및 상호배제의 문제를 해결. ② 분산 처리 시스템 통신 네트워크를 통한 메시지 전달을 이용하여 동기화를 할 수 있다. 1) 공유변수를 이용한 동기화 문제해결 방법의 단점 여러 프로세스가 하나의 공유변수를 이용함으로써 병목 현상이 발생되며 또한 공유변수가 파괴되었을 경우 전체 시스템의 성능이 현저하게 떨어지는 결과를 가져온다. → 이 방법은 공유 변수를 사용하는 중앙집중식 시스템에 유용함.
2. 메시지 전달 방법 분산처리 시스템에 적합하며 비교적 안정된 메시지 전달을 이용한 동기화 (Synchronization) 문제 해결 방법이다. → 많은 다중 프로그래밍 운영체제들이 몇 가지 종류의 프로세스 간 통신을 지원하기 위해 사용. ※프로세스 동기화 (Synchronization) 란 ? Critical Section( 임계 영역 ) 에 대해서 프로세스들이 어떠한 순서로 작업을 수행하더라도 올바른 결과를 기대할 수 있도록 하는 데이터 의 정확성 (correctness) 과 데이터의 일관성 (consistency) 을 보장 하 것. ♣ 메시지 란 ? 송신측 프로세스와 수신측 프로세스간에 교환될 수 있는 정보의 집합으로써 둘 or 그 이상의 프로세스 간에 전송될 데이터 또는 실행명령 등을 의미 한다.