본문 바로가기
컴퓨터과학/운영체제

[운영체제] 메인 메모리 (Main memory)

by 윤호 2021. 1. 21.

Main memory

  • 프로세스의 메모리 공간 보호
    • base register & limit register
    • BR <= 프로세스가 접근할 수 있는 공간 <= BR + LR
  • Address binding : 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑
    • Compile time
    • Load time
    • Execution time
  • 프로세스가 메모리에 올라간 이후
    • Dynamic Loading : 프로그램의 모든 모듈을 올리지 않고 필요하면 올려주는 방식
    • Dynamic Linking : 프로세스 실행 시 같은 라이브러리가 메모리에 올라가는 것을 방지
      • 라이브러리 최초 필요시 해당 라이브러리의 메모리 공간 확보
      • 다른 프로세스가 해당 라이브러리를 필요할 경우 stub 포인트로 참조
    • Swapping : 메모리의 올라간 프로세스를 잠시 디스크에 저장했다가 다시 올리는 방식
      • 메모리 공간이 부족시 사용
      • swap-in : 메모리에 다시 할당되는 것, swap-out : 디스크로 빠지게되는 것

연속 메모리 할당

  • multiple-partition allocation : hole이 생길때까지 잠시 대기
  • hole 탐색하는 방법
    • First-fit : 찾으면 일단 넣음
    • Best-fit : 있는 것 중 제일 작은 것에 넣음 (효율성 중시)
    • Worst-fit : 제일 넉넉한 것에 넣음
  • Fragmentation
    • External fragmentation : 프로세스를 넣을 남은 메모리가 충분하지만, 연속되지 않음
      • compaction을 통한 해결 but overhead가 크고 압축 과정에서 또 frag를 생성함
    • Internal fragmentation : partition(할당된 메모리)의 크기가 프로세스보다 큼

불연속 메모리 할당 - Paging

물리적 메모리를 고정된 크기의 블록으로 나눔 -> frames

논리적 메모리를 고정된 크기의 블록으로 나눔 -> pages

page table을 이용해 page와 frame을 매핑

Internal fragmentation 문제

TLB를 통해 page table 접근을 빠르게

  • CPU가 TLB에 먼저 접근하여 page address를 확인
    • 있으면 바로 물리 주소에 접근
    • 없으면 page table에 접근

Memory protection

  • 연속 할당에서는 base/limit register를 통해 프로세스 메모리 보호
  • 불연속 할당에서는 page table에 protection bit을 이용 (valid-invalid)

Shared pages

  • Shared code (I/O 프로세스 등)
  • Private code and data

Page Table 구조

page table도 큰 연속적인 메모리가 되어서 page table을 나누고 접근하는 방법

  • Hierarchical page table
    • Two-levle page Table
    • 64bit에는 부적합
  • Hashed page table
    • 해시 함수를 통해 테이블에 바로 접근하여 물리주소를 찾음
    • 해시 테이블에 접근 후엔 chaining 방식으로
  • Inverted page table
    • 페이지 주소(논리) -> 프레임 주소(물리) 가 아닌 프레임 주소를 기준으로 테이블을 할당
    • 메모리 활용 효율성이 좋지만, 테이블 탐색 시간이 오래걸릴 수 있음

댓글