Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.98 MB, 23 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>ĐẠI HỌC DUY TÂNTRƯỜNG KHOA HỌC MÁY TÍNH</b>
<b>KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THƠNG</b>
🙦🕮 🙤
<b>Tên đề tài:</b>
<b>GVHD: HỒNG ĐẠI LONG: NGUYỄN KIM TUẤNLỚP: CR250 AK</b>
<b>NHĨM: 15</b>
<b>Thành viên 1: NGUYỄN THÀNH TRUNG - 3427Thành viên 2: NGUYỄN ĐÌNH TUẤN - 8270</b>
<b>Đà Nẵng,10/2023</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>MỤC LỤC</b>
<b>MỞ ĐẦU... 1</b>
1. Lý do chọn đề tài:... 1
2. Mục tiêu của đề tài:... 1
<b>CHƯƠNG 1 : VÌ SAO CƠ CHẾ VIRTUAL MEMORY RA ĐỜI?...2</b>
1.1 Tổng quan về bộ nhớ ảo :...2
1.2 Cách mà bộ nhớ ảo ra đời :...2
<b>CHƯƠNG 2: MỤC TIÊU CỦA VIRTUAL MEMMORY LÀ GÌ?...6</b>
2.1 Mục tiêu chính:... 6
<b>CHƯƠNG 3: VIRTUAL MEMORY ĐƯỢC TRIỂN KHAI NHƯ THẾ NÀO?...7</b>
3.1 Cơ chế triển khai của Virtual memory trên phần cứng:...7
3.2 Cơ chế triển khai của Virtual memory trên phần mềm:...7
<b>CHƯƠNG 4: VIRTUAL MEMORY QUẢN LÝ BỘ NHỚ NHƯ THẾ NÀO?...9</b>
4.1 Cách quản lý bộ nhớ của virtual memory:...9
<b>CHƯƠNG 5 : VIRTUAL MEMORY CÓ NHỮNG ƯU NHƯỢC ĐIỂM GÌ?...11</b>
5.1 Ưu điểm của virtuall memory:...11
5.2 Nhược điểm của virtuall memory:...11
5.3 Cách khắc phục các nhược điểm:...12
<b>CHƯƠNG 6: BẢNG TRANSLATION LOOKASIDE BUFFER (TLB)...13</b>
6.1 Bảng TLB:...13
<b>CHƯƠNG 7: CƠ CHẾ MULTI-LEVEL PAGE...15</b>
7.1 Sơ lược về cơ chế Multi-lever page:...15
7.2 Cách hoạt động của cơ chế Multi-lever page:...15
<b>KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...17</b>
<b>TÀI LIỆU THAM KHẢO...19</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>MỞ ĐẦU</b>
<b>1. Lý do chọn đề tài:</b>
Nhu cầu của người dùng ngày càng tăng, dẫn tới số lượng các chương trình nằm trong RAM ngày càng nhiều, kích thước của các chương trình cũng ngày càng lớn. Tốc độ tăng trưởng về cả số lượng lẫn kích thước của các chương trình thậm chí cịn nhanh hơn cả tốc độ nâng cấp RAM. Điều này đã buộc ta phải quản lý bộ nhớ sao cho hiệu quả. Các hệ thống hiện nay thường áp dụng cơ chế <b>bộ nhớ ảo</b> (virtual memory) để quản lý bộ nhớ. Vì thế nhóm chúng em chọn đề tài này là để tìm hiểu và nghiên cứu về cơ chế bộ nhớ ảo (virtual memory).
<b>2. Mục tiêu của đề tài:</b>
Mục tiêu của đề tài này sẽ tập trung làm rõ cơ chế bộ nhớ ảo là gì. Nội dung gồm:
<sup>Vì sao cơ chế virtual memory ra đời?</sup>
<sup>Mục tiêu hướng tới của cơ chế virtual memory là gì?</sup> Cơ chế virtual memory được triển khai như thế nào?
Cơ chế virtual memory quản lý bộ nhớ ra sao?
Ưu nhược điểm của cơ chế virtual memory là gì?
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>CHƯƠNG 1 : VÌ SAO CƠ CHẾ VIRTUAL MEMORY RA ĐỜI?1.1 Tổng quan về bộ nhớ ảo :</b>
Bộ nhớ ảo là một vùng thuộc không gian lưu trữ của bộ nhớ phụ hệ thống máy tính (chẳng hạn như ổ cứng HDD hoặc SSD). Nó hoạt động như thể là một phần của RAM hoặc bộ nhớ chính hệ thống. Lý tưởng nhất là khi dữ liệu cần thiết để chạy các ứng dụng được lưu trữ trong RAM, nơi mà chúng có thể được CPU truy cập nhanh chóng.
<b>1.2 Cách mà bộ nhớ ảo ra đời :</b>
Thơng thường, ta sử dụng một ngôn ngữ bậc cao (như C, C++, Java,...) để lập trình. Kết quả, ta thu được các file gọi là mã nguồn (source code). Nhưng vì CPU chỉ hiểu được mã máy hay cịn gọi là mã nhị phân (binary code), nên ta phải chuyển đổi mã nguồn thành mã máy. Tùy vào ngôn ngữ lập trình, phương pháp chuyển đổi có thể là biên dịch (compile) hoặc thơng dịch (interpret).
Hình 1
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">Ví dụ, ta có thể sử dụng chương trình gcc để biên dịch mã nguồn C thành mã máy (hình 1). Kết quả, ta thu được một file thực thi có định dạng ELF (Executable and Linkable Format).
Để tìm hiểu cấu tạo của file thực thi này, ta có thể sử dụng các công cụ như readelf hoặc objdump. Chẳng hạn, nếu sử dụng lệnh objdump -D -S hello, ta sẽ thấy rằng, file thực thi này là một chuỗi các byte nhị phân, được chia thành nhiều section. Mỗi byte được gắn một con số để định địa chỉ (hình 2). Tập hợp các con số này được gọi là khơng gian địa chỉ của chương trình hay program address space. Khái niệm khơng gian địa chỉ cịn xuất hiện trong nhiều lĩnh vực khác, ví dụ: khơng gian địa chỉ để đánh số nhà (street address space), không gian để đánh biển số xe (vehicle address space), không gian địa chỉ IP (IP address space), không gian tên miền (domain name address space)...
Hình 2. Các lệnh/dữ liệu trong file thực thi của chương trình được đánh địa chỉ File thực thi gồm một số section quan trọng sau:
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"> Section <b>.text</b>: chứa các lệnh của chương trình.
Section <b>.rodata</b>: chứa các biến chỉ đọc (ví dụ được khai báo với từ khóa const).
Section <b>.data</b>: chứa các biến toàn cục và biến tĩnh đã được khởi tạo.
Section <b>.bss</b>: chứa các biến toàn cục và biến tĩnh chưa được khởi tạo.
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Sau khi biên dịch xong, ta mới chỉ thu được một chương trình nằm trên ổ cứng. Nhưng để CPU có thể thực thi chương trình, thì các lệnh và dữ liệu của chương trình đó cần được đưa vào RAM. Cụ thể, khi người dùng khởi chạy chương trình, hệ điều hành sẽ tìm kiếm một vùng nhớ trống trên RAM, rồi đưa các section của chương trình vào vùng nhớ đó, tạo thành một tiến trình. Ngồi ra, hệ điều hành còn thiết lập thêm vùng stack segment (để chứa biến cục bộ của các hàm) và vùng heap segment (để chứa biến cấp phát động). Toàn bộ vùng nhớ của tiến trình trên RAM gọi là ảnh của tiến trình hay process image (hình 3). Từng byte trong process image cũng được đánh địa chỉ. Tập hợp các địa chỉ này được gọi là không gian địa chỉ của tiến trình (process address space). Trong hệ thống sử dụng CPU 32 bit, thì khơng gian địa chỉ của tiến trình rộng 4GB, tức là có khoảng 4 tỉ số được dùng để đánh địa chỉ.
Câu hỏi đặt ra là: phải chăng cần đưa tồn bộ chương trình vào một vùng nhớ liên tục trên RAM? Trong một số hệ thống, khi khởi chạy một chương trình, hệ điều hành sẽ tìm một vùng nhớ liên tục đủ lớn trên RAM, rồi đưa tồn bộ chương trình vào. Điều này giúp cho:
Các lệnh và dữ liệu luôn trong trạng thái sẵn sàng truy cập.
Việc quản lý bộ nhớ trở nên đơn giản.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">uCLinux là một ví dụ điển hình cho ngun tắc nói trên. Tuy nhiên, cơ chế quản lý bộ nhớ này có những nhược điểm sau:
Khơng thực thi được các chương trình có kích thước lớn hơn RAM. Khó tìm ra vùng nhớ đủ lớn để chứa chương trình.
Do đó, cơ chế quản lý này chỉ thích hợp trong các hệ thống ít tác vụ và các tác vụ ít thay đổi trong lúc chạy. Mặt khác, ta không cần phải đưa tồn bộ chương trình vào RAM. Lý do là vì:
<sup>Thứ nhất, luồng thực thi của tiến trình hầu như chỉ chạy qua một vài đoạn mã</sup>
(đoạn code), chứ ít khi chạy qua tất cả các đoạn mã của chương trình. Ví dụ, trong cấu trúc rẽ nhánh if-else, đoạn mã else xử lý ngoại lệ ít khi được thực thi, do đó chỉ cần đưa đoạn mã if vào RAM. Chỉ khi nào cần thực thi, đoạn mã trong else mới được đưa vào RAM.
Thứ hai, có nhiều tính năng của chương trình hiếm khi được sử dụng. Nên những đoạn mã triển khai cho các tính năng đó cũng không cần thiết phải được đưa vào RAM.
Thứ ba, ngay cả khi tất cả các đoạn mã của chương trình đều cần thiết, nhưng do CPU chỉ thực thi lần lượt các lệnh, nên các đoạn mã này cũng không được thực thi đồng thời. Tại một thời điểm, chỉ cần vài đoạn mã trong RAM là đủ.
Trong các hệ thống địi hỏi tính đa nhiệm cao độ (multi-task) và các tác vụ thường xuyên thay đổi, cơ chế virtual memory sẽ được áp dụng để quản lý bộ nhớ nhằm khắc phục những vấn đề nêu trên. Mặc dù cơ chế này phức tạp hơn nhưng sẽ làm tăng hiệu quả sử dụng bộ nhớ.
<b>CHƯƠNG 2: MỤC TIÊU CỦA VIRTUAL MEMMORY LÀ GÌ?2.1 Mục tiêu chính:</b>
Ta mong đợi rằng, cơ chế virtual memory giúp ta đạt được 3 mục tiêu sau:
Khơng cần phải đưa tồn bộ tiến trình vào trong RAM.
Vùng nhớ dành cho tiến trình trên RAM khơng cần liên tục.
Một tiến trình khơng thể truy cập trái phép vào vùng nhớ của một tiến trình khác hoặc của hệ điều hành.
Cơ chế bộ nhớ ảo (virtual memory) ra đời nhằm mục tiêu quản lý bộ nhớ một cách hiệu quả. Nhu cầu của người dùng ngày càng tăng, dẫn tới số lượng các chương trình nằm trong RAM ngày càng nhiều, kích thước của các chương trình cũng ngày càng
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">lớn. Tốc độ tăng trưởng về cả số lượng lẫn kích thước của các chương trình thậm chí còn nhanh hơn cả tốc độ nâng cấp RAM.
Khi dung lượng RAM vật lý hết, RAM ảo sẽ tính tốn và lấy bộ nhớ tạm của ứng dụng có thời gian không sử dụng lâu nhất để đặt vào RAM ảo. Lúc nào bạn sử dụng lại ứng dụng thì RAM ảo sẽ trả lại bộ nhớ tạm vào RAM vật lý.
Nói một cách khác, mục tiêu của cơ chế bộ nhớ ảo là tạo ra một không gian bộ nhớ lớn hơn bộ nhớ vật lý, cho phép nhiều tiến trình chạy đồng thời mà khơng phải lo lắng về việc hết bộ nhớ.
<b>CHƯƠNG 3: VIRTUAL MEMORY ĐƯỢC TRIỂN KHAI NHƯ THẾ NÀO?3.1 Cơ chế triển khai của Virtual memory trên phần cứng:</b>
Về mặt phần cứng, khối MMU ( emory anagement nit) được thêm vào hệ<b>MMU</b>
thống. Khối MMU được đặt giữa CPU và RAM, có nhiệm vụ dịch địa chỉ do CPU phát ra (gọi là địa chỉ ảo hay virtual address) sang địa chỉ để truy cập RAM (gọi là địa chỉ vật lý hay physical address). Trong thực tế, MMU thường được đóng gói cùng với CPU (hình 4).
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Hình 4. Triển khai cơ chế virtual memory trên phần cứng
<b>3.2 Cơ chế triển khai của Virtual memory trên phần mềm:</b>
Về mặt phần mềm, hệ điều hành sẽ:
<small></small>chia RAM thành nhiều mảnh nhỏ, mỗi mảnh gọi là một frame. Các frame có kích thước giống nhau. Kích thước này tùy từng hệ thống, nhưng thường là 4KB. Hệ điều hành tạo ra bảng MMT ( emory ap able) để quản lý tất cả các frame trên RAM.<b>MMT</b>
Bảng MMT được lưu trên RAM.
<small></small>coi mỗi tiến trình có một khơng gian địa chỉ riêng. Khơng gian địa chỉ của mỗi tiến trình được chia thành nhiều mảnh nhỏ, mỗi mảnh gọi là một page. Các page có kích thước giống nhau và giống với kích thước của frame. Tương ứng với mỗi tiến trình, hệ điều hành tạo ra một bảng Page Table để quản lý tất cả các page của một tiến trình. Các bảng Page Table cũng được lưu trên RAM.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><small></small>cập nhật lại thanh ghi Page Table pointer của MMU mỗi khi xảy ra context switch. Tức là, khi tiến trình A tạm dừng và tiến trình B chuẩn bị được CPU thực thi, hệ điều hành sẽ ghi địa chỉ bảng Page Table của tiến trình B vào thanh ghi Page Table pointer.
Hình 5. Triển khai cơ chế virtual memory trên hệ điều hành
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>CHƯƠNG 4: VIRTUAL MEMORY QUẢN LÝ BỘ NHỚ NHƯ THẾ NÀO?4.1 Cách quản lý bộ nhớ của virtual memory:</b>
Khi khởi tạo tiến trình, hệ điều hành sẽ:
<small></small> tìm một số frame trống trên RAM rồi đưa một vài page của tiến trình vào đó.
<small></small> tạo ra bảng Page Table cho tiến trình và cập nhật lại bảng MMT.
Trước khi cho phép CPU thực thi một tiến trình, hệ điều hành sẽ ghi địa chỉ bảng Page Table của tiến trình đó vào thanh ghi Page Table pointer của MMU. Sau đó, CPU bắt đầu thực thi tiến trình.
Hình 6. Cơ chế chuyển đổi địa chỉ ảo thành địa chỉ vật lý trong hệ thống 32 bit/page 4KB
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Khi thực thi, mỗi khi muốn lấy 1 lệnh, CPU phát ra địa chỉ ảo của lệnh đó tới MMU. Từ địa chỉ ảo, MMU xác định được lệnh đó thuộc page nào. Sau đó, MMU tra bảng Page Table để xem page đó nằm trong RAM chưa.
<small></small>Nếu page đó đã nằm trong RAM, MMU sẽ xác định được frame nào chứa page, từ đó tính được địa chỉ vật lý của lệnh (hình 6).
<small></small>Nếu page đó đang nằm trên ổ cứng, thì MMU sẽ gửi một Interrupt tới CPU. CPU thực hiện đoạn mã Page Fault handler để xử lý Interrupt. Cơng việc chính của handler này là:
o Nếu vẫn cịn frame trống trên RAM, thì đưa page mới vào (hình 7).
o Nếu khơng cịn frame trống nào, thì một page cũ sẽ bị đưa ra ổ cứng để nhường cho page mới. Việc chọn đưa page nào ra ổ cứng có thể dựa trên một số tiêu chí như: page đó ít được truy cập, hoặc page đó đã nằm trong RAM quá lâu rồi,…
Hình 7. Dịch địa chỉ ảo sang địa chỉ vật lý khi page cần truy cập không nằm trong RAM
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>CHƯƠNG 5 : VIRTUAL MEMORY CĨ NHỮNG ƯU NHƯỢC ĐIỂM GÌ?5.1 Ưu điểm của virtuall memory:</b>
Ưu điểm của cơ chế virtual memory là:
Vì CPU phát ra địa chỉ tách biệt với địa chỉ truy cập RAM, nên
o chương trình biên dịch khơng cần quan tâm rằng lúc chạy thì tiến trình được đặt ở đâu trong RAM.
o kích thước của chương trình khơng bị rằng buộc bởi kích thước của RAM. Do đó, kích thước của chương trình có thể lớn hơn RAM.
o các tiến trình khơng thể truy cập trái phép vào vùng nhớ của nhau và của hệ điều hành.
Vì chỉ cần mang một phần tiến trình vào RAM, nên
o các tiến trình có kích thước lớn hơn RAM vẫn được thực thi một cách bình thường.
o tăng được số lượng tiến trình có trong RAM, từ đó giảm thời gian nghỉ của CPU, tức là nâng cao hiệu quả sử dụng CPU.
<sup>Vì tiến trình khơng cần nằm liên tục trên RAM, nên</sup>
o dễ dàng tìm được khơng gian trên RAM cho tiến trình, giảm thời gian cấp phát bộ nhớ.
o frame nào của RAM cũng có thể sử dụng được, từ đó nâng cao hiệu quả sử dụng RAM.
<b>5.2 Nhược điểm của virtuall memory:</b>
Tuy mang lại nhiều lợi ích, nhưng cơ chế này có những nhược điểm sau:
Thứ nhất, cơ chế quản lý này tuy hiệu quả nhưng phức tạp.
Thứ hai, vì một số page khơng nằm trong RAM, nên khi cần truy cập lệnh/dữ liệu trên những page này, ta phải chờ đưa những page đó vào trong RAM.
Thứ ba, vì MMU phải tham chiếu bảng Page Table trên RAM, nên tốc độ truy cập lệnh/dữ liệu bị giảm xuống.
Thứ tư, ta phải tốn một phần RAM để lưu bảng MMT và các bảng Page Table. Giả sử hệ thống CPU 32 bit/RAM 1GB đang có 50 tiến trình. Nếu mỗi page có kích thước 4KB, thì tổng kích thước các bảng Page Table là 200MB, chiếm 20% RAM. Điều này phần nào làm mất đi tính hiệu quả sử dụng bộ nhớ của cơ chế virtual memory.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><b>5.3 Cách khắc phục các nhược điểm:</b>
Do đặc tính hoạt động của virtual memory, nên ta không thể khắc phục được hai nhược điểm đầu tiên. Đối với hai nhược điểm sau, ta có thể giảm bớt mức độ ảnh hưởng. Ý tưởng khắc phục như sau:
Để khắc phục nhược điểm thứ ba, ta sẽ tích hợp một bảng TLB (Translation Lookside Buffers) bên trong MMU. Bảng này là bộ nhớ SRAM hoặc tập các thanh ghi, được dùng để chứa một phần bảng Page Table.
<sup>Để khắc phục nhược điểm thứ tư, ta sẽ chỉ để một phần bảng Page Table trong</sup>
RAM, còn lại sẽ để trên ổ cứng.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><b>CHƯƠNG 6: BẢNG TRANSLATION LOOKASIDE BUFFER (TLB)6.1 Bảng TLB:</b>
Translation Lookaside Buffer (TLB) là một thành phần quan trọng trong hệ thống quản lý bộ nhớ ảo TLB hoạt động như một bộ nhớ cache cho Page Tables, giúp.
tăng tốc độ truy cập bộ nhớ vật lý.
Do chỉ có một số page của tiến trình thường xuyên được truy cập, nên chỉ có một số dịng của bảng Page Table thường được tham chiếu tới. Nếu những dòng này nằm sẵn trong bảng TLB, thì sẽ giảm được số lần phải tham chiếu tới bảng Page Table. Nếu bảng TLB càng lớn, thì tham chiếu tới Page Table càng ít, nhưng giá thành của MMU lại tăng lên.
Nếu thông tin của page cần truy cập đã có sẵn trong bảng TLB (TLB hit), thì địa chỉ
vật lý được tạo ra ngay lập tức mà không cần tham chiếu tới Page Table (hình 8). Hình 8. Dịch địa chỉ ảo sang địa chỉ vật lý trong trường hợp TLB hit
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Nếu thông tin của page cần truy cập chưa có trong bảng TLB (TLB miss), thì thơng tin của page đó sẽ được đưa từ Page Table vào bảng TLB. Sau đó, q trình dịch địa chỉ sẽ diễn ra (hình 9).
Hình 9. Dịch địa chỉ ảo sang địa chỉ vật lý trong trường hợp TLB miss
Trong trường hợp TLB miss, nếu page cần truy cập cũng chưa nằm trên RAM, thì khơng những phải đưa thơng tin của page đó vào TLB, ta cũng cần phải đưa cả page đó vào trong RAM (hình 10).
Hình 10. Dịch địa chỉ ảo sang địa chỉ vật lý trong trường hợp TLB miss và Page Fault
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><b>CHƯƠNG 7: CƠ CHẾ MULTI-LEVEL PAGE7.1 Sơ lược về cơ chế Multi-lever page:</b>
Cơ chế Multi-level page trong bộ nhớ ảo (virtual memory) được áp dụng để giảm thiểu lượng bộ nhớ của RAM dành cho các Page Table. Nguyên tắc của cơ chế này là chỉ đưa một phần bảng Page Table vào RAM, phần còn lại vẫn để trên ổ cứng.
<b>7.2 Cách hoạt động của cơ chế Multi-lever page:</b>
Cũng do chỉ có một số page thường xuyên được truy cập, nên chỉ có một phần của bảng Page Table thường được tham chiếu tới. Do đó, ta chỉ cần để một phần của bảng Page Table trong RAM, phần còn lại để trên ổ cứng, khi nào cần thì mới mang vào RAM. Giả sử, bảng Page Table của mỗi tiến trình có kích thước 4MB. Nếu bảng này cũng được chia thành các page, mỗi page có kích thước 4KB, thì một bảng Page Table sẽ gồm 1024 page. Ứng với mỗi bảng Page Table, hệ điều hành sẽ tạo ra một bảng PDT (Page Directory Table) để quản lý 1024 page của bảng Page Table. Mỗi dòng của bảng PDT được gọi là một Page Directory entry, sẽ chứa thông tin về một page của bảng Page Table, ví dụ: page đó của Page Table đang trên RAM hay trên ổ cứng, nếu trên RAM thì ở đâu, nếu trên ổ cứng thì ở đâu. Cơ chế này có tên là 2-level page.
Như vậy, ứng với mỗi tiến trình sẽ có một bảng PDT. Bảng PDT gồm 1024 dịng, mỗi dịng chứa thơng tin về 1 page của bảng Page Table. Mỗi page của bảng Page Table cũng gồm 1024 dịng, mỗi dịng chứa thơng tin mơ tả 1 page của tiến trình. Ta chỉ cần lưu bảng PDT và một vài page của Page Table trong RAM là được.
</div>