Giáo trình Hệ điều hành - Chương 1: Giới thiệu về hệ điều hành - Phạm Ngọc Hưng

HỆ ĐIỀU HÀNH  
Chương 1  
GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH  
1. Giới thiệu  
1.1. Khái niệm hệ điều hành  
Hệ điều hành là một chương trình quản lý phần cứng của máy tính.  
Nó cũng cung cấp cơ sở cho các chương trình ứng dụng hoạt động và làm  
việc như thành phần trung gian giữa người sử dụng với phần cứng máy  
tí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ó thể chia thành 4 thành 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.  
Phần cứng bao gồm bộ xử lý trung tâm (CPU), bộ nhớ và các thiết  
bị vào ra - cung cấp các tài nguyên tính toán cơ bản. Các chương trình  
ứng dụng như bộ xử lý từ, bảng tính, trình duyệt web - định nghĩa cách  
mà tài nguyên sẽ được xử lý để đáp ứng 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 sử dụng phần cứng máy tính giữa các  
chương trình ứng dụng khác nhau cho mỗi người sử dụng khác nhau.  
Các thành phần của hệ thống máy tính là phần cứng, phần mềm,  
dữ liệu. Hệ điều hành cung cấp phương thức để sử dụng một cách đúng  
đắn, hợp lý các tài nguyên đó trong quá trình điều hành hệ thống. Hệ  
điều hành cũng tương tự như một chính phủ. Nó không tự mình làm mọi  
việc mà chỉ đơn giản là tạo ra môi trường để các chương trình ứng dụng  
khác làm việc một cách có hiệu quả. Ta có thể khảo sát hệ điều hành theo  
hai quan điểm: theo cách nhìn từ phía người sử dụng và theo quan điểm  
hệ thống.  
Theo quan điểm của người sử dụng: Hầu hết người sử dụng đều  
ngồi trước một máy tính cá nhân bao gồm một màn hình, bàn phím, chuột  
và bộ xử lý trung tâm. Trong trường hợp này, hệ điều hành được thiết kế  
chủ yếu sao cho dễ sử dụng. Một số người dùng sử dụng các thiết bị đầu  
cuối để kết nối tới các máy tính lớn (mainframe) hoặc máy tính nhỏ  
Phạm Ngọc Hưng  
1
Giới thiệu về hệ điều hành  
(minicomputer), cùng chia sẻ tài nguyên và trao đổi dữ liệu thì hệ điều  
hành được thiết kế sao cho khai thác được tối đa tài nguyên, đạt hiệu quả  
cao nhất.  
Theo quan điểm hệ thống, hệ điều hành là công cụ phân phối tài  
nguyên. Một hệ thống máy tính có nhiều tài nguyên như: thời gian CPU,  
bộ nhớ, thiết bị lưu trữ ngoài, thiết bị vào ra,... Hệ điều hành đóng vai trò  
quản lý, phân phối các tài nguyên đó sao cho chúng được sử dụng một  
cách hợp lý, tránh được các tranh chấp, ngăn ngừa các lỗi phát sinh.  
Tóm lại, chúng ta chưa có một định nghĩa hoàn chỉnh về hệ điều  
hành mà chỉ có thể định nghĩa hệ điều hành một cách tương đối theo các  
quan điểm khác nhau. Lý do tồn tại của hệ điều hành là vì đó là cách để  
giải quyết các vấn đề phát sinh để hệ thống máy tính trở nên hữu dụng.  
Mục tiêu cơ bản của hệ điều hành là thực thi các chương trình của người  
dùng và giúp người dùng giải quyết các vấn một cách dễ dàng hơn.  
Các mục tiêu của hệ điều hành: Mục tiêu chính của một số hệ điều  
hành là sự thuận tiện cho người sử dụng. Hệ điều hành tồn tại là vì nó hỗ  
trợ cho việc tính toán được tiến hành dễ dàng hơn. Đây là cách nhìn từ  
các hệ thống máy tính PCs nhỏ. Mục tiêu chính của một số hệ điều hành  
khác lại là sự điều hành một cách hiệu quả hệ thống máy tính. Đây là các  
hệ điều hành thiết kế cho các hệ thống lớn, chia sẻ tài nguyên và nhiều  
người dùng.  
1.2. Các hệ thống máy tính lớn  
Các hệ thống Mainframe là các hệ thống máy tính đầu tiên được sử  
dụng để giải quyết nhiều bài toán kinh tế, khoa học kỹ thuật.  
1.2.1. Hệ thống xử lý gói  
Đây là những hệ thống ra đời sớm, chúng có kích thước khổng lồ  
và được điều khiển từ một bàn giao tiếp người máy (console). Thiết bị vào  
cơ bản là các đầu đọc thẻ và ổ băng từ. Đầu ra là các máy in dòng, ổ  
băng từ và thẻ đục lỗ. Người sử dụng không tương tác trực tiếp với hệ  
thống máy tính. Người dùng chuẩn bị các chương trình, các nhiệm vụ và  
chuyển đến người điều hành để nạp vào hệ thống qua băng đục lỗ.  
2
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
Hệ điều hành cho các thế hệ máy này cũng thực sự đơn giản.  
Nhiệm vụ chủ yếu của nó là chuyển đổi các điều khiển một cách tự động  
từ công việc này đến công việc kế tiếp. Hệ điều hành luôn luôn thường  
trực trong bộ nhớ.  
Để tăng tốc độ xử lý, người điều hành thường gom các công việc  
giống nhau thành nhóm và chạy nó một lượt.  
Trong môi trường tính toán này, CPU thường nhàn rỗi, bởi vì tốc độ  
nhập xuất chậm hơn rất nhiều so với tốc độ xử lý của CPU. Ngay cả với  
một CPU chậm nó cũng xử lý khoảng thời gian mini giây (hàng nghìn lệnh  
được thực hiện trong một giây), trong khi đó, một máy đọc thẻ nhanh  
cũng chỉ có thể đọc được 1200 thẻ mỗi phút.  
1.2.2. Hệ thống đa chương trình  
Trong thực tế, nhìn chung một người dùng không thể làm cho bộ  
xử lý và các thiết bị vào ra làm việc một cách liên tục được. Để khỏi lãng  
phí tài nguyên của hệ thống (thời gian của CPU, thiết bị nhập xuất) ta cần  
phải sắp xếp sao cho CPU và các thiết bị nhập xuất luôn luôn làm việc. Đa  
chương trình là một giải pháp giúp gia tăng hiệu quả làm việc của máy  
tính bằng cách tổ chức các công việc một cách hợp lý để CPU luôn luôn có  
một chương trình thực hiện.  
Hệ điều hành lưu trữ cùng lúc nhiều chương trình trong bộ nhớ sau  
đó lần lượt thực hiện từng công việc. Trong khi một công việc được xử lý  
thì công việc khác tạm chờ đến phiên mình. Trong quá trình thực hiện,  
một công việc có thể tạm dừng để chờ một tác vụ vào ra nào đó được  
hoàn tất, với các hệ thống không đa chương trình thì khoảng thời gian này  
CPU sẽ ở trạng thái nhàn rỗi (lãng phí khả năng làm việc của CPU). Với hệ  
thống đa chương trình, lúc này CPU có thể chuyển sang thực hiện một  
nhiệm vụ khác, điều đó giúp khai thác tối đa khả năng của CPU hơn.  
Hoạt động trong chế độ đa chương trình sẽ đặt ra cho hệ điều  
hành nhiều vấn đề cần phải xử lý như nạp tất cả các chương trình vào bộ  
nhớ hay phối hợp sử dụng đĩa và bộ nhớ. Khi có nhiều chương trình cùng  
đồng thời tồn tại trong bộ nhớ thì chọn chương trình nào thực hiện. Tổ  
chức quản lý bộ nhớ sao cho các chương trình cùng tồn tại trong bộ nhớ  
Phạm Ngọc Hưng  
3
Giới thiệu về hệ điều hành  
không làm ảnh hưởng lẫn nhau... các vấn đề này sẽ được phân tích kỹ ở  
các chương tiếp theo.  
1.2.3. Hệ thống chia sẻ thời gian  
Hệ thống đa chương trình, xử lý gói cung cấp một môi trường mà  
các tài nguyên như CPU, bộ nhớ, thiết bị ngoại vi được khai thác một cách  
hiệu quả nhưng lại không hỗ trợ cho người dùng tương tác với hệ thống  
máy tính. Chia sẻ thời gian (hay đa nhiệm) là một sự mở rộng của đa  
chương trình, ở đó CPU sẽ thực hiện nhiều nhiệm vụ cùng lúc bằng cách  
chuyển đổi qua lại giữa các chúng. Trong quá trình chuyển đổi thực hiện  
giữa các nhiệm vụ, người dùng có thể tương tác với từng chương trình  
trong khi nó đang chạy.  
Một hệ thống máy tính tương tác sẽ cung cấp khả năng trao đổi  
trực tiếp giữa người dùng và hệ thống. Người dùng có thể trực tiếp ra các  
chỉ thị để điều hành hệ thống hoặc các chương trình bằng cách sử dụng  
bàn phím hay chuột và chờ kết qủa trả lại.  
Một hệ thống chia sẻ thời gian cho phép nhiều người dùng cùng  
chia sẻ một máy tính đồng thời. Trong hệ thống chia sẻ thời gian, các câu  
lệnh thường ngắn, chiếm ít thời gian của CPU. Hệ thống chuyển đổi qua  
lại một cách nhanh chóng giữa những người dùng khác nhau để luân  
phiên phục vụ. Với mỗi người dùng, dường như họ được sở hữu riêng một  
CPU, mọi yêu cầu đều được đáp ứng.  
Một hệ điều hành chia sẻ thời gian sẽ sử dụng đa chương trình và  
sự lập lịch cho CPU để cung cấp cho mỗi người dùng một khoảng thời gian  
nhỏ trong thời gian được chia sẻ của máy tính. Mỗi người dùng có ít nhất  
một chương trình trong bộ nhớ. Một chương trình được nạp vào bộ nhớ và  
đang trong quá trình thực hiện được gọi là một tiến trình (process). Khi  
một tiến trình thực hiện, nó thường chỉ thực thi trong một thời gian ngắn  
rồi sẽ kết thúc hoặc chờ đợi tác vụ vào ra được hoàn tất. Tác vụ vào ra có  
thể là một sự tương tác, khi đó có thể dữ liệu đang được hiển thị ra màn  
hình hoặc đang đợi người dùng nhập dữ liệu vào từ bàn phím hay chuột.  
Tác vụ vào ra thường chiếm nhiều thời gian, khi đó CPU sẽ rơi vào trạng  
4
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
thái nhàn rỗi (idle), để tận dụng thời gian tính toán của CPU, hệ điều hành  
sẽ chuyển CPU sang phục vụ cho người dùng khác.  
1.3. Các hệ thống để bàn  
Các máy tính cá nhân xuất hiện vào thập kỷ 70. Trong những thập  
kỳ đầu, CPU của các máy tính PCs còn thiếu các tính năng bảo vệ hệ điều  
hành khỏi các chương trình người dùng. Hệ điều hành các máy tính cá  
nhân lúc đó chưa hỗ trợ đa chương trình hay đa người dùng. Mục tiêu của  
các hệ điều hành cũng đã được thay đổi theo thời gian. Thay vì tăng hiệu  
dụng của CPU và các thiết bị ngoại vi, hệ thống được cải tiến để tăng khả  
năng đáp ứng và sự tiện lợi cho người dùng như các hệ thống PCs sử  
dụng hệ điều hành Microsoft Windows và Apple Macintosh.  
Các hệ điều hành cho các máy tính PCs đã thu được lợi nhuận bằng  
nhiều cách, từ việc phát triển hệ điều hành cho các máy tính lớn. Máy vi  
tính đã ngay lập tức thích ứng với một số công nghệ được phát triển cho  
các hệ điều hành lớn. Mặt khác, giá của máy vi tính đã giảm, và người ta  
cũng không cần phải quan tam nhiều đến việc phát huy tối đa hiệu quả  
làm việc của CPU.  
1.4. Các hệ thống đa xử lý  
Hầu hết các hệ thống cho đến nay là các hệ có có một bộ xử lý,  
nghĩa là trên mỗi máy chỉ có một chip CPU. Mặc dù vậy các hệ thống đa  
xử lý (hay còn được gọi là các hệ thống song song - parallel systems hay  
các hệ thống cặp đối - coupled systems) là một sự phát triển quan trọng.  
Các hệ thống này có nhiều CPU cùng chia sẻ bus chung, đồng, bộ nhớ,  
thiết bị ngoại vi và có khả năng liên lạc với nhau.  
Các hệ thống nhiều CPU có 3 ưu điểm chính sau:  
- Tăng khả năng thông suốt: bằng cách tăng số lượng CPU, chúng  
ta có thể hy vọng sẽ có nhiều công việc được hoàn thành trong một thời  
gian ngắn hơn nhưng không phải theo đúng tỷ lệ thời gian, nghĩa là không  
phải có n bộ xử lý thì sẽ thực hiện được nhanh hơn n lần.  
- Kinh tế hơn: các hệ thống đa CPU sẽ tiết kiệm chi phí hơn so với  
hệ thống chỉ có một CPU bởi vì chúng có thể chia sẻ các thiết bị ngoại vi,  
Phạm Ngọc Hưng  
5
Giới thiệu về hệ điều hành  
bộ lưu trữ chính, nguồn điện,... Nhiều chương trình có thể cùng làm việc  
trên một tập hợp dữ liệu thay vì phải lưu trữ ở trên đĩa và sao chép cho  
mỗi chương trình một bản.  
- Tăng độ tin cậy: các chức năng được chia cho nhiều bộ xử lý, vì  
vậy nếu có lỗi xảy ra cũng không làm ngưng hệ thống, nó chỉ làm cho hệ  
thống bị chậm đi. Nếu ta có 10 CPU và có một CPU bị lỗi, khi đó các CPU  
còn lại sẽ chia sẽ phần công việc của CPU bị hỏng. Tốc độ của hệ trống  
lúc này chỉ bị chậm đi 10%, tuy nhiên hệ thống không bị ngưng do lỗi của  
CPU đó.  
Xử lý liên tục trong sự có mặt của lỗi đòi hỏi phải có kỹ thuật cho  
phép phát hiện, chuẩn đoán và thậm chí là khắc phục lỗi. Hệ thống  
Tandom sử dụng cả phần cứng và phần mềm để đảm bảo sự liên tục và  
xử lý lỗi. Hệ thống bao gồm 2 bộ xử lý, mỗi bộ xử lý làm việc trong một  
vùng nhớ riêng của nó. Các bộ xử lý được kết nối vào cùng một bus. Một  
bộ xử lý làm việc chính, một bộ xử lý đóng vai trò dự phòng, nó sẽ chứa  
bản sao của bộ xử lý chính. Nếu có lỗi xảy ra, bản sao sẽ được kích hoạt  
từ điểm làm việc tốt nhất gần thời điểm xảy ra lỗi.  
Hầu hết các hệ thống đa CPU hiện nay đều dùng đa xử lý đối xứng  
(SMP-symetric multiprocessing), trong đó mỗi CPU chạy một bản sao của  
hệ điều hành và mỗi bản sao đó có thể giao tiếp với bản sao khác nếu  
cần. Một số hệ thống sử dụng đa xử lý bất đối xứng, trong đó mỗi bộ xử  
lý gắn với một nhiệm vụ. Một bộ xử lý chính điều khiển hệ thống, các bộ  
xử lý còn lại đợi bộ xử lý chính ra lệnh hoặc thực hiện một nhiệm vụ đã  
được giao sẵn. Đây là mô hình làm việc theo kiểu chính phụ (chủ tớ). Bộ  
xử lý chính sẽ lập lịch để phân phối công việc cho các bộ xử lý thứ cấp.  
SMP là tất cả các bộ xử lý có vai trò ngang nhau, không tồn tại mỗi  
quan hệ chính phụ. Mỗi bộ xử lý cùng chạy song song một bản sao của hệ  
điều hành. Phiên bản Encore của Unix viết cho máy Multimax là một ví dụ  
cho hệ thống xử lý đối xứng. Hệ thống này có hàng tá bộ xử lý, tất cả đều  
chạy các bản sao của Unix. Lợi ích của mô hình này là có nhiều tiến trình  
cùng chạy song song.  
1.5. Các hệ thống phân tán  
6
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
Các hệ thống phân tán được xây dựng trên cở sở hạ tầng mạng.  
Các máy tính được kết nối với nhau thông qua hệ thống mạng. Các công  
việc, và dữ liệu có thể được chia thành nhiều phần, mỗi máy tính trong hệ  
thống đảm nhiệm một phần công việc. Kết quả các phần tiêng lẻ được  
hợp lại để cho một kết quả lớn với hiệu quả làm việc vượt trội so với hệ  
thông chỉ có một máy tính.  
Hệ thống này cũng tương tự như hệ thống chia sẻ thời gian nhưng  
các bộ xử lý không chia sẻ bộ nhớ và đồng hồ, 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. Các bộ xử lý thường được gọi 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 ưu điểm chính của 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. Tổng quát, chia sẻ tài nguyê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.  
- 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ên nhiề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.  
- Thông tin liên lạc với nhau: Có những 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  
Phạm Ngọc Hưng  
7
Giới thiệu về hệ điều hành  
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 tin hay các E-mail cho  
nhau từ cùng vị trí hay những vị trí khác.  
1.6. Các hệ thống Clustered  
Tương tự một hệ thống làm việc song song. Hệ thống này liên kết  
nhiều CPU với nhau để cùng làm việc. Sức mạnh của hệ thống là sức  
mạnh tổng hợp của các CPU.  
1.7. Các hệ thống thời gian thực  
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,  
nó thường được dùng điều khiển các thiết bị trong một ứng dụng riêng  
biệt. Máy tính phân tích dữ liệu và có thể chỉnh các điều khiển để thay đổi  
các cảm biến vào.  
Một hệ điều hành xử lý thời gian thực phải được định nghĩa tốt,  
thời gian xử lý nhanh. Hệ thống phải cho kết quả chính xác trong khoảng  
thời gian bị thúc ép nhanh nhất. Có hai hệ thống xử lý thời gian thực là hệ  
thống thời gian thực cứng và hệ thống thời gian thực mềm.  
Hệ thống thời gian thực cứng là công việc được hoàn tất đúng lúc.  
Khi đó dữ liệu thường được lưu trong bộ nhớ ngắn hạn hay trong ROM.  
Việc xử lý theo thời gian thực sẽ xung đột với tất cả hệ thống đã nói đến ở  
trên.  
Dạng thứ hai là hệ thống thời gian thực mềm, mỗi công việc có một  
độ ưu tiên riêng và sẽ được thi hành theo độ ưu tiên đó. Có một số lĩnh  
vực áp dụng hữu hiệu phương pháp này là multimedia hay thực tại ảo.  
1.8. Các hệ thống cầm tay  
Hệ thống cầm tay bao gồm các máy trợ giúp kỹ thuật số cá nhân  
(PDAs-Personal Digital Assistants) như Palm-Pilots hay cellular telephone  
với sự kết nối đến một mạng như mạng Internet. Sự phát triển của các hệ  
thống cầm tay và các ứng dụng của nó đang đối mặt với nhiều thách  
thức, hầu hết đang thực hiện trong sự hạn chế về kích thước của các thiết  
8
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
bị. Vị sự hạn chế về kích thước mà các hệ thống cầm tay thường có bộ  
nhớ nhỏ, tốc độ của bộ xử lý thấp, màn hình hiển thị nhỏ.  
Nhiều các thiết bị cầm tay có bộ nhớ chỉ trong khoảng từ 512KB  
đến 8MB, trong khi đó các máy PCs hay các trạm làm việc có đến hàng  
trăm MB bộ nhớ. Đây là một lý do đò hỏi hệ điều hành cũng như các  
chương trình ứng dụng phải quản lý và sử dụng bộ nhớ một cách có hiệu  
quả nhất.  
Vấn đề thứ hai ảnh hưởng tới sự phát triển của các hệ thống cầm  
tay là tốc độ của các bộ xử lý trong mỗi thiết bị thường không cao. Bộ xử  
lý của hầu hết các hệ thống cầm thay chỉ chạy bằng một phần lẻ tốc độ  
của bộ xử lý trong một máy PC.  
Vấn đề thứ ba là màn hình hiển thị có kích thước nhỏ. Trong khi  
màn hình cho các máy tính PCs có lên đến 21 inches thì màn hình của các  
máy cầm tay không vượt quá 3 inches vuông. Với các nội dung lớn,  
thường được thể hiện một cách dễ dàng trên các máy PCs thì giờ đây phải  
chi ra và thể hiện từng phần trên màn hình của máy cầm tay.  
Một số máy tính cầm tay sử dụng công nghệ không dây như  
BlueTooth, cho phép truy cập từ xa tới thư điện tử và duyệt web.  
1.9. Lịch sử phát triển của hệ điều hành  
Thế hệ 1 (1945 – 1955)  
Vào khoảng giữa thập niên 1940, Howard Aiken ở Havard 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 (đèn điện tử). Những máy này rất lớn với hơn  
10000 ống chân không nhưng chậm hơn nhiều so với máy rẻ nhất ngày  
nay.  
Mỗi máy được một nhóm thực hiện tất cả từ thiết kế, xây dựng lập  
trình, thao tác đến quản lý. Lập trình bằng ngôn ngữ máy tuyệt đối,  
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. Ngôn ngữ lập trình chưa được biết đến và hệ điều hành cũng chưa  
nghe đến.  
Vào đầu thập niên 1950, phiếu đục lổ ra đời và có thể viết chương  
trình trên phiếu thay cho dùng bảng điều khiển.  
Phạm Ngọc Hưng  
9
Giới thiệu về hệ điều hành  
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 các 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 các  
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 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ừ, và 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 sử 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 sử dụng trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ.  
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 giảm đáng kể và máy tính càng phỗ biến hơn. Các thiết bị ngoại vi  
dành cho máy xuất hiện ngày càng nhiều và thao tác điều khiển bắt đầu  
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 các yêu cầu tranh chấp thiết bị. 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ờ thực hiện các thao tác nhập xuất. Bộ nhớ được chia làm nhiều phần,  
mỗi phần có một công việc (job) khác nhau, khi một công việc chờ thực  
hiện nhập xuất CPU sẽ xử lý các công việc còn lại. Tuy nhiên khi có nhiều  
công việc cùng xuất hiện trong bộ nhớ, vấn đề là phải có một cơ chế bảo  
10  
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
vệ tránh các công việc ảnh hưởng đến nhau. Hệ điều hành cũng cài đặt  
thuộc tính spool.  
Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia sẻ  
thời gian như CTSS của MIT. Đồng thời các hệ điều hành lớn ra đời như  
MULTICS, UNIX và hệ thống các máy mini cũng xuất hiện như DEC PDP-1.  
Thế hệ 4 (từ 1980)  
Giai đoạn này đánh dấu sự ra đời của máy tính cá nhân, đặc biệt là  
hệ thống IBM PC với hệ điều hành MS-DOS và Windows sau này. Bên  
cạnh đó là sự phát triển mạnh của các hệ điều hành tựa Unix trên nhiều  
hệ máy khác nhau như Linux. Ngoài ra, từ đầu thập niên 90 cũng đánh  
dấu sự phát triển mạnh mẽ của hệ điều hành mạng và hệ điều hành phân  
tán.  
1.10. Môi trường tính toán  
- Môi trường tính toán truyền thống  
- Môi trường tính toán dựa trên cở sở Web  
- Môi trường tính toán nhúng  
1.11. Câu hỏi và bài tập  
1. Ba mục tiêu chính của hệ điều hành là gì?  
2. Liệt kê 4 bước cần thiết để thực hiện một chương trình trên một  
hệ thống riêng biệt hoàn thiện.  
3. Các ưu điểm chính của đa chương trình là gì?  
4. Sự khác nhau cơ bản giữa các hệ điều hành cho các máy tính  
Mainframe và các máy PCs  
5. Hãy chỉ ra các đặc điểm cơ bản của các hệ điều hành sau: Gói  
(Batch), Tương tác (Interactive), Chia sẻ thời gian (Time sharing), Thời  
gian thực (Real time), Mạng (Network), Song song (Parallel), Phân tán  
(Distributed), Cụm (Clustered), cầm tay (HandHeld).  
6. Hãy chỉ ra các khó khăn chính trong việc phát hệ điều hành cũng  
như chương trình ứng dụng cho các hệ thống cầm tay.  
7. Chỉ ra các ưu điểm chính của hệ thống đa chương trình, hệ  
thống phân tán và hệ thống có nhiều bộ xử lý.  
Phạm Ngọc Hưng  
11  
Giới thiệu về hệ điều hành  
2. Cấu trúc hệ thống máy tính  
2.1. Điều hành hệ thống máy tính  
Một máy tính thông thường bao gồm một CPU và một số các trình  
điều khiển thiết bị kết nối với nhau thông qua một bus chung, nó hỗ trợ  
cho việc truy nhập đến bộ nhớ được chia sẻ. Mỗi trình điều khiển thiết bị  
tương ứng với một kiểu thiết bị (ví dụ như trình điều khiển đĩa, âm thanh,  
màn hình). CPU và các trình điều khiển có thể làm việc song song, tính  
toán trong các vòng bộ nhớ. Để đảm bảo cho việc truy cập một cách đúng  
đắn vào bộ nhớ chia sẻ, một trình điều khiển bộ nhớ sẽ cung cấp chức  
năng đồng bộ hoá việc truy nhập bộ nhớ.  
Một máy tính lúc bắt đầu chạy (khi bật công tắc nguồn hoặc khởi  
động lại), nó cần phải có một chương trình khởi động. Chương trình khởi  
động này (chương trình bootstrap) thông thường được lưu trong ROM  
hoặc EEPROM trong phần cứng của máy tính. Nó khởi động tất cả các bộ  
phận của hệ thống, từ các thanh ghi, đến các bộ điều khiển thiết bị, đến  
bộ nhớ. Chương trình khởi động phải biết làm thế nào để nạp hệ điều  
hành và bắt đầu đưa hệ thống vào hoạt động. Để đáp ứng yêu cầu này,  
chương trình khởi động phải tìm và nạp nhân của hệ điều hành vào bộ  
nhớ. Nhân hệ điều hành sẽ bắt đầu các xử lý của mình và chờ đợi các sự  
kiện xuất hiện.  
Các sự kiện thường xuất hiện dưới dạng một tín hiệu ngắt từ phần  
cứng hoặc phần mềm. Phần cứng có thể làm phát sinh một ngắt bằng  
cách gửi một tín hiệu đến CPU thông qua bus hệ thống. Phần mềm phát  
sinh ngắt bằng cách thực hiện một điều khiển đặc biệt được gọi là lời gọi  
hệ thống (system call).  
Trong hệ thống có nhiều ngắt, tương ứng với mỗi ngắt là một số  
đoạn mã lệnh thực hiện công việc tương ứng với ngắt được kích hoạt.  
Khi CPU bị ngắt, nó sẽ ngưng công việc đang làm ngay lập tức và  
chuyển sang thực hiện chương trình phục vụ ngắt tương ứng. Sau khi  
12  
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
thực hiện xong yêu cầu ngắt, CPU lại thực hiện tiếp công việc đang thực  
hiện dở tại vị trí gián đoạn bởi ngắt.  
Ngắt là một phần quan trọng trong kiến trúc của một máy tính. Với  
mỗi máy tính đều được thiết kế sẵn một số ngắt, ngoài ra các ngắt còn  
được định nghĩa bởi hệ điều hành và các chương trình ứng dụng. Khi có  
ngắt, hệ thống phải ngay lập tức chuyển điều khiển đến chương trình xử  
lý ngắt tương ứng càng nhanh càng tốt. Để thuận lợi trong quản lý cũng  
như xác định các chương trình xử lý tương ứng với mỗi ngắt người ta định  
nghĩa ra một bảng chứa địa chỉ các chương trình xử lý ngắt tương ứng với  
từng ngắt. Bảng này được gọi là bảng vector ngắt (Interrupt table). Bảng  
vector ngắt gồm nhiều phần tử, mỗi phần tử là một con trỏ, trỏ đến địa  
chỉ bắt đầu của chương trình xử lý tương ứng với ngắt đó. Các ngắt được  
đại diện bởi một con số (gọi là số hiệu ngắt). Số hiệu ngắt là chỉ số để trỏ  
đến một phần tử trong bảng vector ngắt. Bảng vector ngắt thường được  
lưu ở vùng nhớ thấp. Trong khí đó, các chương trình xử lý tương ứng lại  
được lưu ở vùng nhớ cao.  
Khi một ngắt được gọi, chương trình xử lý tương ứng với nó sẽ  
được thực hiện. trong quá trình thực hiện, chương trình này có thể làm  
thay đổi trạng thái hiện tại của hệ thống (trạng thái của chương trình  
đang bị gián đoạn) như thay đổi các thanh ghi, ngăn xếp,... Để đảm bảo  
cho chương trình bị ngắt có thể thực hiện tiếp sau khi xử lý ngắt xong,  
trước khi chương trình xử lý ngắt được thực hiện, trạng thái của hệ thống  
cần được cất giữ và chúng sẽ được khôi phục lại trước khi thực hiện tiếp  
chương trình bị gián đoạn.  
2.2. Kiến trúc vào ra  
Như đã đề cập ở phần trước, một máy tính thông thường bao gồm  
một CPU và các bộ điều khiển thiết bị được kết nối với nhau thông qua  
một bus chung. Mỗi bộ điều khiển thiết bị sẽ đảm nhiệm một thiết bị cụ  
thể. Trên mỗi trình điều khiển thiết bị có thể có nhiều thiết bị được nối  
Phạm Ngọc Hưng  
13  
Giới thiệu về hệ điều hành  
vào. Ví dụ một trình điều khiển giao diện máy tính nhỏ SCSI (Small  
Computer System Interface) có thể có đến 7 hoặc là nhiều hơn nữa các  
thiết bị nối vào. Một trình điều khiển thiết bị duy trì một số vùng lưu trữ  
trung gian (buffer storage) riêng và một tập các thanh ghi công dụng  
chung. Thiết bị điều khiển này đáp ứng cho việc di chuyển dữ liệu giữa  
các thiết bị ngoại vi. Kích thước bộ nhớ đệm là khác nhau tuỳ thuộc vào  
thiết bị sẽ được điều khiển. Ví dụ kích thước cùng nhớ đệm của thiết bị  
điều khiển đĩa là một hoặc nhiều vùng nhớ nhỏ nhất được đánh địa chỉ  
trên đĩa được gọi là sector, thông thướng là 512 byte.  
Các ngắt vào ra  
Để bắt đầu một điều khiển vào ra, CPU nạp các thanh ghi tương  
ứng với bộ điều khiển thiết bị. Bộ điều khiển thiết bị sẽ kiểm tra nội dung  
các thanh ghi để xác định hành động cần thực hiện.  
Khi một ngắt xuất hiện, trước hết hệ điều hành xác định xem thiết  
bị nào gây ra ngắt. Sau đó nó được lập chỉ mục vào trong bảng các ngắt  
thiết bị vào ra để xác định trạng thái của thiết bị đó và thay đổi điểm truy  
nhập để phản ánh sự xuất hiện của ngắt. Với hầu hết các thiết bị, một tín  
hiệu ngắt hoàn thiện một yêu cầu vào ra. Nếu có thêm các yêu cầu trong  
hàng đợi cho thiết bị này, hệ điều hành sẽ tiến hành xử lý các yêu cầu kế  
tiếp.  
Cấu trúc DMA  
Việc chuyển đổi dữ liệu từ các thiết bị vào ra thông thường đều qua  
xử lý của CPU, điều này làm cho việc truyền dữ liệu diễn ra chậm vì để  
truyền dữ liệu cần phải phát sinh ngắt để yêu cầu CPU. CPU phải mất  
nhiều thời gian để thực hiện hết các quy trình trong xử lý ngắt. Hơn thế  
nữa, việc CPU phải dừng lại để chuyển sang phục vụ việc chuyển dữ liệu  
sẽ làm giảm hiệu quả tính toán của CPU.  
Để giải quyết vấn đề này, gải pháp truy nhập trực tiếp bộ nhớ DMA  
(Direct Memory Access) được sử dụng để tăng tốc độ cho các hoạt động  
chuyển dữ liệu vào ra, nhất là đối với các thiết bị vào ra tốc độ cao. Sau  
khi thiết lập bộ đệm, con trỏ và bộ đếm cho thiết bị vào ra, bộ điều khiển  
thiết bị sẽ chuyển một khối dữ liệu trực tiếp đến bộ nhớ mà không ngắt  
14  
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
CPU, không cần tới xử lý của CPU. Chỉ một ngắt duy nhất được tạo ra cho  
mỗi khối chứ không phải cho từng byte hay từng word như ở các thiết bị  
tốc độ thấp.  
Các hoạt động cơ bản của CPU cũng tương tự. Một chương trình  
người dùng, hoặc bản thân hệ điều hành có thể yêu cầu truyền dữ liệu.  
Hệ điều hành phải tìm một bộ đệm (bộ bộ đệm rỗng cho hoạt động vào  
hoặc đầy cho hoạt động ra). Kế đến, một bộ phận của hệ điều hành được  
gọi là một bộ điều khiển thiết bị sẽ thiết lập các thanh ghi điều khiển DMA  
để sử dụng tương ứng với địa chỉ nguồn, địa chỉ đích và độ dài truyền.  
Tiếp theo bộ điều khiển DMA ra lệnh bắt đầu hoạt động vào ra. Trong khi  
DMA thực hiện việc truyền dữ liệu thì CPU được tự do để thực hiện các  
nhiệm vụ khác.  
2.3. Kiến trúc lưu trữ  
Một chương trình máy tính để thực hiện được, nó cần phải được  
nạp vào trong bộ nhớ chính (RAM). Bộ nhớ chính là một vùng lưu trữ lớn  
mà bộ xử lý có thể truy nhập trực tiếp. Bộ nhớ này là một mảng các từ  
nhớ (Word). Mỗi từ nhớ có địa chỉ riêng của nó. Các lệnh được chuyển từ  
bộ nhớ chính vào trong các thanh ghi của CPU để thực hiện.  
Một cách lý tưởng, chúng ta mong muốn chương trình và dữ liệu  
được nạp cố định vào bộ nhớ chính, nhưng điều này là không khả thi vì  
các lý do sau:  
- Bộ nhớ chính luôn luôn quá nhỏ so với tất cả các chương trình  
vào dữ liệu cần thiết.  
- Dữ liệu sẽ bị mất khi ngắt điện.  
Vì vậy, hầu hết các hệ thống máy tính đều cung cấp thiết bị lưu trữ  
thứ cấp (Secondary Storage) để mở rộng bộ nhớ chính. Yêu cầu chính đối  
với thiết bị lưu trữ thứ cấp là nó có thể lưu trữ được một khối lượng lớn  
dữ liệu lâu dài.  
Hầu hết các thiết bị lưu trữ thứ cấp là đĩa từ. Nó cung cấp khả  
năng lưu trữ cả chương trình và dữ liệu. Hầu hết các chương trình ứng  
dụng (trình duyệt, chương trình dịch, bộ xử lý từ, bảng tính,...) đều được  
lưu trên đĩa cho đến khi nó được nạp vào bộ nhớ. Nhiều các chương trình  
Phạm Ngọc Hưng  
15  
Giới thiệu về hệ điều hành  
sau đó coi đĩa như là nguồn và đích để nạp và lưu trữ thông tin trong quá  
trình xử lý.  
Dù sao đi nữa thì các thiết bị lưu trữ chúng ta vừa mô tả (bao gồm  
các thanh ghi, bộ nhớ chính, đĩa từ) chỉ là một trong số nhiều hệ thống  
lưu trữ. Các thiết bị lưu trữ này còn có thể là Cache, CD-ROM, băng từ,...  
Mỗi hệ thống lưu trữ đều cung cấp các chức năng lưu trữ dữ liệu cho đến  
khi chúng được dùng trở lại. Sự khác nhau cơ bản giữa chúng là giá  
thành, tốc độ, kích thước và độ ổn định.  
Bộ nhớ chính  
Bộ nhớ chính và các thanh ghi được thiết kế trong bộ xử lý là thiết  
bị lưu trữ chính duy nhất mà bộ xử lý có thể truy nhập trực tiếp đến. Các  
lệnh máy lấy địa chỉ bộ nhớ như các tham số chứ không lấy địa chỉ đĩa. Vì  
vậy, bất cứ câu lệnh nào cần thực hiện cũng như dữ liệu trước khi được  
xử lý, chúng phải ở một trong các thiết bị lưu trữ có thể truy nhập trực  
tiếp này. Nếu chúng không ở trong bộ nhớ thì cần phải được nạp vào  
trước khi CPU cần đến chúng.  
Trong trường hợp vào ra, mỗi bộ điều khiển thiết bị sẽ có các thanh  
ghi để chứa các câu lệnh và dữ liệu sẽ được truyền. Thông thường, các  
lệnh vào ra đặc biệt sẽ cho phép chuyển dữ liệu giữa các thanh ghi và bộ  
nhớ. Để tăng hiệu quả truy cập tới các thiết bị vào ra, nhiều kiến trúc máy  
cung cấp một ánh xạ (bản đồ) vào ra. Khi đó, một khoảng địa chỉ sẽ được  
dành riêng để ánh xạ tới các thành ghi của bộ điều khiển. Đọc và ghi vào  
địa chỉ bộ nhớ đó sẽ khiến cho dữ liệu được truyền đến hoặc đi khỏi các  
thanh ghi của bộ điều khiển thiết bị. Phương pháp này thích hợp cho các  
thiết bị có thời gian trả lời nhanh như bộ điều khiển màn hình. Việc hiển  
thị văn bản trên màn hình nói chung chỉ đơn giản là ghi văn bản vào vị trí  
tương ứng trong bộ nhớ.  
Bộ nhớ ánh xạ vào ra còn mang lại hiệu quả cho nhiều các thiết bị  
khác như các cổng nối tiếp và song song dùng để kết nối tới modem và  
máy in với máy tính. Để chuyển dữ liệu qua các thiết bị này, CPU tiến  
hành ghi hay đọc một số thanh ghi được gọi là cổng vào ra.  
16  
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
Đĩa từ  
Đĩa từ là phương tiện lưu trữ cho phép ta lưu trữ lâu dài một khối  
lượng lớn thông tin, khi cần có thể đọc lại một cách nhanh chóng nhờ khả  
năng truy nhập ngẫu nhiên.  
Đĩa từ có nhiều lợi ích khác nhau thể qua các đặc điểm như: cấu  
tạo, giá thành, dung lượng, tốc độ ghi đọc, chất liệu,...  
Băng từ  
Là những thiết bị lưu trữ lâu dài dự trên tính chất nhiễm từ của kim  
loại phủ bề mặt băng. Đây là thiết bị có khả năng lưu trữ khối lượng lớn  
thông tin nhưng tốc độ truy nhập chậm, phải truy nhập tuần tự, khó bảo  
quản. Các bộ điều khiển băng từ thường được phân loại theo độ rộng, bao  
gồm 4, 8 và 19 milimeters, 1/4 và 1/2 inch.  
Bộ nhớ Cache  
Là bộ nhớ đệm nằm ở vị trí trung gian giữa bộ nhớ chính và CPU.  
Chúng có tốc độ truy nhập cao, dung lượng nhỏ dùng cho mục đích lưu lại  
những dữ liệu đã được truy nhập để có thể dùng lại ở lần sau mà không  
cần phải truy nhập bộ nhớ thêm lần nữa. Cách tổ chức này làm gia tăng  
đáng kể tốc thực hiện chương trình.  
2.4. Phân cấp lưu trữ  
Các thiết bị lưu trữ có thể phân cấp theo trật tự dưới đây dựa vào  
tốc độ và giá cả.  
Thanh ghi  
Cache  
Bộ nhớ  
Đĩa quang từ  
Đĩa từ  
Đĩa quang  
Băng từ  
Hình 2.1: Kiến trúc thiết bị lưu trữ  
Phạm Ngọc Hưng  
17  
Giới thiệu về hệ điều hành  
Trình tự và sự nối kết các hệ thống nhớ thể hiện như sau:  
Bộ nhớ  
chính  
Thanh  
ghi  
Đĩa từ  
Cache  
Hình 2.2: Trình tự kết nối các thiết bị  
2.5. Bảo vệ phần cứng  
Các thế hệ máy tính thời kỳ đầu thiết kế cho một người dùng,  
người lập trình và điều hành hệ thống. Khi những người lập trình điều  
hành máy tính từ một bàn điều khiển (console), họ phải hoàn thành tất cả  
các điều khiển thông qua hệ thống. Khi hệ điều hành được phát triển,  
chúng thay con người điều hành hệ thống. Chúng giám sát hoạt động của  
hệ thống và thực hiện nhiều các chức năng, đặc biệt là hoạt động vào ra  
(là hoạt động vất vả và đầy các khó khăn đối với người lập trình cũng như  
người điều khiển hệ thống trước đó).  
Thêm vào đó, để cải tiến các tiện ích của hệ thống, hệ điều hành  
bắt đầu chia sẻ các tài nguyên hệ thống cho một số các chương trình thực  
hiện một cách song song. Một chương trình thực hiện việc tính toán, trong  
khi chương trình khác lại thực hiện việc vào ra.  
Việc chia sẻ này vừa là sự cải tiến nhưng cũng đồng thời làm nảy  
sinh các vấn đề. Khi hệ thống chạy mà không chia sẻ tài nguyên thì một  
lỗi phát sinh trong một chương trình chỉ làm ảnh hưởng đến bản thân  
chương trình đó. Nhưng với sự chia sẻ, nhiều chương trình có thể bị ảnh  
hưởng bởi lỗi do một chương trình gây ra.  
Nếu không có cơ chế bảo vệ chống lại một số lỗi, hệ thống phải  
làm việc trong chế độ chỉ một chương trình được thực hiện trong một thời  
điểm hoặc tất cả các dữ liệu đầu ra đều không đáng tin cậy. Một hệ điều  
hành được thiết kế để đảm bảo cho một lỗi của chương trình này không  
gây ra các sai sót cho các chương trình khác.  
Nhiều các lỗi chương trình đã được phát hiện bởi phần cứng. Các  
lỗi này bình thường được hệ điều hành xử lý. Nếu một chương trình của  
người sử dụng gây lỗi vì một lý do nào đó - như thực hiện một lệnh sai,  
truy nhập đến địa chỉ vùng nhớ không thuộc phạm vi của chương trình -  
18  
Phạm Ngọc Hưng  
HỆ ĐIỀU HÀNH  
phần cứng sẽ bẫy lỗi đó và chuyển nó cho hệ điều hành thông qua vector  
ngắt. Khi một chương trình gây lỗi, hệ điều hành phải kết thúc bất thường  
chương trình đó. Vấn đề này được xử lý như một yêu cầu kết thúc bất  
thường của người dùng. Một thông báo lỗi thích hợp sẽ được tạo ra, và  
vùng nhớ của chương trình được ghi lại (dump). Thông thường được ghi  
vào một file để người dùng hoặc người lập trình có thể kiểm tra, qua đó  
có thể khắc phục và khởi động lại chương trình.  
Chế độ thực thi kép (Dual Mode Operation)  
Để đảm bảo cho các hoạt động bình thường, ta phải bảo vệ hệ điều  
hành, các chương trình ứng dụng và dữ liệu khỏi bất cứ chương trình bị lỗi  
nào. Hướng giải quyết đưa ra bởi nhiều hệ điều hành là cung cấp các hỗ  
trợ phần cứng cho phép nhiều chế độ xử lý khác nhau.  
Ít nhất chúng ta cần 2 chế độ xử lý: chế độ người dùng và chế độ  
giám sát. Một bit được gọi bit chế độ (mode bit) được thêm vào phần  
cứng để xác định chế độ hiện hành: giám sát (0), người dùng (1). Nhờ  
vào bit chế độ, chúng ta có thể phân biệt giữa một nhiệm vụ phía người  
dùng và một nhiệm vụ phía quản trị hệ thống.  
Ở thời điểm khởi động, phần cứng bắt đầu bằng chế độ giám sát.  
Hệ điều hành được nạp vào và sau đó khởi động các xử lý của người dùng  
trong chế độ người dùng. Khi một bẫy lỗi hoặc ngắt xuất hiện, hệ thống  
sẽ chuyển từ chế độ người dùng sang chế độ giám sát (thay đổi bit chế  
độ). Vì thế mà hệ điều hành nắm được quyền điều khiển máy tính. Hệ  
điều hành luôn luôn chuyển sang chế độ người dùng trước khi nó trao  
quyền điều khiển cho một chương trình người dùng.  
Chế độ thực hiện kép (dual mode of operation) cung cấp khả năng  
bảo vệ hệ điều hành khỏi những lỗi do người sử dụng gây ra. Chúng ta có  
thể thực hiện được các bảo vệ này bởi việc thiết kế một số lệnh đặc  
quyền. Phần cứng chỉ cho phép các lệnh đặc quyền này được thực hiện  
trong chế độ giám sát. Nếu cố thử thực hiện một lệnh đặc quyền trong  
chế độ người dùng, phần cứng sẽ không chấp nhận, coi như một lệnh sai  
và bẫy nó để chuyển cho hệ điều hành xử lý.  
Phạm Ngọc Hưng  
19  
Giới thiệu về hệ điều hành  
Bảo vệ vào ra  
Để tránh cho người dùng thực hiện các lệnh vào ra gây lỗi, chúng  
ta phải định nghĩa tất cả các lệnh vào ra đều là những lệnh đặc quyền,  
chúng phải được thực hiện thông qua hệ điều hành. Để hoàn thành được  
nhiệm vụ bảo vệ vào ra, chúng ta phải đảm bảo người dùng không bao  
giờ có thể có được quyền điều khiển máy tính trong chế độ giám sát.  
Khi xem xét một chương trình thực hiện trong chế độ người dùng,  
ta thấy nó vẫn có thể chuyển sang chế độ giám sát khi một ngắt hoặc một  
bẫy lỗi xuất hiện. Nếu chương trình người dùng thay đổi địa chỉ vector  
ngắt để nó trỏ đến phần xử lý của chương trình người dùng thì khi ngắt  
được đáp ứng, quyền điều khiển sẽ được chuyển cho chương trình người  
dùng ngay trong chế độ giám sát. Trong thực tế, có nhiều cách để chương  
trình người dùng chiếm được quyền điều khiển hệ thống trong chế độ  
giám sát. Thêm vào đó, nhiều lỗ hổng đã bị phát hiện và chúng có thể là  
lý do khiến cho việc bảo vệ hệ thống bị vô hiệu hoá. Như vậy, để thực  
hiện vào ra, một chương trình người dùng phải thực hiện một lời gọi hệ  
thống để yêu cầu hệ điều hành thực hiện tác vụ vào ra. Hệ điều hành  
thực hiện trong chế độ giám sát, kiểm tra nếu yêu cầu của người dùng là  
được phép thì sẽ thực hiện. Sau đó hệ điều hành sẽ đưa hệ thống trở lại  
chế độ người dùng.  
Bảo vệ bộ nhớ  
Để các đảm bảo cho các xử lý đúng, chúng ta phải bảo vệ các  
vector ngắt khỏi sự thay đổi của chương trình người dùng. Thêm vào đó,  
chúng ta cũng phải bảo vệ các dịch vụ ngắt của hệ điều hành khỏi những  
thay đổi.  
Chúng ta đều thấy sự cần thiết phải phải bảo vệ bộ nhớ, ít nhất là  
cho các vector ngắt và các lệnh phục vụ ngắt của hệ điều hành. Thông  
thường thì chúng ta muốn bảo vệ hệ điều hành khỏi các truy nhập của  
người dùng và bảo vệ chương trình của người dùng khỏi sự sâm phạm  
của những chương trình khác. Sự bảo vệ này phải được hỗ trợ bằng phần  
cứng. Nó có thể được thực hiện bằng nhiều cách (chi tiết sẽ được thảo  
20  
Phạm Ngọc Hưng  
Tải về để xem bản đầy đủ
pdf 40 trang Thùy Anh 17340 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 1: Giới thiệu về hệ điều hành - Phạm Ngọc Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_chuong_1_gioi_thieu_ve_he_dieu_hanh.pdf