IT지식/Computer Science

운영체제에서 자원의 접근 방식, 공유자원과 임계영역

맨땅에헤딩개발자 2025. 1. 30. 20:06

공유자원

시스템 내에서 각 프로세스, 스레드가 함께 접근할 수 있는 메모리, 파일, 데이터 등의 자원이나 변수를 의미합니다.

 

이러한 상태의 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁상태라 합니다.

 

공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 영역을 임계 영역이라고 합니다.

공유 자원을 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기에 한 프로세스가 임계 영역에서

수행 중이면 다른 프로세스가 접근을 못하도록 막아야합니다.

 

 

위와 같이 경쟁상태를 잘 관리하지 못하면 데이터 정합성 및 무결성을 해칠 수 있습니다.

 

 

경쟁상태를 해결하는 방법 

 

1. Mutex(Mutual Exclusion)

상호 배제 라고도 불리는 메커니즘인데 한 프로세스가 공유 자원 사용 시 잠금을 설정하고 다른 프로세스 및 쓰레드는

접근이 불가합니다. 사용 후 잠금을 해제하며 뮤텍스는 하나의 잠금 또는 해제만 가질 수 있습니다.

 

2. 세마포어

세마포어는 일반화된 뮤텍스를 일컫는데 간단한 정수N과 두 함수 wait(), signal()로 공유 자원에 대한 접근을 처리합니다.

이를 통해 여러 프로세스가 동시에 임계 영역에 접근할 수 있습니다.

 

3. 모니터

 모니터는 둘 이상의 스레드나 프로세스가 공유 자원에 안전하게 접근할 수 있도록 공유 자원을 숨기고 해당 접근에

인터페이스만 제공하는 객체입니다.

 

 

세마포어와 모니터의 차이

 

모니터는 세마포어보다 구현하기 쉬우며 한번에 하나의 프로세스만 공유 자원에 접근할 수 있으며 상호배제가 자동으로 이루어집니다.

세마포어는 모니터보다 구현 난이도가 높지만 여러개의 프로세스가 공유 자원에 접근이 가능하며 상호배제를 명시적으로

구현해야 합니다.