[운영체제] 가상 기억 장치와 페이징, 세그멘테이션 - Virtual Memory, Paging, Segmentation

·2021년 4월 21일
0

가상기억장치 (Virtual Memroy)

가상기억장치란,
보조기억장치(HDD, SSD 등)에서 필요한 데이터 조각만 쏙쏙 골라와서 주기억장치(RAM)에 올려놓고 사용하는 것이다.

메모리 계층 구조를 보면
(*하드디스크=보조기억장치이다!)

그림에서 보이듯이, 하위계층으로 갈 수록 용량이 크다.
따라서 우리가 설치하는 프로그램들은 하드디스크에 저장되어 있는데,
알다시피 프로그램을 실행하려면 CPU가 프로그램에 대한 데이터를 읽어 연산과정을 거쳐야 한다.
하지만! 그림에서 보듯이 CPU와 하드 디스크는 아~주 멀리 떨어져있다.
연산이 필요할 때 마다 하드디스크까지 가서 데이터를 읽어오는 것은 너무 비효율적이다.

그래서 하드디스크 안의 데이터들을 작게작게 쪼개서 필요한 부분만 데리고 올라와 메인 메모리에 두고 쓰는 것이다.

가상기억장치 구현 기법

대표적으로 페이징, 세그멘테이션이 있다!
둘 다 "하드디스크의 데이터를 쪼개서 쓴다"는 기본적 원리는 같으나,
데이터를 어떤 크기로 쪼갤 것인지에 차이를 둔다.

Paging (페이징)

같은 크기로 와랄라 나눠버리기!

페이징 기법은
주기억장치의 데이터 공간, 보조기억장치의 데이터를 모두 동일한 크기로 나눈다!
(이 때, 그 크기는 대체로 1~4KB이다)
그 후, 데이터 접근이 일어날 때, 보조기억장치에서 필요한 페이지들을 꺼내다가 주기억장치의 영역(=페이지 프레임)에 적재시킨다.

페이징 기법의 특징으로는,

  • 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.
  • 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(PMT)이 필요하다.
  • PMT 사용으로 시간/공간 Cost가 증가하고, 처리 속도가 감소된다.

외부 단편화? 내부 단편화?

  • 외부 단편화
    분할된 영역(프레임)의 크기가 할당된 프로그램의 크기(페이지)보다 작아서 프로그램이 들어갈 수가 없는 경우
  • 내부 단편화
    분할된 영역(프레임)의 크기가 할당된 프로그램의 크기(페이지)보다 커서, 프레임 내부에 공간이 남아도는 경우

페이징에서 내부 단편화가 일어날 수 있는 이유?
페이지 크기가 4KB, 데이터의 크기가 10KB라고 가정해보자.
데이터를 페이지 크기대로 쪼개면 4KB / 4KB / 2KB 의 페이지로 나눠질 것! 이 때, 2KB짜리 페이지에서 내부 단편화가 일어난다.

Segmentation

논리적인 단위로 프로그램을 나누는 기법.
보조기억장치의 프로그램을 코드, 데이터, 스택 영역 등의 논리적 단위로 나눈 조각들을 세그먼트라고 한다.

  • 내부 단편화는 발생하지 않으나, 외부 단편화는 발생할 수 있다.
  • 각 세그먼트가 상주하는 위치 정보를 가지고 있는 세그먼트 맵 테이블 (SMT)가 필요하다.
  • 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범해서는 안된다. 이를 위해 기억장치 보호키가 필요하다.
profile
튼튼

0개의 댓글