Giáo trình Lý thuyết hệ điều hành - Chương 3: Quản lý bộ nhớ

Quản lý bộ nhớ là một trong những nhiệm vụ quan trọng và phức tạp

nhất của hệ điều hành. Bộ phận quản lý bộ nhớ xem bộ nhớ chính như

là một tài nguyên của hệ thống dùng để cấp phát và chia sẻ cho nhiều

tiến trình đang ở trong trạng thái active. Các hệ điều hành đều mong

muốn có nhiều hơn các tiến trình trên bộ nhớ chính. Công cụ cơ bản

của quản lý bộ nhớ là sự phân trang (paging) và sự phân đoạn

(segmentation). Với sự phân trang mỗi tiến trình được chia thành

nhiều phần nhỏ có quan hệ với nhau, với kích thước của trang là cố

định. Sự phân đoạn cung cấp cho chươngtrình người sử dụng các

khối nhớ có kích thước khác nhau. Hệ điều hành cũng có thể kết hợp

giữa phân trang và phân đoạn để có được một chiến lược quản lý bộ

nhớ linh hoạt hơn.

pdf65 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Ngày: 22/10/2014 | Lượt xem: 2534 | Lượt tải: 12download
Tóm tắt nội dung Giáo trình Lý thuyết hệ điều hành - Chương 3: Quản lý bộ nhớ, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
thể được truy xuất bất cứ khi nào mà không mắc phải một lỗi trang. 
 Vùng pool phân trang: một vùng bộ nhớ ảo trong không gian hệ 
thống có thể được phân trang trong và ngoài hệ thống. Các trình điều khiển 
thiết bị có thể sử dụng vùng phân trang này. 
Cả hai vùng bộ nhớ đều được định vị trong phần hệ thống của không gian 
địa chỉ và được ánh xạ vào không gian địa chỉ ảo của mỗi tiến trình. Trình 
Excutive cung cấp các thường trình để định vị và giải phóng từ các vùng này. 
III.8.4. Chuyển đổi địa chỉ 
 Sơ đồ chuyển đổi một địa chỉ ảo thành địa chỉ vật lý 
Theo mặc định hệ điều hành Windows 2000 chạy trên hệ thống x86 sử dụng cấu 
trúc bảng trang 2 cấp (two-level) để chuyển đổi địa chỉ ảo thành địa chỉ vật lý. 32 
bít không gian địa chỉ ảo được chia thành 3 thành phần: 10 bít cao nhất là Page 
Directory Index, 10 bít tiếp theo là Page Table Index, 12 bít thấp nhất là Byte 
Index ( Byte Index rộng 12 bít vì trong x86 kích thước 1 page là 4096 byte (212 = 
4096)). 
 Hình vẽ 3.23 sau đây cho thấy ý nghĩa sử dụng của ba thành phần trên và 
cách chuyển đổi từ địa chỉ ảo 32 bít thành địa chỉ vật lý trên hệ thống 
x86_Windows 2000 có thể xem lại ở mục III.2.3.c ở trên). 
 Hình 3.23: Sơ đồ chuyển địa chỉ ảo thành vật lý trên hệ thống x86 
Sau đây là là các bước thực hiện việc chuyển đổi địa chỉ ảo theo sơ đồ ở trên: 
1. Bộ phận phần cứng quản lý bộ nhớ tìm đến danh mục bảng trang (page 
directory) của tiến trình hiện tại. 
2. Thành phần Page Directory Index được sử dụng để chỉ mục vào page 
directory để tìm một mục vào danh mục bảng trang (PDE: page directory 
entry), mà nó mô tả vị trí của bảng trang (page table) cần để ánh xạ địa chỉ 
ảo. PDE chứa số hiệu khung trang (PFN: page frame number) của bảng 
trang (nếu nó đang thường trú trong bộ nhớ. Vì các bảng trang có thể được 
phân trang ra ngoài). 
3. Thành phần Page Table Index được sử dụng để chỉ mục vào page table để 
tìm một mục vào bảng trang (PTE: page table entry), mà nó mô tả vị trí 
vật lý của trang ảo trong địa chỉ ảo. 
4. PTE được sử dụng để định vị trang. Nếu là trang hợp lệ, nó chứa PFN của 
trang trong bộ nhớ vật lý chứa trang ảo. Nếu PTE chỉ báo rằng trang là 
không hợp lệ, trình quản lý bộ nhớ sẽ điều khiển lỗi trang và cố gắng làm 
cho nó trở thành hợp lệ. 
5. Khi PTE trỏ đến một trang hợp lệ, Byte Index được sử dụng để tìm đến địa 
chỉ chính xác của ô nhớ trong phạm vị trang vật lý tương ứng với địa chỉ 
ảo 32 bít ban đầu mà tiến trình phát ra. 
Sau đây chúng ta sẽ xem xét một cách chi tiết hơn về cấu trúc của page directory, 
page table và page table entry để thấy được đặc thù của nó trong Windows 2000 
so với những gì mà ta đã khảo sát một cách tổng quát về nó ở các mục trước: 
 Danh mục bảng trang (page directory) 
Mỗi tiến trình có một có một page directory đơn, trình quản lý bộ nhớ dùng một 
trang để tạo bản đồ định vị của tất cả các bảng trang của tiến trình đó. Địa chỉ vật 
lý của page directory của tiến trình được lưu trữ trong block KPROCESS. 
Địa chỉ vật lý (cơ sở) của page directory được chỉ ra ở thanh ghi điều khiển 
CR3 trên các hệ thống x86. Mỗi khi có một sự chuyển đổi ngữ cảnh xuất hiện với 
một tiểu trình mằm trong tiến trình khác tiến trình hiện tại thì giá trị của thanh ghi 
CR3 này sẽ được nạp vào block KPROCESS của tiến trình khác đó.Việc chuyển 
đổi ngữ cảnh giữa các tiểu trình trong cùng một tiến trình sẽ không được nạp lại 
địa chỉ vật lý của page directory bởi vì tất cả các tiểu trình trong cùng một tiến 
trình chia sẻ cùng một không gian địa chỉ tiến trình. 
 Page directory bao gồm các các mục vào danh mục bảng trang (PDE: page 
Directory Entry). Mỗi entry dài 4 byte (8 byte trên các hệ thống chạy ở chế độ 
PAE), để mô tả trạng thái và vị trí của tất cả các bảng trang của tiến trình. Các bít 
trong PDE tương tự như các bít của PTE. 
Trên các hệ thống x86, 1024 (2048 trên hệ thống PAE) được yêu cầu để mô 
tả đầy đủ 4Gb không gian địa chỉ ảo. Page directory tiến trình ánh xạ đến các bảng 
trang chứa 1024 PDE. Do đó, page directory index cần phải rộng 10 bít (210 = 
1024). 
 Bảng trang tiến trình và bảng trang hệ thống 
Trước khi tham chiếu đến byte trong phạm vi trang bằng byte offset, đầu tiên CPU 
cần phải tìm đến trang mà nó chứa byte yêu cầu của dữ liệu. Để tìm đến trang này, 
hệ điều hành xây dựng một trang khác của bộ nhớ, trang này chứa các thông tin 
ánh xạ cần thiết để tìm đến trang mong muốn chứa dữ liệu. Trang thông tin ánh xạ 
này được gọi là page table. Vì Windows 2000 cung cấp một không gian địa chỉ 
riêng cho mỗi tiến trình nên mỗi tiến trình sở hữu một tập các bảng trang tiến trình 
để ánh xạ đến không gian địa chỉ riêng đó, sự ánh xạ sẽ khác nhau ở mỗi tiến trình. 
 Các bảng trang mô tả không gian hệ thống được chia sẻ cho tất cả các tiến 
trình. Khi một tiến trình được tạo, các PDE không gian hệ thống được khởi tạo để 
chỉ đến các bảng trang hệ thống đang tồn tại. Nhưng không phải tất cả các tiến 
trình đều có cùng điểm nhìn của không gian hệ thống. Khi bảng trang hệ thống 
thay đổi đến vị trí cấp phát mới thì bộ phận quản lý bộ nhớ không cập nhật tất cả 
các page directory tiến trình, trình quản lý bộ nhớ chỉ cập nhật các page directory 
tiến trình khi các tiến trình tham chiếu đến địa chỉ ảo mới. 
 Hình 3.26: Bảng trang hệ thống và bảng trang riêng của tiến trình 
 Số lượng PTE được Windows 2000 tính toán dựa vào kích thước của bộ 
nhớ. Ta cũng có thể quy định số lượng này bằng cách thay đổi trong Registry, 
nhưng giá trị lớn nhất mà hệ thống x86 chấp nhận là 128.000 PTE. 
 Các mục vào bảng trang (PTE) 
Một PTE dài 32 bít, gồm 13 trường được mô tả ở hình dưới đây: 
Sau đây chúng ta sẽ mô tả về các bít trạng thái và các bít bảo vệ trong PTE: 
 Accesed: Trang đã được đọc. 
 Cache disabled: Cấm cache trang này 
 Dirty: Trang đã được ghi đến 
 Global: Sự chuyển đổi áp dụng đến tất cả các tiến trình. 
 Large page: Chỉ báo rằng PDE ánh xạ đến trang 4Mb trên hệ thống với 
128Mb (hoặc hơn) bộ nhớ. 
 Owner: Chỉ báo rằng có hay không code user-mode các thể truy cập trang 
hoặc có hay không trang là được giới hạn chỉ truy cập ở kernel-mode. 
 Valid: Chỉ báo có hay không sự chuyển đổi ánh xạ đến trang trong bộ 
nhớ vật lý. 
 Write through: Cấm cache cho việc ghi đến trang với mục địch sự thay 
đổi ngay lập tức được ghi đến đĩa. 
 Write: Trên các hệ thống uniprocessor, đây là chỉ báo có hay không trang 
là read/write hoặc read-only. Trên các hệ thống multiprocessor, đây là chỉ 
báo có hay không trang là có thể write. (bit Write được lưu trữ trong bit 
dự trữ trong PTE). 
Trên các hệ thống x86, phần cứng PTE chứa một bít Dirty và một bít 
Accesed. Bít Accessed bị xoá (= 0) nếu trang vật lý được trình bày bởi một PTE 
không thể đọc hoặc ghi, Processor thiết lập bít (= 1) này khi trang được đọc hoặc 
ghi lần đầu tiên. Processor thiết lập bít Dirty chỉ khi trang lần đầu tiên được ghi. 
Kiến trúc x86 cũng thêm vào bít Write để cung cấp sự bảo vệ trang, khi bít này bị 
xoá thì trang trở thành read-only, khi bít này được thiết lập thì trang có thể là 
write/read. Nếu một tiểu trình cố gắng ghi đến một trang mà bít Write = 0 thì trình 
quản lý bộ nhớ sẽ phát sinh một ngoại lệ truy cập, và bộ phận điều khiển lỗi truy 
cập phải xác định có hay không một tiểu trình có thể ghi đến trang (trong trường 
hợp copy-on-write) hoặc có hay không một sự vi phạm truy cập phải được sinh ra. 
Trên nền phần cứng x86, các PTE luôn luôn rộng 4 byte (32 bít), 8 byte trên 
các hệ thống cho phép chế độ PAE, vì thế mỗi bảng trang chứa 1024 PTE , 512 
trên các hệ thống PAE (4096 byte trên một page, 4 byte trên một PTE) và vì thế có 
thể ánh xạ 1024 trang (512 page PAE) cho tổng số 4Mb (2 Mb trên PAE) của các 
trang dữ liệu. 
Trường page table index của địa chỉ ảo chỉ đến một PTE trong page table, để 
từ đó ánh xạ đến trang dữ liệu mà tiến trình yêu cầu. Trên các hệ thống x86, page 
table index rộng 10 bít (9 bít trên PAE), cho phép tham chiếu đến 1024 PTE (512 
trên PAE). Tuy nhiên, vì windows 2000 cung cấp 4Gb không gian địa chỉ ảo riêng, 
nên cần nhiều hơn một page table để ánh xạ toàn bộ không gian địa chỉ. Ta có thể 
tính được số lượng page table được yêu cầu để ánh xạ toàn bộ không gian địa chỉ 
4Gb của tiến trình như sau: 4Gb/4Mb = 1024 page table, hoặc 2048 page table 
4Gb/2Mb =1028 page table trên PAE (mỗi bảng trang trên hệ thống x86 ánh xạ 
4Mb (2 Mb trên PAE) của các trang dữ liệu). 
 Byte trong phạm vi trang (byte within page) 
Mỗi khi trình quản lý bộ nhớ tìm thấy trang vật lý tương ứng với địa chỉ ảo 
mà tiến trình đưa ra để truy xuất dữ liệu trên bộ nhớ, nó phải tìm đến đúng dữ liệu 
được yêu cầu trong phạm vi trang này. Đây là nơi thành phần Byte Index chỉ vào. 
Byte Index chỉ cho CPU biết byte dữ liệu trong trang mà tiến trình muốn tham 
chiếu đến. Trên hệ thống x86, byte index rộng 12 bít, cho phép tiến trình tham 
chiếu đến 4096 byte dữ liệu (đây cũng chính là kích thước trang). 
 Mở rộng địa chỉ vật lý 
Tất cả các processor thuộc họ Intel x86 đều bao gồm một chế độ ánh xạ bộ 
nhớ được gọi là PAE (Physical Address Extension). Với một chipset thích hợp chế 
độ PAE cho phép truy cập đến 64GB bộ nhớ vật lý. Khi thực thi x86 trong chế độ 
PAE, thành phần quản lý bộ nhớ (MMU) của processor chia địa chỉ ảo thành 4 
thành phần. Trong trường hợp này hệ thống sử dụng bảng trang ba cấp (three-
level) để thực hiện việc chuyển đổi địa chỉ. 
 Hình 3.24: Ánh xạ trang với PAE 
MMU vẫn cài đặt page directory và page table nhưng cấp thứ 3 là page 
directory pointer table. PAE có thể đánh địa chỉ bộ nhớ nhiều hơn chế độ chuẩn 
không những là do mở rộng cấp bảng trang mà còn do các PDE và PTE rộng 64 bít 
chứ không phải 32 bít. Với địa chỉ vật lý bên trong là 24 bít, nên x86 có khả năng 
quản lý được 64Gb (224+12 byte) bộ nhớ. 
Để chọn Windows 2000 hoạt đọng trong chế độ PAE ta phải chọn boot với 
tham số khoá chuyển /PAE trong Boot.ini. Chế độ này được hỗ trợ trong tập tin 
Ntkrpamp.exe. 

File đính kèm:

  • pdfGiáo trình Lý thuyết hệ điều hành - Chương 3 Quản lý bộ nhớ.pdf
Tài liệu liên quan