[운영체제 스터디] - 8. 메모리관리 Ⅱ, Ⅲ

Ader(아더)·2022년 3월 26일
0

OS

목록 보기
8/11
post-thumbnail

[8주차] - 메모리관리 Ⅱ, Ⅲ


1. 페이징


2. Paging Hardware with TLB

  • Context switch가 오버헤드가 크다고 표현하는 것은 가득채워둔 TLB를 다 날리고 새로 채워야하는 것도 한 부분을 차지한다

3. Two-Level Page Table


4. Multilevel Paging and Performance

  • Address space가 더 커지면 다단계 페이지 테이블 필요
  • 각 단계의 페이지 테이블이 메모리에 존재하므로 Logical address의 Physical address 변환에 더 많은 메모리 접근 필요
  • TLB를 통해 메모리 접근 시간을 줄일 수 있음

5. Memory Protection


6. Inverted Page Table

  • page table이 매우 큰 이유
    • 모든 process 별로 그 logical address에 대응하는 모든 page에 대해 page table entry가 존재
    • 대응하는 page가 메모리에 있든 아니든 간에 page table에는 entry로 존재
  • Inverted page table
    • Page frame 하나당 page table에 하나의 entry를 둔 것
    • 각 page table entry는 각각의 물리적 메로리의 page frame이 담고 있는 내용 표시
    • 단점
      • 테이블 전체를 탐색해야 함 (오버헤드 심하다)
    • 조치
      • associateive register 사용(expensive)

7. Shared Page

  • 2가지 제약조건이 존재함
    • Read-only, 동일한 logical address에 있어야 함

8. Segmentation

  • paging과의 차이점
    • paging은 동일한 크기로 나누어서 관리
    • segmentation은 의미 단위로 관리
  • 프로그램은 의미 단위인 여러 개의 segment로 구성
    • 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의
    • 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능
    • 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨
  • segment는 다음과 같은 logical unit들임
    • main()
    • function
    • global variables
    • stack
    • symbol table, arrays

9. Segmentation Architecture


10. Paged Segmentation

본 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.

profile
하루하루 성장하는 개발자

0개의 댓글