[운영체제] #20강

Junyoung Park·2022년 8월 5일
0

운영체제

목록 보기
20/25
post-thumbnail

Memory Management

가상 주소

  • 실제 주소 X
  • 사용자의 메모리로 사용되는 메모리
  • 프로세스 수행을 위해서 모든 프로그램이 메모리로 적재될 필요가 없다. 즉 피지컬 메모리에 담길 필요는 없다. → 현재 실행 중인 (코드/데이터/스택) 일부만이 피지컬 메모리에 적재되어 있기만 하면 된다.

    P1, P2, P3 모든 메모리를 적재하기에는 피지컬 메모리가 부족하기 때문에 페이지 테이블을 통해 효과적으로 관리해서 모든 프로세스를 "한 번에 사용하는 것처럼" 보이게 만든다.

  • 메인 메모리, 세컨더리 메모리 사용 → 피지컬 메모리보다 큰 가상 메모리 다이어그램. 페이지 테이블을 통해 "필요한" 메모리만을 실제 피지컬에 올리고, 나머지는 세컨더리 메모리에 적재해서 대기 중. 필요하다면 바꾸는 swap-in/out을 사용한다.

  • 테이블에 쓰인 주소 공간 번호 사용해서 가상 주소 → 물리 주소 매핑

Paging

  • 주소 공간을 동일한 단위로 나눈 관리 방법
  • 1 페이지 = 4KB로 나누어 관리 - 페이지와 프레임의 크기는 동일. 페이지에 대응되는 프레임이 있어야 한다.
  • 프레임 frame: 물리 메모리를 나누었을 때 생기는 블록
  • 페이지 page: 가상 메모리를 나누었을 때 생기는 블록
  • 페이지가 프레임 하나를 할당 → 피지컬 메모리 적재. 할당 X → 세컨더리 스토리지에 저장

Page number and offset

  • 페이지가 어디에 저장되어 있는지 잘 관리하기 위한 방법
  • 페이지 번호: 각 프로세스가 가진 페이지 각각에 부여된 번호(1번 프로세스는 0~63 페이지를 가지고 있음)
  • 페이지 주소: 각 페이지의 내부 주소를 가리키는 번호(원하는 데이터는 1번 프로세스 12번 페이지의 34번째 데이터)
  1. 128MB → 4KB 단위 페이징할 때 필요한 프레임: 128MB = 1282^20. 1282^20 / 42^10 = 322^10 = 1024*32 = 2^15개
  2. 4GB의 논리적 주소를 페이징할 때 필요한 4KB 단위 페이지의 개수 - 42^30 / 42^10 = 2^20
  3. 4KB 페이지 한 장의 메모리에 접근하기 위한 주소 비트 - 4*2^10 = 2^12. 12비트로 표현할 수 있는 2^12 크기이기 때문에 12비트
  • 페이지 사이즈: OS에 따라 서로 다른 페이지 사이즈. 일반적으로 유저가 정할 수는 없음.
  • 리눅스의 Huge page: 사용자에 의해 결정되는 다소 큰 크기의 페이지. 일부 구간을 4KB보다 크게 사용할 수 있다. 컴퓨터 부팅 시에 결정되고 최대 1GB까지 사용할 수 있다.

Page Table

  • 페이지 테이블: 각 프로세스의 페이지 정보를 저장. 즉 프로세스마다 하나의 페이지 테이블을 가짐(프로세스는 페이지 테이블에 접근 X, 자신의 가상 주소만을 알 수 있음, 어떤 피지컬 메모리에 매핑되는지는 알 수 없음)
  • 인덱스 = 페이지 번호. 해당 페이지에 할당한 물리 메모리의 시작 주소가 담겨 있음. 즉 시작 주소, 페이지 주소를 통해 원하는 데이터가 존재하는 물리 메모리의 주소를 알 수 있게 됨.

    페이지 테이블이 OS에 하나만 존재한다면, 중복 정보가 테이블에 기록되기 때문에 이를 구별해야 한다. 프로세스 단위로 테이블이 있어야 한다!

  • 피지컬 메모리에 위치한 페이지 테이블.
  • PTBR(Page table base register)가 물리 메모리 내 페이지 테이블을 가리키고 PTLR(Page table length register)가 페이지 테이블 사이즈를 나타냄(시작 주소 + 길이를 통해 관리)

Page Table Mapping

  • 페이지 테이블 매핑
  • 페이지 테이블을 통한 주소 번역

PTE

  • 페이지 테이블에 존재하는 하나의 레코드 - 페이지에 해당
  • Page base address: 해당 페이지 할당된 프레임 시작 주소. 이를 통해 물리 메모리 접근 가능
  • Flag bits: 페이지 접근 여부. 페이지 내용 변경 여부. 할당 프레임 여부. 읽기/쓰기 권한 여부
profile
JUST DO IT

0개의 댓글