CS지식 쌓기

페이징을 통한 가상 메모리 관리

류도토리 2024. 1. 2. 17:48
  1. 연속 메모리 할당의 두 가지 문제점
    1. 외부 단편화
    2. 물리 메모리보다 큰 프로세스 실행 불가
  2. 가상 메모리
    1. 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술
    2. 페이징, 세그멘테이션
  3. 페이징
    1. 프로세스를 일정 크기로 자르록, 이를 메모리에 불연속적으로 할당
    2. 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자름
    3. 메모리의 물리 주소 공간을 프레임이라는 페이지와 동일한 일정한 단위로 자른 뒤
    4. 페이지를 프레임에 할당하는 가상 메모리 관리 기법
  4. 페이징에서의 스와핑
    1. 프로세스 단위의 스왑 인, 스왑 아웃이 아닌 페이지 단위의 스왑 인(페이지 인), 스왑 아웃(페이지 아웃)
    2. 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃
    3. 실행에 필요한 페이지들은 메모리로 스왑 인
    4. 프로세스를 실행하기 위해 모든 페이지가 적재될 필요 없다
    5. 물리 메모리보다 큰 프로세스도 실행될 수 있다
  5. 문제 발생
    1. 프로세스를 이루는 페이지가 어느 프레임에 적재되어 있는 지 CPU가 일일이 알기 어렵
    2. 프로세스가 메모리에 불연속적으로 배치되어 있다면 CPU 입장에서 이를 순차적으로 실행할 수 없음
    3. CPU 입장에서 다음에 실행할 명령어 위치를 찾기 어려워짐
  6. 페이지 테이블
    1. (실제 메모리 내의 주소)물리 주소에 불연속적으로 배치되더라도 (CPU가 바라보는 주소)논리주소에는 연속적으로 배치되도록 하는 방법
    2. 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표
    3. 프로세스마다 페이지 테이블이 있다
    4. 내부 단편화
      1. 페이지 크기가 10KB, 프로세스 크기 108KB?
      2. 2KB: 내부 단편화
  7. PTBR
    1. 프로세스마다 페이지 테이블이 있고,
    2. 각 페이지 테이블은 CPU 내의 프로세스 테이블 베이스 레지스터(PTBR)가 가리킨다
    3. 페이지 테이블이 메모리에 있으면? 메모리 접근 시간 두 배로
      1. 페이지 테이블 참조하기 위해 한 번, 페이지 참조하기 위해 한 번
  8. TLB
    1. CPU 곁에 페이지 테이블의 캐시메모리
    2. 페이지 테이블의 일부를 가져와 저장
    3. CPU가 접근하려는 논리 주소가 TLB에 있다면 - TLB 히트 - 메모리 접근 한 번
    4. CPU가 접근하려는 논리 주소가 TLB에 없다면 - TLB 미스 - 메모리 접근 두 번
  9. 페이징에서의 주소 변환
    1. 특정 주소에 접근하고자 한다면 어떤 정보가 필요할까?
      1. 어떤 페이지/프레임에 접근 하고 싶은지
      2. 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
    2. 페이징 시스템에서의 논리 주소
      1. 페이지 번호와 변위
      2. 페이지 테이블을 통해 프레임 번호, 변위로 변환된다
      3. 프레임과 페이지는 크기가 같으므로 각각의 변위끼리의 값은 같다
    3. 페이지 테이블 엔트리
      1. 페이지 테이블의 각각의 행
      2. 유효 비트 - 현재 해당 페이지에 접근 가능한지 여부
        1. 유효 비트가 0인 페이지에 접근하려고 하면?
          1. 페이지 폴트라는 인터럽트 발생
      3. 보호 비트 - 페이지 보호 기능을 위해 존재하는 비트
        1. 읽기/쓰기/실행 따로 가능 여부를 나누어 설정 가능
      4. 참조 비트 - CPU가 이 페이지에 접근한 적이 있는지 여부
      5. 수정 비트 - CPU가 이 페이지에 데이터를 쓴 적이 있는지 여부
        1. 메모리에 변경된 내용을 보조기억장치에도 새로 바꿔줘야 함
         

 

 

'CS지식 쌓기' 카테고리의 다른 글

페이징의 이점과 계층적 페이징  (1) 2024.01.04
페이지 교체와 프레임 할당  (1) 2024.01.04
연속 메모리 할당  (0) 2024.01.02
교착 상태 해결 방법  (0) 2024.01.02
교착 상태(데드락)  (0) 2024.01.02