Halo World

프로세스 간 동기화 (공유 자원에 대한 접근 문제) 본문

개발 지식/OS

프로세스 간 동기화 (공유 자원에 대한 접근 문제)

_Yeony 2017. 7. 11. 21:59

공유 자료를 병행 접근하면 자료의 불일치를 초래하기 때문에, 자료의 일관성을 유지하려면 협력적인 프로세스들의 바른순서로 수행을 보장하는 매커니즘이 필요하다.

이 때문에 임계 구역을 이용한다.


| 임계영역(Critical Section)


- 하나의 프로세스가 수정 가능한 공유 자원을 액세스하고 있을 때, 그 프로세스에 의해 참조되는 영역

- 하나의 프로세스가 공유 데이터게 접근하면, 다른 프로세스는 그 공유 데이터에 접근할 수 없도록 보장



| 상호 배제(Mutual Exclusion)


- 한 프로세스가 공유 기억장치 혹은 공유 파일을 사용하고 있을 때, 다른 프로세스들이 사용하지 못하도록 배제시키는 제어 기법



| 경쟁 조건(race condition)


- 2개 혹은 그 이상의 프로세스들이 공유메모리에 읽기/쓰기를 하고 그 결과가 어떤 프로세스를 언제 실행하느냐에 따라 결과가 달라질 수 있는 상황



| 임계 구역 상호 배제 기법


 1) 뮤텍스(Mutex)


- 일종의 Locking 매커니즘으로 lock을 가지고 있을 때만 공유 데이터에 접근 가능

- 화장실 갈 때 키를 가진 사람만이 갈 수 있고, 일을 다 본 후에 키를 반납하고 그 다음 사람이 이용 가능한 매커니즘

- lock에 대한 소유권이 있다. 즉, 키를 가진 사람만이 반납 가능하다.


 2) 세마포어(Semaphore)


- 동시에 리소스에 접근할 수 있는 허용가능한 counter의 개수를 의미한다.

- 어느 병실에 최대 5명까지 수용가능하다면 5명까지 counting을 하고, 그 이후는 밖에서 기다렸다가 한 사람이 나오면 다음 사람이 들어갈 수 있게 되는 매커니즘

- count 수에 따라 1개면 binary semaphore, 여러개이면 counting semaphore라고 하고, binary semaphore는 뮤텍스와 개념적으로 같다.

 


 * 뮤텍스 vs 세마포어


   : 뮤텍스는 공유자원에 대한 접근권한 즉, Lock이라는 키를 한 개만 가질 수 있고, 세마포어는 여러 개를 가질 수 있다.



 3) 모니터 (Monitor)


- 뮤텍스와 Condition Valuable(Queue라고도 함)를 갖고 있는 매커니즘

- 순차적으로만 사용할 수 있는 공유자원 또는 공유자원 그룹을 할당하는 데 사용되며, 데이터, 프로시저를 포함하는 병행성 고급 구조체

- 모니터 내부 변수는 모니터 내부에서만 접근할 수 있고, 이는 정보의 은폐 기법이라고 한다.

- 모든 자바 객체는 Monitor를 갖고 있다.




[참고]

정보보안기사&산업기사 / 탑스팟 / 조상진

http://slenderankle.tistory.com/197 

'개발 지식 > OS' 카테고리의 다른 글

디스크 스케줄링  (0) 2017.07.26
교착상태(Deadlock)  (0) 2017.07.12
CPU 스케줄링  (0) 2017.07.10
프로세스의 개념과 PCB  (0) 2017.07.09
[OS 문제] 2일차  (0) 2017.07.06