공유 자원에 대해 두개 이상의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태

→실행순서에 따라 결과값이 달라질수 있는 상태

 

경쟁상태에서 직면할 수 있는 문제

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

+ Recent posts