정글사관학교 개발일지/운영체제-PintOS

운영체제 (4) 메모리 관리 - 1, 2(정글사관학교 74일차 TIL)

Woonys 2022. 1. 13. 01:30
반응형

오늘은 갓효경 강의를 들었다. 오늘 효율이 개쌉망이라 강의 두 개 들은게 전부네..ㅁㅊ..

노션에 정리해서 여기다 옮겨야 하는데, 일단은 링크로 대체..강의 다 듣고서 리마인드할 때 정리하자!

(이제까지 썼던 TIL 중 역사상 가장 짧은 TIL이 될 것 같아..키워드만 조금 정리)

 

 

메모리 관리 1

 

논리 주소 vs 물리 주소

  • 논리 주소: 각 프로세스마다 독립적으로 갖는 주소 공간(0번지부터 시작)
    • cpu가 보는 주소는 여기에 해당

  • 물리 주소: 메모리에 실제로 올라가는 위치
  • 주소 바인딩: 프로그램이 메모리 내 물리 주소 어디에 올라가는지를 결정하는 것
    • symbolic addr => logical addr => physical addr 과정을 거치는데, 이 중 logic => physic 이 부분에 해당하는 게 addr binding
    • 주소 바인딩 3가지 종류: complie time binding / load time binding / execution time binding(=run time binding)

 

MMU

  • MMU: logic addr => physic addr로 매핑해주는 하드웨어 디바이스

 

 

 

메모리 관리 2

 

Paging

  • 페이징: 프로그램 구성한느 논리 메모리를 동일 페이지로 잘라서 각 페이지 별로 물리 메모리 적당한 위치에 어디든 비어있는 곳이 있다면 거기에 올리는 기법
    • 페이지 기법에서 주소 변환: 페이지 테이블이 책임진다! (연속 할당에서는 base & bound) => PTBR, PTLR로 역할 변경(페이지 테이블 가리키고 / 테이블 크기 보관하고)
  • 페이지 자체도 메모리 내에 위치 -> 모든 메모리 접근 연산에 2번의 access가 필요 => 시간이 2배로 든다.
  •  

TLB

  • 페이지가 메모리 2번 접근해야 하는 문제 때문에 고안된 하드웨어. 주소 변환을 빠르게 하기 위한 캐시 메모리! 메인 메모리보다 빠르다.
  • TLB는 page number(가상주소) - frame number(물리주소) 쌍으로 들고 있음 => 페이지 테이블에서는 인덱스가 p값을 대신한 반면!
  • TLB 내에서 병렬 검색 => TLB 안에 주소가 있다면? TLB hit! page 안가고 바로 물리 메모리로 직행! 만약 TLB miss면? 페이지 테이블에 2번 접근해야!

2단계 페이지 테이블(Two-level page table)

  • 왜 2단계 페이지 테이블 사용?
    • 컴퓨터에서 기술을 쓰는 목적 2가지:
      • 공간을 줄이거나
      • 속도를 빠르게 하거나 
      • 여기서는? 1번 - 공간을 줄이기 위한 목적!
      • 속도는 줄지 않는다(2단계 거치는 건 동일) but 페이지 테이블 공간이 줄어든다!
    • 페이지 테이블: 한 프로세스당 대략 4MB 차지 / 32비트 기준 메모리 최대 용량 : 4G => 페이지 테이블가지고 가득 차버리는 문제 발생!
    • 심지어 페이지 테이블에 들어가는 정보는 페이지 테이블 엔트리 정보인데, 가상 주소 페이지 중 실제로 사용하는 페이지는 몇 개 없음. 하지만 페이지 테이블 내에는 사용하지 않는 페이지도 엔트리로 들어가 있어야 함! 그래야 인덱싱을 통해 찾을 수 있기에.
  • 이 문제를 해결하기 위해 사용하는 페이지만 메모리에 저장하려고 만든 게 2단계 페이지 테이블! 
반응형