프로 세 스 동기 화 (1) 의 PV 작 동 / 신 호 량 / 상호 배척 량
5682 단어 신호 량
PV
PV 조작 은 네덜란드인 Dijkstra 가 제기 한 것 입 니 다. (네덜란드 어 에서 P: Probren 은 검 측 이라는 뜻 입 니 다. V: Verhogen 은 증분 이라는 뜻 입 니 다) PV 조작 은 병행 프로 세 스 간 CPU 의 경쟁 을 해결 할 수 있 고 병행 프로 세 스 의 협력 관 계 를 해결 할 수 있 습 니 다. PV 조작 은 지 키 는 공평 한 전략 은 FCFS 입 니 다.
주의: PV 작업 은 원 어 작업 입 니 다. 데이터 베 이 스 를 배 운 적 이 있 습 니 다. 우 리 는 원 어 는 코드 를 말 하 는 것 임 을 알 고 있 습 니 다. 다 하거나 하지 않 거나 이 코드 가 완성 되 지 않 으 면 중단 할 수 없습니다.
다음 코드 보기
1 typedef struct semaphore{
2
3 int value; //
4
5 struct pcb *list;//
6
7 };
8
9 // P ( )
10
11 void P(semaphore &s){
12
13 s.value--;
14
15 if(s.value<0){// , , P
16
17 W.(s.list);// wait.
18
19 }
20
21 }
22
23 // V ( )
24
25 void V(semaphore &s){
26
27 s.value++;
28
29 if(s.value<=0){// ,
30
31 R(s.list);// release.
32
33 }
34
35 }
이 부분 이 PV 작업 의 핵심 코드 입 니 다.
P 작업 중 자원 이 없 으 면 자신 을 막 고 스케줄 을 기다 리 는 대기 열 에 자신 을 넣 습 니 다.
V 작업 중 막 힌 대기 열 이 있 으 면 프로 세 스 를 깨 웁 니 다.
Note:
value 초기 값 은 자원 수 입 니 다.
value 는 0, 자원 이 마침 다 떨 어 졌 습 니 다.
value 가 0 보다 크 면, 그리고 자원..
value 가 0 보다 작 으 면, 절대 값 은 대기 열 에 걸 려 있 는 프로 세 스 수 와 같 습 니 다.
상호 배척 량
상호 배척 량 은 말 그대로 이해 하기 쉬 운 것 이 바로 과정 간 의 상호 배척 관 계 를 해결 하 는 것 이다.
일반적인 상호 배척 량 은 병렬 프로 세 스 가 임계 구역 에 들 어가 기 전의 테스트 에 사 용 됩 니 다. (임계 구역: 병렬 프로 세 스 에서 공유 변수 와 관련 된 코드 세그먼트)
구현 코드 는 다음 과 같 습 니 다:
1 semaphore mutex;
2
3 mutex = 1;
4
5 void M(){
6
7 P(mutex);
8
9 { }
10
11 V(mutex);
12
13 }
Note:
mutex 의 값 은 1 / 0 이 고 mutex 는 1 일 때 임계 구역 을 사용 할 수 있 음 을 나타 낸다. mutex 는 0 으로 임계 구역 을 사용 할 수 없 음 을 나타 낸다. mutex 도 공유 자원 에 자 물 쇠 를 추가 할 수 있다.
개념 총화:
1) 동기 화: 신 호 량 초기 화 S0 = n, S1 = 0, 두 개의 병행 프로 세 스 는 두 개의 신 호 량 이 필요 합 니 다. 다음 프로 세 스 는 0 으로 초기 화 되 고 다른 프로 세 스 는 자원 수로 초기 화 됩 니 다. 더 많은 병행 프로 세 스 를 도입 할 때 하나의 프로 세 스 를 추가 할 때마다 신 호 량 이 증가 합 니 다.
2) 상호 배척: 신 호 량 이 있 고 하나만 있 으 며 초기 값 은 1 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
프로 세 스 동기 화 (1) 의 PV 작 동 / 신 호 량 / 상호 배척 량OS 에서 신 호 량 은 자원 의 실체 수 를 나타 내 고 초기 신 호 량 은 하나의 Int 일 뿐 입 니 다. 하나의 int 에서 자원 수 를 나 타 낼 수 있 지만 여러 프로 세 스 가 CPU 를 선점 할 때 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.