Hiện nay, máy tính và hệ điều hành đã trở nên quen thuộc đối với nhiều người sử dụng. Nhờ có hệ điều hành mà người sử dụng có thể khai thác được các chức năng của máy tính một cách dễ dàng và hiệu quả. Nhưng đa số người sử dụng đều chỉ quan tâm đến việc sử dụng hệ điều hành, mà ít quan tâm đến nguyên lý hoạt động bên trong của hệ điều hành.Hiểu được nguyên lý và cấu trúc bên trong của hệ điều hành nói chung và của các hệ điều hành cụ thể như MSDOS, Win9x, WinNT2K, v.v nói riêng, là cơ sở để người lập trình thiết kế một hệ điều hành mới hoặc nâng cấp một hệ điều hành đã có. Tất nhiên là họ còn phải có thêm những kiến thức và những kỹ năng liên quan khác. Điều này cũng mang lại lợi ích cho những chuyên viên lập trình hệ thống và những ai muốn có cơ sở để đánh giá về những điểm mạnh, điểm yếu của các hệ điều hành đang được sử dụng hiện nay.
Trang 1Hiện nay, máy tính và hệ điều hành đã trở nên quen thuộc đối với nhiều người sửdụng Nhờ có hệ điều hành mà người sử dụng có thể khai thác được các chức năng củamáy tính một cách dễ dàng và hiệu quả Nhưng đa số người sử dụng đều chỉ quan tâmđến việc sử dụng hệ điều hành, mà ít quan tâm đến nguyên lý hoạt động bên trong của
hệ điều hành
Hiểu được nguyên lý và cấu trúc bên trong của hệ điều hành nói chung và củacác hệ điều hành cụ thể như MSDOS, Win9x, WinNT/2K, v.v nói riêng, là cơ sở đểngười lập trình thiết kế một hệ điều hành mới hoặc nâng cấp một hệ điều hành đã có.Tất nhiên là họ còn phải có thêm những kiến thức và những kỹ năng liên quan khác.Điều này cũng mang lại lợi ích cho những chuyên viên lập trình hệ thống và những aimuốn có cơ sở để đánh giá về những điểm mạnh, điểm yếu của các hệ điều hành đangđược sử dụng hiện nay
Với những lý do trên mà môn học nguyên lý hệ điều hành từ lâu đã trở thànhmôn học cơ sở chuyên ngành trong hệ thống chương trình đào tạo cử nhân/kỹ sư côngnghệ thông tin Điện tử - Tin học, Toán tin trong hầu hết các trường Đại học, Cao đẳngtrong cả nước
Để giúp sinh viên có một tài liệu tham khảo tương đối đầy đủ, tìm hiểu về hệđiều hành chúng tôi đã biên soạn giáo trình này
Giáo trình này gồm 6 chương:
- Chương 1: Tổng quan về hệ điều hành.
- Chương 2: Quản lý tiến trình.
- Chương 3: Quản lý bộ nhớ.
- Chương 4: Quản lý tập tin và đĩa.
- Chương 5: Quản lý hệ thống nhập/xuất.
- Chương 6: Bảo vệ an toàn hệ thống.
Chúng tôi xin chân thành cảm ơn các quý Thầy cô ở khoa Khoa học máy tínhtrường Cao Đẳng Công Nghệ Thông Tin Hữu Nghị Việt – Hàn đã đóng góp rất nhiều
ý kiến để chúng tôi hoàn chỉnh hơn về mặt nội dung cuốn giáo trình này
Tuy cũng đã rất cố gắng trong quá trình biên soạn nhưng không thể tránh đượcđược những thiếu sót chúng tôi mong nhận được các ý kiến đóng góp từ độc giả, cácđồng nghiệp, các Thầy Cô trong khoa tiếp tục đóng góp ý kiến để cuốn giáo trình nàytái bản lần sau có chất lượng tốt hơn
Trang 2CHƯƠNG 1 1
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH 1
1.1.Chức năng và lịch sử phát triển của hệ điều hành 1
1.1.1.Chức năng của hệ điều hành 1
1.1.2.Lịch sử phát triển của hệ điều hành 3
1.1.2.1.Thế hệ 1 (1945 - 1955) 3
1.1.2.2.Thế hệ 2 (1955 - 1965) 3
1.1.2.3.Thế hệ 3 (1965 - 1980) 3
1.1.2.4.Thế hệ 4 (từ 1980) 4
1.2.Một số khái niệm của hệ điều hành 4
1.2.1.Tiến trình (Process) và tiểu trình (Thread) 4
1.2.2.Bộ xử lý lệnh (Shell) 5
1.2.3.Sự phân lớp hệ thống (System Layering) 5
1.2.4.Tài nguyên hệ thống (System Resources) 6
1.2.5.Lời gọi hệ thống (System Calls) 7
1.3.Hệ điều hành và phân loại 7
1.3.1.Khái niệm hệ điều hành 7
1.3.2.Phân loại hệ điều hành 8
1.3.2.1.Hệ điều hành xử lý theo lô đơn chương (Batch Systems) 8
1.3.2.2.Hệ điều hành xử lý theo lô đa chương (Batch Multitask) 9
1.3.2.3.Hệ điều hành chia sẻ thời gian (Time Sharing Systems) 9
1.3.2.4.Hệ điều hành đa vi xử lý (Multiprocessor) 10
1.3.2.5.Hệ điều hành xử lý thời gian thực (Real time Processor) 10
1.3.2.6.Hệ điều hành phân tán (System Distributed) 10
1.4.Thành phần và cấu trúc cơ bản của hệ điều hành 11
1.4.1.Các thành phần của hệ điều hành 11
1.4.1.1.Thành phần quản lý tiến trình 11
1.4.1.2.Thành phần quản lý bộ nhớ chính 12
1.4.1.3.Thành phần quản lý nhập/xuất 12
1.4.1.4.Thành phần quản lý bộ nhớ phụ (đĩa) 13
1.4.1.5.Thành phần quản lý tập tin 13
1.4.1.6.Thành phần thông dịch lệnh 14
1.4.1.7.Thành phần bảo vệ hệ thống 14
1.4.2.Các dịch vụ của hệ điều hành 14
1.4.3.Cấu trúc của hệ điều hành 15
1.4.3.1.Hệ thống đơn khối (Monolithic Systems) 15
1.4.3.2.Các hệ thống phân lớp (Layered Systems) 17
1.4.3.3.Máy ảo (Virtual Machine) 18
1.4.3.4.Mô hình Client/Server (Client/Server Model) 19
1.5.Câu hỏi và bài tập 20
QUẢN LÝ TIẾN TRÌNH 21
2.1.Các mô hình xử lý đồng hành 21
2.1.1.Nhu cầu xử lý đồng hành 21
Trang 32.2.Tổ chức và quản lý tiến trình 23
2.2.1.Các loại tiến trình 24
2.2.2.Mô hình tiến trình 26
2.2.3.Các trạng thái tiến trình 28
2.2.4.Cấu trúc dữ liệu của khối quản lý tiến trình 32
2.2.4.1.Định vị của tiến trình (Process Location) 32
2.2.4.2.Các thuộc tính của tiến trình 33
2.2.5.Các thao tác điều khiển tiến trình 33
2.2.5.1.Các thao tác khi khởi tạo tiến trình của hệ điều hành 33
2.2.5.2.Các thao tác khi kết thúc tiến trình của hệ điều hành 34
2.2.5.3.Các thao tác khi thay đổi trạng thái tiến trình của hệ điều hành 34
2.2.6 Cấp phát tài nguyên cho tiến trình 35
2.3.Điều phối tiến trình 36
2.3.1.Mục tiêu điều phối 36
2.3.1.1.Các cơ chế điều phối tiến trình 36
2.3.1.2.Các đặc điểm của tiến trình 36
2.3.1.3.Mục tiêu điều phối tiến trình 37
2.3.2.Tổ chức điều phối 38
2.3.2.1.Các danh sách sử dụng trong quá trình điều phối 38
2.3.2.2.Các cấp độ điều phối 39
2.3.3.Các chiến lược điều phối 40
2.3.3.1.Chiến lược FIFO (First In First Out) 40
2.3.3.2.Chiến lược phân phối xoay vòng (RR: Round Robin) 41
2.3.3.3.Chiến lược theo độ ưu tiên 42
2.3.3.4.Chiến lược SJF (Shortest Job Fist: công việc ngắn nhất) 43
2.3.3.5.Chiến lược nhiều cấp độ ưu tiên 43
2.3.3.6.Chiến lược điều phối xổ số (Lottery) 44
2.4.Tài nguyên găng và đoạn găng 45
2.4.1.Tài nguyên găng 45
2.4.2.Đoạn găng 47
2.4.3.Yêu cầu của công tác điều độ tiến trình qua đoạn găng 48
2.5.Các giải pháp về đồng bộ hóa 49
2.5.1.Các giải pháp BYSY WAITING 50
2.5.1.1.Giải pháp phần mềm 50
2.5.1.2.Giải pháp phần cứng 52
2.5.2.Các giải pháp SLEEP AND WAKEUP 53
2.5.2.1.Giải pháp dùng Semaphore (đèn báo) 54
2.5.2.2.Trao đổi thông điệp 58
2.5.3.Bài toán cổ điển về đồng bộ hóa 60
2.6.Bế tắc (Deadlock) và chống bế tắc 61
2.6.1.Giới thiệu bế tắc 61
2.6.2.Điều kiện hình thành bế tắc 62
2.6.3.Ngăn chặn bế tắc (Deadlock Prevention) 63
2.6.4.Phát hiện bế tắc(Deadlock Detection) 63
2.6.5.Tránh bế tắc 65
2.6.6.Hiệu chỉnh bế tắc 71
Trang 4QUẢN LÝ BỘ NHỚ 73
3.1.Nhiệm vụ của quản lý bộ nhớ 73
3.1.1.Sự tái định vị (Relocation) 73
3.1.2.Bảo vệ bộ nhớ (Protection) 74
3.1.3.Chia sẻ bộ nhớ (Sharing) 74
3.1.4.Tổ chức bộ nhớ logic (Logical Organization) 74
3.1.5.Tổ chức bộ nhớ vật lý (Physical Organization) 75
3.2.Các cấu trúc chương trình 75
3.2.1.Cấu trúc chương trình tuyến tính 76
3.2.2.Cấu trúc chương trình động 76
3.2.3.Cấu trúc chương trình Overlay 77
3.2.4.Cấu trúc chương trình phân trang 78
3.2.5.Cấu trúc chương trình phân đoạn 79
3.3.Kỹ thuật cấp phát bộ nhớ (nạp chương trình vào bộ nhớ chính) 79
3.3.1.Kỹ thuật phân vùng cố định (Fixed Partitioning) 79
3.3.2.Kỹ thuật phân vùng động (Dynamic Partitioning) 81
3.3.3.Kỹ thuật phân trang đơn (Simple Paging) 84
3.3.4.Kỹ thuật phân đoạn đơn (Simple Segmentation) 87
3.4.Kỹ thuật bộ nhớ ảo (Virtual Memory) 90
3.4.1.Bộ nhớ ảo 90
3.4.2.Cài đặt bộ nhớ ảo 91
3.4.2.1.Sự phân trang 91
3.4.2.2.Sự phân đoạn 93
3.4.2.3.Kết hợp phân trang và phân đoạn 95
3.4.2.4.Bộ nhớ ảo và lỗi trang (Page Fault) 95
3.5.Các thuật toán thay trang 98
3.5.1.Thuật toán FIFO (First In First Out) 98
3.5.2.Thuật toán LRU (Least Recenty Used) 99
3.5.3.Thuật toán Optinal (tối ưu) 100
3.6.Cấp phát khung trang 100
3.7.Câu hỏi và bài tập 101
QUẢN LÝ TẬP TIN VÀ ĐĨA 102
4.1.Tổng quan về quản lý tập tin và đĩa 102
4.1.1.Một số khái niệm dùng trong quản lý đĩa 102
4.1.2.Tập tin và hệ thống quản lý tập tin 104
4.1.2.1.Tập tin (File) 104
4.1.2.2.Thư mục (Directory) 106
4.1.2.3.Hệ thống quản lý tập tin (File Management System) 108
4.1.2.4.Kiến trúc hệ thống tập tin (File System Architecture) 108
4.1.3.Bảng danh mục và tập tin chia sẻ 109
4.1.3.1.Bảng danh mục (Directory Table) 109
4.1.3.2.Tập tin chia sẻ (Shared File) 110
4.1.4.Quản lý không gian đĩa 111
4.1.5.Quản lý các Block chứa tập tin trên đĩa 112
4.1.6.Bảo vệ tập tin 116
4.1.7.Hiệu suất hệ thống tập tin 118
Trang 54.4.Câu hỏi và bài tập 122
QUẢN LÝ HỆ THỐNG NHẬP/XUẤT 123
5.1.Hệ thống quản lý nhập/xuất 123
5.2.Phần cứng nhập/xuất 123
5.2.1.Thiết bị nhập/xuất 124
5.2.2.Tổ chức của chức năng nhập/xuất 124
5.2.3.Bộ điều khiển thiết bị 125
5.2.4.DMA (Direct Memory Access) 126
5.3.Phần mềm nhập/xuất 126
5.3.1.Kiểm soát ngắt 127
5.3.2.Điều khiển thiết bị (Device Drivers) 127
5.3.3.Phần mềm nhập/xuất độc lập thiết bị 127
5.3.4.Phần mềm nhập/xuất phạm vi người sử dụng 128
5.4.Một số hệ thống nhập/xuất 129
5.4.1.Hệ thống nhập/xuất đĩa 129
5.4.1.1.Phần cứng đĩa 129
5.4.1.2.Các thuật toán đọc đĩa 129
5.4.1.3.Quản lý lỗi 132
5.4.1.4.RAM Disks 132
5.4.1.5.Interleave 133
5.4.2.Hệ thống nhập/xuất chuẩn (Terminals) 133
5.4.2.1.Phần cứng Terminal 133
5.4.2.2.Terminal ánh xạ bộ nhớ 134
5.4.2.3.Phần mềm nhập 135
5.4.2.4.Phần mềm xuất 136
5.5.Câu hỏi và bài tập 137
BẢO VỆ VÀ AN TOÀN HỆ THỐNG 138
6.1.Mục tiêu bảo vệ hệ thống (Protection) 138
6.2.Miền bảo vệ (Domain of Protection) 138
6.2.1.Khái niệm 138
6.2.2.Cấu trúc của miền bảo vệ 139
6.3.Ma trận quyền truy xuất (Access Matrix) 140
6.4.Cài đặt ma trận quyền truy xuất 142
6.4.1.Bảng toàn cục 142
6.4.2.Danh sách các quyền truy xuất (ACL Access Control List) 142
6.4.3.Danh sách tiềm năng của miền bảo vệ (C_List:Capability List) 142
6.4.4.Cơ chế khóa và chìa 143
6.4.5.Thu hồi quyền truy xuất 143
6.5.An toàn hệ thống (Security) 144
6.5.1.Các vấn đề về an toàn hệ thống 144
6.5.2.Kiểm định danh tính 144
6.5.3.Mối đe dọa từ các chương trình 145
6.5.3.1.Ngựa thành Troy 145
6.5.3.2.Cánh cửa nhỏ (Trap-Door) 145
6.5.4.Mối đe dọa từ hệ thống 145
Trang 66.5.4.2.Các chương trình Virus 1456.5.5.Giám sát các mối đe dọa 1456.6.Câu hỏi và bài tập 146
DANH MỤC CÁC HÌNH
DANH MỤC CÁC BẢNG
DANH MỤC CÁC CHỮ VIẾT TẮT
ACL Access Control List
API Application Programming Interface
C_List Capability List
CDFS CD_ROM File System
CLI Clear Interrup
CPU Central Processing Unit
DMA Direct Memory Access
FAT File Allocation Table
FCFS First-Come,First-Served
FIFO First In First Out
FSD File System Driver
Trang 7INT Interrupt
LCNs Logical Cluster Numbers
LRU Least Recenty Used
LWP Light Weight Process
NTFS New Technology File System
PCB Process Control Block
PCT Page Control Table
PID Process Identification
PTBR Page Table Base Register
RAM Random Access Memorry
SCT Segment Control Table
SJF Shortest Job Fist
UDF Universal Disk Format
VCNs Virtual Cluster Numbers
VMD Virtual Machine
DLL Dynamic Link Library
OCX Object Linking and Embedding (OLE) Control Extension
ASCII American Standard Code for Information Interchange
CS:IP Code Segment
ANSI American National Standards Institute
IEEE Institute of Electrical and Electronic Engineers
ISO International Organization for Standardization
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH
Nếu không có phần mềm, máy tính chỉ là một thiết bị điện tử thông thường Với
sự hỗ trợ của phần mềm, máy tính có thể lưu trữ, xử lý thông tin và người sử dụng cóthể sử dụng lại dữ liệu và thông tin này được Phần mềm máy tính có thể chia thànhnhiều loại:
- Chương trình hệ thống: Quản lý hoạt động của chính máy tính.
- Chương trình ứng dụng: Giải quyết các vấn đề liên quan đến việc sử dụng và
khai thác máy tính của người sử dụng
Hệ điều hành là chương trình hệ thống và nó là một chương trình quan trọng nhấtđối với máy tính và cả người sử dụng Hệ điều hành quản lý tất cả các tài nguyên củamáy tính và cung cấp một môi trường thuận lợi để các chương trình ứng dụng đã đượclập trình của người sử dụng có thể chạy được trên máy tính
Một máy tính hiện đại có thể bao gồm: Một hoặc nhiều bộ xử lý, bộ nhớ chính,
bộ nhớ phụ và các thiết bị nhập/xuất khác Tất cả các thiết bị đó tạo thành một hệthống phức tạp Để viết các chương trình theo dõi tất cả các thành phần của máy tính
và sử dụng chúng một cách hiệu quả, người lập trình phải biết bộ xử lý thực hiệnchương trình, bộ nhớ lưu trữ thông tin, các thiết bị đĩa làm việc (ghi/đọc), lỗi nào cóthể xảy ra khi đọc một Block đĩa, v.v thì người lập trình phải biết được nguyên lý làmviệc cơ bản của các thiết bị đó Đây là những công việc rất khó khăn và quá khó đốivới người lập trình Nhưng rất may cho cả người lập trình ứng dụng và người sử dụng
là những công việc trên đã được hệ điều hành hỗ trợ nên họ không cần quan tâm đếnnữa Chương này cho chúng ta một cái nhìn tổng quan về những gì liên quan đến việcthiết kế, cài đặt cũng như chức năng của hệ điều hành để thực hiện đạt được mục tiêu
là giúp người sử dụng khai thác máy tính dễ dàng và chương trình của người sử dụng
có thể chạy được trên máy tính
1.1 Chức năng và lịch sử phát triển của hệ điều hành
1.1.1 Chức năng của hệ điều hành
Một hệ thống máy tính gồm các thành phần chính như: Phần cứng, hệ điều hành,các chương trình ứng dụng Trong đó hệ điều hành là một bộ phận quan trọng vàkhông thể thiếu của hệ thống máy tính, nhờ có hệ điều hành mà người sử dụng có thểlàm việc và khai thác được các chức năng của phần cứng máy tính
Hệ điều hành là một hệ thống các chương trình, đóng vai trò trung gian giữangười sử dụng và phần cứng máy tính Chức năng chính của nó là cung cấp một môitrường thuận lợi để người sử dụng dễ dàng thực hiện các chương trình ứng dụng củamình trên máy tính và khai thác triệt để các chức năng của phần cứng máy tính
Để đạt được mục tiêu trên, hệ điều hành phải thực hiện 2 chức năng chính sau đây:
- Giả lập một máy tính mở rộng: Máy tính là một thiết bị vi điện tử, nó được cấu
thành từ các bộ phận như: bộ xử lý, bộ nhớ, thiết bị nhập xuất, v.v do đó để đối thoạihoặc khai thác máy tính người sử dụng phải hiểu được cơ chế hoạt động của các bộphận phần cứng máy tính Để tác động vào bộ phần phần cứng thì phải thông qua
Trang 9“ngôn ngữ máy” nghĩa là tác động trực tiếp những con số 0,1 Điều này là quá khó đốivới người sử dụng Để đơn giản cho người sử dụng hệ điều hành phải che đậy các chitiết phần cứng máy tính bởi một máy tính mở rộng, máy tính mở rộng này có đầy đủcác chức năng của một máy tính thực nhưng đơn giản và dễ sử dụng hơn Khi cần tácđộng vào máy tính thực, người sử dụng chỉ cần tác động vào máy tính mở rộng, mọi
sự chuyển đổi thông tin điều khiển từ máy tính mở rộng sang máy tính thực hoặc
ngược lại đều do hệ điều hành thực hiện Mục đích của chức năng này là: Giúp người
sử dụng khai thác các chức năng của phần cứng máy tính dễ dàng và hiệu quả hơn
- Quản lý tài nguyên của hệ thống: Tài nguyên hệ thống có thể là: bộ xử lý, bộ
nhớ, thiết bị nhập xuất, máy in, tập tin Đây là những tài nguyên mà hệ điều hànhdùng để cấp phát cho các tiến trình, chương trình trong quá trình điều khiển hoạt độngcủa hệ thống Khi người sử dụng cần thực hiện một chương trình hay khi một chươngtrình cần nạp thêm một tiến trình mới vào bộ nhớ, thì hệ điều hành phải cấp phátkhông gian nhớ cho chương trình, tiến trình đó để chương trình đó được nạp vào bộnhớ và hoạt động được Trong môi trường hệ điều hành đa nhiệm có thể có nhiềuchương trình, tiến trình đồng thời cần được nạp vào bộ nhớ, nhưng không gian lưu trữcủa bộ nhớ có giới hạn Do đó hệ điều hành phải tổ chức cấp phát bộ nhớ sao cho hợp
lý để đảm bảo tất cả các chương trình, tiến trình khi cần đều được nạp vào bộ nhớ đểhoạt động Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ đã cấpcho các chương trình, tiến trình để tránh sự truy cập bất hợp lệ và sự tranh chấp bộ nhớgiữa các chương trình, tiến trình Đặc biệt là các tiến trình đồng thời hoạt động trên hệthống, đây là một trong những nhiệm vụ quan trọng của hệ điều hành
Trong quá trình hoạt động của hệ thống, đặc biệt là các hệ thống đa người dùng,
đa chương trình, đa tiến trình, còn xuất hiện một hiện tượng khác đó là nhiều chươngtrình, tiến trình đồng thời sử dụng một không gian nhớ hay một tập tin (dữ liệu,chương trình) Như vậy hệ điều hành phải tổ chức việc chia sẻ và giám sát việc truyxuất đồng thời trên các tài nguyên sao cho việc sử dụng tài nguyên có hiệu quả nhưngtránh được sự mất mát dữ liệu hoặc làm hỏng các tập tin
Hai dẫn chứng điển hình trên cho chúng ta thấy vai trò của hệ điều hành trongviệc quản lý tài nguyên hệ thống Việc cấp phát, chia sẻ, bảo vệ tài nguyên của hệ điều
hành là một trong những công việc khó khăn, phức tạp nhất và hệ điều hành Trong mọi trường hợp tất cả các chương trình, tiến trình nếu cần được cấp phát tài nguyên
để hoạt động thì sớm hay muộn nó đều được cấp phát và được đưa vào trạng thái hoạt động.
Hai chức năng tổng quát của hệ điều hành, đó chính là các mục tiêu mà các nhàthiết kế, cài đặt hệ điều hành phải hướng tới Các hệ điều hành hiện nay có các chứcnăng cụ thể sau đây:
- Hệ điều hành cho phép thực hiện nhiều chương trình đồng thời trong môi trường
đa tác vụ Một số hệ điều hành đa nhiệm bao gồm: Windows NT, Windows 2000,WinXP 2003, Linux và OS/2 Trong hệ điều hành đa nhiệm phải xác định khi nào thìmột ứng dụng được chạy và mỗi ứng dụng được chạy trong khoảng thời gian bao lâuthì phải dừng lại để cho các ứng dụng khác được chạy
- Hệ điều hành tự nạp vào bộ nhớ: Quá trình nạp hệ điều hành vào bộ nhớ được
gọi là quá trình Booting Chỉ khi nào hệ điều hành đã được nạp vào bộ nhớ thì nó mới
cho phép người sử dụng giao tiếp với phần cứng Trong các hệ thống có nhiều ứngdụng đồng thời hoạt động trên bộ nhớ, thì hệ điều hành phải chịu trách nhiệm chia sẻ
Trang 10không gian bộ nhớ RAM và bộ nhớ Cache cho các ứng dụng này.
- Hệ điều hành và API: (Application Programming Interface): API là một tập các
hàm/thủ tục được xây dựng sẵn bên trong hệ thống, nó có thể thực hiện được nhiềuchức năng khác nhau như shutdown hệ thống, đảo ngược hiệu ứng màn hình, khởiđộng các ứng dụng … Hệ điều hành giúp cho chương trình của người sử dụng giaotiếp với API hay thực hiện một lời gọi đến các hàm/thủ tục của API
- Nạp dữ liệu cần thiết vào bộ nhớ: Dữ liệu do người sử dụng cung cấp được đưa
vào bộ nhớ để xử lý Khi nạp dữ liệu vào bộ nhớ hệ điều hành phải lưu lại địa chỉ của
bộ nhớ, nơi mà dữ liệu được lưu trữ Hệ điều hành phải luôn theo dõi bản đồ cấp phát
bộ nhớ, nơi dữ liệu và chương trình được lưu trữ ở đó Khi một chương trình cần đọc
dữ liệu, hệ điều hành sẽ đến các địa chỉ bộ nhớ nơi đang lưu trữ dữ liệu mà chương
trình cần đọc để đọc lại nó
- Hệ điều hành biên dịch các chỉ thị chương trình: Hệ điều hành phải đọc và giải
mã các thao tác cần được thực hiện, nó được viết trong chương trình của người sửdụng Hệ điều hành cũng chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗitrong khi đang hoạt động
- Hệ điều hành quản lý tài nguyên: Nó đảm bảo việc sử dụng thích hợp tất cả các
tài nguyên của hệ thống như là: bộ nhớ, đĩa cứng, máy in …
1.1.2 Lịch sử phát triển của hệ điều hành
1.1.2.1 Thế hệ 1 (1945 - 1955)
Vào những năm 1950 máy tính dùng đèn điện tử chân không ra đời Ở thế hệ nàymỗi máy tính được một nhóm người thực hiện tất cả từ việc thiết kế, xây dựng chươngtrình, thao tác đến quản lý
Ở thế hệ này người lập trình phải dùng ngôn ngữ máy tuyệt đối để lập trình,thường là bằng cách dùng bảng điều khiển để thực hiện các chức năng cơ bản Trongkhoảng thời gian này khái niệm ngôn ngữ lập trình và hệ điều hành chưa được biếtđến
1.1.2.2 Thế hệ 2 (1955 - 1965)
Máy tính dùng bán dẫn ra đời và được sản xuất để cung cấp cho khách hàng Bộphận sử dụng máy tính được phân chia rõ ràng: người thiết kế, người xây dựng, ngườivận hành, người lập trình và người bảo trì Với các máy tính thế hệ này để thực hiệnmột thao tác, lập trình viên dùng ngôn ngữ Assembly hoặc Fortran để viết chươngtrình trên phiếu đục lỗ sau đó đưa phiếu vào máy, máy thực hiện cho kết quả ở máy in
Hệ thống xử lý theo lô cũng ra đời trong thời kỳ này và các thao tác cần thựchiện trên máy tính được ghi trước trên băng từ, hệ thống sẽ đọc băng từ, thực hiện lầnlượt và cho kết quả ở băng từ xuất Hệ thống xử lý theo lô hoạt động dưới sự điềukhiển của một chương trình đặc biệt, chương trình này là hệ điều hành sau này
1.1.2.3 Thế hệ 3 (1965 - 1980)
Trong giai đoạn này máy tính được sử dụng rộng rãi trong khoa học cũng nhưtrong thương mại Máy IBM 360 được sản xuất hàng loạt để tung ra thị trường và loạimáy tính đầu tiên sử dụng mạch tích hợp (IC) Từ đó kích thước và giá cả của các hệthống máy được giảm đáng kể và máy tính càng phổ biến hơn Các thiết bị ngoại vixuất hiện ngày càng nhiều, do đó các thao tác điều khiển máy tính và thiết bị ngoại vi
Trang 11ngày càng phức tạp hơn Trước tình hình này nhu cầu cần có một hệ điều hành sử dụngchung trên tất cả các máy tính của nhà sản xuất và người sử dụng trở nên cấp thiếthơn Và hệ điều hành đã ra đời trong thời kỳ này.
Như vậy, hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động của hệ thống
và giải quyết các yêu cầu tranh chấp thiết bị Hệ điều hành đầu tiên được viết bằngngôn ngữ Assembly Hệ điều hành xuất hiện khái niệm đa chương, khái niệm chia sẻ
thời gian và kỹ thuật Spool Trong giai đoạn này cũng xuất hiện các hệ điều hành
Multics và Unix
1.1.2.4 Thế hệ 4 (từ 1980)
Giai đoạn này máy tính cá nhân ra đời, đặc biệt là hệ thống IBM PC với hệ điềuhành MSDOS ra đời và các hệ điều hành Windows Bên cạnh đó là sự phát triển của
hệ điều hành mạng và hệ điều hành phân tán ra đời trong thời kỳ này
Tóm lại : Dựa vào mốc thời gian về sự ra đời của các thế hệ máy tính để chỉ
cho ta thấy quá trình hình thành của hệ điều hành gắn liền với quá trình hình thành
máy tính Qua đó chúng ta thấy một số điểm nổi bậc sau:
- Các ngôn ngữ lập trình cấp thấp ra đời trước các hệ điều hành và các hệ điều
hành đều được xây dựng từ ngôn ngữ lập trình cấp thấp Đặc biệt hệ điều hành Unixđược xây dựng từ ngôn ngữ C, một ngôn ngữ lập trình cấp cao
- Nếu không có hệ điều hành thì việc khai thác và sử dụng máy tính sẽ khó khăn
và phức tạp rất nhiều và không phải bất kỳ ai cũng có thể sử dụng được máy tính
- Sự ra đời và phát triển của hệ điều hành gắn liền với sự phát triển của máy tính,
và ngược lại sự phát triển của máy tính kéo theo sự phát triển của hệ điều hành Hệđiều hành thực sự phát triển khi máy tính PC xuất hiện trên thị trường
1.2 Một số khái niệm của hệ điều hành
1.2.1 Tiến trình (Process) và tiểu trình (Thread)
Tiến trình là một bộ phận của chương trình đang thực hiện Tiến trình là đơn vịlàm việc cơ bản của hệ thống, trong hệ thống có thể tồn tại nhiều tiến trình cùng hoạtđộng, trong đó có cả tiến trình của hệ điều hành và tiến trình của chương trình người
sử dụng Các tiến trình này có thể hoạt động đồng thời với nhau
Để một tiến trình đi vào trạng thái hoạt động thì hệ thống phải cung cấp và duytrì đầy đủ tài nguyên cho tiến trình trong suốt quá trình hoạt động của nó
Chúng ta cần phân biệt sự khác nhau giữa tiến trình và chương trình:
- Chương trình là một tập tin thụ động nằm trên đĩa.
- Tiến trình là trạng thái động của chương trình
Các hệ điều hành hiện đại, sử dụng mô hình đa tiểu trình, trong một tiến trình cóthể có nhiều tiểu trình Tiểu trình cũng là đơn vị xử lý cơ bản trong hệ thống, nó cũng
xử lý tuần tự đoạn code của nó, nó cũng sở hữu một con trỏ lệnh, một tập các thanhghi và một vùng nhớ Stack riêng và các tiểu trình cũng chia sẻ thời gian xử lý của vi
xử lý như các tiến trình
Các tiểu trình trong một tiến trình sẽ chia sẻ một không gian địa chỉ chung, nghĩa
là các tiểu trình có thể chia sẻ các biến toàn cục của tiến trình, có thể truy xuất đếnStack của tiểu trình khác trong cùng tiến trình Như vậy với mô hình tiểu trình, trong
Trang 12hệ thống có thể tồn tại nhiều dòng xử lý cùng chia sẻ một không gian địa chỉ bộ nhớ,các dòng xử lý này hoạt động song song với nhau.
1.2.2 Bộ xử lý lệnh (Shell)
Shell là một bộ phận hay một tiến trình đặc biệt của hệ điều hành, nó có nhiệm
vụ nhận lệnh của người sử dụng, phân tích lệnh và phát sinh tiến trình mới để thựchiện yêu cầu của lệnh, tiến trình mới này được gọi là tiến trình đáp ứng yêu cầu
Shell nhận lệnh thông qua cơ chế dòng lệnh, đó chính là nơi giao tiếp giữa người
sử dụng và hệ điều hành, mỗi hệ điều hành khác nhau có cơ chế dòng lệnh khác nhau
- MSDOS đó là con trỏ lệnh và dấu nhắc hệ điều hành (C:\>_)
- Trong Linux dòng lệnh ở tại cửa sổ Terminal đó là lệnh Shell Tài khoản Rootcửa sổ Terminal có con trỏ lệnh và dấu nhắc như sau: ([Root@localhost ~]# | )
- Windows 9x đó là nút Start\Run
Tập tin Command.Com chính là Shell của MSDOS
Trong môi trường hệ điều hành đơn nhiệm như MSDOS, khi tiến trình đáp ứngyêu cầu hoạt động thì Shell sẽ chuyển sang trạng thái chờ, để chờ cho đến khi tiếntrình đáp ứng yêu cầu kết thúc thì Shell trở lại trạng thái sẵn sàng nhận lệnh mới.Trong môi trường hệ điều hành đa nhiệm như Windows 9x, sau khi phát sinh tiếntrình đáp ứng yêu cầu và đưa nó vào trạng thái hoạt động thì Shell sẽ chuyển sangtrạng thái sẵn sàng nhận lệnh mới, nhờ vậy Shell có khả năng khởi tạo nhiều tiến trìnhđáp ứng yêu cầu để nó hoạt động song song với nhau, như vậy hệ điều hành đa nhiệmngười sử dụng có thể khởi tạo nhiều chương trình để nó hoạt động đồng thời với nhau
Chú ý: Hầu hết các ngôn ngữ lập trình đều hỗ trợ các công cụ để người sử
dụng hay người lập trình có thể gọi Shell ngay trong các ứng dụng của họ Khi mộtứng dụng cần gọi thực hiện một chương trình nào đó thì:
- Trong Assembly: Các ứng dụng gọi hàm 4Bh/21h của MSDOS.
- Trong Pascal: Các ứng dụng gọi thủ tục Exec.
- Trong Visual Basic: Các ứng dụng gọi hàm/thủ tục Shell Ví dụ dòng lệnh sau:
Shell “C:\Windows\Notepad.exe” có thể gọi thực hiện chương trình Notepad củaWindows
- Trong Windows 9x/ Windows NT: Các ứng dụng gọi hàm ShellExecute
1.2.3 Sự phân lớp hệ thống (System Layering)
Hệ điều hành là một hệ thống các chương trình “bao quanh” máy tính thực (vật
lý) nhằm tạo ra một máy tính mở rộng (logic) đơn giản và dễ sử dụng hơn Khi khai
thác máy tính người sử dụng chỉ cần tác động vào lớp “vỏ bọc bên ngoài” của máy tính, mọi sự giao tiếp giữa “lớp vỏ bọc” này với các chi tiết phần cứng bên trong đều
Trang 13- Các chuyên viên lập trình hệ thống cần hệ điều hành cung cấp cho họ các công
cụ để họ can thiệp sâu hơn vào hệ thống phần cứng máy tính
Để đáp ứng yêu cầu của nhiều đối tượng người sử dụng khác nhau, hệ điều hànhthực hiện phân lớp các chương trình bao quanh máy tính và gọi là hệ thống phân lớp
Ta có thể hình dung một hệ thống phân lớp được tổ chức như sau:
Hình 1.1 Sự phân lớp hệ thốngQua Hình 1 1 cho ta thấy chỉ có người thiết kế hệ điều hành là phải truy cập trựctiếp vào các chi tiết của phần cứng máy tính Người sử dụng và người lập trình truycập vào các chi tiết của phần cứng máy tính thông qua hệ điều hành
1.2.4 Tài nguyên hệ thống (System Resources)
Tài nguyên hệ thống là những tồn tại về mặt vật lý và nó có khả năng tác độngđến hiệu suất của hệ thống Tài nguyên của hệ thống chia thành hai loại cơ bản:
- Tài nguyên không gian: Là các không gian lưu trữ của hệ thống như bộ nhớ
phụ, bộ nhớ chính, quan trọng nhất là không gian bộ nhớ chính, nơi lưu trữ các chươngtrình đang được CPU thực hiện
- Tài nguyên thời gian: Chính là thời gian thực hiện lệnh của vi xử lý và thời gian
truy xuất dữ liệu trên bộ nhớ
Sau đây là một vài tài nguyên hệ thống:
- Bộ nhớ: Đặc trưng cơ bản của bộ nhớ là thời gian truy cập trực tiếp, thời gian
truy cập tuần tự và dung lượng nhớ Bộ nhớ được gọi là thực hiện nếu vi xử lý có thểthực hiện một câu lệnh trong nó, loại bộ nhớ này có thời gian truy cập trực tiếp và tuần
tự là như nhau Bộ nhớ trong (RAM) của PC là bộ nhớ thực hiện và nó được quản lýbởi hệ thống
Khi sử dụng bộ nhớ ta cần phân biệt 2 khái niệm: bộ nhớ và truy cập tới bộ nhớ + Bộ nhớ là chỉ vùng vật lý chứa dữ liệu
+ Truy cập bộ nhớ là quá trình tìm đến dữ liệu trên bộ nhớ
Có thể xem đây là 2 loại tài nguyên khác nhau vì chúng tồn tại độc lập với nhau
- Vi xử lý: Là tài nguyên quan trọng nhất của hệ thống, nó được truy cập ở mức
câu lệnh và chỉ có nó mới làm cho câu lệnh thực hiện hay chỉ có Vi xử lý mới đưa tiếntrình vào trạng thái hoạt động Trong thực tế khi xem xét về vi xử lý người ta chỉ chú ý
Người dùng
Trình ứng dụngCác tiện ích
Hệ điều hànhPhần cứng
Người lập trình
Người thiết kế
hệ điều hành
Trang 14đến thời gian xử lý của vi xử lý.
- Tài nguyên ảo/tài nguyên logic: Là loại tài nguyên cung cấp cho chương trình
người sử dụng dưới dạng đã được biến đổi Nó chỉ xuất hiện khi hệ thống cần tới nóhoặc khi hệ thống tạo ra nó và nó sẽ tự động mất đi khi hệ thống kết thúc (khi tiếntrình gắn với nó đã kết thúc) Tài nguyên ảo có thể là: đĩa ảo trong môi trườngMSDOS, điều khiển in trong môi trường mạng của Windows 9x/NT, nội dung thư
mục Spool trong Windows 9x.
Trên khía cạnh cấp phát tài nguyên cho các tiến trình đang hoạt động đồng thờithì tài nguyên hệ thống được chia thành 2 loại:
- Tài nguyên phân chia được: Là những tài nguyên mà tại một thời điểm nó có
thể cấp phát cho nhiều tiến trình khác nhau, các tiến trình song song có thể đồng thời
sử dụng các tài nguyên này Bộ nhớ chính và Vi xử lý là 2 tài nguyên phân chia đượcđiển hình nhất, bởi tại một thời điểm có thể có nhiều tiến trình cùng chia nhau sử dụngkhông gian lưu trữ của bộ nhớ chính và có thể có nhiều tiến trình thay nhau sử dụngthời gian xử lý của vi xử lý
- Tài nguyên không phân chia được: Là những tài nguyên mà tại một thời điểm
nó chỉ có thể cấp phát cho một tiến trình duy nhất Máy in là một tài nguyên khôngphân chia được điển hình nhất
Vấn đề đặt ra đối với hệ điều hành là phải biến các tài nguyên không phân chiađược thành những tài nguyên phân chia được, để cấp phát cho các tiến trình khi nó cóyêu cầu, đặc biệt là các tiến trình hoạt động đồng thời với nhau Các hệ điều hành đanhiệm như Windows 9x/NT đã sử dụng chức năng này và nhiều người sử dụng khácnhau đồng thời sử dụng một máy in Ngoài ra hệ điều hành còn phải giải quyết vấn đềtranh chấp tài nguyên giữa các tiến trình đồng thời, khi yêu cầu phục vụ của các tiếntrình này vượt quá khả năng cấp phát của nó
1.2.5 Lời gọi hệ thống (System Calls)
Để tạo môi trường giao tiếp giữa chương trình của người sử dụng và hệ điềuhành, hệ điều hành đưa ra các lời gọi hệ thống Chương trình của người sử dụng dùngcác lời gọi hệ thống để liên lạc với hệ điều hành và yêu cầu các dịch vụ từ hệ điềuhành
Mỗi lời gọi hệ thống tương ứng với một thủ tục trong thư viện của hệ điều hành,
do đó chương trình của người sử dụng có thể gọi thủ tục để thực hiện một lời gọi hệthống Lời gọi hệ thống còn được thiết kế dưới dạng các câu lệnh trong các ngôn ngữlập trình cấp thấp Ví dụ: lệnh gọi ngắt trong hợp ngữ và thủ tục gọi hàm API trongWindows được xem là một lời gọi hệ thống
Lời gọi hệ thống có thể được chia thành các loại: Quản lý tiến trình, thao tác trêntập tin, thao tác trên thiết bị nhập/xuất
Chú ý: Cần phải phân biệt sự khác nhau giữa Shell và System Call Shell tạo
môi trường giao tiếp giữa người sử dụng và hệ điều hành, System Call tạo môi trường giao tiếp giữa chương trình người sử dụng và hệ điều hành.
1.3 Hệ điều hành và phân loại
1.3.1 Khái niệm hệ điều hành
Hệ điều hành là một chương trình hay một hệ chương trình hoạt động giữa người
Trang 15sử dụng (User) và phần cứng của máy tính Mục tiêu của hệ điều hành là cung cấp mộtmôi trường để người sử dụng có thể thi hành các chương trình Nó làm cho máy tính
dễ sử dụng hơn, thuận lợi hơn và hiệu quả hơn
Hệ điều hành ra đời tồn tại và phát triển là để giải quyết các vấn đề sử dụng hệthống máy tính của người sử dụng, nhằm giúp người sử dụng khai thác hết các chứcnăng của phần cứng máy tính và thực hiện được các chương trình của mình trên máytính
Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính Một hệthống máy tính được chia thành các phần chính như: phần cứng, hệ điều hành, cácchương trình ứng dụng
- Phần cứng bao gồm CPU, bộ nhớ, các thiết bị nhập xuất, đây là những tài
nguyên của máy tính
- Chương trình ứng dụng như các chương trình dịch, hệ thống cơ sở dữ liệu, các
trò chơi và các chương trình thương mại Các chương trình này sử dụng tài nguyên củamáy tính để giải quyết các yêu cầu của người sử dụng
- Hệ điều hành điều khiển và phối hợp việc sử dụng phần cứng cho những ứng
dụng khác nhau của nhiều người sử dụng khác nhau
Hình 1.2 Mô hình trừu tượng của hệ thống máy tính
Hệ điều hành có thể được coi như là bộ phân phối tài nguyên của máy tính.
Nhiều tài nguyên của máy tính như thời gian sử dụng CPU, vùng bộ nhớ, vùng lưu trữtập tin, thiết bị nhập xuất … được các chương trình yêu cầu để giải quyết Hệ điều sẽquản lý các tài nguyên và phân phối chúng cho các chương trình và người sử dụng khicần thiết Đồng thời khi các chương trình của người sử dụng hoạt động thì hệ điềuhành phải giải quyết các vấn đề tranh chấp tài nguyên, phải quyết định cấp phát tàinguyên cho những yêu cầu theo thứ tự nào là hợp lý, để máy tính hoạt động là hiệuquả nhất Như vậy hệ điều hành cũng có thể được coi như là một chương trình kiểmsoát việc sử dụng máy tính, đặc biệt là các thiết bị nhập xuất
1.3.2 Phân loại hệ điều hành
Xét trên phương diện hệ điều hành thực hiện các công việc, các tác vụ, các tiếntrình của người sử dụng thì ta có thể phân loại hệ điều hành như sau:
1.3.2.1 Hệ điều hành xử lý theo lô đơn chương (Batch Systems)
Hệ điều hành loại này thực hiện các tác vụ lần lượt theo những chỉ thị đã đượcxác định trước Khi một tác vụ chấm dứt thì hệ thống sẽ tự động thực hiện tác vụ tiếp
Người sử dụng 1 Người sử dụng 2 Người sử dụng 3 Người sử dụng n
Chương trình Hợp ngữ Soạn thảo CSDL
Trang 16theo mà không cần sự can thiệp từ bên ngoài, do đó hệ thống đạt tốc độ thực hiện cao.Như vậy hệ điều hành phải có bộ phận giám sát thường trực để giám sát việc thực hiệncủa các tác vụ trong hệ thống, bộ phận này thường trú trong bộ nhớ chính.
Hình 1.3 Hoạt động của hệ điều hành xử lý theo lô đơn chương
Khi hệ thống cần thực hiện một tác vụ thì nó lưu chương trình và dữ liệu của cáctác vụ vào hàng đợi các công việc, sau đó thực hiện lần lượt từng bộ chương trình, dữliệu của tác vụ tương ứng trong hàng đợi và cho ra lần lượt các kết quả Hình 1 3minh họa sự hoạt động của hệ thống theo lô
Với cách tổ chức hàng đợi tác vụ, thì hệ thống không thể thay đổi chương trình
và dữ liệu của các tác vụ ngay cả khi chúng còn nằm trong hàng đợi, đây là một hạnchế Mặt khác trong quá trình thực hiện tác vụ nếu tác vụ chuyển sang truy xuất trênthiết bị nhập/xuất thì vi xử lý rơi vào trạng thái chờ điều này gây lãng phí thời gian xử
lý của vi xử lý
1.3.2.2 Hệ điều hành xử lý theo lô đa chương (Batch Multitask)
Để khắc phục hạn chế lãng phí thời gian xử lý của vi xử lý khi các tác vụ hiện tạitruy xuất đến thiết bị nhập xuất, hệ điều hành xử lý đa chương sẽ khắc phục hạn chếnày
Hệ điều hành xử lý đa chương thực hiện được nhiều tác vụ, nhiều chương trìnhđồng thời bằng cách nạp một phần code và data của các tác vụ vào bộ nhớ (các phầncòn lại sẽ được nạp sau tại thời điểm thích hợp) và tất cả đều ở trạng thái sẵn sàng thựchiện Sau đó hệ điều hành bắt đầu thực hiện một tác vụ nào đó, nhưng khi tác vụ đangthực hiện cần truy xuất thiết bị nhập/xuất thì vi xử lý sẽ được chuyển sang thực hiệncác tác vụ khác và cứ như thế hệ điều hành tổ chức chuyển hướng vi xử lý để thựchiện hết các phần tác vụ trong bộ nhớ cũng như các tác vụ mà hệ thống yêu cầu
Như vậy hệ điều hành xử lý đa chương tiết kiệm được bộ nhớ (nạp một phần) vàhạn chế được thời gian rỗi của vi xử lý Tuy nhiên, chi phí cho việc lập lịch vi xử lýcao, nghĩa là hệ điều hành phải xem xét nên chuyển vi xử lý cho tác vụ nào trong sốcác tác vụ đang ở trạng thái sẵn sàng Ngoài ra hệ điều hành còn phải giải quyết việcchia sẻ bộ nhớ chính cho các tác vụ khác nhau Hệ điều hành MSDOS là hệ điều hànhđơn nhiệm, đa chương
1.3.2.3 Hệ điều hành chia sẻ thời gian (Time Sharing Systems)
Khái niệm chia sẻ thời gian (Time Sharing Systems) ra đời đã đánh dấu mộtbước phát triển mới của hệ điều hành trong việc điều khiển các hệ thống đa ngườidùng Chia sẻ thời gian ở đây chính là chia sẻ thời gian xử lý của vi xử lý cho các tác
vụ, các tiến trình đang ở trong trạng thái sẵn sàng thực hiện
Môi trường người sử dụng
Môi trường máy tính
Nhập tác vụ
Trang 17Nguyên tắc của hệ điều hành chia sẻ thời gian tương tự như trong hệ điều hành
xử lý theo lô đa chương, nhưng việc chuyển vi xử lý từ tác vụ, tiến trình này sang tác
vụ, tiến trình khác không phụ thuộc vào việc tác vụ, tiến trình hiện tại có truy xuất đếnthiết bị nhập/xuất hay không mà chỉ phụ thuộc vào sự điều phối vi xử lý của hệ điềuhành Công việc điều phối vi xử lý của hệ điều hành rất phức tạp, phụ thuộc vào nhiềuyếu tố khác nhau, chúng ta sẽ đề cập đến vấn đề điều phối tiến trình trong chương 2quản lý tiến trình
Trong hệ điều hành này, thời gian chuyển đổi vi xử lý giữa các tác vụ là rất nhỏnên ta có cảm giác các tác vụ thực hiện song song với nhau Với hệ điều hành nàyngười sử dụng có thể yêu cầu hệ điều hành thực hiện nhiều chương trình, tiến trình, tác
vụ đồng thời với nhau
Hệ điều hành chia sẻ thời gian là mở rộng logic của hệ điều hành đa chương và
nó thường được gọi là hệ điều hành đa nhiệm (Multitasking) Hệ điều hành Windows9x/NT là các hệ điều hành đa nhiệm
1.3.2.4 Hệ điều hành đa vi xử lý (Multiprocessor)
Là các hệ điều hành dùng để điều khiển sự hoạt động của các hệ thống máy tính
có nhiều vi xử lý Các hệ điều hành đa vi xử lý (Multiprocessor) gồm có 2 loại:
- Đa xử lý đối xứng (SMP: Symmetric MultiProcessing): Trong hệ thống này
một vi xử lý bất kỳ có thể chạy một loại tiểu trình bất kỳ, các vi xử lý giao tiếp vớinhau thông qua một bộ nhớ dùng chung Hệ SMP cung cấp một cơ chế chịu lỗi và khảnăng cân bằng tải tối ưu hơn, vì các tiểu trình của hệ điều hành có thể chạy trên bất kỳ
vi xử lý nào nên nguy cơ xảy ra tình trạng bế tắc ở CPU khó có thể xảy ra Vấn đềđồng bộ giữa các vi xử lý được đặt lên hàng đầu khi thiết kế hệ điều hành cho hệ thốngSMP Hệ điều hành Windows NT, hệ điều hành Windows 2000 là các hệ điều hành đa
xử lý đối xứng
- Đa xử lý bất đối xứng (ASMP:Asymmetric MultiProcessing): Trong hệ thống
này hệ điều hành dành ra một hoặc hai vi xử lý để sử dụng riêng, các vi xử lý còn lạidùng để điều khiển các chương trình của người sử dụng Hệ ASMP đơn giản hơnnhiều so với hệ SMP, nhưng trong hệ này nếu có một vi xử lý trong các vi xử lý dànhriêng cho hệ điều hành bị hỏng thì hệ thống có thể ngừng hoạt động
1.3.2.5 Hệ điều hành xử lý thời gian thực (Real time Processor)
Hệ điều hành này khắc phục nhược điểm của hệ điều hành xử lý theo lô, tức là nó
có khả năng cho kết quả tức thời, chính xác sau mỗi tác vụ
Đối với loại này các tác vụ cần thực hiện, không được đưa vào hàng đợi mà được
xử lý tức thời và trả lại ngay kết quả hoặc thông báo lỗi cho người sử dụng có yêu cầu
Hệ điều hành hoạt động đòi hỏi có sự phối hợp cao giữa phần mềm và phần cứng
1.3.2.6 Hệ điều hành phân tán (System Distributed)
Hệ thống này cũng tương tự như hệ thống chia sẻ thời gian thực nhưng các bộ xử
lý không chia sẻ bộ nhớ, thay vào đó mỗi bộ xử lý có bộ nhớ cục bộ riêng Các bộ xử
lý thông tin với nhau thông qua các đường truyền thông, như những bus tốc độ cao hayđường dây điện thoại
Các bộ xử lý trong hệ phân tán thường khác nhau về kích thước và chức năng
Nó có thể bao gồm máy vi tính, trạm làm việc, máy mini và những hệ thống máy lớn
Trang 18Các bộ xử lý thường được tham khảo với nhiều tên khác nhau như Site, Node,Computer tùy thuộc vào trạng thái làm việc của chúng.
Các nguyên nhân phải xây dựng hệ thống phân tán là:
- Chia sẻ tài nguyên: Một người sử dụng A có thể sử dụng máy in Laser của
người sử dụng B và người sử dụng B có thể truy xuất những tập tin của A Chia sẻ tàinguyên trong hệ thống phân tán cung cấp một cơ chế để chia sẻ tập tin ở vị trí xa, xử lýthông tin trong một cơ sở dữ liệu phân tán, in ấn tại một vị trí xa, sử dụng những thiết
bị ở xa để thực hiện các thao tác Có nhiều lúc chương trình cần chuyển đổi dữ liệu từ
vị trí này sang vị trí khác Ví dụ trong hệ thống Windows thường có sự chia sẻ vàchuyển dữ liệu giữa các cửa sổ Khi các vị trí được nối kết với nhau trong một hệthống mạng, việc trao đổi dữ liệu diễn ra rất dễ Người sử dụng có thể chuyển tập tinhay các E_mail cho nhau từ cùng vị trí hay những vị trí khác nhau
- Tăng tốc độ tính toán: Một thao tác tính toán được chia làm nhiều phần nhỏ
cùng thực hiện một lúc Hệ thống phân tán cho phép phân chia việc tính toán trênnhiều vị trí khác nhau để tính toán song song
- An toàn: Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí khác vẫn tiếp
tục làm việc
Tóm lại: Qua sự phân loại hệ điều hành ở trên ta có thể thấy được quá trình
phát triển (evolution) của hệ điều hành Để khắc phục hạn chế về lãng phí thời gian xử
lý của vi xử lý trong hệ điều hành theo lô thì hệ điều hành xử lý đa chương ra đời Đểkhai thác tối đa thời gian xử lý của vi xử lý và tiết kiệm hơn nữa không gian bộ nhớchính hệ điều hành chia sẻ thời gian ra đời Chia sẻ thời gian xử lý của vi xử lý kết hợpvới chia sẻ không gian bộ nhớ chính đã giúp cho hệ điều hành có thể đưa vào bộ nhớchính nhiều chương trình, tiến trình hơn và các chương trình, tiến trình này có thể hoạtđộng đồng thời với nhau, nhờ đó mà hiệu suất của hệ thống tăng lên và cũng từ đâykhái niệm hệ điều hành đa chương ra đời Hệ điều hành đa xử lý và hệ điều hành mạngđược phát triển dựa trên hệ điều hành đa nhiệm Hệ điều hành thời gian thực ra đời là
để khắc phục hạn chế của hệ điều hành theo lô và điều khiển các hệ thống thời gian
thực Từ đây chúng ta rút ra một điều rằng: các hệ điều hành ra đời sau luôn tìm cách khắc phục các hạn chế của hệ điều hành trước đó và phát triển nhiều hơn nữa để đáp ứng yêu cầu ngày càng cao của của người sử dụng và chương trình người sử dụng, cũng như khai thác tối đa các chức năng của phần cứng máy tính để nâng cao hiệu suất của hệ thống Nhưng chức năng của hệ điều hành càng cao thì chi phí cho nó cũng tăng theo và cấu trúc của hệ điều hành cũng sẽ phức tạp hơn.
1.4 Thành phần và cấu trúc cơ bản của hệ điều hành
Hệ điều hành là một hệ thống chương trình lớn, thực hiện nhiều nhiệm vụ khácnhau và được thiết kế gồm nhiều thành phần, mỗi thành phần đảm nhận một nhóm cácnhiệm vụ, các nhiệm vụ này có liên quan với nhau Cách phân chia nhiệm vụ cho mỗithành phần, cách kết nối các thành phần lại với nhau để nó thực hiện một nhiệm vụ lớnhơn và cách gọi các thành phần này khi cần nó thực hiện một nhiệm vụ nào đó… tất
cả các phương thức trên tạo nên cấu trúc của hệ điều hành
1.4.1 Các thành phần của hệ điều hành
1.4.1.1 Thành phần quản lý tiến trình
Hệ điều hành phải có nhiệm vụ tạo lập tiến trình và đưa nó vào danh sách quản lý
Trang 19tiến trình của hệ thống Khi tiến trình kết thúc hệ điều hành phải loại bỏ tiến trình rakhỏi danh sách quản lý tiến trình của hệ thống.
Hệ điều hành phải cung cấp đầy đủ tài nguyên để tiến trình đi vào hoạt động vàphải đảm bảo đủ tài nguyên để duy trì sự hoạt động của tiến trình cho đến khi tiếntrình kết thúc Khi tiến trình kết thúc hệ điều hành phải thu hồi những tài nguyên mà
hệ điều hành đã cấp cho tiến trình
Trong quá trình hoạt động nếu vì một lý do nào đó tiến trình không thể tiếp tụchoạt động được thì hệ điều hành phải tạm dừng tiến trình, thu hồi tài nguyên mà tiếntrình đang chiếm giữ, sau đó nếu điều kiện thuận lợi thì hệ điều hành phải tái kích hoạttiến trình để tiến trình tiếp tục hoạt động cho đến khi kết thúc
Trong các hệ thống có nhiều tiến trình hoạt động song song, hệ điều hành phảigiải quyết vấn đề tranh chấp tài nguyên giữa các tiến trình, điều phối vi xử lý các tiếntrình, giúp các tiến trình trao đổi thông tin và hoạt động đồng bộ với nhau, đảm bảonguyên tắc tất cả các tiến trình đã được khởi tạo phải được thực hiện và kết thúc được
Tóm lại: Bộ phận quản lý tiến trình của hệ điều hành phải thực hiện những
nhiệm vụ sau đây:
- Tạo lập, hủy bỏ tiến trình.
- Tạm dừng, tái kích hoạt tiến trình.
- Tạo cơ chế thông tin liên lạc giữa các tiến trình.
- Tạo cơ chế đồng bộ hóa giữa các tiến trình.
1.4.1.2 Thành phần quản lý bộ nhớ chính
Bộ nhớ chính là một trong những tài nguyên quan trọng của hệ thống, đây là thiết
bị lưu trữ duy nhất mà CPU có thể truy xuất trực tiếp được
Các chương trình của người sử dụng muốn thực hiện được bởi CPU thì trước hết
nó phải được hệ điều hành nạp vào bộ nhớ chính, chuyển đổi các địa chỉ sử dụng trongchương trình thành những địa chỉ mà CPU có thể truy xuất được
Khi chương trình, tiến trình có yêu cầu được nạp vào bộ nhớ thì hệ điều hànhphải cấp phát không gian nhớ cho nó Khi chương trình, tiến trình kết thúc thì hệ điềuhành phải thu hồi lại không gian nhớ đã cấp phát cho chương trình, tiến trình trước đó.Trong các hệ thống đa chương, đa tiến trình, trong bộ nhớ tồn tại nhiều chươngtrình, tiến trình, hệ điều hành phải thực hiện nhiệm vụ bảo vệ các vùng nhớ đã cấpphát cho các chương trình, tiến trình, tránh sự vi phạm trên các vùng nhớ của nhau
Tóm lại: Bộ phận quản lý bộ nhớ chính của hệ điều hành thực hiện những
Trang 20thiết bị phần cứng đối với người sử dụng, giúp người sử dụng dễ thao tác, khai thác hệthống máy tính dễ dàng và hiệu quả.
Để thực hiện được hệ điều hành phải tồn tại một bộ phận điều khiển thiết bị, bộphận này phối hợp cùng CPU để quản lý sự hoạt động và trao đổi thông tin giữa hệthống, chương trình người sử dụng và người sử dụng với các thiết bị nhập/xuất
Bộ phận điều khiển thiết bị thực hiện những nhiệm vụ sau:
- Gửi mã lệnh điều khiển đến thiết bị: Hệ điều hành điều khiển các thiết bị bằng
các mã điều khiển, do đó trước khi bắt đầu một quá trình trao đổi dữ liệu với thiết bịthì hệ điều hành phải gởi mã điều khiển đến thiết bị
- Tiếp nhận yêu cầu ngắt từ các thiết bị: Các thiết bị khi cần trao đổi với hệ
thống thì nó phát ra một tín hiệu yêu cầu ngắt, hệ điều hành tiếp nhận yêu cầu ngắt từcác thiết bị, xem xét và thực hiện một thủ tục để đáp ứng yêu cầu từ các thiết bị
- Phát hiện và xử lý lỗi: Quá trình trao đổi dữ liệu thường xảy ra các lỗi như thiết
bị nhập/xuất chưa sẵn sàng, đường truyền hỏng do đó hệ điều hành phải tạo ra các cơchế thích hợp để phát hiện lỗi sớm nhất và khắc phục các lỗi vừa xảy ra
1.4.1.4 Thành phần quản lý bộ nhớ phụ (đĩa)
Mục tiêu của hệ thống máy tính là thi hành chương trình Những chương trìnhvới dữ liệu truy xuất của chúng phải được đặt trong bộ nhớ chính trong suốt quá trìnhthi hành Nhưng bộ nhớ chính quá nhỏ để có thể lưu trữ mọi dữ liệu và chương trình,ngoài ra dữ liệu sẽ bị mất khi không còn được cung cấp năng lượng Hệ thống máytính ngày nay cung cấp hệ thống lưu trữ phụ Đa số các máy tính đều dùng đĩa để lưutrữ cả chương trình và dữ liệu Hầu như tất cả chương trình như chương trình dịch,hợp ngữ, thủ tục, trình soạn thảo, định dạng… đều được lưu trữ trên đĩa cho tới khi nóđược thực hiện, nạp vào bộ nhớ chính và cũng sử dụng đĩa để chứa dữ liệu và kết quả
xử lý Vì vậy một bộ quản lý hệ thống đĩa rất quan trọng cho hệ thống máy tính
Tóm lại: Bộ phận quản lý bộ nhớ phụ thực hiện những nhiệm vụ sau:
- Quản lý không gian trống trên đĩa.
- Định vị lưu trữ thông tin trên đĩa.
- Lập lịch cho vấn đề đọc/ghi thông tin trên đĩa của đầu từ.
Vì hệ thống đĩa được sử dụng thường xuyên nên nó phải được dùng hiệu quả.Tốc độ của toàn bộ hệ thống tùy thuộc rất nhiều vào tốc độ truy xuất đĩa
1.4.1.5 Thành phần quản lý tập tin
Máy tính có thể lưu trữ thông tin trên nhiều loại thiết bị lưu trữ khác nhau, mỗithiết bị lại có tính chất và cơ chế tổ chức lưu trữ thông tin khác nhau, điều này gây khókhăn cho người sử dụng Để khắc phục điều này hệ điều hành đưa ra khái niệm đồng
nhất cho tất cả các thiết bị lưu trữ vật lý, đó là tập tin (File)
Tập tin là đơn vị lưu trữ thông tin cơ bản nhất, mỗi tập tin có một tên riêng Hệđiều hành phải thiết lập mối quan hệ tương ứng giữa tên tập tin và thiết bị lưu trữ chứatập tin Theo đó khi cần truy xuất đến thông tin đang lưu trữ trên bất kỳ thiết bị lưu trữnào người sử dụng chỉ cần truy xuất đến tập tin tương ứng thông qua tên của nó, tất cảmọi việc còn lại đều do hệ điều hành thực hiện
Trong hệ thống có nhiều tiến trình đồng thời truy xuất tập tin, hệ điều hành phải
Trang 21tạo ra cơ chế thích hợp để bảo vệ tập tin tránh việc đọc/ghi bất hợp lệ trên tập tin
Bộ phận quản lý tập tin của hệ điều hành thực hiện những nhiệm vụ sau:
- Tạo/xóa một tập tin/thư mục.
- Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời.
- Cung cấp các thao tác xử lý và bảo vệ tập tin/thư mục.
- Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin.
- Tạo cơ chế truy xuất tập tin thông qua tên tập tin.
1.4.1.6 Thành phần thông dịch lệnh
Đây là bộ phận quan trọng của hệ điều hành, nó đóng vai trò giao tiếp giữa hệđiều hành và người sử dụng Thành phần này chính là Shell mà chúng ta đã biết ở trên.Một số hệ điều hành chứa Shell trong nhân (Kernel) của nó, một số hệ điều hành khácthì Shell được thiết kế dưới dạng một chương trình đặc biệt
1.4.1.7 Thành phần bảo vệ hệ thống
Trong môi trường hệ điều hành đa nhiệm có thể có nhiều tiến trình hoạt độngđồng thời, thì mỗi tiến trình phải được bảo vệ để không bị tác động có chủ ý haykhông chủ ý của các tiến trình khác Trong trường hợp này hệ điều hành cần phải cócác cơ chế để luôn đảm bảo rằng các File, Memory, CPU và các tài nguyên khác mà
hệ điều hành đã cấp cho một chương trình, tiến trình thì chỉ có chương trình tiến trình
đó được quyền tác động đến các thành phần này
Nhiệm vụ trên thuộc thành phần bảo vệ hệ thống của hệ điều hành Thành phầnnày điều khiển việc sử dụng tài nguyên, đặc biệt là các tài nguyên dùng chung của cáctiến trình, đặc biệt là các tiến trình hoạt động đồng thời với nhau, sao cho không xảy ra
sự tranh chấp tài nguyên giữa các tiến trình hoạt đồng đồng thời và không cho phépcác tiến trình truy xuất bất hợp lệ lên các vùng nhớ của nhau
Hệ thống bảo vệ là một cơ chế kiểm soát quá trình truy xuất của chương trình,tiến trình hoặc người sử dụng với tài nguyên của hệ thống Cơ chế này cũng cung cấpcách thức để mô tả lại mức độ kiểm soát
1.4.2 Các dịch vụ của hệ điều hành
Hệ điều hành cung cấp một môi trường để thi hành các chương trình, bằng cáchcung cấp các dịch vụ cho chương trình và cho người sử dụng Các dịch vụ này trênmỗi hệ thống khác nhau nhưng cũng có những lớp chung Các dịch vụ giúp cho lậptrình viên thuận tiện hơn và việc lập trình dễ dàng hơn
- Thực thi chương trình: Hệ thống phải có nhiệm vụ nạp chương trình của người
sử dụng vào bộ nhớ, chuẩn bị đầy đủ các điều kiện về tài nguyên để chương trình cóthể chạy được và kết thúc được, có thể kết thúc bình thường hoặc kết thúc do bị lỗi.Khi chương trình kết thúc hệ điều hành phải thu hồi tài nguyên đã cấp cho chươngtrình
- Thao tác nhập/xuất: Khi chương trình chạy nó có thể yêu cầu nhập xuất dữ liệu
từ một tập tin hoặc từ một thiết bị nhập xuất Để tăng hiệu quả, người sử dụng khôngtruy xuất trực tiếp các thiết bị nhập xuất mà thông qua cách thức do hệ điều hành cungcấp
Trang 22- Thao tác hệ thống tập tin: Hệ điều hành cần cung cấp các công cụ để chương
trình dễ dàng thực hiện các thao tác đọc ghi trên các tập tin, các thao tác này phải thực
sự an toàn, đặc biệt là trong môi trường đa nhiệm
- Trao đổi thông tin giữa các tiến trình: Trong môi trường hệ điều hành đa
nhiệm, với nhiều tiến trình hoạt động đồng thời, một tiến trình có thể trao đổi thông tinvới nhiều tiến trình khác Trao đổi như thế có thể xảy ra trong hai cách chính Một làthực hiện trên cùng máy tính; hai là thay thế tiến trình khác trên hệ thống mạng Cácgiao tiếp có thể được thực hiện bằng bộ nhớ được chia sẻ, hay bằng kỹ thuật truyềnthông điệp, việc chuyển các thông tin được thực hiện bởi hệ điều hành
- Phát hiện lỗi và xử lý lỗi: Hệ điều hành phải có các công cụ để giúp chương
trình của người sử dụng phát hiện các lỗi do hệ thống (CPU, Memory, I/O Device,Program) phát sinh Đối với mỗi dạng lỗi hệ điều hành có cách giải quyết tương ứngsao cho hiệu quả nhất
- Cấp phát tài nguyên: Khi nhiều người dùng đăng nhập vào hệ thống hay nhiều
công việc đang chạy cùng lúc, hệ điều hành quản lý các tài nguyên và cung cấp tớimỗi người dùng nhiều loại tài nguyên khác nhau
- Tính toán: Hệ điều hành có chức năng lưu lại các thông tin của người dùng hoặc
người dùng đã sử dụng những chương trình nào trong máy tính Việc lưu lại có thểđược dùng để tính toán (tính tiền người dùng) hay đơn giản thống kê sử dụng Thống
kê sử dụng là công cụ có giá trị cho người nghiên cứu muốn cấu hình lại hệ thống đểcải tiến các dịch vụ tính toán
- Bảo vệ: Khi nhiều quá trình riêng lẻ thực thi đồng hành, không thể cho một quá
trình can thiệp tới các quá trình khác hay tới chính hệ điều hành Bảo vệ đảm bảo rằngtất cả truy xuất tài nguyên của hệ thống được kiểm soát An toàn hệ thống từ ngườidùng bên ngoài cũng là vấn đề quan trọng An toàn bắt đầu với mỗi người dùng cóquyền đối với hệ thống, thường bằng mật khẩu để được phép truy xuất tài nguyên.Ngoài ra nó còn bảo vệ đối với các thiết bị nhập/xuất bên ngoài, bao gồm modem, cardmạng từ những truy xuất không hợp lệ và ghi lại các nối kết để phát hiện đột nhập vào
hệ thống
1.4.3 Cấu trúc của hệ điều hành
1.4.3.1 Hệ thống đơn khối (Monolithic Systems)
Hệ điều hành là một tập hợp các thủ tục, mỗi thủ tục có thể gọi thực hiện một thủtục khác bất kỳ lúc nào khi cần thiết
Hệ thống đơn khối thường được tổ chức theo nhiều dạng cấu trúc khác nhau:
- Sau khi biên dịch tất cả các thủ tục riêng hoặc các tập tin chứa thủ tục của hệ
điều hành được liên kết lại với nhau và được chứa vào một tập tin được gọi là tập tinđối tượng, trong tập tin đối tượng chứa cả các thông tin về sự liên kết của các thủ tục Sau khi biên dịch các thủ tục của hệ điều hành không được liên kết lại, mà hệthống chỉ tạo ra tập tin hoặc một bảng chỉ mục để chứa thông tin của các thủ tục hệđiều hành, mỗi phần tử trong bảng chỉ mục chứa một con trỏ trỏ tới thủ tục tương ứng,con trỏ này dùng để gọi thủ tục khi cần thiết Ta có thể xem cách gọi ngắt (Interrupt)trong ngôn ngữ lập trình cấp thấp và cách thực hiện đáp ứng ngắt dựa vào bảng vectorngắt trong MSDOS là một ví dụ cho cấu trúc này sau đây minh họa cho việc đáp ứngmột lời gọi dịch vụ từ chương trình của người sử dụng dựa vào bảng chỉ mục
Trang 23
Hình 1.4 Sơ đồ thực hiện lời gọi hệ thống
1 Chương trình của người sử dụng gởi yêu cầu đến Kernel
2 Hệ điều hành kiểm tra yêu cầu dịch vụ
3 Hệ điều hành xác định (vị trí) và gọi thủ tục dịch vụ tương ứng
4 Hệ điều hành trả điều khiển lại cho chương trình người sử dụng
Cấu trúc đơn giản của hệ thống đơn khối gồm các thủ tục được chia thành 3 lớp:
1 Một chương trình chính (chương trình của người sử dụng) gọi đếnmột thủ tục dịch vụ của hệ điều hành Lời gọi này được gọi là lời gọi hệ thống
2 Một tập các thủ tục dịch vụ (Service) để đáp ứng những lời gọi hệthống từ các chương trình người sử dụng
3 Một tập các thủ tục tiện ích (Utility) hỗ trợ cho các thủ tục dịchtrong việc thực hiện cho các lời gọi hệ thống
Trong cấu trúc này mỗi lời gọi hệ thống sẽ gọi một thủ tục dịch vụ tương ứng.Thủ tục tiện ích thực hiện một vài điều gì đó mà thủ tục dịch vụ cần, chẳng hạn nhưnhận dữ liệu từ chương trình người sử dụng Các thủ tục của hệ điều hành được chiavào 3 lớp theo như hình dưới đây
Hình 1.5 Cấu trúc đơn giản của một Monolithic System
Chương trình người sử dụng 1Chương trình người sử dụng 2
Bảng mô tả
Hệ điều hành chạy trong Kernel mode
Chương trình người sử dụng chạy trong Uer
mode
Thủ tục chính
Thủ tục dịch vụ
Thủ tục tiện ích
Trang 24các chi tiết phần cứng bằng cách gọi một thủ tục cấp thấp, điều này gây khó khăn cho
hệ điều hành trong việc kiểm soát và bảo vệ hệ thống
- Các thủ tục dịch vụ mang tính chất tĩnh, nó chỉ hoạt động khi được gọi bởi
chương trình của người sử dụng, điều này làm cho hệ điều hành thiếu chủ động
1.4.3.2 Các hệ thống phân lớp (Layered Systems)
Hệ thống được chia thành các lớp, mỗi lớp được xây dựng dựa vào lớp bên trong.Lớp trong cùng thường là phần cứng, lớp ngoài cùng là giao diện với người sử dụng.Mỗi lớp là một đối tượng trừu tượng, chứa đựng bên trong nó các dữ liệu và thaotác xử lý dữ liệu đó Lớp n chứa đựng một cấu trúc dữ liệu và các thủ tục có thể đượcgọi bởi lớp n+1 hoặc ngược lại có thể gọi các thủ tục ở lớp n-1
Hình 1.6 Hệ thống phân lớp của Unix cho ta thấy cấu trúc phân lớp trong hệ điều hành Unix
Ví dụ về một hệ điều hành phân lớp:
Lớp 5: Chương trình ứng dụng
Lớp 4: Quản lý bộ đệm cho các thiết bị nhập xuất
Lớp 3: Trình điều khiển thao tác Console
Lớp 2: Quản lý bộ nhớ
Lớp 1: Điều phối vi xử lý
Lớp 0: Phần cứng hệ thống
Nhận xét:
- Khi xây dựng hệ điều hành theo hệ thống này các nhà thiết kế gặp khó khăn
trong việc xác định số lượng lớp, thứ tự và chức năng của mỗi lớp
- Hệ thống này mang tính đơn thể, nên dễ cài đặt, tìm lỗi và kiểm chứng hệ thống.
- Trong một số trường hợp lời gọi thủ tục có thể lan truyền đến các thủ tục khác ở
các lớp bên trong nên chi phí cho vấn đề truyền tham số và chuyển đổi ngữ cảnh tănglên, dẫn đến lời gọi hệ thống trong cấu trúc này thực hiện chậm hơn so với các cấu trúc
Giao diện lời
gọi hệ thống
Giao diện người sử
Chương trình tiện ích chuẩn
(Shell, Editor, Compiler, )
Thư viện chuẩn(Open, Close, Read, Write, )
Hệ diều hành Unix(Process Management, Memory Management the File System, I/O, …)
Trang 25khác
1.4.3.3 Máy ảo (Virtual Machine)
Thông thường một hệ thống máy tính bao gồm nhiều lớp: Phần cứng ở lớp thấpnhất, đóng vai trò là hạt nhân ở lớp kế trên Hạt nhân dùng các chỉ thị (lệnh máy) củaphần cứng để tạo ra một tập các lời gọi hệ thống Các hệ điều hành hiện đại thiết kếmột lớp các chương trình hệ thống nằm giữa hệ điều hành và chương trình của người
sử dụng
Các chương trình hệ thống có thể sử dụng các lời gọi hệ thống hoặc sử dụng trựctiếp các chỉ thị phần cứng để thực hiện một chức năng hoặc một thao tác nào đó, do đócác chương trình hệ thống thường xem các lời gọi hệ thống và các chỉ thị phần cứngnhư ở trên cùng một lớp
Một số hệ điều hành cho phép các chương trình của người sử dụng có thể gọi dễdàng các chương trình hệ thống và xem mọi thành phần dưới chương trình hệ thốngđều là phần cứng máy tính Lớp các ứng dụng này sử dụng khái niệm máy ảo
Mục đích của việc sử dụng máy ảo là xây dựng các hệ thống đa chương vớinhiều tiến trình thực hiện đồng thời, mỗi tiến trình được cung cấp một máy ảo với đầy
đủ tài nguyên, tất nhiên là tài nguyên ảo để nó thực hiện được
Trong cấu trúc này, phần nhân của hệ thống trở thành bộ phận tổ chức giám sátmáy ảo, phần này chịu trách nhiệm giao tiếp với phần cứng, chia sẻ tài nguyên hệthống để tạo ra nhiều máy ảo, hoạt động độc lập với nhau để cung cấp cho lớp trên
Ở đây cần phân biệt sự khác nhau giữa máy ảo và máy tính mở rộng, máy ảo làbản sao chính xác các đặc tính phần cứng của máy tính thực sự và cho phép hệ điềuhành hoạt động trên nó, sau đó hệ điều hành xây dựng máy tính mở rộng để cung cấpcho người sử dụng
Với cấu trúc này mỗi tiến trình hoạt động trên một máy ảo độc lập và nó có cảmgiác như đang sở hữu một máy tính thực sự
Hình 1.7 So sánh mô hình hệ thống (a) Không có máy ảo (b) Máy ảo
Trang 26- Vấn đề bảo vệ tài nguyên hệ thống và tài nguyên đã cấp phát cho các tiến trình,
sẽ trở nên đơn giản hơn vì mỗi tiến trình thực hiện trên một máy tính (ảo) độc lập vớinhau nên việc tranh chấp tài nguyên là không thể xảy ra
- Nhờ hệ thống máy ảo mà một ứng dụng được xây dựng trên hệ điều hành có thể
hoạt động được trên hệ điều hành khác Ví dụ: Trong môi trường hệ điều hànhWindows 9x người sử dụng có thể thực hiện được các ứng dụng, được thiết kế để thựchiện trên môi trường MSDOS, sở dĩ như vậy là vì Windows đã cung cấp cho các ứngdụng này một máy ảo DOS (VMD: Virtual Machine DOS) để nó hoạt động như đanghoạt động trong hệ điều hành DOS Tương tự trong môi trường hệ điều hành Windows
NT người sử dụng có thể thực hiện được các ứng dụng được thiết kế trên tất cả các hệđiều hành khác nhau, có được điều này là nhờ trong cấu trúc của Windows NT có chứacác hệ thống con (Subsystems) môi trường tương thích với các môi trường hệ điềuhành khác nhau như: Win32, OS/2, v.v , các ứng dụng khi cần thực hiện trênWindows NT sẽ thực hiện trong các hệ thống con tương ứng, đúng với môi trường màứng dụng đó được tạo ra
1.4.3.4 Mô hình Client/Server (Client/Server Model)
- Khuynh hướng của các hệ điều hành hiện đại là chuyển dần các đoạn mã của hệ
thống lên những lớp cao hơn và bỏ dần các chức năng trong hạt nhân, chỉ còn lại hạtnhân tối thiểu Cách tiếp cận là cài đặt hầu hết những chức năng của hệ điều hànhtrong các xử lý của người sử dụng Để yêu cầu một dịch vụ, như đọc một khối từ tậptin, một xử lý của người sử dụng (còn gọi là tiến trình Client) sẽ gởi những yêu cầu đócho một xử lý của bộ phận dịch vụ (còn gọi là tiến trình Server) sau đó nó sẽ thực hiện
và gởi kết quả trở lại
- Với mô hình này, chức năng của hạt nhân chỉ kiểm soát quá trình thông tin giữa
Client và Server Bằng cách chia hệ điều hành ra làm những phần nhỏ, mỗi phần chỉkiểm soát một mặt của hệ thống như các dịch vụ về tập tin, tiến trình, Terminal, bộnhớ, mỗi phần sẽ gọn hơn và dễ quản lý hơn Hơn nữa, tất cả Server thực hiện nhưnhững tiến trình của người dùng (User Mode) không phải ở mức độ hạt nhân (KernelMode), nên nó không truy xuất trực tiếp phần cứng Do đó nếu Server tập tin bị lỗi,các dịch vụ về tập tin có thể bị hỏng nhưng nó không gây ảnh hưởng đến toàn bộ hệthống
Một ưu điểm khác của mô hình Client/Server là nó có thể tương thích dễ dàngvới mô hình hệ thống phân tán Nếu một Client giao tiếp với một Server bằng cách gởinhững thông điệp, thì những thông điệp từ máy Client đó được gởi vào mạng đếnServer trên một máy từ xa Các yêu cầu của Client được gởi đi và một đáp ứng yêu cầuxảy ra hình 1.8 (mô hình Client-Server) như sau:
TiếntrìnhClient
TiếntrìnhClient
TiếntrìnhServe
Tiến
Terminal ….
Servertập tin Server bộ nhớ
Kernel (hạt nhân)
User mode
Client nhận những dịch vụ bằng cách
Trang 27Hình 1.8 Mô hình Client-ServerKhi cần thực hiện một chức năng hệ thống các tiến trình Client sẽ gởi yêu cầu tớitiến trình Server tương ứng, tiến trình Server sẽ xử lý và trả lời kết quả cho tiến trìnhClient.
Nhận xét:
- Hệ thống này dễ thay đổi và dễ mở rộng hệ điều hành Để thay đổi các chức năng
của hệ điều hành chỉ cần thay đổi ở Server tương ứng, để mở rộng hệ điều hành chỉcần thêm các Server mới vào hệ thống
- Các tiến trình Server của hệ điều hành hoạt động trong chế độ không độc quyền
không thể truy cập trực tiếp đến phần cứng, điều này giúp hệ thống được bảo vệ
- Cấu trúc được chia thành 2 phần: Kernel Mode và User Mode Các chương trình
ứng dụng của người sử dụng chỉ chạy trong User Mode, các dịch vụ của hệ điều hànhchỉ chạy trong Kernel Mode Nhờ vậy mà việc bảo vệ các chương trình của người sửdụng cũng như các thành phần của hệ điều hành trên bộ nhớ được thực hiện dễ dànghơn
1.5 Câu hỏi và bài tập
1 Hãy nêu các chức năng chính của hệ điều hành
2 Các hệ điều hành hiện nay có các chức năng cụ thể nào Hãy giải thích cácchức năng đó
3 Hãy nêu lịch sử phát triển của hệ điều hành
4 Nêu chức năng và nhiệm vụ của bộ xử lý lệnh (Shell) Chức năng của nó đốivới các hệ điều hành và các chương trình khác nhau
5 Hãy vẽ sơ đồ phân lớp của hệ thống Nêu sự tác động và yêu cầu của người
sử dụng đối với hệ điều hành
6 Hãy cho biết các tài nguyên của hệ thống máy tính, nêu rõ các loại tàinguyên
7 Hãy nêu các khái niệm hệ điều hành Phân loại hệ điều hành và nói rõ chứcnăng của từng loại hệ điều hành
8 Hãy nêu các thành phần, các dịch vụ của hệ điều hành
9 Hệ thống đơn khối là gì, hệ thống được tổ chức theo dạng cấu trúc nào Hãynêu cấu trúc đơn giản của hệ thống đơn khối có mấy lớp
10 Nêu các hệ thống phân lớp và mô tả các lớp
11 Máy ảo là gì và mục đích của việc sử dụng máy ảo Hãy nhận xét và so sánh
hệ thống có máy ảo và không có máy ảo
Trang 28CHƯƠNG 2 QUẢN LÝ TIẾN TRÌNH
Các hệ điều hành đa chương, đa người dùng có thể hỗ trợ đến hàng ngàn người
sử dụng và đều xây dựng dựa trên khái niệm tiến trình Vì thế khi thiết kế hệ điều hànhphải chú trọng đến việc quản lý tiến trình của hệ điều hành để đáp ứng được tất cảnhững gì liên quan đến tiến trình như:
- Hệ điều hành cho phép thực hiện nhiều tiến trình đồng thời để khai thác tối đa
thời gian xử lý của vi xử lý nhưng cũng cung cấp được thời gian hồi đáp hợp lý
- Hệ điều hành phải cấp phát tài nguyên để tiến trình hoạt động một cách có hiệu
quả với chính sách hợp lý, không xảy ra tình trạng bế tắc trong hệ thống
- Hệ điều hành có thể yêu cầu hỗ trợ trong việc người sử dụng tạo ra tiến trình.
Hệ điều hành phải có nhiệm vụ tạo ra tiến trình, điều khiển sự hoạt động của tiếntrình và kết thúc tiến trình
Trong các hệ điều hành đa chương có nhiều tiến trình tồn tại trên bộ nhớ chính,các tiến trình này luân phiên giữa 2 trạng thái: sử dụng vi xử lý và đợi thực hiệnnhập/xuất hay một vài sự kiện nào đó xảy ra
2.1 Các mô hình xử lý đồng hành
Hầu hết các hệ điều hành hiện đại đều cho phép người dùng thi hành nhiều côngviệc đồng thời trên cùng một máy tính Nhu cầu xử lý đồng hành (Concurrency) nàyxuất phát từ đó Do đó hệ điều hành cần phải tổ chức hỗ trợ cho các môi trường đanhiệm (Multitask)
2.1.1 Nhu cầu xử lý đồng hành
Có 2 động lực chính khiến cho các hệ điều hành hiện đại thường hỗ trợ môitrường đa nhiệm (Multitask) trong đó chấp nhận nhiều tác vụ thực hiện đồng thời trêncùng một máy tính:
- Tăng hiệu suất sử dụng CPU:
Phần lớn các tác vụ (job) khi thi hành đều trải qua nhiều chu kỳ xử lý (sử dụngCPU) và chu kỳ nhập xuất (sử dụng các thiết bị nhập xuất) xen kẽ như sau:
Nếu chỉ có 1 tiến trình duy nhất trong hệ thống, thì vào các chu kỳ IO của tác vụ,CPU sẽ hoàn toàn nhàn rỗi Ý tưởng tăng cường số lượng tác vụ trong hệ thống là đểtận dụng CPU: nếu tác vụ 1 xử lý IO, thì có thể sử dụng CPU để thực hiện tác vụ 2
- Tăng tốc độ xử lý:
Một số bài toán có bản chất xử lý song song nếu được xây dựng thành nhiều
Trang 29Modul hoạt động đồng thời thì sẽ tiết kiệm được thời gian xử lý.
Ví dụ: Xét bài toán tính giá trị biểu thức kq = a*b + c*d Nếu tiến hành tính đồngthời (a*b) và (c*d) thì thời gian xử lý sẽ ngắn hơn là thực hiện tuần tự
Trong các trường hợp đó, cần có một mô hình xử lý đồng hành thích hợp Trênmáy tính có cấu hình nhiều CPU, hỗ trợ xử lý song song (Multiprocessing) thật sự,điều này sẽ giúp tăng hiệu quả thi hành của hệ thống đáng kể
2.1.2 Tiến trình và mô hình đa tiến trình
Để hỗ trợ sự đa chương, máy tính phải có khả năng thực hiện nhiều tác vụ đồngthời Nhưng việc điều khiển nhiều hoạt động song song ở cấp độ phần cứng là rất khó
khăn Vì thế các nhà thiết kế hệ điều hành đề xuất một mô hình song song giả lập bằng
cách chuyển đổi bộ xử lý qua lại giữa các chương trình để duy trì hoạt động của nhiềuchương trình cùng lúc, nghĩa là một CPU có thể chuyển từ chương trình này sangchương trình khác, thực hiện mỗi chương trình trong khoảng 1% hoặc 1/10 mili giây.Nếu nói chính xác thì tại một thời điểm CPU chỉ thực hiện được một chương trình.Nhưng xét trong khoảng thời gian phần trăm giây thì CPU có thể thực hiện nhiều côngviệc, điều này tạo cảm giác có nhiều hoạt động được thực hiện đồng thời
Trong mô hình này, tất cả các phần mềm trong hệ thống được tổ chức thành một
số những tiến trình (Process) Tiến trình là một chương trình đang xử lý, sở hữu một
con trỏ lệnh, tập các thanh ghi và các biến Để hoàn thành tác vụ của mình, một tiếntrình có thể cần đến một số tài nguyên như CPU, bộ nhớ chính, các tập tin và thiết bị
Cần phân biệt hai khái niệm chương trình và tiến trình Một chương trình là một
thực thể thụ động, chứa đựng các chỉ thị điều khiển máy tính để tiến hành một tác vụnào đó, khi cho thực hiện các chỉ thị này, chương trình chuyển thành tiến trình, là mộtthực thể hoạt động, với con trỏ lệnh xác định chỉ thị kế tiếp sẽ thi hành, kèm theo tậpcác tài nguyên phục vụ cho hoạt động của tiến trình
Mỗi tiến trình sở hữu một bộ xử lý ảo cho riêng nó, nhưng thực tế, chỉ có một bộ
xử lý thật sự được chuyển đổi qua lại giữa các tiến trình Sự chuyển đổi nhanh chóng
này được gọi là sự đa chương Hệ điều hành chịu trách nhiệm sử dụng một thuật toán
điều phối để quyết định thời điểm cần dừng hoạt động của tiến trình đang xử lý đểphục vụ một tiến trình khác và lựa chọn tiến trình tiếp theo sẽ được phục vụ Bộ phận
thực hiện chức năng này của hệ điều hành được gọi là bộ điều phối (Scheduler).
Hình 2.9 Mô hình các chương trìnhTrong đó Hình 2 9cho ta thấy với mô hình:
(a) Đa chương với 4 chương trình
(b) Mô hình khái niệm với 4 chương trình độc lập
(c)Tại một thời điểm chỉ có một chương trình hoạt động
Trang 302.1.3 Tiểu trình và mô hình đa tiểu trình
Hầu hết các hệ điều hành, mỗi tiến trình có một không gian địa chỉ và chỉ có mộtdòng xử lý Tuy nhiên, có nhiều tình huống người sử dụng mong muốn có nhiều dòng
xử lý cùng chia sẻ một không gian địa chỉ và các dòng xử lý này hoạt động song songtương tự như các tiến trình phân biệt (ngoại trừ việc chia sẻ không gian địa chỉ)
Ví dụ: Một Server quản lý tập tin thỉnh thoảng phải tự khóa để chờ các thao tác
truy xuất đĩa hoàn tất Nếu Server có nhiều dòng xử lý, hệ thống có thể xử lý các yêucầu mới trong khi một dòng xử lý bị khóa Như vậy việc thực hiện chương trình sẽ cóhiệu quả hơn Điều này không thể đạt được bằng cách tạo hai tiến trình Server riêngbiệt vì cần phải chia sẻ cùng một vùng đệm, do vậy bắt buộc phải chia sẻ không gianđịa chỉ
Chính vì các tình huống tương tự, người ta cần có một cơ chế xử lý mới cho phép
có nhiều dòng xử lý trong cùng một tiến trình Hệ điều hành cung cấp một cơ chế như
thế và gọi là tiểu trình (Threads)
- Nguyên lý chung:
Tiểu trình là một đơn vị xử lý cơ bản trong hệ thống Mỗi tiểu trình xử lý tuần tựđoạn code, sở hữu một con trỏ lệnh, tập các thanh ghi và một vùng nhớ Stack riêng.Các tiểu trình chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình Mộttiến trình có thể sở hữu nhiều tiểu trình
Các tiến trình tạo thành những thực thể độc lập Mỗi tiến trình có một tập tàinguyên và một môi trường riêng (một con trỏ lệnh, một Stack, các thanh ghi và khônggian địa chỉ) Các tiến trình hoàn toàn độc lập với nhau, chỉ có thể liên lạc thông quacác cơ chế thông tin giữa các tiến trình mà hệ điều hành cung cấp Ngược lại, các tiểutrình trong cùng một tiến trình lại chia sẻ một không gian địa chỉ chung, điều này cónghĩa là các tiểu trình có thể chia sẻ các biến toàn cục của tiến trình Một tiểu trình cóthể truy xuất đến cả các Stack của những tiểu trình khác trong cùng tiến trình Cấu trúcnày không đề nghị một cơ chế bảo vệ nào và điều này cũng không thật cần thiết vì cáctiểu trình trong cùng một tiến trình thuộc về cùng một sở hữu chủ đã tạo ra chúngtrong ý định cho phép chúng hợp tác với nhau
Tóm lại: Tiến trình là một chương trình đang hoạt động Để sử dụng hiệu quả
CPU, sự đa chương cần được đưa vào hệ thống Sự đa chương được tổ chức bằng cáchlưu trữ nhiều tiến trình trong bộ nhớ tại một thời điểm và điều phối CPU qua lại giữacác tiến trình trong hệ thống
Mô hình đa tiểu trình cho phép mỗi tiến trình có thể tiến hành nhiều dòng xử lýđồng thời trong cùng một không gian địa chỉ nhằm thực hiện tác vụ hiệu quả hơn
Tiến trình là một dãy các trạng thái của hệ thống tính toán và việc chuyển từ
Trang 31trạng thái này sang trạng thái khác được thực hiện theo 1 chương trình nào đó.
Các trạng thái này nhất thiết không phải liên tiếp
+ Tiến trình hệ thống: được sinh ra khi thực hiện các lời gọi hệ thống
+ Tiến trình của người sử dụng: được sinh ra khi thực thi chương trình của người
sử dụng
2.2.1 Các loại tiến trình
Tiến trình trong hệ thống có thể chia thành hai loại: Tuần tự và song song
Tiến trình tuần tự: Là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc
của tiến trình trước đó
Tiến trình song song: Là tiến trình mà điểm bắt đầu của của tiến trình này nằm
giữa thời điểm bắt đầu và kết thúc của chương trình kia
Tiến trình 1:
Tiến trình 2:
Bắt đầu
- Tiến trình song song khi thực hiện thì có thể thực hiện song song vật lý và song
song đan xen Thực hiện song song vật lý nghĩa cùng một thời điểm 2 tiến trình cùngđược thực hiện, như vậy nó chỉ thực hiện ở trong chế độ nhiều vi xử lý Còn thực hiệnsong song đan xen dùng để nâng cao hiệu quả của vi xử lý, các tiến trình lần lượt đượcphục vụ đan xen lẫn nhau Tiến trình song song chia nhiều loại:
- Tiến trình song song độc lập: Là các tiến trình hoạt động song song nhưng không
có quan hệ thông tin với nhau, trong trường hợp này hệ điều hành phải thiết lập cơ chếbảo vệ dữ liệu của các tiến trình và cấp phát tài nguyên cho các tiến trình một cách hợp
lý không làm ảnh hưởng đến các tiến trình khác
- Tiến trình song song có quan hệ thông tin: trong quá trình hoạt động các tiến
trình thường trao đổi thông tin với nhau, trong một số trường hợp tiến trình gởi thôngbáo cần phải nhận được tín hiệu từ tiến trình nhận để tiếp tục, điều này dễ dẫn đến bếtắc khi tiến trình nhận tín hiệu không ở trong trạng thái nhận hay tiến trình gởi không ởtrạng thái nhận thông báo trả lời
- Tiến trình song song phân cấp: Là loại tiến trình trong quá trình hoạt động nó sản
sinh ra một tiến trình nữa hoạt động song song với chính nó, tiến trình khởi tạo đượcgọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con
Khi tiến trình con hoạt động thì có thể lấy từ vốn tài nguyên từ:
+ Nếu lấy tài nguyên từ vốn tài nguyên của hệ thống thì hệ thống có thể quản lýtài nguyên tập trung Như vậy sẽ tối ưu hóa việc sử dụng tài nguyên, nhưng việc quản
lý này rất phức tạp vì hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất cảcác tiến trình trong hệ thống
+ Nếu tiến trình con lấy từ vốn tài nguyên từ tiến trình cha thì ta có hệ quản lý tài
S0 S1 S2 S3 S4 S5 S6 S7 … Sn-1 Sn Sn+1 …
Trang 32nguyên phân tán Tức là tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điềuhành để cấp phát cho các tiến trình mà nó tạo ra và nó có nhiệm vụ thu hồi lại tàinguyên đã cấp phát trả về cho hệ điều hành trước khi kết thúc Loại tài nguyên nàyđơn giản, nhưng không có khả năng khai thác tối ưu tài nguyên hệ thống Trong mọitrường hợp nếu tài nguyên ở đâu thì phải trả về đó, vì vậy tiến trình chính thường sửdụng các lệnh chờ POS hoặc WAIT để các tiến trình còn kịp trả lại tài nguyên.
- Tiến trình song song đồng mức: Hai tiến trình gọi là song song đồng mức nếu có
thể sử dụng chung tài nguyên theo nguyên tắc lần lượt, mỗi tiến trình sau một khoảngthời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình kia
Ví dụ: Chương trình chơi cờ, tài nguyên chung là bàn cờ Giả sử đến lượt tiếntrình thứ nhất, tiến trình thứ nhất chiếm tài nguyên để chơi, khi ra quyết định xong thìtrả lại bàn cờ cho hệ thống Tiến trình thứ hai phải kiểm tra xem tiến trình thứ nhất đã
đi chưa? Nếu xong rồi thì mới tới lượt nó (thực hiện như tiến trình thứ nhất)
Các tiến trình tuần tự chỉ xuất hiện trong các hệ điều hành đơn nhiệm đa chương,như hệ điều hành MSDOS, loại tiến trình này tồn tại nhiều hạn chế, điển hình nhất làkhông khai thác tối đa thời gian xử lý của vi xử lý Các tiến trình song song xuất hiệntrong các hệ điều hành đa nhiệm đa chương, trên cả hệ thống đơn vị xử lý và đa xửlý” Nhưng sự song song thực chỉ có ở các hệ thống đa vi xử lý, trong hệ thống nàymỗi vi xử lý chịu trách nhiệm thực hiện một tiến trình Sự song song trên các hệ thốngđơn vi xử lý là sự song song giả, các tiến trình song song trên hệ thống này thực chất
là các tiến trình thay nhau sử dụng vi xử lý, tiến trình này đang chạy thì có thể dừng lại
để nhường vi xử lý cho tiến trình khác chạy và sẽ tiếp tục lại sau đó khi có được vi xử
lý Đây là trường hợp mà ở trên ta cho rằng: điểm khởi tạo của tiến trình này nằm ởthân của tiến trình khác Hình 2 10 minh họa sự khác nhau, về mặt thực hiện giữa cáctiến trình song song/đồng thời trong hệ thống đơn vi xử lý với các tiến trình songsong/đồng thời trong hệ thống đa vi xử lý
Hình 2.10 Sự thực hiện đồng thời của các tiến trình trong hệ thống
Hình 2 10 (a) Trong hệ thống đơn vi xử lý
a Trong hệ thống đơn vi xử lý
P1P2
b Trong hệ thống đa vi xử lý
Trang 33+ Thứ hai là các tiến trình của chương trình người sử dụng Các tiến trình của hệđiều hành hoạt động trong chế độ độc quyền, nhờ đó mà nó có thể truy xuất vào cácvùng dữ liệu được bảo vệ của hệ thống Trong khi đó các tiến trình của chương trìnhngười sử dụng hoạt động trong chế độ không độc quyền, nên nó không thể truy xuấtvào hệ thống, nhờ đó mà hệ điều hành được bảo vệ Các tiến trình của chương trìnhngười sử dụng truy xuất vào hệ thống thông qua hệ điều hành bằng lời gọi hệ thống.
2.2.2 Mô hình tiến trình
Đa số các hệ điều hành đều muốn đưa sự đa chương, đa nhiệm vào hệ thống Tức
là có nhiều chương trình hoạt động đồng thời (Concurrence) với nhau Về nguyên tắc,
để thực hiện được thì hệ thống phải có nhiều vi xử lý, mỗi vi xử lý có nhiệm vụ thực
hiện một chương trình, nhưng hệ điều hành và người sử dụng mong muốn sự đa chương trên các hệ thống chỉ có một vi xử lý Hiện nay hệ điều hành Windows9x,
WindowsNT/2000 đã thực hiện được điều này chạy trên máy tính cá nhân Để thựchiện, hệ điều hành đã sử dụng mô hình tiến trình tạo ra sự song song giả hay tạo ra các
vi xử lý logic từ vi xử lý vật lý Các vi xử lý logic có thể hoạt động song song vớinhau, mỗi vi xử lý logic chịu trách nhiệm thực hiện một tiến trình
Mỗi chương trình được hệ điều hành chia thành nhiều tiến trình, khởi tạo và đưavào hệ thống của chương trình hoặc của nhiều chương trình khác nhau, và cấp phátđầy đủ tài nguyên cho tiến trình, đưa các tiến trình sang trạng thái sẵn sàng Hệ điềuhành bắt đầu cấp vi xử lý cho một tiến trình ở trạng thái sẵn sàng để tiến trình này hoạtđộng, sau một khoảng thời gian nào đó hệ điều hành thu hồi vi xử lý để cấp cho mộttiến trình sẵn sàng khác và như thế cho đến khi tất cả các tiến trình mà hệ điều hànhkhởi tạo đều hoạt động và kết thúc được Điều đáng chú ý trong mô hình tiến trình này
là khoảng thời gian chuyển vi xử lý từ tiến trình này sang tiến trình khác hay khoảngthời gian giữa hai lần được cấp phát vi xử lý của một tiến trình là rất nhỏ nên các tiếntrình có cảm giác luôn được sở hữu vi xử lý (logic) hay hệ thống có cảm giác các tiếntrình/chương trình hoạt động song song nhau Hiện tượng này được gọi là sự songsong giả
Giả sử trong hệ thống có 3 tiến trình sẵn sàng P1, P2, P3 thì quá trình chuyển vi xử
lý giữa 3 tiến trình được minh họa như sau:
Thời điểm Trạng thái các tiến trình
Trang 34
Hình 2.11 Sự hoạt động “song song” của các tiến trình P1, P2, P3 đơn vi xử lý
Chức năng của vi xử lý là thực hiện các chỉ thị máy (machine instruction) thườngtrú trong bộ nhớ chính, các chỉ thị này được cung cấp từ một chương trình bao gồmmột dãy tuần tự các chỉ thị Và theo trên tiến trình là một bộ phận của chương trình, nócũng sở hữu một tập lệnh trong bộ nhớ chính, một con trỏ lệnh… Nên xét về bản chấtthì việc chuyển vi xử lý từ tiến trình này sang tiến trình khác là việc điều khiển vi xử
lý để nó thực hiện xen kẽ các chỉ thị bên trong tiến trình Điều này có thể thực hiện dễdàng bằng cách thay đổi hợp lý giá trị của con trỏ lệnh, đó chính là cặp thanh ghiCS:IP trong các vi xử lý thuộc kiến trúc Intel, để con trỏ lệnh chỉ đến các chỉ thị cầnthực hiện trong các tiến trình Để thấy rõ hơn điều này ta xem ví dụ sau:
Giả sử hệ thống cần thực hiện đồng thời 3 tiến trình P1, P2, P3, bắt đầu từ tiếntrình P1 Các chỉ thị của các tiến trình này được nạp vào bộ nhớ tại các địa chỉ như sau:Tiến trình P1: Tiến trình P2: Tiến trình P3:
Trong đó: a: là địa chỉ bắt đầu chương trình của tiến trình P1
b: là địa chỉ bắt đầu chương trình của tiến trình P2
c: là địa chỉ bắt đầu chương trình của tiến trình P3
Thì giá trị của con trỏ lệnh (giá trị cặp thanh ghi CS:IP) lần lượt là: a+0, b+0,c+0, a+1, b+2, c+1, a+3, b+3, c+4, a+5, c+6 Tức là, vi xử lý thực hiện xen kẽ các chỉthị của 3 tiến trình P1,P2,P3 từ lệnh đầu tiên đến lệnh cuối cùng, cho đến khi tất cả cácchỉ thị của 3 tiến trình đều được thực hiện Nhưng khoảng thời gian từ khi con trỏ lệnh
=a+0 đến khi =a+1, hay từ khi =b+0 đến khi =b+2… là rất nhỏ, nên hệ thống có “cảmgiác” 3 tiến trình P1, P2, P3 hoạt động đồng thời với nhau
Ví dụ trên cho ta thấy bản chất của việc thực hiện song song (hay đồng thời) cáctiến trình trên hệ thống đơn vi xử lý Với mô hình này hệ thống có 2 thuận lợi:
- Tiết kiệm được bộ nhớ: Vì không phải nạp tất cả chương trình vào bộ nhớ mà chỉ
nạp các tiến trình cần thiết nhất, sau đó tùy theo yêu cầu mà có thể nạp tiếp các tiếntrình khác
- Cho phép các chương trình hoạt động song song nên tốc độ xử lý của toàn hệ
thống tăng lên và khai thác tối đa thời gian xử lý của vi xử lý
Chọn thời điểm dừng của tiến trình đang hoạt động để thu hồi vi xử lý chuyểncho tiến trình khác hay chọn tiến trình tiếp theo ở trạng thái sẵn sàng để cấp vi xử lý làvấn đề khá phức tạp Hệ điều hành phải có một cơ chế điều phối thích hợp thì mới có
P1P2P3
Time
t1 t2 t3 t4 t5 t6
Trang 35thể tạo ra được hiệu ứng song song giả và sử dụng tối ưu thời gian xử lý của vi xử lý.
Bộ phận thực hiện chức năng này của hệ điều hành được gọi là bộ điều phối tiến trình
2.2.3 Các trạng thái tiến trình
Từ khi được đưa vào hệ thống cho đến khi kết thúc, tiến trình tồn tại ở các trạngthái khác nhau Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt độnghiện thời của tiến trình tại thời điểm đó
Tiến trình hai trạng thái: Một số ít hệ điều hành cho phép tiến trình tồn tại ở
một trong hai trạng thái: Not Running và Running Khi hệ điều hành tạo ra một tiếntrình mới, đưa tiến trình đó vào hệ thống ở trạng thái Not Running, tiến trình ở trạngthái này để chờ được chuyển sang trạng thái Running Vì một lý do nào đó, tiến trìnhđang thực hiện bị ngắt thì bộ điều phối tiến trình của hệ điều hành sẽ thu hồi lại vi xử
lý của tiến trình này và chọn một tiến trình ở trạng thái Not Running để cấp vi xử lýcho nó và chuyển nó sang trạng thái Running Tiến trình bị thu hồi vi xử lý sẽ đượcchuyển về lại trạng thái Not Running
Hình 2.12 Sơ đồ chuyển tiến trình 2 trạng thái
Tại một thời điểm xác định chỉ duy nhất một tiến trình ở trạng thái Runnig,nhưng có nhiều tiến trình ở trạng thái Not Running, các tiến trình ở trạng thái NotRunning được chứa trong một hàng đợi (Queue) Tiến trình đang ở trạng thái Running
bị chuyển sang trạng thái Not Running sẽ được đưa vào hàng đợi mô tả việc chuyểntrạng thái tiến trình trong các hệ điều hành sử dụng 2 trạng thái tiến trình
Hình 2.13 Sơ đồ chuyển tiến trình vào hàng đợi
Tiến trình ba trạng thái: Đa số hệ điều hành đều cho phép tiến trình tồn tại ở
một trong ba trạng thái: Ready, Running, Blocked:
- Trạng thái Ready (sẵn sàng): Trạng thái Ready là trạng thái của một tiến trình
trong hệ thống đang chờ được cấp vi xử lý để bắt đầu thực hiện
- Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu vi
xử lý để hoạt động, hay nói cách khác là các chỉ thị của tiến trình đang được thựchiện/xử lý bởi vi xử lý
- Trạng thái Blocked (khóa): Là trạng thái mà tiến trình đang chờ để được cấp phát
thêm tài nguyên, để một sự kiện nào đó xảy ra, một quá trình nhập/xuất kết thúc
Not
ExitDispatch
PauseEnter
Enter
Queue
DispatchPause
ExitProcessor
Trang 36Quá trình chuyển trạng thái của các tiến trình trên được mô tả bởi sơ đồ sau:
1 (Admit) tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy
đủ tài nguyên chỉ thiếu vi xử lý
2 (Dispatch) tiến trình được cấp vi xử lý để bắt đầu thực hiện/xử lý
3 (Release) tiến trình hoàn thành xử lý và kết thúc
Hình 2.14 Sơ đồ chuyển tiến trình 3 trạng thái
4 (Time_Out) tiến trình bị bộ điều phối thu hồi vi xử lý, do hết thời gian đượcquyền sử dụng vi xử lý, để cấp phát cho tiến trình khác
5 (Event Wait) tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờmột thao tác nhập/xuất kết thúc hay tài nguyên mà tiến trình yêu cầu chưađược hệ điều hành đáp ứng
6 (Event Occurs) sự kiện mà tiến trình chờ đã xảy ra, thao tác nhập/xuất mà tiếntrình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điềuhành đáp ứng
Bộ phận điều phối tiến trình thu hồi vi xử lý từ một tiến trình đang thực hiện khi:
- Tiến trình đang thực hiện hết thời gian (Time-Out) được quyền sử dụng vi xử lý
mà bộ phận điều phối dành cho nó
- Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến
trình hiện tại
- Có một tiến trình mới phát sinh và nó cần một khoảng thời gian vi xử lý nhỏ hơn
nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần vi xử lý
Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạngthái Ready hoặc Blocked nhưng chỉ có một tiến trình ở trạng thái Running Các tiếntrình ở trạng thái Ready và Blocked được chứa trong các hàng đợi (Queue) riêng
Hình 2.15 Sơ đồ chuyển tiến trình vào các hàng đợi
Running
Blocked
Ready
34
1
New
Exit2
ReleaseAdmit
Ready Queue
Dispatch
Time-out
Event WaitEvent
Occurs
Blocked Queue
Processor
Trang 37Có nhiều lý do để một tiến trình đang ở trạng thái Running chuyển sang trạngthái Blocked, các hệ điều hành đều thiết kế một hệ thống gồm nhiều hàng đợi, mỗihành đợi dùng để chứa những tiến trình đang đợi cùng một sự kiện nào đó.
Tiến trình 4 trạng thái: Việc tổ chức các Queue để lưu các tiến trình chưa hoạt
động là cần thiết, nhưng tồn tại quá nhiều tiến trình trong Queue, sẽ lãng phí không đủ
bộ nhớ để nạp các tiến trình khác Mặt khác nếu các tiến trình trong Queue đang chiếmgiữ tài nguyên của hệ thống, mà những tài nguyên này các tiến trình khác đang cần, rõràng sử dụng tài nguyên không hợp lý, làm cho hệ thống thiếu tài nguyên (thực chất làthừa) trầm trọng và có thể làm cho hệ thống bế tắc Với những lý do trên các hệ điềuhành đa nhiệm thiết kế thêm một trạng thái tiến trình mới, đó là trạng thái Suspend(tạm dừng) Trạng thái này rất cần thiết cho các hệ thống sử dụng kỹ thuật Swap trongviệc cấp phát bộ nhớ cho các tiến trình
Hình 2.16 Sơ đồ chuyển trạng thái tiến trình có SuspendSuspend là trạng thái của một tiến trình khi nó đang được lưu trữ trên bộ nhớphụ, là các tiến trình đang ở trong trạng thái Blocked hoặc Ready bị hệ điều hànhchuyển ra đĩa để thu hồi lại không gian nhớ đã cấp hoặc thu hồi lại tài nguyên đã cấp
để cấp cho một tiến trình khác đang rất cần được nạp vào bộ nhớ tại thời điểm hiện tại
Tiến trình 5 trạng thái: Trong thực tế hệ điều hành thiết kế 2 trạng thái
Tới đây ta có thể hiểu các trạng thái tiến trình như sau:
- Ở trạng thái Ready tiến trình được định vị trong bộ nhớ chính và đang chờ được
cấp vi xử lý để thực hiện
- Ở trạng thái Blocked tiến trình được định vị trong bộ nhớ chính và đang đợi một
sự kiện hay một quá trình nhập/xuất nào đó
- Ở trạng thái Blocked-Suspend tiến trình đang bị chứa trên bộ nhớ phụ (đĩa) và
đang đợi một sự kiện nào đó
- Ở trạng thái Ready-Suspend tiến trình đang bị chứa trên bộ nhớ phụ nhưng sẵn
sàng thực hiện ngay sau khi được nạp vào bộ nhớ chính
Sau đây chúng ta xem xét sự chuyển trạng thái tiến trình trong sơ đồ trên:
Ready
BlockedSuspend
RunningActivate
Suspend
EndNew
Trang 38Hình 2.17 Sơ đồ chuyển trạng thái tiến trình với 2 Suspend
1 Blocked sang Blocked-Suspend: Nếu không còn tiến trình Ready trong bộ nhớchính và bộ nhớ chính không còn không gian nhớ trống thì phải có ít nhất một tiếntrình Blocked bị chuyển ra ngoài, Blocked-Suspend, để dành bộ nhớ cho một tiếntrình không bị khóa (not Blocked) khác
2 Suspend sang Ready-Suspend: Một tiến trình đang ở trạng thái Suspend được chuyển sang trạng thái Ready-Suspend khi sự kiện mà nó đợi đã xảy
Blocked-ra
3 Ready-Suspend sang Ready: có 2 lý do để hệ điều hành chọn khi chuyển một tiếntrình ở trạng thái Ready-Suspend sang trạng thái Ready:
- Không còn tiến trình Ready trong bộ nhớ chính, hệ điều hành phải nạp một tiến
trình mới vào để nó tiếp tục thực hiện
- Nếu có tiến trình Ready-Suspend có độ ưu tiên cao hơn so với các tiến trình
Ready hiện tại thì hệ điều hành có thể chuyển nó sang trạng thái Ready để nó nhiều
cơ hội để được thực hiện hơn
4 Ready sang Ready Suspend: Hệ điều hành thường chuyển các tiến trình Blockedsang Suspend hơn là các tiến trình Ready, vì các tiến trình ở trạng thái Blockedkhông thể thực hiện ngay lập tức nhưng lại chiếm nhiều không gian bộ nhớ chínhhơn so với các tiến trình ở trạng thái Ready Tuy nhiên, nếu việc chọn tiến trình đểchuyển sang Suspend dựa vào 2 điều kiện: chiếm ít không gian bộ nhớ hơn và có
độ ưu tiên thấp hơn thì hệ điều hành có thể chuyển một tiến trình Ready sang trạngthái Suspend
Việc chuyển tiến trình sang trạng thái Suspend hệ điều hành sẽ chủ động hơn khicấp phát bộ nhớ và ngăn chặn các tình huống bế tắc do sự tranh chấp về tài nguyên,nhờ vậy mà hệ điều hành tiết kiệm được bộ nhớ, chia sẻ được tài nguyên cho nhiềutiến trình và tăng được mức độ đa chương của hệ thống Để có được lợi ích trên hệđiều hành phải chi phí rất nhiều cho việc tạm dừng tiến trình Hệ điều hành xem xéttiến trình nào được chọn để Suspend, khi Suspend một tiến trình hệ điều hành phải lưulại tất cả các thông tin liên quan đến tiến trình đó (con trỏ lệnh, tài nguyên mà tiếntrình đã được cấp ), và phải lựa chọn thời điểm thích hợp để đưa tiến trình ra bộ nhớngoài, những thao tác đó sẽ làm chậm tốc độ thực hiện của toàn bộ hệ thống Nhưngdầu sao đi nữa thì hệ điều hành vẫn phải sử dụng trạng thái Suspend vì tăng mức độ đa
Ready
BlockedRunning
Activate
Blocked
Suspend
BlockedSuspendEvent Occurs
ReleaseSuspend
Event Occurs
Trang 39chương của hệ thống là một trong những mục tiêu lớn của hệ điều hành
Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải được bảo vệkhỏi sự xâm phạm của các tiến trình Bản thân các tiến trình và dữ liệu cũng cần đượcbảo vệ để tránh các ảnh hưởng sai lệch lẫn nhau Một cách tiếp cận để giải quyết vấn
đề là phân biệt hai chế độ xử lý cho các tiến trình: chế độ không độc quyền và chế độ độc quyền nhờ vào sự trợ giúp của cơ chế phần cứng Tập lệnh của CPU được phân
chia thành các lệnh độc quyền và lệnh không độc quyền Cơ chế phần cứng chỉ chophép các lệnh độc quyền được thực hiện trong chế độ độc quyền Thông thường chỉ có
hệ điều hành hoạt động trong chế độ độc quyền, các tiến trình của người dùng hoạtđộng trong chế độ không độc quyền, không thực hiện được các lệnh độc quyền cónguy cơ ảnh hưởng đến hệ thống Như vậy hệ điều hành được bảo vệ Khi một tiếntrình người dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọinày sẽ hoạt động trong chế độ độc quyền, sau khi hoàn tất thì trả quyền điều khiển vềcho tiến trình người dùng trong chế độ không độc quyền
Hình 2.18 Chế độ xử lý độc quyền và không độc quyền
2.2.4 Cấu trúc dữ liệu của khối quản lý tiến trình
Để quản lý các tiến trình và tài nguyên trong hệ thống, hệ điều hành phải có cácthông tin về trạng thái hiện thời của mỗi tiến trình và tài nguyên Trong trường hợpnày hệ điều hành xây dựng và duy trì các bảng thông tin về mỗi đối tượng (Memory,Devices, File, Process) mà nó quản lý, đó là các bảng: memory table cho đối tượng bộnhớ, nhập/xuất Table cho đối tượng thiết bị nhập/xuất, File Table cho đối tượng tậptin, Process Table cho đối tượng tiến trình Memory Table được sử dụng để theo dõi cả
bộ nhớ thực lẫn bộ nhớ ảo, gồm các thông tin sau: Không gian bộ nhớ chính và khônggian bộ nhớ phụ dành cho tiến trình Các thuộc tính bảo vệ bộ nhớ chính và bộ nhớ ảo.Các thông tin cần thiết để quản lý bộ nhớ ảo Nhiệm vụ quản lý tiến trình và quản lý
bộ nhớ của hệ điều hành có quan hệ chéo với nhau, bộ phận quản lý tiến trình cần phải
có các thông tin về bộ nhớ để điều khiển sự hoạt động của tiến trình, ngược lại bộ phậnquản lý bộ nhớ phải có các thông tin về tiến trình để tổ chức nạp tiến trình vào bộ nhớv.v… Điều này cũng đúng với các bộ phận quản lý nhập/xuất và quản lý tập tin Ở đâychúng ta chỉ đề cập đến Process Table của hệ điều hành
Để quản lý và điều khiển được một tiến trình, thì hệ điều hành phải biết được vịtrí nạp tiến trình trong bộ nhớ chính, phải biết được các thuộc tính của tiến trình cầnthiết cho việc quản lý tiến trình của nó:
2.2.4.1 Định vị của tiến trình (Process Location)
Định vị của tiến trình phụ thuộc vào chiến lược quản lý bộ nhớ đang sử dụng Khicác tiến trình đang ở trong trạng thái Blocked hoặc Ready được hệ điều hành lưu giữatại các khối nhớ liên tục trên bộ nhớ phụ (thường là đĩa), để tiến trình thực hiện được
Người sử dụng Sell,editors,compilers ,.
Hệ điều hành
Hard ware
Chế độ không độc quyền Chế độ độc quyền
Trang 40thì tiến trình phải được nạp vào bộ nhớ chính Do đó, hệ điều hành cần phải biết định
vị của mỗi tiến trình trên đĩa và cho mỗi tiến trình đó trên bộ nhớ chính Trong một sốchiến lược quản lý bộ nhớ, hệ điều hành chỉ cần nạp một phần tiến trình vào bộ nhớchính, phần còn lại vẫn nằm trên đĩa Hay tiến trình đang ở trên bộ nhớ chính thì cómột phần bị Swap-Out ra lại đĩa, phần còn lại vẫn còn nằm ở bộ nhớ chính Trong cáctrường hợp này hệ điều hành phải theo dõi tiến trình để biết phần nào của tiến trình làđang ở trong bộ nhớ chính, phần nào của tiến trình là còn ở trên đĩa
Đa số các hệ điều hành hiện nay đều sử dụng chiến lược quản lý bộ nhớ mà trong
đó không gian địa chỉ của tiến trình là một tập các Block, các Block này có thể khôngliên tiếp nhau Tùy theo chiến lược bộ nhớ sử dụng mà các Block này có thể có chiềudài cố định (chiến lược phân trang bộ nhớ) hay thay đổi (chiến lược phân đoạn bộ nhớ)hay kết hợp cả hai Hệ điều hành cho phép không nạp tất cả các trang (Page) hoặc cácđoạn (Segment) của tiến trình vào bộ nhớ Do đó, Process Table phải được duy trì bởi
hệ điều hành và phải cho biết vị trí của mỗi trang (đoạn) tiến trình trên hệ thống.Những điều trên đây sẽ được làm rõ ở phần chiến lược cấp phát bộ nhớ trong chương 3
Quản lý bộ nhớ
2.2.4.2 Các thuộc tính của tiến trình
Thông tin về mỗi tiến trình là rất cần cho công tác quản lý tiến trình của hệ điềuhành, các thông tin này thường trú trong khối quản lý tiến trình (PCB: Process ControlBlock) Các hệ điều hành khác nhau sẽ có cách tổ chức PCB khác nhau Các thông tintrong PCB có thể được chia thành ba nhóm chính:
- Định danh tiến trình (PID: Process Identification): Mỗi tiến trình có một định
danh duy nhất để phân biệt với các tiến trình khác Định danh của tiến trình có thể xuấthiện trong Memory Table, nhập/xuất Table Khi tiến trình này truyền thông với tiếntrình khác thì định danh tiến trình được sử dụng để hệ điều hành xác định tiến trìnhđích Khi tiến trình cho phép tạo ra tiến trình khác thì định danh được sử dụng để chỉđến tiến trình cha và tiến trình con của mỗi tiến trình
- Thông tin trạng thái vi xử lý (Processor State Information): Bao gồm các thanh
ghi User-Visible, các thanh ghi trạng thái và điều khiển, các con trỏ Stack
- Thông tin điều khiển tiến trình (Process Control Information): Bao gồm thông tin
trạng thái và lập lịch, cấu trúc dữ liệu, truyền thông liên tiến trình, quyền truy cập tiếntrình, quản lý bộ nhớ, tài nguyên khởi tạo và tài nguyên sinh ra
PCB là một trong những cấu trúc dữ liệu trung tâm và quan trọng của hệ điềuhành và nó chứa các thông tin về tiến trình rất cần cho hệ điều hành Có nhiều Modulthành phần trong hệ điều hành có thể Read hoặc Modified PCB như: lập lịch tiến trình,cấp phát tài nguyên cho tiến trình, ngắt tiến trình v.v Có thể nói các thiết lập trongPCB định nghĩa trạng thái của hệ điều hành
2.2.5 Các thao tác điều khiển tiến trình
2.2.5.1 Các thao tác khi khởi tạo tiến trình của hệ điều hành
- Hệ điều hành gán PID cho tiến trình mới và đưa tiến trình vào danh sách quản lý
của hệ thống, tức là dùng một entry trong PCB để chứa các thông tin liên quan đếntiến trình mới tạo ra
- Cấp phát không gian bộ nhớ cho tiến trình, hệ điều hành cần phải xác định được
kích thước của tiến trình bao gồm: Code, Data và Stack Giá trị kích thước này có thể