Mutual Exclusion(상호배제)/뮤텍스 [정의] 다중 프로그래밍 환경에서 공유 불가능한 자원의 동시 사용을 피하기 위한 Locking/Unlocking을 사용해 동시성을 제어하는 기법
[요구조건] 상호배제 조건, 진행 조건, 한정 대기 조건, 가정 조건
[구현기술]
HW방식: TAS ( Test And Set )
SW방식: 데커알고리즘, 피터슨알고리즘, 램포트베이커리 알고리즘
 
토픽 이름 Mutual Exclusion   
분류 OS > 병행 제어 > Mutual Exclusion
키워드(암기) 램포트, 피터슨, 데커알고리즘, 세마포어 , swap, test and set, 인터럽트 금지
암기법(해당경우)  

 

기출문제

번호 문제 회차
1 분산처리 시스템에서 Mutual Exclusion 구현하기 위한 Time Ring 알고리즘과 Time Ordering 알고리즘의 동작을 설명하시오 96--2-3
2 운영체제(OS)에서의 상호배제(Mutual Exclusion)개념을 설명하고 이를 구현하는 방법을 하드웨어적 해결방안 및 소프트웨어적 해결방안으로 구분하여 설명하시오. 98--1-8
3 상호배제에 대하여 설명하고 상호배제 구현을 위한 데커(Dekker), 피터슨(Peterson) 알고리즘에 대해 설명하시오. 1410--2-4
4 운영체제(OS)에서의 상호배제(Mutual Exclusion)개념을 설명하고, 세마포어(Semaphore) 통한 프로세스 동기화에 대해 설명하시오. 1610--2-1
5 병행프로세스의 동시성 제어를 위한 상호배제 기법을 HW기법과 SW기법으로 나누어서 설명하시오. 1704--4-1
6 운영체제(OS)에서 상호배제(Mutual Exclusion) 대해 설명하고, 상호배제 구현 방안인 데커 알고리즘, 피터슨 알고리즘에 대해 설명하시오. 합숙2018--2-2-5

 

I. 병행프로세스의 동시성 제어를 위한 상호배제(Mutual Exclusion)의 개요

. 상호배제(Mutual Exclusion) 정의

- 경쟁조건을 방지하기 위해 특정 프로세스가 공유자원을 사용하고 있을 경우 다른 프로세스가 해당 공유자원을 사용하지 못하게 제어하는 기법


- 상호배제 해결을 위한 요구조건과 상호배제에 대한 소프트웨어적 또는 하드웨어적 해결방안 연계

. 상호배제 해결을 위한 요구조건

구분 설명 관련사항
상호배제 조건 두 개 이상의 프로세스들이 동시에 임계영역에 있어서는 안됨 임계영역
진행 조건 임계영역 밖의 프로세스가 다른 프로세스의 임계영역 진입을 막아서는 안됨 교착상태
기아상태
한계대기 조건 어떤 프로세스도 임계구역 진입이 무한정 연기되어서는 안됨  
상대속도 조건 프로세스들의 상대적인 속도에 대해서는 어떠한 가정도 하지 않음  

 

II. 상호배제 해결방안

. 상호배제 해결을 위한 SW 방법

해결방안 설명
데커(Dekker)
알고리즘
- 프로세스를 위한 상호배제에 대한 최초 소프트웨어 해결법
- 공유변수 : boolean flag(사용의사) int turn(차례)
- 차례설정 : turn(차례)를 자신 프로세스에게 설정
피터슨(Peterson)
알고리즘
- 공유변수 : boolean flag(사용의사) int trun(차례)
- 의사표시 : 임계영역에 진입하려면 먼저 flag(사용의사) true 설정 후 임계영역 진입
- 차례양보 : turn(차례)를 다른 프로세스에게 양보
램포트(Lamport) 알고리즘 - 분산처리 환경에서 유용한 알고리즘으로 수행순서를 위한 번호를 부여받고 낮은 번호가 먼저 수행되는 알고리즘
세마포어(Semaphores) - 운영 체계 또는 프로그램 작성 내에서 상호배제를 지원하는 메커니즘
- 세마포어 변수(S) 개의 연산(P, V)으로 임계영역에 접근하는 잠금장치에 대한 이론적 기반

. 상호배제 해결을 위한 HW 방법

해결방안 설명
인터럽트 사용금지 - 공유 변수가 변경되는 동안 인터럽트 발생을 허용하지 않음
- 단일 프로세서에서 가능하고 멀티 프로세서에는 적용할 없음
Test and Set - HW에서 워드(word) 내용을 검사하고 변경하는 명령어의 제공

function Test-and-Set(var target: boolean): boolean:
begin
    Test-and-Set := target:
        Target := true;
end;
Swap - HW에서 워드간에 내용을 원자적으로 교환할 있는 명령어 제공

Procedure Swap (var a, b: boolean);
    var temp: boolean;
    begin
        temp := a;
        a := b;
        b := temp;
    end;

 

III. 상호배제 기법의 발전

- 상호배제 기법은 예전 기법의 단점을 보완하면서 점점 진화 발전해오고 있음

- 많은 프로세스가 공유자원을 공유하는 환경에서 개발자가 쉽게 상호배제를 구현할 있도록 더욱 진화 발전해갈 것으로 예상됨

반응형

'정보관리기술사 > CA_OS' 카테고리의 다른 글

우선순위 역전  (0) 2023.11.24
Semaphore  (1) 2023.11.23
RAID  (1) 2023.11.21
HA(High Availability)  (1) 2023.11.20
결함허용 컴퓨터(FTS)  (2) 2023.11.19

+ Recent posts