Lỗi trang page fault đối với bộ nhớ ảo

Virtual Memory là một sơ đồ lưu trữ cung cấp cho người dùng ảo 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 của bộ nhớ phụ là bộ nhớ chính.

Trong lược đồ này, Người dùng có thể tải các tiến trình có kích thước lớn hơn bộ nhớ chính khả dụng bằng cách ảo hóa rằng bộ nhớ có sẵn để tải tiến trình.

Các bài viết liên quan:

Thay vì tải một tiến trình lớn trong bộ nhớ chính, Hệ điều hành sẽ tải các phần khác nhau của nhiều tiến trình trong bộ nhớ chính.

Bằng cách này, mức độ đa chương trình sẽ được tăng lên và do đó, việc sử dụng CPU cũng sẽ tăng lên.

Virtual Memory hoạt động như thế nào?

Nói cách hiện đại, ngày nay Virtual Memory đã trở nên khá phổ biến. Trong lược đồ này, bất cứ khi nào một số trang cần được tải vào bộ nhớ chính để thực thi và bộ nhớ không có sẵn cho nhiều trang đó, thì trong trường hợp đó, thay vì ngăn các trang nhập vào bộ nhớ chính, hệ điều hành tìm kiếm vùng RAM ít được sử dụng nhất trong thời gian gần đây hoặc không được tham chiếu và sao chép vùng đó vào bộ nhớ phụ để tạo không gian cho các trang mới trong bộ nhớ chính.

Vì tất cả quy trình này diễn ra tự động, do đó nó làm cho máy tính có cảm giác như nó đang có RAM không giới hạn.

Xem thêm Page table trong hệ điều hành

Quản lý Virtual Memory

Quản lý Virtual Memory là quá trình của hệ điều hành để quản lý và điều phối việc sử dụng bộ nhớ ảo trong hệ thống. Dưới đây là một số khái niệm và cơ chế quản lý Virtual Memory trong hệ điều hành:

  1. Phân trang [Paging]: Hệ điều hành chia bộ nhớ vật lý và bộ nhớ ảo thành các trang nhỏ cố định có kích thước giống nhau. Mỗi trang có một địa chỉ ảo và một địa chỉ vật lý tương ứng. Việc phân trang cho phép hệ điều hành quản lý bộ nhớ linh hoạt hơn và tăng cường hiệu suất.
  2. Phân đoạn [Segmentation]: Hệ điều hành chia bộ nhớ vật lý và bộ nhớ ảo thành các đoạn lớn có kích thước khác nhau, tương ứng với các thành phần hoặc quy trình trong hệ thống. Mỗi đoạn có một địa chỉ ảo và một địa chỉ vật lý.
  3. Bảng trang [Page Table]: Hệ điều hành sử dụng bảng trang để ánh xạ địa chỉ ảo sang địa chỉ vật lý tương ứng. Bảng trang bao gồm các mục nhập cho mỗi trang, bao gồm địa chỉ trang ảo, địa chỉ trang vật lý, và các thông tin khác như quyền truy cập.
  4. Swap space: Swap space là một phần không gian trên đĩa cứng được sử dụng để lưu trữ các trang bộ nhớ không sử dụng tạm thời. Khi bộ nhớ vật lý cạn kiệt, các trang không sử dụng có thể được chuyển vào swap space để giải phóng bộ nhớ vật lý cho các tác vụ khác.
  5. Thay thế trang [Page Replacement]: Khi bộ nhớ vật lý cạn kiệt, hệ điều hành sẽ thực hiện các chiến lược thay thế trang để lựa chọn trang nào được chuyển vào swap space và giải phóng bộ nhớ vật lý. Các chiến lược thay thế trang như LRU [Least Recently Used] hoặc FIFO [First-In-First-Out] được sử dụng để quyết định trang nào sẽ bị thay thế.
  6. Đối tượng hoạt động [Working Set]: Đối tượng hoạt động là tập hợp các trang mà quy trình hiện tại cần để hoạt động hiệu quả. Hệ điều hành sẽ cố gắng giữ cho đối tượng hoạt động nằm trong bộ nhớ vật lý để tránh truy cập đến swap space, giảm thời gian truy cập và tăng hiệu suất.

Tùy thuộc vào cơ chế và chiến lược quản lý, hệ điều hành sẽ cân nhắc việc phân trang và phân đoạn, quản lý bảng trang, quản lý swap space và thực hiện các chiến lược thay thế trang để tối ưu hóa việc sử dụng Virtual Memory và đáp ứng nhu cầu của quy trình và ứng dụng trong hệ thống.

Xem thêm Giao thức Mạng trong TCP/IP

Xử lý lỗi trang trong Virtual Memory

Trong Virtual Memory, xử lý lỗi trang [Page Fault] xảy ra khi một quy trình yêu cầu truy cập vào một trang bộ nhớ ảo nhưng trang đó không tồn tại trong bộ nhớ vật lý. Điều này có thể xảy ra khi trang bị chuyển vào swap space hoặc chưa được tải lên bộ nhớ vật lý từ đĩa cứng.

Khi xảy ra lỗi trang, hệ điều hành thực hiện các bước để xử lý nó:

  1. Interrupt: Quá trình yêu cầu truy cập vào trang bị gửi một ngắn gọi hệ thống [system call] để thông báo cho hệ điều hành về lỗi trang. Hệ điều hành tạo ra một interrupt để xử lý yêu cầu này.
  2. Handler lỗi trang [Page Fault Handler]: Interrupt gọi tới một handler lỗi trang, mà là một phần của hệ điều hành. Handler này kiểm tra trạng thái của trang và quyết định cách xử lý tiếp theo.
  3. Kiểm tra trạng thái trang: Handler lỗi trang kiểm tra trạng thái của trang để xác định lý do lỗi trang. Có thể có các trạng thái như trang không tồn tại, trang không được phép truy cập, hoặc trang không có trong bộ nhớ vật lý.
  4. Swap in hoặc tải trang từ đĩa cứng: Nếu trang không tồn tại trong bộ nhớ vật lý, hệ điều hành cần chuyển trang từ swap space hoặc tải trang từ đĩa cứng lên bộ nhớ vật lý. Quá trình này có thể yêu cầu di chuyển các trang khác khỏi bộ nhớ vật lý để tạo không gian cho trang mới.
  5. Cập nhật bảng trang: Sau khi trang được chuyển vào bộ nhớ vật lý, bảng trang được cập nhật để ánh xạ địa chỉ ảo tới địa chỉ vật lý của trang mới.
  6. Tiếp tục thực thi: Sau khi xử lý lỗi trang, quá trình tiếp tục thực hiện truy cập vào trang và hoạt động như bình thường.

Quá trình xử lý lỗi trang là một phần quan trọng trong quản lý Virtual Memory, giúp hệ điều hành quản lý và điều phối việc sử dụng bộ nhớ ảo.

Xem thêm Cách Run android App trong android studio

Ví dụ hệ thống quản lý Virtual Memory

Giả sử 2 quy trình, P1 và P2, mỗi quy trình gồm 4 trang. Kích thước mỗi trang là 1 KB. Bộ nhớ chính chứa 8 khung, mỗi khung 1 KB. Hệ điều hành nằm trong hai phân vùng đầu tiên. Trong phân vùng thứ ba, trang thứ nhất của P1 được lưu trữ và các khung khác cũng được hiển thị như được lấp đầy bởi các trang khác nhau của quá trình trong bộ nhớ chính.

Các bảng trang của cả hai trang đều có kích thước 1 KB và do đó chúng có thể nằm gọn trong một khung mỗi trang. Các bảng trang của cả hai quy trình chứa nhiều thông tin khác nhau cũng được hiển thị trong hình ảnh.

CPU chứa một thanh ghi có địa chỉ cơ sở của bảng trang là 5 trong trường hợp P1 và 7 trong trường hợp P2. Địa chỉ cơ sở của bảng trang này sẽ được thêm vào số trang của địa chỉ Lôgic khi truy cập vào mục nhập tương ứng thực tế.

Lợi ích của Virtual Memory

Virtual Memory trong hệ điều hành đem lại nhiều lợi ích quan trọng. Dưới đây là một số lợi ích chính của Virtual Memory:

  1. Mở rộng khả năng sử dụng bộ nhớ: Virtual Memory cho phép hệ điều hành sử dụng một phần không gian đĩa cứng như bộ nhớ ảo, làm tăng khả năng lưu trữ và sử dụng bộ nhớ của hệ thống. Điều này giúp xử lý các ứng dụng và dữ liệu có kích thước lớn hơn so với dung lượng bộ nhớ RAM vật lý.
  2. Tận dụng hiệu quả bộ nhớ物理: Virtual Memory cho phép hệ điều hành đưa các phần của chương trình và dữ liệu không sử dụng tạm thời từ bộ nhớ vật lý vào đĩa cứng, giải phóng bộ nhớ để sử dụng cho các tác vụ khác. Điều này giúp tối ưu hóa việc sử dụng bộ nhớ và tăng hiệu suất hệ thống.
  3. Hỗ trợ chia sẻ bộ nhớ: Virtual Memory cho phép nhiều quy trình chạy cùng một lúc chia sẻ cùng một không gian địa chỉ ảo, mà không cần phải cung cấp bộ nhớ vật lý riêng biệt cho mỗi quy trình. Điều này giúp tiết kiệm tài nguyên và tăng khả năng chạy đa nhiệm của hệ điều hành.
  4. Bảo vệ bộ nhớ và ứng dụng: Virtual Memory cung cấp cơ chế bảo vệ bộ nhớ, ngăn chặn các quy trình hoặc ứng dụng không được phép truy cập vào vùng nhớ của nhau. Nó cũng cung cấp khả năng kiểm soát và giám sát quyền truy cập bộ nhớ của các quy trình, đảm bảo tính riêng tư và an toàn dữ liệu.
  5. Hỗ trợ xử lý lỗi trang: Virtual Memory cung cấp cơ chế xử lý lỗi trang, cho phép hệ điều hành xử lý các lỗi xảy ra khi truy cập vào các trang bộ nhớ ảo không tồn tại trong bộ nhớ vật lý. Điều này giúp đảm bảo tính ổn định và sẵn sàng hoạt động của hệ thống.
  6. Hỗ trợ cải thiện hiệu suất: Virtual Memory cho phép hệ điều hành tăng cường hiệu suất bằng cách sắp xếp và quản lý thông tin trong bộ nhớ theo các cơ chế như phân trang và phân đoạn. Điều này giúp giảm thời gian truy cập bộ nhớ và tăng tốc độ xử lý của hệ thống.

Tóm lại, Virtual Memory trong hệ điều hành mang lại nhiều lợi ích quan trọng như mở rộng khả năng sử dụng bộ nhớ, tận dụng hiệu quả bộ nhớ, hỗ trợ chia sẻ bộ nhớ, bảo vệ bộ nhớ và ứng dụng, hỗ trợ xử lý lỗi trang, và cải thiện hiệu suất hệ thống.

Chủ Đề