[OS] 메모리 관리, 가상 메모리
메모리 관리
메모리 관리 필요성
- 폰 노이만 구조에서 메모리는 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행이 가능하다.
- 과거에는 한 번에 한 작업만 처리해서 메모리 관리가 어렵지 않았으나… 오늘날 운영체제는 그렇지 않다. -> 메모리 관리가 더욱 중요해짐
가변 분할 방식
- 프로세스 크기에 따라 메모리 분할
- 외부 단편화 발생
- 작은 프로세스가 작업 끝내면 빈 공간이 남음 (조각 모음)
고정 분할 방식
- 프로세스 크기에 관계없이 메모리 같은 사이즈로 나눔
- 관리가 비교적 수월함
- 메모리 배치 관리에 용이
- 외부 단편화가 일어나지 않기에 조각 모음을 할 필요가 없다.
- 하지만 공간 내부의 사용하지 못하는 메모리 공간 발생 -> 내부 단편화
가상 메모리 개요
가상 메모리 정의와 필요성
- 물리 메모리(실제 메모리)의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술
-
물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않고 프로그래밍이 가능해짐
- 크기가 다른 물리 메모리에서 일관된 프로세스 실행이 불가능함
- 기존에 차지하고 잇는 메모리들 고려 & 운영체제 공간도 고려해야함
- -> 가상 메모리 도입
페이징 기법
- 고정 분할 방식을 이용한 메모리 관리 기법
- 물리 주소 공간을 같은 크기로 나눠 사용
세그먼테이션 기법
- 가변 분할 방식을 이용한 가상 메모리 관리 기법
- 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용
- 세그먼테이션 테이블에는 세그먼테이션 크기를 나타내는 limit, 물리 메모리 상의 시작 주소를 나타내는 address가 있다.
- 프로세스의 크기에 따라 메모리를 분할하기 때문에 매핑 테이블에 크기 정보를 포함
- 주어진 메모리 영역 초과 불가능 (limit)
가상 메모리 관리
요구 페이징
- 프로세스가 필요로 하는 데이터를 프로세스가 요청할 때 메모리로 가져오는 방법
- 메모리를 효율적으로 관리하고 응답 속도를 향상시키기 위해 사용
- page fault: 물리 메모리에 요구 페이지가 존재하지 않을때 발생
페이지 교체 알고리즘
- page fault가 발생했을때, 스왑 영역으로 내보낼 페이지를 결정하는 알고리즘
- 사용할 가능성이 적은 페이지를 선정해야 하며 여러 알고리즘이 존재한다.
FIFO
- 큐로 구현
- 가장 오래된 페이지를 대상 페이지로 선정
- 무조건 오래된 페이지 선정 -> 성능 떨어짐
OPT
- 앞으로 사용할 페이지를 미리 살펴보고 페이지 교체 선정 시점부터 사용 시점까지 가장 오랫동안 사용되지 않을 페이지를 대상 페이지로 선정
- 실제로 구현 불가능하다.
LRU, LFU
- LRU : 최근 최소 사용 알고리즘
- 제일 오랫동안 사용되지 않은 페이지를 교체한다.(A)
- 큐로 구현한다.
- 참조된 페이지의 시간을 기록해야 하므로 오버헤드가 발생한다.
- LFU : 최소 빈도 사용 알고리즘
- 참조 횟수가 가장 적은 페이지를 교체한다. (B)
Leave a comment