Computer Science 기본 지식/운영체제

[운영체제] 가상 메모리 (1) 페이징과 세그먼테이션

로파이 2021. 1. 19. 13:01

독학사 운영체제 편을 공부하고 정리한 글입니다.

가상 메모리

  • 주 기억장치의 메모리 공간보다 큰 주소 지정을 할 수 있도록 함
  • 하나의 프로세스 전체가 주 메모리에 있지 않고 일부만 있어도 실행 가능하게 함
  • 가상 메모리를 통하여 주 메모리의 실제 주소 공간 크기에 구애받지 않고 프로그래밍을 할 수 있음

- 가상 메모리의 크기

    = 물리 메모리와 스왑 영역을 합한 크기

 

- 메모리 분할 방식

  • 가변 분할 방식: 세그먼테이션
  • 고정 분할 방식: 페이징

 

페이징 기법

고정 분할 방식을 이용한 가상 메모리 관리 기법

물리 주소 공간을 같은 크기로 나누어 사용한다.

  • 가상 주소의 분할된 각 영역은 페이지 / 물리 메모리의 각 영역은 프레임이라고 한다.
  • 가상 주소 페이지 번호에 대응하는 물리  주소 프레임 번호를 저장하는 페이지 테이블이 있다.

 

페이징 기법

페이지-프레임 주소 변환

페이징 기법의 주소 변환

- 가상 주소의 표현

VA=<P, D>

가상 주소는 페이지 번호 P와 페이지 처음 위치에서 해당 주소까지의 거리 또는 오프셋 D으로 이루어져 있다.

 

- 물리 주소의 표현

PA=<F, D>

물리 주소도 마찬가지로 프레임 번호 F와 해당 주소까지의 거리 D으로 이루어져 있다.

  1. 페이지와 프레임의 주소 단위가 10kB로 같다면,
  2. 가상 주소 82kB 번지 = <8, 2>로 표현된다.
  3. 만약, 페이지 번호 8번에 해당하는 프레임 번호가 3번이라고 하면
  4. 물리 주소 <3,2> = 32 번지이다.
  • 가상 주소와 물리 주소 표현에서 같은 주소를 표현할 때, 거리 D는 항상 같다.
  • 만약, 페이지 테이블에 해당 프레임이 invalid(유효비트 = 1), 즉 물리 주소에 없다면 보조 기억 장치에 저장되어 있다는 뜻이다.

- 16bit CPU의 페이지 시스템 구성

16bit CPU 컴퓨터에서 한 프로세스가 사용할 수 있는 가상 메모리의 크기는 $2^{16}$ Bytes이다. 사용자는 0번지부터 65535($2^{16}-1$)번지까지의 가상 주소 공간을 사용할 수 있다.

한 페이지 크기가 $2^{10}$ Bytes이면 가상 주소를 표현하는 16bit 중 6bit는 페이지 번호, 10bit는 페이지 처음 위치에서 해당 주소까지의 거리(오프셋)로 사용된다.

 

16bit CPU에서 가상 주소의 표현

  • 페이지 테이블은 메모리 관리자가 사용하는 자료구조로 빠른 접근이 필요하기에 물리 메모리 영역 중 운영체제 영역의 일부분에 모아 놓는다.
  • 각 프로세스는 프로세스 제어 블록에 있는 테이블 기준 레지스터(PTR)를 사용하여 운영체제 영역에 있는 페이지 테이블 중 자신의 페이지 테이블 시작 주소를 가리키고 있는 주소를 저장한다.

페이지 테이블 매핑 방식

 

- 직접 매핑

페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식

물리 메모리가 충분할 때 사용 가능하다.

 

직접 매핑

- 연관 매핑

전체 페이지 테이블을 스왑 영역에 두고 페이지 테이블 일부를 물리 메모리에 가져온다.

물리 메모리에 페이지 테이블 일부를 저장하는 테이블을 변환 색인 버퍼(TLB) 또는 연관 레지스터라고 한다.

 

연관 매핑

  • 메모리를 절약할 수 있다.
  • 캐시와 비슷하게 페이지 번호가 해당 TLB에 있다면 TLB히트로 해당 프레임을 바로 알 수 있고
  • 없다면 TLB 미스로 스왑 영역에 있는 페이지 테이블을 참조하여 해당 프레임을 알 수 있다.

 

세그먼테이션

사용자 관점을 지원하는 비연속 메모리 할당방법으로 논리적 영역을 세그먼트 집합으로 인식한다.

ex) 프로세스를 구성하는 스택, 힙, 데이터, 코드 영역의 메모리는 논리적으로 분할되어 있다.

프로세스를 나누는 세그먼트들은 각 다른 크기를 가지고 있다.

세그먼테이션 기법

세그먼테이션 테이블에는 세그먼테이션 크기를 나타내는 "limit"과 물리 메모리상의 시작 주소를 나타내는 "address"가 있다.

 

세그먼테이션 기법의 주소 변환

세그먼테이션 기법의 주소 변환

 

- 가상 주소의 표현

VA=<S, D>

가상 주소는 세그먼트 번호 S와 페이지 처음 위치에서 해당 주소까지의 거리 또는 오프셋 D으로 이루어져 있다.

 

- 물리 주소의 표현

PA= Address + Distace

물리 주소는 해당 세그먼테이션 테이블에서 확인한 시작 주소 Address와 오프셋 만큼을 더한 값이다.

 

- Limit을 벗어나는지 검사

실제 물리 주소를 접근하기 전 시작 주소와 오프셋 거리를 더한 실제 물리 주소가 Limit을 넘는 지 검사한다.

사용자 프로세스가 선언한 한계 용량보다 더 큰 주소를 참조할 때, 세그먼테이션 오류 메시지를 발생시키고

프로세스를 강제 종료한다.

 

세그먼테이션-페이징 혼용기법

 

- 권한 비트

세그먼테이션 테이블 엔트리에서 해당 메모리에 대한 접근 권한을 명시할 수 있다.

일반적으로 읽기/쓰기/실행과 같은 권한이 비트로 표시되어 있다.

 

- 세그먼테이션-페이징 혼용 기법의 주소 변환

세그먼테이션-페이징 혼용 기법의 주소 변환

- 가상 주소의 표현

VA=<S, P, D>

세그먼트 번호 S, 페이지 번호 P, 페이지의 처음 위치에서 해당 주소까지의 거리 D로 이루어져 있다.

 

- 접근 순서

1. 세그먼테이션 테이블에서 세그먼트 번호를 확인한 후 해당 페이지 번호가 영역을 벗어나는 지 혹은 권한에 대한 조사를 하여 문제가 없는지 확인한다.

2. 해당 페이지 번호를 페이지 테이블에서 확인 한 후, 있다면 해당 프레임에서 D만큼 떨어져있는 물리 주소를 가져온다.

3. 주 메모리에 없다면 (invalid) 페이지 부재로 스왑 영역에서 해당 페이지를 가져와 페이지 테이블을 업데이트 한다. (페이지 교체 알고리즘)