공유자원
시스템 내에서 각 프로세스, 스레드가 함께 접근할 수 있는 메모리, 파일, 데이터 등의 자원이나 변수를 의미합니다.
이러한 상태의 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁상태라 합니다.
공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 영역을 임계 영역이라고 합니다.
공유 자원을 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기에 한 프로세스가 임계 영역에서
수행 중이면 다른 프로세스가 접근을 못하도록 막아야합니다.
위와 같이 경쟁상태를 잘 관리하지 못하면 데이터 정합성 및 무결성을 해칠 수 있습니다.
경쟁상태를 해결하는 방법
1. Mutex(Mutual Exclusion)
상호 배제 라고도 불리는 메커니즘인데 한 프로세스가 공유 자원 사용 시 잠금을 설정하고 다른 프로세스 및 쓰레드는
접근이 불가합니다. 사용 후 잠금을 해제하며 뮤텍스는 하나의 잠금 또는 해제만 가질 수 있습니다.
2. 세마포어
세마포어는 일반화된 뮤텍스를 일컫는데 간단한 정수N과 두 함수 wait(), signal()로 공유 자원에 대한 접근을 처리합니다.
이를 통해 여러 프로세스가 동시에 임계 영역에 접근할 수 있습니다.
3. 모니터
모니터는 둘 이상의 스레드나 프로세스가 공유 자원에 안전하게 접근할 수 있도록 공유 자원을 숨기고 해당 접근에
인터페이스만 제공하는 객체입니다.
세마포어와 모니터의 차이
모니터는 세마포어보다 구현하기 쉬우며 한번에 하나의 프로세스만 공유 자원에 접근할 수 있으며 상호배제가 자동으로 이루어집니다.
세마포어는 모니터보다 구현 난이도가 높지만 여러개의 프로세스가 공유 자원에 접근이 가능하며 상호배제를 명시적으로
구현해야 합니다.
'IT지식 > Computer Science' 카테고리의 다른 글
CPU 스케줄링 알고리즘 선점형, 비선점형 (1) | 2025.01.30 |
---|---|
프로세스 교착상태의 원인과 해결방법 (0) | 2025.01.30 |
프로세스와 스레드의 차이 (0) | 2025.01.30 |
프로세스간의 통신 IPC(Inter-Process Communication) (0) | 2025.01.30 |
페이지폴트의 과정과 스와핑 (0) | 2025.01.30 |