일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- GraphQL
- Machine Learning
- 연결리스트
- vue3
- alexnet
- 타입스크립트
- 웹팩
- pytorch
- cors
- 스택
- 프로그래머스
- 배열
- 컨테이너
- APOLLO
- 코딩테스트
- 이진탐색
- 큐
- 자료구조
- 릿코드
- 연결 리스트
- 프로세스
- 알고리즘
- 포인터
- RT scheduling
- 해시테이블
- RxJS
- 프론트엔드
- 자바스크립트
- 브라우저
- C
- Today
- Total
프린세스 다이어리
[OS] 다중단계 페이징 시스템의 개념, TLB 뜻 본문
리눅스의 프로세스의 페이징 시스템에서는 0GB~4GB를 모두 4KB 단위 페이지로 나누어서 Page Table을 만들어서 가상 주소와 물리 주소로 매칭한다. 한편 페이지 테이블도 결국 메모리에 올려야 하는데 전체 4GB를 몽땅 쪼개서 테이블을 만들어 놓는다면 쓸데없이 많은 메모리 공간을 차지하게 된다. 만약 실제로 돌리는 간단한 C언어 프로그램이 10KB라면 4GB 전체를 페이지 테이블로 만드는 건 메모리 공간 낭비다.
1. 메모리 공간을 절약해주는 다중단계 페이징 시스템
다중단계 페이징 시스템이란, Page Directory로 영역을 구분하여, 그 중에 데이터가 있는 디렉터리만 페이지 테이블을 만들어 메모리 공간을 절약하는 개념이다.
전체 페이지 32bit 중, 12bit는 원래대로 페이지 주소로부터의 변위를 나타내는 정보고, 나머지 20bit 중 10bit는 페이지 디렉터리 정보, 10bit는 해당 디렉터리의 페이지 테이블이다. 리눅스에서는 3단계로 구분했다가, 요즘에는 더 복잡하게 4단계로 나누어 처리하는 경우도 있다고 한다.
1) CR3 레지스터의 전체 페이지 테이블의 맨 앞이 페이지 디렉터리의 맨 앞 주소를 가리키게 된다.
2) 해당 주소에 대응하는 디렉터리에 가면, 그 디렉터리에 대한 페이지 정보를 가진 페이지 테이블 주소의 맨 앞이다.
3) 그 페이지 테이블에서 해당 페이지 번호를 찾아서 페이지 정보와 offset 정보로 물리메모리 주소의 데이터를 가져온다.
2. 메모리에 오가는 시간을 절약해주는 TLB(Translation Lookaside Buffer)
MMU가 하는 일을 다시 정리해 보면, CPU가 가상주소를 가지고 데이터를 요청하면, MMU라는 별도의 하드웨어가 페이지 테이블을 참고해 물리 주소로 변환해서 CPU에게 해당 페이지의 데이터를 전달해주는 역할을 한다. 그런데 페이지 테이블도 물리 메모리에 적재돼 있고, CPU가 요청한 데이터 또한 물리 메모리에 적재돼 있기 때문에 MMU가 물리 메모리에 두 번이나 오가야 한다는 점에서 시간 효율이 떨어진다.
이를 해결하기 위해 TLB가 필요하다. TLB는 MMU가 가상 주소와 물리 주소를 변환하는 과정에 들이는 시간을 줄여 주는 또다른 별도의 캐싱 보조 하드웨어다.
MMU가 가상주소 A를 가지고 물리주소 A'를 한 번 얻었다면, 이렇게 최근에 변환된 매칭 정보를 TLB에 캐싱한다. 다음번부터 A 가상주소를 가지고 물리주소를 찾아야 한다면, MMU는 페이지 테이블을 확인하러 물리 메모리에 접근하지 않고, TLB에 캐싱된 정보가 있나 찾아본다. 과정을 정리해 보면 다음과 같다.
TLB가 없으면:
(1) CPU의 가상 주소 요청
(2) MMU가 CR3의 base 주소를 가지고 페이지테이블로 감 (물리 메모리 접근 1)
(3) MMU가 물리 주소를 가지고 옴
(4) MMU가 페이지의 물리 주소로 접근함 (물리 메모리 접근 2)
(5) 해당 페이지의 데이터를 CPU에 전달
TLB가 있고 && TLB에 기존에 가상주소-물리주소 캐싱이 되어 있으면:
(1) CPU의 가상 주소 요청
(2) MMU가 TLB에서 캐싱된 물리 주소를 가지고 옴 (시간 세이브)
(3) MMU가 페이지의 물리 주소로 접근함 (물리 메모리 접근 1)
(4) 해당 페이지의 데이터를 CPU에 전달
'운영체제, 컴퓨터 구조' 카테고리의 다른 글
[OS] 요구 페이징(Demand Paging)과 관련해 페이지 폴트 인터럽트(Page Fault Interrupt) 발생하는 과정 설명 (0) | 2022.02.01 |
---|---|
[OS] 페이징 시스템의 "공유 메모리(Shared Memory)" 개념 (0) | 2022.01.31 |
가상 메모리의 매커니즘, 페이징 시스템을 알아보자. (0) | 2021.10.23 |
가상 메모리 등장한 이유, 가상 메모리 이용하는 원리 (0) | 2021.10.22 |
[OS] 멀티 프로세스와 멀티 스레드, 둘 중에 뭐가 좋아? (1) | 2021.10.05 |