반응형
* 프로세스 여러 개가 동시에 실행.
1. 병행 프로세스 과제.
2. 선행 그래프
=> 독립적인 작업 수행 및 프로세스간 협력으로 특정기능 수행.
프로세스 간 교신으로 동기화가 일어나는 프로세스를 비동기적 병행 프로세스라 부름.
프로세스 간 교신으로 동기화가 일어나는 프로세스를 비동기적 병행 프로세스라 부름.
1. 병행 프로세스 과제.
2. 선행 그래프
프로세스 = 프로세스의 집합 & 선행 제약(Precedence Constraint)
1)선행 제약
- " 프로세스가 순서대로 다른 상태로 옮겨간다 "
- 표시 : Pi < Pj
- 두 프로게스 간에 선행관계가 없으면 이들은 독립적이라 병행 실행이 가능하다. (S1 과 S2는 병행실행 가능)
Ex) ㅇ S1 ㅇ S2
↘ ↙
ㅇ S3
↓
ㅇ S4
1)선행 제약
- " 프로세스가 순서대로 다른 상태로 옮겨간다 "
- 표시 : Pi < Pj
- 두 프로게스 간에 선행관계가 없으면 이들은 독립적이라 병행 실행이 가능하다. (S1 과 S2는 병행실행 가능)
Ex) ㅇ S1 ㅇ S2
↘ ↙
ㅇ S3
↓
ㅇ S4
* 알고리즘에 관한 선행그래프
a := x + y ->S1 :: S1 S2 서로 독립적이므로 동시 수행가능.
b := z + 1 ->S2
c := a - b ->S3 :: a와 b가 값을 할당받기 전에 수행하면 안 된다.
w := c + 1 ->S4 :: c값을 계산하기 전에 수행할 수 없다.
a := x + y ->S1 :: S1 S2 서로 독립적이므로 동시 수행가능.
b := z + 1 ->S2
c := a - b ->S3 :: a와 b가 값을 할당받기 전에 수행하면 안 된다.
w := c + 1 ->S4 :: c값을 계산하기 전에 수행할 수 없다.
02. 상호배제와 동기화
* 상호배제
- 특정 공유자원 사용이 한번에 한개의 프로세스만 사용가능하도록 제한이 될때 한 프로세스가 사용하는 동안엔 다른프로세스가 해당 데이터에 접글할 수 없도록 한 것.
* 생산자/소비자 프로세스 , 판독자/기록자 (입력기/출력기) 문제
* 버퍼(하드디스크의 일부분) 를 채우는 형태
1. 생산자가 가득 채워놓는 가득 찬 버퍼
2. 생산 과 소비가 동시에 이루어지며 부분적으로 차있는 버퍼
3. 생산이 없고 소비만 있게되어 텅 빈 버퍼.
Ex) 프로세스 간 통신의 예
- 생산/소비자 관계에서 한 프로세스가 정보를 생산하면 다른 프로세스는 소비함.
- 버퍼가 있거나 꽉 차 있을때 버퍼에 접근하는것을 막기위해 생산자 와 소비자가 동기화 된 상태여야 함.
*유한 버퍼 생산/소비자 문제
버퍼가 무한적으로 있는 공간은 없음.
한정된 버퍼에서 생산/소비자를 사용하여 제한된 버퍼 공간을 유동적으로 활용함.
in, out 은 0으로 초기화
in = 비어있는 다음 버퍼를 가리킴.
out = 채워진 버퍼의 맨 처음을 가리킴.
소비자는 버퍼에서 데이터를 읽기 전 생산자가 앞서가는지, 즉 in>out 인지 확인함.
버퍼가 비어있는 상태 : in = out
버퍼가 꽉 차있는 상태 : (in+1) mod n - out [ Ex) 10칸의배열이 둥글게 이어져있다고 할때 맨 마지막 배열에서 하나 큰 값은 다시 1번 배열을 가리키게 되므로 나머지 값으로 계산하여 원래 1번배열을 가리키도록 돌아오게 함.
(10+1) mod 10 => 11 % 10 => 1 ]
독립적인 프로세스가 동시에 수행될 때 기능이 다르게 동작할 수 있음. (같은 변수를 동시에 조작할 경우)
* 임계 영역(Critical Section)
둘 이상의 프로세스가 공유 할수 없는 자원 : 임계자원
* 진입 상호 배제
- 프로세스 하나가 임계영역에 있으면 다른 프로세스가 임계영역에 들어가지 못하게 하는 것.
- 임계영역에 들어가기 원하는 프로세스는 진입 상호배제 수행. ( 집에 들어가기위해 키를 받는 과정 )
-
프로세스간 서로 협력하여 자원을사용할수 있도록 프로토콜을 설계, 임계영역 문제 해결 가능.
임계영역 해결을 위한 세가지 요구사항.
1)상호 배제 - 하나의 프로세스가 임계영역에서 수행중일때 다른 프로세스는 사용 불가.
2) 진행 - 여러개의 프로세스가 임계영역 진입 요청시 선정 알고리즘에 따라 임계영역에서 수행 대상 선정
3) 제한된 대기 - 우선순위를 지정하여 대기시간이 과도하게 지연되는것을 방지.
소프트웨어적인 임기영역문제 해결
알고리즘 1) 한 개의 공유변수와 두 개의 프로세스를 교대로 실행.
하드웨어적인 임기역영문제 해결
- 특별한 하드웨어 명령 사용. 문제 해결.
- testandest(a,b) :: 논리변수 b 를 읽어 a에 복사하고 b를 참으로 하는 명령.
Ex) testandset(noenter1,active); => noenter1 = false; active = true;
- 특정 공유자원 사용이 한번에 한개의 프로세스만 사용가능하도록 제한이 될때 한 프로세스가 사용하는 동안엔 다른프로세스가 해당 데이터에 접글할 수 없도록 한 것.
* 생산자/소비자 프로세스 , 판독자/기록자 (입력기/출력기) 문제
* 버퍼(하드디스크의 일부분) 를 채우는 형태
1. 생산자가 가득 채워놓는 가득 찬 버퍼
2. 생산 과 소비가 동시에 이루어지며 부분적으로 차있는 버퍼
3. 생산이 없고 소비만 있게되어 텅 빈 버퍼.
Ex) 프로세스 간 통신의 예
- 생산/소비자 관계에서 한 프로세스가 정보를 생산하면 다른 프로세스는 소비함.
- 버퍼가 있거나 꽉 차 있을때 버퍼에 접근하는것을 막기위해 생산자 와 소비자가 동기화 된 상태여야 함.
*유한 버퍼 생산/소비자 문제
버퍼가 무한적으로 있는 공간은 없음.
한정된 버퍼에서 생산/소비자를 사용하여 제한된 버퍼 공간을 유동적으로 활용함.
in, out 은 0으로 초기화
in = 비어있는 다음 버퍼를 가리킴.
out = 채워진 버퍼의 맨 처음을 가리킴.
소비자는 버퍼에서 데이터를 읽기 전 생산자가 앞서가는지, 즉 in>out 인지 확인함.
버퍼가 비어있는 상태 : in = out
버퍼가 꽉 차있는 상태 : (in+1) mod n - out [ Ex) 10칸의배열이 둥글게 이어져있다고 할때 맨 마지막 배열에서 하나 큰 값은 다시 1번 배열을 가리키게 되므로 나머지 값으로 계산하여 원래 1번배열을 가리키도록 돌아오게 함.
(10+1) mod 10 => 11 % 10 => 1 ]
독립적인 프로세스가 동시에 수행될 때 기능이 다르게 동작할 수 있음. (같은 변수를 동시에 조작할 경우)
* 임계 영역(Critical Section)
둘 이상의 프로세스가 공유 할수 없는 자원 : 임계자원
* 진입 상호 배제
- 프로세스 하나가 임계영역에 있으면 다른 프로세스가 임계영역에 들어가지 못하게 하는 것.
- 임계영역에 들어가기 원하는 프로세스는 진입 상호배제 수행. ( 집에 들어가기위해 키를 받는 과정 )
-
프로세스간 서로 협력하여 자원을사용할수 있도록 프로토콜을 설계, 임계영역 문제 해결 가능.
임계영역 해결을 위한 세가지 요구사항.
1)상호 배제 - 하나의 프로세스가 임계영역에서 수행중일때 다른 프로세스는 사용 불가.
2) 진행 - 여러개의 프로세스가 임계영역 진입 요청시 선정 알고리즘에 따라 임계영역에서 수행 대상 선정
3) 제한된 대기 - 우선순위를 지정하여 대기시간이 과도하게 지연되는것을 방지.
소프트웨어적인 임기영역문제 해결
알고리즘 1) 한 개의 공유변수와 두 개의 프로세스를 교대로 실행.
하드웨어적인 임기역영문제 해결
- 특별한 하드웨어 명령 사용. 문제 해결.
- testandest(a,b) :: 논리변수 b 를 읽어 a에 복사하고 b를 참으로 하는 명령.
Ex) testandset(noenter1,active); => noenter1 = false; active = true;