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

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

35 3 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 đề Nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành Linux
Tác giả Nguyễn Xuân Khoa, Trịnh Phi Long, Dương Quang Vinh, Trần Hữu Nam, Lê Ngọc Bắc
Người hướng dẫn Th.s 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 Kiến trúc máy tính và hệ điều hành
Thể loại Báo cáo thực nghiệm
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 35
Dung lượng 1,36 MB

Nội dung

Hệ điều hành Linux, với tính năng mạnh mẽ và linh hoạt, đã trở thành nềntảng phổ biến trong nhiều môi trường khác nhau, từ máy chủ đến thiết bị nhúng.Việc hiểu rõ và áp dụng các kỹ thuật

Trang 1

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

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

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

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO THỰC NGHIỆM MÔN HỌC: KIẾN TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH

ĐỀ TÀI: NGHIÊN CỨU TÌM HIỂU VỀ QUẢN LÝ BỘ NHỚ

TRONG TRONG HỆ ĐIỀU HÀNH LINUX

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

Trang 3

LỜI NÓI ĐẦU

Trong bối cảnh phát triển mạnh mẽ của công nghệ thông tin và sự gia tăngkhông ngừng của các ứng dụng và dịch vụ, hệ điều hành đóng vai trò vô cùngquan trọng trong việc quản lý tài nguyên hệ thống, đặc biệt là bộ nhớ Quản lý

bộ nhớ hiệu quả là một yếu tố then chốt để đảm bảo hiệu suất và tính ổn địnhcủa hệ thống

Hệ điều hành Linux, với tính năng mạnh mẽ và linh hoạt, đã trở thành nềntảng phổ biến trong nhiều môi trường khác nhau, từ máy chủ đến thiết bị nhúng.Việc hiểu rõ và áp dụng các kỹ thuật quản lý bộ nhớ trong Linux không chỉ giúptối ưu hóa tài nguyên mà còn nâng cao hiệu suất của các ứng dụng

Mục tiêu của nghiên cứu này là tìm hiểu và phân tích các cơ chế quản lý bộnhớ trong hệ điều hành Linux, từ đó đề xuất các phương pháp cải thiện hiệu quả

sử dụng bộ nhớ

Bài tiểu luận này sẽ được chia thành bảy chương chính:

Chương 1: Tổng quan về quản lý bộ nhớ trong hệ điều hành Linux

Chương 2: Các cấu trúc chương trình.

Chương 3: Cơ chế phân đoạn, phân trang của hệ điều hành Linux.

Chương 4: Caches.

Chương 5: Cơ chế quản lý bộ nhớ ảo.

Chương 6: Cơ chế quản lý bộ nhớ vật lý, ánh xạ bộ nhớ.

Chương 7: Cấp phát và giải phóng vùng nhớ trong Linux.

Với nội dung này, chúng tôi hy vọng sẽ cung cấp cho độc giả một cái nhìntổng quan và chi tiết về quản lý bộ nhớ trong hệ điều hành Linux, đồng thời mở

ra các hướng nghiên cứu và ứng dụng thực tiễn trong việc tối ưu hóa hệ thống Nhóm 4 chân thành cảm ơn!

Trang 4

Mục lục

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

KHOA CÔNG NGHỆ THÔNG TIN 0

ĐỀ TÀI 0

ĐỀ TÀI 1

LỜI NÓI ĐẦU 1

Mục lục 2

CHƯƠNG 1: TỔNG QUAN VỀ QUẢN LÝ BỘ NHỚ TRONG HỆ ĐIỀU HÀNH LINUX 4

1.1.Tổng quan về hệ điều hành Linux 4

1.2 Tổng quan về quản lý bộ nhớ trong hệ điều hành Linux 5

1.3 Các khái niệm cơ bản 6

CHƯƠNG 2: CÁC CẤU TRÚC CHƯƠNG TRÌNH 7

2.1 Cấu trúc tuyến tính 7

2.2 Cấu trúc động 7

2.3 Cấu trúc overlay 8

2.4 Cấu trúc phân đoạn 8

2.5 Cấu trúc phân trang 9

CHƯƠNG 3: CƠ CHẾ PHÂN ĐOẠN, PHÂN TRANG CỦA HỆ ĐIỀU HÀNH LINUX 10

3.1 Sự phân đoạn 10

3.2 Trang lưu trữ (page cache) 10

3.3 Bảng trang (page table) 13

3.4.Định vị và giải phóng trang 13

3.4.1 Định vị trang 13

3.4.2 Giải phóng trang 14

CHƯƠNG 4: CACHES 15

4.1 Vùng bộ đệm (Buffer Cache) 15

4.2 Vùng trang nhớ (Page cache) 15

4.3 Vùng lưu trữ trung gian (Swap cache) 15

4.4.Các vùng đệm phần cứng (Hardware caches) 16

Trang 5

CHƯƠNG 5: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO 17

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

5.2 Mô hình bộ nhớ ảo 17

5.3.Tạo không gian hoán đổi 19

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

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

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

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

6.1.1 Bộ định vùng 23

6.1.2 Các vùng 24

6.2 Ánh xạ bộ nhớ 24

Chương 7: CẤP PHÁT VÀ GIẢI PHÓNG VÙNG NHỚ TRONG LINUX 26

7.1.Cấp phát vùng nhớ 26

7.1.1 Cấp phát vùng nhớ giản đơn 26

7.1.2 Cấp phát vùng nhớ lớn 27

7.1.3 Vùng nhớ được bảo vệ 28

7.1.4 Môt số hàm cấp phát vùng nhớ khác 29

7.2 Giải phóng vùng nhớ 29

7.3.Truy xuất con trỏ NULL 30

KẾT LUẬN 32

TÀI LIỆU THAM KHẢO 33

Trang 6

CHƯƠNG 1: TỔNG QUAN VỀ QUẢN LÝ BỘ NHỚ TRONG

HỆ ĐIỀU HÀNH LINUX

1.1.Tổng quan về hệ điều hành Linux

Linux là một hệ điều hành họ UNIX miễn phí được sử dụng rộng rãi hiện nay.Được viết vào năm 1991 bởi Linus Torvard, hệ điều hành Linux đã thu đượcnhiều thành công Là một hệ điều hành đa nhiệm, đa người dùng, Linux có thểchạy trên nhiều nền phần cứng khác nhau Với tính năng ổn định và mềm dẻo,Linux đang dần được sử dụng nhiều trên các máy chủ cũng như các máy trạmtrong các mạng máy tính Linux còn cho phép dễ dàng thực hiện việc tích hợp

nó và các hệ điều hành khác trong một mạng máy tính như Windows, Novell,Apple Ngoài ra, với tính năng mã nguồn mở, hệ điều hành này còn cho phépkhả năng tùy biến cao, thích hợp cho các nhu cầu sử dụng cụ thể

Hình 1.1: hệ điều hành Linux

Chim cánh cụt Tux ở trên, dựa trên một hình ảnh do Larry Ewing tạo ravào năm 1996, biểu trưng và vật may mắn của Linux

- Ưu điểm của Linux:

● Không tốn nhiều chi phí mua bản quyền

Trang 7

●Tính bảo mật tương đối cao

●Tính linh hoạt

●Có thể hoạt động trên các máy tính cấu hình yếu

- Nhược điểm của Linux:

●Số lượng ứng dụng được hỗ trợ trên Linux còn hạn chế

●Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux

Thông tin thêm:

Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho cácthiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Android được ra mắt vào năm 2007 với tuyên bố thành lập Liên minh thiết

bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm và viễn thông thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động

Và chiếc điện thoại đầu tiên của Android được bán vào tháng 10 năm 2008

Hình 1.2: Logo hệ điều hành Android

1.2 Tổng quan về quản lý bộ nhớ trong hệ điều hành Linux

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ácmáy chủ server có thể lên đến hàng gigabyte bộ nhớ Thế nhưng nhu cầu bộ nhớvẫn khô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ênLinux không bao giờ được phép truy cập trực tiếp vào địa chỉ vật lý của bộ nhớ.Linux cung 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ến trì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 phiên bản của UNIX đều cung cấp cách bảo vệ bộ nhớ theo cơ chế bảo

Trang 8

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átcho một tiến trình không thể nào đọc hoặc ghi bởi một tiến trình khác Tronghầu hết các hệ thống Linux và UNIX, con trỏ được sử dụng là một số nguyên 32bit 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ớ 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đĩa tức là một lượng không gian hoán đổi nào đó có thể phân bố trên đĩa Khi 9

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 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 cho các chương trình người sử dụng và bộ đệm đĩa tạm thời (diskcache) Theo cách này, tất cả bộ nhớ trống dành để nhớ tạm và bộ nhớ đệm(cache) sẽ giảm xuống khi bộ xử lý chạy những chương trình lớn

1.3 Các khái niệm cơ bản

Bộ nhớ:

+ Bộ nhớ là trung tâm để điều khiển hệ thống máy tính hiện đại

+ CPU lấy các chỉ thị từ bộ nhớ dựa theo giá trị của thanh đếm chương trình

Bộ nhớ trong là thiết bị lưu trữ mà CPU có thể truy xuất một cách trực tiếp Khi tổ chức một chương trình, sau khi biên dịch chương trình được chuyểnsang ngôn ngữ máy tính, khi đó nó có các địa chỉ tương đối Để tối ưu quá trìnhhoạt động của CPU và tốc độ của máy tính thì một số tiến trình được lưu giữtrong bộ nhớ Hệ điều hành có những vai trò như sau trong việc quản lý bộ nhớchính:

+ Lưu giữ thông tin về các vị trí trong bộ nhớ đã được sử dụng và ai sử dụng.+ Quyết định tiến trình nào được nạp vào bộ nhớ chính khi bộ nhớ có thể sửdụng được

+ Cấp phát và thu hồi bộ nhớ khi cần thiết

Các yêu cầu của quản lý bộ nhớ chính:

+ Phân bổ thời gian nhớ cho các tiến hình hoạt động

+ Thu hồi không gian nhớ khi tiến trình kết thúc hay bị hủy

+ Tổ chức, quản lý được không gian nhớ tự do

Trang 9

CHƯƠNG 2: CÁC CẤU TRÚC CHƯƠNG TRÌNH

Cấu trúc chương trình thể hiện cách quản lý bộ nhớ logic Mỗi chương trình

có thể có nhiều Module, các Module có thể giống hoặc khác nhau về cấu trúc

Trong cấu trúc động các Module được biên dịch một cách riêng biệt

Khi thực hiện chương trình hệ thống định vị Module gốc, trong quá trình thựchiện cần tới module nào thì hệ thống xin cấp phát không gian nhớ và nạp tiếpmodule đó Khi hoạt động xong thì giải phóng module khỏi bộ nhớ và thu hồikhông gian nhớ

- Ưu điểm: Nếu tổ chức tốt sẽ tiết kiệm bộ nhớ

- Nhược điểm: Trách nhiệm nạp và xoá các module do người sử dụng đảmnhiệm do đó phải được nêu ngay trong chương trình nguồn do đó kích thướcchương trình lớn và người sử dụng phải nắm vững cấu trúc chương trình và cáccông cụ điều khiển bộ nhớ của OS

Trang 10

Chương trình sẽ bị phụ thuộc vào Version của hệ điều hành.

2.3 Cấu trúc overlay

Các Module chương trình sau khi biên dịch được chia thành các mức:

Mức 0: Là mức chứa Module gốc

Mức 1: Chứa các Module được gọi bởi mức 0

Mức 2: Chứa các Module được gọi bởi mức 1

Bộ nhớ cũng được chia thành các mức tương ứng với chương trình Kíchthước mỗi mức trong bộ nhớ bằng kích thước Module lớn nhất của mức chươngtrình tương ứng

Để biên dịch chương trình cấu trúc Overlay người ta cần cung cấp thông tin

về các mức cho trình biên dịch thông qua sơ đồ Overlay

Khi thực hiện chương trình Module gốc được định vị vào bộ nhớ như chươngtrình có cấu trúc tuyến tính Cần tới Module nào thì hệ thống sẽ tìm kiếm trong

sơ đồ Overlay và nạp vào bộ nhớ ở mức tương ứng

- Ưu điểm: Chỉ đòi hỏi người sử dụng cung cấp những thông tin đơn giản Không gắn cố định cấu trúc vào chương trình nguồn

Nếu xây dựng được sơ đồ Overlay hợp lý sẽ tiết kiệm được bộnhớ

- Nhược điểm: Vẫn yêu cầu người sử dụng cung cấp thông tin phụ

Hiệu quả phụ thuộc vào cách tổ chức bố trí các Module

2.4 Cấu trúc phân đoạn

Chương trình sau khi biên dịch, thông tin về các Module được chứa trong mộtbảng điều khiển được gọi là bảng quản lý đoạn (Segment Control Block - SCB).Trong bảng SCB còn chứa các thông tin trợ giúp việc định vị các Module trong

Trang 11

Ưu điểm: Không yêu cầu người sử dụng khai báo thêm thông tin.Khi dunglượng bộ nhớ tăng thì tốc độ thực hiện chương trình cũng tăng.

Nhược điểm: Hiệu quả sử dụng bộ nhớ phụ thuộc vào cách phân chia chươngtrình thành các Module độc lập

Chương trình chỉ áp dụng được khi bộ nhớ được quản lý theo kiểu phân đoạn

2.5 Cấu trúc phân trang

Chương trình được biên dịch như cấu trúc tuyến tính sau đó được phân chiathành các phần bằng nhau gọi là trang

Thông tin của các trang được chứa trong một bảng điều khiển được gọi làbảng quản lý trang (Page Control Block - PCB)

Mỗi phần tử trong PCB ứng với một trang trong chương trình của USER

Khi thực hiện dựa vào PCB hệ thống sẽ đưa trang cần thiết vào bộ nhớ

Ưu điểm: Phát huy được hiệu quả sử dụng bộ nhớ

Nhược điểm: Chí áp dụng đối với bộ nhớ được quản lý theo kiểu phân trang

Trang 12

CHƯƠNG 3: CƠ CHẾ PHÂN ĐOẠN, PHÂN TRANG CỦA HỆ

ĐIỀU HÀNH LINUX.

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 chovùng 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 0xBFFFFFFF) của không gian địa chỉ tiến trình 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ỉnhsửa duy nhất trong chế độ Kernel

Hình 2.1 Cơ chế phân đoạn tách vùng nhớ đã cấp phát cho hạt nhân và tiến

trình.

3.2 Trang lưu trữ (page cache)

Cache là tầng nằm giữa phần quản lý bộ nhớ kernel và phần vào ra củađĩa.Các trang mà kernel hoán đổi không được ghi trực tiếp lên đĩa mà được ghivào cache Khi cần vùng nhớ trống thì kernel mới ghi các trang từ cache ra đĩa

*Vòng đời của một User Page

- Trang P được đọc từ đĩa vào bộ nhớ và được lưu vào page cache Có thểxảy

ra một trong các trường hợp sau:

+Tiến trình A muốn truy cập vào trang P Nó sẽ được trình quản lý lỗi trangkiểm tra xem có tương ứng với file đã được ánh xạ không Sau đó nó được lưu

Trang 13

vào page cache và bảng trang tiến trình Từ đây vòng đời của trang bắt đầu trênactive _list, nơi mà nó vẫn được lưu giữ kể cả khi đang được sử dụng.

+Hoặc: Trang P được đọc trong suốt quá trình hoạt động của đâu đọc hoán đổi,

và được lưu vào page cache Trong trường hợp này, lý do mà trang được đọcđơn giản chi vì nó là một phần của cluster trong các khối trên đĩa Một loạt cáctrang liên tiếp nhau trên đĩa sẽ được đọc mà không cần biết các trang này có cầnhay không Chúng ta cũng không cần quan tâm đến việc thông báo cho các trangnày nếu chúng mất đi khi không dùng, vì chúng có thể phục hồi ngay lập tức cho

dù không còn được tham chiếu đến nữa

+Hoặc: 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 tranglỗi trong file ánh xạ bộ nhớ được đọc Những trang này bắt đầu vòng đời củachúng trong page cache kết hợp với file ánh xạ bộ nhớ và trong active_list

- 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

- Trang P không được sử dụng trong một thời gian Sự kích hoạt định kì của

hàm kswapd0 (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()

- Nếu bộ nhớ đã đầy, hàm swap _out sẽ được gọi bởi hàm kswapd() để cố

gắng lấy lại các trang từ không gian địa chỉ ảo của tiến trình A Vì trang P khôngcò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

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

- Tiếp theo, hàm refill inactive scan0 tìm các trang mà có thể đưa đến

inactive_dirtylist Từ khi trang P không được ánh xạ bởi một tiến trình nào và cóage = O thì nó được đưa từ active _list đến inactive_dirty list

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

Trang 14

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

- Hàm page- launder() được kích hoạt để làm sạch các trang dirty Nó tìmtrang

P trong 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 trangthì 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àmpage_ launder đã 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 thamchiếu đến nó trong page cache

- 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

- 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ây

lại một trang inactive _clean, trạng P sẽ được chọn Hàm reclaim page() loại bỏtrang P ra khỏi page cacht ( đ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ó.Đây chỉ là một chuỗi các sự kiện hợp lý : một trang có thể sống trong pagecache trong 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 Trangchỉ đọc là những trang không phải dirty, vì vậy hàm page launder() có thể đưachú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ốinhớ trống lớn liên tiếp nhau để đáp ứng khi có yêu cầu Tôm lại, trangP thựcchất chi là một trang logic, do đó nó được thể hiện bằng một vài trang vật lý cụthể

Trang 15

3.3 Bảng trang (page table)

Hình 2.2 3 Mức bảng trang

Linux giả sử rằng có 3 mức bảng trang Mỗi bảng trang chứa số khung trangcủa bảng trang ở mức tiếp theo Mỗi trường cung cấp một địa chỉ offset đến mộtbảng trang cụ thể Để chuyển địa chỉ ảo thành địa chỉ vật lý, bộ xử lý phải lấynội dung của các trường rồi chuyển thành địa chỉ offset đến trang vật lý chứabảng trang và đọc số khung trang của bảng trang ở mức tiếp theo Việc này lặplại 3 lần cho đến khi số khung trang của trang vật lý chứa địa chỉ ảo được tìm ra.Trường cuối cùng trong địa chỉ ảo được sử dụng để tìm dữ liệu trong trang Mỗinề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)

3.4.Định vị và giải phóng trang

3.4.1 Định vị trang

Linux sử dụng thuật toán Buddy để định vị và giải phóng một cách hiệu quảcác khối của trang Đoạn mã định vị trang xác định một khối của một hay nhiềutrang vật lý Những trang được định vị trong khối có kích thước là lũy thừa của

2 Điều đó có nghĩa là nó có thể định vị một khối gồm 1 trang, 2 trang, 4 trangtrang, Khi có đủ số trang trống trong hệ thống để cấp cho một yêu cầu, đoạn

mã định vị sẽ tìm trong free_area một khối các trang có kích thước như yêu cầu.Mỗi phần tử của free_area ánh xạ đến các khối trang trống có kích thước tươngứng

Trang 16

Ví dụ: phần tử thứ 2 của mảng ánh xạ đến các khối gồm 4 trang trống đã đượcđịnh vị.

3.4.2 Giải phóng trang

Việc định vị các khối trang làm cho bộ nhớ bị phân mảnh do các khối tranglớn bị chia nhỏ Đoạn mã giải phóng trang kết hợp các trang lại thành một khốilớn các trang trống bất cứ khi nào có thể Khi có một khối trang trống thì cáckhối lân cận có cùng kích thước được kiểm tra xem có trống không Nếu có thìchúng được kết hợp với nhau để tạo ra một khối trang có kích thước gấp đôi.Đoạn mã giải phóng trang lại tìm cách kết hợp khối mới này với một khối khác.Theo cách này, khối các trang trống sẽ lớn dần

Trang 17

CHƯƠNG 4: CACHES

Các phương pháp quản lý bộ nhớ trên tuy vậy lại 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ó khan khi muốnnâ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ệcvận hành hệ thống nhanh hơn Bộ nhớ cache được đặt giữa CPU và bộ nhớchính, nó đóng vai trò làm bộ đệm có tốc độ truy nhập cao Bộ nhớ cache códung lượng nhỏ hơn bố nhớ chính rất nhiều lần, song nó có tốc độ truy nhập caohơn rất nhiều Trong hệ điều hành Linux sử dụng một số loại vùng nhớ đệmcache sau:

và đọc dữ liệu nhanh hơn rất nhiều

VD: Đọc dữ liệu từ đĩa cứng: Khi ứng dụng cần đọc dữ liễu từ đĩa cứng, hệ điềuhành sẽ sử dụng Vùng bộ đệm để lưu trữ các khối dữ liệu được đọc gần đây từđĩa

4.2 Vùng trang nhớ (Page cache)

Vùng trang nhớ đượ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 trangtạ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

VD: Nếu trang dữ liệu không tồn tại trong Vùng trang nhớ, hệ điều hành sẽ thựchiện thao tác đọc từ đĩa cứng và lưu trữ nó trong Vùng trang nhớ

Ngày đăng: 29/06/2024, 14:40

HÌNH ẢNH LIÊN QUAN

Hình 1.1: hệ điều hành Linux - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
Hình 1.1 hệ điều hành Linux (Trang 6)
Hình 1.2: Logo hệ điều hành Android - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
Hình 1.2 Logo hệ điều hành Android (Trang 7)
Hình 2.1: Cấu trúc tuyến tính - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
Hình 2.1 Cấu trúc tuyến tính (Trang 9)
Hình 2.1. Cơ chế phân đoạn tách vùng nhớ đã cấp phát cho hạt nhân và tiến trình. - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
Hình 2.1. Cơ chế phân đoạn tách vùng nhớ đã cấp phát cho hạt nhân và tiến trình (Trang 12)
3.3. Bảng trang (page table) - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
3.3. Bảng trang (page table) (Trang 15)
Hình 6.1: Tracks,cylinder và sectors. - đề tài nghiên cứu tìm hiểu về quản lý bộ nhớ trong trong hệ điều hành linux
Hình 6.1 Tracks,cylinder và sectors (Trang 25)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w