Search

가상 메모리

가상메모리란?

주기억장치에 프로그램 전체를 저장하게되면 최대 적재가능 프로그램 개수가 적어져 성능 떨어짐 ⇒ 가상메모리 이용
프로그램의 일부만을 메모리에 저장해놓고 나머지는 가상메모리에 저장
가상메모리
디스크에 들어가 있음
OS의 입장에서는 메모리로 인식을 하지만 느린 속도로 수행
메모리의 크기가 늘어나 더 많은 프로그램들이 실행될 수 있음
다중프로그래밍 정도 향상, 시스템 성능 향상
메모리에 여러 프로그램을 상주시켜 CPU가 동시에 여러일을 하는 것처럼 보이게 하는 것
다중 처리: 여러 개의 CPU가 메모리를 공유하여 다중처리하는 것
가상메모리에 있는 것들을 주기억장치의 임의의 공간에 던져서 실행

단편화

페이징

프로그램을 같은 크기의 블럭들로 분할하는 시스템
페이지: 프로그램을 쪼갠 단위
프레임 : 페이지 크기와 같은 주기억장치 메모리 조각
일정한 크기대로 나누어 논리적인 구분은 고려하지 않음
주소변환: 가상주소(보조기억장치) → 실주소(주기억장치)
→ 주소변환을 위해 페이지 맵핑 테이블(페이지 사상표)이 필요 ⇒ 기억장소 낭비
페이지번호, 주기억장치 적재 여부, 보조기억장치 주소, 적재된 프레임 번호
내부 단편화 발생, 외부 단편화 발생 X
페이지 크기가 작을 경우
페이지 수 증가 → 페이지 맵핑 테이블 커짐 → 맵핑 속도 느리고 기억 공간 낭비
디스크 접근 횟수 증가 → 전체적인 입출력 시간이 늘어남
한개의 페이지를 주기억장치로 이동하는 시간이 줄어듬
필요한 내용만 주기억장치에 적재→ 유용도 커짐 → 기억장치 효율 높아짐(내부단편화 감소)

세그먼테이션 시스템

논리적인 정보(함수 등)를 기준으로 서로 다른 크기의 블럭들로 분할하는 시스템
주기억장치 영역을 미리 분할해 둘 수 없음
크기가 모두 다르기 때문에
각 세그먼트는 고유한 이름과 크기를 갖고 있음
외부 단편화 발생, 내부 단편화 발생 X

혼합 기법(페이지화된 세그먼테이션)

⇒ 페이지 + 세그먼테이션
페이지를 모으면 하나의 세그먼트가 됨
스래싱(Thrasing)
프로세스의 처리 시간보다 페이지 교체 시간이 더 많아지는 현상 → 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) 알고리즘
참조횟수가 가장 많은 페이지를 교체
참조횟수가 적은 페이지가 최근에 사용된 것이기 때문에 앞으로 사용될 가능성이 높다고 판단
LFU와 MFU는 실제 사용에 잘 쓰이지 않음
구현에 상당한 비용이 들고
최적 페이지 교체 정책을 제대로 구현하지 못하기 때문