Tham khảo tài liệu ''giáo trình hình thành quy trình điều khiển tổng quan về gia tốc hệ điều hành của hệ thống p5'', công nghệ thông tin, hệ điều hành phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Trang 1 Đ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
Trang 2Hì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
Trang 3luô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:
Trang 4Vai 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ệ
Trang 5thố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ộ
Trang 6 Plug and Play Manager (quản lý plug and play): Plug and play theo dõi các hoạt động tại thời điểm Boot của các thiết bị plug and play và nó tương tác với HAL, các điều khiển thiết bị và Executive Nó xác định các điều khiển bus thực hiện việc cấu hình và đếm như thế nào Nó cũng xác định khi nào thì các điều khiển thiết bị được thêm vào hoặc khi nào thì khởi tạo một thiết bị
Process and Thread Manager (quản lý tiến trình và tiểu trình): Tạo và kết thúc các tiến trình và tiểu trình Hỗ trợ các tiến trình và tiểu trình được cài đặt bên trong Windows 2000 kernel
Và một số thành phần khác như: Power manager (quản lý nguồn);
Cache manager (quản lý cache); Virtual memory manager (quản lý bộ nhớ ảo), …
Ngoài ra executive còn chứa bốn nhóm chính các hàm hỗ trợ mà nó được sử dụng bởi chỉ các thành phần executive được liệt kê Sau đây là bốn loại hàm hỗ trợ:
Object Manager (quản lý đối tượng): Tạo, quản lý, xoá các đối tượng Windows 2000 executive và các loại dữ liệu trừu tượng mà nó được sử dụng để chỉ đến các tài nguyên của Windows 2000 như: các tiến trình, các tiểu trình, và các đối tượng đồng bộ khác
LPC facility: Chuyển thông điệp giữa các tiến trình client và các tiến trình server trên cùng máy tính LPC có tính mềm dẻo, và là version được tối ưu của Remote Function Call (RPC)
Một tập các hàm thư viện run-time như là: xử lý string, thực hiện các phép tính, chuyển đổi các kiểu dữ liệu và xử lý các cấu trúc
an toàn
Executive support routine: như là cấp phất bộ nhớ hệ thống, khoá truy cập bộ nhớ và các đối tượng đồng bộ
Kernel:
Kernel bao gồm một tập các hàm trong Ntoskrnl.exe mà nó cung cấp các kỹ thuật
cơ bản, như điều phối tiểu trình và đồng bộ các dịch vụ, được sử dụng bởi các
thành phần executive, cũng như hỗ trợ cho các kiến trúc phần cứng cấp thấp trên
các kiến trúc processor khác nhau Đa số các mã của kernel được viết bằng C, một
số ít thành phần quan trong can thiệp sâu vào phần cứng được viết bằng assembly
Một số các hàm của kernel được đưa ra trong DDK, đây là các thành phần cần thiết
cho việc cài đặt các trình điều khiển thiết bị
Hardware Abstraction Layer (HAL):
Như đã biết một trong những mục tiêu thiết kế của Windows 2000 là làm cho nó dễ
Trang 7dàng tương thích trên các nền phần cứng khác nhau HAL là thành phần chủ chốt
có thể tạo nên sự tương thích này HAL là một modun kernel mode có thể được nạp
(Hal.dll) mà nó có thể cung cấp một giao diện cấp thấp để Windows 2000 có thể
chạy trên các nền phần cứng khác nhau HAL làm ẩn các chi tiết phần cứng, như:
các giao diện I/O, các điều khiển ngắt và các cơ chế truyền thông giữa các
processor trong hệ thống multiprocessor, với bất kỳ một hàm nào trong cả các kiến
trúc cụ thể và các máy phụ thuộc
Trong Windows 2000 có nhiều tập tin Hal*.dll, mỗi tập tin hỗ trợ cho một hệ thống máy tính nào đó Hal.dll hỗ trợ cho các PC chuẩn, Halmps.dll hỗ trợ cho các
PC Multiprocessor, …
Device Drivers:
Các Device Driver (*.sys) là các modun kernel, nó là giao diện giữa thành phần
quản lý I/O và các phần cứng có liên quan Các device driver không thao tác trực
tiếp trên phần cứng, nó chỉ gọi các hàm trong HAL để giao tiếp với phần cứng
Windows 2000 có các loại Divice Driver sau đây:
Các hardware device driver thao tác phần cứng, sử dụng HAL, để ghi/đọc trên các thiết bị vật lý hoặc mạng Loại này bao gồm: các điều khiển bus, các điều khiển thiết bị giao tiếp với người sử dụng, các điều khiển thiết
bị lưu trữ khối, …
Các file system driver là các điều khiển mà Windows 2000 dùng nó
để truy cập các file trong hệ thống
Kernel Mode Drivers:
Kernel Mode Drivers cũng được cài đặt như là một thành phần, nó chứa tất cả các
chức năng cần thiết Nó gồm có: WMD (Windows Drive Model) driver, cùng với
nhiều driver để hỗ trợ cho các yêu cầu của các thiết bị cụ thể
I.14 Hệ điều hành Linux
Linux là hệ điều hành miễn phí được xây dựng từ hệ điều hành Unix Nó được phát
triển bởi Linus Torvalds, một sinh viên của trường Đại học Hensinki Linus chỉ
chịu trách nhiệm tạo ra hệ thống kernel Kernel là phần lõi của hệ điều hành, nó
chịu trách nhiệm thực hiện các tác vụ của hệ thống Linux bây giờ như một tập các
phần mềm mà trong đó bao gồm kernel và các thành phần khác để nó trở thành một
hệ điều hành hoàn chỉnh Một trong những nguyên nhân làm cho Linux được nhiều
người biết đến là nó được cung cấp miễn phí với mã nguồn mở
Hình vẽ 1.13 dưới đây cho thấy cấu trúc của hệ điều hành Unix Hình vẽ cho thấy hệ điều hành Linux được chia thành 2 cấp: User Level (cấp người sử dụng) và
Kernel Level (cấp lõi)
Trang 8 Kernel là cấp đặc quyền, ở đây không có giới hạn nào đối với kernel của hệ
thống Kernel có thể sử dụng tất cả các lệnh của vi xử lý, điều khiển toàn bộ bộ nhớ
và truyền thông trực tiếp đến tất cả các thiết bị ngoại vi
User là cấp không có đặc quyền, tất cả các chương trình của người sử dụng
phải hoạt động ở cấp này Ở đây các tiến trình không thể thực hiện tất cả các lệnh
của vi xử lý, không thể truy cập trực tiếp vào hệ thống phần cứng và nó chỉ được
quyền sử dụng không gian nhớ đã được cấp phát Các tiến trình ở đây chỉ có thể
thực hiện các thao tác trong môi trường của riêng nó mà không làm ảnh hưởng đến
các tiến trình khác và nó có thể bị ngắt bất cứ lúc nào Các tiến trình hoạt động
trong User Level không thể truy cập trực tiếp tài nguyên của hệ thống mà nó phải
thông qua giao diện lời gọi hệ thống (System call Interface) Một lời gọi hệ thống là
một yêu cầu được gởi từ tiến trình của chương trình người sử dụng đến Kernel,
Kernel sẽ xử lý yêu cầu trong chế độ kernel sau đó trả kết quả về lại cho tiến trình
để tiến trình tiếp tục thực hiện
File Subsystem Inter Processor
Communication Process
Control
System Call Interface
Libraries
User Programs
User Level Kernel Level
Trap
Trang 9 Sau đây là một vài đặc điểm của Linux:
Miễn phí (Free): Linux là một hệ điều hành được cung cấp miễn phí trên Internet, chúng ta không phải trả bất kỳ một chi phí nào cho việc
download nó Linux được cung cấp cùng với các phâìn mềm chạy trên nó
Mã nguồn mở (Open Source): Điều này có nghĩa người sử dụng không chỉ sử dụng hệ điều hành và thực hiện các chương trình mà còn có thể xem
và sửa đổi mã nguồn của nó, để phát triển nó theo từng mục đích cụ thể của người sử dụng
Yêu cầu phần cứng (Hardware): Linux có thể chạy trên hầu hết các phần cứng hiện có, nó có thể hoạt động trên các vi xử lý: 386, 486, Pentium MMX, Pentium II, Sparc, Dec Alpha hoặc Motorola 68000
Đa tác vụ (Multi-Tasking): Linux là hệ điều hành đa tác vụ, tức là một người sử dụng có thể chạy nhiều chương trình tại cùng một thời điểm Mỗi tác vụ là một tiến trình Theo cách này người sử dụng không cần phải đợi cho
Trang 10một tiến trình kế thúc hợp lệ để khởi động một tiến trình khác
Đa người sử dụng (Multi-User): Điều này có nghĩa có nhiều hơn một người sử dụng có thể sử dụng hệ thống tại cùng một thời điểm Khái niệm multi user xuất phát trực tiếp từ khía cạnh multi-tasking Hệ thống có thể điều khiển nhiều hơn một người sử dụng tại cùng một thời điểm giống như cách mà nó điều khiển nhiều hơn một công việc
Hỗ trợ đa vi xử lý (Multi Processor Support): Linux có thể điều hành các hệ thống máy tính có nhiều hơn một vi xử lý
Máy chủ web (Web Server): Linux có thể được sử dụng để chạy như
là một web server, và đáp ứng các giao thức ứng dụng như là HTTP hoặc FTP
Hỗ trợ mạng TCP/IP (TCP/IP Networking Support): Hỗ trợ mạng TCP/IP được xây dựng trong chính kernel của Linux Linux một trong các hệ điều hành mạng tốt nhất Nó bao gồm các chương trình như là: Telnet, Ftp, Rlogin, Rsh và nhiều chương trình khác
Hỗ trợ lập trình (Programming Support): Linux cung cấp hỗ trợ lập trình cho Fortran, C, C++, Tcl/Tk, Perl và nhiều ngôn ngữ lập trình khác
Độ an toàn cao (High Level Security): Một trong những thuận lợi chính của Linux đó là nó cung cấp một sự an toàn cao cấp bằng cách sử dụng sự
xác thực người sử dụng Nó cũng lưu trữ password trong dạng thức được mã hoá,
password một khi đã được mã hoá thì không thể giải mã Linux cũng bao gồm hệ
thống file an toàn, nó được mở rộng từ hệ thống file đang tồn tại
Chương II
QUẢN LÝ TIẾN TRÌNH
Tất cả các hệ điều hành đa chương, từ các hệ điều hành đơn người sử dụng đến các hệ điều hành có thể hỗ trợ đến hàng ngàn người sử dụng, đều phải xây dụng dựa trên khái niệm tiến trình Vì thế, một yêu cầu quan trọng trong thiết kế hệ điều hành là thành phần quản lý tiến trình của hệ điều hành phải đáp ứng tất cả những gì liên quan đến tiến trình: