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.

  • 🧠 Định nghĩa: Bộ nhớ ảo xử lý một phần bộ nhớ phụ như bộ nhớ chính để chạy các tiến trình lớn hơn.
  • 🎯 Tại sao cần thiết: Nó cung cấp thêm bộ nhớ khi RAM vật lý không đủ, bằng cách sử dụng tệp hoán đổi trên ổ đĩa.
  • 📥 Thông báo theo yêu cầu: Các trang dữ liệu chỉ được tải từ đĩa vào RAM khi chúng thực sự được tham chiếu.
  • 🔁 Thay thế trang: FIFO, Optimal và LRU quyết định trang nào sẽ bị xóa khi xảy ra lỗi trang.
  • Lợi thế: Hỗ trợ đa chương trình và cho phép các chương trình vượt quá dung lượng bộ nhớ vật lý.
  • ⚠️ Hạn chế: Nó chậm hơn RAM và có thể làm giảm hiệu năng tổng thể của hệ thống.

Bộ nhớ ảo trong hệ điều hành

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ì?

Phân trang theo yêu cầu

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.

Câu Hỏi Thường Gặp

Lỗi truy cập trang (page fault) xảy ra khi một chương trình tham chiếu đến một trang hiện không có trong bộ nhớ chính. Hệ điều hành tạm dừng chương trình, lấy trang cần thiết từ đĩa vào RAM, cập nhật bảng trang, và sau đó tiếp tục thực thi.

Hiện tượng giật cục xảy ra khi hệ thống dành nhiều thời gian hơn cho việc hoán đổi dữ liệu.ping Số trang giữa RAM và ổ đĩa nhiều hơn số trang đang được thực thi bởi các tiến trình. Điều này là do mức độ đa chương trình quá cao và làm giảm hiệu năng nghiêm trọng. Giảm số tiến trình đang hoạt động hoặc thêm RAM sẽ giúp khắc phục vấn đề này.

RAM là phần cứng vật lý tốc độ cao, nơi lưu trữ dữ liệu hoạt động. Bộ nhớ ảo là một kỹ thuật mở rộng RAM bằng cách sử dụng không gian ổ đĩa như thể đó là bộ nhớ. Bộ nhớ ảo có dung lượng lớn hơn nhiều nhưng tốc độ chậm hơn nhiều so với RAM thực.

Trí tuệ nhân tạo (AI) có thể học các mẫu truy cập bộ nhớ của một chương trình và dự đoán những trang nào sẽ cần thiết trong thời gian tới. Điều này cho phép hệ điều hành giữ lại các trang hữu ích trong RAM và loại bỏ những trang không cần thiết, tiến gần hơn đến thuật toán tối ưu lý tưởng và giảm lỗi trang.

Đúng vậy. Bằng cách phân tích các chuỗi truy cập trước đó, các mô hình AI có thể tải trước các trang trước khi chúng được yêu cầu và điều chỉnh mức độ chuyển đổi giữa các trang. Điều này giúp giảm lỗi trang và hiện tượng "thrashing" (hiện tượng truy cập quá tải), mặc dù sai số dự đoán và chi phí hoạt động phải được giữ ở mức thấp.

Tóm tắt bài viết này với: