đồ án nhóm nền tảng hệ thống máy tính đề tài tìm hiểu về bộ nhớ ảo virtual memory

23 0 0
Tài liệu đã được kiểm tra trùng lặp
đồ án nhóm nền tảng hệ thống máy tính đề tài tìm hiểu về bộ nhớ ảo virtual memory

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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ÂNTRƯỜ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ẤNLỚP: CR250 AK

NHÓM: 15

Thành viên 1: NGUYỄN THÀNH TRUNG - 3427Thành viên 2: NGUYỄN ĐÌNH TUẤN - 8270

Đà Nẵng,10/2023

Trang 2

MỤ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 3

MỞ ĐẦU

1 Lý do chọn đề tài:

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ộ nhớ ảo (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).

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 4

CHƯƠ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 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.

1.2 Cách mà bộ nhớ ảo ra đời :

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

Trang 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:

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óa const).

 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 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 Ngoà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 toà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 toà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.

Trang 8

uCLinux 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ụ ít thay đổ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ấ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ớ.

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á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

Trang 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 toá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ớ.

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ệMMU

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 10

Hì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í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.MMT

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ế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.

Trang 11

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

Trang 12

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:

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ả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

Trang 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.

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 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

Trang 14

CHƯƠ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ề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.

 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ụng RAM.

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ệ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.

Trang 15

5.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 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.

Để 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 16

CHƯƠ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ẵ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

Trang 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 đó, 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à Page Fault

Trang 18

CHƯƠNG 7: CƠ CHẾ MULTI-LEVEL PAGE7.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ả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.

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ủ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.

Ngày đăng: 25/04/2024, 16:18

Tài liệu cùng người dùng

Tài liệu liên quan