Windows 2000 được Microsoft giới thiệu lần đầu tiên vào ngày 17 tháng 2 năm 2000. Windows 2000 có 4 phiên bản là: Professional, Server, Advanced Server, và Datacenter Server.
Windows 2000 được xây dựng dựa trên Windows NT Server 4.0, nó thừa hưởng lại tất cả các chức năng của Windows NT Server 4.0 và thêm vào đó là giao diện đồ họa thân thiện với người sử dụng.
Windows 2000 được thiết kế để chạy trên các kiến trúc phần cứng khác nhau như các hệ thống dựa trên nền Intel CISC và RISC, Alpha AXP, Motorola PowerPC, . Nó được viết bởi ngôn ngữ C và C++, ngôn ngữ assembly chỉ được sử dụng để viết các thành phần giao tiếp trực tiếp với phần cứng, mã ngôn ngữ assembly không chỉ tồn tại trong kernel và HAL mà nó còn tồn tại trong phần kernel mode của hệ thống con Win32, và trong một vài thư viện của user mode.
Windows 2000 là hệ điều hành đa nhiệm 32 bít, được xây dựng để quản lý các hệ thống mạng máy tính, nó hỗ trợ cả 2 mô hình mạng: client/server và peer to peer.
6 trang |
Chia sẻ: tuandn | Lượt xem: 2362 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Tiểu luận Quản lí bộ nhớ Windows 2000, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
Tiểu Luận
Môn: Lí Thuyết Hệ Điều Hành.
Đề Tài: Quản Lí Bộ Nhớ Windows 2000.
Giảng Viên: TRỊNH MINH CHÂU
Sinh Viên: PHẠM NGỌC HẢI
Lớp: TH-7A
Tóm Tắt: 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. Trong bài này, ta xem xét một số vấn đề về quản lí bộ nhớ của Windows 2000 như nhiệm vụ của quản lí bộ nhớ; sự phân trang, phân đoạn trong Windows 2000; tìm hiểu về không gian địa chỉ riêng và sự chuyển đổi địa chỉ trong hệ điều hành Windows 2000.
Hà Nội, 12/2010
I.Vài nét về Hệ điều hành Windows 2000:
Windows 2000 được Microsoft giới thiệu lần đầu tiên vào ngày 17 tháng 2 năm 2000. Windows 2000 có 4 phiên bản là: Professional, Server, Advanced Server, và Datacenter Server.
Windows 2000 được xây dựng dựa trên Windows NT Server 4.0, nó thừa hưởng lại tất cả các chức năng của Windows NT Server 4.0 và thêm vào đó là giao diện đồ họa thân thiện với người sử dụng.
Windows 2000 được thiết kế để chạy trên các kiến trúc phần cứng khác nhau như các hệ thống dựa trên nền Intel CISC và RISC, Alpha AXP, Motorola PowerPC, .... Nó được viết bởi ngôn ngữ C và C++, ngôn ngữ assembly chỉ được sử dụng để viết các thành phần giao tiếp trực tiếp với phần cứng, mã ngôn ngữ assembly không chỉ tồn tại trong kernel và HAL mà nó còn tồn tại trong phần kernel mode của hệ thống con Win32, và trong một vài thư viện của user mode.
Windows 2000 là hệ điều hành đa nhiệm 32 bít, được xây dựng để quản lý các hệ thống mạng máy tính, nó hỗ trợ cả 2 mô hình mạng: client/server và peer to peer.
II.Quản lý bộ nhớ trong Windows 2000:
Bộ nhớ chính là thiết bị lưu trữ duy nhất thông qua đó CPU có thể trao đổi thông tin với môi trường ngoài, do vậy nhu cầu tổ chức, quản lý bộ nhớ là một trong những nhiệm vụ trọng tâm hàng đầu của hệ điều hành . Bộ nhớ chính được tổ chức như một mảng một chiều các từ nhớ, mỗi từ nhớ có một địa chỉ . Việc trao đổi thông tin với môi trường ngoài được thực hiện thông qua các thao tác đọc hoặc ghi dữ liệu vào một địa chỉ cụ thể nào đó trong bộ nhớ.
Quản lý bộ nhớ là một phần của điều hành Windows 2000 và tồn tại trong file Ntoskrnl.exe. Không có bộ phận nào của quản lý bộ nhớ tồn tại trong HAL. Quản lý bộ nhớ bao gồm các thành phần sau đây:- Một tập hợp các dịch vụ hệ thống điều hành, phân bổ, thu hồi và quản lý bộ nhớ ảo, hầu hết là tiếp xúc thông qua API Win32 hoặc trình điều khiển kernel-mode giao diện thiết bị.- Một bản dịch không hợp lệ và xử lý bẫy lỗi truy cập để giải quyết việc phần cứng phát hiện được những trường hợp ngoại lệ trong quản lý bộ nhớ và làm cho những trang ảo đại diện cho một tiến trình.
Windows 2000 bao gồm một hệ thống tiên tiến quản lý bộ nhớ ảo. Nó cung cấp một số chức năng của Win32 để sử dụng, một phần liên quan đến việc điều hành và sáu chuyên đề chính giành riêng cho việc quản lý nó. Trong Windows 2000, mỗi quá trình người dùng có riêng không gian địa chỉ ảo dài 32 bit hoặc 4GB của không gian địa chỉ ảo. Có thấp hơn 2GB trừ đi khoảng 256Mb được giành riêng cho mã và dữ liệu của tiến trình, trên 2GB ánh xạ tới bộ nhớ chính một cách được bảo vệ.Các không gian địa chỉ ảo yêu cầu được phân trang với kích thước các trang cố định.
*Nhiệm vụ quản lý bộ nhớ của Windows 2000:
Thành phần quản lý bộ nhớ của Windows 2000 thực hiện hai nhiệm vụ chính sau đây:
-Chuyển đổi, hay ánh xạ, không gian địa chỉ ảo của một tiến trình vào bộ nhớ vật lý để khi một tiểu trình thực thi trong một ngữ cảnh của tiến trình đó, đọc hay ghi vào không gian địa chỉ ảo thì địa chỉ vật lý chính xác sẽ được tham chiếu.
-Phân trang một vài nội dung bộ nhớ ra đĩa (swap out) khi nó trở nên vượt quá sự đáp ứng bộ nhớ của hệ thống. Có nghĩa là, khi việc thực thi các tiểu trình hay mã hệ thống cố gắng sử dụng nhiều bộ nhớ vật lý hơn khả năng hiện thời – và mang nội dụng trở lại vào bộ nhớ vật lý (swap in) khi cần.
Hệ điều hành Windows 2000 Professional và Server hỗ trợ lên đến 4GB bộ
nhớ vật lý, Windows 2000 Advanced Server thì hỗ trợ lên đến 8 GB, và Windows
2000 Datacenter Server thì lên đến 64 GB. Thực tế bộ nhớ lớn nhất cho Windows
2000 Datacenter Server phụ thuộc vào khả năng phần cứng. Bởi vì Windows 2000
là một hệ điều hành 32-bit, nên các tiến trình người sử dụng có một không gian địa
chỉ ảo 32-bit, 4GB bộ nhớ phẳng.
Ngoài việc cung cấp sự quản lý bộ nhớ ảo, trình quản lý bộ nhớ cung cấp một tập lõi các dịch vụ mà trong đó các hệ thống con môi trường Windows 2000 khác nhau được xây dựng. Các dịch vụ này bao gồm các tập tin ánh xạ bộ nhớ, bộ nhớ copy on write, và hỗ trợ cho các ứng dụng sử dụng các không gian địa chỉ lớn, không liên tiếp.
*Sự phân trang trong Hệ điều hành Windows 2000:
Trong chiến lược phân trang của Inter 80386, Inter 80386 sử dụng bảng trang 2 cấp. Cấp đầu tiên là thư mục trang (page directory), cấp thứ hai là bảng trang (page table). Page directory có thể gồm 1024 phần tử. Tức là nó chia 4Gb không gian địa chỉ bộ nhớ thành 1024 nhóm trang, mỗi nhóm trang gồm 4Mb và sở hữu một bảng trang riêng. Mỗi bảng trang gồm 1024 phần tử, mỗi phần tử tương ứng với một trang đơn 4KB. Các hệ điều hành có thể lựa chọn sử dụng một page directory cho tất cả các tiến trình hoặc mỗi tiến trình có một page directory riêng hoặc kết hợp cả hai. Page directory của tác vụ hiện tại nằm trong bộ nhớ chính, page table có thể được chứa trong bộ nhớ ảo.
*Sự phân đoạn trong Hệ điều hành Windows 2000:
Khi sự phân đoạn được sử dụng, mỗi địa chỉ ảo bao gồm 16 bit segment và 32 bit offset. Hai bit đầu tiên của segment được sử dụng trong chiến lược bảo vệ bộ nhớ, 14 bit còn lại dùng để chỉ đến một segment cụ thể. Do đó với bộ nhớ không được phân đoạn, bộ nhớ ảo của chương trình người sử dụng là 232 = 4GB. Với bộ nhớ được phân đoạn, tổng không gian bộ nhớ ảo được nhìn bởi chương trình người sử dụng là 246 = 64TB. Không gian địa chỉ vật lý 32 bit cho kích thước tối đa là 4GB. Lượng bộ nhớ ảo thực tế có thể lớn hơn 64TB: Đối với Inter 80386 địa chỉ ảo phụ thuộc vào processor đang sử dụng. Một nửa không gian địa chỉ ảo (8K segment x 4GB) là không gian chung, được chia sẻ cho tất cả các tiến trình, phần còn lại là địa chỉ cục bộ và dành riêng cho mỗi tiến trình.
Gắn liền với mỗi đoạn là 2 dạng thức của sự bảo vệ: mức đặc quyền (privilege level) và thuộc tính truy cập (access attribue). Có 4 mức đặc quyền, từ được bảo vệ cao nhất đến được bảo vệ thấp nhất: level 0, level 1, level 2, level 3. Mức đặc quyền có thể được gắn với segment dữ liệu hoặc với program segment. Một chương trình thực hiện chỉ có thể truy cập dữ liệu trong segment khi mức đặc quyền của nó thấp hơn hoặc bằng mức đặc quyền gắn với segment dữ liệu. Phần cứng không bắt buộc sử dụng cấp đặc quyền nào, việc này do các nhà thiết kế hệ điều hành quyết định. Thuộc tính truy cập của một segment dữ liệu chỉ ra có hay không sự cho phép truy cập read/write hoặc read-only. Đối với các segment program, thuộc tính truy cập chỉ ra có hay không truy cập read/excute hoặc readonly.
Khi sự phân đoạn được sử dụng, địa chỉ được sử dụng trong chương trình là địa chỉ ảo và được chuyển thành địa chỉ tuyến tính. Khi sự phân đoạn không được sử dụng, địa chỉ được sử dụng trong chương trình cũng là địa chỉ tuyến tính. Trong cả hai trường hợp địa chỉ tuyến tính đều được chuyển thành địa chỉ thực 32 bit.
*Address Space Layout:
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. 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.
*Chuyển đổi địa chỉ:
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 để chuyển đổi địa chỉ ảo thành địa chỉ vật lý. 32bit 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)).
-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ủ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, để 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 bit trong PDE tương tự như các bít của PTE.
Trên các hệ thống x86, 1024 đượ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).
- Page Table: 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.
Trên nền phần cứng x86, các PTE luôn luôn rộng 4 byte (32 bít), vì thế mỗi bảng trang chứa 1024 PTE và có thể ánh xạ 1024 trang cho tổng số 4Mb 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 cho phép tham chiếu đến 1024 PTE. 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 (mỗi bảng trang trên hệ thống x86 ánh xạ 4Mb của các trang dữ liệu).
-Byte trong phạm vi trang:
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).
*Ngoài ra, trình quản lí bộ nhớ còn cung cấp một tập các dịch vụ hệ thống để định vị và giải phóng bộ nhớ ảo, chia sẻ bộ nhớ giữa các tiến trình, ánh xạ các tập tin vào bộ nhớ, flush các trang ảo vào đĩa, truy lục thông tin về một vùng các trang ảo, thay đổi sự bảo vệ của các trang ảo, và khoá các trang ảo vào bộ nhớ. Một số dịch vụ mà Windows 2000 cung cấp như dịch vụ bảo vệ bộ nhớ, sự bảo vệ các trang copy-on-write, Address Windowing Extensions (AWE)….
Tài liệu tham khảo:
Inside Windows 2000, Third Edition- Copyright © 2000 by David A. Solomon and Mark E. Russinovich- Download: 06/12/2010.
Giáo trình Windows 2000 Server. Nguồn: Download: 06/12/2010.
Giáo trình Lí thuyết hệ điều hành- Biên soạn: Nguyễn Kim Tuấn – Trường ĐH Khoa học-ĐH Huế. Download: 10/10/2010.