운영 체제(제3단원)
15456 단어 운영 체제
3.1 프로세스의 동기화와 배제
프로세스는 단일 프로세서 다중 환경에서 프로세스가 교체되어 실행되고 병발적인 특징을 나타낸다.
어떻게 프로세스 집행 결과의 정확성을 보증합니까?
상호작용 방식: 프로세스 간에 서로 상대방의 존재를 모른다(경쟁 관계) 프로세스 간에 간접적으로 상대방(공유 협력) 프로세스 간에 상대방의 존재를 안다(통신 협력)
프로세스 간의 상호작용: 상호 배척 동기화 통신
동기화: 여러 프로세스에서 발생하는 사건이 특정한 시퀀스 관계를 가지므로, 그들은 반드시 규정된 시퀀스에 따라 집행하여 하나의 임무를 공동으로 완성해야 한다.상호 배척: 여러 프로세스가 통일된 자원을 동시에 사용할 수 없다.임계 자원: 일정 시간 동안 한 프로세스만 사용할 수 있는 자원입니다.예를 들어 프린터 임계 구역: 모든 프로세스에서 임계 자원에 접근하는 코드입니다.
동기화 메커니즘이 지켜야 할 준칙: 빈 양보가 바쁘면 유한 기다림 양보권 기다림
상호 배타적 구현 하드웨어 방법: 전용 시스템 중단 금지: TS(Test and Set) 명령 Swap 명령
TS 명령
//TS :
boolean TS(lock);
boolean lock;
{ boolean temp;
temp = lock;
lock = true;
return temp;
}
//TS
while(TS(lock))
/* */;
;
lock = false;
;
Lock에는 두 가지 상태가 있습니다. lock = false일 때 자원이 비어 있음을 나타냅니다.lock = true 는 자원이 사용되고 있음을 나타냅니다.
상호 배척을 실현하기 위해 블로 변수 lock을 설정합니다. 그 초기값은false로 자원이 비어 있음을 나타냅니다.TS 명령을 사용하여 상호 배척을 실현합니다.
장점: 적용 범위가 넓고 여러 임계구를 간단하게 지원하는 단점:'양보권 대기'를 하지 못했다
상호 배타적인 소프트웨어 방법:
1. 단일 로고 알고리즘
// 0
while(turn != 0){}
// ;
;
turn = 1;
;
// 1
while(turn != 1){}
// ;
;
turn = 0;
;
공용 성형 변수 turn을 설정하여 P0, P1이 임계 자원에 번갈아 접근하도록 한다.
단점: 임계 구역에 강제적으로 번갈아 들어가면'공유 양보'를 보장할 수 없다.
2. 이중 표지, 선검사 알고리즘
// 0
while(flag[1]){}
// ;
flag[0] = true;
;
flag[0] = false;
;
// 1
while(flag[0]){}
// ;
flag[1] = true;
;
flag[1] = false;
;
그룹 flag을 설정합니다. 처음에는 모든 요소가false로 설정되어 모든 프로세스가 임계 구역에 들어가지 않았음을 나타냅니다.flag[i] =true는 프로세스가 임계 구역에 들어가서 실행되는 것을 의미합니다.여유 양보 문제를 해결했다.
단점: 임계구에 동시에 들어갈 수 있어'바쁘면 기다린다'는 보장이 없다.
3. 이중 표지, 먼저 수정 후 검사 알고리즘
// 0
flag[0] = true;
while(flag[1]){}
// ;
;
flag[0] = false;
;
// 1
flag[1] = true;
while(flag[0]){}
// ;
;
flag[1] = false;
;
두 프로세스가 선후로 flag[i]=true를 동시에 만듭니다.
단점: 임계 구역에 동시에 들어가지 않을 것을 보장하지만, 모두 들어가지 못할 수도 있다.틈이 나면 들어오라고 장담할 수 없다.
4. 먼저 수정, 후 검사, 후 수정 알고리즘
// 0
flag[0] = true;
turn = 1;
while(flag[1] && (turn == 1){}
//
;
flag[0] = false;
;
// 1
flag[1] = true;
turn = 0;
while(flag[0] && (turn == 0){}
//
;
flag[1] = false;
;
'틈틈이 들어오라'와'바쁘면 기다린다'는 보장이 있습니다.
현실 생활에서 신호량과 PV 조작으로 임계 자원의 상호 배척 문제를 해결한다.
3.2 신호량 및 PV 조작
P :
void wait(semaphore s) {
s.value = s.value - 1;
if (s.value < 0)
block(s.queue);
/* , s.queue*/
}
V :
void signal(semaphore s) {
s.value = s.value + 1;
if (s.value <= 0)
wackup(s.queue);
/* , s.queue , */
}
신호등의 물리적 의미: 자원 관점에서 볼 때 신호등의 의미: s.value의 초기값은 시스템에서 어떤 자원의 수를 나타낸wait(s)는 자원signal(s)을 신청해야 한다는 것을 나타낸다. 자원s.value<0을 방출해야 할 때|s.value|대기열의 프로세스 수를 나타낸다
신호등으로 상호 배척 문제 해결:
semaphore mutex = 1;
P1:
while (1) {
P(mutex);
;
V(mutex);
;
}
P2:
while (1) {
P(mutex);
;
V(mutex);
;
}
신호등으로 동기화 문제 해결:
semaphore a,b = 0,0;
{s1 ; V(a) ; V(b)}
{P(a) ; s2}
{P(b) ; s3}
고전적 프로세스 동기화 문제: 생산자-소비자 문제(먼저 자원 변수를 조작한 후 상호 배척 변수를 조작) 독자-작가 문제 철학자 식사 문제 졸고 있는 이발사 문제
3.3 AND 신호량
여러 신호량의 잠금 문제를 해결하다
공정 관리 메커니즘
3.4 파이프라인의 정의
하나의 파이프라인은 하나의 데이터 구조와 병렬 프로세스가 실행할 수 있는 (이 데이터 구조에서) 동작을 정의합니다. 이 작업은 프로세스를 동기화하고 파이프라인의 데이터를 변경할 수 있습니다.
튜브 = 데이터 구조 + 조작 + 데이터 구조에서의 변수 초기화
공정을 이용하여 생산자 - 소비자 문제를 해결하다
3.5 프로세스 통신
저급 통신 방식: 신호등(효율이 낮고 통신이 사용자에게 투명하지 않음)
고급 통신 방식: 공유 메모리 시스템, 메시지 전달 시스템(직접 통신 간접 통신), 파이프 통신
통신 체인의 구축 방식: 체인 구축을 표시합니다.
통신 방향: (전이중, 반이중) 통신 체인 연결 방식: (점대점) 통신 체인의 용량: (용량이 없으면 버퍼가 없음)
데이터 형식: 바이트 흐름, 메시지
동기화 모드: 차단 모드
클라이언트-서버 시스템 통신: 명명 파이프 플러그인 원격 프로세스 호출
요약 1.프로세스와 루틴(1) 프로세스가 도입된 원인: 단일 순서 실행, 다중 병행 실행(2) 프로세스의 상태와 구성: 프로세스의 세 가지, 다섯 가지, 일곱 가지 상태 프로세스 제어 블록(PCB)(3) 프로세스의 제어: 생성, 취소;막고 깨우기;일시 중지, 활성화 (4) 스레드: 스레드 제어 블록(TCB) 2.프로세스의 동기화와 통신 (1) 프로세스의 동기화와 상호 배척: 병발, 임계 자원과 임계 구역, 소프트 하드웨어의 상호 배척, 신호량과 PV 조작(2) 고전적인 프로세스의 동기화 문제: 생산자 소비자, 독자 작성자, 철학자 식사, 이발사(관건적인 단계 이전에는 P, 관건적인 단계 이후에는 V) (3) AND 신호량(4) 파이프라인 구조와 사상(봉인),루틴이 임시로 파이프라인을 포기할 수 있는 상호 배척 접근 동기화 메커니즘은 모두 파이프라인 내, 세 가지 대기열(긴급, 조건, 입구) (5) 프로세스의 통신: 고급 통신, 저급 통신에 제한된다.공유 메모리, 메시지 전달, 파이프 방식
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
독서 노트문제1: 한 파일에 10000000개의 기록이 포함되어 있으며, 각 기록의 내용은 7자리의 정수이다.기록은 중복되지 않는다.파일 내용을 읽는 프로그램이 필요하고, 이 기록을 정렬한 후 파일을 출력해야 하며, 메모리는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.