Computer Science

[운영체제] 세마포 개념, 용도, 세마포 구현 원리

imsunbow 2024. 1. 14. 11:03

세마포(Semaphore)는 Mutex Lock보다 더 정교하고 강력한 프로세스 동기화 도구이다. (* 동기화: 시스템을 동시에 작동시키기 위하여 여러 사건들을 조화시키는 것)

세마포 S는 특별한 표준 동기화 연산을 통해서만 접근 할 수 있는 정수 변수로서, 세마포 값은 대개 사용 가능한 특정 자원의 수를 의미한다. 이 때 Semaphore 연산은 초기화 연산(semaphore S의 값을 초기화 하는 연산)과 두개의 원자적 연산(P operation & V operation)으로 나눈다.

 

Semaphore는 1)상호배제, 2) 유한 개수의 자원 접근, 3) 프로세스 동기화를 위한 것이 목적이다. 이를 위해 사용되는 각각의 방법을 알아보자면,

 

1) 상호배제 구현 > 이진 세마포 (Mutex lock과 유사함)

semaphore의 값을 1로 초기화하여, 임계구역 접근 제어에 사용한다.

 

2) 유한 개수의 자원 접근을 구현 > Counting semaphore

Counting Semaphore란 유한한 개수의 자원을 접근하기 위해 사용된다. 즉 한정된 concurrency를 설정하기 위함이다. 이 떄 semaphore 의 값은 최대 가용 자원 개수를 의미한다

 

3) 프로세스 동기화 구현: process p1, p2가 각각 존재한다고 할 때, signal을 통해 조절한다.

반응형