운영체제 프로세스 동기화와 병행프로세스 – 세마포어(Semaphore), 모니터(Monitor)

운영체제 프로세스 동기화와 병행프로세스 – 세마포어(Semaphore), 모니터(Monitor)

운영체제에서 프로세스 동기화는 병행프로세스 간에 공유된 자원을 안전하게 사용하기 위한 중요한 개념입니다. 병행프로세스는 두 개 이상의 프로세스가 동시에 실행되는 상황을 의미하며, 이들은 독립적으로 수행될 수도 있고, 때로는 상호 협력이 필요한 경우도 있습니다.

이러한 상황에서 프로세스 간의 동기화는 교착상태, 임계구역, 공유자원 접근 등의 문제를 해결하는 데 필수라 할 수 있는데요, 이번 글에서는 병행프로세스에 관한 해결책으로서 세마포와 모니터에 대해 알아보도록 하겠습니다.

병행프로세스와 동기화의 필요성

병행프로세스는 독립적으로 실행될 수 있거나 상호 협력이 필요한 프로세스의 집합인데요, 협력적 병행프로세스는 제한된 자원을 공유하기 위해 서로 상호작용하고, 이로 인해 교착상태와 임계구역 문제 등이 발생하며, 이러한 문제를 해결하기 위해서는 프로세스 동기화가 필요 할 수 있습니다.

병행처리의 문제점과 해결방법

  1. 상호배타적인 자원 사용 – 병행프로세스 간에 공유자원을 안전하게 사용하기 위해서는 자원을 상호배타적으로 사용할 수 있어야 합니다(즉, 특정 프로세스가 자원을 점유하면 다른 프로세스는 접근하지 못하도록 해야 함)
  2. 임계구역 제어 – 공유자원 중에서도 임계구역에 진입한 프로세스는 상호배제를 보장받아야 합니다(다른 프로세스가 임계구역에 접근하지 못하도록 해야 함)
  3. 교착상태 문제 – 두 개 이상의 프로세스가 서로 대기하며 더 이상 진행하지 못하는 교착상태를 해결해야 함

하드웨어에 의한 동기화

하드웨어 동기화 도구 중 하나로 “TestAndSet”이 사용됩니다. 이를 통해 락(잠금)을 획득하고 자원을 사용하는 프로세스는 다른 프로세스가 접근하지 못하도록 합니다.

세마포(Semaphore)를 이용한 동기화

세마포는 공유자원에 대한 접근을 조절하기 위한 동기화 도구로 P와 V 연산을 사용합니다. 세마포를 이용하여 생산자/소비자 문제나 읽기/쓰기 문제를 해결할 수 있습니다.

모니터(Monitor)

모니터는 세마포보다 추상적인 개념으로, 클래스 형태로 공유자원과 관련된 함수를 포함합니다. 모니터를 사용하면 상호배제와 동기화를 더 쉽게 구현할 수 있습니다.

메시지

메시지를 이용한 프로세스 간 통신도 중요한 요소인데요, 메시지를 사용할 때에는 네이밍, 복사, 버퍼링, 길이 등 다양한 점들을 고려해야 합니다. 간접 네이밍과 버퍼링은 효율적인 메시지 전달을 위한 중요한 고려 사항 중 하나라 할 수 있습니다.

결론

프로세스 동기화는 병행프로세스 간의 공유 자원 사용을 안전하게 관리하고 교착상태 문제를 해결하기 위한 중요한 개념이며, 세마포와 모니터는 이러한 문제를 해결하기 위한 동기화 도구로 사용되고, 메시지를 이용한 프로세스 간 통신은 병행프로세스 간의 협력을 가능하게 합니다. 이러한 동기화와 통신 기술은 운영체제와 병행프로그래밍에 있어서 중요한 역할을 하고 있습니다

이전 글 – 스레드(Thread)란? – 쓰레드 개념 알아보기

Leave a Comment