Đa tiểu trình được thực hiện trong một tiến trình đơn, mỗi tiểu trình có thể thực hiện đồng thời trên các processor khác nhau. Cho phép các thành phần khác nhau của hệ thống như device driver, server process chạy tốt trên hệ thống multiprocessor. I.6.8. Kiến trúc của Windows 2000 Kernel Mode & User Mode Để bảo vệ hệ điều hành tránh sự truy cập và/hoặc thay đổi bất hợp lệ của các chương trình ứng dụng của người sử dụng, Windows 2000 sử dụng hai chế độ xử lý truy cập: Kernel mode và User mode. Các chương trình ứng dụng của người sử dụng chạy trong user mode, trong khi đó các dịch vụ hệ thống và các chương trình điều khiển thiết bị của hệ điều hành chạy trong kernel mode. Kernel mode chỉ đến một chế độ của việc thực hiện trong processor mà ở đó nó có toàn quyền truy cập đến tất cả hệ thống bộ nhớ và tất cả các chỉ thị của CPU. Trong cấu trúc này phần mềm hệ điều hành được cung cấp một mức đặc quyền cao hơn so với mức đặc quyền của các chương trình ứng dụng của người sử dụng. Processor cung cấp các cơ sở cần thiết để người thiết kế hệ điều hành đảm bảo rằng các ứng dụng không thể phá vỡ trạng thái ổn định của hệ thống và làm hỏng nó. Các tiểu trình trong user mode thực hiện trong không gian địa chỉ bộ nhớ được bảo vệ, mỗi thành phần trong user mode sở hữu một không gian địa chỉ tiến trình riêng. Trong khi đó Windows 2000 không cung cấp bất kỳ một sự bảo vệ nào trên các không gian bộ nhớ riêng được sử dụng bởi các thành phần chạy trong kernel mode. Trong một tuyên bố khác, trong kernel mode, mã hệ điều hành và các chương trình điều khiển thiết bị hoàn toàn có thể truy cập đến không gian bộ nhớ hệ thống và có thể vượt qua sự giám sát an toàn của Windows 2000 để truy cập đến các đối tượng. Bởi vì phần lớn mã của hệ điều hành Windows 2000 chạy trong kernel mode, các thành phần quan trọng nhất của hệ điều hành chạy trong kernel mode được thiết kế và được kiểm tra rất cẩn thận để đảm bảo rằng nó không vi phạm đến sự an toàn của hệ thống. Chú ý: Kiến trúc của processor Intel x86 định nghĩa 4 cấp/ vòng đặc quyền truy cập (Privilege levels/ Rings), để bảo vệ code và data của hệ thống, tránh sự ghi đè (overwrite) có chủ ý (maliciously) hoặc không chủ ý (inadvertently) bởi các code có cấp đặc quyền truy cập thấp hơn. Windows 2000 sử dụng cấp 0/ vòng 0 cho Kernl mode và cấp 3/ vòng 3 cho Uer mode. Nguyên nhân mà Windows 2000 chỉ sử dụng có 2 cấp là do một vài kiến trúc phần cứng trước đó, chẳng hạn như Compaq Alpha và Silicon Graphics, chỉ được cài đặc 2 cấp đặc quyền truy cập. Kiến trúc của Windows 2000 Hình vẽ 1.12 sau đây cho ta thấy kiến trúc đã được đơn giản hoá của Windows 2000. Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Hình vẽ cho ta thấy kiến trúc của hệ điều hành Windows 2000 được chia thành hai phần: User mode và Kernel mode. User mode bao gồm các thành phần: System support processes, Service Processes, User applications, và Environment subsystems, mỗi thành phần này sở hữu một không gian địa chỉ tiến trình riêng. Các thành phần trong User mode: System support processes (các tiến trình hỗ trợ hệ thống): Như là tiến trình logon, quản lý các Session, các thành phần này không phải là các dịch vụ của Windows 2000, do đó nó không được khởi động bởi thành phần Service Control Manager. Service processes (các tiến trình dịch vụ): Đó là các dịch vụ chủ Win32, như là dịch Task Scheduler và Spooler, và cungc có thể là các ứng dụng server Windows 2000 như là Microsoft SQL Server, Exchange Server và các thành phần chạy như là các dịch vụ. User applications (các ứng dụng người sử dụng): Nó có thể là một trong năm loại sau: Win32, Windows 3.1, MS_DOS, POSIX, hoặc OS/2 1.2. Environment subsystems (các hệ thống con môi trường): nó đưa ra các dịch vụ nguyên thuỷ của hệ điều hành, các ứng dụng của người sử dụng thông qua một tập các hàm có thể gọi được, do đó nó cung cấp một môi trường hệ điều hành cho các ứng dụng. Windows 2000 đưa ra ba hệ thống con môi trường: Win32, POSIX và OS/2, trong đó Win32 là hệ thống con đặc biệt nhất, Windows 2000 không thể chạy nếu không có nó, do đó nó phải System Support Processes Service Processes User Applicatioes Environment SubsystemÐ Subsystem DLLs Executive Kernel Device Drivers Hard Abstraction Layer Windows And Graphics Hình 1.12 : Kiến trúc được đơn giản của Windows 2000 Kernel mode User mode Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m luôn ở trạng thái chạy ngay sau khi hệ thống được khởi động. POSIX và OS/2 được cấu hình là chỉ khởi tạo khi cần. Các ứng dụng được viết trên các hệ điều hành khác nhau có thể chạy trên Windows 2000 nhờ sử dụng các environment subsystem. Subsystem DLLs (hệ thống con các thư viện liên kết động): Hình trên cho thấy trong Windows 2000 các ứng dụng của người sử dụng không thể gọi trực tiếp các dịch vụ nguyên thủy của hệ điều hành, mà chúng phải thông qua một hoặc nhiều các DLL. Vai trò của các Subsystem DLL là chuyển các yêu cầu gọi hàm vào bên trong các dịch vụ hệ thống của Windows 2000. Các thành phần trong Kernel mode: Windows 2000 Executive: Chứa các dịch vụ cơ sở của hệ điều hành, như là: quản lý bộ nhớ, quản lý các tiến trình và tiểu trình, quản lý sự an toàn hệ thống, quản lý I/O, và thực hiện việc truyền thông liên tiến trình. Windows 2000 Kernel: Bao gồm các chức năng cấp thấp của hệ điều hành như là: lập lịch tiểu trình, đồng bộ cho các hệ thống multiprocessor. Nó cũng cung cấp một tập các thường trình và các đối tượng cơ sở mà Executive sử dụng để cài đặt các chức năng cấp cao. Device drivers (các trình điều khiển thiết bị): Bao gồm cả hai: điều khiển thiết bị phần cứng và điều khiển hệ thống file và mạng. Điều khiển thiết bị phần cứng có nhiệm vụ chuyển các lời gọi hàm I/O từ phía người sử dụng thành các yêu cầu I/O thiết bị phần cứng cụ thể. HAL: Hardware Abstraction Layer (lớp phần cứng trừu tượng): Lớp này làm trừu tượng hoá các chi tiết phần cứng bên trong của PC, làm cho Windows 2000 Server tương thích với nhiều kiến trúc phần cứng khác nhau. Nó cho phép Windows 2000 chạy trên các nền vi xử lý khác nhau như Intel và Alpha, mà không cần duy trì 2 version khác của Windows 2000 Execute. HAL bảo vệ tất cả phần cứng và hỗ trợ các nền cụ thể cần cho mỗi thành phần trong hệ thống đối với tất cả phần cứng và hỗ trợ nềm cụ thể. HAL được cài đặt như là một DLL và đóng vai trò như là giao diện giữa các thành phần phần cứng và phần mềm. Window Manager and Graphical Device Interface (GDI): Window Manager và GDI được sử dụng để quản lý hệ thống hiển thị. Window Manager bảo vệ màn hình và nhận các lệnh từ các thiết bị nhập như là Mouse hoặc bàn phím. GDI điều khiển việc vẽ và thực hiện các thao tác đồ hoạ với sự giúp đỡ của các chức năng khác nhau được định nghĩa trước. Sau đây chúng ta sẽ tìm hiểu rõ hơn về một số thành phần trong kiến trúc của hệ điều hành Windows 2000: Environment Subsystem và Subsystem DLL: Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Vai trò của hệ thống con môi trường là đưa ra một vài tập con cơ sở các dịch vụ hệ thống trong Windows 2000 executive cho các ứng dụng. Mỗi hệ thống con có thể cung cấp truy cập đến các tập con khác nhau của các dịch vụ nguyên thủy của Windows 2000. Từ một ứng dụng được xây dựng trên một hệ thống con này không thể gọi đến một ứng dụng được xây dựng trên một hệ thống con khác. Các lời gọi hàm không thể lẫn lộn giữa các hệ thống con. Tức là một ứng dụng trên POSIX chỉ có thể gọi các dịch vụ được đưa ra bởi hệ thống con POSIX, và một ứng dụng Win32 chỉ có thể gọi các dịch vụ được đưa ra bởi hệ thống con Win32. Như đã biết các ứng dụng người sử dụng không thể gọi trực tiếp các dịch vụ hệ thống của Windows 2000 mà phải thông qua một hoặc nhiều các hệ thống con DLL. Các hệ thống con DLL Win32 như kernel32.dll, Advapi32.dll, User32.dll và Gdi32.dll, cài đặt các hàm Win32 API, để các ứng dụng của người sử dụng gọi nó thông qua tập hàm này. Khi một ứng dụng gọi một hàm trong hệ thống con DLL, thì một trong ba trường hợp sau sẽ xảy ra: Hàm được cài đặt hoàn toàn trong hệ thống con DLL. Nói cách khác là không có thông điệp gởi tới tiến trình Vai trò của hệ thống con môi trường, và không có một dịch vụ hệ thống nào trong Windows 2000 executive nào được gọi. Hàm được thực hiện trong user mode và kết quả được trả về cho chương trình gọi. Hàm yêu cầu một hoặc nhiều lời gọi đến Windows 2000 executive. Ví dụ khi các hàm Win32 ReadFile và WriteFile được gọi thì nó phải gọi đến các dịch vụ hệ thống I/O NtReadFile và NtWriteFile trong Windows 2000. Hàm yêu cầu một vài công việc để thực hiện trong tiến trình,.của hệ thống con môi trường. Các tiến trình của hệ thống con môi trường chạy trong user mode, chịu trách nhiệm duy trì trạng thái của các ứng dụng client chạy dưới sự điều khiển của nó. Trong trường hợp này một client/server yêu cầu tạo một hệ thống con môi trường qua một thông điệp gởi tới một hệ thống con để thực hiện một vài thao tác. Hệ thống con DLL thì đợi trả lời trước khi trả về cho ứng dụng gọi. Một vài hàm có thể kết hợp 2 trong 3 trường trên, như các hàm Win32: CreateProcess và CreateThread. Tập tin Ntdll.Dll là một hệ thống đặc biệt, nó hỗ trợ thư viện chính cho việc sử dụng các hệ thống con DLL. Nó chứa hai loại hàm sau: Dịch vụ hệ thống gởi đến các dịch vụ hệ thống Windows 2000 executive. Các hàm hỗ trợ bên trong được sử dụng bởi các hệ thống con, các hệ Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m thống con DLL và các hàm nguyên thủy điển hình khác. Các hàm ở nhóm đầu tiên cung cấp một giao diện để Windows 2000 executive có thể được gọi từ user mode. Có hơn 200 hàm như thế và các hàm này có thể truy cập thông qua Win32 API. Ntdll cũng chứa các hàm hỗ trợ như là image loader, heap manager và các hàm truyền thông tiến trình Win32. Executive: Windows 2000 executive là lớp trên của Ntoskrnl.exe (kernel là lớp thấp). Executive bao gồm các hàm sau: Các hàm được đưa ra và có thể gọi từ user mode. Đây là các hàm được gọi và được đưa ra qua Ntdll. Hầu hết các dịch vụ là được truy cập thông qua các hàm Win32 API hoặc các API của các Vai trò của hệ thống con môi trường khác. Các hàm chỉ có thể được gọi từ kernel mode, nó được đưa ra và được cung cấp in Windows 2000 DDK Windows 2000 Installable File System (IFS) Kit. Các hàm được đưa ra và có thể gọi từ kernel mode nhưng không được giới thiệu trong Windows 2000 DDK và IFS Kit. Các hàm được định nghĩa nhưng không được đưa ra. Đây là các hàm hỗ trợ bên trong, nó được gọi trong phạm vi Ntoskrnl. Windows 2000 Executive chứa các thành phần quan trọng sau đây: Configuration Manager (quản lý cấu hình): chịu trách nhiệm cài đặt và quản lý Registry hệ thống. I/O Manager (quản lý I/O): Thành phần này chuyển các lệnh đọc/ ghi trong user mode đến việc đọc/ghi của IRP (I/O Request Packets). Nó gồm có: các hệ thống file, các điều khiển thiết bị, quản lý bộ nhớ cache, quản lý bộ nhớ ảo. InterProcess Communication - IPC Manager (quản lý truyền thông liên tiến trình): Quản lý IPC là tạo liên kết giữa client và server. Environment subsystem đóng vai trò như là một client và Executive đóng vai trò như là một server. Nó được tạo ra từ 2 thành phần: Remote Procedure Call - RPC: giữ thông tin về kết nối giữa các client và các server trên các máy tính khác nhau. Local Procedure Call - RPC: giữ thông tin về kết nối giữa các client và các server trên cùng một máy tính. Security Manager (quản lý sự an toàn): Đây là thành phần tạo nên sự an toàn hệ thống bằng cách bắt buộc các chính sách an toàn trên các máy tính cục bộ. Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m . dịch vụ cơ sở của hệ điều hành, như là: quản lý bộ nhớ, quản lý các tiến trình và tiểu trình, quản lý sự an toàn hệ thống, quản lý I/O, và thực hiện việc truyền thông liên tiến trình. Windows. có: các hệ thống file, các điều khiển thiết bị, quản lý bộ nhớ cache, quản lý bộ nhớ ảo. InterProcess Communication - IPC Manager (quản lý truyền thông liên tiến trình) : Quản lý IPC là. Manager (quản lý cấu hình): chịu trách nhiệm cài đặt và quản lý Registry hệ thống. I/O Manager (quản lý I/O): Thành phần này chuyển các lệnh đọc/ ghi trong user mode đến việc đọc/ghi của IRP