공유 자원에 대해 두개 이상의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
→실행순서에 따라 결과값이 달라질수 있는 상태
경쟁상태에서 직면할 수 있는 문제
Mutual exclusion(상호배제) 위반 문제
- 자원은 한 번에 하나의 프로세스 또는 스레드만이 사용할 수 있어야 한다.
deadlock (교착상태)
- 멀티프로세스나 멀티스레드 환경에서 발생할 수 있는 상황으로, 각 프로세스 또는 스레드가 서로가 가지고 있는 자원을 점유한 채로 다른 프로세스 또는 스레드가 필요로 하는 자원을 기다리는 상태를 말합니다
- 각 프로세스가 서로 필요로 하는 자원을 점유한 채 대기 상태에 빠진상태
starvation(기아상태)
- 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리다가 끊임없이 필요한 컴퓨터 자원을 가져오지 못하는 상황을 말합니다.
- 특정 프로세스가 필요한 자원을 영원히 할당받지 못하여 작업을 진행하지 못하는 상태
예방 방법
두 개 이상의 프로세스가 동시에 하나의 자원을 사용할 수 없도록 막아야한다.
이를 실현하기 하기 위한 방법으로 Mutex (Mutual Exclusion) 와 Semaphore(세마포어) 가 있다.
- Mutex : 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 방법
- Semaphore: 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것, 하나의 스레드만 들어가게 할 수도 있고 여러 개의 스레드가 들어가게 할 수 있다
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
[ OS ] 세마포어 와 뮤텍스 (0) | 2024.06.19 |
---|---|
[ OS ] 문맥교환 (context switch) (0) | 2024.06.18 |
[ OS ] 시스템 콜 (system call) (0) | 2024.06.18 |