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 toàn bộ chương
Trang 1ĐẠI HỌC DUY TÂN TRƯỜNG KHOA HỌC MÁY TÍNH
KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THÔNG
🙦🕮 🙤
ĐỒ ÁN NHÓM MÔN HỌC: NỀN TẢNG HỆ THỐNG MÁY TÍNH
Tên đề tài:
TÌM HIỂU VỀ BỘ NHỚ ẢO (VIRTUAL MEMORY)
GVHD : HOÀNG ĐẠI LONG
: NGUYỄN KIM TUẤN LỚP : CR250 AK
NHÓM : 15
Thành viên 1 : NGUYỄN THÀNH TRUNG - 3427
Thành viên 2 : NGUYỄN ĐÌNH TUẤN - 8270
Đà Nẵng,10/2023
Trang 2MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài: 1
2 Mục tiêu của đề tài: 1
CHƯƠNG 1 : VÌ SAO CƠ CHẾ VIRTUAL MEMORY RA ĐỜI? 2
1.1 Tổng quan về bộ nhớ ảo : 2
1.2 Cách mà bộ nhớ ảo ra đời : 2
CHƯƠNG 2: MỤC TIÊU CỦA VIRTUAL MEMMORY LÀ GÌ? 6
2.1 Mục tiêu chính: 6
CHƯƠNG 3: VIRTUAL MEMORY ĐƯỢC TRIỂN KHAI NHƯ THẾ NÀO? 7
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
CHƯƠNG 4: VIRTUAL MEMORY QUẢN LÝ BỘ NHỚ NHƯ THẾ NÀO? 9
4.1 Cách quản lý bộ nhớ của virtual memory: 9
CHƯƠNG 5 : VIRTUAL MEMORY CÓ NHỮNG ƯU NHƯỢC ĐIỂM GÌ? 11
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
CHƯƠNG 6: BẢNG TRANSLATION LOOKASIDE BUFFER (TLB) 13
6.1 Bảng TLB: 13
CHƯƠNG 7: CƠ CHẾ MULTI-LEVEL PAGE 15
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
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 17
TÀI LIỆU THAM KHẢO 19
Trang 3lý 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).
2 Mục tiêu của đề tài:
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:
Vì sao cơ chế virtual memory ra đời?
Mục tiêu hướng tới của cơ chế virtual memory là gì?
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ì?
Trang 4CHƯƠNG 1 : VÌ SAO CƠ CHẾ VIRTUAL MEMORY RA ĐỜI? 1.1 Tổng quan về bộ nhớ ảo :
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 RAMhoặ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
Hình 1
Trang 5Ví 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 (Executableand 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ấyrằ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ỗibyte đượ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:
Trang 6 Section .text: chứa các lệnh của chương trình.
Section .rodata: chứa các biến chỉ đọc (ví dụ được khai báo với từ khóaconst)
Section .data: chứa các biến toàn cục và biến tĩnh đã được khởi tạo
Section .bss: chứa các biến toàn cục và biến tĩnh chưa được khởi tạo
Trang 7Sau 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ùngnhớ đó, tạo thành một tiến trình Ngoài ra, hệ điều hành còn thiết lập thêm vùng stacksegment (để 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 processimage (hình 3) Từng byte trong process image cũng được đánh địa chỉ Tập hợp các địachỉ 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 toàn bộ chương trình vào một vùng nhớ liêntụ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 toàn bộ chương trình vào Điều nàygiú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
Trang 8uCLinux là một ví dụ điển hình cho nguyên 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ụ ítthay đổi trong lúc chạy Mặt khác, ta không cần phải đưa toàn bộ chương trình vào RAM
Lý do là vì:
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ã
(đ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ấutrú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àoRAM
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 doCPU 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 đồngthờ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ườngxuyên thay đổi, cơ chế virtual memory sẽ được áp dụng để quản lý bộ nhớ nhằm khắcphụ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ớ
CHƯƠNG 2: MỤC TIÊU CỦA VIRTUAL MEMMORY LÀ GÌ? 2.1 Mục tiêu chính:
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 toà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áchoặ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áchhiệ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ìnhnằ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
Trang 9lớ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ònnhanh 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 toán và lấy bộ nhớ tạm của ứngdụ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ớ
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:
Về mặt phần cứng, khối MMU ( emory anagement nit) được thêm vào hệM M U
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)
Trang 10Hình 4 Triển khai cơ chế virtual memory trên phần cứng
3.2 Cơ chế triển khai của Virtual memory trên phần mềm:
Về mặt phần mềm, hệ điều hành sẽ:
chia RAM thành nhiều mảnh nhỏ, mỗi mảnh gọi là một frame Các frame có kíchthướ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ềuhành tạo ra bảng MMT ( emory ap able) để quản lý tất cả các frame trên RAM.M M T
Bảng MMT được lưu trên RAM
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ếntrì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íchthướ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ácbảng Page Table cũng được lưu trên RAM
Trang 11cậ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ềuhà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
Trang 12CHƯƠ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:
Khi khởi tạo tiến trình, hệ điều hành sẽ:
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 đó
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ảngPage Table của tiến trình đó vào thanh ghi Page Table pointer của MMU Sau đó, CPUbắ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/page4KB
Trang 13Khi 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ớiMMU Từ địa chỉ ảo, MMU xác định được lệnh đó thuộc page nào Sau đó, MMU trabảng Page Table để xem page đó nằm trong RAM chưa.
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)
Nếu page đó đang nằm trên ổ cứng, thì MMU sẽ gửi một Interrupt tới CPU CPUthực hiện đoạn mã Page Fault handler để xử lý Interrupt Công việc chính của handlernà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ườngcho 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 trongRAM
Trang 14CHƯƠNG 5 : VIRTUAL MEMORY CÓ NHỮNG ƯU NHƯỢC ĐIỂM GÌ? 5.1 Ưu điểm của virtuall memory:
Ư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ềuhà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ìnhthườ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
Vì tiến trình không cần nằm liên tục trên RAM, nên
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ụngRAM
5.2 Nhược điểm của virtuall memory:
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ệutrê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ậplệ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ước4KB, thì tổng kích thước các bảng Page Table là 200MB, chiếm 20% RAM Điều nàyphần nào làm mất đi tính hiệu quả sử dụng bộ nhớ của cơ chế virtual memory
Trang 155.3 Cách khắc phục các nhược điểm:
Do đặc tính hoạt động của virtual memory, nên ta không thể khắc phục được hainhượ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ácthanh ghi, được dùng để chứa một phần bảng Page Table
Để khắc phục nhược điểm thứ tư, ta sẽ chỉ để một phần bảng Page Table trong
RAM, còn lại sẽ để trên ổ cứng
Trang 16CHƯƠNG 6: BẢNG TRANSLATION LOOKASIDE BUFFER (TLB) 6.1 Bảng TLB:
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ẵntrong 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ảngTLB 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ănglê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
Trang 17Nếu thông tin của page cần truy cập chưa có trong bảng TLB (TLB miss), thì thôngtin của page đó sẽ được đưa từ Page Table vào bảng TLB Sau đó, quá 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à PageFault
Trang 18CHƯƠNG 7: CƠ CHẾ MULTI-LEVEL PAGE
7.1 Sơ lược về cơ chế Multi-lever page:
Cơ chế Multi-level page trong bộ nhớ ảo (virtual memory) được áp dụng để giảmthiể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
7.2 Cách hoạt động của cơ chế Multi-lever page:
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ủabảng Page Table thường được tham chiếu tới Do đó, ta chỉ cần để một phần của bảngPage 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ảngPDT được gọi là một Page Directory entry, sẽ chứa thông tin về một page của bảng PageTable, 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 Tablecũ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ưubảng PDT và một vài page của Page Table trong RAM là được