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

báo cáo bài tập lớn học phần hệ điều hành quản lý bộ nhớ ảo không gian hoán đổi

13 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

Nội dung

CHƯƠNG I: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO TRONG LINUXI.Khái niệm bộ nhớ ảo, không gian hoán đổiLinux có khả năng hỗ trợ bộ nhớ ảo, điều này có nghĩa là nó có thể sử dụng một phần của đĩa như là

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC PHENIKAA

BÁO CÁO BÀI TẬP LỚN

HỌC PHẦN HỆ ĐIỀU HÀNH TÊN ĐỀ TÀI

Họ và tên sinh viên: Nguyễn Văn A Mã sinh viên: 1234455

Ngành học: Công nghệ thông tin/ Khóa: K14/K15/

Tên lớp: CNTT1/CNTT2/

Hà Nội, Năm 2023

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU………1

Chương I: QUẢN LÝ BỘ NHỚ ẢO, KHÔNG GIAN HOÁN ĐỔII.Khái niệm bộ nhớ ảo, không gian hoán đổi……….2

II.Mô hình bộ nhớ ảo……… …2

III.Tạo không gian hoán đổi………6

IV.Sử dụng không gian hoán đổi………8

V.Định vị không gian hoán đổi……… 9

Tài liệu tham khảo……… 11

Trang 3

LỜI MỞ ĐẦU

Trong những năm gần đây, Linux đã tạo ra một cuộc cách mạng đáng kể trong lĩnh vực máy tính Sự tiến triển và những đóng góp mà nó mang lại cho máy tính là đáng kinh ngạc: một hệ điều hành đa nhiệm và đa người dùng Linux có khả năng hoạt động trên nhiều bộ xử lý khác nhau như Intel, Motorola, MC68K, Dec Alpha, và tương tác tốt với các hệ điều hành như Apple, Microsoft và Novell.Không tình cờ mà ngành công nghệ thông tin Việt Nam đã lựa chọn Linux làm hệ điều hành cơ sở cho các ứng dụng chủ đạo trong lĩnh vực kinh tế và quốc phòng Với mã nguồn mở, việc sử dụng Linux mang lại sự an toàn cao hơn so với các ứng dụng Windows Linux cung cấp lợi ích kinh tế bằng cách cung cấp nhiều phần mềm miễn phí Mã nguồn mở của hệ điều hành và các chương trình trên Linux là tài nguyên quý giá để nâng cao kỹ năng lập trình, điều mà không phải là điều có sẵn đối với ứng dụng Windows.

Trong dự án này, chúng ta sẽ tìm hiểu về một khía cạnh quan trọng của hệ điều hành Linux, đó là quản lý bộ nhớ Một hệ điều hành muốn hoạt động ổn định cần phải có một cơ chế quản lý bộ nhớ hiệu quả Chi tiết về cơ chế này sẽ được trình bày trong dự án, đi kèm với các ví dụ minh họa.

Trang 4

CHƯƠNG I: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO TRONG LINUXI.Khái niệm bộ nhớ ảo, không gian hoán đổi

Linux có khả năng hỗ trợ bộ nhớ ảo, điều này có nghĩa là nó có thể sử dụng một phần của đĩa như là RAM để mở rộng dung lượng bộ nhớ Kernel sẽ tự động ghi nội dung của các phần bộ nhớ không sử dụng lên đĩa cứng, giải phóng bộ nhớ cho các mục đích khác Khi cần thiết, những nội dung này có thể được đọc trở lại vào bộ nhớ.

Dù việc sử dụng bộ nhớ ảo giúp tăng dung lượng sẵn có mà không làm ảnh hưởng đến trải nghiệm người sử dụng và chương trình chạy, tuy nhiên, cần lưu ý rằng việc đọc và ghi dữ liệu lên đĩa cứng chậm hơn nhiều so với sử dụng bộ nhớ thực tế, với mức chậm khoảng một nghìn lần Phần không gian trên đĩa cứng đượcsử dụng như là không gian hoán đổi.

Linux có khả năng sử dụng một tệp thông thường trong hệ thống tệp hoặc một phân vùng riêng để thực hiện không gian hoán đổi Một phân vùng swap có thể mang lại hiệu suất nhanh hơn, nhưng nó cũng đồng nghĩa với việc thay đổi kích thước của nó có thể phức tạp hơn so với việc chỉnh sửa một tệp swap.

Khi bạn đã biết dung lượng không gian hoán đổi cần thiết, bạn có thể quyết định bắt đầu tạo một phân vùng swap Tuy nhiên, nếu bạn chưa chắc chắn về dunglượng cần thiết, việc sử dụng một tệp swap trước là một giải pháp khôn ngoan Thay vào đó, bạn có thể sử dụng hệ thống trong khoảng thời gian để đảm bảo rằng bạn đã xác định đúng dung lượng không gian hoán đổi cần thiết, sau đó mới quyết định tạo phân vùng swap.

II.Mô hình bộ nhớ ảo

Trước khi chúng ta khám phá các phương thức mà Linux sử dụng để hỗ trợ bộ nhớ ảo, hãy đặt tầm quan trọng vào mô hình trừu tượng của hệ điều hành này.Khi một chương trình được thực hiện, bộ xử lý đọc một lệnh từ bộ nhớ và tiếnhành giải mã Trong quá trình giải mã này, bộ xử lý có thể cần truy cập bộ nhớ để lấy dữ liệu hoặc lưu trữ nó tại một vị trí cụ thể Sau đó, bộ xử lý tiếp tục thực hiệnlệnh và di chuyển đến lệnh tiếp theo trong chương trình Do đó, việc truy cập bộ nhớ để đọc lệnh hoặc thực hiện thao tác lưu trữ dữ liệu là một quá trình liên tục vàkhông ngừng.

Trang 5

Đối với hệ điều hành Linux, tất cả các địa chỉ trong bộ nhớ ảo đều là địa chỉ ảo, không phải địa chỉ vật lý Bộ xử lý thực hiện quá trình chuyển đổi này bằng cách sử dụng thông tin từ các bảng quản lý được tạo và duy trì bởi hệ điều hành.Để tạo điều kiện thuận lợi cho quá trình chuyển đổi này, bộ nhớ ảo và bộ nhớ vật lý được chia thành các đơn vị gọi là trang, mỗi trang có kích thước đồng đều Điều này giúp quản lý bộ nhớ hiệu quả và giảm độ phức tạp của quá trình chuyển đổi địa chỉ Ví dụ, trên hệ thống Alpha AXP, Linux sử dụng trang kích thước 8Kbyte, trong khi trên hệ thống Intel x86, trang thường có kích thước 4Kbyte Mỗi trang được liên kết với một số khung trang duy nhất (PFN - Page Frame Number) để xác định vị trí vật lý tương ứng trong bộ nhớ.

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

Trang 6

Mô hình này sử dụng địa chỉ ảo để quản lý bộ nhớ và thực hiện việc chuyển đổi từđịa chỉ ảo sang địa chỉ vật lý Địa chỉ ảo được chia thành hai phần: địa chỉ offset và số khung trang ảo Kích thước trang được xác định là 4Kbyte, do đó, từ bit 0 đến bit 11 của địa chỉ ảo chứa địa chỉ offset, còn từ bit 12 trở lên là số khung trangảo.

Khi bộ xử lý gặp một địa chỉ ảo, nó phải trích xuất địa chỉ offset và số khung trang ảo Để thực hiện việc này, bộ xử lý sử dụng bảng trang Bảng trang giúp ánhxạ từ số khung trang ảo sang số khung trang vật lý Sau khi xác định được số khung trang vật lý, bộ xử lý sẽ truy cập vào vị trí tương ứng trong trang vật lý đó, sử dụng địa chỉ offset.

Quá trình này giúp bộ xử lý ảo hóa bộ nhớ, cho phép mỗi tiến trình có thể hoạt động với bộ nhớ ảo của riêng mình mà không cần biết về bộ nhớ vật lý thực sự Bảng trang đóng vai trò quan trọng trong việc quản lý ánh xạ giữa địa chỉ ảo và địa chỉ vật lý.

Hình trên chỉ ra không gian địa chỉ ảo của hai tiến trình X và Y, mỗi tiến trình có một bảng trang riêng Các bảng trang này ánh xạ trang ảo của mỗi tiến trình vào trang vật lý trong bộ nhớ Khung trang áo số 0 của tiến trình X được ánh xạ vào bộ nhớ tại khung trang vật lý số 1 và khung trang ảo số 1 của tiên trình Y được ánh xạ vào khung trang vật lý số 4 Mỗi mục trong bàng trang theo lý thuyết là chứa những thông tin sau :

Cờ Hợp Lệ (Valid Bit): Đây là một bit đánh dấu xem mục trong bảng trang có hợp lệ hay không Nếu cờ này được đặt là 1, nghĩa là mục đó là hợp lệ và có thể sử dụng để ánh xạ địa chỉ ảo Ngược lại, nếu cờ này là 0, mục đó không hợp lệvà không thể sử dụng.

Số Khung Trang Vật Lý (Physical Frame Number): Đây là thông tin quan trọng nhất, xác định số khung trang vật lý mà mục này ánh xạ đến trong bộ nhớ Khi cần truy cập dữ liệu tại một địa chỉ ảo, số khung trang vật lý này sẽ được sử dụng để xác định vị trí trong bộ nhớ vật lý.

Thông Tin Điều Khiển Truy Cập (Access Control Information): Thông tin này mô tả cách mà trang được sử dụng Nó bao gồm các thuộc tính như:

Trang 7

1 Quyền Ghi (Write Permission): Cho biết liệu trang có thể được ghi hay không Nếu được đặt là 1, nghĩa là trang có thể được ghi Ngược lại, nếu là 0, trang chỉ có quyền đọc.

2 Chứa Đoạn Mã Thực Thi (Executable): Xác định xem trang có chứa đoạn mã thực thi hay không Nếu là 1, trang có thể chứa mã thực thi, và nếu là 0, trangkhông chứa mã thực thi.

Thông tin này giúp bộ xử lý quản lý quyền truy cập và kiểm soát việc truy cập vào các trang trong không gian địa chỉ ảo của các tiến trình.

Khi bảng trang được truy cập, số khung trang ảo thường được sử dụng như một địa chỉ offset để xác định vị trí cụ thể trong bảng Trong trường hợp này, nếu khung trang ảo số 5 được sử dụng, nó sẽ tương ứng với phần tử số 6 của bảng trang (bắt đầu từ 0), với giả định rằng số khung trang ảo được sử dụng như là địa chỉ offset.

Điều này giúp bộ xử lý nhanh chóng xác định được mục trong bảng trang tương ứng với địa chỉ ảo mà nó đang xử lý, từ đó có thể trích xuất thông tin cần thiết như số khung trang vật lý và các thuộc tính khác để thực hiện ánh xạ địa chỉ ảo sang địa chỉ vật lý trong bộ nhớ.

Để chuyển từ địa chỉ ảo sang địa chỉ vật lý, bộ xử lý trước hết tiến hành xử lý số khung trang ảo và địa chỉ offset trong trang ảo tương ứng Trong bối cảnh của Mô hình trừu tượng phía trên và giả định kích thước trang là 0x2000 byte, giả sử có một địa chỉ ảo là 0x2194 thuộc không gian địa chỉ ảo của tiến trình Y Bộ xử lý sẽ chuyển địa chỉ này thành địa chỉ offset 0x194 vào khung trang áo số 1.

Bộ xử lý sử dụng số khung trang ảo như một chỉ số để truy xuất vào bảng trang của tiến trình Nếu mục tương ứng trong bảng trang, tại địa chỉ offset đó, là hợp lệ, bộ xử lý sẽ lấy số khung trang vật lý từ mục này Trái lại, nếu mục này không hợp lệ, tiến trình sẽ cố truy cập vào một vùng bộ nhớ ảo không tồn tại Trong tình huống này, bộ xử lý không thể xử lý địa chỉ này và chuyển quyền điều khiển cho hệ điều hành để xử lý lỗi.

Trang 8

Bộ xử lý thông báo lỗi trang cho hệ điều hành khi một tiến trình cố gắng truy cập vào địa chỉ ảo không hợp lệ Hệ điều hành sau đó được thông báo về địa chỉ ảo gây ra lỗi và nguyên nhân của lỗi trang.

Nếu địa chỉ ảo là hợp lệ, bộ xử lý sẽ lấy số khung trang vật lý tương ứng và nhân nó với kích thước trang để xác định địa chỉ của trang cơ sở trong bộ nhớ vật lý Sau đó, bộ xử lý cộng thêm địa chỉ offset để có được địa chỉ vật lý cuối cùng cho lệnh hoặc dữ liệu cần truy cập.

Ví dụ, với khung trang áo số 1 của tiến trình Y ánh xạ đến khung trang vật lý số 4,bắt đầu từ địa chỉ 0x8000 (4 x 0x2000) Khi cộng thêm địa chỉ offset 0x194, ta có địa chỉ vật lý cuối cùng là 0x8194.

Cách ánh xạ địa chỉ ảo và địa chỉ vật lý này cho phép bộ nhớ ảo được ánh xạ vào bộ nhớ vật lý của hệ thống theo bất kỳ thứ tự nào Ví dụ, trong Hình 3, khung trang ảo số 0 của tiến trình X ánh xạ đến khung trang vật lý số 1, trong khi khung trang ảo số 7 ánh xạ đến khung trang vật lý số 0, mặc dù nó có địa chỉ ảo cao hơn khung trang ảo số 0 trong bộ nhớ ảo Điều này làm rõ một điểm thú vị về bộ nhớ ảo: các trang trong bộ nhớ ảo không theo một thứ tự cố định nào khi được hiển thịtrong bộ nhớ vật lý.

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

Một tệp swap được xem xét như một tệp thông thường đối với kernel, không có đặc điểm nổi bật Điều duy nhất quan trọng là nó không chứa bất kỳ vùng trồng nào, điều này là quan trọng để đảm bảo tính hiệu quả khi sử dụng hàm mkswap() Tệp swap thường cần tồn tại trên đĩa cục bộ để đáp ứng yêu cầu của hệthống và kernel khi thực hiện các hoạt động swap.

Bit về các vùng trống là vô cùng quan trọng Tệp swap đặc biệt dành không gian trên đĩa để giúp kernel nhanh chóng đưa trang ra ngoài mà không cần thực hiện mọi bước tìm kiếm disk sector cho một tệp Sự hiện diện của vùng trồng trong một tệp swap có ý nghĩa là không có disk sector được đặt riêng biệt, từ đó kernel không thể sử dụng tệp đó.

Để tạo một tệp swap mà không có vùng trống, bạn có thể sử dụng lệnh sau:

Trang 9

$ dd if=/dev/zero of=/extra-swap bs=1024 count=10241024+0 records in

1024+0 records out

Trong đó, /extra-swap là tên của tệp swap và kích thước được xác định bởi tham số count= Đối với kích thước tốt nhất, bạn nên chọn một bội số của 4, vì kernel thường ghi trang nhớ với kích thước 4 Kbyte Nếu kích thước không phải là bội số của 4, có thể có những phần nhỏ không được sử dụng cuối cùng của tệp swap.

Một phân vùng swap thông thường cũng không có gì đặc biệt Bạn có thể tạo nó giống như các phân vùng khác, nhưng điều khác biệt là nó được sử dụng như một phân vùng thô, không chứa bất kỳ tệp hệ thống nào Phân vùng swap thường được đánh dấu với loại 82 (Linux swap), điều này không làm thay đổi cách kernelhoạt động, nhưng giúp việc liệt kê phân vùng trở nên rõ ràng hơn khi bạn kiểm trathông tin phân vùng trên hệ thống.

Sau khi bạn tạo một phân vùng swap hoặc một tệp swap, bước tiếp theo là ghi một chữ ký lên nơi bắt đầu của nó Chữ ký này chứa thông tin quản lý quan trọng được sử dụng bởi kernel Bạn có thể thực hiện điều này bằng cách sử dụng hàm mkswap(), như sau:

Giới hạn kích thước cho mỗi không gian hoán đổi trong Linux thường được giới hạn là 127MB, tuy nhiên, bạn có thể sử dụng đồng thời tới 8 không gian hoánđổi, nâng tổng kích thước lên đến 1GB Tuy nhiên, thông tin này có thể đã thay

Trang 10

đổi với các phiên bản kernel mới hơn, vì vậy, giới hạn cụ thể có thể thay đổi tùy thuộc vào cấu hình cụ thể của kernel Ví dụ, trên bộ xử lý i386, giới hạn có thể là 2GB.

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

Sau khi tạo một không gian hoán đổi, để sử dụng nó, bạn cần thông báo cho kernel thông qua lệnh swapon Đường dẫn đến không gian hoán đổi được chuyển làm đối số

Ví dụ, để bắt đầu sử dụng một tệp swap tạm thời, bạn có thể sử dụng lệnh:$ swapon /extra-swap

Không gian hoán đổi cũng có thể được tự động sử dụng bằng cách liệt kê chúng trong tệp /etc/fstab Dưới đây là một ví dụ về cách khai báo một phân vùng swap trong tệp /etc/fstab:

/extra-swap none swap sw 0 0

Lệnh swapon -a được sử dụng trong quá trình khởi động để bắt đầu hoán đổi trên tất cả các không gian hoán đổi được liệt kê trong tệp /etc/fstab Do đó, lệnh swapon thường chỉ được sử dụng khi cần thêm không gian hoán đổi.

Để quản lý việc sử dụng không gian hoán đổi, bạn có thể sử dụng lệnh free Lệnh này hiển thị tổng số không gian hoán đổi, không gian đã sử dụng, và không gian còn trống.

$ free

total used free shared buff/cache availableMem: 15152 14896 256 2528 12404 12404Swap: 32452 6684 25768

Để loại bỏ một không gian hoán đổi, bạn có thể sử dụng lệnh swapoff Tuy nhiên, cần lưu ý rằng không nên sử dụng lệnh này trừ khi bạn chắc chắn rằng không gianhoán đổi không còn được sử dụng Điều này có thể kiểm tra bằng lệnh free để đảm bảo có đủ bộ nhớ vật lý trống trước khi loại bỏ không gian hoán đổi.

Trang 11

Tất cả các không gian hoán đổi được sử dụng tự động bằng lệnh swapon -a có thể được loại bỏ đồng thời bằng lệnh swapoff -a Lệnh này tự động tìm kiếm thông tin trong tệp /etc/fstab để xác định và loại bỏ các không gian hoán đổi Các không gian hoán đổi được quản lý thủ công vẫn có thể được loại bỏ bình thường Đôi khi, có thể có nhiều không gian hoán đổi được sử dụng mặc dù có đủ bộ nhớ vật lý trống Điều này có thể xảy ra nếu có nhu cầu hoán đổi tạm thời, nhưng sau đó một tiến trình lớn giải phóng nhiều bộ nhớ vật lý Dữ liệu đã đưa ra sẽ không được đưa vào ngay lập tức, dẫn đến việc bộ nhớ vật lý còn trống một thời gian dài Mặc dù có thể không cần phải lo lắng về điều này, bạn nên hiểu rõ cách hoạt động để hiểu tình trạng hệ thống của mình.

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

Khi xác định kích thước không gian hoán đổi, quá trình này không chỉ là về việc đặt một con số gấp đôi bộ nhớ vật lý Dưới đây là một phân tích chi tiết để xác định kích thước không gian hoán đổi một cách hiệu quả:

 Sử dụng tổng bộ nhớ dự kiến từ bước 2 và trừ đi bộ nhớ vật lý trên hệ thống Kết quả sẽ là kích thước không gian hoán đổi cần thiết.

Trang 12

4 Kiểm tra và điều chỉnh:

 Nếu kích thước không gian hoán đổi tính toán lớn hơn hai lần bộ nhớ vật lý, đây có thể là dấu hiệu của việc sử dụng quá mức không gian hoán đổi Trong trường hợp này, nên xem xét việc nâng cấp RAM để cải thiện hiệu suất hệ thống.

5 Dựa trên hiệu suất thực tế:

 Sử dụng công cụ giám sát như vmstat để theo dõi hiệu suất hệ thống thực tế, đặc biệt là các hoạt động liên quan đến không gian hoán đổi.

 Dựa vào thông tin này để điều chỉnh kích thước không gian hoán đổi nếu cần thiết.

Tóm lại, việc xác định kích thước không gian hoán đổi là một quá trình động và yêu cầu sự hiểu biết vững về yêu cầu của hệ thống cũng như môi trường chạy các ứng dụng và dịch vụ.

Ngày đăng: 23/07/2024, 17:20

w