1216-TIL(Keywords reg. VM)

그로밋·2023년 12월 18일
0

krafton jungle

목록 보기
46/58
  • 1216 토요일 - 10시 30분 출근 (점심 2시간)
  • [O] Keywords 정리
  • kaist gitbook Project3 FAQ, Appendix Memory Allocation, Virtual Address, Page Table 읽기
  • ostep or concepts 읽으면서 키워드 보충하기
  • TIL

keywords

Virtual Memory

benefits

  • 메모리 크기
    프로그램이 더이상 물리메모리의 크기에 제약을 받지 않는다.

  • 시스템 성능 향상 (better CPU Util, throughput)
    각 프로그램은 물리메모리에 크기를 적게 차지하기 때문에 더 많은 프로그램들이 동시에 실행될 수 있게되어 CPU 활용도와 처리량이 증가하게 된다. 이로 인해 응답시간, 반환 시간은 증가하지 않으면서도 시스템 성능 향상.

  • 시스템 속도 향상
    프로그램이 메모리에 로드하고 스왑하는 I/O 작업이 적게 필요하게 되어 각 프로그램은 더 빠르게 실행될 수 있다.

목표

  • 투명성(transparency)
    운영체제는 실행 중인 프로그램이 가상 메모리의 존재를 인지하지 못하도록 가상 메모리 시스템을 구현해야 한다.

  • 효율성(eiciency)
    운영체제는 가상화가 시간과 공간 측면에서 효율적이도록 해야 한다. 시간적으로는 프로그램이 너무 느리게 실행되서는 안되고, 공간적으로는 가상화를 지원하기 위한 구조를 위해 너무 많은 메모리를 사용해서는 안된다.

  • 보호(protection)
    운영체제는 프로세스를 다른 프로세스로부터 보호해야하고 운영체제 자기 자신도 보호해야 한다. 프로세스가 탑재, 저장, 혹은 명령어 반입 등을 실행할 때 어떤 방법으로든 다른 프로세스나 운영체제의 메모리 내용에 접근하거나 영향을 줄 수 있어서는 안 된다.

우리가 c언어를 작성할 떄 볼 수 있는 주소는 물리주소일까 가상주소일까? 정답은 가상주소.
그렇다면 우리는 물리주소를 프로그래밍을 통해 볼 수 있을까? 정답은 NO. 오로지 운영체제 뿐이 명령어와 데이터가 탑재되어 있는 물리 메모리의 주소를 알 수 있다.

shared libraries

논리 메모리와 물리 메모리를 나눔으로써 두개 이상의 프로세스들이 파일(standard C library)과 메모리를 공유할 수 있게 한다.
프로세스 생성 중에 fork() 시스템콜을 사용함으로써 페이지들을 공유함으로써 프로세스의 생성을 더 빠르게 한다.

Page Table

  • 페이지테이블 관리 코드 @ threads/mmu.c

  • 페이지 테이블은 CPU가 가상 주소를 물리 주소로 변환하는 데 사용하는 데이터 구조. 페이지에서 프레임으로 변환하는 도구. Virt Addr -> Phys Addr

Translation Lookaside Buffer (TLB)

  • 특수한 작은 고속 룩업 하드웨어 캐시를 사용함. (기능도 캐시랑 거의 비슷)

  • 히트율이 높은 이유
    시간 지역성(temporal locality) 으로 인해 TLB의 히트율이 높아진다. 시간 지역성이란 한번 참조된 메모리 영역이 짧은 시간 내에 재 참조되는 현상을 일컫는다. 다른 캐시와 마찬가지로 TLB의 성공 여부는 프로그램의 공간 지역성과 시간 지역성 존재 여부에 달려 있다. 만약 프로그램이 공간 혹은 시간 지역성을 보이는 경우, TLB 사용 효과가 더욱 두드러지게 나타날 것이다.

  • TLB가 가득 차 있으면 어떡하나?
    기존 내역을 하나 골라서 새로 넣을 걸로 교체해야함(LRU, RR, or Random 정책들 중에서 골라서. tmi: LRU연산은 너무 비싸서 잘 안한다고 하고, 랜덤 정책은 은근 hit ratio가 평균값 나오기 때문에 자주 쓰인다고 함)

  • TLB miss 를 누가 처리하나? -> either hardware or software depends on the operating system.

    • by hardware (Intel x86 is the example of managed by HW that uses multi-level page table)
      • (흐름 아래 그림 참고)
      • 페이지 테이블에서 원하는 페이지 테이블 엔트리 찾는다
      • 필요한 변환 정보를 추출한다
      • TLB를 갱신한다
      • TLB 미스가 발생한 명령어를 재실행한다
    • by software (RISC라는 CISC보다 최근에 등장한 컴퓨터 구조로 RISC기반 컴퓨터에서는 TLB miss를 처리하는 과정을 살펴보자)
      • TLB에서 주소 찾기 실패시 하드웨어가 예외 시그널 발생
      • 시그널을 받은 os는 명령어 실행을 일시 정지하고 실행모드에서 커널모드로 변경함으로 커널 코드 실행을 준비한다
      • 트랩 핸들러를 실행한다
      • 페이지 테이블을 검색해서 변환 정보를 찾고 TLB 접근이 가능한 "previleged" 명령어를 사용해서 TLB를 갱신한 후에 리턴한다
      • 하드웨어가 명령어를 재실행한다

흐름

[하드웨어가 TLB miss를 처리하는 경우]

  • case(1) cpu ➡️ TLB @MMU ➡️ HIT! ➡️ Phys Addr

  • case(2) cpu ➡️ TLB @MMU ➡️ MISS! ➡️ Page Table @MainMemory ➡️ HIT! ➡️ Phys Addr

  • case(3) cpu ➡️ TLB @MMU ➡️ MISS! ➡️ Page Table @MainMemory ➡️ MISS! ➡️ Page Fault

Page Fault

Supplemental Page Table의 vip 손님은 page fault handler 임.

  • 페이지 폴트 핸들러가 의미하는 바

프로젝트 2 에서는 페이지 폴트는 항상 커널이나 유저 프로그램의 버그를 나타냄.
프로젝트 3 에서는 더이상 저것만을 의미하지는 않는다. (좀 더 명확해졌다)

이제 페이지 폴트는 단순히 파일이나 스왑슬롯에서 페이지를 가져와야 한다는 뜻, 아니면 단순히 모든 비트가 0인 페이지 라거나. (페이지 폴트가 의미하는 경우의 수는 줄어들었지만 이제 이렇게 바뀌기 위해서는 우리(학생)가 page fault handler를 좀 더 손봐야 한다.)

페이지 폴트 발생 이후 프로시저

  1. 내부 테이블(보통 PCB, Process Control Block)을 확인해서 해당 프로세스의 메모리 참조가 유효한지 아닌지 결정하기 위해 확인한다.

  2. 유효하지 않은 참조라면 프로세스를 종료시킨다. 유효한데 해당 페이지에 가져오지를 못한거라면 이제 가져온다.

  3. free-frame list에서 하나의 free frame을 찾는다.

  4. 원하는 페이지를 새로 할당된 프레임으로 읽어오기 위해 보조 저장 장치 작업을 스케줄한다.

  5. 저장소로부터 읽어오는게 끝났다면 내부 테이블을 새로 메모리에 적재된 페이지를 가르킬 수 있도록 업데이트한다.

  6. 인스트럭션을 재시작해서 프로세스가 이제 해당 페이지에 접근할 수 있게한다. 마치 항상 메모리에 있었던 것처럼.

페이지 폴트 핸들러의 프로시저(more like orders)

  • 페이지 폴트 핸들러는 누가 호출?

userprog/exception.c 에 있는 page_fault()vm/vv.c 에 있는 vm_try_handle_fault()라는 이름을 가진 페이지 폴트 핸들러를 호출한다.

  1. supplemental page table에서 부재가 발생한 페이지 찾기.
  2. 페이지를 저장하기 위해 프레임을 획득하기.
  3. 데이터를 파일시스템이나 스왑에서 읽어오기. (읽어오거나 0으로 초기화하는 방식으로 만들어서 프레임으로 가져옴)
  4. 폴트가 발생한 가상 주소에 대한 PTE가 물리 페이지를 가리키도록 지정하기.

Lazy Loading

보통 lazy loading이라고 하면 웹에서 사용하는 기술을 이야기 하는데 OS에서도 virtual memory에서 비슷한 개념이 쓰이는데 Demand paging이라고 한다.

Demand-paged virtual memeory 에서는 프로그램 실행 중에 페이지가 요구될 때만 로드된다. 이는

Page Replacement Policy

Anonymous page

Swap Disk

File-backed Page

Direct Memory Access

profile
Work as though your strength were limitless. <S. Bernhardt>

0개의 댓글