블로그 이미지
LanSaid

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Recent Post

Recent Comment

Recent Trackback

Archive

2012. 3. 30. 17:29 Study/운영체제
1. 상호배제
2. 생산자/소비자
 1) 생산자/소비자, 판독자/기록자(입력기/출력기) 문제
  - 여러 프로세스가 공통 작업 수행을 위해 서로 협동하고, 병행 처리되는 대표적인 예.
  -
 2) 생산자와 소비자 프로세서들을 병행 실행하기 위해 공유 버퍼가 필요함
  - 생산자와 소비자는 같은 버퍼에 접근하므로 동시에 사용할 수 없음.
  - 생산자가 이미 채워진 버퍼에 더 채우거나, 소비자가 빈 버퍼에서 데이터를 꺼낼 때 문제 발생.
  - 속도가 다른 생산자와 소비자가 데이터를 일시 저장할 수 있는 버퍼 사용 시 버퍼는 세 가지 상태중 하나
   ㄱ) 가득 찬 버퍼
   ㄴ) 부분적으로 빈 버퍼
   ㄷ) 모두 빈 버퍼
 3) 프로세스 간 통신의 예
  - 생산자/소비자 관계에서 한 프로세스가 정보를 생산하면 다른 프로세스는 그 정보를 소비함.
  - 버퍼가 비었거나 꽉 차 있을 때 버퍼에 접근하는 것을 막기 위해 생산자와 소비자가 동기화 되어있어야함

 4) 유한 버퍼 생산자/소비자 문제
  - 크기가 고정된 버퍼를 사용, 버퍼가 비었을 시 소비자가 대기, 버퍼가 가득 차면 생산자가 대기함.
  - 공유 버퍼의 저장소를 두 개의 논리적 포인터 in과 out을 사용한 순환 배열로 해결 가능
   ㄱ) in 과 outdms 0 dmfh chrlghk
   ㄴ) 변수 in은 비어있는 다음 버퍼를 가리킴
   ㄷ) 변수 out은 채워진 버퍼의 맨 처음을 가리킴
   ㄹ) 소비자는 버퍼에서 데이터를 읽기 전 생산자가 앞서 가는 지 , 즉 in > out 인지를 확이함.
    -> 문제점 in == out 상황이 초기값일 때를 제외하면 발생하면 안되므로(조건 충돌) 사실상 n-1개의 버퍼만 사용 가능.

 5) 유한 버퍼를 공유하는 생산자/소비자 프로세스 간 변형 프로그램
  - 버퍼가 비면 'in=out' , 버퍼가 꽉차면 '(in+1)mod n = out'.
  - no-op : 아무 일도 하지 않는 경우.
  - while 조건 do no-op : 조건이 거짓이 될 때가지 반복적으로 검사

 6) 경쟁 상태
  -  공유 데이터에 최종적으로 남는 데이터의 결과를 보장할 수 없는 상황을 의미.
  -  여러프로세스가 공유데이터를 동시에(병행적으로) 접근(읽거나 쓰기)할 때 공유 데이터에 대한 접근 순서에 따라 실행 결과가 달라지는 상황.
  - 장치나 시스템이 둘 이상의 연산을 동시에 수행하려 할 때, 어느 프로세서가 제일 마지막에 수행된 후 결과를 저장했느냐에 따라 발생하는 오류.
  - 접근 순서화가 필요.
  - 이를 방지하기 위해 병행 프로세서들은 반드시 동기화되어 실행되어야 함.
 7) 동기화 방법
  -  상호 배제
  -  임계 영역

3. 임계 영역(Critical Section)
 1) 둘 이상의 프로세스가 공유 할 수 없는 자원을 임계자원이라 하며, 프로그램에서 이를 이용하는 부분.
  - 공유 메모리가 참조되는 프로그램의 부분(데이터나 데이터 구조)으로 다수의 프로세스가 접근 가능한 영역이면서 한 순간에 하나의 프로세스만 사용할 수 있는 영역
    (공유 자원의 독점을 보장하는 코드영역)을 의미
 2) 진입 상호 배제
  - 프로세스 하나가 임계 영역에 있으면 다른 프로세스가 임계 영역에 들어가지 못하게 하는 것.
  - 임계 영역에 들어가기를 원하는 프로세스는 진입 상호배제를 수행해야 함.
   ㄱ) 프로세스가 접근하지 않은 임계 영역은 잠금 상태.
   ㄴ) 프로세스는 임게 영역에서 작업을 수행하기
 3) 프로세스들이 서로 협력하여 자원을 사용할 수 있도록 프로토콜을 설계하여 임계영역 문제를 해결 가능.
  - 진입영역(진입코드)
  - 출구영역
  - 잔류영역
 4) 임계영역을 해결하기 위해 아래 세 가지 요구를 만족시켜야 함.
  - 상호배제
   ㄱ) 프로세스Pi가 임계영역에서 수행 중 일때 다른 프로세스는 임계영역에서 수행할 수 없다.
  - 진행
   ㄱ) 임계영역에서 수행하는 프로세스가 없고 여러 개의 프로세스가 임계영역으로 들어가려고 하면 프로세스 선정 알고리즘에 따라 다음 임계 영역에서 수행할
  - 제한된 대기 

4. 소프트웨어적인 임계영역 문제 해결
 1) 단일 프로세서 또는 메모리를 공유하는 다중 처리 환경의 프로세스가 존재.

5. 하드웨어적인 임계영역 문제 해결
 1) 특별한 하드웨어 명령을 사용, 임계영역 문제를 해결 가능.
  - 기계를 비교하거나 단어 내용을 검사 및 수정 또는 내용을 바꾸는(swap)명령을 사용하여 임계영역 문제 해결.
  - 하나의 기억장치 사이클에서 수행되므로 생산자/소비자 문제에서 예로든 counter 변수 수정에 발생하는 문제 해결 가능.
 2) testandest을 이용한 상호배제 알고리즘
  - testandest(a,b);는 논리변수 b를 읽어 a에 복사하고 b를 참으로 하는 명령.
  - 단일 프로세서 또는 메모리를 공유하는 다중 처리 환경과 관계없이 적요오디며, 간단하여 쉽게 적용된다는 장점을 가짐.
  -  임계영역에 진입하려는

posted by LanSaid