운영 체제의 고전적인 질문 유형: 교착 상태 방지를 위한 은행가 알고리즘, 지속적인 할당 관리를 위한 동적 파티션 할당 및 페이지 교체 알고리즘


1. 뱅커 알고리즘

1.1 목적

Banker's Algorithm은 교착상태를 피하기 위해 사용되는 알고리즘으로 가장 유명한 교착상태 회피 알고리즘이다.

자원경쟁부적절한 공정진행질서 발생교착상태에 이르게 하다

소위 교착상태(deadlock)는 여러 프로세스가 작업 중에 자원을 두고 경쟁하면서 발생하는 교착상태를 말하는데, 이 교착상태에 빠진 프로세스는 외부의 힘 없이는 앞으로 나아갈 수 없게 된다.

  • 교착상태의 필요조건 :
    ① 상호배제 : 프로세스가 할당된 자원에 대한 배타적 통제를 요구하는 경우, 즉 일정 시간 내에 하나의 프로세스만이 자원을 점유하는 경우
    ② 요청 및 보유 : 자원 요청으로 인해 프로세스가 차단되는 경우 획득한 자원 유지
    ③ No deprivation : 프로세스에서 획득한 자원은 모두 사용되기 전에는 박탈할 수 없으며, 다 사용한 후에만 스스로 해제할 수 있음
    ④ Loop wait : 교착 상태가 발생하면 프로세스가 있어야 함 – 자원의 순환 사슬

1.2 데이터 구조

  • (1) 사용 가능한 자원 벡터 Available은
    m개의 요소를 포함하는 배열입니다. 여기서 각 요소(Available[i])는 i번째 범주를 나타냅니다.사용 가능한 리소스 수, 초기값은 시스템에 구성된 이 유형의 자원 수이며 이 유형의 자원의 할당 및 재활용에 따라 그 값이 동적으로 변경됩니다. [
    Available[j]는 시스템의 유형 j 자원 수를 나타냅니다.]
  • (2) 최대수요행렬 Max는 시스템의 각 프로세스별로 m종의 자원에 대한 수요를
    정의하는 n×m행렬이다 .총수요
    [Max[i][j]는 i번째 프로세스의 j형 자원에 대한 총 수요를 나타낸다]
  • (3) 할당 매트릭스 할당 이것은 시스템의 각 자원 유형을
    정의하는 nxm 매트릭스이기도 합니다.현재 할당된각 프로세스에 부여된 자원의 개수
    [Allocation[i][j]는 프로세스 i가 현재 획득한 j번째 유형의 자원의 개수를 나타낸다.
  • (4) 수요 행렬 Need는
    각 프로세스를 표현하는 데 사용되는 n×m 행렬이기도 합니다 .아직도 필요하다다양한 유형의 자원 수
    [Need[i][j]는 i 프로세스에도 j번째 유형의 자원 수가 필요함을 나타냄]

위의 nxm 행렬 사이에는 다음과 같은 관계가 있습니다.
         Need[i][j] = Max[i][j] - 할당[i][j]

1.3 알고리즘 설명

자원 할당 알고리즘
여기에 이미지 설명을 삽입하세요.
보안 알고리즘 (즉, 위 그림의 자원 할당 알고리즘 중 보안 점검 부분 )
여기에 이미지 설명을 삽입하세요.

1.4 예시 설명

여기에 이미지 설명을 삽입하세요.
① T0는 안전한가?
여기에 이미지 설명을 삽입하세요.

②T0 시점 이후 프로세스 P2가 자원 요청 Request 2 (1,0,1)를 발행하면 시스템이 여기에 자원을 할당할 수 있는가?
여기에 이미지 설명을 삽입하세요.

③프로세스 P2가 자원을 신청한 후 P1이 자원 요청 Request 1 (1,0,1)을 발행하면 시스템이 여기에 자원을 할당할 수 있는가?
④프로세스 P1이 자원을 신청한 후 P3가 자원 요청 Request 3 (0,0,1)을 발행하면 시스템이 여기에 자원을 할당할 수 있는가?
여기에 이미지 설명을 삽입하세요.


2. 지속적 할당 관리 방법

연속 할당 방식, 즉 사용자 프로그램에 연속적으로 메모리 공간을 할당하는 방식

2.1 분류

단일 연속 할당

단일 사용자 및 단일 작업 운영 체제에서만 사용할 수 있는 가장 간단한 저장소 관리 방법입니다.

메모리를 시스템 영역 (로우엔드 메모리, OS에 할당)과 사용자 영역 (고급 메모리, 사용자에게 할당)으로 나눈다.

정적 할당이 채택됩니다. 즉, 작업이 메모리에 들어가면 메모리가 해제되기 전에 실행이 완료될 때까지 기다려야 합니다.

단일 연속 할당으로 인해 내부 조각화가 발생함

고정 파티션 할당

다중 프로그램 실행이 가능한 최초의 스토리지 관리 방식

메모리 공간을 여러개의 고정된 크기의 파티션으로 나누고 OS가 차지하는 하나의 파티션을 제외하고 나머지 파티션은 프로그램으로 로드합니다. 파티션의 크기는 다를 수 있으나 미리 결정해야 하며 도중에 변경할 수 없습니다. 즉, 파티션 크기 와 경계는 런타임에 변경될 수 없습니다.

고정 파티션 할당에서 프로그램은 일반적으로 정적 재배치를 사용하여 메모리에 로드됩니다. 사용자 프로그램이 메모리에 로드될 때 메모리 할당 프로그램은 파티션 설명 테이블을 검색하고 테이블에서 요구 사항을 충족하지만 아직 충족되지 않은 파티션을 찾습니다. 할당되었습니다. 이 프로그램에 할당되었습니다.
여기에 이미지 설명을 삽입하세요.

여러 프로세스가 주 메모리 영역을 공유하는 것이 불가능하고 활용률이 낮으며 내부 단편화가 발생합니다.

동적 파티션 할당

가변 파티션 할당이라고도 하며 메모리를 동적으로 나누는 파티셔닝 방법입니다.

메모리를 미리 파티션으로 나누지 않고, 작업이 메모리에 들어오면 작업의 크기에 따라 파티션이 동적으로 생성되고, 파티션의 크기는 작업의 요구에 정확히 맞춰진다. 시스템의 파티션 크기는 가변적이며 파티션의 개수도 가변적입니다.

  • 파티션 할당의 데이터 구조:
    ① 자유 파티션 테이블
    ② 자유 파티션 체인

여기에 이미지 설명을 삽입하세요.

동적 파티션 할당 알고리즘은 2.2를 참조하세요.


2.2 ☆동적 파티션 할당 알고리즘

첫 번째 적응 알고리즘 FF

FF: 퍼스트 핏

프리 파티션(체인)은 주소의 오름차순 으로 배열되며 , 메모리를 할당할 때 요구 사항을 충족하는 첫 번째 프리 파티션을 찾을
때까지 프리 파티션 테이블/체인 헤드부터 순차적으로 검색합니다 . 그런 다음 작업 크기에 따라 메모리 공간이 파티션에서 요청자에게 할당되고 나머지 여유 파티션은 여유 파티션 테이블/체인에 유지됩니다.

낮은 주소 공간의 사용을 우선시하지만, 낮은 주소 공간을 여러 번 분할한 후에는 외부 조각화가 발생합니다.

다음번 적응 알고리즘 NF

NF: 넥스트핏

순환 우선 적응 알고리즘(Cyclic First Adaptation Algorithm)이라고도 하며, 즉 첫 번째 적응 알고리즘을 기반으로 큐가 순환 큐로 변경되고(자유 파티션(체인)은 여전히 ​​주소가 증가하는 순서로 배열되어 있음), 다음 번 매번 지난번에 찾은 빈 파티션은 파티션 검색입니다.

균등하게 분산되어 있지만 여유 공간이 있는 큰 파티션이 부족함

최적합 알고리즘 BF

BF : 최적의 맞춤

프리 파티션 테이블/체인은 용량이 증가하는 순서로 배열됩니다. 메모리를 할당할 때 크기 요구 사항을 충족하는 첫 번째 프리 파티션을 찾을 때까지 프리 파티션 테이블/체인의 시작 부분부터 순차적으로 검색합니다 .

외부 조각화 는 매우 작아 항상 작업에 가장 적합한 파티션에 할당할 수 있으며 큰 파티션은 예약되어 있지만 조각난 공간이 많아 사용하기 어렵습니다.

최악 적합 알고리즘 WF

WF : 최악의 적합

프리 파티션 테이블/체인은 용량이 작은 순서대로 배열되어 있으며, 메모리를 할당할 때 프리 파티션 테이블/체인은 처음부터 그보다 큰 첫 번째 프리 파티션이 발견될 때까지 순차적으로 검색됩니다 . 나머지 프리 파티션은 프리 파티션 테이블에 남아 있습니다. /체인

할당 후 남은 공간은 상대적으로 크고 다음 사용에 적합하지만 큰 공간을 모두 사용하게 됩니다.

예시 설명

여기에 이미지 설명을 삽입하세요.


3. 페이지 교체 알고리즘

3.1 최적 교체 알고리즘 OPT

프로세스의 페이지 번호 참조 문자열을 미리 알고 있으면 앞으로 더 이상 사용되지 않거나 앞으로 늦어도 사용할 페이지는 매번 제거됩니다.

최적 교체 알고리즘은 가장 우수하고 페이지 폴트율이 가장 낮으나, 실제 운영에서는 향후 참조될 페이지 정보를 모두 미리 아는 것이 불가능한 경우가 많아 구현하지 못할 수 밖에 없다. 다른 대체 알고리즘의 장단점을 측정하는 표준으로 사용됩니다.

3.2 선입선출 알고리즘 FIFO

가장 간단한 페이지 교체 알고리즘은 매번 메모리에 처음 들어가는 페이지를 항상 제거합니다.

3.3 가장 최근에 사용된 알고리즘 LRU

가장 오랫동안 사용되지 않은 페이지를 선택하여 제거하세요.

이 알고리즘은 레지스터 조합 스택을 이용하여 구현 가능하며 성능이 좋으며 일반적으로 사용되는 페이지 교체 알고리즘 중 최적 교체 알고리즘에 가장 가깝다.

3.4 예시 설명

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/m0_50609545/article/details/122300305