Bộ nhớ ảo, phân trang và phân đoạn
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| pages/ˈpeɪdʒɪz/ | pages: trang |
| paging/ˈpeɪdʒɪŋ/ | phân trang |
| segmentation/ˌseɡmənˈteɪʃn/ | segmentation: phân đoạn |
| virtual address space/ˈvɜːtʃuːəl əˈdres speɪs/ | virtual address space: không gian địa chỉ ảo |
| frames/freɪmz/ | frames: khung trang |
| page table/peɪdʒ ˈteɪbl/ | page table: bảng trang |
| page fault/peɪdʒ fɒlt/ | page fault: lỗi thiếu trang |
| swap file/swɒp faɪl/ | swap file: tập tin hoán vị |
| thrashing/ˈθræʃɪŋ/ | thrashing: dao động |
Đèn ổ đĩa báo hiệu rằng máy tính đã từ bỏ
- Mở quá nhiều ứng dụng trên một máy tính thiếu bộ nhớ thì sẽ xảy ra hiện tượng đặc biệt. Mọi thứ chậm lại gần như ngừng trệ, và đèn ổ đĩa không còn nhấp nháy nữa mà cứ bật.
- Bộ xử lý không bận rộn. Nó đang chờ đợi, vì bộ nhớ mỗi chương trình cần nằm trên ổ đĩa, và việc lấy một trang sẽ đẩy ra một trang khác cần dùng ngay sau đó.
- Máy tính chỉ làm việc di chuyển các trang. Nó có đủ công việc để làm nhưng cũng có đủ bộ nhớ để không phải thực hiện cả hai việc này.
- Bài học này nói về bộ nhớ ảo, cách phân trang và đoạn chia cung cấp nó, và làm thế nào cơ chế khiến bộ nhớ trông lớn hơn lại có thể làm cho máy tính trở nên vô dụng.
Không gian địa chỉ ảo
- Mỗi tiến trình nhận được không gian địa chỉ ảo riêng: một dải địa chỉ liên tục, sạch sẽ bắt đầu từ số không, mà hệ điều hành ánh xạ đến bất kỳ đâu dữ liệu thực sự nằm.
- Ba điều sau đây diễn ra. Mỗi tiến trình thấy một không gian riêng tư đơn giản và không cần biết những gì đang chạy khác. Các tiến trình được bảo vệ khỏi nhau, vì một tiến trình không thể đặt tên đến địa chỉ trong không gian của tiến trình khác. Và tổng bộ nhớ đang sử dụng có thể vượt quá RAM vật lý, vì một phần dữ liệu nằm trên ổ đĩa.
- Sự cô lập này vừa là ranh giới bảo mật vừa là sự thuận tiện.
Một lợi ích của bộ nhớ ảo là nó:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bộ nhớ ảo cung cấp không gian riêng tư cho mỗi tiến trình và cho phép tập làm việc vượt quá RAM lắp đặt thông qua việc sử dụng đĩa.
Việc cấp không gian địa chỉ ảo cho mỗi tiến trình đạt được điều gì? Chọn tất cả các đáp án đúng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Bộ nhớ ảo mang lại sự đơn giản, sự cô lập và dung lượng. Nó tốn chi phí tốc độ, vì một phần bộ nhớ thực chất nằm trên đĩa.
Phân trang
- Không gian ảo được chia thành các trang có kích thước cố định; bộ nhớ vật lý được chia thành các khung có cùng kích thước. Một bảng trang ghi lại khung nào đang chứa mỗi trang.
- Khi một tiến trình truy cập vào địa chỉ, phần cứng tra cứu trang trong bảng và tìm thấy khung. Nếu trang không có trong RAM, đó là lỗi trang (page fault).
- Khi xảy ra lỗi trang, hệ điều hành đọc trang từ tệp swap trên ổ đĩa vào một khung trống. Nếu không có khung nào trống, nó phải xóa bỏ trước một trang, viết lại vào ổ đĩa nếu trang đó đã bị thay đổi.

Các trang và khung có kích thước giống nhau, được nối với nhau bởi một bảng
Trong phân trang, bộ nhớ được chia thành:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Paging sử dụng các trang và khung kích thước cố định, được liên kết qua bảng trang. (Kích thước thay đổi là phân đoạn.)
Lỗi trang xảy ra khi:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Trang được truy cập không có trong khung, nên OS lấy nó từ tập tin swap (loại bỏ một trang khác nếu cần).
Ví dụ giải: điều gì xảy ra khi có lỗi trang
- Một tiến trình truy cập vào địa chỉ mà trang của nó không có trong RAM. Mô tả những gì hệ điều hành làm. [4]
- Phần cứng phát hiện trang không tồn tại và kích hoạt ngắt lỗi trang, và tiến trình bị chặn.
- Hệ điều hành tìm một khung trống; nếu không có, nó chọn một trang để thay thế, và viết lại vào tệp swap nếu trang đó đã được chỉnh sửa.
- Nó đọc trang yêu cầu từ tệp swap vào khung đó và cập nhật bảng trang.
- Tiến trình được trả về trạng thái sẵn sàng và lệnh được thử lại. Bốn bước, bốn điểm, và lưu ý rằng tiến trình đã bị chặn suốt thời gian đó.
Điều gì xảy ra khi gặp lỗi phân trang
Xét từng bước lỗi phân trang. Khi chương trình truy cập vào một trang chưa có trong RAM, hệ điều hành âm thầm lấy nó từ đĩa và cập nhật bảng phân trang — để chương trình thấy nhiều bộ nhớ hơn so với thể tích vật lý thực tế.
Sắp xếp lại phản ứng của OS đối với lỗi trang theo thứ tự.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Phát hiện và chặn, tạo chỗ trống, tải, ghi nhận, thử lại. Lỗi trang là cơ chế bình thường, không phải lỗi.
情况分析 (Thrashing)
- Việc chọn trang nào để thay thế rất quan trọng, vì lựa chọn sai nghĩa là trang đó sẽ cần dùng ngay lập tức.
- Khi có quá ít RAM so với tập làm việc của các tiến trình đang chạy, hầu như mọi truy cập đều gây ra lỗi trang, và mỗi lỗi trang đều xóa bỏ một trang đang được mong đợi ngay lập tức.
- Hệ thống lúc đó dành gần hết thời gian để di chuyển trang thay vì thực thi lệnh. Đó là thrashing (hay thrashing ổ đĩa), và đó là trạng thái được mô tả ở đầu bài học này.
- Cách chữa trị là thêm RAM, hoặc giảm số lượng tiến trình; bộ xử lý nhanh hơn hoàn toàn không giúp ích gì, vì bộ xử lý không phải là thứ đang bận rộn.
Máy tính chậm lại gần như dừng hẳn và ổ đĩa hoạt động liên tục. Giải pháp nào sẽ khắc phục?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Đây là tình trạng xé vụn: hầu hết mọi truy cập đều gây lỗi và bộ xử lý chờ đợi. Bộ xử lý không phải thành phần bận rộn, nên tăng tốc độ nó không mang lại thay đổi gì.
Đoạn chia (Segmentation)
- Đoạn chia chia bộ nhớ thành các đoạn logic có kích thước biến đổi phù hợp với cấu trúc chính của chương trình: đoạn mã, đống stack, đống heap, mảng dữ liệu lớn.
- Vì một đoạn là một đơn vị logic, nó có thể mang quyền hạn riêng: đoạn mã có thể chỉ đọc và thực thi được, đống stack có thể đọc-ghi và không thực thi được.
- Sự đối lập mà đề thi muốn nhấn mạnh: trang có kích thước cố định và vô nghĩa với chương trình; đoạn có kích thước biến đổi và tương ứng với các phần logic của nó. Nhiều hệ thống thực tế kết hợp cả hai, phân trang bên trong các đoạn.

Các đoạn là những phần của chính chương trình, không phải các lát cắt bằng nhau
Nối mỗi thuật ngữ quản lý bộ nhớ với ý nghĩa của nó.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Paging = trang cố định; segmentation = đơn vị logic biến đổi; lỗi trang kích hoạt swap; quá nhiều lỗi = thrashing.
Segmentation chia bộ nhớ thành các đơn vị logic kích thước thay đổi (code, stack, heap), mỗi đơn vị có quyền hạn riêng, trong khi paging sử dụng các trang kích thước cố định.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Các phân đoạn khớp với cấu trúc logic của chương trình; các trang là các khối kích thước cố định đồng nhất — một số hệ thống kết hợp cả hai.
Khác với các trang, vốn có cùng kích thước, các phân đoạn có kích thước ____ và khớp với các phần logic của chương trình.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Một phân đoạn là code, stack hoặc heap, vì vậy nó có thể mang quyền hạn riêng. Một trang là sự phân chia vật lý mà không có ý nghĩa đối với chương trình.
Ví dụ giải: phân trang so với đoạn chia
- Nêu hai điểm khác biệt giữa phân trang và đoạn chia. [2]
- Trang có cùng một kích thước cố định, do hệ thống quyết định; đoạn có kích thước biến đổi, do các phần logic của chương trình quyết định.
- Trang là một sự phân chia thuần túy về mặt vật lý với không có ý nghĩa nào đối với chương trình; một đoạn tương ứng với một đơn vị logic như đoạn mã hay đống stack, và có thể được gán quyền truy cập riêng.
- Một điểm thứ ba nếu cần: phân trang có thể để lại khoảng trống chưa sử dụng bên trong trang cuối cùng của một vùng phân bổ, trong khi đoạn chia để lại các khoảng trống không thể sử dụng giữa các đoạn.
Điểm số dễ mất
- Bộ nhớ ảo không tạo ra bộ nhớ mới. Nó cho phép tổng bộ nhớ sử dụng vượt quá RAM vật lý bằng cách giữ một phần dữ liệu trên ổ đĩa, với cái giá là các truy cập vào ổ đĩa.
- Lỗi trang không phải là một lỗi. Đó là cơ chế bình thường để đưa một trang vào bộ nhớ.
- Thrashing là dành nhiều thời gian hơn để di chuyển trang so với thực thi, và cách khắc phục là thêm RAM hoặc giảm số lượng tiến trình, tuyệt đối không phải bộ xử lý nhanh hơn.
- Kích thước cố định so với kích thước biến đổi, có ý nghĩa theo logic là sự khác biệt giữa phân trang và đoạn chia. Hãy nêu cả hai vế.
Bạn đã nắm vững
- Không gian địa chỉ ảo cung cấp cho mỗi tiến trình một dải liên tục riêng tư, bảo vệ các tiến trình khỏi nhau, và cho phép bộ nhớ đang sử dụng vượt quá RAM vật lý.
- Phân trang: các trang có kích thước cố định được ánh xạ sang khung thông qua bảng trang; một lỗi trang chặn tiến trình trong khi hệ điều hành xóa bỏ trang nếu cần, tải từ tệp swap, cập nhật bảng và thử lại.
- Thrashing là dành nhiều thời gian hơn để di chuyển trang so với thực thi; khắc phục bằng cách thêm RAM hoặc giảm số lượng tiến trình.
- phân đoạn sử dụng các đoạn có kích thước thay đổi tương ứng với các phần logic của chương trình, mỗi phần có quyền hạn riêng; nhiều hệ thống phân trang bên trong các đoạn