Professional Documents
Culture Documents
Bộ nhớ ảo full 1
Bộ nhớ ảo full 1
- Bít M (Modify): Cho biết nội dung của trang tương ứng có bị
thay đổi hay không so với lần nạp gần đây nhất. Nếu nó không bị
thay đổi thì việc phải ghi lại nội dung của một trang khi cần phải
đưa một trang ra lại bộ nhớ ngoài là không cần thiết, điều này
giúp tăng tốc độ trong các thao tác thay thế trang trong khung
trang.
- Các bít điều khiển khác: Các bít này phục vụ cho các mục đích
bảo vệ trang và chia sẻ các khung trang.
3.1.2. Chuyển đổi địa chỉ trong hệ thống phân trang:
* Chương trình của người sử dụng sử dụng địa chỉ logic hoặc virtual
gồm: page number và offset để truy xuất dữ liệu trên bộ nhớ chính. Bộ phận
quản lý bộ nhớ phải chuyển địa chỉ virtual này thành địa chỉ vật lý tương ứng
bao gồm: page number và offset. Để thực hiện việc này bộ phận quản lý bộ
nhớ phải dựa vào bảng trang (PCT)
2. Tìm một page không hoạt động hoặc không thực sự cần thiết tại
thờ điểm hiện tại để đưa nó ra đĩa, lấy frame trống đó để nạp page mà
hệ thống vừa cần truy xuất. Page bị swap out sẽ được hệ điều hành
swap in trở lại bộ nhớ tại một thời điểm thích hợp sau này.
3. Cập nhật PCT của tiến trình có page vừa bị đổi chỗ
4. Nạp trang vừa tìm thấy ở trên (bước 1) vào frame trống ở trên
(bước 2).
5. Cập nhật lại bảng trang (PCT) của tiến trình.
6. Tái kích hoạt tiến trình để tiến trình tiếp tục hoạt động.
3.1.3. Một số vấn đề cần chú ý khi xử lý lỗi trang :
- Nên chọn trang nào trong số các trang trên bộ nhớ chính để đổi chỗ:
- “Neo” một số trang.
- Phải tránh được trường hợp hệ thống xảy ra hiện tượng “trì trệ hệ
thống”.
- Đánh dấu các trang bị thay đổi.
không.
3.2.3. Một số thuật lợi của phân đoạn không gian địa chỉ.
1. Nó đơn giản để điều khiển các cấu trúc dữ liệu lớn dần (growing)
trong quá trình hoạt động của hệ thống. Nếu người lập trình không biết trước
dữ liệu sẽ lớn đến chừng nào tại thời điểm chạy thì việc ấn định kích thước
của động cho segment mang lại nhiều thuận lợi cho người lập trình.
2. Nó cho phép các chương trình không phụ thuộc vào sự thay đổi vào
sự biên dịch lại. Nó không yêu cầu thiết lập lại toàn bộ chương trình khi
chương trình được liên kết hoặc được nạp trở lại. Việc này chỉ có thể thực
hiện bằng cách sử dụng nhiều phân đoạn (Multiple Segment).
3. Nó thích hợp với chiến lược chia sẻ segment giữa các tiến trình.
Người lập trình có thể đặt một chương trình tiện ích hoặc một bảng dữ liệu
thường sử dụng vào một segment mà có thể được tham chiếu bởi nhiều tiến
trình khác nhau.
4. Nó thích hợp với chiến lược bảo vệ bộ nhớ. Bởi vì một segment có
thể được sinh ra để chứa một tập xác định các thủ tục hoặc dữ liệu, sau đó
người lập trình hoặc người quản trị hệ thống có thể gán quyền truy cập với các
độ ưu tiên thích hợp nào đó
- Bộ nhớ ảo cho phép một tiến trình tạo một vùng bộ nhớ mà nó có thể
chia sẻ với một tiến trình khác. Các tiến trình chia sẻ vùng này coi nó là một
phần của không gian địa chỉ ảo của chúng
- Tăng tốc độ tạo quy trình.
5. Hạn chế:
- Bộ nhớ ảo sẽ xử lý và truy cập lâu hơn so với bộ nhớ vật lý.
- Sẽ tốn nhiều thời gian để tải các ứng dụng được lưu trữ ảo khi máy
tính chuyển đổi giữa bộ nhớ ảo và bộ nhớ vật lý.
- Những máy có ram thấp có thể bị giật, đó là khi máy liên tục chuyển
đổi giữa bộ nhớ ảo vả bộ nhớ vật lý. Điều này có thẻ làm chậm máy tính, gây
ra sự chạm trễ về hiệu suất.
- Làm giảm dung lượng ổ cứng khả dụng và làm giảm tuổi thọ của ổ
cứng.
- Làm giảm tính ổn định của hệ thống và hệ suất tổng thể.
6. Tổng kết
Bộ nhớ ảo là một kỹ thuật cho phép chúng ta ánh xạ một không gian địa chỉ
logic lớn vào một bộ nhớ vật lý nhỏ hơn. Bộ nhớ ảo cho phép chúng ta chạy
các tiến trình cực kỳ lớn và tăng độ đa nhiệm, tăng sử dụng CPU. Hơn nữa, nó
giúp các nhà lập trình ứng dụng không phải lo lắng về sẵn có bộ nhớ. Ngoài
ra, với bộ nhớ ảo, một số tiến trình có thể chia sẻ thư viện và bộ nhớ của hệ
thống.
Bộ nhớ ảo thường được thực hiện bằng phân trang theo yêu cầu. Phân trang
theo yêu cầu không đưa trang vào bộ nhớ cho đến khi trang đó được tham
chiếu. Việc tham chiếu đầu tiên gây ra lỗi trang cho hệ điều hành. Nhân hệ
điều hành sẽ tra bảng nội bộ để xác định trang đó được đặt ở đâu trên khối lưu
trữ. Sau đó, nó tìm một khung trống và đọc trang vào từ khối lưu trữ. Bảng
trang được cập nhật để phản ánh sự thay đổi này, và chỉ thị gây ra lỗi trang
được khởi động lại. Phương pháp này cho phép một tiến trình chạy ngay cả
khi toàn bộ hình ảnh bộ nhớ của nó không nằm trong bộ nhớ chính cùng lúc.
Miễn là tỷ lệ lỗi trang đủ thấp, hiệu suất là chấp nhận được.
Chúng ta có thể sử dụng phân trang theo yêu cầu để giảm số khung được cấp
cho một tiến trình. Sắp xếp này có thể tăng độ đa nhiệm (cho phép nhiều tiến
trình có sẵn để thực thi cùng một lúc) và trong lý thuyết ít nhất là tăng sử dụng
CPU của hệ thống. Nó cũng cho phép các tiến trình được chạy ngay cả khi yêu
cầu bộ nhớ của chúng vượt quá tổng bộ nhớ vật lý có sẵn. Những tiến trình
như vậy chạy trong bộ nhớ ảo.
Nếu yêu cầu bộ nhớ tổng vượt quá khả năng của bộ nhớ vật lý, thì có thể cần
thay thế các trang từ bộ nhớ để giải phóng khung cho các trang mới. Các thuật
toán thay thế trang khác nhau được sử dụng. Thay thế trang theo FIFO dễ lập
trình nhưng mắc phải sự bất thường Belady. Thay thế trang tối ưu đòi hỏi có
kiến thức về tương lai. Thay thế trang LRU là một xấp xỉ của thay thế trang tối
ưu, nhưng ngay cả việc thực hiện nó cũng có thể khó khăn.
Ngoài ra đối với giải thuật thay thế trang, chính sách cấp phát khung trang
được yêu cầu. Cấp phát có thể cố định, đề nghị thay thế trang cục bộ, hay đề
nghị thay thế toàn cục. Theo đó, mỗi quá trình nên được cấp phát đủ các
khung cho tập làm việc hiện hành của nó. Nếu một quá trình không có đủ bộ
nhớ cho tập làm việc của nó, nó sẽ bị trì trệ. Cung cấp đủ khung cho mỗi quá
trình để tránh trì trệ có thể yêu cầu đổi chỗ và lập lịch tiến trình.
Ngoài ra, để yêu cầu chúng ta giải quyết các vấn đề chính của thay thế trang
và cấp phát khung trang, thiết kế hợp lý hệ thống phân trang yêu cầu chúng ta
xem xét kích thước trang, nhập/xuất, khoá, phân lại trang, tạo quá trình, cấu
trúc chương trình, sự trì trệ,.. Bộ nhớ ảo có thể được xem như một cấp của cơ
chế phân cấp trong các cấp lưu trữ trong hệ thống máy tính