Be ready to study forever - 개발자 꿈나무

가상 메모리와 페이징 본문

Programming/Operating System

가상 메모리와 페이징

루눌룹 2021. 1. 7. 17:10

가상메모리란?

하나의  프로세스는 4GB의 크기를 가지고 있는데, 4GB의 프로세스 여러 개를 전부 메모리에 올려놓고 사용하는 것은 자원낭비임. 가상 메모리는 실제 메모리 보다 많아 보이게 하는 기술로, 실제 메모리에서는 가상 메모리의 필요한 부분만 부분적으로올려놓고 사용하게 된다.

프로세스의 구조로 4GB의 가상의 메모리 공간을 가지게 된다

그럼 가상메모리와 실제 메모리는 어떻게 연결이 되는걸까? – 정답은 MMU

MMU(Memory Management Unit)

MMUCPU에서 코드 실행시, 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치

페이징이란?

크기가 동일한 페이지 단위로 가상 주소 공간과 이에 매칭되는 물리 주소 공간을 관리한다.(리눅스에선 4KB단위로 paging). 페이지의 번호를 기반으로 가상주소화 물리주소를 매핑한다.

페이지는 페이징 테이블에 의해서 실제 메모리로 매핑된다 .

페이지 테이블 = 페이지 번호 & 해당 페이지의 첫 물리 주소 정보를 매핑한 테이블

가상주소 v = (p , d)라면

p – 페이지 번호

d – 페이지의 변위 (처음부터 얼마 떨어진 위치인지)

Page system의 동작방식은 해당 프로세스의 페이지 테이블에 해당 가상 주소가 포함된 페이지 번호가 있는지 확인하고 페이지 번호가 있으면 그 페이지가 매핑된 첫 물리 주소(p`)를 알아냄 그러므로 첫 물리주소 + 변위 가 물리 주소가 됨(p` + d)

 

TLB?

매번 메모리까지 왔다갔다 하는건 낭비이기 때문에 이미 이전에 사용한 값은 cacheTLB에 저장해서 성능을 향상한다.

 

페이지 폴트

어떠한 페이지가 실제 물리 메모리에 존재하지 않을 때 일어나는 인터럽트이며, 인터럽트 발생시 운영체제가 해당 페이지를 물리 메모리에 올린다.

페이지 폴트가 발생했을 경우 다이어그램

페이지 교체 알고리즘

물리 메모리가 가득 차 있다면, 사용되지 않는 페이지를 내리고 사용할 페이지를 물리 메모리에 올려야 한다. 이때 기준으로 몇 가지 알고리즘이 있다.

-      FIFO(First In First Out)알고리즘

먼저 들어온 페이지를 먼저 내린다

-      OPT(OPTimal replacement)알고리즘

앞으로 가장 오래 사용되지 않을 페이지를 내린다(앞으로 사용될 페이지는 알 수 없기 때문에 일반 OS에서는 구현X)

-      LRU(Least Recently Used)알고리즘

가장 오래전에 사용된 페이지를 교체하는 알고리즘

-      LFU(Least Frequently Used)알고리즘

가장 적게 사용된 페이지를 내린다.

세그멘테이션 기법

페이지가 일정한 물리적 크기(4KB)로 나눈다면 세그멘테이션 기법은 서로 크기가 다르게 논리적으로 분할한다.

'Programming > Operating System' 카테고리의 다른 글

[Linux] 파일 권한  (0) 2021.01.11
파일 시스템  (0) 2021.01.07
Thread의 이해  (0) 2021.01.06
프로세스 구조와 IPC(Inter Process Communication)  (0) 2021.01.06
운영체제의 스캐쥴러 이해  (0) 2021.01.06
Comments