세마포와 모니터의 차이점

Anonim

세마포어 대 모니터

세마포어는 여러 프로세스가 공용에 액세스하지 못하도록하는 데 사용되는 데이터 구조입니다 자원 또는 중요한 섹션을 병렬 프로그래밍 환경에서 동시에 사용할 수 있습니다. 세마포는 데드 록 및 경쟁 조건을 피하기 위해 사용됩니다. Monitor는 여러 프로세스가 공통 리소스에 동시에 액세스하는 것을 피하기 위해 사용되는 프로그래밍 언어 구조이므로 상호 배제를 보장합니다. 모니터는 조건부 변수를 사용하여이 작업을 수행합니다.

세마포 란 무엇입니까?

세마포어는 중요한 섹션에 상호 배제를 제공하는 데 사용되는 데이터 구조입니다. 세마포어는 주로 wait (역사적으로 P로 알려짐) 및 signal (역사적으로 V로 알려짐)이라는 두 가지 작업을 지원합니다. wait 연산은 세마포어가 열리고 signal 연산이 다른 프로세스 (쓰레드)가 들어갈 때까지 프로세스를 차단한다. 각 세마포어는 대기중인 프로세스 대기열과 연관됩니다. wait 오퍼레이션이 쓰레드에 의해 호출 될 때, 세마포어가 열려 있다면 쓰레드는 계속 될 수있다. 대기 조작이 스레드에 의해 호출 될 때 세마포어가 닫히면 스레드는 차단되고 대기열에서 대기해야합니다. 시그널 연산은 세마포어를 열고 이미 큐에서 기다리고있는 쓰레드가 있다면 그 프로세스는 계속 진행할 수있다. 그리고 큐에 대기중인 쓰레드가 없다면 그 시그널은 다음 쓰레드를 위해 기억된다. 뮤텍스 세마포어와 카운팅 세마포어라는 세 가지 유형의 세마포가 있습니다. 뮤텍스 세마포 (mutex semaphores)는 리소스에 대한 단일 액세스를 허용하고 세마포 계산 (counting semaphores)은 여러 스레드가 리소스 (몇 개의 단위가 있음)에 액세스 할 수있게합니다.

모니터 란 무엇입니까?

모니터는 공유 데이터에 대한 액세스를 제어하는 ​​데 사용되는 프로그래밍 언어 구조입니다. 모니터는 공유 데이터 구조, 프로 시저 (공유 데이터 구조에서 작동) 및 동시 프로 시저 호출 간의 동기화를 캡슐화합니다. 모니터는 데이터가 구조화되지 않은 액세스에 직면하지 않도록하고 해당 절차를 통해 모니터의 데이터에 액세스하는 트레드가 정당한 방식으로 상호 작용하도록 보장합니다. 모니터는 주어진 시간에 하나의 스레드 만 모니터 프로시 듀어를 실행할 수있게하여 상호 배제를 보장합니다. 다른 스레드가 모니터에서 메소드를 호출하려고 시도하면 스레드가 이미 모니터에서 프로 시저를 실행하고있는 동안 두 번째 프로시 저는 차단되고 대기열에서 대기해야합니다. Hoare 모니터와 Mesa 모니터라는 두 종류의 모니터가 있습니다. 이들은 주로 스케줄링 의미가 다릅니다.

세마포어와 모니터의 차이점은 무엇입니까? 세마포어와 모니터가 모두 병렬 프로그래밍 환경에서 상호 배제를 달성하는 데 사용 되더라도이 작업을 수행하는 데 사용되는 기술은 서로 다릅니다.모니터에서 상호 배제를 달성하는 데 사용되는 코드는 단일 장소에 있으며 더 구조화되어 있으며 세마포어 코드는 대기 및 신호 함수 호출로 배포됩니다. 또한 세마포어를 구현할 때 실수를하는 것은 매우 쉽지만 모니터를 구현할 때 실수를 할 가능성은 거의 없습니다. 또한 모니터는 조건 변수를 사용하지만 세마포어는 그렇지 않습니다.