CS/OS

[운영체제] 5-1. 프로세스 동기화

F12:) 2023. 10. 2. 22:45

오늘은 프로세스 동기화에 대해서 다뤄봅니다. 5장에서 다루는 내용들은 운영체제 분야에서 다소 중요한 개념이므로, 꼭 그리고 자세하고 정확하게 짚고 넘어갑시다.

 


동시성 제어(Concurrency Control)

프로세스 동기화에 대한 설명을 하기 전, 동시성 제어에 대해 짚고 넘어가봅시다. 단일 프로세서를 기준으로 사실 컴퓨터는 하나의 일만 처리하므로 동시라는 말이 어울리지 않을 수 있습니다. 하지만, 매우 빠른 속도로 여러가지 일을 동시에 처리하는 컴퓨터는 마치 사람이 보기에는 동시에 처리되는 것처럼 보일 수 있죠.

 

동시성을 제어한다는 것은, 프로세스(또는 쓰레드)가 매우 빠른 속도로 변화함에 따라 데이터에 혼란이 있을 수 있는 사태를 방지해야한다는 것을 의미합니다.

 

따라서, 우리는 이러한 컴퓨터 자원을 제어하기 위해 프로세스 동기화 개념을 도입합니다.


Cocurrency에 대한 keyword

그럼 이제, 프로세스 동기화에 대한 글을 앞으로 다룰 때에 자주 쓰일 단어들을 몇개 짚어보고 갑시다.

 

Race Condition

만약 2개 이상의 프로세스들이 공유된 자원을 동시에 사용하려고 접근할 때, 어느 프로세스가 먼저 진행되는 지에 따라, 결과가 달라지는 경우를 의미합니다. 즉, 원래 프로세스들의 실행은 독립적으로 이루어져야하는데, 순서에 따라 결과가 달라지므로 프로세스의 실행이 종속적이게 되어버리는 상태를 말합니다.

 

Mutual Exclusion

상호배타, 상호배제원리라고도 합니다. 여러 개의 쓰레드들이 공유된 자원을 사용할 때, 하나의 쓰레드만이 해당 자원을 접근할 수 있도록 하는 성질을 의미합니다.

 

Critical Section

공유된 자원에 접근하는 instruction 또는 instruction set을 의미합니다.

 

 

정리해보면,

Critical Section에서 Mutualy Exclusively하게 실행되지 않는다면, race Condition이 발생할 수 있는 것이죠.

 

Starvation

굶주림. 공유된 자원을 프로세스가 접근하려고 하는데, 이미 해당 critical section을 실행하는 프로세스가 존재하여 실행하지 못하고 critical Section을 실행되기를 평소보다 오래 기다리는 상태를 의미합니다.

 

Deadlock

Starvation이 영원히 지속되어있는 것을 의미합니다.

 

좌측의 경우에서 우측의 경우가 된다면 우측의 상태를 Deadlock이라 한다.


다음 시간에는 Race Condition에 대해 조금 더 다뤄보겠습니다.