1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình hướng dẫn phân tích chuyển địa chỉ trong kỹ thuật table indecator kết hợp paging p3

5 8 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 537,51 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hình 3.20.b: ”Sau” copy-on-write Một ứng dụng của copy-on-write là để cài đặt điểm ngắt hỗ trợ trong các trình gỡ rối. Ví dụ, mặc định, các trang mã bắt đầu chỉ thực thi. Tuy nhiên, nếu một lập trình viên thiết đặt một điểm ngắt trong khi gỡ rối một chương trình, thì trình gỡ rối phải thêm một chỉ thi điểm ngắt vào mã. Nó thực hiện điều đó bằng cách đầu tiên thay đổi sự bảo vệ trang thành PAGE_EXECUTE_READWRITE và sau đó thay đổi luồng chỉ thị. ...

Trang 1

Hình 3.20.b: ”Sau” copy-on-write

Một ứng dụng của copy-on-write là để cài đặt điểm ngắt hỗ trợ trong các trình

gỡ rối Ví dụ, mặc định, các trang mã bắt đầu chỉ thực thi Tuy nhiên, nếu một lập

trình viên thiết đặt một điểm ngắt trong khi gỡ rối một chương trình, thì trình gỡ rối

phải thêm một chỉ thi điểm ngắt vào mã Nó thực hiện điều đó bằng cách đầu tiên

thay đổi sự bảo vệ trang thành PAGE_EXECUTE_READWRITE và sau đó thay

đổi luồng chỉ thị Bởi vì trang mã là một phần của một mapped section, nên trình

quản lý bộ nhớ tạo một bảo sao riêng cho tiến trình với tập điểm ngắt, trong khi các

tiến trình khác tiếp tục sử dụng trang mã chưa sửa đổi

Hệ thống con POSIX lợi dụng copy-on-write để cài đặt chức năng fork (phân nhánh) Điển hình, khi một ứng dụng UNIX gọi một hàm fork để tạo một tiến trình

khác, điều đầu tiên mà tiến trình mới thực hiện là gọi hàm exec để khởi tạo lại

không gian địa chỉ với một ứng dụng có thể thực thi Thay vì sao chép toàn bộ

không gian địa chỉ trên fork, tiến trình mới chia sẻ các trang trong tiến trình cha

bằng cách đánh dấu chúng là copy-on-write Nếu một tiến trình con ghi lên dữ liệu,

một bản sao riêng tiến trình được thực hiện Nếu không, hai tiến trình tiếp tục chia

sẻ và không có việc sao chép nào được thực hiện Một cách hay một cách khác,

trình quản lý bộ nhớ chỉ sao chép các trang tiến trình cố gắng ghi thay vì sao chép

toàn bộ không gian địa chỉ

AWE: Address Windowing Extension

Mặc dù hệ điều hành Windows 2000 có thể hỗ trợ trên 64 GB bộ nhớ vật lý, nhưng

mỗi tiến trình người sử dụng 32-bit chỉ có một không gian địa chỉ ảo 2 GB hoặc 3

GB Để cho phép một tiến trình 32-bit định vị và truy xuất nhiều bộ nhớ vật lý hơn,

có thể được thể hiện trong không gian địa chỉ bị giới hạn của nó, Windows 2000

cung cấp một tập các hàm được gọi là Address Windowig Extensions (AWE) Ví

dụ, trên hệ thống Windows 2000 Advanced Server với 8 GB bộ nhớ vật lý, một

ứng dụng cơ sở dữ liệu server có thể sử dụng AWE để định vị và sử dụng gần 8 GB

bộ nhớ như một cache cơ sở dữ liệu

Việc định vị và sử dụng bộ nhớ thông qua các hàm AWE được thực hiện qua

ba bước:

1 Định vị bộ nhớ vật lý để được sử dụng

Trang 2

2 Tạo một vùng không gian địa chỉ ảo để hoạt động như một cửa sổ để ánh

xạ các khung nhìn của bộ nhớ vật lý

3 Ánh xạ các khung nhìn của bộ nhớ vật lý vào cửa sổ

Hình 3.21: Sử dụng AWE để ánh xạ bộ nhớ vật lý

Để định vị bộ nhớ vật lý, một ứng dụng gọi hàm Win32

AllocateUserPhysicalPages Ứng dụng sau đó sử dụng hàm Win32 VirtualAlloc

với cờ MEM_PHYSICAL để tạo một cửa sổ trong phần riêng của không gian địa

chỉ của tiến trình mà nó được ánh xạ đến một số hoặc tất cả bộ nhớ vật lý được

định vị trước đây Bộ nhớ được AWE định vị có thể sau đó với gần tất cả các hàm

Win32 API

Nếu một ứng dụng tạo một cửa sổ 256Mb trong không gian địa chỉ của nó và định vị 4Gb bộ nhớ vật lý (trên một hệ thống với hơn 4 GB bộ nhớ vật lý), ứng

dụng có thể sử dụng các hàm Win32 MapUserPhysicalPages hay

MapUserPhysicalPagesScatter để truy xuất bất kỳ phần nào của cửa sổ không gian

địa chỉ ảo xác định lượng bộ nhớ vật lý mà ứng dụng có thể truy xuất với một ánh

xạ nhất định Hình 3.21 trên đây trình bày một cửa sổ AWE trong một không gian

địa chỉ ứng dụng phục vụ được ánh xạ đến một vùng bộ nhớ vật lý được định vị

trước đó bằng AllocateUserPhysicalPages

Các hàm AWE tồn tại trên tất cả các ấn bản của Windows 2000 và có thể được sử dụng bất chấp hệ thống có bao nhiêu bộ nhớ vật lý Tuy nhiên, AWE hữu

ích nhất trên các hệ thống với nhiều hơn 2 GB bộ nhớ vật lý, bởi vì nó chỉ là cách

cho tiến trình 32-bit trực tiếp sử dụng nhiều hơn 2 GB bộ nhớ

Cuối cùng, có một số hạn chế trong việc định vị bộ nhớ và định xạ bằng các hàm

Trang 3

AWE:

 Các trang không thể chia sẻ giữa các tiến trình

 Cùng một trang vật lý không thể được ánh xạ nhiều hơn một địa chỉ ảo trong cùng tiến trình

 Sự bảo vệ trang chỉ giới hạn đến read/write

III.8.3 Address Space Layout

Theo mặc định, mỗi tiến trình người sử dụng trên phiên bản 32-bit của Windows

2000 có thể có trên 2Gb không gian địa chỉ riêng; hệ điều hành giữ 2Gb Windows

2000 Advanced Server và Windows 2000 Datacenter Server hỗ trợ một tuỳ chọn tại

thời điểm khởi động nó cho phép không gian địa chỉ tiến trình/chương trình người

sử dụng lên đến 3Gb

Tùy chọn không gian địa chỉ 3Gb mang lại cho các tiến trình một không gian địa chỉ 3Gb (dành 1Gb cho không gian hệ thống) Đặc tính này được thêm vào như

một giải pháp tình thế để đáp ứng sự cần thiết cho các ứng dụng server cơ sở dữ

liệu để giữ nhiều dữ liệu hơn trong bộ nhớ so với khi thực hiện với không gian địa

chỉ 2Gb

Không gian địa ảo của các hệ điều hành windows trước được tổ chức khác hơn so với Windows 2000 Nó cũng cung cấp một không gian địa chỉ ảo 32 bít 4Gb

và cấp phát không gian địa chỉ 2Gb riêng cho mỗi tiến trình người sử dụng, nhưng

nó chia 2Gb còn lại thành 2 phần, 1Gb cho không gian hệ thống, 1Gb dùng làm

không gian chia sẻ cho tất cả các tiến trình người sử dụng

Không gian địa chỉ hệ thống: Trong các kiến trúc Intel x86, không gian địa

chỉ 2Gb của hệ thống được phân thành các vùng khác nhau, được mô tả ở hình 3.22

sau:

Trong đó:

System code: Chứa chính hệ điều hành, HAL và các điều khiển thiết

bị được sử dụng để boot hệ thống

System mapped views: Sử dụng để ánh xạ Win32k.Sys, có thể nạp

một phần của hệ thống con Win32 trong chế đọ kernel mode và các điều

khiển đồ hoạ

Session space: Được sử dụng để ánh xạ thông tin đến một session người sử dụng cụ thể

Process page tables and page directory: Được dùng để chứa các bảng trang tiến trình và các danh mục bảng trang

Hyperspace: Đây là một vùng đặc biệt, được sử dụng để ánh xạ danh sách working set của tiến trình và để ánh xạ tạm các trang vật lý khác

System working set list: Chứa các trúc dữ liệu danh sách working set

mà nó mô tả working set của hệ thống

Trang 4

System cache: Không gian địa chỉ ảo được sử dụng để ánh xạ các file

mở trong hệ thống cache

Paged pool: Chứa các pool được phân trang

System page table entries (PTEs): Pool của các PTEs hệ thống được

sử dụng để ánh xạ các trang hệ thống như: không gian I/O, các stack kernel

và các danh sách mô tả bộ nhớ

Nonpaged pool: Chứa các pool không được phân trang

Crash dump information: Được dự trữ để ghi thông tin về trạng thái của một hệ thống Crash

HAL usage: Hệ thống bộ nhớ dự trữ cho kiến trúc HAL đặc biệt

Hình 3.22: Phân lớp không gian địa chỉ trong x86

Chú ý: Khi khởi tạo hệ thống, trình quản lý bộ nhớ tạo hai kiểu vùng nhớ pool định

kích thước tự động mà các thành phần chế độ kernel sử dụng để định vị bộ nhớ hệ

thống:

Vùng Pool không phân trang: bao gồm các vùng địa chỉ ảo hệ thống được bảo đảm tồn tại trong bộ nhớ vật lý tại tất cả các thời điểm và do đó có thể được truy xuất bất cứ khi nào mà không mắc phải một lỗi trang

Trang 5

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

Ngày đăng: 08/05/2021, 18:03

🧩 Sản phẩm bạn có thể quan tâm