I. KHÁI NIỆM VÀ CHỨC NĂNG CỦA HỆ ĐIỀU HÀNH. 
1)Khái niệm: 
Hệ điều hành là một chương trình đóng vai trò trung gian trong 
việc giao 
tiếp giữa người sử dụng 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ột mô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 (convenient) hơn 
và có hiệu quả 
(efficient) hơn. 
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 thường được chia làm 4 phần: phần cứng, 
hệ điều hành, 
các chương trình ứng dụng và người sử dụng. 
 
2) Chức năng: 
a) Là bộ phân phối tài nguyên: (resource allocator) 
Hệ điều hành đóng vai trò là bộ phân phối tài nguyên: 
Tài nguyên hệ thống, đặc biệt là các tài nguyên phần cứng như 
CPU, bộ 
nhớ, thiết bò ngoại vi,… thường rất giới hạn về số lượng. Trong 
các hệ thống đa 
nhiệm, nhiều chương trình chạy đồng thời và cùng yêu cầu các 
tài nguyên hữu 
hạn. Hệ điều hành sẽ giữ vai trò quản lý và phân phối các tài 
nguyên cho các 
chương trình. Việc phân phối tài nguyên cho các chương trình 
phải theo một trình 
tự nào đó để tránh tranh chấp và làm cho máy tính hoạt động có 
hiệu quả. Ngoài 
ra, có nhiều trường hợp người dùng cần chia sẻ thông tin với 
nhau. Khi đó, hệ 
điều hành phải bảo đảm việc truy xuất đến các thông tin chia sẻ 
đó là hợp lệ, 
không xảy ra sai trái hay mất đồng nhất dữ liệu. 
b) Là một chương trình điều khiển: (control program) 
Hệ điều hành đóng vai trò là một chương trình điều khiển: 
Một hệ điều hành cũng có thể được xem như là một chương 
trình kiểm 
soát việc sử dụng máy tính, đặc biệt là các thiết bò nhập xuất. 
Giúp người dùng 
ngăn chặn lỗi, tránh lỗi, kiểm soát việc sử dụng máy tính một 
cách đúng đắn. 
Điều khiển việc thực thi chương trình của người dùng. Che giấu 
đi cấu trúc phức 
tạp của các phần cứng, tạo ra một giao diện sử dụng phần cứng 
đơn giản, dễ 
dùng nhưng đầy đủ chức năng. 
3) Các nhiệm vụ của hệ điều hành: 
a) Quản lý tiến trình: (process management) 
Một chương trình không thực hiện được gì cả nếu nó không được 
CPU thi 
hành. Một tiến trình (process) là một chương trình đang được thi 
hành. Khi một 
process được khởi tạo, nó phải được cung cấp các tài nguyên để 
hoạt động, khi 
không còn dùng tài nguyên, process phải trả lại tài nguyên cho 
hệ thống để hệ 
thống tiếp tục cấp cho process khác. Có các process của người 
dùng và có các 
process của hệ thống. Một process được xem như là một đơn vò 
làm việc của hệ 
thống. Tại cùng một thời điểm trong hệ thống có thể có nhiều 
process cùng chạy 
đồng thời. Các tài nguyên mà một process có thể cần dùng là: 
CPU, vùng nhớ, 
các tập tin, các thiết bò nhập xuất,… 
Vai trò của hệ điều hành trong việc quản lý process là: 
- Create/Destroy: tạo và hủy các process. 
- Suspend/Resume: tạm ngưng và thực hiện lại một process. 
- Synchronization: đồng bộ các process. 
- Inter-Process Communications: truyền thông giữa các 
process. 
b) Quản lý bộ nhớ chính: (main memory management) 
Bộ nhớ chính là thiết bò duy nhất mà CPU có thể truy xuất trực 
tiếp. Một 
chương trình muốn được thi hành, trước hết phải được nạp vào 
trong bộ nhớ 
chính, dữ liệu của chương trình cũng được nạp vào trong bộ nhớ 
chính. Khi 
process kết thúc thì dữ liệu và chương trình vẫn còn trong trong 
bộ nhớ cho đến 
khi có một process khác được ghi chồng lên. Trong một hệ 
thống đa nhiệm, để 
tăng hiệu suất sử dụng CPU thì hệ điều hành cố gắng giữ nhiều 
process trong bộ 
nhớ chính tại cùng một thời điểm. 
Vai trò của hệ điều hành trong việc quản lý bộ nhớ chính: 
- Cấp phát và thu hồi vùng nhớ cho các process. 
- Ghi nhận tình trạng bộ nhớ: phần nào đã được cấp phát, 
phần nào 
còn có thể sử dụng được. 
- Quyết đònh process nào được nạp vào bộ nhớ chính khi có 
một 
vùng trống. 
c) Quản lý hệ thống tập tin : (file management) 
Máy tính có thể lưu trữ thông tin trên nhiều loại thiết bò vật lý 
khác nhau: 
đóa mềm, CD-ROM, đóa cứng, flash, băng từ… Mỗi loại thiết bò 
có tính chất và 
cấu trúc vật lý khác nhau. Để thống nhất trong lưu trữ, hệ điều 
hành đònh nghóa 
một đơn vò lưu trữ logic là tập tin. Hệ điều hành tạo một ánh xạ 
từ tập tin đến 
đến vùng lưu trữ thông tin trên đóa và truy xuất thông tin này 
thông qua thiết bò 
lưu trữ. Hệ điều hành còn tổ chức lưu trữ các tập tin thành các 
thư mục. Để dễ 
dàng truy xuất, hệ điều hành tổ chức lưu trữ các tập tin một cách 
có hệ thống gọi 
là hệ thống tập tin (filesystem). Có nhiều loại hệ thống tập tin 
khác nhau. 
Vai trò của hệ điều hành trong việc quản lý tập tin: 
- Tạo và xóa một tập tin. 
- Tạo và xóa một thư mục. 
- Hỗ trợ thao tác cơ bản trên tập tin và thư mục. 
- Ánh xạ tập tin trên hệ thống lưu trữ phụ. 
- Backup tập tin trên các thiết bò lưu trữ. 
d) Quản lý nhập xuất: (I/O system management) 
Một trong những mục tiêu của hệ điều hành là che dấu những 
chi tiết 
phức tạp của các thiết bò phần cứng đối với người sử dụng. Thay 
vào đó là một 
lớp giao diện thân thiện độc lập với thiết bò, giúp cho người 
dùng dễ thao tác 
hơn. Thường thì các giao diện là các trình điều khiển (driver). 
Chỉ có các driver 
mới hiểu đến cấu trúc đặc thù của thiết bò mà nó mô tả. Hệ điều 
hành đảm trách 
việc điều khiển các thiết bi nhập xuất. Nó gởi các lệnh điều 
khiển đến các thiết 
bò, tiếp nhận các ngắt và xử lý các lỗi nhập xuất. 
Một hệ thống nhập xuất bao gồm: 
- Hệ thống buffer caching. 
- Giao tiếp điều khiển thiết bò (device drivers) tổng quát. 
- Bộ điều khiển (driver) cho các thiết bò phần cứng. 
e) Quản lý bộ nhớ phụ : (secondary-storage management) 
Muốn thực thi chương trình thì phải đưa chương trình và dữ liệu 
của 
chương trình vào trong bộ nhớ chính. Nhưng bộ nhớ chính quá 
nhỏ để lưu trữ mọi 
dữ liệu và chương trình. Mặt khác, bộ nhớ chính chỉ là nơi lưu 
trữ tạm thời, dữ 
liệu sẽ bò mất khi không cung cấp điện cho nó. Vì vậy cần phải 
có một hệ thống 
lư u trữ phụ như đóa mềm, đóa cứng, CD-ROM, flash, băng từ…. 
Hầu như tất các 
các chương trình, dữ liệu đều được lưu trữ trên bộ nhớ phụ dưới 
dạng các tập tin. 
Khi cần thiết thì chúng được nạp vào bộ nhớ chính để thực thi. 
Tốc độ của hệ 
thống phụ thuộc rất nhiều vào tốc độ truy xuất các thiết bò lưu 
trữ phụ. 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. 
Vai trò của hệ điều hành trong việc quản lý bộ nhớ phụ: 
- Quản lý vùng trống trên đóa. 
- Đònh vò lưu trữ đóa. 
- Điều phối đóa (disk scheduling). 
f) Nối mạng: (networking) 
Một hệ thống phân bố (distributed system) là một tập hợp các 
bộ xử lý 
(processor) không cùng chia sẻ bộ nhớ chung. Mỗi bộ xử lý có 
một bộ nhớ riêng 
độc lập. Các bộ xử lý giao tiếp với nhau thông qua mạng truyền 
thông bằng các 
đường truyền vật lý như: đường truyền tốc độ cao, đường điện 
thoại, vệ tinh… 
Nhờ có nối mạng mà người dùng có thể truy cập đến các tài 
nguyên khác nhau 
trong mạng. 
Việc truy cập các tài nguyên dùng chung cho phép: 
- Gia tăng tốc độ tính toán (speedup). 
- Gia tăng sự sẵn dùng (available) của dữ liệu. 
- Tăng độ tin cậy (reliability) 
g) Hệ thống bảo vệ: (protection system) 
Hệ thống bảo vệ là một cơ chế kiểm soát sự hợp lệ của việc 
truy xuất các 
tài nguyên hệ thống và các tài nguyên của người dùng. Trong 
hệ thống có nhiều 
người sử dụng hoặc có nhiều process diễn ra đồng thời, các 
process cần phải 
được bảo vệ để tránh sự xâm phạm vô tình hay cố ý có thể dẫn 
đến sai lạc cho 
toàn hệ thống. Hệ thống phải cung cấp được cơ chế để đảm bảo 
rằng tập tin, bộ 
nhớ, CPU và những tài nguyên khác chỉ được truy xuất bởi 
những process có 
quyền. Ví dụ: phải bảo đảm rằng một process chỉ được thi hành 
trong phạm vi 
vùng nhớ cấp phát cho nó, phải bảo đảm không có process nào 
độc chiếm CPU, 
phải bảo vệ các thiết bò ngoại vi như printer… Hệ thống bảo vệ 
cũng phải làm 
tăng tốc độ an toàn trong giao tiếp giữa các hệ thống nhỏ bên 
trong. 
Một hệ thống bảo vệ cần phải: 
- Đònh rõ được phép dùng và không được phép dùng các tài 
nguyên. 
- Đònh rõ các loại kiểm soát cần phải áp dụng trong hệ 
thống. 
- Cung cấp các cơ chế buộc process, người dùng phải thi 
hành theo. 
h) Hệ thông dòch lệnh: (command-interpreter system) 
Đây là một trong những bộ phận quan trọng nhất của hệ điều 
hành, đóng 
vai trò giao diện giữa hệ điều hành và người sử dụng. Các lệnh 
được chuyển 
đến hệ điều hành dưới dạng phát biểu điều khiển (control 
statements). Bộ thông 
dòch lệnh có nhiệm vụ tiếp nhận lệnh và thông dòch lệnh đó để 
hệ điều hành có 
xử lý tương ứng. Có hai loại giao diện giữa người dùng và bộ 
thông dòch lệnh: 
- Giao diện đồ họa (menu, cửa sổ, chuột ). 
- Giao diện dòng lệnh (như MS-DOS, shell của Unix). 
4) Tiến trình khởi động máy và nạp hệ điều hành: 
a) Khởi động máy tính: (starting the computer) 
Tiến trình khởi động máy tính được thực hiện khi ta bật điện 
máy tính lên. 
Tiến trình này gọi là cold boot. Cold boot gồm các bước theo 
trình tự sau: 
- ROM nạp BIOS (basic input/output sysytem – hệ thống 
nhập xuất cơ 
bản) vào bộ nhớ máy tính. 
- BIOS kiểm tra các thiết bò nhập xuất xem có khả năng 
hoạt động được 
không. Công đoạn này được gọi là POST (Power-on Self-test). 
 BIOS xác đònh xem partition nào là active partition trong 
Master Boot 
Record (MBR). Đi đến active partition để nạp kernel vào bộ nhớ 
chính. 
Kernel là lõi của hệ điều hành, là nơi chứa các thành phần cơ 
bản nhất 
của hệ điều hành. 
- Lúc này hệ điều hành đã nắm được quyền kiểm soát máy 
tính. 
b) Cấu hình hệ thống: (configuring the system) 
Sau khi nắm quyền điều khiển máy tính, hệ điều hành tiến hành 
cấu hình 
lại hệ thống, gồm các bước sau: 
- Hệ thống được cấu hình lại dựa trên thông tin từ Registry 
của hệ điều 
hành. 
- Các trình điều khiển (driver) và các chương trình tiện ích 
(utility 
program) được nạp vào bộ nhớ. Các trình tiện ích như: volume 
control, 
antivirus software, file manager,…). 
- Chứng thực việc đăng nhập của người dùng. 
- Giao diện người dùng bắt đầu cho phép người dùng tương 
tác với máy 
tính. 
Chú ý: Một số máy tính lưu trữ toàn bộ hệ điều hành vào trong 
bộ nhớ 
chính. Một số máy tính khác thì chỉ nạp phần cơ bản của hệ điều 
hành vào trong 
bộ nhớ chính, phần còn lại sẽ nạp vào bộ nhớ khi có nhu cầu. 
Hầu hết các hoạt 
động của hệ điều hành diễn ra ở dạng hậu trường (behind the 
scences). 
II. PHÂN LOẠI HỆ ĐIỀU HÀNH  
Các loại hệ điều hành: 
1) Hệ thống tuần tự: (sequential system) 
Các chỉ thò của chương trình được thực hiện tuần tự, hết chỉ thò 
này đến chỉ 
thò khác. Được dùng cho các máy tính to lớn, cồng kềnh ngày 
xưa. Vào giữa thập 
niên 1940, xuất hiện các máy tính mainframe cồng kềnh, tốc độ 
rất chậm, dùng 
ống chân không. Người lập trình cũng chính là người vận hành 
máy. Chương 
Trình được viết chủ yếu bằng ngôn ngữ máy dưới dạng các bít 0 
và 1. Chương 
trình được đưa bằng tay vào bộ nhớ dung lượng thấp của 
mainframe thông qua 
việc đục lỗ trên băng giấy hay thẻ đục lỗ. Chương trình được 
chạy từng lệnh 
một. Người lập trình phải luôn quan sát khi chạy chương trình để 
phát hiện lỗi. 
Khi có lỗi thì dừng hệ thống lại, sửa lỗi rồi chạy lại từ đầu. Dữ 
liệu xuất được in 
ra máy in hay đục lỗ trên thẻ, băng giấy. 
2) Hệ thống xử lý theo lô: (batch system) 
Hệ thống loại này sẽ tập trung tất cả tài nguyên để xử lý một 
công việc 
tại một khoảng thời gian. Khi công việc chấm dứt, hệ thống sẽ 
thực hiện công 
việc kế tiếp mà không cần sự can thiệp của người lập trình, do 
đó thời gian thực 
hiện công việc sẽ nhanh hơn. 
Một chương trình gọi là bộ giám sát (resident monitor) nằm 
thường trú 
trong bộ nhớ chính có nhiệm vụ giám sát thường trực việc thực 
hiện một dãy các 
công việc một cách tự động. Khi máy tính được khởi động, 
resident monitor được 
gọi, nó chuyển điều khiển cho chương trình đầu tiên. Khi 
chương trình đầu tiên 
kết thúc, nó sẽ trả điều khiển cho resident monitor. Resident 
monitor sẽ chuyển 
điều khiển cho chương trình kế tiếp. Cứ như vậy mà lần lượt 
từng công việc khác 
nhau trong một chuỗi các công việc được thực thi. 
Để resident monitor biết được chương trình nào là chương trình 
kế tiếp 
được thực hiện thì cần phải mô tả ngắn gọn về chương trình. 
Nhờ vậy mà 
resident monitor tích lũy các tài nguyên cần thiết cho chương 
trình. 
3) Hệ thống đa chương theo lô: (multiprogrammed batched 
system): 
Gia tăng khai thác CPU bằng cách tổ chức các công việc sao cho 
CPU 
luôn luôn phải trong tình trạng làm việc. Ý tưởng như sau: Hệ 
điều hành lưu giữ 
một phần các công việc ở trong bộ nhớ. CPU sẽ lần lượt thực 
hiện các công việc 
này. Khi đang thực hiện, nếu có yêu cầu truy xuất thiết bò thì 
CPU không nghỉ 
mà thực hiên tiếp công việc thứ hai Vì vậy hệ điều hành loại 
này phải thực 
hiện được các vấn đề điều phối (scheduling) công việc, điều 
phối bộ nhớ và điều 
phối CPU. 
4) Hệ thống chia xẻ thời gian: (time-sharing system): 
Còn được gọi là hệ thống đa nhiệm (multitasking). Là sự mở 
rộng của hệ 
thống đa chương. Nhiều công việc cùng thực hiện thông qua cơ 
chế chuyển đổi 
CPU giống như hệ điều hành đa chương nhưng thời gian chuyển 
đổi diễn ra rất 
nhanh. Nếu trong quá trình thi hành của một chương trình nó 
phải thực hiện các 
thao tác nhập xuất (I/O) thì trong khoảng thời gian đó CPU sẽ thi 
hành một 
chương trình khác. Hệ điều hành chia xẻ thời gian này dùng việc 
chuyển đổi 
CPU (CPU switching) để cung cấp cho mỗi chương trình một 
lượng thời gian sử 
dụng CPU rất nhỏ, do thời gian chuyển đổi CPU giữa các 
chương trình rất nhanh 
nên tạo ra cảm giác các chương trình được thực thi cùng một lúc. 
5) Hệ thống song song: (parallel system) 
Ngoài các hệ thống máy tính chỉ có một bộ xử lý (single-
processor 
system) còn có hệ thống máy tính có nhiều bộ xử lý bên trong 
nó. Chúng cùng 
chia xẻ các đường truyền dữ liệu (bus), đồng hồ hệ thống 
(clock), bộ nhớ và các 
thiết bò ngoại vi (peripheral devices). Với sự gia tăng số lượng 
bộ xử lý mà công 
việc được thực hiện nhanh chóng hơn, tối ưu hơn các máy có 
một bộ xử lý. 
Nhưng không có nghóa cứ n bộ xử lý là giảm thời gian thực thi 
chương trình 
xuống n lần (vì còn tốn phần thời gian cho việc chia xẻ các phần 
của chương 
trình lên các CPU). Hệ thống loại này có độ tin cậy cao vì sự 
hỏng hóc của một 
bộ xử lý sẽ không làm ảnh hưởng đến toàn bộ hệ thống. 
6) Hệ thống phân bố: (distributed system) 
Tương tự như hệ thống song song nhưng hệ thống này không 
chia sẻ đồng 
hồ hệ thống và bộ nhớ chung. Thay vào đó mỗi bộ xử lý có một 
bộ nhớ cục bộ 
riêng. Giữa các bộ xử lý có sự truyền thông (communication) 
với nhau thông qua 
các đường truyền. Các bộ xử lý không nhất thiết giống nhau mà 
có thể khác 
nhau về tốc độ và chức năng. Có thể chia sẻ tài nguyên như: 
máy in, tập tin 
Làm gia tăng tốc độ tính toán bằng cách chia công việc thành 
các phần nhỏ giao 
cho các bộ xử lý thực hiện đồng thời. Nếu một bộ xử lý hỏng 
hóc thì các bộ xử 
lý khác vẫn tiếp tục làm việc. Giữa các bộ xử lý có sự truyền 
thông giúp cho 
việc truyền và chia sẻ dữ liệu được thực hiện dễ dàng. 
7) Hệ thống thời gian thực: 
Có những bài toán (problem) đòi hỏi hệ thống máy tính thực thi 
và cho 
kết quả chính xác trong một khoảng thời gian cụ thể (bò thúc ép 
về thời gian) 
như: hệ thống điều khiển vũ khí, điều khiển các thí nghiệm khoa 
học, dự báo 
thời tiết 
Hệ thống xử lý thời gian thực được sử dụng khi có những đòi hỏi 
khắt khe 
về thời gian trên các thao tác của bộ xử lý hoặc dòng dữ liệu. 
Máy tính phân tích 
dữ liệu và có thể điều chỉnh thứ tự thực hiện của các điều khiển 
nhằm giải quyết 
kòp thời cho dữ liệu nhập. 
Chia 2 loại: 
- Hệ thống thời gian thực cứng (hard real-time system): công 
việc được 
hoàn tất đúng lúc, dữ liệu được lưu trong bộ nhớ ngắn hạn 
(short-time 
memory) hay ROM. 
- Hệ thống thời gian thực mềm (soft real-time system): mỗi 
công việc có 
một độ ưu tiên riêng và sẽ được thực thi theo độ ưu tiên. 
III. LỊCH SỬ PHÁT TRIỂN CỦA HỆ ĐIỀU HÀNH: 
1) Thế hệ 1: (1945-1955) 
Vào khoảng giữa thập niên 1940, Howard Aiken ở Harvard và 
John Von 
Neumann ở Princeton đã thành công trong việc xây dựng máy 
tính dùng ống 
chân không. Những máy này rất lớn với hơn 10.000 ống chân 
không nhưng chậm 
hơn rất nhiều so với máy rẻ nhất ngày nay. 
Mỗi máy được thực hiện bởi một nhóm người. Họ thực hiện thiết 
kế, lập 
trình, thao tác, quản lý máy. Chương trình được lập trình bằng 
ngôn ngữ máy 
tuyệt đối. Chương trình được thực thi bằng cách vận hành bảng 
điều khiển 
(control panel) và chỉ thực hiện được các thao tác cơ bản rất đơn 
giản. Ngôn ngữ  
lập trình và hệ điều hành đều chưa được biết đến. Vào đầu thập 
niên 1950, 
phiếu đục lỗ ra đời. Nhờ vậy mà chương trình được viết trên 
phiếu thay cho bảng 
điều khiển. 
2) Thế hệ 2: (1955-1965) 
 Sự ra đời của thiết bò bán dẫn vào giữa thập niên 1950 làm 
thay đổi bức 
tranh tổng thể. Máy tính trở nên đủ tin cậy hơn. Nó được sản 
xuất và cung cấp 
cho khách hàng. Lần đầu tiên có sự phân chia rõ ràng giữa 
người thiết kế, người 
xây dựng, người vận hành, người lập trình và người bào trì. 
 Để thực hiện một công việc (một chương trình hay một tập 
hợp chương 
trình), lập trình viên trước hết viết chương trình trên giấy (bằng 
hợp ngữ hay 
bằng FORTRAN) sau đó đục lỗ trên phiếu và cuối cùng đưa 
phiếu vào máy. Sau 
khi thực hiện xong nó sẽ xuất kết quả ra máy in. 
 Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực 
hiện lên băng 
từ rồi hệ thống sẽ đọc và thi hành lần lượt. Sau đó nó sẽ ghi kết 
quả lên băng từ 
xuất và cuối cùng người dùng sẽ đem băng từ xuất đi in. 
 Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một 
chương trình 
đặc biệt là tiền thân của hệ điều hành sau này. Ngôn ngữ lập 
trình được sử dụng 
trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ. 
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 là má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 tính giảm 
đáng kể. Máy 
tính ngày càng phổ biến hơn, các thiết bò ngoại vi dành cho máy 
tính xuất hiện 
ngày càng nhiều và xuất hiện các thao tác điều khiển phức tạp. 
 Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và 
giải quyết 
tranh chấp thiết bò giữa các yêu cầu. Chương trình hệ điều hành 
dài cả triệu 
dòng hợp ngữ và do hàng ngàn lập trình viên thực hiện. 
 Sau đó, hệ điều hành ra đời khái niệm đa chương. CPU không 
phải chờ