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

đồ án nhóm nền tảng hệ thống máy tính đề tài quản lý bộ nhớ trong hệ điều hành linux

28 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Quản Lý Bộ Nhớ Trong Hệ Điều Hành Linux
Tác giả Đặng Hữu Quang Huy, Nguyễn Sỹ Khải, Nguyễn Minh Tiến Phong, Lưu Gia Nhất
Người hướng dẫn Th.S Nguyễn Kim Tuấn
Trường học Đại Học Duy Tân
Chuyên ngành Nền Tảng Hệ Thống Máy Tính
Thể loại Đồ Án Nhóm
Năm xuất bản 2023
Thành phố Đà Nẵng
Định dạng
Số trang 28
Dung lượng 2,86 MB

Nội dung

Học viên sẽ hiểu cách kernel của Linux quản lý bộ nhớ, cách các tiến trình được cấp phát bộ nhớ, và cách thực hiện giải phóng bộ nhớ khi cần thiết để tối ưu hiệu suất hệ thốngĐề tài này

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC DUY TÂN 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ÀI: QUẢN LÝ BỘ NHỚ TRONG HỆ ĐIỀU HÀNH LINUX

GVHD:+Th.S NGUYỄN KIM TUẤN,NGUYỄN NHẬT HOÀNG LỚP: + CR 250 Y SVTH: +ĐẶNG HỮU QUANG HUY - 2636

+NGUYỄN SỶ KHẢI - 3831

+NGUYỄN MINH TIỀN PHONG - 3914 +LƯU GIA NHẤT - 2196

Đà Nẵng, Ngày 11, tháng 11 năm 2023

Trang 2

MỤC LỤC

A.LỜI MỞ ĐẦU 3

B.NỘI DUNG 4

CHƯƠNG 1.GIỚI THIỆU CHUNG VỀ LINUX VÀ QUẢN LÝ BỘ NHỚ TRONG LINUX 4

1.1.Hệ điều hành Linux 4

1.2.Quản lý bộ nhớ trong Linux 4

CHƯƠNG 2.TỔNG QUAN VỀ QUẢN LÝ BỘ NHỚ TRONG LINUX 7

2.1.Các thành phần chính và chức năng của hệ thống quản lý bộ nhớ: 7

2.2.Chiến lược quản lý bộ nhớ trong Linux 8

CHƯƠNG 3 CƠ CHẾ PHÂN ĐOẠN, PHÂN TRANG 10

3.1.Sự phân đoạn 10

3.2.Sự phân trang 10

CHƯƠNG 4.QUẢN LÍ BỘ NHỚ ẢO VÀ THỜI GIAN HOÁN ĐỔI 17

4.1 Khái niệm bộ nhớ ảo, không gian hoán đổi 17

4.2.Mô hình bộ nhớ ảo trong Linux 17

4.3.Chiến lược demand paging và cách xử lý lỗi trang 20

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

5.1.Quản lý bộ nhớ vật lý 23

5.2.Ánh xạ bộ nhớ (mm3 - Memory Mapping) 24

C.KẾT LUẬN 26

D.TÀI LIỆU THAM KHẢO 27

E.PHÂN CÔNG VÀ ĐÁNH GIÁ 28

Trang 3

A.LỜI MỞ ĐẦU

Trong thời đại ngày nay, hệ điều hành Linux đã trở thành một phần không thểthiếu của hệ thống máy tính, từ máy tính cá nhân đến các máy chủ doanh nghiệpquy mô lớn Một trong những yếu tố quan trọng quyết định sự ổn định và hiệusuất của hệ điều hành là cách nó quản lý bộ nhớ

Bộ nhớ, hay RAM (Random Access Memory), đóng vai trò quan trọng trong việclưu trữ và xử lý dữ liệu ngắn hạn của hệ thống Quản lý hiệu quả bộ nhớ khôngchỉ ảnh hưởng đến tốc độ thực hiện các nhiệm vụ mà còn đối ảnh lớn đến sự ổnđịnh và độ tin cậy của hệ thống Trong nền công nghiệp công nghệ thông tinngày nay, khi ứng dụng ngày càng phức tạp và yêu cầu nguồn tài nguyên cao,việc nghiên cứu và tối ưu hóa quản lý bộ nhớ trở thành một thách thức quantrọng

Bài học về quản lý bộ nhớ trong hệ điều hành Linux tập trung vào cách hệ thốngquản lý và sử dụng bộ nhớ Nó bao gồm các khái niệm như bộ nhớ vật lý và ảo,quản lý trang, swapping, và cách các tiến trình tương tác với bộ nhớ Học viên sẽhiểu cách kernel của Linux quản lý bộ nhớ, cách các tiến trình được cấp phát bộnhớ, và cách thực hiện giải phóng bộ nhớ khi cần thiết để tối ưu hiệu suất hệthống

Đề tài này tập trung vào việc khảo sát và phân tích cách mà hệ điều hành Linuxquản lý bộ nhớ, với mục tiêu là hiểu rõ cơ chế hoạt động, các thuật toán quản lý

bộ nhớ, và cách chúng ảnh hưởng đến hiệu suất hệ thống Qua đó, chúng tôi hyvọng rằng đề tài sẽ đóng góp kiến thức hữu ích cho cộng đồng người sử dụngLinux, những người quan tâm đến tối ưu hóa hiệu suất hệ thống và tăng cường ổnđịnh trong môi trường sử dụng thực tế

Trang 4

Là hệ điều hành mã nguồn mở, linh hoạt, ổn định, sử dụng kernel Linux Được

sử dụng trên nhiều thiết bị, từ máy tính cá nhân đến máy chủ và nhúng Các bảnphân phối như Ubuntu, Fedora phổ biến, hỗ trợ đồ họa và dòng lệnh Linuxthường được chọn cho máy chủ web, nhúng và phát triển phần mềm mã nguồnmở

1.2.Quản lý bộ nhớ trong Linux.

1.2.1.Tổng quan về bộ nhớ

Trong hệ thống máy tính, bộ nhớ là một tài nguyên khan hiếm Cho dù có baonhiêu bộ nhớ đi chăng nữa thì vẫn không đáp ứng đủ nhu cầu của người sử dụng.Các máy tính cá nhân hiện nay đã trang bị ít nhất 128Mb bộ nhớ Các máy chủserver có thể lên đến hàng gigabyte bộ nhớ Thế nhưng nhu cầu bộ nhớ vẫnkhông được thỏa mãn

Linux có cách tiếp cận và quản lý bộ nhớ rất rõ ràng Các ứng dụng trên Linuxkhông bao giờ được phép truy cập trực tiếp vào địa chỉ vật lý của bộ nhớ Linuxcung cấp cho các chương trình chạy dưới HĐH - còn gọi là tiến trình - một môhình đánh địa chỉ phăng không phân đoạn segment:offset như DOS Mỗi tiếntrình chỉ thấy được một vùng không gian địa chỉ của riêng nó Hầu như tất cả các

Trang 5

phiên bản của UNIX đều cung cấp cách bảo vệ bộ nhớ theo cơ chế bảo đảmkhông có tiến trình nào có thể ghi đè lên vùng nhớ của tiến trình khác đang hoạtđộng hoặc vùng nhớ của hệ thống Nói chung, bộ nhớ mà hệ thống cấp phát chomột tiến trình không thể nào đọc hoặc ghi bởi một tiên trình khác.

Trong hầu hết các hệ thống Linux và UNIX, con trỏ được sử dụng là một sốnguyên 32 bit trỏ đến một ô nhớ cụ thể Với 32 bit, hệ thống có thể đánh địa chỉlên đến 4 GB bộ nhớ Mô hình bộ nhớ phẳng này dễ truy xuất và xử lý hơn bộnhớ phân đoạn segment:offset Ngoài ra, một vài hệ thống còn sử dụng mô hìnhđịa chỉ 64 bit, như vậy không gian địa chỉ có thể mở rộng ra đến terabyte

Để tăng dung lượng bộ nhớ sẵn có, Linux còn cài đặt chương trình phân trang đĩatức là một lượng không gian hoán đổi nào đó có thể phân bố trên đĩa Khi hệthống yêu cầu nhiều bộ nhớ vật lý, nó sẽ đưa các trang không hoạt động ra đĩa,nhờ vậy bạn có thể chạy những ứng dụng lớn hơn và cùng lúc hỗ trợ nhiều người

sử dụng Tuy vậy, việc hoán đổi không thay được RAM vật lý, nó chậm hơn vìcần nhiều thời gian để truy cập đĩa Kernel cũng cài đặt khối bộ nhớ hợp nhất chocác chương trình người sử dụng và bộ đệm đĩa tạm thời (disk cache) Theo cáchnày, tất cả bộ nhớ trống dành để nhớ tạm và bộ nhớ đệm (cache) sẽ giảm xuốngkhi bộ xử lý chạy những chương trình lớn

1.2.2.Tầm quan trọng của quản lý bộ nhớ.

Quản lý bộ nhớ trong Linux đóng vai trò quan trọng với nhiều khía cạnh của hệthống Điều này không chỉ liên quan đến hiệu suất và tối ưu hóa sử dụng tàinguyên, mà còn đảm bảo tính ổn định và an toàn Ngăn chặn tràn bộ nhớ, tối ưuhóa bộ nhớ ảo, quản lý tiến trình, giảm fragmentation - tất cả đóng góp vào việcduy trì một hệ thống Linux linh hoạt, hiệu quả và bảo mật Điều này trở nên ngàycàng quan trọng trong bối cảnh môi trường máy chủ và thiết bị ngày càng phứctạp và đa dạng

*Fragmentation (tách thành phân) trong ngữ cảnh của bộ nhớ đề cập đến hiện tượng mà không gian bộ nhớ không liên tục và được chia thành các phần nhỏ, không nối tiếp.

a)Hiệu Suất Hệ Thống:

Trang 6

Quản lý bộ nhớ giúp tối ưu hóa hiệu suất hệ thống bằng cách cung cấp cơ chếhiệu quả để cấp phát và giải phóng bộ nhớ Điều này đảm bảo rằng tài nguyên bộnhớ được sử dụng một cách hiệu quả và không gây chậm trễ không cần thiết.b)An Toàn và Ổn Định:

Quản lý bộ nhớ đóng vai trò quan trọng trong việc bảo vệ hệ thống khỏi các vấn

đề liên quan đến bộ nhớ như tràn bộ nhớ (buffer overflow) Bằng cách kiểm soátquyền truy cập và đảm bảo tính toàn vẹn của bộ nhớ, hệ thống trở nên an toàn và

ổn định hơn

c)Tối Ưu Hóa Sử Dụng Tài Nguyên:

Quản lý bộ nhớ giúp tối ưu hóa sử dụng tài nguyên bằng cách ngăn chặn sự lãngphí và fragmentation Bằng cách cấp phát và giải phóng bộ nhớ một cách thôngminh, hệ thống Linux có thể giữ cho không gian bộ nhớ được tổ chức một cáchhiệu quả, giảm thiểu sự phân tán và tăng cường khả năng sử dụng tối ưu của tàinguyên

d)Tối Ưu Hóa Bộ Nhớ Ảo:

Linux sử dụng kỹ thuật swap để tối ưu hóa bộ nhớ ảo, giúp hệ thống chạy đồngthời nhiều ứng dụng mà không gặp vấn đề về sự giới hạn bộ nhớ vật lý Quản lý

bộ nhớ đảm bảo rằng quá trình swapping diễn ra hiệu quả và không gây ảnhhưởng đáng kể đến hiệu suất tổng thể

e)Đảm Bảo An Ninh Hệ Thống:

Quản lý bộ nhớ trong Linux đóng vai trò quan trọng trong việc ngăn chặn cácloại tấn công liên quan đến bộ nhớ như buffer overflow Bằng cách kiểm soátviệc truy cập và sử dụng bộ nhớ, hệ thống Linux giữ cho các ứng dụng chạytrong môi trường an toàn và độ tin cậy cao, giảm nguy cơ bị tấn công từ phíangười dùng xấu

Trang 7

CHƯƠNG 2.TỔNG QUAN VỀ QUẢN LÝ BỘ NHỚ TRONG LINUX 2.1.Các thành phần chính và chức năng của hệ thống quản lý bộ nhớ:

a)Các thành phần chính

+Bộ nhớ vật lý (RAM)

+Bộ nhớ ảo (virtual memory)

+Trang lưu trữ(Page Cache)

+Vùng nhớ được bảo vệ (protected memory)

+Trình tiện ích tráo đổi (kswapd)

+Bảng phân trang (page table)

b)Chức năng

Bộ nhớ vật lý trong Linux :là phần bộ nhớ RAM được sử dụng bởi hệ điều hành

và các tiến trình để lưu trữ các lệnh và dữ liệu Bộ nhớ vật lý có kích thước giớihạn bởi số bit của địa chỉ vật lý và số lượng RAM có sẵn trên hệ thống Ví dụ,một hệ thống 32 bit có thể có tối đa 4 GB bộ nhớ vật lý, trong khi một hệ thống

64 bit có thể có tối đa 16 EB bộ nhớ vật lý

Bộ nhớ ảo (virtual memory) là cách mở rộng bộ nhớ có sẵn của hệ thống bằng

cách sử dụng một phần bộ nhớ thứ cấp (như ổ cứng) để lưu trữ các trang hoặcđoạn bộ nhớ không cần thiết hoặc ít sử dụng Bộ nhớ ảo cho phép chạy cácchương trình có kích thước lớn hơn bộ nhớ vật lý và chuyển đổi giữa các chươngtrình một cách nhanh chóng.Bộ nhớ ảo giúp mở rộng không gian địa chỉ của mỗitiến trình và tạo điều kiện cho việc quản lý tài nguyên bộ nhớ hiệu quả hơn

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ừ đĩavào bộ nhớ, trang sẽ được lưu trữ ở bộ nhớ page cache

Vùng nhớ được bảo vệ (protected memory) là cách phân biệt các không gian địa

chỉ của các tiến trình khác nhau, để đảm bảo rằng một tiến trình không thể truy

Trang 8

cập hoặc thay đổi bộ nhớ của một tiến trình khác Vùng nhớ được bảo vệ giúptăng cường tính bảo mật và ổn định của hệ thống.

Trình tiện ích tráo đổi (kswapd) là một tiến trình đặc biệt của nhân Linux, có

nhiệm vụ giải phóng các trang nhớ vật lý đang lưu trữ dữ liệu khi bộ nhớ vật lýtrở nên ít đi Trình tiện ích tráo đổi sẽ chọn các trang nhớ vật lý phù hợp để đưa

ra khỏi bộ nhớ và lưu vào bộ nhớ thứ cấp, hoặc loại bỏ nếu không cần thiết

Bảng phân trang (page table): là cấu trúc dữ liệu dùng để ánh xạ các địa chỉ ảo

sang các địa chỉ vật lý Mỗi trang bộ nhớ ảo được ánh xạ với một trang bộ nhớvật lý thông qua một bảng phân trang Linux áp dụng các bảng phân trang bamức để tối ưu hóa việc tìm kiếm và cập nhật các ánh xạ

2.2.Chiến lược quản lý bộ nhớ trong Linux.

+Linux là một hệ điều hành đa nhiệm, đa người dùng, có thể chạy trên nhiều loại

bộ vi xử lý khác nhau Để tận dụng hiệu quả tài nguyên bộ nhớ, Linux sử dụngcác cơ chế như phân đoạn, phân trang, bộ nhớ ảo và không gian hoán đổi

a)Phân đoạn:

+Là cơ chế chia bộ nhớ thành các đoạn có kích thước khác nhau, mỗi đoạn cómột địa chỉ cơ sở và một độ dài Mỗi tiến trình có một bảng đoạn riêng biệt, chứathông tin về các đoạn của tiến trình đó Phân đoạn giúp bảo vệ bộ nhớ, tăng khảnăng chia sẻ và hỗ trợ các cấu trúc dữ liệu động

b)Phân trang:

+Là cơ chế chia bộ nhớ thành các trang có kích thước cố định, thường là 4 KB.Mỗi trang có một địa chỉ trang và một địa chỉ trong trang Mỗi tiến trình có mộtbảng trang riêng biệt, chứa thông tin về các trang của tiến trình đó Phân tranggiúp giảm độ lãng phí bộ nhớ, tăng khả năng chia sẻ và hỗ trợ bộ nhớ ảo

c)Bộ nhớ ảo:

+Là cơ chế cho phép tiến trình sử dụng nhiều bộ nhớ hơn bộ nhớ vật lý có sẵn

Bộ nhớ ảo được thực hiện bằng cách sử dụng một phần của ổ đĩa cứng làm khônggian hoán đổi Khi một trang của tiến trình không có trong bộ nhớ vật lý, hệ điềuhành sẽ tìm trang đó trong không gian hoán đổi và đưa nó vào bộ nhớ vật lý Quá

Trang 9

trình này được gọi là hoán đổi trang Bộ nhớ ảo giúp tăng dung lượng bộ nhớ,

tăng hiệu suất và tăng khả năng đa nhiệm.

d)Không gian hoán đổi:

+Là một phần của ổ đĩa cứng được sử dụng để lưu trữ các trang của tiến trình khichúng không cần thiết trong bộ nhớ vật lý Kích thước của không gian hoán đổi

có thể được cấu hình bởi người dùng hoặc hệ điều hành Không gian hoán đổigiúp mở rộng bộ nhớ ảo và giải phóng bộ nhớ vật lý cho các tiến trình khác

Trang 10

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

3.1.Sự 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ạtnhân và các tiến trình Hai phân đoạn liên quan đến 3GB đầu tiên ( từ 0 đen0xBFFF 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 Haiphân đoạn liên quan đến GB thứ 4 (từ 0xC000 0000 đến 0xFFFF FFFF) củakhô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ửaduy 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

3.2.Sự phân trang.

3.2.1 Nhu cầu phân trang

Vì có quá ít bộ nhớ vật lý so với bộ nhớ ảo nên HĐH phải chú trọng làm sao đểkhông lãng phí bộ nhớ vật lý Một cách để tiết kiệm bộ nhớ vật lý là chỉ loadnhững trang ảo mà hiện đang được sử dụng bởi một chương trình đang thực thi

Ví dụ, một chương trình cơ sở dữ liệu thực hiện một truy vấn vào cơ sở dữ liệu.Trong trường hợp này không phải toàn bộ cơ sở dữ liệu được load vào bộ nhớ màchỉ load những bản ghi có liên quan Việc mà chỉ load những trang ảo vào bộ nhớkhi chúng được truy cập dẫn đến nhu cầu về phân trang

3.2.2.Trang lưu trữ (page cache)

Trang 12

* Trang P được đọc trong suốt quá trình hoạt động của đầu đọc cluster ánh xạ bộnhớ Trong trường hợp này, một chuỗi các trang liền nhau tiếp sau trang lỗi trongfile ánh xạ bộ nhớ được đọc Những trang này bắt đầu vòng đời của chúng trongpage cache kết hợp với file ánh xạ bộ nhớ và trong active_list.

2 Trang P được ghi bởi tiến trình, do đó có chứa dữ liệu ( dirty ) Lúc này trang

P vẫn ở trên active_list

3 Trang P không được sử dụng trong một thời gian Sự kích hoạt định ki củahàm kswapd() (kernel swap daemon) sẽ giảm dần biển đêm page->age Hàmkswapd() sẽ hoạt động nhiều hơn khi nhu cầu về bộ nhớ tăng Thời gian tồn tạicủa trang P sẽ giảm dần xuống 0 (age == 0) nếu nó không còn được tham chiếu,dẫn đến sự kích hoạt của hàm re fill inactive()

4 Nếu bộ nhớ đã đầy, hàm swap_out sẽ được gọi bởi hàm kswapd) để cố gắnglấy lại các trang từ không gian địa chỉ ảo của tiến trình A Vì trang P không cònđược tham chiếu và có age == 0, nên các mục trong bảng trang sẽ bị xóa Tấtnhiên, trong thời gian này sẽ không có tiến trình nào ánh xạ đến Hàm swap_outthực ra không đưa trang P ra ngoài mà đơn giản là chỉ loại bỏ sự tham chiếu củatiến trình đền trang Nhờ vào page cache và cơ chế swap mà trang sẽ bảo đảmđược ghi lên đĩa khi cần

5 Thời gian xử lý ít hay nhiều là tùy thuộc vào nhu cầu sử dụng bộ nhớ

6 Tiếp theo, hàm refill_inactive_scan) tìm các trang mà có thể đưa đếninactive_dirty list Từ khi trang P không được ánh xạ bởi một tiến trình nào và cóage == 0 thì nó được đưa từ active_list đến inactive_dirty list

7 Tiên trình A truy cập vào trang P, nhưng nó hiện không có trong bộ nhớ ảotiên trình các mục trong bảng trang đã bị xóa bởi hàm swap_out() Trình điềukhiển lỗi gọi hàm find page nolock() để xác định vị trí trang P trong page cache.Sau khi tìm thây, các mục trong bảng trang sẽ được phục hồi ngay lập tức vàtrang P được đưa đến active_list

8 Quá trình này mất nhiều thời gian do hàm swap_out() xóa các mục trong bảngtrang của tiến trình A, hàm refill_inactive_scan() vô hiệu hóa trang P, đưa nó đếninactive_dirty list Việc tốn nhiều thời gian sẽ làm bộ nhớ trở nên chậm

Trang 13

9 Hàm page launder() được kích hoạt để làm sạch các trang dirty Nó tìm trang Ptrong inactive_dirty list và ghi trang P ra đĩa Sau đó, trang được đưa đếninactive_clean_list Khi hàm page_ launder() thực sự quyết định ghi lên trang thì

sẽ thực hiện các bước sau:

-Khóa trang

- Gọi phương thức writepage Lời gọi này kích hoạt một vài đoạn mã đặc biệt đểthực hiện ghi lên đĩa ( không đồng bộ ) với trang đã bị khóa Lúc này, hàm pagelaunder() đã hoàn thành nhiệm vụ, trang vẫn ở trong inactive_dirty_list và sẽđược mở khóa cho đến khi việc ghi hoàn tất

Hàm page launder() được gọi lại để tìm trang clean để đưa nó đếninactive_clean_list, giả sử trong thời gian này không có tiến trình nào tham chiếuđến nó trong page cache

10 Hàm page launder() thực hiện lại để tìm các trang không sử dụng và clean,đưa chúng đền inactive_clean_list

11 Giả sử cần một trang trống riêng lẻ Điều này có thể thực hiện bằng cách lấylại một trang inactive_clean, trang P sẽ được chọn Hàm reclaim_page() loại bỏtrang P ra khỏi page cache ( điều này bảo đàm răng không có tiên trình nào kháctham chiếu đến nó trong quá trình quản lý lỗi trang ), và nó được đưa cho lời gọinhư là một trang trồng

Hoặc:

Hàm kreclaimd() cố găng tạo bộ nhớ trồng Nó giành lại trang P và xóa nó Đâychỉ là một chuỗi các sự kiện hợp lý : một trang có thể sống trong page cachetrong một thời gian dài, rồi chết đi, rồi lại được phục hồi trở lại, Trang có thểđược phục hồi từ inactive_clean, active lists hay inactive_dirty list Trang chỉ đọc

là những trang không phải dirty, vì vậy hàm page launder() có thể đưa chúng từinactive_dirty_list đến inactive_clean_list để làm trồng nó

Các trang trong inactive clean list được kiểm tra định kì nhằm tạo ra các khối nhớtrống lớn liên tiếp nhau để đáp ứng khi có yêu cầu Tóm lại, trang P thực chất chỉ

là một trang logic, do đó nó được thể hiện bằng một vài trang vật lý cụ thể.3.Bảng trang (page table)

Trang 14

Linux giả sử rằng có 3 mức bảng trang Mỗi bàng trang chứa số khung trang củabảng trang ở mức tiếp theo Hình 1 chỉ ra cách mà địa chỉ ảo được chia thành cáctrường Mỗi trường cung cấp một địa chỉ offset đến một bảng trang cụ thể Đểchuyển địa chỉ ào thành địa chỉ vật lý, bộ xử lý phải lấy nội dung của các trườngrồi chuyển thành địa chỉ offset đến trang vật lý chứa bảng trang và đọc số khungtrang của bảng trang ở mức tiếp theo Việc này lặp lại 3 lần cho đến khi số khungtrang của trang vật lý chứa địa chỉ ảo được tìm ra Bây giờ, trường cuối cùngtrong địa chỉ ảo được sử dụng để tìm dữ liệu trong trang.

Mỗi nền mà Linux chạy trên đó phải cung cấp sự chuyển đổi các macro cho phépkernel có thể hiểu được các bảng trang tương ứng trên nền đó Do đó, kernelkhông cần biết định dạng của các mục trong bảng trang cũng như cách sắp xếpcủa nó Điều này giúp cho Linux thành công trong việc sử dụng cùng một đoạn

mã để xử lý các bảng trang đối với bộ xử lý Alpha ( có 3 mức bảng trang ) và đốivới bộ xử lý Intel x86 ( có 2 mức bảng trang )

Tất cả các trang vật lý trong hệ thống được mô tả bởi cấu trúc dữ liệu mem_map,đây là một danh sách gồm các cấu trúc dữ liệu mem_map_t được khởi tạo lúckhởi động Mỗi mem_map_t mô tả một trang vật lý trong hệ thông Các trườngquan trọng có liên quan đến việc quản lý bộ nhớ là :

- Count : lưu số lượng người sử dụng của trang này Count > 1 khi trang đượcchia sẻ bởi nhiều tiên trình

age : trường này mô tả "tuổi" của trang và được dùng để quyết định trang bị loại

bỏ hay hoán đổi

map_nr : đây là số khung trang vật lý mà mem_map_t này mô tả

Ngày đăng: 24/04/2024, 16:40

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

TÀI LIỆU LIÊN QUAN

w