Thứ Bảy, 27 tháng 4, 2013

Virtual Memory in Windows

Windows implements một hệ thống bộ nhớ ảo (virtual memory system ) dựa trên không gian địa chỉ phẳng (flat) hay còn gọi là không gian địa chỉ tuyến tính (linear), cung cấp cho mỗi process với ảo tưởng rằng có một không gian địa chỉ lớn và riêng tư (private) danh cho mỗi process. VM (virtual memory) cung cấp một tầm nhìn luận lý của bộ nhớ và có thể không tương ứng với bố trí vật lý của nó. Tại run time, memory manager, với sự trợ giúp từ hardware, translates hoặc maps, địa chỉ ảo vào trong địa chỉ vật lý, nơi dữ liệu thực sự được lưu. Bằng việc điểu khiển sự bảo vệ và mapping, OS có thể đảm bảo rằng mỗi individial processes không đụng vào bên trong processes khác cũng như là overwrite OS data.

Bởi vì hầu hết hệ thống có ít physical memory (PM) hơn so với tổng VM trong sử dụng bởi việc running processes, memory manager transfers, hoặc pages, một vài memory contents lên đĩa. Paging data lên đĩa giải phóng PM vì vây nó có thể được sử dụng cho processes khác hoặc là cho chính OS. khi một thread access đến một VA (virtual address) đã được paged lên đĩa, virtual memory manager loads thông tin quay trở lại memory từ đĩa. Apps không cần phải thay đổi để theo bất cứ cách nào để "take advantage" về paging bởi vì hardware support enables memory manager để page mà không có "knowledge" hay sự trợ giúp của processes hoặc threads.

Kích thước không gian bộ nhớ ảo khác nhau đối với mỗi nền tảng hardware. Trên 32bit x86 system, tổng không gian địa chỉ ảo theo lý thuyết tối đa lên tới 4GB. Mặc định, Windows cấp phát một nửa trong số đó (một nửa dưới của 4GB virtual address space, từ x00000000 tới x7FFFFFFF) đến processes làm thành nơi lưu trữ cá nhân đơn nhất (unique private storage) và sử dụng nửa phần còn lại (nửa trên, từ x80000000 đến xFFFFFFFF) cho việc tận dụng bộ OS memory được bảo vệ của riêng nó. Việc mapping phần dưới thay đổi để thể hiện không gian địa chỉ ảo của process đang chạy hiện thời, nhưng việc mapping phần trên bao gồm cả bộ nhớ ảo của cả hệ điều hành. Windows 2000 Advanced Server, Windows 2000 Data Center, Windows XP (SP2 trở về sau) và Windows Server 2003 support boot-time options (/3GB và /USERVA qualifiers trong Boot.ini ) gửi đến cho processes running specially marked programs (không gian địa chỉ lớn biết flag được set trong header của excutable image) khả năng sử dụng lên tới 3GB của private address space (1GB cho OS). option này cho phép các apps như là database servers có thể giữ lượng lớn portions của DB trong không gian địa chỉ process, do đó giảm đi nhu cầu map subset views của database.

Mặc dù 3GB là lớn hơn 2GB, nhưng nó vẫn là không đủ virtual address space để map một lượng lớn DB có thê lơn tới nhiều GB. Để giải quyết việc này, Windows cung cấp một cơ chế được gọi là Address Windowing Extension (AWE) , những gì cho phép 32 bit app cấp phát lên đến 64GB của PM và sau đó map views, hoặc windows, vào trong 2-GB không gian địa chỉ ảo của nó. Mặc dù sử dụng AWE đặt gánh nặng việc quản lí mappings PM lên programers, nó giải quyết nhu cầu truy nhập trực tiếp nhiều hơn physical memory hơn là có thể được mapped mỗi lần  trong 32 bit process address space.

64 bit Windows cung cấp không gian địa chỉ lớn hơn cho processes: 7152 GB trên Itanium system và 8192 GB trên x64 system.

Không có nhận xét nào:

Đăng nhận xét