소개
운영 체제 프로세스는 동일한 시스템에서 실행되는 다른 프로세스와 상호 작용하여 공통 작업을 완료합니다. 다른 프로세스와 상호 작용하는 프로세스를 공동 운영 프로세스라고 합니다.
프로세스에서 구현된 프로세스 간 통신 전략에 기초하여,프로세스에서 주소 공간을 다른 프로세스와 공유하거나 메시지 교환을 통해 통신할 수 있다. 이전 기술에서는 두 프로세스가 공통 주소 공간을 공유하므로 통신을 제어하는 것이 중요합니다.
이러한 프로세스 통신 제어를 동기화라고 합니다. 적절한 동기화가 없으면 프로세스가 오래된 데이터를 읽거나 다른 프로세스 데이터를 덮어 쓸 수 있습니다.
세마포어와 뮤텍스는 동기화를 구현하고 프로세스 조정을 관리할 수 있는 두 가지 메커니즘입니다. 이 글에서,우리는이 두 동기화 유틸리티로보고 다양한 특성을 비교합니다.
중요 섹션 이해
세마포어와 뮤텍스에 대해 논의하기 전에 중요 섹션 문제를 이해해 보겠습니다.
우리가 포함하는 시스템을 가지고 있다고 가정 해 봅시다 엔 프로세스. 이러한 각 프로세스에는 프로세스가 공통 변수 업데이트,테이블 업데이트를 수행하거나 파일에 쓸 수있는 코드 세그먼트가 있습니다. 이 코드 세그먼트를 프로세스의 중요 섹션이라고 합니다.
2.1. 중요 섹션의 특성 문제
중요 섹션의 필수 특성은 프로세스가 해당 중요 섹션의 실행을 시작하면 다른 프로세스가 해당 중요 섹션을 실행할 수 없다는 것입니다. 즉,두 프로세스가 중요 섹션을 동시에 실행할 수 없습니다. 이 중요한 섹션 문제는 프로세스가 협력을 사용할 수 있도록 프로토콜을 설계하는 것입니다.
각 프로세스는 중요 섹션에 들어갈 수 있는 권한을 얻어야 합니다. 사용 권한을 구현하는 코드를 항목 섹션이라고 합니다. 마찬가지로 중요 섹션의 종료를 구현하는 코드를 종료 섹션이라고 합니다.
2.2. 중요 섹션 문제의 기준
중요 섹션 문제에 대한 해결책은 다음 기준을 충족해야 합니다:
- 상호 배제:프로세스가 해당 중요 섹션을 실행하는 경우 다른 프로세스가 해당 중요 섹션을 실행할 수 없습니다.
- 진행:프로세스가 해당 중요 섹션을 실행하지 않으면 다른 프로세스가 해당 중요 섹션을 실행하기로 결정할 수 있습니다. 솔루션 및 구현에 따라 중요 섹션을 실행할 수 있는 프로세스가 선택됩니다. 주목할 만한 특징은 프로세스가 임계 섹션
- 제한 대기:프로세스가 임계 섹션 입력 섹션을 요청하고 다른 프로세스가 임계 섹션을 실행하는 횟수
뮤텍스 잠금
운영체제에서 임계 섹션 문제를 해결할 수 있는 몇 가지 유틸리티가 있을 때 프로세스에 대한 제한 대기 시간이 있어야 한다는 것입니다. 상호 제외(뮤텍스)잠금 또는 뮤텍스가 가장 간단한 솔루션입니다. 뮤텍스 잠금을 사용하여 임계 섹션을 보호하고 경쟁 조건을 방지합니다. 프로세스는 임계 섹션에 액세스하기 전에 잠금을 획득해야 하며,임계 섹션의 실행을 완료하면 잠금을 해제합니다.
3.1. 뮤텍스 잠금은 어떻게 작동합니까?
잠금을 획득하고 해제하는 이 두 가지 기능은 획득()과 해제()의 두 가지 기능을 통해 표현됩니다. 획득 기능은 잠금을 획득하고 릴리스는 잠금을 해제합니다. 뮤텍스 잠금에는 잠금을 사용할 수 있는지 여부를 결정하는 부울 변수가 있습니다. 잠금을 사용할 수 있는 경우 획득()메서드가 성공하고 잠금을 사용할 수 없는 것으로 간주됩니다. 사용할 수 없는 잠금에 액세스하려고 하는 모든 프로세스는 잠금이 해제될 때까지 차단됩니다.
다음 의사 코드는 획득()방법을 보여줍니다:
다음 의사 코드는 릴리스()방법을 보여줍니다:
3.2. 뮤텍스의 단점
뮤텍스 잠금의 주요 단점은 잠금을 사용할 수없는 경우 스레드 스핀 잠금을 할 수 있다는 것입니다.
한 스레드가 잠금을 획득하고 해당 임계 섹션에 있는 동안 잠금을 획득하려고 시도하는 다른 모든 스레드는 스레드가 잠금을 사용할 수 있는지 여부를 주기적으로 확인하는 루프에 있습니다. 따라서 잠금을 위해 회전하고 다른 스레드에서 생산적으로 사용할 수있는 중앙 처리 장치 사이클을 낭비합니다.
이것은 단일 중앙 처리 장치 시스템에서 중요한 문제입니다. 스핀 록은 스레드가 잠금을 기다리는”사용 중”이므로 사용 중 대기 라고도합니다.
3.3. 뮤텍스의 장점
뮤텍스 잠금은 스핀 잠금 문제로 고통 받고 있지만 이점이 있습니다. 따라서 프로세스 컨텍스트 스위치가 필요하지 않습니다.
프로세스 컨텍스트 전환은 프로세스 제어 블록에서 실행 중인 프로세스 통계를 저장하고 다른 프로세스를 중앙 처리 장치에 다시 로드해야 하기 때문에 시간이 많이 걸리는 작업입니다. 시스템 자원을 많이 사용하는 윈도우 매니져에 싫증이 난다면,이 패키지는 상당히 흥미있을 것입니다. 따라서 일부 시나리오에서 짧은 기간의 스핀 록은 프로세스 컨텍스트 스위치보다 더 유용합니다.
세마포어
세마포어는 뮤텍스 잠금과 유사한 동기화 기능을 제공하지만 더욱 강력하고 정교한 또 다른 유틸리티입니다.
세마포어는 초기화 외에도 대기()와 신호()의 두 가지 표준 원자 연산을 통해 액세스되는 정수 변수입니다. 대기()연산은 피,신호()연산은 피.
대기()연산은 피.
대기()연산은 피.
대기()연산은 피.
대기()연산은 피.:
마지막으로,신호()동작을 살펴 보자:
!
대기()및 신호()에서 세마포의 정수 값에 대한 모든 연산은 원자 적으로 실행된다. 즉,한 프로세스가 세마포어 값을 수정하면 다른 프로세스가 동일한 세마포어 값을 동시에 수정할 수 없습니다.
세마포어의 값에 따라 세마포어와 이진 세마포어의 두 가지 범주로 분류됩니다. 계수 세마포어의 값은 0 에서 유한 값까지 다양합니다. 반면 이진 세마포어의 값은 0 에서 1 사이 일 수 있습니다.
4.1. 세마포어 카운팅
세마포어 카운팅은 지정된 리소스의 인스턴스 수를 제어 할 수 있습니다. 우리가 비유와 함께 계산 세마포어를 설명 할 수 있습니다.
연구실이 3 개 있는 도서관이 있고,도서관 사서가 각각 다른 방을 위한 10 개의 열쇠를 가지고 있다고 가정하자. 독자가 방에 접근을 요구하면 하자마자,방을 사용하기 위하여 열쇠를 얻는것을 필요로 한다. 일단 독자가 그들의 사용법으로 행해지면,사서에 방 열쇠를 돌려보낸다. 일단 모든 방이 사용 중이면,새로운 독자는 방이 기존하는 독자에 의해 비워질 때까지 기다릴 필요가 있습니다.
위의 예에서 리소스는 방이며 10 개의 인스턴스가 있습니다. 이러한 인스턴스는 10 으로 초기화 된 계수 세마포를 통해 관리됩니다. 이 세마포어 값은 세마포어의 대기()및 신호()방법을 통해 제어됩니다. 다음 다이어그램에서는 이를 보여 줍니다:
4.2. 이진 세마포어
이진 세마포어에는 0 과 1 의 두 가지 값이 있습니다. 세마포어가 관리하는 리소스를 사용할 수 있는 경우 세마포어 값은 1 입니다. 그렇지 않으면 리소스를 사용할 수 없음을 나타내는 0 으로 설정됩니다.
이진 세마포어는 뮤텍스 잠금과 동일한 기능을 가지고 있습니다. 뮤텍스 잠금을 지원하지 않는 시스템은 이진 세마포어를 활용하여 동일한 기능을 구현할 수 있습니다.
다음 다이어그램은 이진 세마포를 보여 줍니다:
세마포어 대. 뮤텍스
다음 표에는 세마포어 및 뮤텍스 잠금의 중요한 특성이 요약되어 있습니다:
결론
이 기사에서는 뮤텍스와 세마포어의 다양한 측면에 대해 논의했습니다.
먼저 중요한 섹션과 중요한 섹션 실행을 제어하는 뮤텍스 또는 세마포어의 필요성에 대해 논의했습니다. 그런 다음 뮤텍스와 세마포어에 대해 이야기했습니다.
마지막으로 세마포어와 뮤텍스의 비교를 제공했습니다.
컴퓨터 과학 또는 연구 분야에서 몇 년의 경험을 가지고 있고 그 경험을 지역 사회와 공유하는 데 관심이 있다면,우리의 기여 지침을 살펴보십시오.