티스토리 뷰

728x90
SMALL

병행 프로세스 : 프로세서 하나를 여러 프로세스를 동시에 실행하는 것처럼 보이는 것. 독립 프로세스와 협력 프로세스로 구분

=> 공유 자원을 상호 배타적으로 사용한다.(상호 배제와 동기화)

선행그래프, fork와 join구조, 병행문장

 

상호배제 : 병행 프로세스에서 프로세스 하나가 공유 자원을 사용할 때 다른 프로세스가 해당 데이터에 접근할 수 없게 하는 것

동기화 : 공유 자원을 동시에 사용하지 못하게 실행을 제어하는 방법.

임계자원 : 두 프로세스가 동시에 사용할 수 없는 공유 자원

임계영역 : 임계자원에 접근하고 실행하는 프로그램 코드 부분

임계영역은 1상호배제, 2진행, 3한정 대기 조건을 만족해야 한다.

 

상호배졔 방법 : 데커의 알고리즘, 테스 명령어, 세마포, 모니터

데커의 알고리즘 : 두 프로세스가 서로 통신하려고 공유 메모리를 사용하여 충돌없이 단일 자원을 공유할 수 있도록 허용.  ex) flag[0], flag[1]을 사용해 한개가 true이면 다른 하나는 false이고, 다른 하나가 true될때 실행하는 while문

TestAndSet TAS 명령어 : 하드웨어 명령어(TAS)를 사용하여 간단한 방법으로 임계 영역 문제를 해결.

세마포 : 상호배제의 해결책에는 바쁜 대기로 프로세스를 낭비한다는 단점이 있다. 다익스트라는 진입조건을 반복조사하지 않고 true일 때 프로세스 상태를 확인하는 새로운 동기화 도구인 세마포를 제안하여 이 문제를 해결했다. 세마포는 상호배제에 사용할 뿐만 아니라 다양한 연산에 순서도 제공한다. 세마포는 음이아닌 정수인 플래그 변수다. 세마포가 0이면 lock 또는 사용중.

모니터 : 세마포를 잘못 사용하면 여러가지 오류가 쉽게 발생하여 프로그램을 작성하기가 어렵다. 이런 단점을 극복하려고 모니터가 나타났다. 모니터는 공유데이터, 임계영역이 코딩된 프로시저, 초기화 코드로 구성된 모듈이다. 초기화 코드는 모니터를 생성할 때만 사용, 공유 데이터의 변수는 모니터 내부에 있는 프로시저로만 접근할 수 있다.

 

교착상태 : 다중 프로그래밍 시스템에서 프로세스가 결코 일어나지 않을 사건을 기다리는 상태.

1 상호배제, 2 점유와 대기, 3 비선점 조건, 4 순환대기 를 만족할 때 발생

 

ex) 강건너기

1. 돌 하나를 한사람만 디디는게 가능

2. 하나 점유. 하나 대기

3. 자원 뺏는거 불가능

4. 순환대기

 

교착 상태는 시스템 할당 그래프인 방향 그래프로 표현 가능

G=(V,E) V=프로세스 집합, P={P1, P2, --}, 자원 집합 R={R1, R2, --}

 

(요청을 만족하면 할당 연결선으로 변환)

 

사이클이 있으면 교착상태일 수도 있다. 즉 사이클이 있어도 교착상태가 아닐 수도 있다.

P4가 R2 해제, P3에 할당, 사이클 없어짐

 

 

교착 상태의 해결방법

1. 예방

2. 회피

3. 회복

 

기아상태 : 교착 상태가 자원을 자유롭게 할당한 결과(자원부족)라면, 반대로 기아상태는 작업이 결코 사용할 수 없는 자원을 계속 기다리는 결과(교착상태)를 예방하려고 자원을 할당할 때 발생(기다림)하는 결과이다.

ex) 식사하는 철학가, 프로세스 스케줄링에서 우선순위가 낮아서 영원히 기다리는 경우

728x90
LIST
댓글
공지사항