• [ 운영체제 ] 메모리 관리 [2] (Memory Management)

    2021. 3. 19.

    by. KimBangg

     

    [1] Paging [ 메모리 관리 기법 ]

    물리적 주소 공간이 연속적이지 않도록 한다 ( noncontiguous )

    페이징은 물리적 메모리 공간을 정해진 사이즈의 블록 (=Frame) 으로 나눈다.

    페이징은 논리적 메모리 공간을 정해잔 사이즈의 블록(=Page)로 나눈다. // Page와 Frame의 사이즈는 같다.

    논리적 주소를 물리적 주소로 전환하기 위해서, Page Table을 만든다!

    => 내부 단편화는 존재하지만, 외부 단편화는 발생하지 않는다.

     

    [2] 주소 전환 계획 [ Adddress Translation Scheme by MMU ]

    CPU에 의해 만들어진 논리적 주소 값은 => 페이지 넘버[P] 와 페이지 페이지 offset [d]로 나뉜다.

    페이지 넘버를 통해 물리적 주소의 "프레임"의 위치를 찾고, offset 값을 더해주면 원하는 값을 찾을 수 있다.

    사진 삭제

    사진 설명을 입력하세요.

     

    Physical Memory는 주소는 5bits 를 사용한다 => "000" "00" 앞의 세자리는 Frame 뒤 2자리는 offset

    Logical Memory의 주소는 4bits를 사용한다 => "00" "00" 앞의 두자리는 Page, 뒤 2자리는 offset

     

    대표사진 삭제

    4를 곱한 이유는 페이지 테이블의 크기가 4이기 때문입니다 :D

    [3] Page Table

    페이지 테이블은 M&M에 저장된다

    PTBR(Page TAble base Resiter)는 페이지 테이블을 포인팅 하고있다.

    PRLR (Page Table length Register)는 페이지 테이블의 크기를 나타낸다.

    이러한 구조 속에서 모든 데이터 및 인스터럭션은 두가지의 메모리 접근을 필요로한다.

    1) One for Page table 2) One for the data/Instruction

    페이지 테이블의 사이즈는 논리적 주소값의 사이즈 & Page Table Entry에 의해 결정된다.

     

    [4] TLB [ Translation Lookaside Buffers ]

    CPU가 Physical memomory에 접근하기 위해서는 1) 페이지 테이블 2) 실제 메모리 접근시

    이렇게 총 2번을 접근해야 합니다.

    하지만, 실제로 접근 할 때마다, 2번을 통해 접근해야한다면 속도면으로 굉장히 안좋기 때문에 이에 대한 대안으로 'TLB'가 등장합니다 :D

     

    [4-1] TLB의 운영 [ 캐시 메모리와 비슷한 역할을 수행 ]

    1) 논리적 주소가 생겨나는 경우, 이 페이지 주소는 TLB에 저장이 된다.

    2) 페이지 넘버가 TLB안에서 발견이 되면( = TLB Hit ), 즉각적으로 프레임 이용 및 메모리 접근이 가능

    3) 페이지 넘버가 TLB안에서 발견이 안된되면( = TLB Miss ), 페이지 테이블을 참조한 메모리를 만들어야 하고, 프레임 주소를 얻을 수 있다면 이를 바탕으로 메모리에 접근을 한다.

    4) TLB가 가득 차있으면, 대체 알고리즘을 통해 남겨둬야하는 페이지를 결정한다

    사진 삭제

    사진 설명을 입력하세요.

    [4-2] 효과적인 접근 시간 ( Effective Access Time)

    효과적인 접근시간 ( EAT) : (t + ε ) x a + ( 2t + ε ) x ( 1 - a )

     

    Hit ratio(a) : TLB 테이블 안에서 원하는 Page Table을 찾을 가능성

    TLB lookup Time = ε // Memory access time t;

     

    [5] 메모리 보호 ( Memory Protection )

    - 메모리 보호는 protection bit로 이루어진다.

    - Read만 가능한 Page에 쓰려고 하면 trap이 발생된다.

     

    [5-1] Vaid & Invaild bit

    1) 논리적 주소 값안에 존재하는 페이지 이기에 합법적

    2) 논리적 주소 값안에 존재하지 않는 페이지

     

    [6] 페이지 테이블의 구조 [ Page Table Structure ]

     

    (1) Hierarchical Page Table

    32bit의 논리적 주소를 => 4kb의 페이지 사이즈로 나누면 너무 큰 규모의 페이지 테이블이 된다.

     

    * Two-level Page Table

    - 논리적 주소를 다수의 페이지 테이블(= Forward Mapped Page Table)로 나눈다.

    - Page table을 페이지화 시켜서 다시 page table에 담음으로써, 불필요한 메모리 사용을 방지하고 On-demand방식으로 메모리에 로드하는 방식.

    사진 삭제

    사진 설명을 입력하세요.

    (2) Hased Page Table

    명령어 비트 중 page 테이블의 인덱스인 p를 Hash Function에 parameter로 넣어서 나온 결과 값을 통해서 hash table을 검사하여 해당하는 Physical Memory로 찾아가는 방식이다.

     

    사진 삭제

    사진 설명을 입력하세요.

    (3) Inverted Page Table ( 역전 페이지 테이블 )

    - Physical Address를 기반으로 만들어진 테이블을 의미한다.

    - 첫 번째 프레임은 테이블의 첫 번째에 저장이 되고, 테이블은 각 프레임이 어떤 프로세스와 대응되는지에 대한 정보와 프로세스 번호인 pid의 값을 가지고 있다.

    - 테이블의 크기가 크기 떄문에, 검색 소요시간이 길다.

     

    사진 삭제

    사진 설명을 입력하세요.

     

    [7] Segmentation Architecture

    각각의 segment은 seg-num을 부여받고, 논리적 주소는 < seg-num, offset > 으로 구성된다.

     

    [7-1] Segment Table

    2차원 논리적 주소값을 통해 -> 물리적 주소값으로 이동

    각 테이블 base(메모리 안에 있는 세그먼트들이 있는 물리주소의 시작점) , limit ( 길이 )을 가지고있다.

    사진 삭제

    사진 설명을 입력하세요.

     

    댓글