개요
가상 메모리 : 주기억장치의 이용 가능한 기억공간보다 훨씬 큰 주소를 지정할 수 있도록 한 개념이다.
운영체제는 프로그램 상의 가상 주소를 주기억장치 상의 실제 주소로 바꾸어주는 기능을 수행한다.
동적 주소 변환
동적 주소 변환 : 프로세스가 실행될 때 가상 주소를 실제 주소로 변환하는 대표적인 매커니즘이다.
인위적 연속성 : 모든 프로세스가 가지는 가상 주소 공간상 연속된 주소들은 실기억공간에서도 연속적일 필요가 없다.
블록 사상
블록 사상 : 사상 항목을 블록이라고 하는 단위로 묶음으로써 여러 가상 메모리의 블록이 위치하는 장소만을
시스템이 추적하도록 한다. ( 블록 : 가상 메모리에 대한 분할 단위)
블록크기↑ : 사상 정보 기억하는데 필요한 주기억장치 양↑ , 기억장치의 오버헤드↓ , 데이터 전송 소요 시간↑
블록을 같은 크기로 -> 페이지 (페이징 : 페이지와 관련된 가상 메모리 구성)
블록을 서로 다른 크기로 -> 세그먼트 (세그먼테이션 : 세그먼트와 관련된 가상 메모리 구성)
블록 사상 시스템에서 가상 주소 v = (b, d) // b는 참조될 항목 속해있는 블록 번호 , d는 블록의 시작점으로부터의 변위
페이징
주소 공간을 페이지 단위로 나누고, 실제 주소 공간은 페이지 크기와 같은 페이지 프레임으로 나누어 사용할 수 있다.
페이징 기법 하에서의 동적 주소 변환 :
실행 중인 프로세스가 참고하는 가상 주소를 v = (p, d)라고 할 때,
페이지 사상 테이블에서 페이지 p를 찾고, 페이지 p가 페이지 프레임 p'에 있음을 알아낸다.
그 후 p'와 d를 더하여 주기억장치의 실제주소 r = p' + d를 구한다.
※ 페이지 사상을 수행하기 위한 기법 : 직접 사상 , 연관 사상, 연관/직접 사상
직접 사상 : 우선 페이지 사상 테이블의 주기억장치 주소를 페이지 사상 테이블 시작점 레지스터에 넣는다.
연관 사상 : 동적 주소 변환의 신속한 수행을 위해 주기억장치보다 훨씬 빠른 접근 시간을 가지고 있는
연관기억장치에 페이지 사상 테이블 전체를 넣는 방법이다.
이 방법은 저장된 값을 이용하여 데이터를 접근하는 내용 주소화 메모리와
찾고자하는 내용의 일부를 기억하는 데이터 레지스터가 운영된다.
연관/직접 사상 : 가장 최근에 참조된 페이지는 조만간 다시 사용되기 쉽다는 사실을 이용해,
연관기억장치에는 페이지 사상 테이블의 전체 항목 중 가장 최근에 참조된 일부 페이지 항목들만을 수용한다.
페이징 시스템의 공유
페이징 시스템의 공유 : 각 사용자가 각자의 프로그램 복사본을 가지고 실행할 경우 기억장치의 낭비가 발생할 수 있다.
따라서 이에 대한 해결책으로 공유가 가능한 페이지를 가능한 한 공유하도록 하는 것이다.
수정이 불가능한 프로시듀어를 순수 프로시듀어 또는 재진입가능 프로시듀어라고 하는데,
만약 이 코드가 재진입되면 수행 중 결코 변경되지 않기 때문에 공유가 가능하다.
이 개념에 따라, 문서처리기의 단 하나의 복사본만이 주기억장치에 유지되고
각 사용자의 페이지 테이블이 실제 문서처리기의 복사본의 수 만큼 준비된다.
계산)
Q. 15명이 20K의 명령어 코드와 10K 크기 데이터 필요로 하는 프로그램 동시 수행
기존 : (20K + 10K) * 15 = 450K의 주기억장치 필요
↓
페이징 시스템 공유 :
단 하나의 문서처리기 복사본 20K + 각 사용자의 데이터 영역에서의 공유 10K * 15 = 150K
= 170K의 주기억장치가 필요
즉, 이 경우 페이징 시스템의 공유로 280K (450K - 170K)를 절약한 것이다.
페이지 크기
페이지 크기 결정에 있어 고려되어야 할 내용
페이지 크기↓
: 보다 많은 페이지와 페이지 프레임 존재로 이를 관리하기 위한 페이지 테이블 크기 증가하여 기억 공간이 낭비된다.
이를 테이블 단편화라고 한다.
: 페이지 크기가 작을수록 프로세스가 작업세트를 확보하는데 도움이 된다.
: 페이지 크기가 작을수록 내부의 단편화는 감소된다.
페이지 크기↑
: 페이지가 크게 되면 참조되지 않을 많은 정보들까지 주기억장치로 옮겨져 기억공간의 낭비를 초래한다.
: 디스크로부터 입출력 전송은 많은 시간을 소비하므로 전송 횟수를 줄이기 위해 페이지 크기가 클수록 효과적이다.
페이지 인출 기법
사용자 프로그램이 실행을 위하여 보조기억장치로부터 페이지 단위로 주기억장치로 옮겨지는 방법에는
두 가지 기법이 적용되고 있다. 요구 페이징 기법과 예상 페이징 기법이다.
요구 페이징 기법
: 요구 페이징 기법에서는 실행 중인 프로세스에 의하여 명백히 참조되는 프로세스만이
보조기억장치로부터 주기억장치로 옮겨진다.
요구 페이징 기법의 특징
: 주기억장치에 옮겨진 페이지들이 모두 프로세스에 의해 실제로 참조되는 것임을 확신할 수 있다.
: 한 프로그램의 실행 순서는 정확히 예측될 수 없기 때문에 새로운 페이지들을 짐작으로
주기억장치에 미리 적재시키는 일은 잘못된 결과를 초래할 수도 있다.
: 어느 페이지를 주기억장치로 옮길 것인가를 결정하기 위한 오버헤드를 최소화할 수 있다.
요구 페이징 기법의 문제점
: 프로세스는 새로운 페이지가 필요할 때 마다 한 번에 하나씩 그 페이지를 적재시켜야 한다.
프로세스에게 할당된 페이지 수가 많을수록 대기로써 낭비되는 기억장치의 희생이 커진다.
예상 페이징 기법
: 예상 페이징 기법은 프로세스가 필요로 할 페이지들을 운영체제가 예측하여 주기억장치에 여유가 있을 때
이 페이지들을 미리 적재시킨다.
예상 페이징 기법의 특징
: 예측 결정이 옮았으면 프로세스의 실행 시간이 많이 감소된다.
세그먼테이션
세그먼테이션 기법에서는 고정된 단위가 아니고 서로 논리적으로 관련이 있는 정보의 단위로 프로그램을 분할한다.
세그먼트 : 논리적 단위가 되는 프로그램 모듈이나 자료구조 등을 세그먼트라고 한다.
세그먼트의 길이는 가변적이다. 그 길이는 프로그램 내에서의 세그먼트 목적에 따라 내부적으로 결정된다.
각 세그먼트는 고유의 이름과 길이를 가진다.
( 세그먼트/페이징 혼용 기법 : 세그먼트를 다시 고정된 크기의 페이지로 분할하여 사용하는 기법 )
세그먼테이션 기법에서의 주소 변환 구현을 위한 방법은 페이징 기법의 시스템과 같이
직접 사상, 연관 사상, 또는 직접/연관 사상이 있다.
직접 사상 : 고속 엑세스의 캐시기억장치에 전체 세그먼트 사상 테이블을 기억시킨다.
어떤 프로세스에 의해 참조되는 세그먼트가 현재 주기억장치에 있으면, 그 프로세스는 계속 수행될 수 있다.
그러나 주기억장치에 존재하지 않으면 해당 세그먼트는 보조기억장치로부터 주기억장치로 옮겨져야 한다.
이때의 주기억장치 배치 전략은 가변분할 다중 프로그래밍에서 이용된 방법과 동일하며,
가장 일반적인 방법은 최초 적합과 최적 적합이다.
세그먼테이션 기법 하에서의 동적 주소 변환
세그먼트 사상 테이블을 구성하는 각 항목의 전형적인 형식으로서,
존재 비트 r은 해당 세그먼트가 주기억장치에 현재 존재하는지 여부를 나타낸다.
존재한다면 s'는 그 세그먼트가 시작되는 주기억장치의 주소를 가리킨다.
그러나 만약 주기억장치에 존재하지 않는다면 a는 프로세스가 수행되기 전에
그 세그먼트가 검색되어야 하는 보조기억장치의 주소가 된다.
또한 세그먼트에 대한 참조는 해당 세그먼트 범위 안에 있어야 함을 분명하 하기 위해 세그먼트 길이 l을 점검한다.
세그먼트 부재 결함 : 해당 세그먼트가 주기억장치 내에 없으면 세그먼트 부재 결함을 발생시켜 운영체제로 하여금
보조기억장치의 주소 a로부터 참조하여야 할 세그먼트를 적재시키도록 한다.
세그먼트 보호 결함 : 작업이 허용될 수 있는가를 확인하기 위해 보호 비트를 검사하는데, 허용되지 않으면 세그먼트 보호 결함을 발생시켜 운영체제가 제어를 받아 그 프로세스의 수행을 중단시킨다.
공유 및 보호
세그먼트의 공유
: 두 사용자가 세그먼트 테이블에 주기억장치 내의 같은 세그먼트를 가리키는 항목을 가짐으로써
해당 세그먼트를 공유할 수가 있게 된다.
보호를 위한 접근 제어
: 세그먼테이션은 세심한 접근 제어가 가능하다는 장점을 가지고 있다.
접근 제어 유형
접근 형태 | 약자 | 설명 |
판독 | R | 이 블록은 읽힐 수 있다. |
기록 | W | 이 블록은 수정될 수 있다. |
수행 | E | 이 블록은 수행될 수 있다. |
첨가 | A | 이 블록의 끝에 정보를 첨가할 수 있다. |
세그먼트/페이징 혼용 기법
세그먼테이션 기법 단점 : 세그먼트가 너무 가변적인 길이이고, 때로는 그 크기가 너무 커서
주기억장치에 적재할 수 없는 경우가 발생한다.
세그먼트/페이징 혼용 기법 : 이러한 문제를 극복하기 위해 하나의 세그먼트를 정수 배의 페이지로
다시 분할하는 기법이다.
이 기법에서 세그먼트는 통상 그 크기가 페이지의 정수 배로 이루어지고,
한 세그먼트의 모든 페이지들이 동시에 주기억장치에 존재할 필요가 없다.
따라서 가상 메모리상에서 연속된 페이지들이 주기억장치에서도 반드시 연속적일 필요가 없다는 특징을 가진다.
세그먼트/페이징 혼용 시스템에서 가상 주소 v는 3차원 요소로 구성된다.
v = (s, p, d)로 나타낸다. s는 세그먼트 번호, p는 페이지 번호, d는 페이지 내에서 원하는 항목이 위치하는 변위이다.
세그먼트/페이징 혼용 시스템에서의 연관/직접 사상을 통한 가상 주소 변환
이상의 과정에서, 세그먼트 사상 테이블 검색 결과 세그먼트 s가 주기억장치 내에 존재하지 않음이 판명될 경우
세그먼트 부재 결함이 발생한다.
그러면 보조기억장치에 있는 해당 세그먼트 위치를 찾고 그 세그먼트에 대한 페이지 테이블 항목을 만든 후,
그 프로세스는 다른 프로세스의 기존의 페이지를 교체하면서 필요한 페이지를 주기억장치로 적재한다.
만약 세그먼트 s가 주기억장치에 있어도 페이지 사상 테이블에서 해당 페이지를 참조하는 과정에서
원하는 페이지가 주기억장치 내에 없다는 것이 판명될 경우 페이지 부재 결함이 발생한다.
그러면 운영체제가 제어를 받아 보조기억장치에서 그 페이지 위치를 찾아 필요한 페이지를 적재한다.
오버플로우 결함 : 순수한 세그먼테이션 기법에서와 같이 가상 주소가 세그먼트의 경계를 넘어서는 경우가 있는데,
이 경우 세그먼트 오버플로우 결함이 발생한다.
세그먼트 보호 결함 : 참조된 가상 주소에 대해 요구되는 작업이 보호비트와 비교하여 허용되지 않는
작업임이 판명될 때 세그먼트 보호 결함이 발생한다.
세그먼트/페이징 혼용 시스템에서의 세그먼트 공유
: 서로 다른 프로세스의 세그먼트 사상 테이블의 항목들이 동일 페이지 사상 테이블을 공유함으로써 이루어진다.
페이지 교체 알고리즘
페이지 교체 기법 : 새로 적재될 페이지를 위한 주기억장치 공간을 확보하기 위해 현재 주기억장치를
차지하고 있는 페이지들 중에서 어떤 페이지를 선택하여 가상공간으로 보낼 것인가를 결정하는 기법이다.
이러한 페이지 교체 알고리즘의 종류로는 다음과 같은 것들이 있다.
FIFO (First-In First-Out) 알고리즘
최적 교체 알고리즘
LRU (Least Recently Used) 알고리즘
2차 기회 알고리즘
LFU (Least Frequently Used) 알고리즘
FIFO (First-In First-Out) 알고리즘
FIFO 알고리즘 : 페이지 교체 알고리즘 중 가장 간단한 방법으로, 각 페이지가 주기억장치로 돌아올 때 마다 타임스탬프를 찍어 그 시간을 기억하고 있다가 페이지 교체가 필요할 때 가장 먼저 주기억장치에 들어와있는 페이지를 교체하는 방법이다.
장점 : 이해하기 쉽고 설계가 간단하다.
단점 : 오랫동안 페이지 프레임을 차지하였다는 이유 하나만으로 중요한 페이지가 교체되어야 하는 불합리가 발생할 수 있다.
FIFO 모순 : FIFO 페이지 교체 방법 하에서, 프로세스에 할당된 페이지 프레임 수가 증가될 때 페이지 부재가 더 증가하는 현상이다.
최적 교체 알고리즘
최적 교체 알고리즘 : 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체시키는 것으로, 최소의 페이지 부재율을 가지는 알고리즘이다.
장점 : FIFO의 모순을 피할 수 있고 최소의 페이지 부재율을 가진다.
단점 : 페이지 호출 순서에 대한 모든 상황을 사전에 미리 파악하고 있어야 해서 다루기 어렵고 비현실적이다.
LRU (Least Recently Used) 알고리즘
LRU 알고리즘 : 한 프로세스에서 사용되는 각 페이지마다 타임-스탬프용 카운터나 스택을 두어 현시점에서 가장 오래전에 사용된 페이지를 제거하는 방법이다.
2차 기회 알고리즘
2차 기회 알고리즘 : LRU 알고리즘에 대한 접근 방안의 하나로서 참조 비트를 이용하는 방법이다.
스래싱
페이지 부재가 계속적으로 발생되어 프로세스가 실행되는 시간보다 페이지 교체에 소비되는 시간이 더 많아지는 경우,
이를 스래싱이라고 한다.
구역성
: 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
- 시간 구역성 : 최근 참조된 기억장소가 가까운 장래에도 계속 참조될 가능성이 높음을 의미한다.
- 공간 구역성 : 어떤 기억장소가 참조되면 그 근처의 기억장소가 계속 참조되는 경향이 있음을 의미한다.
작업세트
: 프로세스에 의해 자주 참조되는 페이지들의 집합체
페이지 부재율
: 페이지 부재율이 너무 높다면 그 프로세스가 더 많은 프레임을 필요로 한다는 것이고,
너무 낮다면 그 프로세스가 너무 많은 프레임을 가지고 있음을 뜻한다.
따라서 페이지 부재율의 상한과 하한을 정해 놓고 페이지 부재율이 상한을 넘으면 그 프로세스에게
다른 프레임을 더 할당해주고, 하한보다 낮으면 그 프로레스로부터 프레임을 회수한다.
'전공 지식 정리 > 운영체제' 카테고리의 다른 글
#3 기억장치 관리 (0) | 2022.04.20 |
---|---|
#2 프로세스와 스레드 관리 (1) | 2022.04.19 |
#1 운영체제 소개 (0) | 2022.04.18 |