프로세스 동기화는 데이터 불일치로 이어질 수 있는 공유 데이터에 대한 동시 액세스 문제를 해결하는 기술입니다. 협업 프로세스는 다른 프로세스에 영향을 주거나 다른 프로세스의 영향을 받아 일관성 없는 프로세스 데이터를 생성할 수 있는 프로세스를 의미합니다. 따라서 데이터 일관성을 보장하려면 프로세스 동기화가 필요합니다.
아래에는 특정 프로세스 P1의 중요 섹션 구조가 나와 있습니다.
에는 다음 세 가지 요구 사항이 있습니다. 중요 섹션이 충족되어야 합니다.
운영 체제에서 중요한 부분을 처리하기 위해 일반적으로 사용되는 두 가지 방법이 있습니다.
선점형 커널 - 선점형 커널을 사용하면 프로세스가 선점되는 동안 프로세스를 선점할 수 있습니다. 커널 모드에서 실행됩니다.
비선점형 커널 - 비선점형 커널은 커널 모드에서 실행되는 프로세스가 선점되는 것을 허용하지 않습니다.
Peterson의 솔루션은 임계 영역 문제에 대한 고전적 기반 소프트웨어 솔루션입니다. 중요한 부분과 나머지 부분을 번갈아 사용하는 두 가지 프로세스로 제한됩니다. Peterson의 부분에서는 두 프로세스 간에 두 개의 데이터 항목을 공유해야 합니다. 즉,
다음은 Peterson 솔루션의 프로세스 P 구조입니다.
Peterson 솔루션은 세 가지를 모두 유지합니다. 조건 -
상호 배타적
Test 및 Set()
아래는 TestAndSet()의 상호 배타적 구현입니다.
Semaphore
Semaphore는 TestAndSet() 및 Swap() 명령으로 인해 발생하는 문제를 극복하는 데 사용되는 동기화 도구입니다. 세마포어 S는 wait() 및 signal()의 두 가지 표준 원자 연산을 통해 액세스할 수 있는 정수 변수입니다.wait() 함수:
wait(S) { While S <= 0 ; // no operation S--; }Signal() 함수 함수:
signal(S) { S++; }프로세스가 세마포어 값을 수정하는 중이면 다른 프로세스가 동시에 동일한 세마포어 값에 대해 작업을 수행할 수 없습니다.
아래는 세마포어를 사용한 상호 배제 구현입니다.
운영 체제는 두 가지 유형의 세마포어를 사용합니다.
세마포 계산
- 이 유형의 세마포 값은 무제한 도메인 내에서 달라질 수 있습니다이진 세마포
- 이 유형의 세마포 값은 0에서 1 사이일 수 있습니다. 뮤텍스 잠금이라고도 합니다. 이는 운영 체제에서 여러 프로세스의 중요 섹션 문제를 해결하는 데 사용됩니다.위 내용은 C/C++의 프로세스 동기화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!