Tải bản đầy đủ (.pdf) (148 trang)

Đề cương hệ điều hành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.68 MB, 148 trang )

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

Đĩa từ

Cache

Thanh
ghi

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


HỆ ĐIỀU HÀNH
luận ở phần sau). Ở đây, chúng ta có thể nêu ra những xử lý cơ bản có
thể làm.
Để cung cấp không gian nhớ cho chương trình, chúng ta cần có
khả năng xác định được phạm vi địa chỉ hợp pháp mà chương trình có thể
truy nhập và bảo vệ vùng nhớ còn lại. Sự bảo vệ này được thực hiện bằng
cách sử dụng 2 thanh ghi cơ sở và thanh ghi giới hạn. Thanh ghi cơ sở
(base register) lưu địa chị hợp pháp nhỏ nhất; thanh ghi giới hạn (limit
register) chứa kích thước của vùng nhớ.
Thanh ghi cơ sở và thanh ghi giới hạn chỉ có thể được nạp bởi hệ
điều hành bằng việc sử dụng các lệnh đặc quyền đặc biệt. Các lệnh đặc
quyền chỉ có thể được thực hiện trong chế độ giám sát, và cũng chỉ có hệ
điều hành mới được làm việc trong chế độ giám sát nên chỉ hệ điều hành
mới có thể nạp các thanh ghi cơ sở và thanh ghi giới hạn.
Bảo vệ CPU

Thêm vào việc bảo vệ vào ra và bảo vệ bộ nhớ, chúng ta phải đảm
bảo hệ điều hành duy trì được điều khiển. Chúng ta cần tránh để chương
trình người dùng rơi vào vòng lặp không xác định hoặc không gọi các dịch
vụ hệ thống và không bao giờ trả lại quyền điều khiển cho hệ điều hành.
Để đạt được mục tiêu này, chúng ta cần phải sử dụng đến một đồng hồ.
Chiếc đồng hồ này có thể được thiết lập để ngắt ngang việc xử lý của máy
tính sau một khoảng thời gian chỉ định. Khoảng thời gian này có thể được
xác định (ví dụ 1/60 giây) hoặc thay đổi (ví dụ từ 1 mini giây đến 1 giây).
Hệ điều hành thiết lập bộ đếm. Cứ sau mỗi xung nhịp đồng hồ, bộ đếm sẽ
bị giảm đi. Khi bộ đếm đạt đến 0 thì một ngắt xuất hiện. Trước khi chuyển
điều khiển cho người dùng, hệ điều hành cần phải chắc chắn là ngắt đồng
hồ đã được thiết lập. Khi đồng hồ phát sinh ngắt, quyền điều khiển hệ
thống sẽ phải được chuyển đến cho hệ điều hành.
Ta có thể sử dụng đồng hồ này để ngăn cản chương trình người
dùng rơi vào tình trạng thực hiện quá lâu. Ví dụ, một chương trình chạy
với khoảng thời gian giới hạn là 7 phút. Bộ đếm của nó có thể khởi đầu từ
420. Cứ sau 1 giây, ngắt đồng hồ sẽ giảm bộ đếm đi 1 đơn vị. Trong khi
giá trị bộ đếm vẫn dương thì quyền điều khiển được trả lại cho chương

Phạm Ngọc Hưng

21


Giới thiệu về hệ điều hành
trình người dùng. Khi bộ đếm bắt đầu âm, hệ điều hành sẽ kết thúc
chương trình đó do vượt quá thời gian giới hạn.
Đồng hồ còn có thể được dùng trong hệ thốg chia sẻ thời gian.
Ngắt sẽ xuất hiện cứ sau N mini giây. Trong khoảng N mini giây là thời
gian để một chương trình thực hiện, hết thời gian này, quyền điều khiển

sẽ được chuyển cho chương trình khác. Hệ điều hành sẽ chiếm lấy quyền
điều khiển sau mỗi khoảng thời gian (trước khi chuyển quyền điều khiển
cho chương trình tiếp theo) để nó thực hiện một số công việc “nội trợ”
như đếm thời gian thực hiện. Hệ điều hành đồng thời cũng lưu lại các
thanh ghi, các biến cục bộ, các bộ đệm và thay đổi một số các tham số
cho chương trình kế tiếp. Thủ tục này được gọi là chuyển ngữ cảnh.

2.6. Kiến trúc mạng
Có hai kiểu mạng cơ bản là mạng LAN và mạng WAN. Sự khác
nhau cơ bản giữa hai loại mạng này ở phạm vi của chúng.
Mạng LAN (Local Area Network)
Đây là loại mạng có quy mô nhỏ, xuất hiện đầu tiên vào thập kỷ
70. Mạng này được xây dựng dựa trên các trang thiết bị, phụ kiện mạng
đặc trưng cho mạng cục bộ.
Mạng WAN (Wide Area Network)
Là mạng diện rộng với phạm vi có thể trong một tỉnh, một quốc gia
hoặc liên quốc gia và trên toàn thế giới.
Mạng này sử dụng các công nghệ cho phép truyền thông đi xa.

2.7. Bài tập
1. Sự khác nhau cơ bản giữa chế độ giám sát và chế độ người dùng
trong công tác bảo vệ hệ thống?
2. Sự khác biệt giữa một bẫy lỗi (trap) và một ngắt là gì? Chức
năng sử dụng của chúng là gì?
3. DMA phát huy tác dụng trong kiểu xử lý nào? Giải thích.
4. Câu lệnh nào sau đây có thể là đặc quyền:
- Thiết lập giá trị đồng hồ
- Đọc xung nhịp

22


Phạm Ngọc Hưng


HỆ ĐIỀU HÀNH
- Xoá bộ nhớ
- Huỷ bỏ các ngắt
- Chuyển đổi từ chế độ người dùng sang chế độ giám sát
5. Một số hệ thống máy tính không cung cấp một chế độ đặc quyền
trong điều hành của phần cứng. Có khả năng xây dựng cơ chế bảo vệ hệ
điều hành cho các máy tính đó hay không? Hãy đưa ra các giải thích cho
cả hai trường hợp có thể và không thể.
6. Một số máy tính trước đây bảo vệ hệ điều hành bằng cách đặt
nó vào một vùng nhớ mà các nhiệm vụ của người dùng cũng như chính
bản thân hệ điều hành cũng không thể thay đổi. Hãy mô tả hai khó khăn
có thể xuất hiện theo lược đồ này.
7. Bảo vệ hệ điều hành là một vấn đề cốt yếu để đảm bảo cho hệ
điều hành làm việc đúng. Cung cấp sẵn khả năng bảo vệ là lý do triển
khai chế độ thực thi kép, bảo vệ bộ nhớ và đồng hồ kiểm soát chương
trình. Để tăng tối đa tính linh hoạt, đồng thời chúng ta cũng nên giảm bớt
sự rắc rối cho người dùng.
Những chỉ thị lệnh trong danh sách sau đây được bảo vệ một cách
bình thường. Đâu là tập chỉ thị lệnh tối thiểu phải được bảo vệ?
a. Chuyển sang chế độ người dùng
b. Chuyển sang chế độ kiểm soát
c. Đọc từ bộ nhớ kiểm soát
d. Ghi vào bộ nhớ kiểm soát
e. Lấy một chỉ thị lệnh từ bộ nhớ kiểm soát
f. Bật ngắt đồng hồ
g. Tắt ngắt đồng hồ

8. Đưa ra hai lý do giải thích sự hữu dụng của cache.
9. Sự khác nhau cơ bản giữa LAN và WAN
10. Cấu hình mạng nào phù hợp nhất cho các môi trường sau:
a. Một tầng ký túc xá
b. Một trường đại học
c. Một bang, tỉnh
d. Một quốc gia

Phạm Ngọc Hưng

23


Giới thiệu về hệ điều hành

3. Cấu trúc hệ điều hành
Hệ điều hành cung cấp môi trường cho các chương trình ứng dụng
hoạt động. Thiết kế một hệ điều hành mới là một nhiệm vụ lớn, đòi hỏi
mục tiêu của hệ điều hành cần phải được xác định rõ trước khi bắt đầu
thiết kế. Kiểu hệ thống mong đợi là cơ sở cho việc lựa chọn giải thuật và
giải pháp thực hiện.
Một hệ điều hành có thể được đánh giá thông qua một số điểm
mạnh của nó. Thứ nhất là bằng cách kiểm tra các dịch vụ mà nó cung
cấp. Thứ hai là xem giao diện mà nó cung cấp cho người dùng và các nhà
lập trình. Thứ ba là sự chia nhỏ thành các module và sựa ghép nối của
chúng với nhau. Trong phần này chúng ta sẽ khám phá cả ba đặc tính của
hệ điều hành, thể hiện từ góc nhìn của người dùng, các nhà lập trình và
những người thiết kế hệ thống. Chúng ta sẽ xem xét các dịch vụ mà hệ
điều hành cung cấp cũng như cách mà chúng được cung cấp và các
phương pháp luận trong thiết kế hệ thống.


3.1. Các thành phần hệ thống
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 như các lệnh của
nó không được CPU thi hành. Một tiến trình là một chương trình đang
được thi hành, nhưng ý nghĩa của nó còn rộng hơn. Một công việc theo lô
là một tiến trình. Một chương trình người dùng chia sẻ thời gian là một
tiến trình, một công việc của hệ thống như soopling xuất ra máy in cũng
là một tiến trình.
Một tiến trình phải sử dụng tài nguyên như thời gian sử dụng CPU,
bộ nhớ, tập tin, các thiết bị nhập xuất để hoàn tất công việc của nó. Các
tài nguyên này được cung cấp khi tiến trình được tạo hay trong quá trình
thi hành. Khi tiến trình được tạo, nó sử dụng rất nhiều tài nguyên vật lý và
logic, cũng như một số để khởi tạo dữ liệu nhập. Ví dụ , khảo sát tiến
trình hiển thị trạng thái của tập tin lên màn hình. Đầu vào của tiến trình là
tên tập tin, và tiến trình sẽ thực hiện những chỉ thị thích hợp, thực hiện lời
gọi hệ thống để nhận được những thông tin mong muốn và hiển thị nó lên

24

Phạm Ngọc Hưng


HỆ ĐIỀU HÀNH
màn hình. Khi tiến trình kết thúc, hệ điều hành sẽ tái tạo lại các tài
nguyên có thể được dùng lại.
Một chương trình tự nó không phải là một tiến trình; một chương
trình chỉ là một thực thể thụ động, như nội dung của một file được lưu
trên đĩa, trong khi đó, một tiến trình là một thực thể chủ động, với một bộ
đếm chương trình chỉ định câu lệnh kế tiếp sẽ được thực hiện. Việc thực

hiện một tiến trình phải theo một trình tự. CPU thực hiện các chỉ thị của
tiến trình một cách tuần tự, hết lệnh này đến lệnh khác cho đến khi tiến
trình hoàn tất.
Một tiến trình là một đơn vị làm việc trong hệ thống. Nói khác đi,
hệ thống là một tập hợp các tiến trình. Một số trong đó là các tiến trình
của hệ điều hành, số còn lại là những tiến trình của người dùng. Tất cả
các tiến trình này có thể được thực hiện song song bởi việc chia sẻ CPU
giữa chúng.
Hệ điều hành chịu trách nhiệm về các hoạt động sau đây liên quan
đến công tác quản lý tiến trình:
- Tạo và xoá cả tiến trình người dùng và tiến trình hệ thống
- Ngừng và chạy trở lại các tiến trình
- Cung cấp các kỹ thuật cho việc đồng bộ các tiến trình
- Cung cấp các cơ chế giao tiếp giữa các tiến trình
- Cung cấp các cơ chế cho việc xử lý các deadlock
Chúng ta sẽ thảo luận về các kỹ thuật này ở phần sau.
Quản lý bộ nhớ chính (Main-Memory Management)
Trong hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của
các thao tác, xử lý. Bộ nhớ chính có thể xem như một mảng kiểu byte hay
kiểu word. Mỗi phần tử đều có địa chỉ. Đó là nơi lưu dữ liệu được truy
xuất một cách nhanh chóng và được chia sẻ bởi CPU và các thiết bị vào
ra. Bộ xử lý trung tâm đọc các chỉ thị lệnh từ bộ nhớ chính theo từng chu
kỳ lệnh, đọc và ghi dữ liệu vào bộ nhớ chính trong mỗi chu kỳ dữ liệu. Các
hoạt động vào ra được thực hiện thông qua DMA cũng đọc và ghi dữ liệu
trong bộ nhớ chính. Thông thường bộ nhớ chính là thiết bị lưu trữ lớn
nhất mà CPU có thể định vị trực tiếp. Ví dụ, để CPU truy xuất được dữ liệu

Phạm Ngọc Hưng

25



×