1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn môn học hệ điều hành nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hđh linux

37 3 0

Đ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

Thông tin cơ bản

Tiêu đề Nghiên Cứu Tìm Hiểu Về Quản Lý Bộ Nhớ Trong Trong HĐH Linux
Tác giả Trần Tuấn Anh, Trần Danh Khang, Phạm Thị Quyên, Đặng Thị Cẩm Tú, Nguyễn Thị Hoài Linh
Người hướng dẫn Nguyễn Tuấn Tú
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 37
Dung lượng 551,81 KB

Nội dung

Trong môi trường hệ thống này, việc quản lý bộ nhớ đóng một vaitrò cực kỳ quan trọng, ảnh hưởng trực tiếp đến hiệu suất và ổn định của hệ thống.Đề tài nghiên cứu này nhằm tập trung vào v

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN MÔN HỌC NGUYÊN L䤃Ā HỆ ĐIỀU HÀNH

Tên đề tài: Nghiên cứu tìm hiểu về quản lý Bộ nhớ trong trong HĐH Linux Nhóm thực hiện: Nhóm 4 – Lớp: 20231IT6067013

Giáo viên hướng dẫn: Nguyễn Tuấn Tú

Thành viên trong nhóm: 1 Trần Tuấn Anh - 2022600749

Trang 2

Mục lục

DANH MỤC HÌNH ẢNH 5

LỜI MỞ ĐẦU 6

CHƯƠNG 1: KHÁI NIỆM HỆ ĐIỀU HÀNH VÀ HỆ ĐIỀU HÀNH LINUX 7

1.1 Hệ điều hành là gì? 7

1.2 Giới thiệu hệ điều hành Linux 7

CHƯƠNG 2: BỘ NHỚ ẢO 8

2.1 Khái niệm bộ nhớ ảo 8

2.2 Mô hình bộ nhớ ảo 9

2.3 Khái niệm không gian hoán đổi và Tạo không gian hoán đổi 11

2.3.1 Khái niệm không gian hoán đổi 11

2.3.2 Tạo không gian hoán đổi 12

2.4 Sử dụng không gian hoán đổi 13

2.5 Định vị không gian hoán đổi 14

CHƯƠNG 3: CACHES 14

3.1 Linux Page Cache 15

3.2 Bu昀昀er Cache 16

3.3 Page Cache 16

3.4 Swap Cache 16

Trang 3

3.5 Hardware Cache 17

3.6 Swap Cache 17

CHƯƠNG 4: CƠ CHẾ PHÂN ĐOẠN, PHÂN TRANG 18

4.2 Cơ chế phân trang 19

4.2.1 Nhu cầu phân trang 19

4.2.2 Trang lưu trữ (Page Cache) 20

4.2.3 Bảng trang (Page table) 21

4.2.4 Định vị và giải phóng trang 22

4.2.4.1 Định vị trang 23

4.2.4.2 Giải phóng trang 24

CHƯƠNG 5: CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ 25

5.1 Bộ định vùng 25

5.2 Các vùng 25

5.3 Ánh xạ bộ nhớ 26

CHƯƠNG 6: CẤP PHÁT VÀ GIẢI PHÓNG VÙNG NHỚ 28

6.1 Khái niệm vùng nhớ 28

6.1.1 Một số khái niệm cơ bản về vùng nhớ 28

6.1.2 Các chế độ cấp phát vùng nhớ 28

6.2 Cấp phát vùng nhớ 29

6.2.1 Hàm cấp phát bộ nhớ 29

6.2.2 Thuật toán 33

6.3 Giải phóng vùng nhớ 33

6.4 Truy xuất con trỏ NULL 35

Trang 4

KẾT LUẬN 37

Danh Mục Hình Ảnh

HÌNH 2.1 : MÔ HÌNH TRỪU TƯỢNG CỦA SỰ ÁNH XẠ TỪ ĐỊA CHỈ ẢO

ĐẾN ĐỊA CHỈ VẬT LÝ

HÌNH 3.1 LINUX PAGE CACHE

HÌNH 4.1: KERNEL/USER LINEAR ADDRESSES

HÌNH 4.2 MỨC BẢNG TRANG

HÌNH 4.3 CẤU TRÚC DỮ LIỆU CỦA FREE_AREA

HÌNH 5.1 ARES OF VIRTUAL MEMORY

Trang 5

Lời mở đầu

Hệ điều hành Linux, với cơ sở mã nguồn mở và tính linh hoạt cao, đã trở

thành một trong những nền tảng quan trọng và phổ biến nhất trong thế giới công

nghệ hiện đại Trong môi trường hệ thống này, việc quản lý bộ nhớ đóng một vai

trò cực kỳ quan trọng, ảnh hưởng trực tiếp đến hiệu suất và ổn định của hệ thống

Đề tài nghiên cứu này nhằm tập trung vào việc hiểu và tối ưu hóa quản lý bộ nhớ

trong hệ điều hành Linux Trải qua nhiều phiên bản và sự phát triển liên tục, Linux

đã có những cải tiến vượt bậc trong cách tiếp cận và sử dụng bộ nhớ của máy tính

Bài báo cáo này sẽ đi sâu vào nghiên cứu cách mà Linux quản lý bộ nhớ, từ cách

thức hoạt động của kernel đến các cơ chế quản lý bộ nhớ ảo, cũng như quản lý bộ

nhớ vật lý và ảo hóa Đồng thời khám phá các công cụ và kỹ thuật tối ưu hóa bộ

nhớ trong Linux để cải thiện hiệu suất, tăng cường khả năng đáp ứng và tối ưu hóa

sử dụng tài nguyên

Nghiên cứu này cũng sẽ đưa ra các phân tích về ưu điểm, nhược điểm cũng như

các thách thức mà việc quản lý bộ nhớ trong Linux đối diện Cuối cùng, mục tiêu

của bài báo cáo là cung cấp cái nhìn sâu rộng hơn về cách Linux quản lý bộ nhớ, từ

đó tạo ra các phương pháp và giải pháp tối ưu hóa để nâng cao hiệu suất và đáng

tin cậy của hệ thống

Trong quá trình làm bài, nhóm tuy đã rất cố gắng nhưng chắc chắn không tránh

khỏi những thiếu sót, rất mong nhận được sự giúp đỡ của thầy để bài viết hoàn

thiện hơn

Trang 6

CHƯƠNG 1: KHÁI NIỆM HỆ ĐIỀU HÀNH VÀ HỆ ĐIỀU HÀNH LINUX

1.1 Hệ điều hành là gì?

Hệ điều hành là một bộ chương trình được cài đặt sẵn (dưới dạng các File trên

các vật mang tin: băng từ, đĩa từ) có chức năng: Nhìn nhận theo chức năng này, hệ

điều hành được quan niệm như là một hệ thống quản lý tài nguyên Thoả mãn ở

mức cao nhất yêu cầu đa dạng của người dùng

1.2 Giới thiệu hệ điều hành Linux

Linux là một hệ điều hành máy tính được phát triển từ năm 1991, dựa trên hệ

điều hành Unix và viết bằng ngôn ngữ C Đây là một hệ điều hành được phát hành

miễn phí và có nhiều ưu điểm vượt trội nên thường được sử dụng nhiều hơn

là Windows hay những hệ điều hành nào khác Là một hệ điều hành mã nguồn mở

Linux đã thực sự tạo ra một cuộc cách mạng trong lĩnh vực máy tính với bùng nổ

về số lượng người dùng cũng như sự đánh giá cao về trải nghiệm mà nó đem lại

Dưới đây là một số điểm chính về hệ điều hành Linux:

- Mã nguồn mở: Linux được phát triển theo mô hình mã nguồn mở, điều này

có nghĩa là mã nguồn của nó có sẵn và có thể được sửa đổi, phát triển, và

phân phối lại theo các điều khoản của Giấy phép Công cộng GNU (GNU

General Public License - GPL) Điều này tạo ra một cộng đồng rộng lớn của

các nhà phát triển trên toàn thế giới đóng góp vào việc phát triển và duy trì

hệ điều hành

- Nhân Linux (Linux Kernel): Nhân Linux là phần quan trọng nhất của hệ

điều hành, chịu trách nhiệm cho việc quản lý tài nguyên như bộ nhớ, CPU,

các thiết bị ngoại vi và giao tiếp giữa phần mềm và phần cứng

- Hệ thống tập tin: Linux sử dụng hệ thống tập tin ext4 phổ biến, nhưng cũng

hỗ trợ nhiều loại hệ thống tập tin khác nhau như btrfs, XFS, và nhiều loại

khác

- Giao diện người dùng: Linux có nhiều phiên bản giao diện người dùng,

trong đó có GNOME, KDE, Xfce, và LXQt Mỗi phiên bản có đặc điểm và

phong cách riêng, nhưng đều cung cấp môi trường desktop đầy đủ chức

năng và thân thiện với người dùng

Trang 7

- Distributions (Bản phân phối): Có nhiều bản phân phối Linux (distros) khác

nhau, mỗi bản phân phối thường có các đặc điểm, ưu điểm, và mục tiêu sử

dụng cụ thể Ví dụ như Ubuntu, Fedora, Debian, CentOS, và Arch Linux

- Quản lý gói và trình quản lý phần mềm: Hệ điều hành Linux thường sử

dụng các hệ thống quản lý gói như APT (Advanced Package Tool), YUM,

Pacman, để quản lý cài đặt và cập nhật phần mềm

- An ninh và ổn định: Linux nổi tiếng với độ ổn định và bảo mật cao Cộng

đồng mã nguồn mở tích cực theo dõi và vá lỗ hổng an ninh, điều này giúp

tăng cường sự tin tưởng của người dùng

Hệ điều hành Linux đã trở thành một lựa chọn phổ biến cho nhiều môi trường

sử dụng, từ máy tính cá nhân đến máy chủ và thiết bị nhúng, thể hiện tính linh hoạt

và khả năng tùy chỉnh của nó

CHƯƠNG 2: BỘ NHỚ ẢO

2.1 Khái niệm 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

Bộ nhớ ảo sử dụng cả phần cứng và phần mềm để cho phép máy tính bù đắp

sự thiếu hụt bộ nhớ vật lý, tạm thời chuyển dữ liệu từ bộ nhớ truy cập ngẫu nhiên

(RAM) sang ổ lưu trữ Ánh xạ các phần bộ nhớ thành các tệp đĩa cho phép máy

tính coi bộ nhớ phụ như thể nó là bộ nhớ chính

2.2 Mô hình bộ nhớ ảo

Mô hình địa chỉ ảo là một khái niệm quan trọng trong hệ điều hành và kiến

trúc máy tính Nó liên quan đến cách mà bộ xử lý và hệ điều hành quản lý và sử

dụng bộ nhớ Dưới đây là một giải thích cơ bản về mô hình địa chỉ ảo:

1 Địa chỉ Vật lý (Physical Address):

Trang 8

 Khái niệm: Là địa chỉ thực tế của ô nhớ trong bộ nhớ vật lý của hệ thống.

 Đặc điểm: Mỗi ô nhớ được xác định bằng một địa chỉ vật lý duy nhất,

thường là một con số thập lục phân

2 Địa chỉ Ảo (Virtual Address):

 Khái niệm: Được sử dụng trong quá trình thực hiện các thao tác trên bộ nhớ,

không nhất thiết phải trùng với địa chỉ vật lý

 Đặc điểm: Địa chỉ ảo được sử dụng bởi các tiến trình và chương trình khi

chúng thao tác với bộ nhớ

3 Đơn vị Quản lý Bộ nhớ (MMU - Memory Management Unit):

 Khái niệm: Phần của bộ xử lý hoặc hệ điều hành chịu trách nhiệm chuyển

đổi địa chỉ ảo sang địa chỉ vật lý và ngược lại

 Đặc điểm: MMU thực hiện vai trò quan trọng trong quản lý bộ nhớ và giúp

tạo ra không gian địa chỉ ảo

4 Bảng Trang (Page Table):

 Khái niệm: Cấu trúc dữ liệu để ánh xạ địa chỉ ảo sang địa chỉ vật lý thông

qua các trang nhỏ

 Đặc điểm: Bảng trang giúp hệ thống theo dõi quy hoạch và quản lý bộ nhớ

dựa trên các trang nhỏ này

5 Phân Trang (Paging):

 Khái niệm: Kỹ thuật quản lý bộ nhớ trong đó bộ nhớ và đĩa được chia thành

các trang nhỏ cố định

 Đặc điểm: Giúp tối ưu hóa việc sử dụng bộ nhớ và quản lý các trang một

cách linh hoạt

6 Chế độ Bảo vệ (Protection Mode):

 Khái niệm: Hỗ trợ quản lý quyền truy cập vào các phần khác nhau của bộ

nhớ

 Đặc điểm: Đảm bảo an toàn và bảo mật, vì nó ngăn chặn các tiến trình từ

việc ghi vào hoặc thực thi các phần nhất định của bộ nhớ

Trang 9

Để cho sự chuyển đổi dễ dàng hơn thì bộ nhớ ảo và bộ nhớ vật lý được chia

thành nhiều khúc có kích thước thích hợp gọi là trang Tất cả các trang này có cùng

kích thước để dễ quản lý Linux trên hệ thống Alpha AXP sử dụng trang 8Kbyte,

còn trên hệ thống Intel x86 là trang 4Kbyte Mỗi trang được cung cấp một số duy

nhất gọi là số khung trang ( PFN : Page Frame Number )

Hình 2.1 : Mô hình trừu tượng của sự ánh xạ từ địa chỉ ảo đến địa chỉ vật lý

Khi vi xử lý cần truy cập một địa chỉ ảo, nó sẽ truy cập bảng trang để tìm

PFN của trang đó Sau đó, nó sẽ sử dụng PFN này để truy cập trang bộ nhớ vật lý

tương ứng

Trong hệ thống bộ nhớ ảo, địa chỉ ảo được chia thành hai phần: phần offset

và phần PFN Phần offset xác định vị trí của dữ liệu hoặc mã trong một trang, còn

phần PFN xác định trang bộ nhớ vật lý mà dữ liệu hoặc mã đó nằm trên đó

Nếu kích thước trang là 4 Kbyte, thì bit 11:0 của địa chỉ ảo chứa phần offset,

còn bit 12 trở lên chứa phần PFN

Khi vi xử lý muốn truy cập một địa chỉ ảo, nó sẽ đọc hai phần này Sau đó,

vi xử lý sẽ sử dụng phần PFN để tìm trang bộ nhớ vật lý tương ứng Cuối cùng, vi

Trang 10

xử lý sẽ sử dụng phần offset để truy cập đến vị trí dữ liệu hoặc mã cần thiết trong

trang bộ nhớ vật lý đó

Quá trình chuyển từ địa chỉ ảo sang địa chỉ vật lý được dựa trên các bảng

phân trang Mỗi tiến trình có một bảng phân trang riêng Bảng phân trang chứa

thông tin về việc một trang ảo được ánh xạ đến trang vật lý nào

2.3 Khái niệm không gian hoán đổi và Tạo không gian hoán đổi

2.3.1 Khái niệm không gian hoán đổi

Linux phân chia bộ nhớ truy cập ngẫu nhiên (RAM) thành các ngăn nhớ gọi

là các trang Hoán đổi là quá trình ở đó một trang nhớ được sao chép tới không

gian được cấu hình trước trên ổ cứng (không gian hoán đổi) nhằm giải phóng trang

nhớ đó Kích thước được kết hợp từ bộ nhớ vật lý và không gian hoán đổi là tổng

dung lượng bộ nhớ ảo

Có 2 lý do quan trọng mà cần phải thực hiện việc hoán đổi Trước tiên khi hệ

thống yêu cầu bộ nhớ lớn hơn bộ nhớ vật lý hiện tại đang có thì nhân hệ thống sẽ

được chuyển sang các trang được sử dụng ít hơn và nhường bộ nhớ cho các ứng

dụng đang cần xử lý ngay Thứ hai, số lượng các trang quan trọng được sử dụng

bởi một ứng dụng trong suốt giai đoạn khởi động có thể chỉ được dùng để khởi tạo

rồi sau đó không dùng lại nữa Hệ thống có thể chuyển đổi giữa các trang này và

giải phóng bộ nhớ cho các ứng dụng khác hay thậm chí cho cả cache lưu trữ ổ

Tuy nhiên việc hoán đổi cũng không phải hoàn toàn tốt So với bộ nhớ, các ổ

chạy rất chậm Tốc độ bộ nhớ có thể được đo bằng nano giây (ns) trong khi tốc độ

ổ đo bằng mili giây (ms), do đó truy cập ổ chậm hơn hàng chục nghìn lần truy cập

vào bộ nhớ vật lý Càng thực hiện hoán đổi nhiều thì hệ thống sẽ càng chậm Đôi

khi hoán đổi quá mức hoặc nhiều lần liên tiếp sẽ xảy ra ở một trang được chuyển ra

rồi ngay lập tức lại được chuyển vào rồi lại chuyển ra rồi cứ thế tiếp tục Trong

mỗi trường hợp thì hệ thống sẽ tìm ra các vùng nhớ trống và cùng lúc đưa vào chạy

ứng dụng Trường hợp này chỉ cần thêm RAM

Linux có hai loại không gian hoán đổi: partition hoán đổi và tập tin hoán đổi

Partition hoán đổi là một phần độc lập của ổ cứng được sử dụng chỉ để hoán đổi;

không một tập tin nào khác được lưu trữ ở đây Tập tin hoán đổi là một tập tin đặc

Trang 11

biệt trong tập tin hệ thống có khả năng lưu trữ ở mọi nơi trong hệ thống và các tập

tin dữ liệu

2.3.2 Tạo không gian hoán đổi

Một file swap là một tệp thông thường không có đặc điểm đặc biệt đối với

kernel Mục đích duy nhất mà nó mang lại đối với kernel là không chứa bất kỳ

phần nào của nó là không có vùng trống Nó được chuẩn bị để sử dụng với hàm

mkswap() Phải được lưu trữ trên đĩa cục bộ và các bit liên quan đến vùng trống rất

quan trọng

File swap giữ không gian trên đĩa để kernel có thể nhanh chóng truy cập trang

mà không cần thực hiện tất cả các bước cần thiết để định vị sector đĩa cho một tệp

Việc có một vùng trống trong một tệp swap có nghĩa là không có sector đĩa được

định vị, do đó kernel không thể sử dụng tệp đó Để tạo một tệp swap mà không có

Ở đây, /extra-swap là tên của tệp swap và kích thước được chỉ định sau

count= Kích thước tốt nhất là bội số của 4 vì kernel ghi ra các trang nhớ, mỗi

trang có kích thước 4 Kbyte Nếu kích thước không phải là bội số của 4, cặp Kbyte

cuối có thể không được sử dụng

Một phân vùng swap cũng không có gì đặc biệt Bạn tạo nó giống như các

phân vùng khác, sự khác biệt duy nhất là nó được sử dụng như một phân vùng thô

và sẽ không chứa bất kỳ tệp hệ thống nào Phân vùng swap được đánh dấu là loại

82 (Linux swap), điều này giúp việc liệt kê phân vùng rõ ràng hơn mặc dù không

hoàn toàn cần thiết đối với kernel Sau khi bạn tạo một phân vùng swap hoặc một

tệp swap, bạn cần ghi một chữ ký lên đầu của nó Chữ ký này được sử dụng bởi

Trang 12

kernel và chứa một số thông tin quản lý Để thực hiện điều này, bạn có thể sử dụng

hàm mkswap() như sau:

$ mkswap /extra-swap 1024

Setting up swapspace, size = 1044480

bytes

$

Chú ý rằng không gian hoán đổi vẫn chưa được sử dụng, tồn tại nhưng kernel

không sử dụng nó để cung cấp bộ nhớ ảo Cẩn thận khi sử dụng mkswap(), vì nó

không kiểm tra xem tệp hoặc phân vùng đã được sử dụng hay chưa Cách tốt nhất

là chỉ sử dụng hàm này khi cài đặt hệ thống của bạn

Trình quản lý bộ nhớ trong Linux giới hạn kích thước của mỗi không gian

hoán đổi là 127MB, nhưng bạn có thể sử dụng đến 8 không gian hoán đổi, tổng

cộng lên đến 1GB Tuy nhiên, giới hạn này có thể thay đổi tùy thuộc vào cấu trúc

của phiên bản kernel Ví dụ, đối với bộ xử lý i386, giới hạn này là 2GB

2.4 Sử dụng không gian hoán đổi

Để sử dụng không gian hoán đổi, bạn cần khởi động nó bằng lệnh swapon

Lệnh này báo cho kernel rằng không gian hoán đổi có thể được sử dụng Đường

dẫn đến không gian hoán đổi được cấp như là đối số Ví dụ, để bắt đầu hoán đổi

trên một file swap tạm thời, bạn có thể sử dụng đoạn lệnh sau:

$ swapon /extra-swap

$

Không gian hoán đổi cũng có thể được sử dụng tự động bằng cách liệt kê nó

trong file /etc/fstab Ví dụ, để sử dụng một phân vùng swap và một file swap tạm

thời, bạn có thể thêm các dòng sau vào file /etc/fstab:

/dev/hda8 none swap sw 0 0

/swapfile none swap sw 0 0

Trang 13

2.5 Định vị không gian hoán đổi

Cách xác định kích thước không gian hoán đổi

Thông thường, người ta khuyên rằng bạn nên định vị không gian hoán đổi gấp

đôi bộ nhớ vật lý Tuy nhiên, đây không phải là một quy tắc chung đúng cho tất cả

các trường hợp Cách xác định kích thước không gian hoán đổi chính xác hơn là

như sau:

1 Dự đoán tổng bộ nhớ cần thiết Đây là số lượng bộ nhớ lớn nhất mà bạn cần

tại một thời điểm nào đó, là tổng bộ nhớ cần thiết cho tất cả các chương trình

mà bạn muốn chạy cùng một lúc

2 Cộng thêm một ít vào dự đoán ở bước 1 Dự đoán về kích thước các chương

trình có thể sai do bạn quên một số chương trình mà bạn muốn chạy, và để

chắc chắn bạn nên chuẩn bị một không gian phụ để dùng khi cần

3 Dựa trên những tính toán trên, bạn biết sẽ cần tổng cộng bao nhiêu bộ

nhớ Vì vậy, để định vị không gian hoán đổi, bạn chỉ cần lấy tổng bộ nhớ sẽ

dùng trừ cho bộ nhớ vật lý

4 Nếu không gian hoán đổi mà bạn đã tính lớn hơn hai lần bộ nhớ vật lý thì

bạn nên mua thêm RAM Nếu không, hiệu năng của máy sẽ thấp

CHƯƠNG 3: CACHES

Việc chúng ta triển khai hệ thống sử dụng những mô hình lý thuyết như trên,

mặc dù có thể hoạt động, nhưng nhìn chung là không thực sự hiệu quả Hệ quả là

người người thiết kế hệ điều hành và bộ xử lý sẽ gặp khó khăn khi muốn nâng cao

hiệu quả của hệ thống Một cách tiếp cận khác đó chính là duy trì bộ nhớ caches

đối với những thông tin và dữ liệu hữu ích, điều này làm cho việc vận hành hệ

thống nhanh hơn Sau đây là những bộ nhớ cache có trong hệ điều hành Linux

3.1 Linux Page Cache

Trang 14

Hình 3.1 Linux Page Cache

Mỗi tệp trong Linux được xác định bởi cấu trúc dữ liệu inode VFS và mỗi

inode VFS là duy nhất và mô tả đầy đủ một và chỉ một tệp Chỉ mục trong bảng

trang được lấy từ inode VFS của tệp và phần bù vào tệp

Bất cứ khi nào một trang được đọc từ tệp ánh xạ bộ nhớ, chẳng hạn như khi

nó cần được đưa trở lại bộ nhớ trong quá trình phân trang theo yêu cầu, trang sẽ

được đọc qua bộ đệm ẩn của trang Nếu trang có trong bộ đệm, một con trỏ đến

cấu trúc dữ liệu mem_map_t đại diện cho nó sẽ được trả về mã xử lý lỗi trang Nếu

không, trang phải được đưa vào bộ nhớ từ hệ thống tệp chứa hình ảnh Linux phân

bổ một trang vật lý và đọc trang đó từ tệp trên đĩa

Nếu có thể, Linux sẽ bắt đầu đọc trang tiếp theo trong tệp Trang này được

đọc trước có nghĩa là nếu tiến trình đang truy cập các trang trong tệp theo thứ tự,

thì trang tiếp theo sẽ được chờ đợi trong bộ nhớ cho tiến trình

Theo thời gian, bộ nhớ cache của trang phát triển khi hình ảnh được đọc và

thực thi Các trang sẽ bị xóa khỏi bộ nhớ cache vì chúng không còn cần thiết,

chẳng hạn như một hình ảnh không còn được sử dụng bởi bất kỳ quá trình nào Vì

Linux sử dụng bộ nhớ, nó có thể bắt đầu chạy chậm trên các trang vật lý Trong

trường hợp này, Linux sẽ giảm kích thước của bộ đệm trang

Trang 15

3.2 Buffer Cache

Bộ nhớ buffer cache chứa những dữ liệu buffer được sử dụng bởi những

block device driver

Những dữ liệu buffer này có kích thước cố định (ví dụ là 512 bytes) và chứa

những khối thông tin hoặc được đọc từ một block device, hoặc là được ghi vào đó

Một block device chỉ có thể được truy cập bằng việc đọc hoặc việc ghi một khối dữ

liệu có kích thước cố định Tất cả những đĩa cứng là block device

Bộ nhớ buffer cache được đánh số thứ tự thông qua định danh của thiết bị và

số hiệu của desired block, điều này giúp cho việc tìm một block dữ liệu nhanh hơn

Những block device chỉ có thể được truy cập thông qua bộ nhớ buffer cache Nếu

dữ liệu được tìm thấy ở bộ nhớ buffer cache thì chúng ta không cần phải đọc từ

block device vật lý (ví dụ như đĩa cứng) nữa, điều này giúp việc tìm kiếm và đọc

dữ liệu nhanh hơn rất nhiều

3.3 Page Cache

Bộ nhớ page cache được dùng để tăng tốc độ truy nhập ảnh và dữ liệu trên

đĩa

Bộ nhớ page cache được dùng để lưu trữ thông tin logic của một file thuộc 1

trang tại một thời điểm, được truy nhập thông qua file Khi trang được đọc từ đĩa

vào bộ nhớ, trang sẽ được lưu trữ ở bộ nhớ page cache

3.4 Swap Cache

Bộ nhớ swap cache được dùng để chứa những trang bị thay đổi (cách gọi

khác là trang bẩn)

Miễn là những trang không bị thay đổi sau khi được ghi vào swap file, thì

lần tiếp theo, những file này sẽ được đưa ra khỏi swap file Thay vào đó thì các

trang sẽ bị loại bỏ một cách dễ dàng Trong một hệ thống swap mạnh thì cách tiến

hành như trên sẽ giúp loại bỏ những hoạt động không cần thiết và tốn kém trên đĩa

3.5 Hardware Cache

Một bộ nhớ hardware cache được triển khai phổ biến là nằm ở trong bộ xử

lý, 1 cache của Page Table Entries Trong trường hợp này, bộ xử lý không luôn

luôn đọc trực tiếp từ bảng trang, mà thay vào đó là đọc từ caches translations của

Trang 16

trang khi bộ xử lý cần Những caches translation của những trang như thế được gọi

là Translation Look-aside Buffers, chúng chứa bản sao lưu trữ của những Page

Table Entries từ một hoặc nhiều bộ xử lý trong hệ thống

Khi có một tham chiếu đến địa chỉ ảo được tạo, bộ xử lý sẽ cố gắng tìm một

sự tương ứng ở trong TLB Nếu bộ xử lý tìm thấy, nó có thể trực tiếp chuyển địa

chỉ aỏ thành địa chỉ vật lý Nếu bộ xử lý không thể tìm thấy sự tương ứng ở trong

TLB, bộ xử lý sẽ yêu cầu hệ điều hành giúp đỡ Hệ điều hành sẽ tạo ra một TLB

mới cho địa chỉ ánh xạ

Hạn chế của việc sử dụng bộ nhớ cache là khi Linux muốn tiết kiệm công

sức, nó phải sử dụng nhiều thời gian và không gian để duy trì những bộ nhớ cache

này, và khi bộ nhớ cache bị hỏng, hệ thống sẽ sập theo

3.6 Swap Cache

Khi hoán đổi các trang vào tệp swap file, Linux tránh ghi các trang nếu

không cần thiết Đôi khi một trang nằm trong cả tệp swap file lẫn trong bộ nhớ vật

lý Điều này xảy ra khi một trang đã được hoán đổi khỏi bộ nhớ sau đó được đưa

trở lại bộ nhớ khi nó được truy cập lại bởi một tiến trình Miễn là trang trong bộ

nhớ không được chỉnh sửa, bản sao trong tệp swap file vẫn valid

Linux sử dụng bộ nhớ swap cache để theo dõi các trang này Bộ nhớ swap

cache chứa danh sách các entry của bảng quản phân trang, mỗi entry chứa thông

tin về mỗi trang vật lý trong hệ thống Entry của bảng quản phân trang cho một

trang đã được hoán đổi sẽ mô tả tệp swap file đang giữ trang đó cùng với vị trí của

nó trong tệp swap file Nếu entry của bộ nhớ swap cache khác 0, nó thể hiện rằng

một trang đang được giữ trong tệp swap file chưa được sửa đổi Nếu trang được

sửa đổi, entry của nó sẽ bị xóa bộ nhớ swap cache

Khi Linux cần hoán đổi một trang vật lý sang tệp swap file, nó sẽ tham khảo

bộ nhớ swap cache và nếu có entry là valid cho trang này, nó không cần ghi trang

ra tệp swap file Điều này là do trang trong bộ nhớ chưa được sửa đổi kể từ lần đọc

cuối cùng từ tệp swap file

Trang 17

Các entry trong bộ nhớ swap cache là các entry của bảng quản phân trang cho

các trang được hoán đổi Chúng được đánh dấu là invalid và chứa thông tin cho

phép Linux tìm đúng tệp swap file và đúng trang trong tệp swap file đó

CHƯƠNG 4: CƠ CHẾ PHÂN ĐOẠN, PHÂN TRANG

4.1 Cơ chế phân đoạn

Linux sử dụng cơ chế phân đoạn để phân tách các vùng nhớ đã cấp phát cho

hạt nhân và các tiến trình Hai phân đoạn liên quan đến 3GB đầu tiên (từ 0 đến

0xBFFF FFFF) của không gian địa chỉ tiến trình và các nội dung của chúng có thể

được đọc và chỉnh sửa trong chế độ người dùng và trong chế độ Kernel Hai phân

đoạn liên quan đến GB thứ 4 (từ 0xC000 0000 đến 0xFFFF FFFF) của không gian

địa chỉ tiến trình và các nội dung của nó có thể được đọc và chỉnh sửa duy nhất

trong chế độ Kernel Theo cách này, dữ liệu và mã Kernel được bảo vệ khỏi sự

truy cập không hợp lý của các tiến trình chế độ người dùng

Hình 4.1: Kernel/User Linear addresses

Trang 18

Trong Linux, việc sử dụng segment (đoạn) được thực hiện một cách hạn chế.

Linux ưu tiên sử dụng phân trang (paging) hơn là đoạn trong quản lý bộ nhớ vì một

số lý do sau đây:

1 Quản lý bộ nhớ đơn giản hơn: Phân trang giúp quản lý bộ nhớ dễ dàng

hơn bằng cách chia thành các trang nhỏ và quản lý chúng một cách riêng biệt

Ngược lại, việc sử dụng segment yêu cầu quản lý các đoạn lớn hơn, làm tăng độ

phức tạp của việc quản lý bộ nhớ

2 Khả năng di động trên nhiều kiến trúc: Sử dụng phân trang cho phép

Linux dễ dàng di chuyển và chạy trên nhiều kiến trúc khác nhau, bao gồm các kiến

trúc như RISC (Reduced Instruction Set Computer) Trong khi đó, việc sử dụng

segment có thể gây khó khăn trong việc di chuyển và tương thích trên các kiến trúc

khác nhau

Đáng chú ý, trong phiên bản Linux 2.6, segment chỉ được sử dụng khi cần

thiết Điều này cho thấy Linux đánh giá cao sự linh hoạt và hiệu quả của phân

trang trong quản lý bộ nhớ, và chỉ sử dụng segment khi có yêu cầu cụ thể hoặc tình

huống đặc biệt mà phân trang không thể đáp ứng

4.2 Cơ chế phân trang

4.2.1 Nhu cầu phân trang

Vì lượng bộ nhớ vật lý thường hạn chế so với bộ nhớ ảo, hệ điều hành cần

tập trung vào việc tận dụng bộ nhớ vật lý một cách hiệu quả và giảm lãng phí tài

nguyên Một trong những phương pháp quản lý bộ nhớ ảo có thực hiện được điều

này là cơ chế phân trang Cơ chế phân trang giúp tận dụng bộ nhớ vật lý một cách

hiệu quả bằng cách chỉ nạp vào bộ nhớ những trang ảo cần thiết Điều này giúp tiết

kiệt bộ nhớ vật lý và cho phép chạy cùng lúc nhiều chương trình lớn hơn mà không

gây lỗi “thiếu bộ nhớ” (out of memory) Hơn nữa, cơ chế phân trang cũng cho

phép chia sẽ trang giữa các tiến trình, giảm sự lặp lại dữ liệu và tang tốc độ thực thi

chương trình

4.2.2 Trang lưu trữ (Page Cache)

Page cache được sử dụng để lưu trữ các trang dữ liệu từ các tập tin trên hệ

thống tập tin của Linux Khi một tập tin được đọc từ đĩa hoặc ghi vào đĩa, các trang

Ngày đăng: 25/03/2024, 17:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN