Bộ nhớ ảo trong hệ điều hành: Là gì, phân trang theo yêu cầu, ưu điểm
⚡ Tóm tắt thông minh
Bộ nhớ ảo là một cơ chế lưu trữ tạo cho người dùng ảo giác về một bộ nhớ chính lớn bằng cách coi một phần bộ nhớ phụ như RAM. Nó cho phép các tiến trình lớn hơn bộ nhớ vật lý chạy và được triển khai bằng cách sử dụng phân trang theo yêu cầu.
Bộ nhớ ảo là gì?
Bộ nhớ ảo Bộ nhớ ảo là một cơ chế lưu trữ tạo cho người dùng ảo giác về việc có một bộ nhớ chính rất lớn. Điều này được thực hiện bằng cách coi một phần bộ nhớ phụ như bộ nhớ chính. Trong bộ nhớ ảo, người dùng có thể lưu trữ các tiến trình với kích thước lớn hơn bộ nhớ chính hiện có.
Do đó, thay vì tải một tiến trình dài vào bộ nhớ chính, HĐH sẽ tải các phần khác nhau của nhiều tiến trình vào bộ nhớ chính. Bộ nhớ ảo chủ yếu được triển khai với phân trang theo nhu cầu và phân khúc theo nhu cầu.
Tại sao cần bộ nhớ ảo?
Dưới đây là những lý do nên sử dụng bộ nhớ ảo:
- Mỗi khi máy tính của bạn không còn dung lượng trống trong bộ nhớ vật lý, nó sẽ ghi những gì cần nhớ vào ổ cứng dưới dạng tệp hoán đổi (swap file) như bộ nhớ ảo.
- Nếu một máy tính đang chạy Windows Khi cần nhiều bộ nhớ/RAM hơn dung lượng đã được cài đặt trong hệ thống, nó sẽ sử dụng một phần nhỏ ổ cứng cho mục đích này.
Bộ nhớ ảo hoạt động như thế nào?
Trong thế giới hiện đại, bộ nhớ ảo đã trở nên khá phổ biến. Nó được sử dụng khi cần tải một số trang dữ liệu vào bộ nhớ chính để thực thi, nhưng bộ nhớ chính không đủ chỗ cho số lượng trang đó.
Vì vậy, trong trường hợp đó, thay vì ngăn các trang dữ liệu đi vào bộ nhớ chính, hệ điều hành sẽ tìm kiếm không gian RAM được sử dụng tối thiểu trong thời gian gần đây, hoặc không được tham chiếu, và chuyển nó vào bộ nhớ phụ để tạo không gian cho các trang dữ liệu mới trong bộ nhớ chính.
Hãy để chúng tôi hiểu quản lý bộ nhớ ảo với sự giúp đỡ của một ví dụ.
Ví dụ
Giả sử hệ điều hành cần 300 MB bộ nhớ để lưu trữ tất cả các chương trình đang chạy. Tuy nhiên, hiện tại chỉ có 50 MB bộ nhớ vật lý khả dụng trên RAM.
- Hệ điều hành sau đó sẽ thiết lập 250 MB bộ nhớ ảo và sử dụng một chương trình gọi là Trình quản lý bộ nhớ ảo (VMM) để quản lý 250 MB đó.
- Vì vậy, trong trường hợp này, VMM sẽ tạo một tệp trên ổ cứng có kích thước 250 MB để lưu trữ lượng bộ nhớ bổ sung cần thiết.
- Hệ điều hành sẽ tiếp tục truy cập bộ nhớ như thể nó đang lưu trữ 300 MB bộ nhớ thực trong RAM, ngay cả khi chỉ có 50 MB dung lượng khả dụng.
- Nhiệm vụ của VMM là quản lý 300 MB bộ nhớ ngay cả khi chỉ có 50 MB dung lượng bộ nhớ thực khả dụng.
Phân trang theo yêu cầu là gì?
Cơ chế phân trang theo yêu cầu rất giống với cơ chế hệ thống phân trang với trao đổipingTrong đó, các tiến trình được lưu trữ trong bộ nhớ phụ và các trang chỉ được tải khi cần thiết, chứ không phải tải trước.
Vì vậy, khi xảy ra chuyển đổi ngữ cảnh, hệ điều hành không bao giờ sao chép bất kỳ trang nào của chương trình cũ từ đĩa hoặc bất kỳ trang nào của chương trình mới vào bộ nhớ chính. Thay vào đó, nó sẽ bắt đầu thực thi chương trình mới sau khi tải trang đầu tiên và lấy các trang của chương trình được tham chiếu.
Trong quá trình thực thi chương trình, nếu chương trình tham chiếu đến một trang có thể không còn khả dụng trong bộ nhớ chính vì đã bị hoán đổi ra khỏi bộ nhớ, thì bộ xử lý sẽ coi đó là một tham chiếu bộ nhớ không hợp lệ. Điều này là do lỗi trang (page fault) chuyển quyền điều khiển trở lại từ chương trình cho hệ điều hành, hệ điều hành sẽ yêu cầu lưu trữ trang đó trở lại bộ nhớ.
Các loại phương pháp thay thế trang
Dưới đây là một số phương pháp thay thế trang quan trọng:
- FIFO
- Thuật toán tối ưu
- Thay thế trang LRU
Thay thế trang FIFO
FIFO (Nhập trước xuất trước) là phương pháp thực hiện đơn giản. Trong phương pháp này, bộ nhớ chọn trang thay thế đã ở địa chỉ ảo của bộ nhớ lâu nhất.
Tính năng
- Mỗi khi một trang mới được tải, trang đã nằm trong bộ nhớ lâu nhất sẽ bị xóa. Vì vậy, việc quyết định trang nào cần xóa rất dễ dàng, vì số nhận dạng của nó luôn nằm ở đầu ngăn xếp FIFO.
- Trang bộ nhớ cũ nhất trong bộ nhớ chính là trang cần được chọn để thay thế trước tiên.
Thuật toán tối ưu
Phương pháp thay thế trang tối ưu sẽ chọn trang đó để thay thế mà thời gian đến lần tham chiếu tiếp theo là dài nhất.
Tính năng
- Thuật toán tối ưu dẫn đến số lỗi trang ít nhất. Thuật toán này khó triển khai.
- Thuật toán thay thế trang tối ưu có tỷ lệ lỗi trang thấp nhất trong tất cả các thuật toán. Thuật toán này tồn tại và nên được gọi là MIN hoặc OPT.
- Thay thế trang không có khả năng được sử dụng trong thời gian dài. Chức năng này chỉ tiêu tốn thời gian khi trang đó cần được sử dụng.
Thay thế trang LRU
LRU là viết tắt của Least Recently Used page (Trang được sử dụng ít nhất gần đây). Phương pháp này giúp hệ điều hành tìm ra mức độ sử dụng trang trong một khoảng thời gian ngắn. Thuật toán này cần được triển khai bằng cách gán một bộ đếm cho mỗi trang.
Cách sử dụng?
- Trang bộ nhớ chính không được sử dụng trong thời gian dài nhất sẽ là trang được chọn để thay thế.
- Dễ thực hiện, giữ danh sách, thay thế các trang bằng cách nhìn lại thời gian.
Tính năng
- Phương pháp thay thế LRU có số lượng cao nhất. Bộ đếm này còn được gọi là thanh ghi lão hóa, xác định tuổi thọ và số lần các trang liên quan cần được tham chiếu.
- Trang bộ nhớ chính không được sử dụng trong thời gian dài nhất là trang cần được chọn để thay thế.
- Nó cũng giữ một danh sách và thay thế các trang bằng cách nhìn lại thời gian.
Tỷ lệ lỗi
Tỷ lệ lỗi là tần suất mà một hệ thống hoặc linh kiện được thiết kế bị hỏng. Nó được biểu thị bằng số lần hỏng trên một đơn vị thời gian. Nó được ký hiệu bằng chữ cái Hy Lạp λ (lambda).
Ưu điểm của bộ nhớ ảo
Dưới đây là những ưu điểm/lợi ích của việc sử dụng bộ nhớ ảo:
- Bộ nhớ ảo giúp tăng tốc độ khi chỉ cần một phân đoạn cụ thể của chương trình để thực thi chương trình.
- Nó rất hữu ích trong việc thực hiện một môi trường đa chương trình.
- Nó cho phép bạn chạy nhiều ứng dụng cùng một lúc.
- Nó giúp bạn ghép nhiều chương trình lớn vào các chương trình nhỏ hơn.
- Dữ liệu hoặc mã chung có thể được chia sẻ giữa các bộ nhớ.
- Một tiến trình thậm chí có thể trở nên lớn hơn toàn bộ bộ nhớ vật lý.
- Dữ liệu/mã nguồn cần được đọc từ đĩa khi cần thiết.
- Mã có thể được đặt ở bất cứ đâu trong bộ nhớ vật lý mà không cần phải di chuyển.
- Cần duy trì nhiều tiến trình hơn trong bộ nhớ chính, điều này làm tăng hiệu quả sử dụng CPU.
- Mỗi trang được lưu trữ trên đĩa cho đến khi cần sử dụng, sau đó nó sẽ bị xóa.
- Nó cho phép nhiều ứng dụng được chạy cùng lúc.
- Không có giới hạn cụ thể về mức độ đa chương trình.
- Nên viết các chương trình có dung lượng lớn, vì không gian địa chỉ ảo có sẵn lớn hơn so với bộ nhớ vật lý.
Nhược điểm của bộ nhớ ảo
Dưới đây là những nhược điểm/bất lợi khi sử dụng bộ nhớ ảo:
- Ứng dụng có thể chạy chậm hơn nếu hệ thống đang sử dụng bộ nhớ ảo.
- Việc chuyển đổi giữa các ứng dụng có thể tốn nhiều thời gian hơn.
- Nó cung cấp ít dung lượng ổ cứng hơn để bạn sử dụng.
- Nó làm giảm sự ổn định của hệ thống.
- Nó cho phép các ứng dụng lớn hơn chạy trên các hệ thống không cung cấp đủ RAM vật lý để vận hành chúng.
- Nó không mang lại hiệu năng tương đương với RAM.
- Nó ảnh hưởng tiêu cực đến hiệu suất tổng thể của một hệ thống.
- Nó chiếm dung lượng lưu trữ, vốn có thể được sử dụng cho việc lưu trữ dữ liệu dài hạn.


