ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] 메모리 관리 II
    CS📟 2023. 2. 21. 22:27

    불연속 할당

     

    페이징 기법
    • 보통 4kb
    • 페이지의 개수가 많기 때문에 레지스터만으로는 불가능
    • 프로세스의 가상 메모리를 동일한 사이즈의 페이지 단위로 나눔
    • 가상 메모리의 내용이 페이지 단위로 불연속적으로 저장
    • 일부는 백킹 스토리지에 일부는 물리 메모리에 저장
    • 물리적 메모리를 동일한 크기의 프레임으로 나눔
    • 논리적 메모리를 동일 크기의 페이지로 나눔 (프레임과 같은 크기)
    • 모든 가용 프레임들을 관리
    • 페이지 테이블을 사용하여 논리적 주소를 물리적 주소로 변환
    • External fragmentation(외부조각)이 안 생김
    • internal fragmentation(내부 조각)은 생김
    • 32비트 주소체계면 4기가

     

    page table
    • 메인 메모리에 상주
    • 프로그램마다 하나씩 존재
    • Page-table basr register(PTBR)가 page table을 가리킴
    • Page-table length register(PTLR)가 테이블 크기를 보관
    • 모든 메모리 접근 연산에는 2번의 메모리 액세스 필요
    • page table은 메모리에 존재하기 때문에 주소 변환을 위해 메모리를 갔다가 변환된 주소로 다시 메모리에 접근해야 함
    • 그래서 TLB를 이용해서 page table의 일부를 가지고 있고, 변환해야 할 주소를 TLB에서 먼저 찾고, 없으면 page table로 접근을 한다.
    • TLB는 일부만 가지고 있기 때문에 논리 페이지 번호와 프레임 번호를 쌍으로 갖고 있어야 함
    • TLB를 하나하나 접근해서 찾는 건 오버헤드가 너무 크다.
    • 그래서 속도 향상을 위해서 associative register라는 하드웨어를 이용해서 일일이 탐색하지 않고 해결
    • 다른 프로세스가 실행되면 기존 TLB를 지워야 함

     

    2단계 페이지 테이블
    • 현대의 컴퓨터는 address space가 매우 큰 프로그램 지원
    • 32 bit address 사용 시 : 2^32(4G)의 주소 공간
    • page size가 4K 시 1M 개의 page table entry 필요
    • 각 page entry가 4B시 프로세스당 4M의 page table 필요
    • 그러나, 대부분의 프로그램은 4G의 주소 공간 중 지극히 일부분만 사용하므로 page table 공간 낭비
    • 해결책
      • page table 자체를 page로 구성
      • 사용하지 않는 주소 공간에 대한 outer page table의 엔트리 값은 null

     

     

    • 페이지 테이블 주소 변환과 페이지 접근을 위해서 메모리를 더 접근
      • 시간으로는 손해지만 공간의 효율성을 위해서 사용
    • 1단계 페이지 테이블
      • 사용하지 않는 공간도 페이지가 만들어지고 표시
        • 공간이 낭비
    • 2단계 페이지 테이블
      • 밖에 페이지 테이블이 안쪽 페이지 테이블을 가리키고 안쪽 페이지 테이블이 메모리의 주소공간을 알려준다
      • 밖에 페이지 테이블만 만들어지고 안쪽에 사용하지 않는 페이지 테이블은 만들어지지 않음
        • 공간 효율
        • 메모리에 여러 번 접근하므로 시간 낭비
      • 시작 테이블 페이지의 주소는 레지스터가 가지고 있음
      • 단계가 많아질수록 공간 효율은 올라가고, 시간 효율이 떨어짐
    • 4단계 페이지 테이블을 사용하는 경우
      • 필요 없는 공간을 거의 사용하지 않음
      • TLB에서 캐시로 커버할 수 있는 사용 중인 메모리 주소가 많아짐
      • TLB hit ratio가 98%인 경우 TLB에서 보통 바로 주소를 가져올 수 있어서 속도가 빨라짐

     

     

    'CS📟' 카테고리의 다른 글

    [CS 운영체제] 메모리 관리 I  (0) 2023.01.16
    [CS] 운영체제 - 병행제어 II  (0) 2022.12.26
    CS 스터디 - 운영체제 : 병행제어 I  (0) 2022.11.04
    [CS] 운영체제 - CPU 스케줄링  (0) 2022.11.03
    [CS 스터디] OS - Process  (0) 2022.10.22
Designed by Tistory.