은행 가 알고리즘
3306 단어 os
시스템 이 특정한 프로 세 스 추진 순서에 따라 모든 프로 세 스 Pi 에 필요 한 자원 을 분배 하고 모든 프로 세 스 가 자원 에 대한 최대 수 요 를 만족 시 킬 때 까지 모든 프로 세 스 가 순조롭게 실 행 될 수 있 도록 하 는 것 을 말한다.이 프로 세 스 추진 순 서 를 보안 시퀀스 라 고 합 니 다.
이러한 안전 서열 을 찾 지 못 하면 시스템 은 안전 하지 않 은 상태 에 있다.
잠 금 을 피 하 는 해결 방식 은 시스템 이 자원 분 배 를 할 때 시스템 이 안전 하지 않 은 상태 에 들 어가 지 않도록 하 는 것 이다.
은행 가 알고리즘
한 은행 가 는 그의 고정 자금 을 몇 명의 고객 에 게 빌려 서 이런 고객 들 이 자금 에 대한 최대 수 요 를 만족 시 킨 후에 거래 를 완성 하고 빌 린 자금 을 은행 가 에 게 돌려 줄 수 있 도록 했다.모든 고객 이 몇 번 의 대출 을 받는다 고 가정 하면 모든 고객 은 자신 이 요구 하 는 최대 자금 의 양 을 미리 설명 하고 매번 에 일부 자금 의 신청 을 한다.만약 에 은행 가가 고객 이 자금 에 대한 최대 수 요 량 을 만족 시 키 면 이 고객 은 자금 운영 이 완 료 된 후에 제 한 된 시간 안에 모든 자금 을 은행 가 에 게 돌려 준다.과정 은 다음 과 같다.
데이터 구조
(1) 이용 가능 한 자원 벡터
m 개의 요 소 를 포함 하 는 배열 입 니 다. 모든 요 소 는 하나의 자원 의 수량 을 대표 합 니 다. Availbale [j] = k 대표 시스템 에 현재 Rj 류 자원 k 개가 있 습 니 다.그 수 치 는 이러한 자원 의 분배 와 회수 에 따라 동태 적 으로 변 할 것 이다.
(2) 최대 수요 매트릭스 Max
n×m 의 행렬 은 시스템 n 개 프로 세 스 의 모든 프로 세 스 가 m 류 자원 에 대한 최대 수 요 를 정의 합 니 다.
Max[i][j] = k
프로 세 스 i 가 Rj 류 자원 을 필요 로 하 는 최대 수 는 k 개 임 을 나타 낸다.이게 움 직 이지 않 게 조심 하 세 요.(3) 분배 매트릭스 할당
n×m 의 행렬 은 시스템 의 모든 프로 세 스 가 분 배 된 특정한 자원 의 수량 을 정의 합 니 다.
Allocation[i][j] = k
i 프로 세 스 가 Rj 류 자원 의 수량 을 k 로 분 배 했 음 을 나타 낸다.(4) 수요 매트릭스 Need
n×m 의 행렬 은 모든 프로 세 스 가 필요 로 하 는 각종 자원 수 를 나타 낸다.
Need[i][j] = k
프로 세 스 i 는 Rj 류 자원 k 개가 있어 야 실행 할 수 있 음 을 나타 낸다.위의 행렬 사이 에 이런 관계 가 존재 한 다 는 것 이 분명 하 다.
Need[i][j] = Max[i][j] - Allocation[i][j]
은행 가 알고리즘Request 가 프로 세 스 를 대표 하 는 요청 벡터 를 가정 하면
Request[i][j] = k
프로 세 스 Pi 가 os 에 k 개의 Rj 류 자원 을 신청 하 는 것 을 나타 낸다.프로 세 스 가 요청 을 보 낸 후 os 는 아래 절차 에 따라 검 사 를 진행 합 니 다.(1) 만약
Request[i][j] <= Need[i][j]
에 (2) 로 전환 하지 않 으 면 자원 신청 이 잘못 되 었 다 고 생각 합 니 다. 신청 한 자원 이 선언 한 최대 치 를 넘 었 기 때 문 입 니 다.(2) 만약
Request[i][j] <= Available[j]
자원 이 충분 하 게 분배 된다 면 * * (3) * * 로 전환 합 니 다. 그렇지 않 으 면 프로 세 스 를 기다 리 게 합 니 다.(3) 시스템 은 자원 을 프로 세 스 Pi 에 배분 하고 데이터 구조의 값 을 수정 합 니 다.
Available[j] = Available[j] - Request[i][j]
; Allocation[i][j] = Allocation[i][j] + Request[i][j]
; Need[i][j] = Need[i][j] - Request[i][j]
; (4) 시스템 이 안전성 알고리즘 을 실행 하고 이번 자원 배분 후 시스템 이 안전 상태 에 있 는 지 확인한다.안전 해야만 자원 을 프로 세 스 Pi 에 정식으로 분배 할 수 있 습 니 다. 안전 하지 않 습 니 다. 이번 탐색 을 폐기 하고 원래 의 자원 분배 상 태 를 회복 하 며 프로 세 스 Pi 가 기다 리 고 있 습 니 다.
보안 알고리즘
(1) 벡터 두 개 설정
(2) 프로 세 스 집합 에서 실행 가능 한 프로 세 스 를 찾 아 다음 조건 을 만족 시 킵 니 다.
Finish[i] = false
; Need[i][] < Work[]
찾 을 수 있다 면, 실행 절차 * (3), 그렇지 않 으 면 실행 (4) * * *
(3) 프로 세 스 Pi 가 자원 을 획득 하면 실행 이 완료 되 고 자원 을 방출 할 수 있 습 니 다.
Work = Work + Allocation[i]
; Finish[i] = true
; 돌아 가기 * * (2) * 계속 찾기
(4) 모든 프로 세 스 가 Finish = true 를 만족 시 키 면 시스템 이 안전 상태 에 있 고 잠 금 이 발생 하지 않 습 니 다.
그렇지 않 으 면 시스템 이 안전 하지 않 은 상태 에 처 해 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 프로그램에서 메모리 누수를 감지하는 간단한 프로그램때때로 우리는 메모리 누수를 남기는 프로그램을 작성하는데, 그 결과 일정 시간이 지나면 프로그램이 충돌하고 메모리 누수가 어디에 남아 있는지 찾기가 매우 어렵습니다. 따라서 이러한 문제를 디버깅하기 위해 프로그램에서...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.