둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
두 개 이상의 프로세스가 공유 자원에 동시에 접근할 때 결과값에 영향을 줄 수 있는 상황으로, 동시 접근 시 자료의 일관성을 해치는 결과가 나타날 수 있다.
문제점
: 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우 ⇒ 사용자 프로세스는 해당 프로세스에 할당 받은 메모리에만 존재할 수 있지만 커널은 서로 다른 프로세스가 공유하기 때문에 발생
해결법
: 커널모드에서 작업을 수행하는 동안 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다.
문제점
: 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스2로 넘어가 같은 데이터를 조작하는 경우
해결법
: 프로세스가 커널모드에서 작업을 하는 경우 시간이 초과되어도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 한다.
문제점
: 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
해결법
: 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 한다. ⇒ 매 순간 그 데이터에 접근하는 프로세스는 1개
세마포어 (Semaphore)
& 뮤텍스 (Mutex)