반응형

목차

01. 운영체제의 개요
02. 컴퓨터의 구조와 성능 향상
03. 프로세스와 스레드
04. CPU 스케줄링
05. 프로세스 동기화
06. 교착 상태
07. 물리 메모리 관리
08. 가상 메모리의 기초
09. 가상 메모리 관리
10. 입출력 시스템과 저장장치
11. 파일 시스템
12. 네트워크와 분산 시스템


페이징 기법

 

페이징

고정 분할 방식을 이용한 가상 메모리 관리 기법.
물리 주소공간을 같은 크기로 나누어 사용
가상 주소는 프로세스 입장에ㅔ서 바라본 메모리 공간으로, 항상 0번지 부터 시작

페이지와 프레임

  • 가상 주소의 분할된 각 영역을 페이지라고 하며 번호를 매겨 관리
  • 물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해 프레임 이라고 함
  • 페이지와 프레임의 크기는 같기 때문에 페이지는 어떤 프레임에도 배치될 수 있음
  • 어떤 페이지가 어떤 프레임이 있는지에 대한 연결(매핑) 정보는 페이지 테이블에 담겨있음
  • 페이지 테이블의 invalid는 해당 페이지가 스왑영역에 있다는 의미.

 

프로세스가 30번지의 내용을 읽으려고 할 때 주소 변환 과정

  1. 가상 주소 30번지가 어느 페이지에 있는지 찾음 (30번지는 피이지 3의 0번째 위치)
  2. 페이지 테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있다는 걸 알아냄
  3. 최종적으로 물리 메모리 프레임 1의 0번째 위치에 접근(이 주소가  가상 주소 30번지의 물리주소)

(페이지는 10바이트 단위로  쪼개져있음 + 0부터 시작)

 

정형화된 주소 변환

  • 페이징 기법에서는 가상 주소를 VA = <P, D>로 표현
    • VA 가상주소
    • P 페이지
    • D 페이지의 처음 위치에서 해당 주소까지의 거리
  • 페이징 기법에서의 주소 변환은 가상주소 VA = <P, D>를 물리 주소 PA=<F, D>로 변환하는 것
    • PA 물리 메모리의 주소를 가리키는 용어로 물리주소.
    • F 프레임
    • D 프레임의 처음 위치에서 해당 주소까지의 거리

 

페이징 기법의 주소 변환 과정

  • VA = <P, D> → PA = <F, D>
  • 페이지 테이블을 사용하여 P는 F로 바꾸고 D는 변경 없이 그대로 씀
  • D를 변경하지   않은 이유는 페이지와 프레임의 크기를 똑같이 나누었기 때문.

 

페이지의 크기가 다양할 경우 가상 주소를  <P,  D>로 변환하는 공식

P = 나눗셈 (가상 주소 / 한 페이지의 크기)의 몫

D = 나눗셈 (가상 주소 / 한 페이지의 크기)의 나머지

  • 한 페이지의 크기가 10B인 가상 메모리 시스템에서 가상 주소 32번지
    • P  = 3, D = 2
  • 한 페이지의 크기가 512B인 가상 메모리 시스템에서 가상 주소 2049번지
    • P = 4, D = 1

 

16bit CPU의 컴퓨터에서 한 페이지의 크기가 2^10B 일 때 페이징 시스템

  • 한 프로세스가 사용할 수 있는 가상 메모리의 크기는 2^16 Bit
  • 0번지 부터 65535 번지 까지 사용 가능
  • 6비트는 페이지 번호, 10 비트는 페이지의 처음 위치에서 해당 주소까지의 거리

예시

  • 전체 페이지의 수는 2^6 즉 64개이고, 0번 부터 63번까지 존재
  • 물리 주소도 가상 주소와 같이 1024B로 나뉨. 프레임은 0부터 31까지만 있다고 가정
  • 페이지 테이블은 페이지 테이블 엔트리가   0~63으로 총 64개(페이지 테이블의 크기는 가상 주소 크기에 비례)

 

프로세스가 980번지에 저장된 데이터를 요청할 때 동적 주소 변환

  • 980번지에 저장된 데이터를 요청할 때 동적 주소 변환
  • 페이지 테이블로 가서 프레임 N을 찾아감
  • 물리 메모리의 해당하는 프레임 N지점으로가서 980번지 떨어진곳에 접근하여 데이터를 가져옴

 

페이지 크기가 1KB 라고 가정하고 페이지번호와 오프셋은?

  1. 2735
  2. 3000
  3. 16385

 

다수의 프로세스가 있는 페이징 시스템

  • 프로세스 마다 페이지 테이블이 존재함. 프로세스의 수가 많아지면 페이지 테이블의 크기가 커지고 이에 따라 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어듦
  • 페이지 테이블 크기를 적정하게 유지하는 것은 페이지 테이블 관리의 핵심

 

물리 메모리 내 페이지 테이블의 구조

  • 각 페이지 테이블의 시작 주소는 페이지 테이블 기준 레지스터에 보관
  • 물리메모리가 작으면 프로세스뿐 아니라 페이지 테이블의 일부도 스왑영역으로 이동함

 

페이지 테이블 매핑 방식

  1. 직접 매핑 - 테이블 전체가 물리메모리의 운영체제 영역에 존재
  2. 연관 매핑 - 테이블 전체를 스왑영역에서 관리
  3. 집합-연관 - 연관 매핑을 개선
  4. 역매핑 - 물리 메모리의 프레임 번호를 기준으로 테이블 구성

 

직접  매핑

 

 

  • 페이지 테이블 전체가 운영체제 영역에 존재.
  • 별다른 부가 작업 없이 주소 변환이 가능.

 

연관 매핑

  • 페이지 테이블 전체를 스왑 영역에서 관리 .
  • 물리 메모리의 여유 공간이 작을 때 사용하는 방식.
  • 모든 페이지 테이블을 저장장치의  스왑여역에 저장하고, 일부만 물리 메모리로 가져옴.
  • 일부 내용만 무작위로 가져오기 때문에 페이지 번호와 프레임 번호를 둘 다 표시.
  • 주소 변환시, 물리 메모리 내의 페이지 테이블을 다 검색해야 하며 만약 원하는 프레임 번호를 얻지 못하면, 스왑 영역에 있는 페이지 테이블 검색.

구조

  • 메모리에 접근하기 위해 변환 색인 버퍼를 찾음
    • 히트 : 원하는 페이지 번호가 변환색인 버퍼에 있으면 물리 주소로 변환
    • 미스 : 원하는 페이지 번호가 변환색인 버퍼에 없으면 스왑 영역에 저장된 직접 매핑 테이블을 사용해 프레임 번호로 변환
  • 전체 페이지 테이블을 물리 메모리에 보관하지 않아 메모리 절약 가능.
  • 미스가 많을 시,  성능이 떨어짐
  • 변환 색인 버퍼에 페이지 테이블을 가지고 있기 때문에 검색 한 후에야 페이지가 메모리에 없는 것을 깨달음

 

집합-연관 매핑

 

  • 연관 매핑에서 데이터를 무작위로 올리기 때문에, 프레임 번호를 얻기 위해 모든 테이블을 검색하는 문제 존재.
  • 디렉터리 매핑이라고도 불림
  • 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옴
  • 페이지 테이블을 N개씩 자르고 이를 관리하는 페이지 테이블을 더 생성
  • 새로 생성한 집합 테이블이 물리 메모리에 있는지 스왑에 있는지 정보 표시
  • 연관 매핑과 비교했을 때 집합 테이블을 통해 원하는 페이지 테이블 엔트리가 스왑영역에 있는지 물리 메모리에 있는지 간단히 확인 가능
  • 연관 매핑과 집합-연관 매핑은  캐쉬에서 사용하는 방식 → 버퍼를 사용해서..?

 

가상 주소

페이지 테이블이 일정 크기의 묶음으로 나뉘어서 VA = <P, D>가 아니라 VA = <P1, P2, D>로 바뀌어 표시.

  • P1 = 디렉터리 테이블에서의 위치 정보
  • P2 = 묶음 내에서의 위치 정보

페이지 테이블을 10개씩 한 묶음으로 나눌 경우 0~9번 테이블은 0번 디렉터리에, 10~19번 테이블은 1번 디렉터리

  • 32번지 <,0, 3, 2>
  • 133번지 <1, 3, 3>

 

구조

디렉터리 페이지 테이블의 시작주소는 페이지 테이블 기준 레지스터가 가지고 있음.
프로세스가 주소를 요구하면 VA = <P1, P2, D>로 변환되고 P1을 이용해 디렉터리 테이블에서 주소를 찾음.
만약 invalid면 미스가 일어난 것

 

역매핑

물리 메모리의 프레임 번호를 기준으로 테이블을 구성(다른방식은 페이지기준).
물리 메모리의 프레임에 어떤 프로세스의 어떤 페이지가 올라와 있는지 표시.
프로세스 수와 상관없이 테이블 하나만 존재하므로 테이블의 크기가 작음.
프로세스가 가상 메모리에 접근할 때 프로세스 아이디와 페이지 번호를 모두 찾아야함.

 

구조

테이블이<프레임번호, 프로세스 아이디, 페이지 번호>로 구성.
페이지 테이블 행 수는 실제 프레임의 수와 같음.
프로세스의 수와 상관없이 항상 일정 크기의 페이지 테이블을 유지하여 테이블의 크기가 매우 작음.
주소 변환 시 메모리 관리자는 주소 변환을 해야하는 프로세스의 아이디와 페이지 번호가 물리 메모리에 있는지 역매핑 테이블에서 검색.
현재 테이블에서 원하는 데이터가 없으면 스왑 영역에서 가져옴.
페이지  테이블을 다 검색한 후 저장장치에 접근해 시간낭비함.

반응형