프로세스 동기화

이전 포스팅에서 세마포어 방식을 이용한 동기화 문제 해결법에 대해 알아보았습니다. 이번 시간에는 모니터 방식에 대해 설명드리겠습니다. 세마포어와 모니터는 둘다 프로세스 동기화 문제를 프로그래머 입장에서 좀 더 쉽게 할 수 있게 해줍니다.  세마포어 방식은 단점이 있는데, 만약 한번 실수하게 되면 모든 시스템에 치명적인 영향을 준다는 것입니다.  예를 들어 Critical section에 들어가기 전 V 연산을 하고 빠져나올 때 P 연산을 하게 된다면, 2개 이상의 프로세스가 Critical section에 들어갈 수 있어 상호 배제 원칙(Mutual exclusion)이 깨지게 됩니다.  또 한가지 경우는 P 연산 후 빠져나올 때 P 연산을 한번 더 수행한다면, Deadlock에 걸려 어느 누구도 Cri..
1. Critical Section(임계 영역) 프로세스 동기화 문제를 해결하는 방법에 대해 알아보기 전에, 먼저 알아야할 용어가 있습니다. Critical Section(임계 영역)에 대한 것입니다.  사진을 통해 설명드리자면, 공유 데이터인 X에 프로세스 P1과 P2가 거의 동시에 접근하는 상황에서 공유 데이터를 접근하는 코드가 Critical Section 입니다. 만약 프로세스 1이 Critical Section에 있을 때, 다른 프로세스에게 CPU 제어권을 빼앗기더라도 공유 데이터에 접근하는 Critical Section은 막아두어야 합니다. 프로세스 1이 Critical Section에 빠져나왔을 때 프로세스 2가 Critical Section에 접근할 수 있습니다.   즉,  Critical..
1. 데이터의 접근 프로세스 동기화에 대한 설명 이전에 컴퓨터 시스템 안에서 데이터가 접근되는 패턴에 대해 간단히 짚고 넘어가겠습니다. 컴퓨터 시스템 어떤 위치에 있던 데이터에 접근하는 방식은 아래와 사진과 같은 패턴을 가집니다.  우선 데이터가 저장된 위치가 있을 것이고, 그 저장된 데이터를 읽어와 연산해서 다시 원래의 저장된 위치에 저장하는 방식을 거치게 됩니다. 여기서 저장된 위치에서 읽어와 연산 후 다시 반영을 하기 때문에 동기화의 문제가 생길 수 있습니다. 만약 데이터를 읽기만 하면, 누가 읽든, 누가 읽던 도중에 다른 프로세스가 읽든 별로 문제가 되지 않습니다.  그러나 데이터를 수정해야 한다면, 누군가 수정할 때 다른 곳에서 수정이 동시에 진행되는 상황 등이 있다면, 어떤 값을 연산 결과에 ..
동구름이
'프로세스 동기화' 태그의 글 목록