가상메모리란?
•
주기억장치에 프로그램 전체를 저장하게되면
최대 적재가능 프로그램 개수가 적어져 성능 떨어짐
⇒ 가상메모리 이용
•
프로그램의 일부만을 메모리에 저장해놓고 나머지는 가상메모리에 저장
•
가상메모리
◦
디스크에 들어가 있음
◦
OS의 입장에서는 메모리로 인식을 하지만 느린 속도로 수행
◦
메모리의 크기가 늘어나 더 많은 프로그램들이 실행될 수 있음
⇒ 다중프로그래밍 정도 향상, 시스템 성능 향상
메모리에 여러 프로그램을 상주시켜 CPU가 동시에 여러일을 하는 것처럼 보이게 하는 것
◦
가상메모리에 있는 것들을 주기억장치의 임의의 공간에 던져서 실행
단편화
페이징
•
프로그램을 같은 크기의 블럭들로 분할하는 시스템
•
페이지: 프로그램을 쪼갠 단위
•
프레임 : 페이지 크기와 같은 주기억장치 메모리 조각
•
일정한 크기대로 나누어 논리적인 구분은 고려하지 않음
•
주소변환: 가상주소(보조기억장치) → 실주소(주기억장치)
→ 주소변환을 위해 페이지 맵핑 테이블(페이지 사상표)이 필요 ⇒ 기억장소 낭비
페이지번호, 주기억장치 적재 여부, 보조기억장치 주소, 적재된 프레임 번호
•
내부 단편화 발생, 외부 단편화 발생 X
•
페이지 크기가 작을 경우
◦
페이지 수 증가 → 페이지 맵핑 테이블 커짐 → 맵핑 속도 느리고 기억 공간 낭비
◦
디스크 접근 횟수 증가 → 전체적인 입출력 시간이 늘어남
◦
한개의 페이지를 주기억장치로 이동하는 시간이 줄어듬
◦
필요한 내용만 주기억장치에 적재→ 유용도 커짐 → 기억장치 효율 높아짐(내부단편화 감소)
세그먼테이션 시스템
•
논리적인 정보(함수 등)를 기준으로 서로 다른 크기의 블럭들로 분할하는 시스템
•
주기억장치 영역을 미리 분할해 둘 수 없음
◦
크기가 모두 다르기 때문에
•
각 세그먼트는 고유한 이름과 크기를 갖고 있음
•
외부 단편화 발생, 내부 단편화 발생 X
혼합 기법(페이지화된 세그먼테이션)
⇒ 페이지 + 세그먼테이션
•
페이지를 모으면 하나의 세그먼트가 됨
•
프로세스의 처리 시간보다 페이지 교체 시간이 더 많아지는 현상 → CPU 이용률 저하
•
페이지 오류율(page fault)이 크면 스래싱이 많이 일어난 것
•
다중 프로그래밍 정도가 높을수록 스래싱의 발생 빈도 증가
⇒ 스래싱 방지 방법: 다중 프로그래밍 정도 줄이고, CPU 이용율 높임, workingset 방법 사용
workingset : 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
자주 참조되는 워킹 셋을 주기억장치에 상주시켜서
페이지 부재 및 페이지 교체 현상을 줄임
페이지교체 알고리즘
•
페이지 교체
◦
빈 프레임이 없을 때 어느 페이지를 교체시킬 것인지 결정
◦
페이지 부재를 최소화하기 위한 페이지 교체 알고리즘 필요
세로: 페이지 부재 회수 가로: 프레임 수
◦
프레임을 많이 줄수록 부재가 적게 일어남
◦
프로세스에게 많은 프레임을 갖다 주어도 한계가 있음
•
FIFO 알고리즘
◦
가장 먼저 메모리에 올라온 페이지를 가장 먼저 내보내는 알고리즘
◦
구현 간단하지만 성능은 좋지 않다
◦
들어온 시간을 저장하거나 올라온 순서를 큐를 이용해 저장
◦
Belady’s Anomaly 현상이 발생할 수 있다
◦
Belady’s Anomaly : 프레임 개수가 많아질수록 page-fault가 줄어들지 않고 늘어나는 현상
•
OPT 알고리즘 (최적 알고리즘)
◦
앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 알고리즘
◦
모든 페이지 교체 알고리즘 중 page-fault 발생 가장 적음
◦
프로세스가 앞으로 사용할 페이지를 미리 알아야함
◦
실제로 구현하기 거의 불가능해서 보통 연구 목적을 위해 사용
•
LRU (Least Recently Used) 알고리즘
◦
가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘
◦
성능이 좋은 편
◦
많은 운영체제가 채택하는 알고리즘
•
LFU (Least Frequently Used) 알고리즘
◦
참조 횟수가 가장 작은 페이지를 교체
◦
교체 대상인 페이지가 여러개일 경우 가장 오래 사용되지 않은 페이지로 교체
LFU vs LRU
•
둘 다 참조 횟수랑 관련이 있음
•
LRU는 최근에 참조되었는가?
•
LFU는 참조되는 순간 즉시 카운트
•
MFU (Most Frequently Used) 알고리즘
◦
참조횟수가 가장 많은 페이지를 교체
◦
참조횟수가 적은 페이지가 최근에 사용된 것이기 때문에 앞으로 사용될 가능성이 높다고 판단
•
구현에 상당한 비용이 들고
•
최적 페이지 교체 정책을 제대로 구현하지 못하기 때문