Kế ạch dịch địa chỉ cho kiến trúc này tương tự như kế ho hoạch được thể ện trong hiHình dưới: Dịch địa chỉ cho một kiến trúc phân trang hai cấp với độ dài 32 bit như sau: Địa chỉ logic c
Trang 1Nguyên lý hệ điều hành – IT3070
Hoàng Nguyễn Trường Giang
20215270
Trang 2Table of Contents
1 Quản lý bộ ớ trên vi xử lý Intel (Intel 32 và 64) nh 3
1.1 IA-32 Architecture 3
1.1.1 IA-32 Phân đoạn 3
1.1.2 IA-32 Phân trang 4
1.2 IA x86-64 8
2 Quản lý bộ ớ trên hệ ều hành Windows nh đi 8
2.1 Quản lý bộ logic theo cấu trúc phân trang (paging) 9
2.1.1 Phân trang trong Bộ xử lý x86 10
2.1.2 Quản lý bảng trang trong Windows 11
2.1.3 Windows Memory Protection: 12
2.2 Quản lý bộ ớ ảo (Virtual Memory) nh 13
2.3 Quản lý bộ ớ trong Win32 API nh 21
2.3.1 Bộ Nh ớ Ả o: 21
2.3.2 Memory-Mapping Files 22
2.3.3 Heaps 22
2.3.4 Thread-Local Storage (TLS) 23
2.4 Quản lý bộ ớ vật lý nh 24
2.4.1 Phân chia vùng trong RAM: 24
2.4.2 Cách thức chuyển đổi giữa các vùng trên RAM: 24
3 References 28
Trang 31 Quản lý bộ nh ớ trên vi xử lý Intel (Intel 32 và 64)
Kiến trúc của vi xử lý Intel đã chiếm ưu thế trong cảnh quan máy tính cá nhân trong nhiều năm Chip Intel 8086 16-bit xuất hiện vào cuối thập kỷ 1970 và sớm được theo sau bởi một chip 16-bit khác là Intel 8088 – nổi bật vì được sử dụng trong máy tính IBM PC ban đầu Cả hai chip 8086 và 8088 dựa trên một kiến trúc phân đoạn Sau đó, Intel sản xuất một loạt chip 32-bit – -32 – bao gồm dòng vi IA
xử lý Pentium 32-bit Kiến trúc IA-32 hỗ trợ cả phân trang và phân đoạn Gần đây hơn, Intel đã sản xuất một loạt chip 64-bit dựa trên kiến trúc x86-64
Hiện tại, tất cả các hệ điều hành PC phổ ến đều chạy trên chip Intel, bao gồbi m Windows, Mac OS X và Linux (tuy nhiên, Linux cũng chạy trên nhiều kiến trúc khác) Đáng chú ý là sự ống trị của Intel không lan rộng đến các hệ th thống di động, nơi kiến trúc ARM đang đạt được sự thành công đáng kể
1.1 IA-32 Architecture
Quản lý bộ ớ trong các hệ nh thống IA-32 được chia thành hai thành phần – phân đoạn và phân trang ến trình ạt động như sau: CPU tạo ra địa chỉ logic, đượTi ho c chuyển cho đơn vị phân đoạn Đơn vị phân đoạn tạo ra một địa chỉ tuyến tính cho mỗi địa chỉ logic Địa chỉ tuyến tính sau đó được chuyển cho đơn vị phân trang, tạo
ra địa chỉ vật lý trong bộ ớ chính Do đó, đơn vị phân đoạn và đơn vị phân trang nhtạo thành đơn vị ản lý bộ ớ (MMU) Hình ảnh của quá trình này được thể ện qu nh hisau đây:
1.1.1 IA-32 Phân đoạn
Kiến trúc IA-32 cho phép một đoạn có thể lớn đến 4 GB và số ợng tối đa đoạlư n mỗi tiến trình là 16 K Không gian địa chỉ logic của một tiến trình được chia thành hai phần Phần đầu tiên bao gồm tối đa 8 K đoạn là riêng tư cho tiến trình đó Phần thứ hai bao gồm tối đa 8 K đoạn được chia sẻ ữa tất cả các tiến trình Thông tin gi
về ần đầu tiên được lưu giữ trong bảng mô tả cục bộ (LDT); thông tin về ph phần thứ hai được lưu giữ trong bảng mô tả toàn cầu (GDT) Mỗi mục trong LDT và GDT bao gồm một mô tả đoạn 8 byte với thông tin chi tiết về một đoạn cụ ể, bao thgồm vị trí cơ sở và giới hạn của đoạn đó
Địa chỉ logic là một cặp (selector, offset), trong đó selector là một số 16-bit:
Trang 4Trong đó, s là chỉ số ạn, g chỉ định xem đoạn có ở trong GDT hay LDT, và p liên đoquan đến bảo vệ Offset là một số 32-bit chỉ định vị trí của byte trong đoạn tương ứng
Máy có sáu thanh ghi đoạn, cho phép địa chỉ sáu đoạn được truy cập vào bất kỳ thời điểm nào bởi một tiến trình Nó cũng có sáu thanh ghi microprogram 8 byte để giữ các mô tả tương ứng từ LDT hoặc GDT Bộ ớ đệm này giúp Pentium tránh nhviệc đọc mô tả từ bộ ớ cho mỗi tham chiếu bộ nh nhớ
Hình ảnh của quá trình này được thể ện trong Hình dưới Địa chỉ tuyến tính trên hiIA-32 là 32 bit và được hình thành như sau Thanh ghi đoạn trỏ đến mục phù hợp trong LDT hoặc GDT Thông tin về cơ sở và giới hạn của đoạn cụ ể ợc sử th đưdụng để tạo ra một địa chỉ tuyến tính Đầu tiên, giới hạn được sử dụng để ểm tra kitính hợp lệ của địa chỉ Nếu địa chỉ không hợp lệ, một lỗi bộ nhớ ợc tạo ra, dẫđư n đến một trạng thái nghỉ của hệ ều hành Nếu nó hợp lệ, giá trị của offset đượđi c cộng với giá trị cơ sở, tạo ra một địa chỉ tuyến tính 32 bit
1.1.2 IA-32 Phân trang
Kiến trúc IA-32 cho phép kích thước trang là 4 KB hoặc 4 MB Đối với trang 4
KB, IA-32 sử dụng một kế ạch phân trang hai cấp, trong đó phân chia của địho a chỉ tuyến tính 32 bit là như sau:
Trang 5Kế ạch dịch địa chỉ cho kiến trúc này tương tự như kế ho hoạch được thể ện trong hiHình dưới:
Dịch địa chỉ cho một kiến trúc phân trang hai cấp với độ dài 32 bit như sau:
Địa chỉ logic có dạng: p1 p2 d
p1: Chỉ mục vào bảng trang cấp ngoại
p2: Chỉ mục vào bảng trang cấp trong
d: Lệch trang trong trang
Địa chỉ vật lý được tạo ra bằng cách ghép các giá trị này lại với nhau:
Chuyển địa chỉ logic thành địa chỉ vật lý:
Trích xuất p1 từ địa chỉ logic
Sử dụng p1 làm chỉ mục để truy cập bảng trang cấp ngoại
Lấy giá trị từ bảng trang cấp ngoại, được gọi là "địa chỉ trang cấp trong."
Trang 6Ghép p2 và d để tạo địa chỉ vật lý cuối cùng
Địa chỉ vật lý: (địa chỉ trang cấp trong) p2=1011010110, d=110011001011
Do quá trình dịch địa chỉ này hoạt động từ bảng trang cấp ngoại vào bên trong, nó còn được gọi là bảng trang được ánh xạ xuôi
Tuy nhiên, Quá trình dịch địa chỉ -32 được thể ện chi tiết hơn trong Hình dướIA hi i đây:
10 bit cao nhất trỏ đến một mục trong bảng trang bên ngoài, mà IA-32 gọi là bảng trang (Thanh ghi CR3 trỏ đến bảng trang cho tiến trình hiện tại.) Mục của bảng trang trỏ đến một bảng trang trong, được chỉ mục bởi nội dung của 10 bit cuối cùng
Trang 7trong địa chỉ tuyến tính Cuối cùng, các bit thấp 0–11 đề cập đến địa chỉ offset trong trang 4 KB được trỏ đến trong bảng trang
Một mục trong bảng trang là cờ Page_size , nếu được đặt, chỉ định rằng kích thước của khung trang là 4 MB và không phải là 4 KB tiêu chuẩn Nếu cờ này được đặt, bảng trang trực tiếp trỏ đến khung trang 4 MB, bỏ qua bảng trang trong; và 22 bit thấp trong địa chỉ tuyến tính đề cập đến offset trong khung trang 4 MB
Để cải thiện hiệu suất sử dụng bộ ớ vật lý, bảng trang IA-32 có thể ợc đổi chổ nh đưvới đĩa Trong trường hợp này, một bit không hợp lệ ợc sử dụng trong mục củđư a bảng trang để ỉ ra xem bảng mà mục đó đang trỏ đến có trong bộ ớ hay trên ch nhđĩa Nếu bảng có trong đĩa, hệ ều hành có thể sử dụng 31 bit còn lại để ỉ định đi ch
vị trí của bảng trên đĩa Bảng sau đó có thể ợc đưa vào bộ ớ khi cầđư nh n Khi các nhà phát triển phần mềm bắt đầu phát hiện ra giới hạn bộ nhớ 4 GB của kiến trúc 32-bit, Intel đã áp dụng một phần mở rộng địa chỉ trang (PAE), cho phép các bộ xử lý 32-bit truy cập không gian địa chỉ vật lý lớn hơn 4 GB Sự khác biệt
cơ bản được giới thiệu bởi hỗ ợ PAE là dịch địa chỉ trang từ một kế ạch hai cấtr ho p (như được thể hiện trong Hình 6) sang một kế ạch ba cấp, trong đó hai bit cao honhất đề cập đến một bảng trỏ thư mục trang Hình ới đây minh họa một hệ dưthống PAE với trang 4 KB (PAE cũng hỗ ợ trang 2 MB.)tr
PAE cũng làm tăng kích thước mục của bảng trang và bảng trang từ 32 bit lên 64 bit, cho phép địa chỉ cơ sở của bảng trang và khung trang mở rộng từ 20 lên 24 bit Kết hợp với offset 12 bit, việc thêm hỗ ợ PAE cho IA-32 đã tăng không gian địtr a chỉ lên 36 bit, hỗ ợ tới 64 GB bộ ớ vật lý Cần lưu ý rằng hỗ ợ của hệ tr nh tr điều hành là cần thiết để sử dụng PAE Cả Linux và Intel Mac OS X đều hỗ ợ PAE tr
Trang 8Tuy nhiên, các phiên bản 32-bit của hệ ều hành Windows trên desktop vẫn chỉ hỗ đitrợ tối đa 4 GB bộ ớ vật lý, ngay cả khi PAE đã được kích hoạnh t
1.2 IA x86-64
Intel đã có một lịch sử phát triển kiến trúc 64-bit đầy thú vị Bước đầu tiên của họ
là kiến trúc IA-64 (sau đổi tên thành Itanium), nhưng kiến trúc này không được sử dụng rộng rãi Trong khi đó, một nhà sản xuất chip khác là AMD bắt đầu phát triển một kiến trúc 64-bit được biết đến là x86-64, dựa trên việc mở rộng tập lệnh IA-32 hiện tại X86-64 hỗ ợ không gian địa chỉ lôgic và vật lý lớn hơn đáng kể, cũng trnhư một số cải tiến kiến trúc khác Lịch sử cho thấy AMD thường xuyên phát triển chip dựa trên kiến trúc của Intel, nhưng lần này, vai trò đã đảo ngược khi Intel áp dụng kiến trúc x86-64 của AMD
Khi nói về ến trúc này, thay vì sử dụng các tên thương hiệu như AMD64 và Intel ki
64, chúng ta sẽ sử dụng thuật ngữ tổng quát hơn là x86-64 Hỗ ợ cho không gian trđịa chỉ -bit mang lại một con số ấn tượng là 2^64 byte của bộ ớ có thể địa chỉ 64 nhđược—một con số lớn hơn 16 triệu tỷ (hoặc 16 exabyte) Tuy nhiên, mặc dù các hệ thống 64-bit có khả năng địa chỉ đến nhiều bộ ớ như vậy, thực tế ít hơn 64 bit nhđược sử dụng cho biểu diễn địa chỉ trong các thiết kế ện tại Kiến trúc x86-hi 64 hiện tại cung cấp một địa ỉ ảo 48-bit với hỗ ch trợ cho các kích thước trang là 4 KB,
2 MB hoặc 1 GB, sử dụng bốn cấp độ phân trang Biểu diễn của địa chỉ tuyến tính xuất hiện trong Hình 8 Bởi vì kiến trúc này có thể sử dụng PAE, địa chỉ ảo có kích thước 48 bit nhưng hỗ ợ địa chỉ vật lý 52 bit (4096 terabyte).tr
2 Quản lý bộ nh ớ trên hệ ều hành Windows đi
Microsoft Windows có không gian địa chỉ ảo riêng cho mỗi tiến trình 32 bit, cho phép xem bộ nhớ lên tới 4 gigabyte Mỗi tiến trình có không gian địa chỉ 8 terabyte trên Windows 64 bit Tất cả các luồng đều có quyền truy cập vào không gian địa chỉ hiển thị của tiến trình Mặt khác, các luồng không có quyền truy cập vào bộ nhớ của một tiến trình khác, điều này bảo vệ một tiến trình khỏi bị một tiến trình khác làm hỏng
Trang 92.1 Quản lý bộ logic theo cấu trúc phân trang (paging)
M c tứ ối đa của dung lượng bộ nhớ vật lý được hệ th ng Windows h tr ố ỗ ợkhoảng từ 2GB đến 4TB, tùy thuộc vào phiên b n c a Windows ả ủ
Windows Server 2003 SP2 Datacenter 128 GB 2 TB
Mỗi tiến trình người dùng trên nền tảng Windows 32-bit được cấp phát một không gian địa chỉ ảo (Virtual Address Space) là 4 Gigabytes.Còn ở nền tảng Windows 64-bit, mỗi tiến trình người dùng được cấp phát một không gian địa chỉ ảo lên tới 8 Terabytes.Tất cả các tiểu trình của một tiến trình có thể truy cập vào vùng địa chỉ ảo của chính nó, tuy nhiên những tiểu trình đó lại không thể truy cập vào vùng địa chỉ ảo thuộc về một tiến trình khác
Windows trên các hệ thống x86 32 bit có thể truy cập tối đa đến 4GB bộ ớ vậnh t
lý Điều này xuất phát từ ệc bus địa chỉ của bộ xử lý, có 32 dòng hoặc 32 bit, chỉ vi
có thể truy cập vào dải địa chỉ từ 0x00000000 đến 0xFFFFFFFF, tức là 4GB Windows cũng cho phép mỗ ến trình có không gian địa chỉ logic riêng của mình i ti
là 4GB 2GB thấp nhất của không gian địa chỉ này sẵn có cho ến trình ở ế độ ti chngười dùng và 2GB cao hơn được dành cho mã chế độ nhân của Windows Nhưng làm thế nào Windows có thể cung cấp không gian địa chỉ 4GB cho nhiều tiến trình khi tổng bộ ớ nó có thể truy cập cũng bị ới hạn lại 4GB? Để đạt đượnh gi c điều này, Windows sử dụng một tính năng của bộ xử lý x86 (386 trở lên) được biết đến là phân trang (paging)
Phân trang cho phép phần mềm sử dụng một địa chỉ bộ ớ khác nhau (được biếnh t đến là địa chỉ logic) so với địa chỉ bộ ớ vật lý Đơn vị phân trang của bộ xử lý nhchuyển đổi địa chỉ logic này thành địa chỉ vật lý một cách trong suốt Điều này cho phép mỗ ến trình trong hệ ống có không gian địa chỉ logic riêng của mình là i ti th4GB
Trang 10Để ểu rõ hơn về ều này, hãy xem cách phân trang trong x86 hoạt động.hi đi
2.1.1 Phân trang trong Bộ xử lý x86
Bộ xử lý x86 chia không gian địa chỉ vật lý (hoặc bộ ớ vật lý) thành các trang 4 nh
KB Do đó, để truy cập 4GB bộ ớ, chúng ta sẽ cần 1 triệu (1024x1024) trang nh4KB Bộ xử lý sử dụng một cấu trúc hai cấp để tham chiếu đến những trang này Bạn có thể nghĩ về nó như một ma trận hai chiều có kích thước 1024x1024 Chiều đầu tiên được gọi là Bảng Địa chỉ Trang (Page Directory), và chiều thứ hai được gọi là Bảng Trang (Page Table) Do đó, chúng ta có thể tạo ra 1 Bảng Địa chỉ Trang với 1024 mục, mỗi mục trỏ đến một Bảng Trang Điều này cho phép chúng ta có
1024 Bảng Trang Mỗi Bảng Trang có thể có 1024 mục, mỗi mục trỏ đến một trang
4 KB Một cách trực quan, nó trông như sau:
Mỗi Mục Bảng Địa chỉ Trang (Page Directory Entry hoặc PDE) có kích thước 4 byte và trỏ đến một Bảng Trang Tương tự, mỗi Mục Bảng Trang (Page Table Entry ặc PTE) cũng có kích thước 4 byte và trỏ đến một địa chỉ vật lý của mộho t trang 4KB Để lưu trữ 1024 PDE, mỗi cái chứa 1024 PTE, chúng ta sẽ cần tổng cộng 4 x 1024 x 1024 byte, tức là 4MB Do đó, để chia toàn bộ không gian địa chỉ 4GB thành các trang 4KB, chúng ta cần 4 MB bộ nhớ
Như đã thảo luận ở trên, toàn bộ không gian địa chỉ ợc chia thành các trang đư4KB Do đó, khi một PDE hoặc PTE được sử dụng, 20 bit cao của nó cung cấp một địa chỉ ợc căn chỉnh với trang 4KB và 12 bit thấp được sử dụng để lưu trữ thông đưtin bảo vệ trang và một số thông tin quản lý khác mà một hệ ều hành cần để đi hoạt
Trang 11động đúng cách 20 bit cao đại diện cho địa chỉ vật lý thực tế được gọi là Số Khung Trang (Page Frame Number - PFN)
2.1.2 Quản lý bảng trang trong Windows
Trong hệ ều hành Windows, mỗi tiến trình có Bảng Trang riêng và Bảng Trang điriêng Do đó, Windows cấp 4 MB không gian này cho mỗi tiến trình Khi một tiến trình được tạo, mỗi mục trong Bảng Trang chứa địa chỉ vật lý của một Bảng Trang Các mục trong bảng trang có thể có trạng thái là hợp lệ ặc không hợp lệ Các homục hợp lệ ứa địa chỉ vật lý của trang 4KB được cấp phát cho tiến trình Mộch t mục không hợp lệ ứa một số bit đặc biệt để đánh dấu nó không hợp lệ và những chmục này được gọi là PTE không hợp lệ
Khi bộ ớ nh được cấp phát cho tiến trình, các mục trong Bảng Trang này được điền với địa chỉ vật lý của các trang đã được cấp phát Cần nhớ rằng một tiến trình không biết gì về bộ ớ vật lý và chỉ sử dụng địa chỉ logic Chi tiết về địa chỉ logic nhtương ứng với địa chỉ vật lý được quản lý một cách trong suốt bởi Quản lý Bộ ớ nhWindows và bộ xử lý Địa chỉ mà Bảng Trang của một tiến trình nằ ở trong bộ m nhớ vật lý được gọi là Địa chỉ Cơ Sở Bảng Trang Địa chỉ này được lưu trữ trong một thanh ghi CPU đặc biệt được gọi là CR3 (trên x86) Khi chuyển đổi ngữ cảnh, Windows tải giá trị mới của CR3 để ỏ đến Địa chỉ Cơ Sở Bảng Trang của tiếtr n trình mới Như vậy, mỗi tiến trình có phân chia riêng của không gian địa chỉ vật lý 4GB
Tổng bộ ớ ợc cấp phát một lần cho tất cả các tiến trình trong hệ nh đư thống không thể vượt quá tổng lượng RAM + kích thước file đổi trang, nhưng phương pháp được thảo luậ ở trên cho phép Windows cung cấp mỗi tiến trình không gian địn a chỉ logic (hoặ ảo) riêng 4GB Chúng ta gọi nó là không gian địa chỉ ảo vì mặc dù c tiến trình có toàn bộ dãy địa chỉ 4GB có sẵn, nhưng nó chỉ có thể sử dụng bộ ớ nh
đã được cấp phát Nếu một tiến trình cố gắng truy cập một địa chỉ chưa được cấp phát, nó sẽ gặp phải vi phạm quyền truy cập vì PTE tương ứng với địa chỉ đó trỏ đến giá trị không hợp lệ Ngoài ra, tiến trình không thể cấp phát nhiều bộ ớ hơn nh
so với điều có sẵn trong hệ thống
Phương pháp này của việc tách bộ ớ logic khỏi bộ ớ vật lý mang lại nhiều lợnh nh i ích Một tiến trình nhận được không gian địa chỉ 4GB tuyến tính, vì vậy các lập trình viên ứng dụng không cần phải lo lắng về các đoạn như trong thời kỳ DOS cũ
Nó cũng cho phép Windows chạy nhiều tiến trình và để họ sử dụng bộ ớ vật lý nhtrên máy mà không phải lo lắng về ệc chúng "chèn lên" không gian địa chỉ củvi a nhau Một địa chỉ logic trong một tiến trình sẽ không bao giờ trỏ đến bộ ớ vật lý nh
Trang 12được cấp phát cho một tiến trình khác (trừ khi họ đang sử dụng một loại bộ ớ nhchia sẻ nào đó) Do đó, một tiến trình không thể đọc hoặc ghi vào bộ ớ của tiếnh n trình khác
Quá trình chuyển đổi từ địa chỉ logic sang địa chỉ vật lý được thực hiện bởi bộ xử
lý Một địa chỉ logic 32 bit được chia thành ba phần như dưới đây
Bộ xử lý tải địa chỉ vật lý của bảng trang cơ sở được lưu trữ trong CR3 Sau đó, nó
sử dụng 10 bit cao nhất từ địa chỉ logic như một chỉ mục trong Bảng Trang, điều này cung cấp cho bộ xử lý một Mục Bảng Trang (PDE) trỏ đến một Bảng Trang
10 bit tiếp theo được sử dụng làm chỉ mục trong bảng trang Sử dụng 10 bit này, nó
có được một mục Bảng Trang (hoặc PTE) trỏ đến một trang vật lý 4KB 12 bit thấp nhất được sử dụng để địa chỉ từng byte riêng lẻ trên một trang
Windows cung cấp bảo vệ bộ ớ để đảm bảo rằng một tiến trình không thể truy nhcập bộ ớ của tiến trình khác Điều này là quan trọng để đảm bảo hoạt động mượnh t
mà của nhiều tiến trình đồng thời Windows thực hiện bảo vệ này thông qua các biện pháp sau:
Địa chỉ Vật lý trong Các Mục Bảng Trang (PTE): Windows chỉ bao gồm địa chỉ vật
lý của bộ nhớ đã được cấp phát trong Các Mục Bảng Trang (PTE) cho một tiến trình cụ ể Điều này có nghĩa là nếu một tiến trình cố gắng truy cập một địa chỉ thchưa được cấp phát cho nó, điều này sẽ dẫn đến vi phạm quyền truy cập Bằng cách hạn chế PTE chỉ ứa địa chỉ vật lý hợp lệ, Windows ngăn chặn việc truy cậch p
bộ nhớ một cách trái phép
Bảo vệ Ứng dụng Tấn công: Để ngăn chặn tiến trình lừa đảo từ ệc cố gắng sửvi a đổi bảng trang của chính mình để truy cập bộ ớ vật lý của một tiến trình khác, nhWindows lưu trữ bảng trang trong không gian địa chỉ kernel Như đã thảo luận trước đó, trong tổng không gian địa chỉ logic 4GB được cấp cho một tiến trình, có 2GB được dành cho chế độ người dùng và 2GB dành cho kernel của Windows Do
đó, mộ ứng dụng chế độ t người dùng không thể ực tiếp truy cập hoặc sửa đổtr i bảng trang Biện pháp này đảm bảo rằng các ến trình chế độ người dùng không tithể can thiệp vào các cơ chế bảo vệ bộ ớ một cách không ủy quyềnh n
Trang 13Quyền Chế Độ Kernel: Trong khi ứng dụng chế độ người dùng bị hạn chế khỏi việc truy cập hoặc sửa đổi bảng trang trực tiếp, các trình điều khiển chế độ kernel
có đặc quyền để thực hiện các hoạt động như vậy Trong chế độ kernel, một trình điều khiển có đặc quyền được nâng cao và gần như sở hữu toàn bộ hệ ống Điềth u này cho phép các thành phần chế độ kernel, chẳng hạn như trình điều khiển, thực hiện thay đổi trong bảng trang theo nhu cầu Cần lưu ý rằng các hoạt động chế độ kernel yêu cầu xem xét cẩn thận, vì chúng có thể ảnh hưởng đến sự ổn định và bảo mật của hệ thống
Tóm lại, bằng cách quản lý cẩn thận nội dung của Các Mục Bảng Trang (page table entry) và hạn chế quyền truy cập vào các thành phần quan trọng ở ế độ kernel, chWindows đảm bảo bảo vệ bộ ớ mạnh mẽ ữa các tiến trình, ngăn chặn truy cậnh gi p trái phép và cải thiện tổng thể về mặ ổn định và an ninh của hệ t điều hành
Thành phần chính quản lý không gian địa chỉ ảo, phân bổ bộ nhớ vật lý và trang của hệ ống là th trình quản lý bộ nh ớ ảo (VM) Thiết kế của trình quản lý VM giả định rằng phần cứng cơ bản hỗ ợ ánh xạ từ ảo sang vật lý, cơ chế trang và tính trnhất quán bộ ớ đệm trên các hệ ống đa xử lý, cũng như cho phép nhiều mụnh th c nhập bảng trang trỏ đến cùng một khung trang vật lý Trình quản lý VM trong Windows sử dụng mô hình quản lý dựa trên trang với kích thước trang là 4 KB và
2 MB trên các bộ xử lý AMD64 và IA-32 tương thích và 8 KB trên IA64 Các trang dữ ệu được phân bổ cho mộ ến trình không nằm trong bộ ớ vật lý đượli t ti nh c
lưu trữ trong các tệp trang trên đĩa ặc được ánh xạ ực tiếp vào một tệp thông ho trthường trên hệ ống tệ cục bộ ặc từ xa Một trang cũng có thể ợc đánh dấth p ho đư u
là zero-fill-on-demand, tức là khởi tạo trang với giá trị zero trước khi được phân
bổ, do đó xóa nội dung trước đó
Trên bộ xử lý IA-32, mỗi tiến trình có không gian địa chỉ ảo 4 GB 2 GB trên cùng chủ yếu giống nhau cho tất cả các tiến trình và được sử dụng bởi Windows ở ế ch
độ kernel để truy cập mã nguồn và cấu trúc dữ ệu của hệ ều hành Đối với kiếli đi n trúc AMD64, Windows cung cấp không gian địa chỉ ảo 8 TB cho chế độ người dùng từ 16 EB được hỗ trợ bởi phần cứng hiện tại cho mỗi tiến trình
Các khu vực quan trọng trong khu vực chế độ kernel không giống nhau cho tất cả các tiến trình là self-map, hyperspace và session space Phần cứng tham chiếu đến
bảng trang của một tiến trình bằng cách sử dụng số trang khung vật lý, và bản đồ
tự ánh xạ của bảng trang (Page table self-map) tự làm cho nội dung của bảng
trang của tiến trình ở nên truy cập được bằng địa chỉ ảo tr Hyperspace ánh xạ
Trang 14thông tin tập làm việc hiện tại của tiến trình vào không gian địa chỉ kernel Session space ợc sử dụng để chia sẻ một phiên bản của các trình điều khiển Win32 và đưcác trình điều khiển cụ ể cho phiên làm việc (TS) giữa tất cả các ến trình trong th ticùng một phiên TS Các phiên TS khác nhau chia sẻ các phiên bản khác nhau của các trình điều khiển này, nhưng chúng được ánh xạ tại cùng một địa chỉ ảo Khu vự ảo dưới, chế độ c người dùng của không gian địa chỉ ảo là cụ ể cho từng thtiến trình và có thể truy cập bởi cả các luồng chế độ người dùng và chế độ kernel Trình quản lý VM của Windows sử dụng một tiến trình hai bước để phân bổ bộ nhớ ảo
1 Bước đầu tiên dự ữ một hoặc nhiều trang địa chỉ ảo trong không gian địtr a chỉ ảo của tiến trình
2 Bước thứ hai cam kết phân bổ (commits the allocation) bằng cách chỉ
định không gian bộ ớ ảnh o (bộ ớ vật lý hoặc không gian trong các tệ nh p trang) Windows giới hạn lượng không gian bộ ớ ảo mà mộ ến trình sử nh t tidụng bằng cách áp đặt một hạn mức cho bộ nhớ đã cam kết Mộ ến trình t tihủy cam kết bộ ớ mà nó không sử dụng nữa để ải phóng không gian bộ nh ginhớ ảo cho việc sử dụng bởi các tiến trình khác
API được sử dụng để dự ữ địa chỉ ảo và cam kết bộ ớ ảo lấy một bảng điềtr nh u khiển trên đối tượng ến trình như là tham số Điều này cho phép mộ ến trình ti t tikiểm soát bộ ớ ảo của mộnh t tiến trình khác Các hệ thống môi trường quản lý bộ nhớ của các ến trình khách theo cách này.ti
Windows thực hiện bộ ớ chia sẻ bằng cách định nghĩa nh một đối tượng thành phần (section object) Sau khi có được một bảng điều khiển đối tượng phần, một
tiến trình ánh xạ bộ ớ của phần vào một phạm vi địa chỉ, gọi là nh một View Một
tiến trình có thể thiết lập một xem của toàn bộ ần hoặc chỉ ần nào đó mà nó ph phcần Windows cho phép các phần được ánh xạ không chỉ vào ến trình ện tại mà ti hicòn vào bất kỳ tiến trình nào mà người gọi có một bảng điều khiển
Các phần có thể được sử dụng theo nhiều cách Một phần có thể được hỗ ợ bằng tr
không gian đĩa chứa trong tệp trang hệ thống hoặc trong một tệp thông thường (a memory-mapped file) Một phần có thể dựa trên, có nghĩa là nó xuất hiện tại
cùng một địa chỉ ảo cho tất cả các tiến trình cố gắng truy cập nó Các phần cũng có thể đại diện cho bộ ớ vật lý, cho phép mộ ến trình 32 bit truy cập nhiều bộ nh t ti nhớ vật lý hơn so với không gian địa chỉ ảo của nó có thể ứa ch