차례:
정의-CSR (Critical Section Routine)이란 무엇입니까?
CSR (Critical Section Routine)은 프로세스가 독점 잠금을 획득하여 다른 프로세스가 동시에 실행할 수 없도록하는 코드 섹션입니다. 종종 하나 이상의 프로세스가 운영 체제에서 동시에 실행되어 파일 및 리소스에 액세스하기 위해 이러한 프로세스가 서로 경쟁하도록합니다. 리소스 관련 코드의 일부가 실행되는 동안 하나의 프로세스 만 리소스에 액세스 할 수 있어야합니다.
다른 프로세스가 대기하는 동안 CSR의 프로세스가 실패하지 않도록 프로세스 관리 구성 요소가 시간 제한을 설정합니다. 따라서 프로세스는 제한된 시간 동안 독점 잠금에 액세스 할 수 있습니다.
Techopedia는 CSR (Critical Section Routine)을 설명합니다.
CSR을 구현하기위한 주요 요구 사항은 다음과 같습니다.
- 상호 배제 : 프로세스가 CSR에서 실행 중이면 다른 프로세스를 시작할 수 없습니다.
- 진행 조건 : CSR에서 실행중인 프로세스가없고 입력하려는 프로세스가있는 경우 일정 시간 내에 수행 할 수 있습니다. 프로세스 중 하나가 CSR에 들어가고 다른 프로세스는 기다립니다.
- 경계 대기 : 프로세스가 CSR에 들어가기를 요청하고 요청이 승인되기 전에이 기간 동안 CSR에 들어가기를 기다리는 프로세스 수에 대한 상한이 있어야 대기 큐의 프로세스가 고갈되지 않고 모든 프로세스가 발생하지 않습니다. CSR에 진입 할 차례입니다.
특정 코드에서 CSR은 다음 속성을 통해 식별 할 수 있습니다.
- 코드는 읽기-쓰기-업데이트 작업 순서로 특징 지어집니다.
- 코드 섹션은 다른 코드에서 변수를 변경하여 읽기-쓰기-업데이트 시퀀스를 수행합니다.
- 코드를 수정하여 다른 코드의 데이터 구조에 액세스하는 코드 또는 다른 프로세스에 의해 수정 될 수있는 데이터 구조를 사용하는 코드가 있습니다.
중요 섹션의 개념은 인터럽트 기능을 사용하는 하드웨어에 적용될 수 있습니다. 프로세스가 중요 섹션에 들어갈 때마다 프로세서의 모든 인터럽트를 비활성화하여 다른 프로세스가 리소스에 대한 잠금을 요청할 수 없도록해야합니다. 마찬가지로 프로세스가 실행을 마치면 인터럽트가 다시 활성화됩니다. 또 다른 방법은 프로세스 실행 또는 종료를 지시하는 신호처럼 작동하는 특수 변수 인 세마포어를 사용하는 것입니다.