요구 페이징
1 요구 페이징의 개요
프로세스가 필요로 하는 데이터를 언제 가져올지 결정하는 가져오기 정책에서
프로세스가 요청할 때 메모리로 가져오는것을
demand paging(요구 페이징)이라고 한다.
이때 모든 프로그램을 메모리를 가져오지 않고
메모리를 효율적으로 관리하기 위해
프로세스의 일부만 메모리로 가져온다.
1.1 요구 페이징과 스왑 영역
페이지가 스왑 영역에 있는 경우는 아래와 같이 두 가지 경우가 있다
1.요구 페이징으로 인해 처음부터 물리 메모리에 올라깆지 못한 경우
2.메모리가 ?꽉 차서 스왑 영역으로 옮겨 온 경우
1.2 페이지 테이블 엔트리(PTE)의 구성
페이지 안에 여러 비트들이 존재한다.
이중 유효 비트는,
가상 메모리의 페이지 테블에는 페이지가 물리 메모리에 있는지, 스왑 영역 있는지 표시하기 위해 유효 비트를 사용한다.
유효 비트가 0 : 페이지가 메모리 존재, 주소 필드에 물리 메로리 프레임 번호 저장
유효 비트가 1 : 페이즈 스왑 영역에 존재, 수소 필드에 스왑 영역내 페이지의 주소가 저장
0, 1로 신호를 표시하는 구조라고 이해할 수 있다.
2 페이지 부재
프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황으로 프로세스가 해당 페이지를 사용할 수 있도록
스왑 영역에서 물리 메모리로 옮겨야 한다.
페이지 교체
페이지 부재가 발생하면 스왑 영역에 있는 페이지를 메모리의 공간으로 테이블을 갱신한다.
페이지 교체 알고리즘
어던 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘이다/
대상 페이지
페이지 교체 알고리즘에 의해 스왑 영역으로 보낼 페이지이다
3 세그멘테이션 오류
메모리가 풀이 상태에서 돌아가는 페이지를 희생되는 페이지라고 부른다
그럼 세그멘테이션 오류는 어떻게 해결할까?
세그멘테이션 오류에서는 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 발생하며 해당 프로세스를 강제 종료하여 해결한다.
이때 최대한 주어진 메모리 공간 안벗어나게 하기 위해
기준점이 필요했고
이제는 지역성이라는 대전제로 바라볼 수 있다.
4 지역성
기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되어 있는 것이 아니라 특정 영역에 집중되는 성질이다.
지역성의 종류
공간의 지역성
시간 지역성
순차적 지역성
(무엇을 어떻게 희생시킬지에 대한 기준으로 종류가 나누어짐)
페이지 교체 알고리즘의 개요
1 페이징 교체 알고리즘
스왑 영역으로 보낼 페이지를 결정하는 알고리즘으로 메몰에서 앞으로 사용할 가능성이 적은 페이지를 대상 페이지로 선정하여 페이지 부재를 줄이고 시스템의 성능을 향
페이징 교체 알고리즘 종류
종류 | 알고리즘 | 특징 |
간단한 알고리즘 | 무작위 | 무작위로 대상 페이지를 선정하여 영역으로 보냄 |
FIFO | FIRT IN FIRT OUT | |
이론적 알고리즘 | 최적 | 미래 접근 패턴 기준으로 대상 페이지를 선정 |
최적 근접 알고리즘 | LRU | 최근 최소 사용 |
LFU | 최소 빈도 사용 | |
NUR | 접근 비트와 변경 비트로 판단 | |
FIFO변형 | FIRT IN FIRT OUT |
(최적 근접 알고리즘이 오늘날 사용하는 알고리즘)
무작위 페이지 교체 알고리즘
무작위로 선정해서 스왑영역으로 보내기 때문에 전혀 좋지 않음
FIFO
처음으로 메모리에 올라온 페이지를 스왑영역으로 보내는 알고리즘으로
모메로가 곽 차면 맨 위의 페이지가 스왑영역으로 가고 나머지 페이즈를 위쪽으로 이동, 이후 아래쪽의 남은 공간에 들어온다. (이론적이 알고리즘)
무조건 오래된 페이지 사용하기 때문에 성능이 떨어진다.
최적 근접 알고리즘
미래의 접근 패턴을 기준으로 대상 페이지를 선정하여 스왑 영역으로 보내는 방식으로, 실제로는 구현이 불가능함.
LRU
시간적으로 멀리 떨이지 페이지를 스왑 영역으로 보내는 알고리즘으로
페이지에 접근한지 가장 오래된 페이지를 교체하는 것이다.
카운터에 기반하여 구현한다.
LFU
사용 빈도가 적은 페이지를 스왑 영역으로 보내는 교체 알고리즘으로
현재 프로엠에 있는 페이지마다 그 동안 사용한 횟수를 세어 횟수가 가장 적은 페이지를 스왑 영역으로 옮긴다.
하지만 불필요한 공간 발생으로 메모리가 낭비된다는 단점이 있다.
NUR
LRU, LFU 페이지 교체 알고리즘과 성능이 비슷하면서 불필요한 공간 낭비 문제를 해결한 알고리즘으로
접근 비트와 변경 비트로 판단한다.
즉 비트로 가이드 라인을 만드는 것이다.
2차 기회 페이지 알고리즘
FIFO의 변형 알고리즘으로 성공한 페이지를 큐의 맨 뒤로 옮김으로서 기회를 한 번 더 주는 알고리즘이다.
시게 알고리즘
FIFO 변형 페이지 교체 알고리즘으로 대상 페이지를 가리키는 포인터를 사용하여 포인터가 큐의 맨 배닥으로 내려가면 다음에 다시 큐의 처음을 가리키게 하는 페이지 교체 알고리즘이다.
스레싱
1 스레싱
하드웨어와 입출력으 계속되어 잦은 페이지 부재로 작업이 멈춘 것 같은 상태를 스레싱으로 한다.
즉 스왑이 과도하게 일어나는 순간 스레싱이 나타난다고 이해할 수 있다.
스레싱 발생 지점을 사진과 같이 그래프로 표현해볼 수 있다.
스레싱 발생 시점은 CPU가 작업하는 시간보다 스왑 영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작어빙ㄴ 빈번해져서 CPU가 작업할 수 없는 상태에 이르게 되는 시점이다.
하드웨어를 늘리면 앞서 말한 스레싱 발생지점을 늦출 수 있지만
CPU가 뒷받침해줄 수 없다면 분명히 한계가 존재한다
2 정적 할당
스레싱은 각 프로세스에 프레임을 할당하는 문제와도 연관된다.
프로세스에 프레임을 얼마나 할당하는지에 따라 시스템의 성능이 달라지기 때문이다.
균등 할당
프로세스의 크기와 상관없이 사용 가능한 프레임을 모든 프로세스에게 동일하게 할당하는 개념으로
프레임 별로 사용 가능한 프레임을 고정하는 주는것으로 이해할 수 있다.
당연히 크기가 큰 프로세스는 고정되어 있는 작은 값으 프레임만 할당 받음으로
프로세스의 메모리가 낭비된다.
비례 할당
프로세스의 크기에 비례하려 프레임을 할당하는 것이지만
미리 예측하고 공간을 확보해야되기 때문에 역시 자원 낭비가 있다.
3 정적 할당
작업집합 모델
작업집합 모델은 할당을 관리하는 과정으로
최근 일정 시간 동안 참조된 페이지들을 집합으로 만들고, 이 집합에 있는 페이지를 물리 메모리에 유지시킨다.
물리적으로 정해주는 개념으로 이해할 수 있다.
하지만 이런 작업도
윈도우를 너무 크게 작으면 필요없는 페이지가 메모리에 남아서 다른 프로세스의 영향을 미치고
역으로 너무 작게 잡아도 페이지가 스왑 영역으로 옮겨져 프로세스의 성능이 떨어진다.
작업집합 모델
작업지합 모델에서는 어던 프레임을 물리 메모리에 유지해야 하는지 알 수 있지만 프로세스에 프레임을 얼마나 할당해야 하는지는 알 수 없다. 작업집합 모델을 프로세스의 성능을 높이는 방법이지만 스레싱을 해결하지 못한다.
즉 비율을 정하는게 또 문제가 된다.
연습문제
1. 요구 페이징(demand paging)
2. 프리 페이징
3. 유효 비트
4. 접근 비트
5. 변경 비트
6. 페이지 부재
7. 지역성
8. FIFO
9. 최적 알고리즘
10. LRU
11.LFU
12.NUR
13.2차기회 페이지 교체 알고리즘
14. 시계 알고리즘
15. 스래싱
16. 작업 집합 모델
17. 페이지 부재 빈도 모델
[별첨] 국산 운영체제 티맥스, 국내에 필요한 OS인가?
2019년 8월 티맥스라는 회사에 자체제작한 티맥스 OS를 출시했다.
사실 이번이 처음이 아니다.
2009년 티맥스 윈도우라는 OS를 출시했지만 크게 실패한 사례가 있었다.
이렇게 운영체제를 시도하는 유일한 국내기업인 티맥스에서 만든 OS가 과연 경쟁력이 있을지 간단하게 알아보았다.
몇몇 리뷰어들의 말을 빌리자면
GUI는 안정적으로 돌아가서 좋지만
반대로
마이크로소프트와 윈도우 향기가 느껴나는
'오픈소스, 짜집기'다라는 비판이 있었다.
위 가시에 나와 있듯이
앞으로 5년뒤에 개방형 OS로 변경이 된다면
공공기관에서 티맥스를 사용하게 될 것이라는 예측이 있지만
해당 기사 댓글을 읽어보면 그렇게 국산 OS의 도입에 긍정적이지는 않다.
공공기관에 도입하게 된다면
리눅스 기반, 오픈소스 라이센스 위반 소지 때문에
보안에 취약할 수 있다는 지적이 많다.
필자는
개인적으로 국내에서
이런 시도가 이어지고 있다는 점에 긍정적이다.
출처 : https://n.news.naver.com/article/092/0002180027
참고 웹사이트
"스레싱과 프레임 할당."별의 블로그 2020년 7월 16일 접속,https://starrykss.tistory.com/973?category=790355
참고문헌
조성호.쉽게배우는 운영체제.2019발행.한빛아카데미