slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
프로세스 1 … wait(mutex) 임계구역 signal(mutex) … … PowerPoint Presentation
Download Presentation
프로세스 1 … wait(mutex) 임계구역 signal(mutex) … …

Loading in 2 Seconds...

play fullscreen
1 / 15

프로세스 1 … wait(mutex) 임계구역 signal(mutex) … … - PowerPoint PPT Presentation


  • 145 Views
  • Uploaded on

프로세스 1 … wait(mutex) 임계구역 signal(mutex) … …. 프로세스 2 … wait(mutex) 임계구역 signal(mutex) … …. 프로세스 3 … wait(mutex) 임계구역 signal(mutex) … …. 프로세스 n … wait(mutex) 임계구역 signal(mutex) … …. …. wait. 프로그램 계수기. signal. CPU. mutex 큐. 준비 큐. 6.7 모니터 ( Monitor)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '프로세스 1 … wait(mutex) 임계구역 signal(mutex) … …' - aman


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

프로세스 1

wait(mutex)

임계구역

signal(mutex)

프로세스 2

wait(mutex)

임계구역

signal(mutex)

프로세스 3

wait(mutex)

임계구역

signal(mutex)

프로세스 n

wait(mutex)

임계구역

signal(mutex)

…...

wait

프로그램

계수기

signal

CPU

mutex 큐

준비 큐

slide2

6.7 모니터 (Monitor)

  • 모니터 type : 또 하나의 고수준 동기화 구조체
    • 프로그래머가 정의하는 type
    • 표현 방법:
      • 변수(어떤 순간에 한 instance의 상태를 나타냄) 선언
      • 프로시져: 해당 모니터 type에 적용 가능한 연산들
    • 한 순간에 한 P만 모니터 안에서 활동 보장 (그림 6.19)
    • 조건 변수 : type이 condition인 변수
      • 특별한 동기화가 필요한 경우 (예: 젓가락 문제)
      • var x, y: condition; x.wait; y.signal;(그림 6.20)
      • 세마포의 경우와 다름 : 대기 중인 P가 없으면 signal 효과 없음

signal했다고 모니터를 떠난 것은 아님

slide3

type dining-philosophers = monitor

var state: array [0..4] of (thinking, hungry, eating);

var self: array [0..4] ofcondition;

procedure entry pickup (i: 0..4);

begin

state[i] := hungry;

test (i);

if state[i]  eating then self[i].wait;

end;

procedure entry putdown (i: 0..4);

begin

state[i] := thinking;

test (i+4 mod 5);

test (i+1 mod 5);

end;

procedure test (k: 0..4);

begin

if state[k+4 mod 5]  eating

and state[k] = hungry

and state[k+1 mod 5]  eating

then begin

state[k] := eating;

self[k].signal;

end;

end;

begin

for i := 0 to 4

do state[i] := thinking;

end.

조건 구조체

변수 선언

프로시져

초기화 코드

slide4

철학자 만찬 문제의 해결 (그림 6.21)

    • 교착상태도 해결, 그러나 기아는 가능
    • 모니터의 호출

dp.pickup(i);

eat

dp.putdown(i);

  • 모니터의 구현(세마포의 사용)

wait(mutex);

...

프로시져 몸체(pickup, …)

...

if next-count > 0

then signal(next)

else signal(mutex);

slide5

조건 변수(x)의 구현

x-count := x-count +1; if x-count > 0

if next-count > 0 then begin

then signal(next) next-count := next-count + 1;

else signal(mutex); signal(x-sem);

wait(x-sem); wait(next)

x-count := x-count - 1; next-count := next-count - 1;

end;

x.wait

x.signal

slide6

조건부 대기 구조체

    • 모니터 안에서의 프로세스의 재개 순서를 제어

예) x.wait(c)

    • 순서가 보장되려면,
      • 모든 프로세스가 아래 순서를 준수해야 한다

R.acquire(t)

자원접근

R.release;

      • 협조 관계에 있지 않은 프로세스들까지도 감시해야 한다.

Type resource-allocation = monitor

var busy: boolean;

x: condition;

procedure entry acquire(time: integer);

begin

if busy then x.wait(time);

busy := true;

end;

procedure entry release;

begin

busy := false;

x.signal;

end;

begin

busy := false;

end

자원 사용

예정 시간

프로그래머가

실수/고의로

위반 가능

slide7

6.9 원자성 트랜잭션 (Atomic Transactions)

  • 데이터 일관성(data consistency)
    • 원자적 실행
      • 병행수행 결과=임의 순서 실행 결과
      • 서로 방해하지 않음 (임계구역 상호배제)
    • 논리적 단위 : all or nothing (자동이체의 차변-대변)
  • DB기법 원용(예:파일 처리)

6.9.1 시스템 모델

  • 트랜잭션(transaction) : 하나의 논리적 기능을 수행하는 명령

(동작)들의 집합, 원자성(atomicity) 유지가 중요

  • T: 디스크상 파일의 자료 항목들을 접근/갱신하는 P
    • 일련의 read/write연산, commit(완성)/abort(취소)로 종료
    • 취소 시 복귀(rollback): 원자성 보장
slide8

6.9.2 로그 기반 회복 (Log Based Recovery)

  • 단일 T(병행 T)의 관점
  • 기록 우선 로깅(write-ahead logging)
    • 항상 안정(stable) 기억장치에 먼저 기록
    • Undo(Ti)/Redo(Ti)
    • 시스템 실패 시 <Ti commits>가 없는 T는 모두 Undo(Ti)

6.9.3 검사점 (Checkpoint)

  • 주기적으로 안정 장치에 저장(로그, 갱신된 자료값) 후 <checkpoint>라는 로그를 추가로 저장
  • 탐색/회복 시간 절약
slide9

6.9.4 병행 원자 트랜잭션

  • 직렬성(serializability)
    • 병행 수행한 결과가 각 T를 순차 실행한 결과와 동일
    • 세마포로 보장 가능, 그러나 지나친 제한
      • 실행 중첩이 필요=>병행성 제어 알고리즘

6.9.4.1 직렬성 (Serializability)의 판별

    • 직렬 스케쥴: 각 T를 원자적으로 실행 => n!가지
    • 충돌연산(conflicting operation)
      • Oi, Oj가 동일 자료를 접근하고 최소 하나가 write
    • 충돌 직렬화 가능(conflict serializable) 스케쥴
      • 비충돌 연산들끼리의 교체로 직렬 스케쥴로 변형 가능

(그림6-23, 6-24)

중첩 허용  항상 틀림

slide10

-직렬 스케쥴

-충돌이 있지만 직렬화 가능한 스케쥴

T0 T1

read(A)

write(A)

read(B)

write(B)

read(A)

write(B)

read(B)

write(B)

T0 T1

read(A)

write(A)

read(A)

write(A)

read(B)

write(B)

read(B)

write(B)

종속 그래프

T0

T1

A, B

slide11

6.9.4.2 로킹 프로토콜 (Locking Protocol)

  • (사전 스케쥴 없이) 직렬성을 보장하기 위한 하나의 수단
  • 자료 항목마다 잠김(lock)을 획득/해제
    • 공유(shared) 모드 잠금: read 가능/write불가
    • 배타(exclusive) 모드 잠금: read/write 모두 가능
  • 직렬성(무결성)을 보장하려면 => 2단계로킹 프로토콜
    • 성장(growing) 단계: 잠김을 얻기만 하고 해제하지 않음
    • 위축(shrinking) 단계: 해제만 하고 얻지는 않음
    • 직렬성 보장하지만 교착 상태는 해결 못함
slide12

T1, T2의 스케쥴

T11 Lock A

T12 A 변경

T13 Unlock A

T21 Lock A

T22 A 변경

T23 Lock B

T24 Unlock A

T25 B 변경

T26 Unlock B

T14 Lock B

T15 B 변경

T16 Unlock B

T1(2단계가 아닌 록킹)

T11LOCK A

T12 A := A + 100

T13UNLOCK A

T14LOCK B

T15 B := B + 100

T16UNLOCK B

T'1(2단계 록킹)

T'11LOCK A

T'12 A := A + 100

T'13LOCK B

T'14UNLOCK A

T'15 B := B + 100

T'16UNLOCK B

직렬화 불가

=> 무결성 깨짐

A

T0

T1

B

slide13

6.9.4.3 타임스탬프(Timestamp) 기반 프로토콜

  • clock이나 counter로 T의 입장 시간을 기록: TS(Ti)
    • W-타임스탬프: write(Q)를 성공한 T의 최대TS값
    • R-타임스탬프: read(Q)를 성공한 T의 최대TS값
  • 프로토콜
    • Ti가 read(Q) 수행 시
      • TS(Ti) < W-타임스탬프 : 거절, Ti는 roll back
      • TS(Ti)  W-타임스탬프 : 수행, W-타임스탬프 조정
    • Ti가 write(Q) 수행 시
      • TS(Ti) < R-타임스탬프 : 거절, roll back
      • TS(Ti) < W-타임스탬프 : 거절, roll back
      • 나머지 경우: 수행
slide14

복귀한 T는 새 TS를 가지고 처음부터 재시작

    • cf. 로킹에서는 새로 시작하지는 않고 기다림
  • 충돌 직렬성 보장, 교착 상태 없음
  • 로킹이나 TS기법 중 한 가지로만 가능한 경우가 있음

T2 T3

read(B) read(B)

write(B)

read(A)

read(A)

read(A)

    • [그림 6.25] TS 프로토콜로 가능한 스케쥴의 예

로킹으로도 가능

slide15

기존 세마포 임계영역 모니터 병행 트랜잭션

wait문 각 P의 모든 compiler가 생성

& 임계구역의 각 P에는 없음 ” .

signal문 앞뒤로 분산됨

배타적인 임계구역 region문 모니터 내의 자료 항목

범위 전체 전체 wait ~ signal 하나