Trao đổi quản lý không gian trong phân trang nhu cầu thuần túy


12

Sau đây là một nghi ngờ mà tôi đã gặp khi làm bài tập về hệ điều hành tại nhà - tuy nhiên, nó có vẻ dựa trên khái niệm hơn là một câu hỏi mã hóa đơn giản, vì vậy IMHO tôi không nghĩ thẻ bài tập về nhà phù hợp cho việc này.

Trong sơ đồ phân trang theo yêu cầu thuần túy cho nhiều tiến trình chạy cùng một lúc, với một lượng RAM và bộ nhớ Hoán đổi cố định, điều gì xảy ra trong 2 trường hợp sau sẽ ghi lại không gian hoán đổi, khi

  1. Một quá trình gặp lỗi trang và không có khung miễn phí trong RAM, do đó yêu cầu một trong các trang từ đoạn Kernel Frames của quá trình được viết ra để trao đổi (để đơn giản, tôi không xem xét việc sao chép -on-viết trường hợp). Rõ ràng, khung này sẽ được viết ở đâu trong không gian Hoán đổi và cấu trúc dữ liệu nào cần được cập nhật cho điều đó?

  2. Khi một quá trình cần trang - trong một trang cụ thể, nó sẽ tìm ở đâu trong bộ nhớ Hoán đổi và làm thế nào để biết trang đó có xuất hiện trong Hoán đổi không?

Như bạn có thể tưởng tượng, tôi gặp khó khăn trong việc hiểu cách quản lý không gian Hoán đổi trong sơ đồ quản lý nhu cầu thuần túy và cấu trúc dữ liệu nào sẽ là thiết yếu. Sẽ thật tuyệt nếu bạn có thể tham khảo bất kỳ liên kết nào trong câu trả lời của mình (Tôi đã tìm kiếm trong "Khái niệm hệ điều hành - phiên bản thứ 8 của Silberschatz, tôi không thể tìm thấy câu trả lời rõ ràng cho câu hỏi của mình).


3
Một câu hỏi CS cốt lõi tốt đẹp!
Dave Clarke

Câu trả lời:


8

Để trả lời câu hỏi này, tôi sẽ truy cập một số hiểu biết tiên quyết. Phân trang nhu cầu thuần túy không thể được thực hiện mà không cần hỗ trợ phần cứng. Tất cả các kiến ​​trúc máy tính hiện đại đều hỗ trợ phân trang, tuy nhiên nhiều thiết bị có các chi tiết triển khai khác nhau.

Bộ xử lý x86 sử dụng cái được gọi là bảng trang để theo dõi không gian địa chỉ ảo và ánh xạ trang, cũng như các bit về quyền riêng tư truy cập và, có liên quan hơn, cho dù trang đó có hiện diện trong bộ nhớ vật lý hay không. Vi phạm kích hoạt lỗi trang bị hệ điều hành bẫy.

Để biết thêm thông tin về điều đó, xem bài viết này .

Để trả lời câu hỏi hoán đổi trang, trước tiên chúng ta phải truy cập câu hỏi về cách hệ điều hành theo dõi những trang nào được sử dụng bởi quy trình nào và cách chúng được phân bổ. Có nhiều cấu trúc dữ liệu khác nhau có thể được sử dụng cho việc đó. Một mảng bit phẳng đánh dấu xem một khung có được phân bổ hay không là một cách. Danh sách liên kết hoặc ngăn xếp là một cái khác. Với phân trang theo yêu cầu thuần túy, các trang được phân bổ không thực sự được đánh dấu như hiện tại khi chúng được phân bổ. Điều này có tác dụng là không có ram vật lý nào được đặt sang một quy trình cho đến khi nó thực sự ghi vào nó. Khi đã xảy ra, phần cứng sẽ đưa ra một lỗi mà HĐH mắc phải, và sau đó HĐH sẽ sử dụng thuật toán hoán đổi nếu không có các trang vật lý có sẵn để gán cho trang ảo đã được phân bổ.

Để biết thêm thông tin về phân bổ khung trang, xem tại đây . Ở đó bạn sẽ thấy một cái nhìn tổng quan về một số cơ sở dữ liệu phù hợp.

Khi một thuật toán phù hợp để phân bổ trang được triển khai, một thuật toán khác để phân bổ không gian đĩa cho việc hoán đổi phải được chọn. Windows, như một ví dụ, trong lịch sử đã sử dụng một tệp phẳng trong hệ thống tệp để hoán đổi trang. Tôi sẽ tưởng tượng rằng đối với mỗi nút trong cơ sở hạ tầng theo dõi các trang được phân bổ, có một con trỏ được gán cho một phần bù trong tệp, cho biết vị trí của trang trong đĩa. Theo truyền thống, các hệ điều hành giống như Unix thường sử dụng các phân vùng riêng để hoán đổi trang, nhanh hơn nhiều vì không có lớp hệ thống tập tin.

Cũng có thể tách các cơ sở dữ liệu hoán đổi từ các thuật toán phân bổ, tuy nhiên hai thuật toán này có liên quan với nhau nên điều này có thể không thường xuyên được thực hiện.

Tôi hy vọng rằng câu trả lời cho câu hỏi của bạn bất chấp sự ngắn gọn tương đối mà tôi đã đối xử với nó. Tôi thấy rằng cách tốt nhất để tìm hiểu về các hệ điều hành là đi sâu vào các chi tiết cụ thể về kiến ​​trúc đôi khi khó chịu có thể tìm thấy trong các trang web như wiki.osdev.org và www.osdever.net, đặc biệt liên quan đến việc tạo ra hệ điều hành sở thích và cung cấp các hướng dẫn tuyệt vời trên các chi tiết như vậy.


Vâng, bây giờ tôi hiểu làm thế nào các chi tiết về cấu trúc dữ liệu, vv có thể khác nhau giữa các hệ điều hành - +1 cho các liên kết đến osdev.org!
TCSGrad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.