Giáo trình Nguyên lý hệ điều hành - Hồ Đắc Phương - Tài liệu VNU

271 56 0
Giáo trình Nguyên lý hệ điều hành - Hồ Đắc Phương - Tài liệu VNU

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Những thủ tục của HĐH được tải vào trong vùng nhớ hệ thống và được bảo vệ vi không thể nạp mã của chương trình người dùng vào vùng nhớ đó.. Vì mã hệ thống nằm trong vùng nh[r]

(1)(2)

Hồ ĐẮC PHƯONG

Giáo trình

NGUVỈNIV HỈ D É HằNH

(3)

Công ty cổ phần sách Đại học - Dạy nghề - Nhà xuất Giáo dục Việt Nam giữ quyền công bố tác phẩm.

(4)

MỤC LỤC

Trang

Chư ơng G IỚ I THIỆU C H U N G 7

1.1 MÁY TÍNH VÀ PHẰN M ÈM 7

1.2 LỊCH Sử PHÁT TRIÉN CỦA HỆ ĐIÉU H À N H 13

CÂU HỔI ÔN T Ạ P 13

Chưcyng sử DỤNG HỆ ĐIÈU H À N H 14

2.1 MƠ HÌNH TÌNH TO ÁN TRỪ U T Ư Ợ N G 14

2.2 TÀI N G U Y Ê N 15

2.3 TIỂN T R ÌN H 18

2.4 L U Ồ N G 25

2.5 ĐÔI T Ư Ợ N G 27

2.6 NHẬN X É T 28

CÂU HỎI ÔN T Ạ P 28

C hư ng CÁU TR Ú C HỆ ĐIÈU H À N H 29

3.1 PHÂN TÍCH CÁC YÉU TÔ TÁC Đ Ộ N G ĐỂN HỆ ĐIỂU HÀNH 29

3.2 CÁC CHỨC NÁNG c BẢN 33

3.3 CÁC PHƯƠ NG TH Ứ C CÀI Đ ẠT HỆ ĐIÉU H À M H 37

3 NHẬN X É T 41

CÂU HỊI ƠN T Ạ P 41

C hương TIÉN T R ÌN H 42

4.1 TIÉN TRÌNH VÀ TRẠNG THÁI TIẾN T R ÌN H 42

4.2 THAO TÁC TRỂN TIÊN T R ÌN H 45

4.3 MƠ TÁ TIÉN T R ÌN H 48

4.4 L U Ô N G .53

4.5 CÀI ĐẠT HỆ ĐIÊU H À N H 57

4.6 NHẠN Xé t' 59

CÂU HỎI ÔN T Ậ P 60

C h n g Đ IẺ U PHỐI TIÉN T R ÌN H 61

5.1 C CHÉ ĐIÊU P H Ố I 61

5.2 CÁC PHƯƠ NG PHÁP ĐiÈU P H Ố I 67

(5)

5.4 THUẠT TỐN KHƠNG Đ ộ c QUYÊN 77

5.5 NHẠN X É T 84

CÂU HỎI ÔN T Ậ P 84

C hư ơng TƯ Ơ NG TRANH VÀ ĐỒ NG B ộ 85

6.1 CÁC KHÁI NIỆM C B Ả N 85

6.2 ĐỘC QUYÊN TRUY X U Â T - GIẢI PHÁP PHẢN M É M 88

6.3 ĐỒNG B ộ H Ó A -G lA l PHÁP PHÂN C Ứ N G 94

6.4 GIẢI PHÁP ĐỒNG Bộ c BẢN 96

6.5 NHỮNG VAN đ è đ n g b ộ k in h Đ IÉ N 101

6.6 CAC GIẢI PHÁP Đ Ồ N G B ộ CAO C Â P 104

6.7 C CHÊ IP C 109

6 NHẬN X É T 113

CÂU HỎI ÔN T Ạ P 114

C hư ơng BÉ T Â C 115

7.1 MÔ HlNH H Ệ T H Ổ N G 115

7.2 ĐẠC ĐIÉM CỦA BÉ T Ắ C 116

7.3 NGĂN CHẬN BẾ T Â C 119

7.4 TRÁNH BÉ T Ắ C 121

7.5 PHÁT HIỆN B É T Ằ C 126

7.6 KHẮC PHỤC BỂ T Ắ C 129

7.7 NHẠN X É T 130

CÀU HỎI ÔN T Ậ P 131

C hư ơng QUẢN LÝ TH IÉ T B Ị 132

8.1 NGUYÊN LÝ HOẠT Đ Ộ N G 132

8.2 CHIÉN LƯỢC QUẢN LÝ T H IẾ T B Ị 134

8.3 TRÌNH ĐIÊU KHIÉN TH IÉ T B Ị 150

CÂU HỎI ÔN T Ậ P 152

C hư ơng QUẢN LÝ B ộ N H Ớ 153

9.1 CÁC LOẠI ĐỊA C H Í 153

9.2 KHỔNG GIAN ĐỊA C H Ỉ 157

9.3 HOÁN C H U Y É N 158

9.4 CAP p h t l iê n t ụ c _ 159 9.5 PHÂN T R A N G 163

9.6 PHÂN Đ O Ạ N 173

9.7 KÊT HỢP PHÂN ĐOẠN VỚI PHÂN TRANG ^ 178

(6)

Chương 10 B ộ NHỚ Ả o 182

10.1 Đ ẠT VÂN Đ Ể 182

10.2 PHÂN TRANG THEO YÊU C A U 183

10.3 HIỆU SUẤT PHÂN TRANG THEO YỂU C Ằ U 186

10 THAY TH Ê TR A N G 188

10.5 THUẬT TOÁN THAY TH É T R A N G 190

10.6 CAP PHÀT f r a m e 197

10.7 PHẢN ĐOẠN THEO YÉU C Ả U 200

10.8 NHẶN X É T 201

CÂU HỔI ỒN T Ậ P 201

C hư ơng 11 HỆ THỐ NG F IL E 202

11.1 FILE 202

11.2 CÀI ĐẠT FILE MỨC T H Á P 209

11.3 H Ệ T H Ồ N G TH Ư M Ụ C 219

11.4 BẢO VỆ FILE CHIA S Ẽ 226

11.5 TÍNH TH Ố N G NHÁT CỦA NGỮ N G H ĨA 229

11.6 PHỤC HÔI SAU L Ỗ I 231

11.7 NHẬN X É T 232

CÂU HỎI ỒN T Ậ P 233

Cíhương 12 B ẢO VỆ VÀ AN N IN H 234

12.1 C A C V A N Đè Cơ Bả n 234

12.2 XAC T H Ự C 12.3 KIỂM C H Ứ N G 241

12.4 CẢI Đ ẠT MA TRÂN Q U YÈN TR U Y CẠP 12.5 HẬU QUẢ T Ừ C H Ư Ơ N G TRÌNH L Z 5 12.6 GIÁM SÁT NGUY c 262

12.7 MẠT MẢ VÀ Ứ NG D Ụ N G 264

12.8 NHẠN X É T CÂU HỎI ỒN T Ậ P 269

(7)(8)

Chương 1

GIỚI THỈỆU CHUNG

Chương khái quát Hệ điểu hành (HĐH) lịch sử phát triển HĐH. Trước tiên, giới thiệu tổng quan khái niệm phần mềm vị trí cụ thể của HĐH hệ thống phần Tiếp đến, trình bày hai động lực phát triển của HĐH đại là: Trừu tượng hóa Chia sẻ tài nguyên phần cứng.

1.1 MÁY TÍNH VÀ PHẢN MÈM

Con người sử dụng máy tính thơng qua phần mềm Phần mềm

phân loại theo mục đích sử dụng: Phần mềm ứng dụng giải vấn đề cụ

thể (MS Word, MS Excel) Phần m ềm hệ thống thực thi nhiệm vụ

liên quan tới trình thực thi chương trình ứng dụng Bên cạnh đó, phiầi mềm hệ thống cung cấp nliững chức mà phần cứng cuing cấp, giúp lập trình viên phát triển ứng dụng, , HĐH phần mềm hệ thcống quan trọng

Mục tiêu quan trọng HĐH cho phép nhiều phần Jĩiềm ứng dụng cìung sử dụng phần cứng máy tính cách có trật tự Chia sẻ làm tăng hitệu suất sử dụng_hệ Thống, chương trình khác đồng thời sử (lỊạrg phận phần cứng khác Do đó, giảm thời gian cần thiết đ ể thực nhóm chương trình Để chia sẻ an tồn có hiệu quả, H:ĐH phải nằm sál phần cứng Phần mềm hệ thống tất phần mềm ứmg dụng giản tiếp sử dụng phần cứng thông qua HĐH

Phần mềm hệ thống

(9)

UNIX, chức cài đặt ngôn ngữ c (bằng cách sử dụin^g file.h), ví dụ:

• Thư viện vào/ra chuẩn (I/O) thực thao tác vào/ra thơng qiuaa đệm dịng liệu

• Thư viện tốn học để tính tốn hàm tốn học

• Thư viện đồ họa cung cấp hàm hiển thị hình ảnh hìinih đồ họa

Một chức khác phần mềm hệ thống cung cấp hệ thống gi;aíio diện cửa sổ WINDOWS phần mềm hệ thống cung cấp cửa sổ (miộột thiết bị đầu cuối ảo) cho chương trình ứng dụng Lập trình viên phát tritểẽn phần mềm ứng dụng sử dụng hàm để đọc ghi lên cửa sổ tlhiể cửa sổ thiết bị đầu cuối, chí cửa sổ khơng gắn với bất Ikxỳ thiết bị vật lý Phần mềm hệ thống chịu trách nhiệm ánh xạ thiết bị điầùu cuối ảo lên vùng cụ thể hình Một thiết bị đầu cuối vật lý (CCÓ thể hỗ trợ nhiều thiết bị đầu cuối ảo

HĐH cung cấp giao diện (là hàm) để phần mềm hệ thống phiầủn mềm ứng dụng sử dụng muốn dùng tài nguyên hệ thống HĐH phiầẩn mềm độc lập, hỗ trợ nhiều ứng dụng lĩnh vực khác Phíầần mềm ứng dụng sử dụng trừu tượng hóa tài nguyên HĐH cung cấp k±hi làm việc với phần cứng HĐH cho phép ứng dụng khác chia sẻ Itàài ngun phần cứng thơng qua sách quản lý tài nguyên Trừu tượng h(óóa

tài nguyên chia sẻ hai khía cạnh Cft HĐH

a

1.1.2 Trừu tượng hóa tài nguyên phần cứng

(10)

dồng thi phải nhấn số nút khác nhau; ấn nút rút tiền, sau rút lừ tài khốn với lượng tiền rúl 1,3 triệu đồng

Phần cứiig coi Tài nguyên hệ thống tài nguyên cụ có giao diện riêng định nghĩa Ihao tác mà lập trình viên thực tài nguyên Tuy nhiên, phần mềm hệ thống tiếp tục trìai tượng dể đơn giản hóa giao diện lài nguyên cụ thể Đe sử dụng tài nguyên, người lập trình không nhât thiêt phải biết giao diện cụ thê cùa tài nguyên, mà cần biết giao diện trừu tượng (bỏ qua hoạt động chi tiết thiết bị) Do đó, lập trình viên tập trung vào vấn đề mức cao Các tài nguyên giống trừu tượng thành giao diện thống Ví dụ, phần mềm hệ ihống trừu tượng hoạt động ổ đĩa mềm ổ đĩa cứng thành giao diện đĩa trừu tượng Người lập trình cần có kiến thức chung hoạt động ổ đĩa trừu tượng, mà không cần biết chi tiết thao tác vào/ra ổ đĩa cứng hay ổ đĩa mềm

Giả sử phải phát triển ứng dụng phân tích xu đầu tư cùa thị trưịng chứng khốn Việc thiết kế sửa đoạn mã Ihực việc đọc/ghi thông tin ổ đĩa chiếm phần khơng nhị tồn đoạn mã chương trình Kỹ cần thiết để viết phần mềm điều khiến ổ đĩa khác kỹ phân tích thị trường chứng khốn Nếu có kiến thức chung hoạt động ổ dĩa, lập trinh viên ứng dụng không cần quan tâm thao tác vào/ra ổ đĩa cứng Trừu tượng tài nguyên cách tiếp cận tối un, người lập trình ứng dụng sử dụng mơ hình trừu tượng để thực việc đọc/ghi ổ đĩa Phần mềm điều khiển ổ đĩa ví dụ phần mềm hệ thống Lập trình viên

có thể tập trung vào vấn đề ứng dụng, không cần quan tâm đến £

những thứ không liên quan Nói cách khác, phần mềm hệ thống "trong suốt" với người sử dụng, quan trọng với lập trình viên

1.1.3 Ví dụ trừu tượng hóa thiết bị ổ đĩa

Ý tưởng trừu tượng hóa tài ngun hiểu rõ thơng qua ví dụ hoạt động thiết bị ổ đĩa (Hình 1.1) Phần mềm điều khiển thiết bị chép rnột khối thông tin từ nhớ tới nhớ đệm thiết bị thị

Lo ad(block, length, device) Để chuyển đầu đọc/ghi tới vỊ trí cụ thể

bề mặt đĩa sử dụng thị S eek(device, track) Thao tác ghi khối liệu

(11)

Do đó, cần nhóm lệnh liên tiếp để ghi khối thơng tin từ ahor ổ đĩa Hình l.la Để đơn giản công việc người phát triểi ứng dụng, hệ thống đóng gói câu lệnh Hình l l a vào thi

tục Hàm write (Hình 1 Ib), tạo thành mức trừu tượng hóa cao

Bước trừu tượng cao phần mềm hệ thống cho phép xem ổ đĩa li nơi lưu trữ file Phần mềm hệ thống sử dụng định danh file (filelD) mệt

mức trừu tượng ổ đĩa Khi đó, thư viện {stdio C) cung cấp hàm đ?

viết biến nguyên datum vào thiết bị vỊ trí file h n

fp rin tf(filelD , "% d", datum ).

Mức trừu tượng sử dụng cho thao tác đọc/ghi băng từ phần mềm hệ thống triển khai trừu tượng cho thiết bị băng từ

Lập trình viên ứ n g d ụ n g

Lặp trìiứi cho H ĐH

load ( ) ;

seek ( ) ;

out ( ) ;

void w r i t e {

load( ) ;

seek ( ) out ( )

int fp ri n t f ( ) { write ( )

)

a) Kiểm soát trực tiếp

b) Trừu tượng qua write()

c) Trừu tượng qua fprintfO Hình 1.1 Trừu tượng hóa ổ đĩa cứng

Q trình trừu tượng hóa diễn nhiều cấp độ Phần cứng đư(Ợc điều khiển thông qua giao diện, phần mềm hệ thống mức cao có tlhể

tiếp tục trừu tượng hóa tài ngun thơng qua m ứ c giao diện Cíao

hơn Ví dụ trình bày minh họa rõ điều

1.1.4 Chia sẻ tài nguyên phần cứng

(12)

khòng gian theo thòi gian Trong chia se theo không eian, lài nguyên dưirc chia thành nhiều dơn vị riêng biệt Các tiến trình đồng thời cấp phât đoTi vị tài nguyên khác Đối với tiến trình, nhớ hay ổ

đĩí tài tìíỊuyỗn phân chia theo khơng gian.

Trong phương thức chia sè theo thời gian, lài nguyên không bị chia nhỏ nu dược cấp phát Irọn vẹn cho tiên trình khoảng thời gian Saj tài nguyên bị thu hồi cấp phát cho liền trình khác Ví dụ, tài ngivên theo kiểu vi xừ lý Bộ vi xử lý điều phối nhiều tiến trinh nắm giữ tài ngun khác Máy tính chi có

mot hộ vi xử lý, người dùng có cam giác nhiều chưoTig trinh khác

nhau dược ihực

Có hai khía cạnh quan trọng chia sẻ lài nguyên Thứ nhất, hệ thống

phải có kiểm sốt việc truy cập tài nguyên qua sách cấp

phái Thứ hai, hệ thống phải có khả lập tài nguyên chia sẻ tần thiết Để ngăn cản truy cập không họrp lệ, HĐH phải kiểm chứng tiến trình muốn sử dụng tài ngun có hợp lệ hay không Cô lập tài nguyên khả HĐỈI ngăn cản tiến trình truy cập trái phép đến tài nguyên dược cấp phát cho liến Irình khác Cơ chế cô lập nhớ cho phép hai chương trình tải đồng thời vào phần khác nhớ Cơ chế cô lập vi xử lý buộc tiến trình chia sẻ vi xử lý hệ thống mộl cách Không tiến trình thay đổi hay tham chiếu đến nội dung nhớ cấp phát cho tiến trình khác

Tuy nhiên, phần mềm hệ thống phải cho phép chương trình thực thi chia sẻ quyền truy cập tài nguyên cần thiết Giải vấn dề cô lập tài nguyên phát sinh vấn đề Giả sử người lập trình có ý định cho phép hai chương trình chạy chia sẻ tài nguyên (bôn cạnh

x ừ lý) HĐH phải đảm bảo chế cô lập, không ngăn cản việc

(13)

ỉ lình 1.2 minh họa khác biệt phần mềm hệ thốna HĐH Thứ nhất, phần mềm hệ thống cài đặt mô hình trừu tượng tài nguvên mà lập trinh viên sử dụng, HĐH trực tiếp thực trừu tượng hóa tài

nguyên vậl lý Thứ hai, HĐH cung cấp thao tác sở hoàn toàn đáng tin cậy để quản lý việc chia sẻ tài nguyên Hình 1.2 minh họa số giao diện thành phần kliác hệ thống Phần mềm ứng dụng sử dụng giao diện lập trình ứng dụng với phần mềm hệ thống, phần mềm hệ Ihống sử dụng giao diện với HĐH HĐH sử dụng giao diện phần mềm/phần cứng để tương tác với phần cứng (hệ thống phân cấp hknh vẽ chi mang tính tương đối, ví dụ chương trình ứng dụng hồn tồn có Ithể thi hành trực tiếp số thị phần cứng)

Giao diện vởi người dùng

Iphân mẽm ứng dí

Phần mẽm Hệ thống (Trừu tương mức caò" Giao diẽn HĐH "

HĐH (Trừu tưỢng tài

Giao diện phần cứng/phàn mềm

Phần cứng

Hình 1.2 Phần mềm HĐH

1.1.5 Các máy tính khơng có phần mềm hệ thống

(14)

('ác hãng chế tạo máy tính cá nhân bẳt đầu đưa chế trừu tượng lài nguyên \ào ROM (ví dụ thủ tục sở BIOS máy tính cá nhân IBM)

Sức mạnh ngày tăng máy lính cá nhân dẫn đến nhu cầu thực thi dồng thời nhiều tiến trình, điều đòi hỏi chế chia sẻ CPU Kết phần mềm hệ thống máy tính cá nhân triển khai chế

chia SC tài nguvèn Với máv tính tương thích IBM, bước dẫn đến

sự dời nhiều ỈIĐH Microsoft Windows thay cho MS-DOS

1.2 LỊCH Sử PHÁT TRIÉN CỦA HỆ ĐIỂU HÀNH

1 heo thống kê Từ điển Wikipedia, có khoảng 80 HĐII viết cho máy lính, chưa kể đến thiết bị khác Như nói, ÍỈĐH chương irình quản lý tài nguyên phần cứng, nhầm tạo môi trường cho phép người sử dụng thực thi chương trình ứng dụng Ngày nay, điện thoại tli động cần HDll (như Symbian OS, Windows CE, ), chí người ta cịn viết phiên Linux cho thiết bị giải trí sổ Xbox, Play Station, Tuy nhicn, cách dây khoảng nửa kỷ, khái niệm UĐH chưa đời Một máy tính khổng lồ viện nghiên cứu với nhiều chương trình tính tốn phức tạp (của thời đó) tiirợc điều phối khơng phải HDI l, mà "người điều hành" (operator)! Chính phát triển tốc độ xử lý, dung lượng nhớ yêu cầu thực ihi chương trình ngày phức tạp, đặt nhu cầu cần có chưong trỉnh lự động diều phối tài nguyên máy tính phần cứng phần mềm - từ dó mà HĐH đời

Chặng đường phát triển liĐH gắn liền với tiến hóa phần cửng máy tính, IIĐH phần mềm mức thấp, phụ Ihuộc nhiều vào kiiến Irúc máy tính Có ihể thấy bước tiến công nghệ chế tạo máy tíưih lại tạo bước đột phá cho HĐH,

CÀU HỎI ÔN TẬP

1 T rin h bày khác biệt giữ a phần m ềm hệ thống phần m ềm ứng dụng.

2 Khái niệm trừu tư ợ ng có ưu điểm gì?

3 T i phải có H Đ H nằm giữ a hệ thống phần m ềm phần cứng?

(15)

Chương 2

sử DỤNG HỆĐIÈU HÀNH

Chương trình bày thành phần mơi trường lập trình do H Đ H cung cấp theo quan điểm lập trình viên nhà thiết kế hệ thống Trước tiên, tìm hiểu mõ hình máy tính sử dụng HĐH hiện đại thõng qua việc mô tả tài nguyên nói chung tài nguyên file

nói riêng Tiếp theo, tìm hiểu quà trình hình thành tiến trình, bao gồm

các ví dụ H Đ H UNIX Phần cuối chương giới thiệu hai m õ hình luồng (thread) đối tượng (object).

2.1 MƠ HÌNH TỈNH TỐN TRỪU TƯỢNG

Người lập trình ứng dụng quan niệm máy tính thiết bị truy cập, biến đổi lưu trữ thông tin HĐH cung cấp mơi trường giúp người lập trình định nghĩa thao tác xử lý thông tin thông qua khái niệm đơn vị thực thi chương trình thành phần cần thiết trình tính tốn Trong HĐH đại, đơn v ijm h tốn nhỏ

Tiến trình (process) đơn vị lưu trữ thơng tin nhị Tập tin {file).

(16)

ihị trèn hình Phần mềm hệ thống cung cấp thêm nhiều mức độ trừu tượng hóa thơng tin file số, sở liệu HĐII cung cấp cửa sổ làm việc cho thiết bị hiển thị đầu/cuối tiến trình đ(7n vị lính tốn sở Tuy nhiên, với phần lớn HĐH, tiến trình file hai giao diện quan trọng

2.2 TÀI NGUYÊN

Thực thể coi tài nguyên thỏa mãn hai yêu cầu sau: • Tiến trình phải yêu cầu thực thể từ HĐH

• Tiến trình tạm thời ngừng hoạt động đến thực thể yêu cầu cấp phát

2.2.1 File

I'ile xem luồng byte nằm thiết bị lưu trữ xác định qua tên gọi Thông tin lưu trữ cách mở file (tạo m ột mô tả file với tên xác định), sau ghi khối byte lên Tưong lự, truy cập thơng tin lưu file cách mở file đọc khối byte HĐH chịu trách nhiệm cài đặt hệ thống file thiết bị lưu trữ cố định ổ đĩa, cách ánh xạ luồng byte vào khối lưu trữ thiết bi File phân biệt với tài nguyên khác vì:

1 File hình thức lưu trữ thông tin phổ biến máy tính HĐH thường lấy file làm sở để mơ hình hóa tài ngun khác File có mô tả cho phép HĐH ghi lại trạng sử dụng file, tình trạng file, thơng tin việc ánh xạ luồng byte file tới vị trí cụ thiể thiết bị lưu trữ

H ệ thống file theo chuẩn P O SIX

File POSIX tập họp byte có định danh BSD (Berkeley S<oftware Distribution) UNIX có giao diện file khác Giao diện hệ thống file P'OSIX chi cung cấp ììiột vài thao tác file bàn (Bảng 2.1)

Chương trình hồn chỉnh sau minh họa cách sử dụng file qua giao diện plOSIX Chương trình chép ký tự từ file có tên in_test tới file oiut_test cách mở file in_test để đọc byte sau ghi vào file

(17)

#include<stdio.h> #include<fcntl.h>

int main()

{

int inFile outFile;

char *inFileN am e = "in_test"; char ‘ outFileNam e = "out_test"; int len;

char c;

inFile = open(inFileN am e, _ R D N L Y ); outFile = open(outFieN am e, _ W R N L Y );

w hile (len = read((inFile, &c, 1) > 0)) II Vòng đọc đọc to àn file w rite(o u tF ile , &c, 1); close(inFile); II Đóng file

close(outFile);

}

Bảng 2.1 Lời gọi

hệ thống Miêu tả

open

Lời gọi open có tham số tên file (kẻ đường dẫn) mà chúng ta chuẩn bị đọc ghi thông tin Lời gọi có thêm tham số xác định chế độ truy cập file (tức file mờ theo chế độ đọc hay đọc/ghi) Khi file mờ, trỏ file trỏ vào byte trong luồng byte (nếu file rỗng, vị trí vị tri đẻ ghi byte đẩu tiẽn) Nếu thành công, lời gọi trả giá trị nguyên không âm, gọi là thẻ file Sau người sử dụng sử dụng thẻ file tham chiếu tới file. close Lời gọi close đóng file, sau đố giải phóng tài nguyên hệ thống

sử dụng để mô tả trạng thái file.

read

Lời gọi read có tham số thẻ file (giá trị open trả về), địa chỉ kích thước đệm Thơng thường, lời gọi khiến tiến trinh gọi bị phong tỏa hoàn thành trinh đọc Tuy nh iên, ngữ nghĩa thay đổi với hàm thích hợp hàm fcnti.

write Lời gọi write tương tự read write sử đụng đẻ ghi thõng tin lên file.

Iseek Lời gọi Iseek di chuyển trỏ đọc/ghi luồng byte tới vị trí xác định Sự di chuyển ảnh hưởng đến lệnh đọc ghi tiếp sau.

fcnti

Lời gọi fcnti (viết tắt file control) cho phép gửi yêu cầu điều khiển tới HĐH Vi dụ, thao tác đọc file thông thường phong tỏa tiến trinh gọi thực đọc file trống; khi

sử dụng fcnti, thao tác đọc file cố thể trả lại người gọi h àn h đ ộn g

(18)

2.2.2 Các tàl nguyên khác

rài nguyên phần cứng ihành phần trừu tượng mà chương trinh càn có irước thực ihi Neu yêu cầu tài nguyên mà chưa đáp ứng tiến Irinh khơng thổ tiếp tục thực thi mà bị phong tỏa có đủ tài nguyên cần thiết CPU tài nguyên mà tiến trình cần phái có muốn thực thi tiến trình yêu cầu cấp phát tài nguyên CPU niột cách lường minh, để thực thi, thiết phải có CPU c ấ p phát tài nmiyên CPU cho tiến trình chức quan trọng HĐH Bộ nhớ xem tài ngun Chương trình yêu cầu tham chiếu đến khu vực nhớ cần thiếl thực thi đưa yêu cầu cấp phát nhớ động, ố đĩa cứng tài ngun, lập trình viên muốn đọc thơng tin từ ổ đĩa trước đọc liệu, tiến trình phải cấp phát quyền sừ dụng đĩa HĐH có giao diện hỗ trợ chương trình truy cập số kicu tài nguyên khác, chẳng hạn CPU, nhớ, bàn phím hình hiển

thi Trong trirờng hợp giao diện với tất kiểu tài nguyên giống nhau, lập

trình viên sứ dụng tài nguyên dễ dàng nhiều so với trường họfp kiểu tài nguyên có giao diện khác UNIX áp dụng phương pháp Nói chung người thiết kế HĐH cố gắng cài đặl giao diện tài nguyên tương tự giao diện file, điều chưa chẳc thực sổ trưcyng hợp

Bộ phận quản lý nhớ HĐH UNIX cấp phát nhớ cho tiến trình nhu cầu nhớ cùa chương trình Có nhiều phương pháp quản lý nhớ Một vài phiên HĐH UNIX cịn có chế hoán chuyển: xu ất nhiều yêu cầu cấp phát CPU cấp phát nhớ (do nhiều tiến triình khác yêu cầu) HĐH sỗ thu hồi vùng nhớ vài tiến trình ( tirạng thái tiến trình hình ảnh tiến trình nhớ chuyển lưu lạm thiết bị lưu trữ ngoài) Các thao tác "trong suốt" V(JÌ tiến trình, người dùng thấy tốc độ hệ thiống suy giảm Trong HĐH UNIX, chế trừu tượng hóa áp diụng cho thiết bị Giao diện với thiết bị có lời gọi open, close, re;ad write, Iseek ioctl giống giao diện file Các thao tác read/write th a o lác Irên luồng byte, thao tác đọc từ thiết bị giống thao tác đ(ọc file

(19)

2.3 TIẾN TRÌNH

Tiến trinh chương trình thi hành Tiến trình (minh họa Hinh 2.1) bao gồm thành phần sau:

• Đoạn mã cần thực thi

• Dữ liệu để chương trình thực phép biến đổi

• Tài nguyên cần thiết để thực thi chương trình • Trạng thái thực thi tiến trình

Hình 2.1 Mơi trường rùa tiến trinh

Để tiến trinh thực thi cần có mơi tmịmg máy trừu tượng qn lý việc chia sẻ, lập tài ngun nhiều tiến trình Trạng thái tiến trình dùng để ánh xạ trạng thái môi trường vào trạng thái vật lý m áy tính Ví dụ trạng thái tiến trình thị đoạn mã chương trình thời thực Hình 2.1 minh họa mơi trưịng máy trừu tượng quản lý tiến trình tài nguyên, cấp phát tài ngun cho tiến trình có u cầu

Cần phân biệt khái niệm Chương trình Tiến trình. Chương trình

(20)

lọa Hình 2.2 Cụ thể hơn, niỗi tiến trình cỏ ghi trạng thái luu trữ

:ác thôri2, tin chi thị thực hiện, hay tài nguyên

iư ạc Í IĐll cấp phát 'ĩiến Irinh chi thực có đủ tài Iguyên cần thiết, riên trinh mơ lả qua mơ hình thực thi Cơ sở TỈnh bày tiến trinh chi mang tính miêu tả giới hạn chương trình chạy máy tính truyền thốnR

HĐM có cấu trúc liệu riêng để mơ tả tiến trình Khi tạo tiến TÌnh HĐH tạo ghi mơ tả tiến trình tương ứng (bản ghi gọi !à Khối diều khiển tiến trình) Klii liến triỉih kết thúc, cấu trúc liệu óng bị xóa bỏ Ban mơ tả tiến trình HĐH khác nhau, nhièn, thường có trường định danh tiến trình; định danh tài nguyên oấp phát cho tiến trinh; giá trị ghi CPU Tiến trình tham chiêu ihơng qua mơ tả

Hình 2.2 Chia sẻ đoạn mâ nhiều tiến trình

Tiến trình đcm vị tính tốn nhỏ máy tính, đơn vị sở chương trình ihực thi sử dụng để chia sẻ CPU Mặc dù đon vị lính tốn tiến trình, số HĐH đại cài đặt hai đơn vỊ línli tốn sở khác thread object Giữa thread object khơng có mối quan hệ tường minh Một sổ HĐH sử dụng thread để cài đặt object

2 3.1 Tạo tiến trình

(21)

nào? Cách thông thường để tạo tiến trình Ihực lời gọi hệ thống

spawn. Một trường họp riêng spawn fork - tạo tiến trình để thực chưong trình giống tiến trình thực thi Năm 1963, Conway đưa ba hàm FORK, JOIN QUIT Những hàm sử dụng để tạo thực lớp tiến trình Khơng giổng HĐH đại, tiến trình tạo nhờ lời gọi FORK truyền thống thực không gian địa chỉ, có nghĩa là, chúng chia sẻ chương trình tất thơng tin Khi thực hiện, tiến Irình tạo tham chiếu tới biến biến riêng Hành vi câu lệnh xác định sau:

• FORK(lable): Tạo tiến trình (xác định bời chương trình thực thi) Tiến trình nằm khơng gian địa với tiến trình gốc bắt đầu thực thi từ thị có nhãn label Tiến trình vừa thực lệnh FORK, vừa thực câu lệnh Ngay tiến trình tạo ra, hai tiến trình cha tồn thực thi

QUITO: Kết thúc tiến trình Tiến trình bị loại bở HĐI I xóa mơ tả tiến trình

JOIN(count): Kết họrp hai nhiều tiến trình thành Thực thi lệnh tương đương với thực thi đoạn mã sau;

count = count - 1; // Giảm biến count 1

if (counti=0) QUITO; II Kết thúc tiến trinh cuối cùng

trên biến dùng chung count Tại thời điểm tiến trình phép thực lệnh JOIN Ngay tiến trình bắt đầu thực lời gọi hệ thống JOIN, không tiến trình quyền sử dụng CPU tiến trình thực xong lời gọi hệ thống Đoạn mã thực phương pháp độc quyền truy xuất (sẽ trình bày chi tiết Chương 6) việc thực lệnh JOIN không bị ngắt chừng

(22)

['uy nhiên, lời gọi tạo tiến trình HĐH đại (gọi fork CrcatProcess, ) tạo tiến trình có khơng gian địa chi riêng Phươne pháp cũ cho phép chia sẻ mã chương trình liệu tiến trình với tiến trinh cha tiến trình anh em, chương trình quản lý nhớ cô lập nhớ tiến trình, 'l iến trình có khơng gian nhớ riêng, cho phép tách biệt hồn tồn tiến trình khác Quan trọng hơn, tiến trình phải có khả thực chương trình khác với chương trình tiến trình cha Nếu khơng tất tiến trình giống tiến trình (vì tiến trình khác dều dược khởi tạo gián tiếp trực tiếp từ tiến trình ban đầu) Do vậy, HĐH đại phải có kỳ thuật để tiến trinh thực thi chương Irình cụ thể

2.3.2 Cách sử dụng FOLK, JOIN, QUIT

Quan sát đoạn chương trình Hình 2.3 Tiến trình A (procA) tính tốn vài giá trị (trong <compute section A l>), sau cập nhật biến

đùng chung X Trong đó, tiến trinh B bắt đầu thực procB,

nhẽ B chưa phép ihực câu lệnh retrieve(x) tiến trình

A cập nhật xong X Tương tự, A không thực retrieve(y) biến

dùng chung y B hoàn thành update(y) Đoạn mã phức tạp, hai tiến irình thực vịng lặp tiến trình thực

\'ịng lặp nhanh tiến trình Khi giá trị trước X hoặc y bị

mâl, tiên trinh có tốc độ ihực thi nhanh thay đổi giá trị trước giá trị tiến trình đọc

procA O {

while(TRUE) (

<compute s e c t i o n Al>; u p d a te (x) ;

<compute s e c t i o n A2>; r e t r i e v e ( y ) ;

} }

procB O {

while(TRUE) { r e t r i e v e ( x ) ;

<compute s e c t i o n Bl>; u p d a t e ( y ) ;

<compute s e c t i o n B2>;

} }

(23)

Bằng hàm tạo nguyên thùy, hai tiến trinh khác A lì ;ó thể thực đồng thời phối hợp với để ngăn chặn \áệc thay dổi £Ìá trị biến dùng chung trước đọc Hình 2.4 minh họa việc thiết lập trinh tự thực đoạn mã lệnh Việc gộp A B vào chưtriig Irinh lủ kết việc sử dụng chung không gian cỉịa chi lệnh JOIN Vì lời gọi ,iệ thống FORK sử dụng nhãn để xác định vị trí khởi đầu liến trình inưi, nên phải sử dụng nhãn ngơn ngữ bậc cao

Hành vi tiến trình UNIX xác định đoạn mã chương trình, đoạn liệu đoạn ngăn xếp Đoạn mã chương trinh chứa chi thị biên dịch ngôn ngữ máy đoạn liệu chứa biến tĩrii,

đoạn ngăn xếp chứa ngăn xếp trình thực thi (được sử dụng để liru

trữ biến tạm thời) Nhiều file nguồn dịch, biên dịch liên kết thành file khả thi với tên mặc định a.oul (tất nhiên người lập trình đặt tên cho file khả thi) File khả thí xác định ba đoạn chương trình (íỉình 2.5) 'lYong đoạn mã chương trinh, địa chi lệnh rẽ nhánh v địa thủ tục nằm địa đoạn mã chương trình Dừ liệu tĩnh (biến khai báo chương trình C) nằm đoạn liệu định nghĩa file khả thi Hệ Ihống tạo đoạn liệu, khởi tạo giá Irị cho biến không gian lull trữ cho biến trình tiến trình thực thi Đoạn ngăn xếp dùng để cấp phát nhớ cho biến động CÚỈI chương trình

LO: count = 2; LO:

<coiipute s e c t i o n Al>; u p d a te ( x ) ;

FORK(L2);

<conpute s e c t i o n A2>; L l: JOIN(count);

r e t r i e v e ( ỵ ) ; goto LO;

L2: r e t r i e v e (X); L l ; <corrpute s e c t i o n Bl>; u p d a t e (y) ;

F0RK(L3); 1.2:

goto Ll;

L3: <conpute s e c t i o n B2> L3: QUITO;

count = 2;

<coirf)ute s e c t i o n Al>; u p d a te (x );

F0RK(L2); r e t r i e v e ( y ) ;

<corrpute s e c tio n Bl> update(y>;

F0RK(L3) JOIN(count); r e t r i e v e ( y ) ; goto LO;

<coirpute s e c t i o n A2>; goto LI;

<coiTpute s e c t i o n B2> QƠĨTO;

Hình 2.4 Sử dụng hàm nguyên thủy

(24)

khuôn dạng thành phần liệu mà tiến trinh sử dụng irình tliục chương trình Khi doạn mã cùa tiến trinh tải vào nhớ tiong hệ Ihống tạo doạn liệu đoạn ngán xếp tương ứng

l iến trình có dịnh danh PID (process identifier), cliất trỏ, biến có giá trị nguyên - trỏ vào hàng Irong báng mơ tả tiến trinh nằm nhân UNIX Mỗi hàng bảng ứng với mơ tả tiến trình Tiến trình sử dụng định danh tiến trình niình muốn tham chiếu tới làm tham số cho lời gọi tham chiếu Lệnh ps L)>JIX liệt kê tất liến trình hệ thống với định danh tiến trình định danh người sử dụng tạo tiến trinh

1 rong UNIX, ỉời gọi fork tạo tiến trình Tiến trình cha sử dụng

fork tạo tiến trinh có định danh xác định Đoạn chương trình, đoạn

liệu đoạn ngăn xếp tiến trình tiến trình cha Tiến trình truy cập tới tất file mà tiến trình cha mở Tiến trinh cha tiến trình thực khơng gian địa riêng Điều có nghĩa là, dù chúng có truy cập đến biến, liến trình tiến trình cha tham chiếu đến thơng tin riêng Các tiến trình khơng chia sè khơng gian địa nhớ, tiến trình cha tiến trình khơng thể giao liếp thông qua biến dùng chung Trong UNIX, hai tiến trình có thề truyền thơng với thơng qua file liệu Tạo tiến Irình UNIX trình bày kỹ phần sau

(25)

Ngồi hệ thống UNIX cịn cung cấp số lời gọi hệ Ihống, hạn execve cho phép tiến trình tải chương trình khác vào khóng gian địa

Execve (char ‘ path, char * argvQ, char ‘ envpũ);

Lời gọi hệ thống cho phép chương trình xác định qua đưịfng dẫn

path thay chương trình tiến trình thực Sau execve

thực xong, chương trình gọi khơng cịn tải Khơng có khái

niệm trở sau execve, vì chương trinh gọi khơng cịn nằm riiớ

Chưong trình sử dụng danh sách ứiam số argv và biến môi trường envp.

# in clu d e < sy s/w a ith > #defineN U lỊL O int main (void) {

if (fork() == OH r Đây ỉả c h n g trìn h */ e x e c v e (“ c h iic fN U L L NULL): e x it ( ) : r K ề t thúc*/

r Đ oạn mã c ủ a tiế n trìn h con*/

p rin tf (“ P r o c e s s [%đ]: P a r e n t in e x e c u tio n \n ", g e id 0): s ie e p ( ): '

if (wait (NULb) > 0) r Tien trin h c o n kềt th ú c V

prin tf (“ P r o c e s s [%d]: P a re n t d e te c ts te rm in a tin g child \n ” , getpidO );

p rin tf (“ P r o c e s s [Vod]: P a r e n t term inating A n” , getpidO )

}

(a) Tien trình cha

int main (void) {

r T iền trin h c o n th í h n h c h n g trìn h m ới (thay t h ẻ c h n g trìn h tiể n trin h h a ) "/

prinư (** Process [%d]; chitd ín execution w \ getpid 0);

s le e p 1): “ '

p rin tf P r o c e s s [%d]: ch!fd term in a tin g \n * \ g e id 0);

}

(b) Tiến trình con Hình 2.6 Tiến trình cha vâ con

Lời gọi hệ thống w ait (w aitpid được sử dụng rộng rãi hơn) cho phép tiến

trình cha xác định tiến trình hồn thành chưa Chi tiết trạng thái kết thúc tiến trình trả tiến trình cha thơng qua giá trị

tham chiếu cùa wait Tuy nhiên, tiến trình cha bị qua, khơng quan

tâm đến tiến trình Lời gọi w ait không phân biệt tiến trình con,

trong biến thể lời gọi w aitpid cho phép tiến trình cha đợi

(26)

cua tiến trinh bao gồm mơ lả tiến trình nhân IlĐIl dược giái phónR IIĐII báo hiệu cho tiến trình cha tiến trình kèt thúc, nhưníỉ HDl chưa xóa ban mơ tá tiến trình cho lới liến trình cha nhận lín hiệu Tiến trình cha thực lời gọi wait để ghi nhận biết tiến trình hồn thành

Chương trình cha Hình 2.6a minh họa cách sử dụng execve

wait Trong ví dụ này, tiến trinh cha tạo tiến trình lời gọi fork,

sau dó Ihực lời gọi printf và sleep Sau gọi fork, tiến trình thực

hiện execve để thay chương trình Hình 2.6a chương trình

Iroim Hình 2.6b Sau tiến trình thirc xong execve Irong lỉình 2.6a

ihì câu lệnh thực câu lệnh đầu liên Hình 2.6b

2.4 LUỒNG

Mơ hình luồng cho phép nhiều thực thể Ihực chưong trinh, đồng thời sử dụng chung file thiết bị Bên cạnh tiến trình, luồng kiổu đưn vị tính tốn sở mà HĐH điều phổi Trong mơ hình này, tiến irình thực thể mang tính trừu tượng, cấp phát kiểu tài nguyên khác nhau, nhiên khơng có thành phần thực chương trình H hrcad (dơi dược gọi tiểu trình) thực ihực chương trình sừ dụng tài nguyên

của tiến trình tương ửng 'ĩiến trình có nhiều luồng Các Lhread anh em thread nàm imột tiến trình, chia sẻ chương trình tài inguyèn tiến trình

Trong mơ hinh thread, uiến Irình theo kiểu ttruyền thống tiến Itrinh có

’thread thực

'chưoTìg trình

Các tluead clúa sé kliịng gian tièn tiiiili

M ịi ín rờ iis m áy tn n i tirợiig (ÍIĐ H )

(27)

Việc điều phối thread tương tự điều phổi tiến trình mơ hình truyền thống, thực chuyển đổi quyền điều khiển CPU thread cạ:ih Iranh Trong vài hệ thống, điều phối thread chương trình nguời dùng, nhiên nhiều trường hợp, điều phối tích họfp

trong HĐH số lượne thông tin trạng thái thread không nhiều, Jó

việc điều phối thread đơn giản điều phối tiến Irìrứi Động lực quan trọng việc sử dụng thread giảm thiểu thời gian chuyển ngữ cảnh giữu thread Điều cho phép chuyển quyền sử dụng CPU giÌ4’a đơn vị tính tốn sở (thread) với chi phí quản lý phụ trội thấp Tương tự, quản lý thread có mô tả thread ghi lại giá trị ghi nội dung ngăn xếp cho thread Vì tất thread tiến trình chia sè chương trình dùng chung, chương trình định nghĩa hành vi tiến trinh Lập trình viên dễ dàng xây dựng chương trình có nhiều thread tươn^ tác với để quản lý tài nguyên dùng chung cấp phát cho tiến trình cha

Các hệ thống giao diện đồ họa dạng cửa sổ thường sừ dụng mơ hình thread để quản lý nhiều cửa sổ hình Giả sử hệ thống cửa sổ xây dựng thơng qua tiến trình quản lý hình vật lý có nhiều thread (ứng với cửa sổ) Tất thread chạy đoạn mã, chia sè hình vật lý, thread quản lý cửa sổ riêng Trong kiểu hệ thống này, thời gian đáp ứng quan trọng, phải giảm thiểu thời gian chuyển ngữ cảnh cửa sổ

Ngày nay, thread chế quan Irọng lập trình song song Tuy thực khơng gian địa tiến trình, thread lại đơn vị tính tốn dộc lập điều phối kiểm sốt mức độ liến triển thread Các thread chia sè tài nguyên cấp phát cho tiến trình cha Thread cách đơn giản để lọc chia công việc tiến trình

Thread C:

(28)

ỉ)oạn mã sau minh họa cách thức chương trình tạo thread cách

sư lụng ihư viện, thread dược tạo qua hàm Chread_fork Sau sinh

ra, :hreacl dừng chung biến tĩnh với thread cha với thread anh e;n Các thread trì hỗn thread cha, ngược lại thông qua lời gọi c th e a rd yield.

#include <cthreads.h>

int main (int argc, char *argvQ)

{

t_handle = cthread fork (tChild, I);

/* A child thread is now executing the tChild function */ cthread _yield 0; I* Yield to another thread */

}

void tChild (int me)

{

r This function is executed by the child 7 cthread _yield 0; /* Yield to another thread */

2.5 ĐỐI TƯỢNG

(29)

Đối tưọTig chỉ phản ứng lại với thông điệp Sau tạo ra, đối tượng

có thể nhận thơng điệp từ đối tượng khác Đối tượne phản ứng lại cách thực tính tốn dừ liệu sau gửi thơng điệp trà lời Do hành vi đối tượng xác định thông qua định nghĩa lỏfp, lập trinh viên định nghĩa lóp cách thức khởi tạo đối tượng từ định nghĩa lớp Ngày nay, hướng đối tượng sử dụne tất ứng dụng Ngơn ngữ lập trình hưóng đổi tượng đưa mơ hình lập trình ứng dụng Bởi tính phổ biến mơ hình này, số HĐH cài đặt cách sử dụng đối tượng (HĐH Spring) Hướng đối tượng ngày có vai trị quan trọng HĐH đại

2.6 NHẬN XÉT

Đối với lập trình viên ứng dụng, HĐH mơi trường tính tốn cấu thành liến trình, file tài nguyên khác Tiến trình đem vị tính tốn nhỏ nhấl mà hệ thống điều phối được, biểu diễn thực thi chương trình File sử dụng để lưu trữ thông tin phiên làm việc Tất IIDH cho phép tổ chức file dạng luồng byte tuần tự, nhiên, số IIĐH cịn hỗ trợ nhiều loại file có cấu trúc phức lạp Các tài nguyên khác bao gồm CPU, nhớ, thiết bị thành phần mà tiến irình phải yêu cầu HĐH cung cấp Các tài nguyên, đặc biệt file hệ thống kiểm soát liến trinh phải yêu cầu cấp phái Irước thực thi Tiến trình có chương trinh xác định hành vi cùa mình, tài nguyên cần thiết để hoạt dộng liệu thao tác dó

CÂU HỎI ỊN TẬP

1 P hân biệt tiến trình với chương trình. 2 Định nghĩa tài nguyên hệ ỉhống.

(30)

Chương 3

CÁU TRÚC HỆ ĐIÈU HÀNHm

Chương trình bày quan điểm người lập trình ứng dụng vể HĐH và nghiên cứu HĐH góc độ người lập trình hệ thống Chương trình bày đặc điếm chung HĐH Cấc chương sau đề cập đến vấn đề cụ thể HĐH Trước tiên phân tích nhãn tố ảnh hưởng đến q trình thiết kế HĐH Sau đố trinh bày chức cơ bản H Đ H quản lỷ thiết bị, quản lỷ tài nguyên, quản lỷ nhớ, quản lý file Phần cuối trình bày cơng nghệ HĐH sử dụng để thực chức trên.

3.1 PHÂN TÍCH CÁC YÉU Tố TÁC ĐỘNG ĐÉN HỆ ĐIÈU HÀNH

HĐl ỉ trừu tượng hóa tài ngun máy lính, giúp lập trình viên phát triến chương trình ứng dụng, ví dụ tiến Irình trừu tượng hóa hoạt động vi xử lý; file Irừu lượng hóa thiết bị lưu trữ Trong q trình lính tốn, trạng thái tiến trình thay đổh liên tục sử dụng lài nguyên ỈĐl cung cấp hàm để tiến trình tạo kết Ihúc tiến trình khác; yêu cầu, sử dụng giải phóng tài nguyên; phối họp hành động với liến trinh có liên quan Ngồi ra, HĐH cần có khả quản lý cấp phát tài nguyên theo yêu cầu; hỗ trợ chia sẻ chia sẻ phải có phương thức kiếm sốt cho không gây nên cố Bên cạnh yêu cầu quản lý bản, yếu tố sau tác động đến trình thiết kế phát triển HĐH:

• Hiệu suất,

(31)

• 'l ính xác • Khả bảo trì • Thương mại

• Chuẩn l ỉệ thống mở

3.1.1 Hiệu suất

ở mức thấp nhất, HĐH cung cấp giao diện lập trình chế quản lý việc chia sẻ tài ngun Hai chức đóng vai trị quản lý vỉ không trực tiếp giải vấn đề người sử dụng, mà tạo môi Imờng giúp chương trình ứng dụng thực thi Chức quản lý tài nguyôn giúp sử dụng hệ thống dễ dàng hơn, lại địi hỏi chi phí phụ trội Ví dụ, giao diện trừu tượng giúp cho việc viết chương trình dễ dàng hơn, lại làm chậm tốc độ thực thi chương trình Ví dụ, tốc độ thực thao tác lên file chậm nhiều so với thao tác trực tiếp lên ổ đĩa cứng Khi đưa chức vào HĐH, phải đánh giá xem chức thêm vào có ảnh hưởng tới hiệu suất tổng thể hệ thống hay không Nhiều ràng buộc hiệu suất ngăn cản việc tích hợp thêm tính vào HĐH Do phần cứng ngày mạnh, nhà thiết kế tích hợp thêm nhiều chức vào HĐH bỏ qua vấn đề suy giảm hiệu suất Tích hợp ngơn ngừ lập trình bậc cao, đối tượng, chức nhớ ảo, đồ họa kết nối mạng vào HĐH minh chứng cho xu Khơng có tiêu chi rõ ràng để xác định ràng, liệu chức với chi phí cài đặt cao có nên đưa vào HĐH khơng Vấn đề giải dựa tình cụ thể phải phân lích chi tiết, liệu tính ưu việt chức có đáng với hiệu suất bị suy giảm hay không

3.1.2 Bảo vê an ninh9

(32)

c ô n g cụ để MĐH triển khai biện pháp an ninh người quản trị hệ

ihống thiết lập Biện pháp an ninh định nghĩcì phương pháp quản Iv việc truy cập tới tài nguyên Chẳne hạn, mộl thời điểm chi cho phép tiến Irình quyền mở file để ghi, cho phép nhiều tiến trình IIÍƯ tìle đề đọc Cơ chế bảo vệ file cài đặt biện pháp thơng qua chế khóa đọc khóa ghi file Cơ chế bảo vệ thường cài đặt hlĐll Tuy nhiên, có vẩn đề nảy sinh trình thiết kế; Nếu sau liĐH thiết lập biện pháp làm để ngăn cản phần mềm ứng dụng thay đổi nó? Đây vấn đề quan trọng HĐH đại Báo vệ tài nguyên !à lĩnh vực cụ ihể nghiên cứu HĐH (Chương 12) Tuy nhiên, vấn đề hiệu suất, tính quan trọng đến mức HĐH phải xét đến yếu tổ an ninh đưa tính vào HĐH Như trình bày mục 3,3, thực tế vấn đề giải phần cứng phải có khả phân biệt phần mềm HĐH phần mềm ứng dụng

3.1.3 Tính xác

Một số phần mềm coi "tin cậy", số phần mềm bị coi "không tin cậy" Phương pháp bảo vệ hệ thống phụ thuộc nhiều vào thao tác xác phần mềm HĐH "tin cậy" Mồi chức phải có yêu càu cụ thể Điều cho phép nhà thiết kế nói chức X, điều kiện Y có hoạt động xác khơng Ví dụ, khơng thể xác định điều phối có hoạt động xác khơng, khơng biết điều phối cần phải thực cơng việc Nói chung, khó đưa yêu cầu cụ thể cho phần mềm HĐH Có nhánh nghiên cứu HĐH thực hi ện đánh giá thiết kế triển khai thiết kế có đáp ứng u cầu hay khơng Những nhà thiết kế HĐH khác sử dụng cơng cụ hình thức để chứng minh phần mềm hệ thống đáng tin cậy Tính xác yếu tố hễt sức phải cân nhắc muốn tích hợp ứiêm chức vào HĐH

3.1.4 Khả bảo trì

Vào năm 1960, HĐH phức tạp đến mức khơng hiểu

(33)

khơng phát sinh lỗi mới'? MỘI nhóm nhà thiết kế có xu hướng cho phép sản phẩm dễ bảo trì, mà khơng ý nhiều đến yếu tố phồ dụng hiệu suất hệ thống

3.1.5 Thưcyng mại

Phần lĨTí HĐH ihương mại đại phát triển tảng HỈ)H đa chương trình chia sổ thời gian có kết hcTp khả kết nối mạng UNIX HDH chia sẻ thời gian phiên BSD UNIX hay AT&T tiếp tục hệ thống chia sẻ thời gian UNIX chiếm phần lớn thị phần mơi trường đa chương trình (máy tính cá nhân máy trạm) Mặt khác, mơi trưịng máy tính cá nhân bị ràng buộc sản phẩm Microsoft (trước DOS Microsoft Windows), quan hệ hợp tác chặt chẽ Microsoft với hãng IBM sản xuất phần cứng Ngày nay, cơng nghệ phần címg máy tính cá nhân hội tụ dần với công nghệ máy trạm phải hỗ trợ đa chương trình

trên máy tính cá nhân, vấn đề đặt dây là, UNIX hỗ trợ đa

chương trinh, thi HDH Windows lại sử dụng rộng rãi Điều khiến người lập Irình người sử dụng phải lựa chọn HĐH đa nhiệm tương thích với DOS, chấng hạn Windows XP hay Windows NT, liDH thương mại UNIX dó Có thể sau này, HĐH thương mại hội tụ vào giải pháp thị Irường tiếp tục hỗ trợ nhiều lỉĐH Trong hai trường họp, thị trường yếu tố thương mại

không phải yếu tố công nghệ nhân tố ảnh hưỏng

Sự thành cơng cúa HDM UNIX Microsoft Windows ảnh hưởng lớn đến trình phát triển ỉ IĐH nói chung Để thị trường chấp nhận, HDlỉ phải có ngơn ngữ lập trình (chương trình dịch, Irình kết nối tải), trình soạn thảo văn thư viện runlime Những mơi trường tíính tốn đại cỏ nhiều cơng cụ ứng dụng, tấl viết 1IĐH thông dụng Do đó, bên cạnh cải liến, HĐH phải cung cấp môi trường cho phép thực thi ứng dụng có sẵn

3.1.6 Chuẩn hệ thống mờ

(34)

mua tấl thiết bị máy tính từ nhà sản xuất Tuy nhiên, Iheo quy luật kinh tế, người dùng cuối lợi nhiều mua thiết hị thị trường mở cạnh tranh Nhu cầu sừ dụng thiết bị từ nhiều Iihà sản xuất khác động lực phát triển cơng nghệ Hệ thống mờ Điều cho phép doanh nghiệp sừ dụng máy tính, HĐH ứng dụng từ nhiều nhà sản xuất khác Hệ thống mờ tác động mạnh mẽ đến thành công doanh nghiệp sản xuất thiết bị công nghệ thông tin (CNTT) Mục tiêu kiến trúc hệ thống mở cho phép người dùng sau làm việc mạng máy tính với nhiều chủng loại thiết bị khác

Cần ba chiến lược hệ thống mở:

Tích hợp ứng dụng: Giao diện người dùng tất chương trình ứng dụng nên giống Các tiện ích quản lý thơng tin thiết bị cần chuẩn hóa cho tạo nên giao diện quán với người sử dụng

• Khả năng tưoTig thích: Các chương trình ứng dụng phải có khả

năng cài đặt nhiều tàng phần cứng khác

• K năng liên tác: Các tiện ích mơi trưịng mạng chuẩn

hóa cho đơn giản hóa việc truy cập tới máy tính khác

Mục tiêu chuẩn POSIX giải phần lớn khía cạnh hệ thống mờ Cụ thể, POSIX.l chuẩn hóa giao diện chương trình ứng dụng với HĐH khơng phải cách thức cài đặt UNIX Chuẩn khuyến khích hãng sản xuất khác sử dụng giao diện POSIX, ứng dụng viết có khả chạy nhiều HĐH UNIX khác Phần lớn HĐH UNIX tuân theo chuẩn

3.2 CÁC CHỨC NĂNG c BẢN

Bên cạnh nhiệm vụ trừu tượng hóa q trình tính tốn quản lý tài n.guyên hệ thống, HĐH cần quan tâm đến nhiều khía cạnh thực tế Chẳng hiạn hiệu suất, an ninh, tính xác, tính dễ bảo trì hệ thống Nói clhung, khơng thống HĐH cần có chức gì, tĩrong giáo trình trình bày chức thừa mhận rộng rãi, là: quản lý thiết bị; quản lý tiến trình tài nguyên; quản hý nhớ quản lý file

(35)

3.2.1 Quản lý thiết bị

Ngoại trừ CPU nhớ trong, phần lớn HĐH coi tất thiết bị khác giống Chưong trình quản lý thiết bị quy định cách thức sử dụng chủng loại thiết bị Nói chung, nhiệm vụ HĐH cấp phát, lập chia sẻ thiết bị theo sách định trước Thậm chí HĐH kliơng hỗ trợ chế độ đa chưong trình phải có trình quản lý thiết bị Trước kia, mã nguồn HĐH cung cấp phần cứng Nếu muốn kết nối thêm thiết bị vào máy tính, người sử dụng phải cài thêm driver thiết bị vào HĐH Nếu khơng có mã nguồn HĐH khơng thể biên dịch lại HĐH để gắn thêm driver Hạn chế thúc đẩy phát triển khả cấu hình lại driver HĐH đại Driver thiết bị biên dịch cài đặt thêm vào HĐH mà không cần dịch lại HĐH Tuy quản lý thiết bị phần quan trọng, lại tương đối đơn giản thiết kế HĐH Nội dung quản lý thiết bị trình bày Chương

3.2.2 Quản lý tiến trình tài nguyên

Tiến trinh đơn vị tính tốn sở, người lập trình định nghĩa, cịn tài ngun thành phần mơi trường tính tốn mà tiến trình cần có để thực thi Quản lý tiến trình quản lý tài nguyên nằm tách biệt, đa số HĐH kết họp lại module Trong Chương lấy mơ hình tiến trình HĐH UNIX minh họa cách thức định nghĩa mơi trường tính tốn HĐH UNIX cho phép tạo mới, hủy, phong tỏa thực thi tiến trình Tương tự, HĐH có hỗ trợ luồng, hay hướng đối tượng (W indow NT) cung cấp môi trường cho phép quản lý đơn vị tính tốn sở tương ứng Thành phần quản lý tài nguyên có trách nhiệm cấp phát tài nguyên (nếu có) cho tiến trình có nhu cầu

Bộ phận cho phép nhiều người dùng (hoặc nhiều liến trình) chia sẻ máy tính, cách cấp phát CPU luân phiên tiến trình để tiến

trình sử dụng CPU khoảng thời gian phù họp vấ n đề

(36)

tài nguyên; thực cấp phái sử dụng tài nguyên theo sách định trước Quản lý tiến trình tài nguyên trình bày Chưorng

3.2.3 Quản lý nhớ

Chương trình quản lý nhớ chịu trách nhiệm quản lý cấp phát tài ngun nhớ Tiến trình u cầu sử dụng nhớ theo định nghĩa chương trình tương ứng Bộ phận quàn lý nhớ cấp phát theo sách định trước Chia sẻ khiến vấn đề thiết kế phức tạp hơn, chương trình quản lý nhớ phải tích họp chế lập (để tiến trình khơng truy cập vào khơng gian nhớ tiến trình khác) lẫn chế cho phép tiến trình chia sẻ vùng nhớ chung

HĐH đại cịn có cơng nghệ nhớ ảo (mở rộng nhớ lớn giới hạn kích thước vật lý cách sừ dụng thêm thiết bị lưu trữ ngồi), cho phép tiến trình tham chiếu đến phần nhớ lưu ổ đĩa cứng thể nhớ Quản lý nhớ ảo phức tạp nhiều so với quản lý nhớ truyền thống, phải kết hợp sách quản lý nhớ chínli sách quản lý ổ đĩa cứng Các chương trình quản lý nhớ HĐH đại chí cịn cho phép tiến trình truy cập chia sẻ nhớ vật lý máy tính khác Xây dựng nên nhớ ảo dùng chung phân tán cách cho phép tiến trình trao đổi thơng điệp đường truyền kết nối máy tính Khi đó, chương trình quản lý nhớ kết họp chức nguyên thủy với chức kết nối mạng

3.2.4 Quản lý file

File trừu tượng hóa thiết bị lưu trữ Thơng tin nằm nhớ bị ghi đè khu vực nhớ cấp phát cho liến trình khác N eu muốn lưu trữ lâu dài, liệu cần ghi thiết bị lưu trữ (cỉhẳng hạn ổ đĩa) Như trình bày Irong Chương 2, nhu cầu trừu tượng hóa thao tác vào/ra thiết bị lưu trữ độmg lực phát triển HĐH Chính vậy, file xem giao diện Irừu tưiợng quan trọng HĐH

(37)

HĐH đại, hệ thống file cài đặt phân lán, cho phép tiến trình khơng chi truy cập liệu máy tính mà cịn truy cập tới liệu máy tính khác thơng qua mạng máy tính Chương ] trình bày cách thức sử dụng tiến trình tương tác với hệ thống file thơng qua giao diện lập trình ứng dụng

3.2.5 Kết hợp chức năng

Phần trình bày cách thức kết hợp chức HĐH Hình 3.1 minh họa quan hệ module (kết nối module quan hệ tương tác chúng) Bộ phận quản lý tiến trình tài ngun tạo nên tiến trình mơi trường thực thi CPU Bộ phận sử dụng giao diện trừu tượng nhiều thành phần quản lý tài nguyên khác cung cấp Khác với phận quản lý tài nguyên khác, quản lý nhớ xếp riêng phận độc lập HĐH Khi công nghệ nhớ ảo thông dụng, trách nhiệm phận quản lý nhớ tăng lên Quản lý file thực việc trừu tượng thao tác xuất/nhập thiết bị thành thao tác đơn giàn, dễ sử dụng Bộ phận quản lý thiết bị điều khiển thao tác đọc/ghi thiết bị lưu trữ thứ cấp cài đặt dạng trình điều khiển thiết bị

Hình 3.1 Quan hệ câc chức tổ chức HĐH

(38)

Irực tiếp vào nhớ chính, nên phận quản lý file có quan hệ chặt chẽ với phận quản lý nhớ, đặc biệt hệ thống hỗ trợ nhớ ảo Vì thế, hệ tliổng tách rời bốn module để cô lập chức năng, module gắn kết chặt chẽ với

3.3 CÁC PHƯƠNG THỨC CÀI ĐẶT HỆ ĐIÈU HÀMH

Các HĐH đại cài đặt theo ba chế sau:

• C hế độ vi xử lý (Processor m o d e ); Sử dụng bit chế độ để phân

biệt tiến trình HĐH hay tiến trình người dùng

Nhân HĐH (Kernel): Tất phận chủ yếu HĐH đặt nhân Kernel module phần mềm đáng tin cậy, hỗ trợ tất phần mềm khác hoạt động

• P hương thức yêu cầu dịch vụ hệ thống; vấn đề liên quan tới

cách thức tiến trình người sử dụng yêu cầu dịch vụ HĐH, cách gọi hàm hệ thống hay gửi thơng điệp tới tiến trình hệ thống

3.3.1 Chế độ vỉ xử lý

CPU đại thường có bit chế độ để xác định khả thực tiến trình CPU Bit thiết lập chế độ supervisor (giám sát toàn hệ thống) hay chế độ người dùng Trong chế độ giám sát, CPU thực thị Trong chế độ người dùng, CPU thực số thị định Những chi thị thực thi chế độ giám sát, gọi chi thị giám sát hay thị đặc quyền để phân biệt với thị thường

(39)

trình, trỏ đến nguồn tài nguyên Khi muốn thay đổi nội dung vùng nhớ hay ghi này, phải sử dụng thị load store đặc quyền

Các dịng máy tính cũ CPU Intel 8088/8086 khơng có bit chế độ Do vậy, chúng không phân biệt thị đặc quyền thị người dùng Kết cung cấp chế cô lập nhớ máy tính này, chương trình người dùng tải giá trị vào ghi sở đoạn (base segment register) Tiến trình truy xuất tới đoạn nhớ

Những CPU họ Intel sau có bit chế độ, vậy, có ihể thay đổi giá trị ghi sở bàng thị đặc quyền Các CPU Intel đời tương thích "ngược" với CPU dòng 8088/8086 để phần mềm viết dòng CPU cũ thực thi hệ thống

Hệ thống mở rộng bit chế độ để xác định vùng nhớ sử dụng CPU chế độ giám sát chế độ người dùng (Hình 3.2) Nếu bit chế độ chuyển sang chế độ giám sát tiến trình chiếm dụng CPU truy cập tới ô nhớ Nếu chế độ nguời dùng, tiến trình truy xuất tới vùng nhớ người dùng Như vậy, vùng nhớ có hai không gian không gian người dùng không gian bảo vệ

user application

Ché dộ ngưòi dùng

Ché độ giám sát

open {)

»

)

system call interface

open ( )

Càỉ ỡ ịt

hàm openO

retu rn

Hinh 3.2 Chế độ người dùng chế độ giám sát

(40)

(irap gọi thị yêu cầu chuyển sang chế độ giám sát) Chỉ thị thiết lập giá trị cho bit chế độ rẽ nhánh tới vị trí xác định vùng nhớ hệ thống Điều tương tự ngắt phần cứng Những thủ tục HĐH tải vào vùng nhớ hệ thống bảo vệ vi khơng thể nạp mã chương trình người dùng vào vùng nhớ Vì mã hệ thống nằm vùng nhớ hệ thống, nên có mã chương trình hệ thống gọi qua trap Sau hoàn thành xong lời gọi chế độ giám sát, HĐH thiết lập lại bit chế độ để quay trở chế độ ngưòd dùng

3.3.2 Nhân hệ điều hành (Kernel)

Có thể coi phận phần mềm hệ thống thực thi chế độ giám sát gọi kernel hay nhân HĐH Kernel phần mềm đáng tin cậy, có nghĩa thiết kế cài đặt, kernel triển khai chế bảo vệ mà phần mềm bị coi không đáng tin cậy (thực thi vùng nhớ người dùng), khòng thay đổi Tính xác hệ thống khơng thể dựa phần mờ rộng HĐH thực chế độ người dùng Vì vậy, thiết kế chức đó, vấn đề quan trọng đặt liệu có tích hợp chức kernel hay khơng Nếu đặt kernel, thực vùng nhó bảo vệ truy cập tới tồn kernel Nó phận khác kernel coi đáng tin cậy Nếu thực chế độ người dùng, chức không truy cập cấu trúc liệu kernel Chú ý rằng, dễ dàng đặt thủ tục kernel, chi phí để thực chế trap kiểm chứng gọi thủ tục cao

3.3.3 Yêu cầu dịch vụ từ hệ điều hành

Chương trình thực thi chế độ người dùng yêu cầu dịch vụ kernel bàng hai kỹ thuật sau:

• Lời gọi hệ thống

• Chuyển thơng điệp

(41)

cung cấp thư viện mà hàm thư viện ứng với lời gọi hệ thống cụ thể Khi chương trình ứng dụng gọi, chi thị trap thi hành để chu>ển CPU sang chế độ giám sát, sau phân nhánh tới hàm chức tưong ứng Khi hàm chức thực thi xong, hệ thống chuyển CPU sang chế độ người dùng trả lại quyền điều khiển cho tiến trình người dùng (tương tự việc quay trở lại sau kết thúc thủ tục bình thường)

t i - a p

Ịsend( , Ả, i 1

ịreceive( , B, ■■) ;Ị 1

is e n d /re c e iv e

Hình 3.3 Hai kỹ thuật việc phát triển HĐH

Trong giải pháp chuyển thơng điệp, tiến trình người dùng tạo thơng điệp A miêu tả dịch vụ cần Sau gửi thơng điệp cho tiến trinh HĐH thủ tục send Giống trap, thủ tục send kiểm tra thông điệp, chuyển CPU sang chế độ giám sát sau gửi thơng điệp đến tiến trình cài đặt chức u cầu Trong đó, tiến trình người dùng chờ kết thực dịch vụ hàm đợi thơng điệp receive Khi hồn tất dịch vụ, tiến trình HĐH gửi thơng điệp trả lời B cho tiến trình người dùng

(42)

thết kế mà kernel tập họp hàm chức tiến trình người dùng thíc chế độ giám sát

34 NHẬN XÉT

HĐH tạo môi trưịng cho ứng dụng thực thi Mơi trường quản lý việc tạo lập thực thi tiến trình, quản lý việc sừ dụng tài nguyên tiến irnh Bên cạnh yêu cầu bản, HĐH có vài yêu cầu đặc thù khác Mọi tính cài đặt phần mềm có chi phí qiiản lý làm giảm hiệu suất thao tác bản, phải cân nhắc giá trị chức suy giảm hiệu suất tổng thể Thiết kế va cài đặt chức phải tính tốn kỹ lưỡng, nhằm đảm bảo hiệu suất thống HĐH phải tạo môi trường chia sẻ an tồn, cho tiến trình khơng cản trở lẫn Phần mềm HĐH thường lớn phức tạp, phải hoạt động xác bảo trì Các yếu tố thương mại, khả tương thích, chuẩn mở tác động mạnh mẽ lên cơng nghệ HĐH HĐH đại tích họrp phận quản lý tiến trình tài ngun, ngồi cịn có phận quản lý tài ngun khác nhớ, file driver Các phận có quan hệ chặt chẽ với Các kỹ thuật triển khai HĐH đại thưòng dựa vài cơng nghệ CPU có bit chế độ xác định chế độ hoạt động chế độ giám sát chế độ người dùng Nếu CPU chế độ người dùng muốn thiết lập bit chế độ để chuyển sang chế độ giám sát, CPU phải thực thi thị trap để thiết lập bit chế độ sau rẽ nhánh tới mã HĐH Nếu chế độ giám sát, CPU chuyển sang chế độ người dùng mà không cần hành động đặc biệt Bộ phận HĐH thực thi chế độ giám sát gọi kernel Một số HĐH đại sử dụng giao diện lời gọi hệ thống để tiến trình người dùng thực thi đoạn mã HĐH chế độ giám sát Một số HĐH khác thiết kế kernel tiến trình hoạt động độc lập tưcmg tác với tiến trình ứng dụng bàng cách trao đổi thơng điệp

CÂU HỎI ƠN TẬP

1 Trình bày yếu tố tá c động lên phát triển H Đ H 2 T rình bày chức H Đ H

(43)

Chưcyng 4 TIÉN TRÌNH

Trong mày tinh thể hệ đầu tiên, thời điểm cụ thể có duy

nhất chương trình phép chạy i/à sử dụng toàn tài nguyên hệ

thống Cắc hệ thống máy tính đại ngày nay, mày tính cá nhân người sử dụng, cho phép tải nhiều chương trinh vào nhớ để thực thi thời Như vậy, cần có chế đan xen hoạt động chương trình khác Nhu cầu dẫn đến sự xuất khấi niệm tiến trinh - chương trinh trinh thực thi Tiến trinh đơn vị thực thi sở hệ thống chia sẻ thời gian thực Ngoài ra, H Đ H phải cố chế cấp phất tài nguyên cho tiến trinh theo chế định trước chế cho phép tiến trình trao đổi thông tin với nhau Như vậy, dù công việc chinh thực thi chương trình người dùng, H ĐH phải kiểm sốt nhiều cơng việc khác hệ thống Nội dung chương trình bày tiến trình, trạng thái tiến trình và cách thức H ĐH quản lý tiến trình.

4.1 TIÉN TRÌNH VÀ TRẠNG THÁI TIÉN TRÌNH

(44)

4.1.1 Tiến trình

Thơng thường, tiến trình được_2csni.là chương ưình hoạt động

Quá trinh Ihực thi tiến trinh diễn (tại thời điểm có Iihấl thị Irong tiến trình thực hiện)

B o o tJta p B tm v

B^Biu»0uP|

FjCPU

b d SỘBbdcúr

G a o d ié n v q Ị H Đ H

A L V

-* Kbõng («1 OS ■ £ U a | | «

i l

Q o ả n K X Ị Ỷ L o a d e r T t e i trip h > g a i Pị_ _

Tái k a -n c l -*■ ^ ^

K h : tạ c

-T hực th i tiế n Ĩ I J Ồ Ĩ ' ■ ' Đ iề u p h ô i-« P h u c v ụ X g ấ t

•c:

•c.“

c L_

r:J::

- A

':3

"

(a) (b)

Hình 4.1 Tiến trinh

Chương trình khác với tiến trình: Chương trình thực thể tĩnh (nội dung file exe, com ghi ổ đĩa cứng), tiến trình thực thể động, với trỏ chương trình mơ tả thị thực tài nguyên cấp phát trình thực thi Trong Hình 4.1,

ihấy có ba tiến trình Pị, Pj Pk Mỗi tiến trình nằm vị trí khác

irong nhớ trạng thái tiến trình biến đổi liên tục theo thời gian Mặc dù hai tiên trình có thê mơt chương trình (chung khơi mã), lứiưng chúng thực thi đọc lập với Bên cạnh đó, tiến trình sinh nhiều tiến trình (mục 4.2)

B ộ f»hó c h in h

D is p a tc h e r

Tiếnlrỉnh A

riểnkvihB

Tiếnirinh c

^ThanhgN^C

" ■ ' " ỉ o i o " ' - » S • M I lỉ»ỉ

mỉ 13W2 tmì im»iìm

99— í:90»

I M '* m*

»

»tt

(a) (b) (c)

Hình 4.2 Ba tiến trình A, B c Bộ nhớ

(45)

4.1.2 Trạng thái tiến trình

Trong Hình 4.2a, ba tiến trình A, B c lần lượt nằm vùng nhớ có

địa 5000, 8000 12000 Như vậy, luồng thực thi liến trình A

5000, 5001, 5002, (Hình 4.2b) Tương tự với B c, nhưng xen kẽ

hoạt động, tiến trình A, B, c và tiến trình HĐH diễn

Hình 4.3 Để thiết kế HĐH, cần mơ hình hóa hành vi tiến trình

T hờ i g ia n C hỉ thị T hờ i g ia n C hỉ thị

l 5000 27 Í2Ơ04

■> 5001 28 12005

3 500:

4 5003 29 ÌOO

> 5004 30 lOỈ

500S 31 lo:

-* H ết g iờ 32 103

7 100 33 104

8 lOỈ 34 ĩ 05

9 lo: 35 500ÍS

10 103 36 5007

11 ICM 37 5008

12 105 38 5009

13 8000 39 5010

u 8001 40 5011

15 8002 lỗ

17 8003

100

Y c ầ u v o /ra

42 43 100 101 lo:

Ỉ8 101 44 103

19 lo: ■45 1W

20 103 46 105

XOA 47 Ì2Ồ06

•>T 105 48 12007

13 12000 A9 12008

2A 12001 5D 12009

12002 51 I20Ỉ0

26 12003 5: 12011

H ết g iờ

H ết g iờ

H ết g iờ

Hình 4.3 Các tiến trình hoạt động xen kẽ

Tiến trinh liên tục thay đổi trạng thái q trình thực thi Tiến trình trạng thái sau:

• Tạo mới (New): Tiến trình vừa tạo

Đ a n g thực thi (Running): Các chi thị tiến trình thực thi

Phong tỏa (Blocked): Tiến trình chờ đợi kiện để chạy tiếp (ví dụ hồn tất thao tác vào/ra đợi lín hiệu)

sẵn sàng (Ready): Chờ để sử dụng CPU Đã có đủ tất

(46)

• Kết thúc (Exit): Hoàn tấl việc thực thi

Chú ý, tên trạng thái FiĐH khác Tuy nhiên, trạng thái nêu xuất hệ thống Tất nhiên, HĐH thực số lượng trạng thái lớn nhiều Chú ý rằng, hệ thống có CPU thời điểm, chi có tiến trình sử dụng CPU (đang thực ihi), Irong tiến trình lại trạng thái sẵn sàng hay chờ Lược đồ trạng thái minh họa Hình 4.4 Với tiến trinh minh họa

Hình 4.3, trình biến đổi trạng thái A, B c được minh họa

Hình 4.4b

€ •

TMnMntiA

Tiến ữinh B

TlểntlnhC [

OõpBCher

I ] 1 111 1 ỉ i i i l i i i i ỉ u 11 ] i 1 11 n 11J1 111 1J11 i i 11 n

i 1» lỉ » ỈS M » N »

(al

Thực thi B - S Ì n t t o g H PbMtgióâ

(b)

Hình 4.4 Mơ hình trạng thái tiến trinh

4.2 THAO TÁC TRÊN TIÉN TRÌNH

HĐH cần có chế tạo chấm dứt hoạt động tiến trình

4.2.1 Tạo tiến trình

Khi tiến trinh đưa vào hệ thống, HĐH tạo cấu trúc liệu (được trình bày phần sau) để quản lý tiến trinh Đồng thời, HĐH cấp phát m ột loạt tài nguyên cần thiết cho tiến trình hoạt động (chẳng hạn nhớ) C ó bốn ngun nhân tạo tiến trình:

• Trong hệ thống lơ, có cơng việc đưa vào, hệ thống tạo tiến trình để thực cơng việc

• Trong hệ thống tương tác, người dùng đăng nhập hệ thống

(47)

này cho phép tiến trình người dùng tiếp tục thực công việc mà không cần quan tâm tiến trình in thực xong

• Tiến trình tạo tiến trình

Việc tạo phương pháp đầu "trong suốt" với người dùng Phương pháp thứ cho phép người dùng tạo tiến trình cách linh hoạt Ví dụ, tiến trình phục vụ máy in tạo tiến trình phục vụ yêu cầu in

Thơng thường, tiến trình cần lượng tài nguyên định (thời gian sử dụng CPU, nhớ, file, thiết bị vào/ra) để thực công việc Khi tạo ra, tiến trình lấy tài nguyên trực tiếp từ HĐH, lấy tài nguyên từ tiến trình cha Tiến trình cha phân chia tài ngun cho tiến trình con, chia sẻ tài nguyên (như file, nhớ) với tiến trình Hạn chế tiến trình sử dụng phần tài nguyên tiến trình cha, ngăn cản việc tiến trình cố tình sinh nhiều tiến trình khiến hệ thống tải

Bên cạnh việc cấp phát tài ngun, tiến trình cha truyền tham số khởi tạo cho tiến trình

Khi tiến trình sinh tiến trình thì:

• Tiến trình cha tiếp tục chạy với tiến trình

• Tiến trình cha chờ vài tất tiến trình kết thúc

Xét khía cạnh khơng gian địa có hai trường hợp sau: • Tiến trình tiến trình cha

• Tiến trình tải chương trình khác để thực

(48)

thường gợi sau fork() để thay không gian nhớ chương Irình mới, tức tải file nhị phân vào nhớ (xóa bỏ nội dung nhớ chương trinh gọi execveO sau thực thi chương trình inới tải) Tiến trình cha tạo nhiều tiến trình khác, khơng làm tiến trình thực thi, sử dụng lời gọi wait() để tự loại khỏi hàng đợi sẵn sàng tiến trình kết thúc

4.2.2 Kết thúc tiến trình

Có nhiều nguyên nhân kết thúc tiến trình:

1 Tiến trình kết thúc thực xong thị cuối yêu cầu HĐH loại bỏ qua lời gọi hệ thống exit() Lúc tiến trình trả liệu cho tiến trình cha Tất tài nguyên tiến trình, bao gồm tài nguyên vật lý nhớ ảo, file mở, đệm vào/ra IIĐH thu hồi

2 Tiến trình bị tiến trình khác chấm dứt qua lời gọi hệ thống phù họp (chẳng hạn abort) Thường tiến trình cha quyền thực lời gọi để chấm dứt hoạt động tiến trình (nếu khơng người dùng kết thúc cơng việc người khác) Chú ý, tiến trình cha cần phải biết định danh tiến trình Chính thế, tạo m ột tiến trình mới, hệ thống trả định danh tiến trình cho tiến trình cha

Tiến trình cha kết thúc tiến trình lý sau đây: • Tiến trình chiếm dụng nhiều tài nguyên, vượt số lượng

cấp phát

• Nhiệm vụ tiến trình khơng cịn cần thiết

• Tiến trình cha kết thúc HĐH khơng cho phép tiến trình chạy tiếp

(49)

3 Tiến trình địi hỏi lượng nhớ lớn mà hệ thống không đáp ứng

4 Tiến trinh truy cập tới vùng nhớ bị cấm Tiến trình sử dụng tài ngun khơng hợp lệ

6 Tiến trình bị lỗi vào/ra, chẳng hạn đọc đĩa mềm hỏng

Để hình dung việc bất đầu kết thúc cùa tiến trình, xét HĐH UNIX Trong UNIX, tiến trinh kết thúc cách gọi exit tiến trình cha

có thể chờ kiện lời gọi hệ thống w ait w ait() trả cho tiến trình

cha định danh tiến trình kết thúc Nếu tiến Irình cha kết thúc tất tiến trình bị HĐH chấm dứt Nếu khơng có tiến trình cha, UNIX khơng biết phải báo trạng thái hoạt động tiến trình cho tiến trình

4.3 MƠ TẢ TIÉN TRÌNH

HĐH quản lý tài nguyên hệ thống (bộ nhớ, CPU, thiết bị vào/ra, ) cấp phát tiến trình u cầu Ví dụ, hệ thống đa chương trình Hình 4.5,

Pị thực thi nắm quyền kiểm soát hai thiết bị vào/ra; ? nằm

nhớ chế độ phong tỏa đợi thiếl bị vào/ra cấp p M t

cho Pi; P n trạng thái treo bị chuyển ổ đĩa cứng, vấn đề đặt

đây làm để HĐH quản lý tiến trình tài nguyên cấp phát?

Hình 4.5 Tiến trình tài nguyên 4.3.1 Khối điều khiển tiến trình (PCB)

(50)

và tiến trình Bàng quản lý nhớ ghi thông tin nhớ cấp phát cho liến tiình thuộc lính bảo vệ vùng nhớ (trình bày Chương 9) Bảng vào/ra chứa Ihông tin thiết bị Chẳng hạn, Ihiết bị rỗi hay cấp phái cho tiến trình Nếu thực thao tác vào/ra HĐH cần xác định trạng thái cùa thao tác Bảng file cung cấp thông tin vị tn' file ổ đĩa cứng Cuối bảng theo dõi tất tiến trình Bốn bảng có quan hệ chặt chẽ với

H i n h ả n h l i ế n t r i n h

Bộ nhớ

n«8tbị

riie Tt^nlrinh

aángtht^bịỊ

■*~\ B ã n g n e

Tlẻnvínhl

Ti^lrínhS T1^vfnh3

T i ế n t r i n h

H i n h n h t i ế n t r i n h

'nổnưỉifi

I ■ » T i ẻ n t r i n h n

Con trị tỉén trình

Định danh tiến trình Thanh ghi PC; ^ Các gláừị thánh ghl Các giới hạn nhớ Danh sách file tiến trình mở

sí‘-r

(b)

Hình 4.6 Các bảng quản lý HĐH

Tiến trình HĐH kiểm sốt thơng qua khối điều khiển tiến trình (Process Control Block - PCB) Khối chứa thông tin liên quan đến tiến trình sau đây:

• T rạ n g thái tiến trình (Process state): Có thể tạo mới, sẵn sàng,

đang chạy, phong tỏa hay kết thúc

• Con trỏ chương trình (program couter): Chứa địa thị

sẽ thực thi

• Các ghi CPU (CPU register): số lượng thanh ghi phụ

thuộc vào kiến trúc máy tính Các ghi cho phép người dùng truy cập (thanh ghi tích lũy, ghi chi mục, ghi ngăn xếp, ghi đa chức năng, ghi trạng thái hay gọi ghi cờ) ghi đặc biệt dùng cho q trình kiểm sốt HĐH

(51)

Thơng tin về điều phối CPU: Quyền ưu tiên tiến trình, trỏ đến hàng đợi điều phối tham số điều phối khác

Thơng tin quản nhó’: Giá trị ghi sở ghi giới hạn; bảng trang, bảng đoạn Thông tin phụ thuộc vào hệ thống quản lý nhớ (xem Chương 9)

Trạng thái v ào/ra: Danh sách thiết bị vào/ra tiến trinh sử dụng, danh sách file mở

4.3.2 Điều phối tiến trình

Mục tiêu đa nhiệm tận dụng tối đa CPU bàng cách cho phép nhiều tiến trình chạy đồng thời Trên hệ thống có CPU, hai tiến trình khơng thể thực thi lúc Nếu có nhiều tiến trình tiến trình phải đợi đến CPU rỗi Như vậy, có hai vấn đề đặt ra: Khi chuyển quyền sừ dụng CPU tiến trình (gọi tắt chuyển quyền) HĐH cần thực công việc gì?

g u e u » h M đ « r HAng dựi

s in ȏng

Hàng đợi ổ đĩa cứng

Hàng M m aphore

Hàng đợl thỉẮt b|

HAng ổ ọ i

t h l ỉt b|

PCS, PCB,

lìMHỊ

U i fogisters

• 1

tan

Admit Hàngdọis&nsAng

PCB, PC8 PCS

A Qlế

o l\ xuất*

i-i L SK2

xuất H —_ PC8, ta l • SKn xuáỉ hièn Dl&ostch Timeout

Đọi 8ự kiện

Đ ợ ỉ s ự k i ệ n

Hảngdọ^tvrUẬnn

H n n n : - Đọ<tựl<«nn

(b) Điều phốỉ tién trình (a) C ác h n g d ọ i

Hình 4.7 Các hàng đợi việc điều phối

(52)

danh sách PCB có trường trỏ, trị đến tiến trình kể tiếp hàng đợi 'I rong hệ thống có nhiều hàng đợi Khi chiếm dụng CPU, tiến trình thực thi khoảng thời gian trước kết thúc tạm dừng (do rấl nhiều nguyên nhân đợi kiện cụ thể, đợi yêu cầu vào/ra, cố tình truy cập vào vùng nhớ không phép, ) Trường hợp u cầu vào/ra, tiến trình có thê phái đợi thao tác thiết bị hồn thành Khi hệ thống có nhiều tiến trình, thiết bị trạng thái bận phải phục vụ nhiều yêu cầu Do đó, tiến trình buộc phải chờ thiết bị rỗi Danh sách tiến trình chờ đợi thiết bị vào/ra gọi hàng đợi thiết bị Mỗi thiết bị có hàng đợi riêng (Hình 4.7a)

Trong điều phối tiến trình, sơ đồ hàng đợi kỹ thuật biểu diễn thơng dụng (Hình 4.7b) la thấy có hai loại hàng đợi hàng đợi sẵn sàng hàng đợi thiết bị

Tiến trình đặt vào hàng đợi sẵn sàng Tiến trình chờ đọd quyền sử dụng CPU Khi thực thi, phải đợi kiộn đó, tiến trình chuyển sang hàng đợi ứng với kiện tương ứng C^ác kiện xảy là:

• Tiến trình u cầu thực vào/ra

• Tiến trinh tạo tiến trình chờ tiến trình kết thúc

• Tiến trình bị chiếm đoạt quyền sử dụng CPU (chẳng hạn ngắt) Sau tiến trình đưa trở lại hàng đợi sẵn sàng

Trong hai trưỊTig hợp đầu, tiến trình chuyển từ trạng thái thực thi samg trạng thái phong tỏa, sau lại quay trở lại trạng thái sẵn sàng Tiến trimh tiếp tục chuyển trạng thái cách tuần hoàn kết thủc Lúc tiến trình bị xóa khỏi tất hàng đợi PCB tiến trình tài nguyên cấp phát bị HĐH thu hồi

4.3.3 Bộ điều phổi

(53)

(thưÒTig ổ đĩa) để thực thi sau Bộ điều phối dài hạn lựa chọn I)ến trình từ nhóm để tải vào nhớ Bộ điều phối ngắn hạn cấp phát CPU cho tiến trình sẵn sàng thực thi nằm nhớ

Điểm khác biệt hai điều phối tần suất hoạt động Bộ điều phối ngắn hạn chọn tiến trình nắm quyền điều khiển CPU Một tiến trình chạy vài mili giây (ms) trước tạm dừng đợi >êu cầu vào/ra hoàn thành Thường lOOms, điều phối ngắn hạn chạy lần Vì chạy hai lần thực thi, nên điều phổi ngắn hạn cần phải chạy cực nhanh Nấu lần lOms để định xem tiến trình

được chạy tiếp khoảng lOOms 10/(100 + 10) s; 9%

CPU bị lãng phí cho cơng việc điều phối tiến trình Tần suất chạy điều phối dài hạn thấp nhiều, khoảng thời gian hai lần lạo hai tiến trình vài phút Bộ điều phối dài hạn phải kiếm soát số lưọng tiến trình nằm nhớ Nếu số lượng ổn định trung bình sổ lượng tiến trình tạo xấp xỉ số lượng tiến trình rời khỏi hệ thống Như vậy, điều phối dài hạn gọi có tiến trinh kết thúc Vì khoảng thời gian hai lần chạy dài nên điều phối dài hạn có nhiều thời gian lựa chọn tiến trình tải vào nhớ

Bộ điều phối dài hạn có vai trị quan trọng Thường tiến trình có đặc điểm hướng vào/ra hướng tính tốn Tiến trình hướng vào/ra thường tốn thời gian thực vào/ra thời gian tính tốn CPU Ngược lại, tiến trình hướng tính tốn có u cầu vào/ra mà phần lớn thời gian sử dụng CPU Một điều quan trọng điều phối dài hạn phải chọn nhóm hỗn họp tiến trình hướng vào/ra hướng tính tốn Hệ thống đạt hiệu suất cao có kết hợp tiến trình hướng vào/ra tiến trình hướng tính tốn

Một vài hệ thống khơng có điều phổi dài hạn, ví dụ, hệ thống chia sẻ thời gian thực Sự ổn định hệ thống phụ thuộc vào khả phần cứng tự điều chỉnh người dùng Nếu hiệu suất hệ thống giảm đến mức thấp, cách giải đơn giản vài người dùng thoát khỏi hệ thống

(54)

trìiih đưa trở lại nhớ để khôi phục việc thực thi Phương pháp

này gọi hốn chuyển trình bày Chương 11

4.3.4 Chuyển ngữ cảnh

Muốn chuyển đổi quyền sử dụng CPU tiến trình phải lưu lại trạng thái tiến trinh cũ nạp lại trạng thái tiến trình Quá trình dược gọi ià chuyển ngữ cảnh (context switch) Thời gian thực chuyển ngữ cảnh hồn tồn lãng phí, hệ thống khơng làm cơng việc hữu ích Tốc dộ chuyển ngữ cảnh phụ thuộc vào thông số máy tính như: tốc độ , nhớ, số lượng ghi phải lưu giữ liệu máy tính có thị (lặc biệt hỗ trợ chuyển ngữ cảnh (chẳng hạn, có thị để nạp lưu tất ghi lúc) hay không Thường tốc độ nằm khoảng lừ đến lOOOms

rhời gian chuyển ngữ cảnh phụ thuộc vào hỗ trợ từ phần cứng Ví dụ, số vi xử lý DECSYSTEM-20 có nhiều tập hợp ghi Chuyến ngừ cảnh đơn giản chuyển trỏ đến tập họrp ghi thời Tất nhiên, số lượng tiến trình lớn số tập ghi Ihì hệ thống phải lưu trữ giá trị ghi lên nhớ giống irèn HĐH phức lạp cơng việc chuyển ngữ cảnh nhiều Trong Chưcmg (Quản lý nhớ) ta thấy phải di chuyển nhiều liệu lần chuyển ngữ cảnh Ví dụ, khơng gian nhớ tiến trình tạ:i cần phải lưu giữ phải chuẩn bị khơng gian nhớ cho liễn trình Cách thức lưu giữ không gian phụ thuộc vào phương thức quàn lý nhớ cùa HĐH Nói chung, chuyển ngữ cảnh "nút cổ chai", làim giảm đáng kể hiệu suất hệ thống, nên người ta hay sử dụng luồng 4 L U Ồ N G

(55)

m a in ( ) {

C o m p u te P lC p i.tx t" ); P r in t C la s s L ís t( " d ỉs t.Ìe x r ) ;

)

m a i n ( ) {

C r e a t e ĩh r e a ( C o m p u le P I( ”p L t x t " )) ; C re a te T h re a đ (P rln tC la s s L l5 l('‘c l is l.le x t " ) ) ;

>

T h i gian

Hình 4.8 ưu điểm luồng

Xét chương trình viết bàng ngơn ngữ c trong Hình 4.8a, chưong

trình có hai hàm, ComputePI tính giá trị số 71 viết vào file pi.txt, PrintClassList in danh sách lóp từ file clist.txt Vì 71 giá trị vơ hạn, nên ComputePI chạy vô tận, PrintClassList không dùng Tuy nhiên, cải tiến chương trình Hình 4.8b, chương trình có hai thread chạy đồng thời, thread thứ chạy ComputePI thread thứ hai chạy PrintClassList Hai hàm luân phiên sứ dụng CPU Hình 4.8c, hàm thử khơng bị trì hỗn vĩnh viễn Qua ví dụ trên, thấy khái niệm luồng có nhiều ưu điểm, nên phần lớii HĐH đại cài đặt công nghệ luồng

Cấu trúc luồng:

(56)

cùig lúc Tuy nhiên, luồng mức người dùng có số mặt hạn chế Trong truờng hợp phần nhân (kernel) luồng nhất, luồng mi'c người dùng thực lời gọi hệ thống khiến toàn tác vụ phải đợi dến lời gọi hệ thống trả lại kết

Chúng ta so sánh mô hình luồng với mơ hình tiến trình Đối với đa tiến trình tiến trình hoạt động độc lập với nhau, mồi tiến trinh có trỏ chương trình, hệ thống ngăn xếp không gian địa riêng Kiểu tổ chức nàv có lợi cơng việc tiến trình thực độc lập với Ví dụ, hệ thống có mộl CPU, tiến trình file server bị dừng hoạt động (trạng thái

phong tỏa) đợi đọc đĩa Hiệu suất hệ thống cải thiện

các tiến trinh file server khác làm việc tiến trình bị phong tỏa tiến trình có chương trình

Xét nhiều mặt, hoạt động luồng giống tiến trình Luồng ỏ trạng thái sẵn sàng, phong tỏa, thực thi kết thúc, Cíiống tiến trình, luồng chia sẻ CPU thời điểm niột luồng dược quyền thực thi Luồng tiến trinh Ihực thi luồng có ngăn xếp, trỏ đếm chương trình riêng Luồng tạo luồng con, bị phong tỏa tạm dừng đợi ihực thao tác vào/ra; luồng trạng thái phong tỏa luồng khác phép thực thi Tuy nhiên, điểm khác biệt luồng có quan hệ với Vì luồng truy cập đến địa khơng gian địa tiến trình, nên đọc hay viết vào ngăn xếp cúa luồng khác Do đó, khơng có chế bảo vệ ngăn cách luồng thực chế không cần thiết

(57)

Để minh họa ưu điểm thực thi đồng thời mơ hình luồng, giả sử cần phải viết file server hệ thống không hỗ trợ luồng, server phải hồn thành xong yêu cầu phục vụ yêu cầu Nếu yêu cầu thứ phải đợi để đọc ổ đĩa cứng CPU hồn tồn lãng phí khoảng thời gian Vì vậy, số u cầu thực Irung bình tính giây nhiều so với trường họp đa luồng xư lý song song Nếu khơng có cơng nghệ luồng, người thiết kế hệ thống phải tìm cách giảm thiểu việc suy giảm hiệu suất cách bắt chước cấu trúc hoạt động song song hệ thổng luồng thông qua việc sử dụng tiến trinh truyền thống Khi cấu trúc chương trình trở nên phức tạp

m

l *rr

spmce

KcnufI

S|»rr (D ệ) C) ^

(c) Giải p h p kết họ-p (a) L u n g m ứ c n g i d ù n g (b) Luồng m ứ c nhản

Hình 4.9 Luồng ở mức khác nhau

(58)

tluợc thụrc cách độc lập nên Ihời gian tiến trình b nhận 1(0 lần thời gian mà liến trình a nhận Khơng thế, tiến trinh b CC thê dồng thời gọi 100 lời gọi hệ thống, nhiều nhiều so với trường hcp chinh tiển trình chạy Irên hệ thống hồ trợ luồng mức người dùng

rronii số hệ thống (HĐH Solaris 2), người ta cài đặt hai chế

Ik' trợ luồng đế nâng cao hiệu suất (1 ỉình 4.9c)

4 CÀI ĐẬT HỆ ĐIỀU HÀNH

Hoạt động HĐH giống hoạt động phần mềm khác, túc chương trình chạy CPU, HĐH phải chia sẻ quyền sử dụng CPU với tiến trình khác Tuy nhiên, HĐH tập hợp tiến trình tiến trình? Hình 4.10 minh họa phương pháp cài đãt ÍIĐI Ỉ

Pi « ■ « p

(a>

<•

Kenel

|b)

Pi Pi ■ * P||

P r«ceu Swỉtchỉ]i{g Fnjictỉ«iu

(c)

Pl Pl Pit

Oft OS ot

Km -(ãMB

Prôeeu SvtcUng Functitiu

U M tlM ỉan PTMtMM-SUtC

UfanwIlM ProccMC««trd

lifbnMdoa

UwrBadi MraltUMr

AOúnmS^

< Pn»gni DbU)

K ente lS b krk

, Prorm CoMrol

Bkick

Vùng nhở chung

( d )

Hìoh 4.10 Các phương pháp cài đặt HĐH

Kernel không tiến trình cả

(59)

HĐH thực chức cần thiết, sau khơi phục hoạt động tiến trình bị ngắt Khái niệm tiến trình áp dụng với chương trình người dùng Mã HĐH thực thi riêng biệt CPU chế độ giám sát

H Đ H thực tỉiỉ tiến trình người dùng

Một phương pháp áp dụng phổ biến HĐH dịng máy tính nhỏ siêu nhỏ thực thi tất phần mềm HĐH ngữ cảnh tiến trình người dùng HĐH bao gồm thường trình, người sỉr dụng gọi nhằm thực công việc Thường trình chạy khơng gian nhớ tiến trình người dùng minh họa Hình 4.10b

Hình 4.10d minh họa cấu trúc tiến trình phưong pháp Bên cạnh vùng mã liệu thơng thường, tiến trình có vùng nhớ chung nơi đặt đoạn mã thuộc HĐH Các đoạn mã sử dụng chung nhiều tiến trình hệ thống

(60)

chiơng trình HĐH Chương trình HĐH Ihực thi tất tiến trình đồi giống

H Đ II dựa tiến trình

Phương pháp thứ minh họa Hình 4.10c HĐH triển khii thơng qua nhóm tiến trình hệ thống, tiến trình hệ thống cà dặt chức HĐH sở thực thi chế độ giám sát u điém phương pháp tính module, khiến thành phần HDH có giao diện tường minh với

Vi nltâiĩ (Microkernel)

Phương pháp áp dụng Windows NT Microkernel mót hạt nhân (rất nhỏ) HĐH, cung cấp chức sở (lời gọi hệ thống) Các dịch vụ khác (do kernel cung cấp) chương trình (gọi server) thực thi không gian người sừ dụng Ví dụ, Microkernel cung cấp dịch vụ quản lý không gian địa chỉ, quản lý luồng, truyền thông liên tiến trình, khơng cung cấp dịch vụ kết nối mạng hay hiển thị thông tin hình, u điểm giải pháp them dịch vụ không cần phải thay dổi kernel Tính an ninh hệ thống tăng cường phần lớn thao tác thực thi chế độ người dùng chế độ giám sát

4.6 NHẬN XÉT

(61)

bò tiến trinh, i.uồng - đơn vị quyền sử dụng CPU dùng chung phần mã, phần dũ' liệu số tài nguyên hệ thống khác với luồng ngang hàng, tiến trình (hay tác vụ)

CÂU HỎI ÔN TẬP 1 Đ ịn h n g hĩa tiến trình trạng thái tiến trình.

(62)

Chương 5

ĐIÉU PHỐI TIÉN TRÌNH

Điều phối tiến trình lập kế hoạch cấp phát quyền sứ dụng CPU Mục đích sử dụng máy tính định sách điều phối Chú ỷ phân biệt

chế định cách thức cấp phát CPU với sách xác định thứ

tự "được sử dụng CPU" tiến trình Chương trình bày chế điều phối hai lóp sách: độc quyền sử dụng (nonpreemptive) không độc quyền sử dụng (preemptive) Thuật tốn độc cho phép tiến trình chiếm dụng C PU hoàn thành cõng việc Trong thuật tốn khơng độc quyền, tiến trình chi sử dụng CPU khoảng thời gian hết thời gian, điều phổi chuyến quyền sử dụng CPU sang cho tiến trình khác cho dù tiến trình chạy chưa hồn thành cơng việc Chúng ta sê trình bày số chế sử dụng H Đ H hiện đại phương thức cài đặt chúng.

5.1 Cơ CHÉ ĐIỀU PHỐI

1'rong IIĐH đa chương trinh, nhiều tiến trình tải vào nhớ chia sẻ CPU Do vậy, cần phương thức để HĐM tiến trinh ứng dụng chia sẻ CPU Ngoài ra, thời gian thực vào/ra lớn nhiều thời gian tiến trình sử dụng CPU, hệ thống đa chưong trình, tiến trình thực vào/ra nên nhường quyền sử dụng CPU cho tiến trình khác Cơ chế điều phối phận quản lý tiến trình, chịu trách nhiệm loại bỏ tiến trình chiếm giữ CPU sau lựa chọn theo sách định trước tiến trình trạng thái sẵn sàng để thực thi

5.1.1 Bộ điều phối tiến trình

(63)

sử dụng CPU (chuyển sang trạng thái sẵn sàng phong tỏa) tiến trình khác trạng thái sẵn sàng cấp phát CPU (tiến trình chuyển sang trạng thái thực thi) Phương pháp điều phối xác định (1) thời điểm tiến trinh không tiếp tục sừ dụng CPU (2) tiến trình cấp phát CPU Cơ chế điều phối định cách thức quản lý tiến Irình xác định thời điểm điều phối CPU cách thức cấp phál/thu hồi CPU

Hình 5.1 minh họa ba thành phần điều phối Enqueuer (bộ phận đưa tiến trình vào hàng đợi), Dispatcher (bộ điều vận) Context Switcher (bộ chuyển ngữ cảnh) Khi tiến trình chuyển sang trạng thái sẵn sàng, khối PCB tương ứng cập nhật đồng thời Enqueuer đặt trò để khối PCB nằm danh sách tiến trình sẵn sàng sử dụng CPU Danh sách cấu trúc liệu quản lý tiến trinh, thường cài đặt dạng hàng đợi trỏ, Irỏ "chỉ" tới PCB tiến trìnli trạng thái sẵn sàng Enqueuer tính số ưu tiên để cấp phát CPU cho tiến trình tiến trình đưa vào trạng thái sẵn sàng, số UIỈ tiên xác định định tiến trình bị loại khỏi danh sách sẵn sàng

Khi chuyển quyền sử dụng CPU hai tiến trình, chuyển ngữ cảnh lưu lại giá trị ghi CPU vào khổi PCB tiến trình cũ, Bộ phận gọi phận chuyển ngữ cảnh xác định thời điểm chuyển

quyền sử dụng CPU có hai chế tình nguyện (tiến trình

thực thi tự động giải phóng CPU cách gọi chuyển ngữ cảnh)

khơng tình nguyện (ngắt khiến chương trình thực thi phải từ bỏ quyền sừ dụng CPU - trình xử lý ngắt thực chuyển ngữ cảnh)

T ỉrạng tb iỉ kbảc

(64)

Ngay sau đó, điều vận Ihực thi (ngữ cành điều vận khôi phục) đế lựa chọn cấp phát CPU cho tiến trình sẵn sàng (bằng cách chuyển ngữ cảnh sang tiến trinh lựa chọn) Hình 5.2 minh họa luồng tiến trình hệ thống có CPU Tiến trình tự nguyện giãi phóng CPU yêu cầu tài nguyên (chuyển quyền điều khiển cho quản lý lài nguyên điều phối) Tiến trinh tự động giải phóng bị cưỡng đoạt quyền sừ dụng CPU Tiến trình quay trạng thái sẵn sàng tự nguyện (hoặc bị cưỡng ép) giải phóng CPU Nếu tiến trìnli giãi phóng CPU phải đợi tài ngun, tiến trình khơng quyền sử dụng CPU có đủ tài nguyên cần thiết Sau đó, tiến trình chuyển sang trạng thái sẵn sàng quay hàng đợi sẵn sàng

L ệ n h yield tìn h n g u y ệ n h a y k h ô n g tìn h n g u y ệ n

Tiên tr ìn h -•

mói K e f t h ủ c

^^Thựcthr

Đ v ợ c cap p h i l tài Dgayêá Y ê a cầu lài Dguyêa

'*Phong tàa”

'hì nguyêiỉ]

Hình 5.2 Luồng đi tiến trinh hệ thống 5.1.2 Lưu lại ngữ cảnh tiến trình

Rõ ràng lần chuyển quyền sử dụng CPU hai tiến trình xuất hai lần chuyển ngữ cảnh Đầu tiên, ngữ cảnh tiến trình chạy đư<ợc lưu lại để khơi phục ngữ cảnh điều vận Kế tiếp lưu lại ngữ cảnh điều vận tải ngữ cảnh tiến trình Cơng việc chuyển ngữ cảnh ảnh hưởng lớn tới hiệu suất hệ thống, phải lưu lại giá trị nhiều

thainh ghi thị LOAD STORE Do đó, n số lượng

thainh ghi chung, m là số lượng ghi trạng thái, b là số lượng thị cần

th iết để lưu lại ghi K thời gian cần thiết để lưu lại ghii việc chuyển ngữ cảnh (n + m) X b X K đom vỊ thời gian

(65)

mỗi ghi 32 bit Như vậy, để luTi giá trị ghi cần X 50ns Giả sử hệ thống có 32 ghi đa mục dích ghi trạng thái, tổng thời gian để lun ghi 40 X X 50ns = 4ms cầ n thêm 4ms để tải trạng thái mộl tiến trình khác vào CPU (ở bỏ qua thời gian chạy điều vận) Như vậy, thời gian chuyển ngữ cảnh lớn 8ms Với xử lý 200MHZ, thị thực thi khoảng lOns, 8ms, CPU thực 800 thị có ích

Để giảm thời gian chuyển ngừ cảnh, số kiến trúc máy tính có nhiều ghi, ghi ứng với ưiột tiến trình Thời gian chuyển ngừ cảnh giảm xuống cần lựa chọn ghi đưa sử dụng (không cần lưu lại giá trị ihanh ghi)

5.1.3 Chia sẻ tự nguyện CPU

Khi điều phối hoạt động? Cách đơn giản tiến trình định kỳ gọi điều phối, tình nguyện từ bỏ quyền sử dụng CPU Một số phần cứng có thị yield cho phép tiến trinh làm việc Chi thị niày tưưng lự lời gọi thủ tục, phải lưu lại địa chi thị thực thi sau rỗ nhánh tới mộl địa khác Điểm khác biệt địa thị không lim ngăn xếp liến trình mà lưu tro>ng vùng nhớ thiết kế sẵn Cũng có tương đồng hàm yield Irìinh xứ lý ngắt Chỉ thị yield cài đặt sau:

yield(r, s)

{

memory[r] = PC: PC = m em ory[s];

}

(66)

định Sau yield thực thi, memory[r] chứa địa chỉ thị đứng sau yielc tiến trinh Pi (để sau khơi phục) ghi PC chứa

địa (hỉ thị tiến trình P2 thực thi Quyền

sử ding CPU chuyển từ tiến trình gọi yield sang tiến trình mà địa ;hỉ thị cuối thực thi lưu memory[s] Giả sử memory[s]

chức địa thị cuối thực thi P2, tiến trình Pi có thể thực thi yield(‘ , s) để chuyển quyền điều khiển cho P2 tương tự sau P2 có thể dùng yield(*,r) để khởi động lại Pi.

NJeu có nhiều tiến trình trạng thái sẵn sàng sử dụng CPU, P2

dóng vai trị điều phối với định danh scheduler Khi tiến trình thực yield(*, scheduler) không muốn sử dụng CPU Sau điều phổ) lựa chọn tiến trình s trạng thái sẵn sàng gọi yield(*, s) Dạng cộng tác (la chương trình phát triển dịng máy cá nhân Xerox Altc Nhiều nhân viên Xerox chuyển việc sang Apple nên công nghệ cộng tác đưa vào phiên HĐH Macintosh

Tuy nhiên, yield có nhược điểm tiến trình khơng tự nguyện "hợỊi tác" với tiến trình khác Nếu tiến trình khơng gọi yield khơng liến trình sử dụng CPU tiến trình sử dụng CPU thực vào/ra Điều trở nên khó khăn tiến trình thực thi lại nằm vịng lặp vơ hạn khơng thực vào/ra Khi tiến trình khơng giải phóng CPU kết tiến trinh khác phải đợi vô hạn Do đó, hệ thống phải có khả định kỳ ngắt tiến trình chạ) , tức hình thức chia sẻ khơng tình nguyện

5.1.4 Chia sẻ CPU khơng tình nguyện

Ngắt định kỳ ngưng q trình thực thi tiến trình, nói cách khác "ép" tiến trình thực thi thị yield Điều thực nhờ định thời bên hệ thống tạo ngắt theo chu kỳ Thiết bị sử dụng sau; người lập trình hệ thống thiết lập khoảng chu kỳ thời gian cho thiết bị Cứ lần hết chu kỳ thời gian, thiết bị tạo cảnh báo dạng ngắt Hình 5.3 minh họa chế đơn giản định thời - thủ tục IntervalTimer Mỗi lần đồng hồ thời gian thực (đồng hồ thạch anh máy tính) thực xong T lần dao động chu kỳ tinh thể thạch anh (T xung), thiết bị phần cứng định thời kết thúc thao tác Biến yêu cầu ngắt InterruptRequest nhận giá trị TRUE tương ứng với phần cứng

(67)

thiết lập cờ yêu cầu ngắt Kết cử hết K*T xung (đơn vị thời gian dao

động tinh thể thạch anh), cờ yêu cầu ngắt thiết lập Khoảng thịi

gian K (số xung) thiết lập nhờ hàm Setlnterval minh họa Irong

Hình 5.3 Bộ định thời theo kiểu gọi định thời lập trình Ngắt sinh sau K xung khiến điều khiển đồng hồ gọi

điều khiển ngắt, về mặt chức logic, thị tương đưcmg yeild

Trình điều khiển thiết bị ngắt thời gian gọi điều phối Tiến trình

thực thi khơng gọi yeild, hệ thống bảo đảm điều phối chạy sau

mỗi K xung Bộ điều phối sử dụng chế chia sẻ CPU khơng tình nguyện cịn gọi điều phối không độc quyền (preemptive)

I n t e r v a l T i m e r () { ĩnterruptcount— ;

if (InterruptCoưnt <= 0) { InterruptRequest = TRUE; InterruptCount = K;

^ Set Interval (programniableValue) {

K = programmableValue: InterruptCount = K;

}

Hình 5.3 IntervalTimer 5.1.5 Hiệu suất

(68)

điều vận chọn tiến trình thực thi kế tiếp? Tiêu chí sử dụng trình lựa chọn? Tiến trình mãi bị "bỏ quên" hàng đợi không sử dụng CPU để hồn thành cơng việc mình, tưcmg gọi "chết đói" Nếu tiến trinh lựa chọn sẵn sàng, thời gian thực thi thực tiến trình liệm cận với tốc độ phần cứng PhuOTg pháp sách điều phối định tiêu chí lựa chọn tiến trình thực thi Các chế trình bày sử dụng để cài đặt niột phương pháp người quản trị người thiết kế HĐH lựa chọn Có phương pháp tập trung vào hiệu suất hệ thống tổng thể, có phương pháp mong muốn chia sẻ công CPU tiến trình, chi có phương pháp cố gắng tối ưu hiệu suất lớp tiến trinh cụ thể Nói chung, hiệu suất định lựa chọn phương pháp điều phối phù họp

5.2 CÁC PHƯƠNG PHÁP ĐIÈU PHỐI

Làm để điều phối cấp phát CPU cho tiến trình theo mục tiêu cụ thể? Có nên cấp phát dựa theo độ ưu tiên khơng? Có nên cấp phát cơng khơng? Có nên gán độ ưu tiên cao cho tiến trình có thời gian llụrc thi ngắn (hoặc dài) khơng? Những phưong pháp nghiên cứu nhiều năm tương tự toán điều phối ngành vận trù, chẳng hạn cách thức phục vụ khách hàng ngân hàng Ví dụ hệ thống thời gian thực, tiến trình phải cấp phát CPU sớm để kết thúc cơng việc trước mốc thời gian cụ thể Trong hệ thống chia sé thời gian, mục tiêu điều phối phân chia công bàng thời lượng sử dụng CPU tiến trình hay người dùng, giảm thiểu thời gian phản hồi cho người dùng Phương pháp thích hợp phụ thuộc vào mục tiêu HĐH

(69)

dụng CPU K/n đơn vị thời gian) Có thể thực điều cách tăng độ ưu tiên tiến trình nằm hàng đợi sẵn sàng, giảm độ ưu tiên tiến trình thực thi Các phương thức điều chỉnh độ ưu tiên ứng với phưoTig pháp điều phối khác

Ngắt đơn giản hóa việc cài đặt phưoTĩg pháp chia sẻ CPU khơng tình nguyện Nếu quản lý tiến trình sử dụng định thời (timer) điều khiển việc chuyển quyền sử dụng CPU, thi hệ thống xác định lượng tử thời gian khoảng thời gian hai ngắt liên tiếp Trong trưịng hợp tiến trình kết thúc trước sử dụng hết lượng tử thời gian, tiến trinh giải phóng CPU điều phối cấp phát CPU cho tiến trình khác Dĩ nhiên, tiến trình phải cấp phát nguyên lưọng tử thời gian, điều phối phải có khả thiết lập lại giá trị cho định thời

Với tập họp cụ thể tiến trình nằm hàng đợi sẵn sàng thời lượng sử dụng CPU tiến trình xác định, điều phối khơng độc quyền hồn tồn xác định kế hoạch tối un cho mục đích cụ thể (với điều kiện khơng đưa thêm tiến trình vào hàng đợi trình phục vụ tiến trình khác) Thuật toán tối ưu xác định số lượng lượng lử thời gian sừ dụng CPU tiến trình, sau liệt kê tất kế Ịioạch sử dụng CPU theo thứ tự Phương pháp điều phối tối ưu theo tiêu chí rà sốt tồn kế hoạch nhằm chọn tốt Tuy nhiên, có vài vấn đề phương pháp này:

- Khi có tiến trình đến hàng đợi hệ thống phục vụ tiến trình phải lập kế hoạch lại

- Phải xác định thời lượng sử dụng CPU thực tế tiến trình trước tiến trình thực thi Tuy nhiên, khó thực điều

- Các thuật toán điều phối tối ưu cho n tiến trình có độ phức tạp O(n^), nghĩa lượng thời gian điều phối sử dụng để lập kế hoạch tối ưu lớn lưọng thời gian thực dành cho việc phục vụ tiến trình

Giả sử: p = {Pi I < i < n} tập tiến trình S ( p i) trạng thái cùa

tiến trình Pi, S ( p i) e {đang thực thi, sẵn sàng, phong tỏa} Thời

gian phục vụ t(p ì) tổng lượng thời gian sử dụng CPU cần thiết để tiến

trình Pi hồn thành nhiệm vụ Thời gian chờ W (p i) thời gian chờ tiến

(70)

tiến trình sử dụng CPU Thời gian lưu lại hệ thống T T R n d ( P i) lượng thoi gian từ tiến trình vào hàng đợi tiến trình hồn tất cơng việc

Mơ hình tiến trinh đại lượng thời gian sử dụng so sánh hiệu suất thuật tốn điều phối Trong hệ thống lơ, thời gian lưu lại hệ thống yếu tố quan trọng nhất, phản ánh lượng thời gian người dùng phải đợi để nhận kết từ máy tính, đây, thời gian lưu lại hệ thống trung bình thời gian trung bình để hồn thành tiến trình (hay cơng việc) nghịch đảo đại lượng thông lượng hệ thống - số lượng công việc hoàn thành đơn vị thời gian Trong hệ thống lô, mặt kỹ thuật, thời gian lưu lại hệ thống công việc khác với thời gian lun lại hệ thống tiến trình phải tính đến thời gian xếp hàng, cấp phát nhớ điều phối Vì hệ thống lơ quan tâm đến cơng việc nhiều tiến trình, nên thời gian lưu lại hệ thống cơng việc đóng vai trị quan trọng Hệ thống chia sẻ thời gian thường tập trung vào thời gian ihực thi riêng lẻ tiến trình, chẳng hạn thời gian thi hành lệnh người dùng Thời gian lại chia thành hai giai đoạn thời gian chờ đợi (do phải cạnh tranh quyền sử dụng CPU) thời gian phục vụ Với người dùng tương tác trực tiếp với máy tính, thời gian cần thiết để máy tính gửi lại vài thơng tin phản hồi (tức thời gian chờ) có yếu tố quan trọng Do vậy, hệ thống chia sẻ thời gian, đại lượng thời gian chờ xem tiêu chí đánh giá hiệu suất quan trọng

Tiến trinh Danh sách Bộ ì

mơi sẵn sàng điều phối Kết thúc Hình 5.4 Mơ hlnh điều phối đơn giản

(71)

gian lưu lại hệ thống bỏ qua thời gian tiến trình bị phong tỏa phải đợi tài ngun Mơ hình hoạt động sau: Tiến trình lần bước vào trạng thái sẵn sàng yêu cầu thời gian sử dụng CPU xác định Tiến trình sau đáp ứng, có nghĩa tổng thời gian thực thi CPU thời gian phục vụ yêu cầu - kết thúc Trên thực tế, xem tiến trình mơ hình theo kiểu tạo có đủ tài nguyên cần thiết (do sẵn sàng thực thi) tiến trình kết thúc yêu cầu thêm tài nguyên Các tiến trình trình bày chưoTìg trước xem chuỗi "nhỏ" tiến trình khơng bị gián đoạn Các thuật tốn điều phối chia làm hai lớp lớp độc quyền (nonpreemptive) lớp khơng độc quyền (preemptive) Trong thuật tốn độc quyền, thực thi, tiến Irình khơng giải phóng CPU hồn thành Các thuật tốn khơng độc quyền thưịmg dựa độ ưu tiên sau: thời điểm liến trình sừ dụng CPU ln có độ ưu tiên cao Nếu tiến trình xuất có độ UXI tiên cao tiến trình thực thi, tiến trình sừ dụng CPU phải nhường quyền sử dụng CPU cho tiến trình

5.2.1 Phân tiến trình thành nhiều tiến trình nhỏ

Trong trình hoạt động, thao tác tính tốn vào/ra tiến trình xen kẽ Giả sử tiến trình có k lần tính tốn CPU k lần thực

hiện vào/ra Như vậy, tổng ứiòd gian phục vụ là: x (p i) = Ti + + + Xk.

Giả sừ tiến trình Pi chia thành k tiến trình nhỏ Pii, Pi2, , Pik,

T i j thời gian sử dụng CPU P y Mỗi Py thi hành tiến

trinh độc lập không gián đoạn Bộ điều phối không độc quyền chia

T ị j nhiều lượng từ thời gian trình điều phối cho P i j Nếu tiến

trình yêu cầu k thao tác vào/ra khác Ti xen kẽ với thời gian

di, d2, dk thời gian thực thao tác vào/ra thứ k Vì thế,

tổng thời gian tiến trình sử dụng CPU thời gian thực vào/ra là:

Ti + di + X2 + d2 + + Tk + dk Với tiến trình hướng tính tốn, Ti tương đối

lớn so với dj Với tiến trình hướng vào/ra, Ti tương đối nhỏ so với dj

5.2.2 Đánh giá xấp xỉ tải hệ thống

(72)

(1) Phân tích thuật tốn cụ thể tải già thiết sau dự dốn hiệu suấl lừng Ihuật toán

(2) Sứ dụng mộl tải Ihực đánh giá hiệu suất thuật tốn tải thực Mục đích giáo trình đánh giá phương pháp điều phối khác không tập trung nghiên cứu sâu vào việc dự đoán hiệu suất Tuy vậy, chúng la xét hiệu suất so sánh thuật toán khác Mục đích việc nghiên cứu giúp bạn đọc hình dung thuật tốn thi hành tải khác Người ta dự đoán hiệu suất thuật toán lái ngẫu nhiên bàng cách tính trung bình cộng đại lưọng đo Irên tiến trình riêng lẻ (vì xác suất tiến trình dến hàng đợi phân bố ngẫu nhiơn)

Tải vào hệ thống mơ tả tốc độ tiến trình đến hàng đợi

\'à thời gian phục vụ t(p ì) Giả sử X số lưọng trung bình tiến trình đến

hàng đợi (được tính số lượng tiến trình đến hàng đợi đơn vị ihời gian) 1/?^ thời gian trung bình hai lần đến liên tiếp Giả sử biêu diễn tốc độ phục vụ trung bình (1/|^ thịfi gian phục vụ trung bình íiến trình) Nếu bỏ qua thời gian chuyển ngữ cảnh giả thiết CPU có đủ khả đáp ứng tồn tải, khoảng thời gian CPU bận

p = Ax —= —

n

Nếu p > 1, CPU bị "quá tái" (lượng công việc đến lớn khả phục vụ) điều không phụ thuộc vào việc sử dụng thuật toán điều phối Đồng thời, kích thước hàng đợi hữu hạn xuất tinh trạng tràn đệm (overflow), tốc độ đến tiến trình lón tốc độ hệ thống phục vụ Hệ thống tiến tới trạng thái ổn định < n (p < 1)

Ví dụ, Irong phút có 10 tiến trình đến hệ thống (nghĩa X, = 10 tiến Irìnli/phút) thời gian phục vụ trung bình cho tiến trình giây

(nghĩa là; 1/|A = giây = 1/20 phút = 20 tiến trình/phút) Tải hệ thống

sẽ là: p = = (10 tiến trinyphút) / (20 tiến trình/phút) = 0,5 = 50%.

5.3 THUẬT TOÁN Đ ộ c QUYÈN

(73)

khơng tiến trình chuyển từ trạng thái thực thi sang trạng thái sẵn sàng Chỉ hồn thành nhiệm vụ, tiến trình nhường quyền sử dụng CPU cho điều phối Thuật toán độc quyền "vay mượn" nhiều thuật toán kinh điển vận trù học (Nghiên cứu phưong pháp điều phối liên quan đến người, chẳng hạn cách thức điều phối việc phục vụ khách hàng ngân hàng, sân bay hay siêu thị Khi bắt đầu phục vụ, khách hàng nhận toàn phục vụ xong việc mà không bị người khác chen ngang) Phương pháp phù hợp với hệ thống không sử dụng ngắt thời gian để gọi điều phối Tại thời điểm có tiến trình sử dụng CPU sau thực xong nhường CPU cho tiến trình

5.3.1 Đến trước phục vụ trước (First-Come-Fỉrst-Served FCFS)

Trong thuật tốn FCFS, độ ưu tiên tiến trình phụ thuộc vào thời điểm tiến trình đưa vào hàng đợi Bộ phận Enqueuer gắn cho tiến trình nhãn thời gian - thời điêm tiên trình vào hàng đợi Sau điêu vận lựa chọn tiến trình có nhãn thời gian bé để thực thi Hàng đợi sẵn sàng cài đặt cấu trúc liệu FIFO (First-In-First-Out) đơn giản (trong thành phần cấu trúc liệu trỏ tới PCB tiến trình) Enqueuer đưa tiến trình vào hàng đợi, cịn điều vận chọn tiến trình đầu hàng đợi Mặc dù dễ cài đặt, FCFS không quan tâm đến thời gian phục vụ bỏ qua tiêu chí đánh giá chất lượng khác thời gian đợi hay thời gian lưu lại hệ thống trung bình Nói chung FCFS áp dụng hệ thống thực

‘i T (P i) Độ ưu tiên Thời hạn chót

0 350 5 575

1 125 2 550

2 475 3 1050

3 250 1 K hông xác định

4 75 4 200

Hình 5.5 Một tải giả thiết

Như minh họa Hình 5.5, giả sử có tiến trình hàng đợi

thứ tự đến hàng đợi chúng Po Pi P2 p3 p4- Thuật toán FCFS

(74)

Po Fi ViỸ4

0 75 200 450 800 1275

Pi P3 Po P:

(a) FCFS

(b) SJN

250

Pi

375

Pz

850

P4

925 1275

Po (c) ĐỘ ưu tiên

125

Pi

200 550 1025 1275

P4 Po P2 P3 (d) CĨ thịi hạn

Hình 5.6 Các kế hoạch điều phối theo thuật tốn khác nhau

Qua Hình 5.6a, xác định thời gian lưu lại hệ thống tiến trinh thuật toán điều phối FCFS:

T x R n d (p o ) = T ( p o ) = 0

T i R n d Í P i ) ^ t(p o) + T x R n d C p o ) = + ^ = 5

T r R n d ( p ) = t ( p 2) + T iR n d C p i) = + = 0

T T R n d (p ) = x ( p3) + T x R n d (p ) 2 + = 0

r T R n d (P ) = t ( p4> + T T R n d (P ) = + 0 = 5

Thời gian ^HarHioitmng^bintUa^

- _ 350 + 475 + + 1200 + 1275 _

1 T R n d -- - 0

Thời gian đọd tiến trình là:

W ( p o ) = 0

W ( p , ) = T T R n d ( p i ) = ^

W ( P2) = T T R n d (P ) = 5

W(P3) = T T R n d ( P ) = 950 W ( P4) = T j R n d ( P ) - 0

Thời gian đợi trung bình là:

0+ 350 + 475 + 950+ 1200

của

(75)

5.3.2 Công việc ngắn phục vụ triHỚc (Shortest Job Next - SJN)

Thuật toán điều phối SJN lựa chọn tiến trình có thời gian phục vụ ngắn Thời gian lưu lại hệ thống tiến trình Pi tổng thời gian phục vụ tất tiến trình nằm hàng đợi có thời gian phục vụ Pi SJN giảm thiểu thời gian đợi trung bình tiến trình có ihời gian phục vụ ngắn thực thi trước Tuy nhiên, trưòng hợp có nhiều tiến trình cần phục vụ, chế điều phối có thê ngăn can tiến trình có thời gian phục vụ lớn quyền thực thi Hiện tượng tiến trình lớn khơng phục vụ (chết đói) khiếm khuyết lớn SJN Chúng ta giả sử danh sách hàng đợi chứa tiến trình minh họa Hình 5.5 thứ tự đến không quan trọng mà cần tất tiến trình nằm hàng đợi thời điểm điều phối q trình điều phối khơng xuất thêm tiến trình Thuật tốn SJN tạo bảng kế hoạch minh họa Hình 5.6b

Từ Hình 5.6b, xác định:

T x R n d (p o ) = i ( p o ) + X ( P3) + x ( p i ) + x ( p4) = + + + = 0

TTRnd(pá) = t(p i) + X(P4) = 125 + 75 = 200

TTRnd(ỉ^) = X(P2) + x(Po) + t(p3) + x(p,) + x(p4)

= 450 + 350 + 50 + 125 + 75 = 1275

T r R n d ( P s ) = t( P ) + T ( p i ) + t( P ) = + + = 0

TxRnd(Pif) = T (P4) = 75

Thời gian lưu lại hệ thống trung bình là;

- _ 800 + 200+ 1275 + 450 + 75

1 TRnd - - 560

Thời gian đợi tiến trình sau: W(po) = 450

W(p,) = 75 W(P2) = 800 W(P3) = 200

(76)

rhời gian dợi trung binh là:

— 450 í 75 + 800 (- 200 H _ ^

w — - — - i;>0

5

S.ÍỊ' dược áp dụng hệ thống iheo lô dế giảm thiểu thời e,ian lưu lại hệ tliơiiR trung bình người ta mong muốn đạt tính chất hệ tiiổng tương lác 'ĩrong hệ Ihống tuơng tác, người dùng dánh lệnh, hệ ihỏng Ihực hiẹn lệnh, gửi kết qua; người dùng đánh tiếp lệnh, hệ ihống tiếp tục xư lý, Nếu coi lệnh "cône việc", giảm thiểu thời gi;:n phán hồi trung hình cách lựa chọn tiến irinh cần CPU để tliưc Ihi, Tuy vậy, khó xác định xác tiến trình có lính chất mà ch ưỏc lược dựa hành vi khứ Giả sử thời gian thưc Ihi cùa lệnh lần đầu T(J thời gian thực thi lệr.h I'l Chúng ta ước lược thời gian thực thi lệnh cách sử dụng thêm trọng số a: aTo + (1 - a)Ti Giá trị trọng số a định gia Irị ước lược có phụ thuộc nhiều vào giá trị cũ hay không Với

ơ - 1/2, ta có giá trị ước lược: To, To/2 + T]/2, To/4 + T|/4 + T2/2,

To'8 + l’i/8 + T2/4 + T j/2, Sau ba lần thực ihi, hệ số To giá trị

ước lược 1/8

5.3.3 Điều phối theo độ LFU tiên

Trong điều phối theo độ UXI tiên, tiến trình cấp phát CPU theo độ UII tiên gán từ bên (ở coi số bé có độ ưu tiên cao) Độ un tiên xác định vào thao tác tiến trình mơi trường tính tốn, chẳng hạn độ ưu tiên xác định theo thời gian phục vụ áp dụng SJN Độ ưu tiên ngồi phản ánh tầm quan trọng cơng việc, thường người sử dụng xác định từ bên Độ

lai tiên ngồi tiến trình bị người sử dụng thay đổi ("người quan

trọng có quyền ưu tiên cao hơn"), chất cơng việc ("tiến trình phải tắt lị

phản ứng hạt nhân nhiệt độ vượt ngưỡng đó"), hay tiêu chuẩn ưu tiên khác

(77)

khoảng thời gian đợi cúa tiến trình làm tham số để xác định độ ưu tiên Thời gian đợi dài độ ưu tiên cao Khi tượng "chết đói” khơng xuất Chủng ta sử dụng ví dụ Hình 5.5 Cơ chế điều phối theo độ ưu tiên tạo bảng kế hoạch Hình 5.6c

Chúng ta tính:

T T R n d (P o ) = x ( p o ) + X ( P ) + x ( p2) + t ( P i ) + x ( p3)

= 350 + 75 + 475 + 125 + 250 = 1275

T T R n d ( p i) = T ( p , ) + t ( p3) = + = 5

TrRnd(P2) = x(P2) + T ( p i ) + x ( p3) = 475 + 12 + 250 = 850

TrRnd(P3) = x(P3) = 250

T r R n d ( P ) = X (P ) + t( P ) + x ( p i ) + x ( p ) = + + + = 5

Thời gian lưu lại hệ thống trung bình là;

- _ 1275 + 375 + 850 + 250 + 925 _

1 TRnd --

-Thời gian đợi tiến trinh là: W(po) = 925

W(p,) = 250 W(P2) = 375

W (P3) =

W(P4) = 850 Thời gian đọd trung binh là:

925 + 25 + 375 + + 850

5.3.4 Điều phối có thời hạn (Deadline Scheduling)

(78)

bộ dicu pliỏi dam bao tiến trình cỏ thè kct ihiìc Irưóc thời hạn chót Trong hệ thống truyên thòng da phuonL: lien, ihừi hạn thực cỏ ihẽ dược sử dụng để ngăn ngừa tượng jitter (lồc dộ dèn dicli cua ịiỏi tin khône dèii) Cột thứ Hình 5.5 minh họa ví dụ thời hạn cuối cho mồi licn trinh Hinh 5.6d minh họa kế hoạch dáp ứng tiêu chí thời hạn cho tồn liến trình

5.4 THUẬT TỐN KHỊNG Đ ộ c QUYẺN

Trong thuật tốn khơng độc quyền, tiến trình có độ ưu tiên cao

ln cấp phát CPU Tiến Irình có độ U\1 tiên thấp phải nhường CPU

cho tiến Irình có độ ưu tiên cao Bộ điều phối gọi có tiến trình sẵn sàng thực thi sau hết mồi lượng tử thòd gian (nếu hệ thống sử dụng định thời) Các thuật tốn điều phổi khơng độc quyền đáp ứng nhanh chóng tiến trình có độ UTJ tiên cao bảo đảm tiến trình chia sẻ cơng CPU Có ihể sử dụng thuật tốn SJN thuật tốn Độ ưu tiên theo thuật tốn khơng độc quyền

Với SJN, tiến trình có thời gian phục vụ nhỏ cấp phát CPU

trước Già sừ tiến trình P j đến P i thực thi, hệ thống so sánh x (p i)

t ( P j ) Trước P j đến, p, tiến trình có thời gian phục vụ nhỏ Xét hệ

thống có tải minh họa Hình 5.5 sử dụng chế điều phối SJN

không độc quyền Khi P i thực thi (sau P thực thi xong), xuất

hiện tiến trình có thời gian phục vụ 35 hệ thống kiểm tra xem Pi có cần nhiều 35 đơn vị thời gian để thực không Nếu có, Pi phải nhưỊTig CPU cho tiến trình Tương tự, giả sử hệ thống không độc quyền sử dụng thuật toán điều phối theo độ ưu tiên với tải hệ thống minh họa

Hình 5.5 Giả sử P thực thi (sau P3 pi) xuất tiến trình có độ

iru tiên P2 phải quay lại hàng đợi để nhường CPU cho tiến trình

(79)

5.4.1 Điều phối xoay vòng (Round Robin - RR)

Xoay vịng (RR) thuật tốn điều phối sử dụng rộng rãi nhất, vi phân chia cơng bàng thời gian sử dụng CPU tiến trình Thuật toán phù họp hệ thống đa chương trình tương tác: Nếu hệ

thống có n tiến trình tiến trình nhận xấp xỉ 1/n đon vị xử lý

thời gian thực (xấp xi phải tính đến chi phí điều phổi chuyển ngừ cảnh) Nếu tiến trình kết thúc trước hết lượng tử thời gian, hệ thống phải khởi động điều phối để cấp phát nguyên lượng tử thời gian sử dụng CPU cho tiến trình khác Tiến trình đặt hàng đợi Tuy nhiên, vị trí hàng đợi phụ thuộc vào phương pháp cài đặl Nếu hàng đợi danh sách liên kết vịng, tiến trình đặl neay sau tiến trình vừa thực thi, n - tiến trình phục vụ trước tiến trinh Nếu hàng đợi cài đặt dạng danh sách điều vận lựa chọn tiến trình theo thứ tự tiến trình đặt cuối hàng đợi điều không phụ thuộc vào tiến trình thực thi tiến trình xuất Trung bình tiến trình phải đợi n/2 lượng tử thời gian trước cấp phát CPU

Xét ảnh hưởng cùa thời gian chuyển cảnh điều phối xoay vòng:

Giả sử c thời gian chuyển ngữ cảnh tiến trình người dùng (đôi

(80)

475 550 65( Ỉ Po I P i T p? rp ^ ~ l pà TpÕ I p Ĩ Ĩ P : Ì P ì T ^ p7~ỊĨ>ìTp: ỉ p7\

1350 ỔSỌ_

Po

1050 .Ei_LP_ọ_LPj I Pì ỉ Po

240 360

Pe

H SO \2S0 1275

Vỉ

(a)

120 240 360 480 540 575 Ỗ3S 670 790

I p , I P; I P j i I Po I Pl I P ; i P} | P | Pọ Ị Pị I Pĩ I ^

'/'90 5»10 1030 1150 1270 1390 1510 1535

I P2 I i Po I I P3 I Pq I P2 I Po I P ĩ I P : I P r i P i

ĨpĨ

( b )

Hình 5.7 Kế hoạch điều phối theo thuật tốn xoay vịng

l biểu đồ này, xác định thời gian lưu lại hệ thống tiến trinh:

í T R n d (p o ) = 1100

TTRnd(Pl) = 550

T iR n d ( P ) = 5

T T R n d ( P ) = 950 T r R n d ( P ) = 475

Thời gian lưu lại hệ thống trung bình là:

TTRnd 1100 + 5 + 1275 + 950 + 475 4350 = 870.

Thời gian đợi tiến trình: W(po) =

W(p,) = 50

W(P2)= 100

W ( P ) = 150

W ( P ) = 00 Thời gian đợi trung bình là;

0 + + 0 + 150 + 200 500 ,^^

w -: - = —— — lUU.

5 5

(81)

Xét ví dụ tính thêm thời gian chuyển ngữ cảnh 10 (H nh 5.7b) Thời gian lưu lại hệ thống tiến trình là:

T iR n d ÍP o ) = 0

TTRnd(Pi) = 660

T T R n d (P ) = 5

T T R n d ( P ) = 1140

T T R n d ( P ) = 565

Thời gian lưu lại hệ thống trung bình là:

- _ 1320 + 660 + 1535 +1140 + 565 5220 _

r T R n d -^ -= - 4

Thời gian đợi cúa tiến trình là:

W(po) = W (p i) = 60

W ( P ) = 0

W ( P ) = 0

W ( P ) = 240

Thời gian đợi trung bình là:

0 + + + 180 + 240 600

w = - = ^ = 120

5

5.4.2, Hàng đợi nhiều mức

I ỉàng đợi nhiều mức dạng tổng quát thuật toán điều phối theo dộ

ưu tiên: tất tiến trình có độ ưu tiên nằm hàng đợi Có hai cấp độ điều phối CPU hàng đợi (có độ ưu tiên khác nhau) tiến trình nằm hàng đợi (có độ UXI tiên) Nếu sử dụng điều phối hàng đợi theo thuật tốn khơng độc quyền phải phục vụ tồn liến trình hàng đợi 1, đến tiến trình hàng đợi 2, Trong mồi hàng đợi k, CPU cấp phát theo thuật toán điều phối

(82)

(bỏ qua thời gian chuyển ngữ cảnh) tiến trình hàng đợi nhận 5()s; hàrm đợi nhận 25s; hàng đợi nhận 12,5s Thuật toán diồu phối phức tạp thời gian chuyển ngữ cảnh lỏn, hầu hết thuật toán điều phối hệ thống chia sẻ thời gian thường hàng đợi nhiều mức đơn giản hàng đọd áp dụng thuật tốn xoay vịng

^ Tiến trình tiền cảnh tiến trình hâu cảnh

Các hệ thống chia sẻ thời gian thường hỗ trợ tiến trình tiền cảnh (foreground) tiến trình hậu cảnh (background) Các tiến trình tiền cẩHh thirc tương tác với người dùng có độ ưu tiên cao, tiến trình hậu cành có độ ưu tiên thấp thực thi khơng Ihực thi tiến trình

tiền cánh Tiến trình tiền cảnh ln ln có độ ưu tiên cao tiến trình hậu cánh

Có nhiều thuật tốn đáp ứng kiểu phân chia tiến trình tiền cảnh/hậu cảnh Chăng hạn, liến trình xử lý ngắt chạy với mức uti tiên 1, tiến trình điều khiển thiết bị mức 2, tiến trình tương tác với người dùng mức 3, trình soạn thảo mức 4, công việc lô thông thường mức 5, cịn comg việc lơ cần nhiều thời gian thực thi mức Dĩ nhiên, lựa chọn mang tính tương đối, độ ưu tiên tiến trình thay đổi q trình thực thi, phụ thuộc vào tính tốn giai đoạn Ví dụ, tiến trinh soạn thảo văn có tưong tác với người dùng sử dụng qu.á nhiều CPU độ ưu tiên bị giảm (do sừ dụng CPU vượt mửc cho phép) Ngoài ra, cho phép tiến trình tăng độ ưu tiên giai doạn cần thực nhiều tính tốn với lý người dùng cần chiếm dựng CPU thời gian tương đối lâu có dịch vụ với chất lượng chấp nhận Hệ thống cho phép tiến trình thay đổi độ ưu tiên cáic hàng đợi con, gọi hàng đợi nhiều mức có phản hồi

^ Điểu p h ố i BSD U N IX

BSD UNIX sử dụng chế điều phối hàng đợi 32 mức: tiến trình hệ thỗng nằm hàng đợi đến 7, tiến trình thực thi khơng gian người dùing nằm hàng đợi đến 31 Bộ điều vận lựa chọn tiến trình từ hàng đợi có độ ưu tiên cao trước Trong hàng đợi, BSD UNIX sử dụng chiế điều phối xoay vòng Lượng tử thời gian phụ thuộc vào phiên cài đặít, nói chung bé hon oo^s

6- G Ĩ T N L H Đ H - D N

(83)

Ngồi ra, tiến trình cịn có độ ưu tiên ngoài, gọi nice - sử dụng để xác định (nhưng phụ thuộc vào yếu tố khác) tiến trình nàm

trong hàng đợi trạng thái sẵn sàng Giá trị nice biến thiên từ -2

đến 20, -2 mức ưu tiên cao Cứ sau lượng tủ thời

gian, điều phối tính lại độ ưu tiên tiến trình, giá trị hàm số

của nice lượng thòi gian tiến trình yêu cầu sừ dụng CPU (yêu cầu

nhiều độ ưu tiên giảm)

Hàm sleep tương tự yield (với việc lưu lại ngữ cảnh), tiến trìai gọi

sleep, bộ điều phối gọi

Điều phổi luồng Window N T

Bộ điều phối luồng Window NT có nhiều mức có phản hồi, với mục tiêu phục vụ thật nhanh luồng cần phải đáp ứng Bộ điều phối hồ trợ 32 cấp độ điều phối khác nhau; 16 hàng đợi có mức ưi tiên cao nhẩt gọi hàng đợi mức thời gian thực (real-time queue), 15 hàng đợi, hàng đợi có mức ưu tiên thay đổi (variable level queues) hàng đợi có mức ưu tiên thấp nhấl hàng đợi mức hệ iiống (system level) Bộ điều phối cố gắng giới hạn số lượng luồng đưa vào hàng đợi thời gian thực, nhằm làm giảm thiểu tranh chấp luồng có mức độ ưu tiên cao Tuy nhiên, Window NT không phái hệ thống thời gian thực, nên không đảm bảo luồng mức ưu tiên cao nhận quyền sử dụng CPU trước thời hạn chót Hàng đợi mức hệ thống "luồng rỗng" ứng với hệ thống rơi vào trạng thái nghỉ (idle system) Nghĩa là, hệ thống khơng có luồng khả thi, hệ thống thực thi luồng rỗng (là luồng trang nhớ) xảy ngắt xuất luồng khả thi Bộ điều phối hồn tồn Lhơng độc quyền, có nghĩa chuyển sang trạng thái sẵn sàng, luồng đặt trong hàng đợi đẩy phụ thuộc vào độ ưu tiên

5.4.3 Điều phối có đảm bảo (Guaranteed Scheduling)

(84)

định lượng thời gian mà hệ thống dành cho tiến trình (là khoảng thời gian tinh từ tiến trình tạo ra) chia cho n Tỷ lệ hai đại lượng tỷ lệ thời gian tiến trình thực sử dụng CPU Ví dụ, tỷ lệ 0,5 nghĩa tiến trình sử dụng 1/2 thời gian cấp phát Tiến trình có tỷ lệ thấp

nhất sẽ được lựa chọn tnrớc để chạy.

5.4.4 Điều phối quay xổ số (Loưery)

Hứa với người sử dụng cố gắng thực lời hứa ý tưởng hav, lại khó cài đặt Thuật tốn xổ số đem lại kết tương tự dễ cài đặt Mỗi tiến trình phát "vé xổ sổ" cho tài nguyên cần thiết (thời gian sử dụng CPU tài nguyên) Khi cần đưa định cấp phát, điều phối "quay xổ số" Tiến trình có "vé số" trúng thưởng quyền sừ dụng tài nguyên Trong trường họp điều phối CPU, hệ thống quay số 50 lần Is tiến trình "trúng số" sử dụng CPU 20ms Hệ thống cho tiến trình quan trọng nhiều vé số (ỉàm tăng hội "trúng số") Nếu hệ thổng có 100 "vé số" cấp phát cho tiến trình 20 "vé số", tiến trình sử dụng 20% CPU (tính thời gian dài) Các tiến trình hợp lác trao đổi "vé sổ" với Ví dụ, gửi thơng điệp u cầu tới tiến trình Server, tiến trinh Client gửi kèm toàn "vé số" sau tự phong tỏa Với lượng "vé" từ Client, hội thực thi Server tăng lên Khi thực thi xong, Server gửi trả lại toàn "vé số" thông điệp trả lời để Client nhanh chóng thực thi Điều phối theo kiểu quay xổ số sử dụng nhiều hệ thống khơng thích hợp với kiểu điều phối khác Chẳng hạn, hệ thống cài đặt video server, vài tiến trình gửi luồng âm hình ảnh tới khách hàng, theo tỷ lệ nén khác (10, 20, 25 frame/s) Bằng cách phân phối cho tiến trình 10, 20, 25 "vé số", hệ thống phân phối thời gian sử dụng CPU theo tỷ lệ 10 : 20 ; 25

5.4.5 Điều phối công bằng

(85)

Trong chế này, NSD cấp phát thời lưọTig sử dụng CPU trình điều phối phải bảo đảm điều Ví dụ, hệ thống có NSD, NSD quyền chiếm 50% thời lượng CPU NSD có tiến trình A, B, c D; NSD có tiến trình E Neu điều phối theo kiểu xoay vịng, kết

quả điều phối thể là: A, E, B, E, c, E, D, A, E, B, E, c, E, D, A, E, B, E, c , E,

D, A, E, B, E, c, E, D Nấu NSD cấp phát CPU gấp đôi NSD thi kết

quả điều phối là: A, B, E, c, D, A, B, E, c, D, A, B, E, c, D, A, B, E, c, D,

A, B, E c, D, A, B, E, c, D

5.5 NHẬN XÉT

Bộ điều phối chịu trách nhiệm cấp phát CPU cho nhiều tiến trình sẵn sàng thực thi Bộ điều phối định thời gọi định kỳ tiến trình thực thi tự động giải phóng CPU qua thị yield yêu cầu tài nguyên Từ danh sách tiến trình trạng thái sẵn sàng, điều phối chọn tiến trình để cấp phát CPU Thuật tốn điều phối chia thành hai nhóm: độc quyền khơng độc quyền Thuật lốn độc quyền cho phép tiến trình chạy tới hồn thành cơng việc, thuật tốn khơng độc quyền sử dụng đồng hồ định khoảng thời gian điều phối định kỳ cấp phát CPU cho tiến trìnti Thuật tốn FCFS SJN có độ ưu tiên thời hạn thuộc lớp thuật toán độc quyền, thuật toán xoay vịng hàng đợi nhiều mức thuộc nhóm khơng độc quyền Thuật tốn điều phối cài đặt theo nhiều cách khác Các điều phối phức tạp BSD UNIX Windows NT sử dụng chế hàng đợi nhiều mức, có cải tiến Điều phối coi "trái tim" quàn lý tài nguyên CPU với trách nhiệm điều khiển việc chia sẻ CPU nhiều tiến trình Một mơi trường máy tính cho phép nhiều tiến trình thực đồng thời thơng qua điều phối, qn lý tiến trình phải có chế cho phép tiến trình phối họrp hoạt động với Điều trinh bày chưcmg

CÂU HỎI ƠN TẬP

1 Trình bày nhiệm vụ điều phối tiến trình.

2 T i phải lưu lại ngữ cảnh tiến trình chuyển đổi?

(86)

ChiPơng 6

TƯƠNG TRANH VÀ ĐỊNG Bộ

Việc quản lý tiến trình luồng H ĐH đại chia thành ba loại: đa chương trình (multiprogramming) - nhiều tiến trinh chạy đồng thời trên CPU; đa x lý (multiprocessing) - nhiều tiến trình hoạt động trong hệ thống có nhiều CPU x lý ph ân tàn (distributed system) -nhiều tiến trình hoạt động mơi trường phàn tàn Trong cẩ kiểu trên, vấn đề thiết kế Tương tranh - tiến trình hoạt động đồng thời Mặc dù lợi ích lớn, tương tranh làm nảy sinh nhiều vấn đề, chẳng hạn cạnh tranh tài nguyên, bế tắc, Truy cập đồng thời tới liệu chia sể có thề gây khơng qn dữ liệu Chương trình bày kỹ thuật khác nhằm đảm bảo trong không gian địa logic, phối hợp với nhau, tiến trình hoạt động theo trật tự để tri tính thống quán liệu.

6.1. CÁC KHÁI NIỆM BẢN

Có hai chế phối hợp tiến trình chia sẻ trực tiếp với qua không gian địa logic chia sẻ liệu thơng qua file (tiến trình viết liệu vào file tiến trình khác đọc file) Tiến Irình gọi cộng túc (cooperating), ảnh hưởng tới bị ảnh hưởng tiến trình khác Tiến trình dùng chung dừ liệu với tiến trình khác xem tiến trình cộng tác

6.1.1 Hợp tác qua chia sẻ

Có nhiều lý để tạo mơi trường cộng tác, là:

• Chia sẻ thơng tin: Khi nhiều người dùng muốn sử dụng

tài nguyên thông tin (ví dụ file), m trường hệ thống phải

(87)

T ăng tốc độ tính tốn: Nếu muốn nhiệm vụ hồn thành tronỉ

thời gian ngắn có thể, chia nhiệm vụ thành nhiệm vụ nhỏ nhiệm vụ nhỏ thực thi song song Chú ý, việc tăng tốc chi thực hệ thống có nhiều đơn vị tính tốn độc lập (có nhiều CPU hay kênh vào/ra)

• Tính module (hay tính tách biệt): Chúng ta mong muốn chia chức hệ thống thành tiến trình riêng biệt phân tích Chương

• Tính thuận tiện: Người dùng thực song song nhiều việc soạn thảo, in biên dịch chương trình

Để đảm bảo tiến trinh thực thi đồng thời cộng tác với nhau, hệ thống phải có chế cho phép tiến trình trao đổi liệu đồng hóa hoạt động Bài tốn sản xuất - tiêu thụ ví dụ điển hinh vấn đề hợp tác Tiến trình sàn xuất tạo ra, cịn tiến trình tiêu thụ sử dụng thơng tin Ví dụ, chương trình in tạo ký tự cho driver máy in sử dụng Để tiến trình sản xuất tiêu thụ thực thi đồng thời, hệ thống cần đệm để tiến Irình sản xuất đưa thơng tin vào tiến trình tiêu thụ lấy thơng tin Như vậy, tiến trình sản xuất tiến trinh tiêu thụ phải đồng hóa để tiến trình tiêu thụ không sử dụng thông tin chưa tạo Khi đó, tiến trình tiêu thụ phải chờ đệm rỗng

ịTỉễn trinh SAN XUẨT plễn trình TIẼO THỤ - 1

R e p e a t ÌR e p e a t {

' w hile co unter= 0 ();

Tao m ôt item , đ ă t vào nextpỉ Nextc := b u ffe r[o u t]; 1

' * 1

O ut := o u t + mod n;

vvhile c o u n te rs n { } ; 1 Counter : = co unter - 1; 1

b u ffe r[ỉn ] ;= nextp; !i

in : = in + 1 mod n; Tlẻu thụ item tTDng nextc ^

counter := counter + 1; i i u n til fa ls e : b o t i l fs lls e i _ _ _

Hình 6.1 Hai tiến trinh có quan hệ với nhau

(88)

Sau ví dụ giải toán đệm hữu hạn bàng cách sừ dụng nhớ chung Các tiến trinh hai phía sản xuất tiêu thụ sử dụng

chung biến; n, in, out, counter; mảng buffer chứa phần tử thuộc kiểu

item Giá trị khởi lạo in, out là Bộ đệm dùng chung cài đặt thơng qua mảng tuần hồn với hai trị: in out in trỏ vào vị trí trống

trong đệm, out trò vào vị trí đệm có chứa thơng tin

Bộ đệm rỗng in = out; đầy (in + 1) mod n = out Hình 6.1 minh họa

cách cài đặt tiến trình sản xuất tiêu thụ Khối W hile (điều kiện) do

làm nhiệm vụ kiểm tra điều kiện lặp điều kiện nhận giá trị

sai Tiến trình sản xuất sử dụng biến cục nextp để lun thông tin

sinh tiến trình tiêu thụ sử dụng biến cục nextc chứa thông tin lấy ra.

Chúng ta xét tiếp ví dụ thứ 2, hệ thống có biến a b

cập nhật thường xuyên, cần đảm bảo a = b Giả sử tiến trình Pi P2

thực cơng việc Hình 6.2 Giả sử lúc đầu a = b, sau Pi

P2 chạy đồng thời Pi chạy thị thứ nhất, sau bị phong tỏa, P2 cấp

phát CPU, P2 chạy xong Pi khơi phục Việc xen kẽ câu lệnh

minh họa Hình 6.2(c) Sau a ^ b - hệ thống rod vào trạng thái

khơng qn Do đó, cần có chế ngăn cản Pi P2 chạy

đồng thời

ịpi l P { Xen k f

= a + 1; h = a * 2 b = a +

b = b + 1; h = b * 2 b = b "

ĩ ĩ b = a*2

b = b + l

(a) (b) (c)

Hình 6.2 Các tiến trinh phổi hợp 6.1.2 Hợp tác qua truyền thông

(89)

việc trao đổi thông điệp HĐH thư viện phải cung cấp hàm sừ để gửi nhận thông điệp

6.2 ĐỘC QUYÈN TRUY XUÁT - GIẢI PHÁP PHẦN MÈM 6.2.1 Nhu cầu độc quyền truy xuất

Xét ví dụ toán sản xuất - tiêu thụ mục 6.1.1, counter tăng thêm item vào đệm giảm xóa item khỏi đệm Khi thực thi riêng rẽ, hai thủ tục chạy vẩn đề nảy sinh thực thi đồng thời Giả sử counter = 5, procuder consumer

thực thi đồng thời "counter := counter + 1 " "counter := counter - 1 " K hi

những câu lệnh thực thi đồng thời, counter nhận giá trị 4, 7, mặt logic, kết xác phải Tại lại có điều náy? Khi thi hành dịng kiến trúc máy tính cụ ứiể, "counter := counter + 1" chuyển sang ngơn ngữ máy sau:

register^ := counter; register, := registeri + 1 ; counter := register^;

với register^ là ghi nằm CPU Tương tự "counter := counter - 1" chuyển thành:

registerj := counter; regìster2 := registerj - 1; counter := register2;

register2 ghi nằm CPU Thậm chí register registerj

có thể ghi vật lý Sự thực thi đồng thời "counter :=

counter + 1" "counter := counter - 1" m ức cao tương đương thực

thi chuỗi thị máy mức thấp Giả sử thị xen kẽ theo thứ tự sau:

thực thi registeri := co unter thực thi registeri := registeri + 1

thực thi register: := counter thực thi register2 := register2-

thực thi counter := registeri thực thi counter := regìster2

T„: producer T v producer T2: consum er T3: cosum er

T4: producer

T5: consum er

(90)

Kết quà counter = Neu đảo ngược Ihứ lự T4 I's counter = Nguyên nhân hai tiến trình dồng thời thao lác biến counter Các

tiến trình trạng thái tranh đoạt điểu khiến (race condition) nhiều tiến

irình cập nhật vào biến dùng chung kết việc thực thi phụ thuộc vào thứ lự thực cụ thể cùa tiến trình Do vậy, phải đảm bảo thời diêm cụ thể có tiến trình thay đổi biến dùng chung (các tiến trình phải đồng với nhau)

6.2.2 Miền găng (Critical - Section)

Xét hệ thống gồm n tiến trình {Po, Pi, Pn-i}- Mồi tiến trình có đoạn

rĩià gọi miền găng chứa lệnh thay đổi biến dùng chung Hệ thống phải đảm bảo thời điểm tối đa có tiến trình dược thi hành đoạn mã miền găng (gọi bước vào miền găng) Khi dó biến dùng chung chi bị tác động tối đa tiến trình Khi tiến trình thay phiên bước vào miền găng hệ thống đảm bảo độc quyền truy xuất tài nguvên dùng chung, v ấn đề miền găng thiết kế giao thức dồng hóa tiến trinh Nói chung, tiến trình phải xin phép bước vào miền găng, thực cập nhật liệu dùng chung thông báo thoát khỏi miền găng

Giải pháp cho miền găng phải thỏa mãn yêu cầu sau:

1 Độc quyền truy xuất (M utual Exclusion): Nếu tiến trình p, miền găng khơng tiến trình bước vào miền găng Tiến triển (Progress): Nếu khơng có tiến trình miền

găng có số tiến trình muốn vào miền găng tiến trình phải vào miền găng

3 Giói hạn đợi (bounded waiting): Thời gian từ tiến trình yêu cầu thực bước vào miền găng phải bị chặn giới hạn

ở giả định tiến trinh hoạt động, tức có tốc độ thực Ihi Tuy nhiên, không so sánh tốc độ tiến trình Các giải pháp đưa không phụ thuộc vào kiến trúc phần cứng máy tính hay số lưtyng CPU hệ thống Tuy nhiên, giả sừ thị ngôn

ngữ máy (chẳng hạn load, store test) thực thi đơn (không thể

(91)

thời, kết tương đương với việc thực thi chủng theo trật tự Khi trình bày, định nghĩa biến phục vụ mục đí;h

đồng bộ, cịn cấu trúc chung tiến trình Pj có dạng:

repeat

entry section Vào miền găng exit section Phần lại until false;

Phần entry exit bôi đen để nhấn mạnh tầm quan trọng

chúng

Tiến trình Pi Repeat

W hile turn?t| ;

M ien găng

turn := j ;

Phàn lại

Until false

Lưọi (Turn)

(a) (b)

Hình 6.3 Giải pháp thứ nhất 6.2.3 Giải pháp thứ cho hai tiến trình

Chú ý rằng, giải pháp độc quyền truy xuất dựa chế độc quyền phần cứng Ví dụ, thời điểm, xảy truy cập nhớ Người ta sử dụng quy tắc "lều Eskimo" mang tính minh họa Lều cửa lều Eskimo bé, cho phép người qua (Hình 6.3a) Bảng đen lều ghi số (0 1)

Giả sừ hai người Po Pi muốn phối hợp với vào miền găng Người

(92)

thuận tiện, biểu diễn P| la sử dụng Pj để chi tiến trình cịn lại, lức

j = - i Hai tiến trình chia sè biến turn (khởi tạo 1) Biến

turn giống bảng đen Nếu turn = i Pi phép bước vào miền găng Giải

pháp bảo đảm thời điểm có tiến trinh miền găng Tuy nhiên, yêu cầu tiến triển khơng đảm bảo thuật tốn ln địi hịi tiến trình phải ln phiên bước vào miền găng Chẳng hạn, turn = 0, Po biến mãi P) khơng thể vào miền găng

6.2.4 Giải pháp thứ hai cho hai tiến trình

Vấn đề giải pháp ghi thông tin người muốn vào miền găng bảng đen, cần biết trạng thái hai tiến trình Để giải quyết, người phải có dấu hiệu xác định họ có vào miền găng hay khơng, dù người biến người vào miền găng mà kliơng bị ảnh hưởng Quy tắc sửa đổi sau: Mỗi người có lều riêng (Co Ci) xem (nhưng không quyền sửa) bảng đen lều người Người muốn vào miền găng định kỳ kiểm tra

bảng đen lều người nhìn thấy có chữ false (dấu hiệu

người khơng muốn vào) Lúc người quay lều mình, viết

true lên bảng đen (thơng báo vào miền găng) bước vào miền găng

Sau rời miền găng, người viết false lên bảng đen

Tiến trình Pi

va rflag ; array[0 1] of boolean; Repeat

flag[i] := true ; while fiag[J] do; Miền găng flag[l] := false; Phần lại Until false;

(b) Hình 6.4 Thuật tốn thứ hai

Thay turn mảng flag: array[0 1] o f boolean đóng vai trò lều

riêng người (Co Ci) Các phần tử mảng khởi tạo

false Giá trị flag[i] = true có ý nghĩa Pị sẵn sàng bước vào miền găng, cấ u

(93)

mình sẵn sàng bước vào miền găng Sau dó p, kiểm tra xem Pj bước vào miền găng chưa Nếu Pj (hoặc chuẩn bị) vào, P| đợi Pj bước

ra khoi miền găng (tức flaglJ] = false) Khi Pj vào miền găng

K,hi rời miền găng, P| đặt lại flag[i] = false để cho phép Pj (nếu có nhu cầu)

buxVc vào miền găng

'l'huật tốn khơng đảm bảo điều kiện tiến triển Xét chuỗi thực Ihi Po Pi đồng thời muốn vào miền găng;

To: Po đ ặ t fla g [0 ] = true

Ti: Pi đặt fla g [1] = true

Bây giờ Po Pi lặp trong vòng lặp while Thuật toán phụ thuộc

về thời gian thực hai tiến trình Trình tự thực có thề xuất hệ thống có nhiều CPU ngắt (chẳng hạn, định thời gây ra) xuất sau To quyền điều khiển CPU chuyến sang tiến trình khác Thay đổi thứ tự câu lệnh, đặt flag[i] = true câu lệnh kiềm tra giá trị flagjj] không giải vấn đề này, mà cịn cho phép hai tiến trình bước vào miền găng, vi phạm yêu cầu độc quyền truy xuất

6.2.5 Giải pháp thứ ba cho hai tiến trình Tiền trình Pi

v a r fỉag: a rra y [0 ] of boolean; tu rn : ;

Repeat

fla g [i] := tru e ; tu rn := j ;

w h ile (fla g [j] and tu rn = j) do;; Miềr găng

fla g [i] := false ; Phần lại Until false;

(a) (b)

Hình 6.5 Thuật tốn 3

Kết họp hai thuật toán Irên, đưa giải pháp hoàn chỉnh cho miền găng đáp ứng yêu cầu Bên cạnh lều riêng người, cịin có lều đóng vai trị "trọng tài", có bảng đen ghi người đirợc quyền

(94)

Ban đầu, flag[0] = flag[1] = false, giá trị khởi tạo turn (0 hay 1) không quan trọnu cấu Irúc P| minh họa irong ỉình 6.5b Đơ vào miền găng, p, dặi fiag[i] = true sau kiêin tra xem Pj vào miền găng chưa Nếu cà hai tiên trinh muốn vào miền găng, turn gán giá Irị i j gân dồng thời Lệnh gán thực sau ghi dè lên kểl lệnh gán trưac Giá trị sau turn định tiến trình phép vào micn găng

Bây chứng minh thuật toán ihỏa mãn ba yêu cầu nêu 6.2.2 Đc chứng minli (ĩ), ta thấv P| vào miền găng flag[j] = false turn = i Giả sử hai tiến trình muốn vào miền găng lúc flag[0] = fiag[1] = true Tuy nhiên, hai tiến trình khơng thê bước vào miên găng lúc turn nhận giá trị hoặc Như vạ> , điều kiện độc quyền truy xuất bảo đảm Đe chứng minh điều kiện (2) (3), ý tiến trình Pi bị ngăn cản vào miền găng bị tắc vòne lặp while điều kiện flag[j] = true turn = j; vòng lặp chi dược thirc lần Nếu Pj không sẵn sàng vào miền găng flagU] = false Pi có thê vào miên găng Nếu Pj đặt flag[j] = true thực thi vòng lặp while thỉ turn = i bàng j Nếu turn = i, Pj vào miền găng Neu turn = j, Pj vào miền găng Tuy nhiên, khỏi miền găng, Pj đặt lại flag[j] = false phép Pi vào miền găng Neu đặt flagp] = true thi Pj đặl turn = i Vì Pj khơng thay đổi giá trị biến turn

troing vòng lặp w hile, Pj vào miền găng (thỏa mãn yêu cầu tiến triển) sau

khii Pj vào nhiều lần (thỏa mãn yêu cầu giới hạn đợi)

6.2.6 Giải pháp đa tiến trình

1'huật tốn giải vấn đề miền găng cho hai tiến trình Bây

trình bày thuật tốn Hiệu bánh mỳ cho n tiến trình Thuật tốn có tên gọi

nhiư vậy, điều phối việc phục vụ tại'những nơi địi hỏi phải trì trật tự trotng tình trạng lộn xộn (các cửa hàng)

Khi vào cửa hàng, khách hàng nhận số thứ tự (STT) Cửa hàmg phục vụ khách hàng có STT nhỏ Tuy nhiên, thuật tốn khơng đàim bảo hai tiến trình (hai khách hàng) có STT khác Khi tiến trình với tên xếp trước (theo thứ tự đó) phục vụ trước Vì vậy, Pi

(95)

cấ u trúc liệu chung hai mảng choosing: array[0 n -1] of boolean

number: array[0 n - 1] of integer Ban đầu cấu trúc liệu khỏi tạo false Để Ihuận tiện, định nghĩa (a, b) < (c, d) a < c a = c b < d c ấ u trúc P| minh họa Hình 6.6 Để chứng minh tính đắn thuật tốn Hiệu bánh mỳ, ta cần

chứng minh Pi miền găng Pk (k # i) có STT num ber[k] * Ihì

(num ber[i], i < number[k], k) Với kết đễ dàng chứng minh điều

kiện độc quyền truy xuất Thực vậy, coi Pi miền găng Pk cố gắng vào miền găng Khi thực thi câu lệnh while thứ hai trạng thái j = i, Pk thấy number[i] ^ (number[i], i) < {number[k], k) Vòng ỉặp tiếp lục Pị khỏi miền găng Đe chứng minh yêu câu liến triển giới

hạn đợi, để ý tiến trình vào m iền găng theo thứ tự đến trước phục

vụ trước

R epeat

chooslng[ij:=taie;

number[í] := max(number[0], n u m b er[l}i ,n u m b er[n -l]) + 1; chooslng[Ị]:= false;

for j := 0 to n- 1 do begin

whfle chooslngO] do;

while number[j] # 0 and (n u m ber[j],j)< (num ber[l],l) do; end;

Vào m iền găng

num ber[l]:= 0;

Phăn lại

Until false

Hình 6.6 Thuật tốn vào miền găng cho nhiều tiến trinh 6.3 ĐỒNG Bộ HÓA - GIẢI PHÁP PHÀN CỨNG

Phần cứng có ihể giúp việc lập trình đơn giản hoTi nâng cao hiệu suất hệ thống Phần giới thiệu vài giải pháp phần cứng có khả Iiíăng giải hiệu vấn đề miền găng

6.3.1 Che ngắt

(96)

chung thực trọn vẹn mà không bị gián đoạn tiến trình khác Do tiến trình khác xen vào, nên biến dùng chung không bị thay đổi cách bất thường Thuật toán thực minh họa Hình 6.7 Tuy nhiên, che ngắt hệ thổng nhiều CPU tốn thời gian phải ị>ửi thông điệp đến tất CPU Tiến trình khơng thể vào miền găng Iigay, hiệu suất hệ thống bị suy giảm

Tỉến trình Repeat

Che ngắt (không cho ngât xây ra) Miền găng

Cho phép ngẳt xảy Phần lại

Until false;

Hình 6.7 Miền găng cách che ngắt 6.3.2 Các thị đặc biệt

Nhiều kiến trúc máy tính có thị phần cứng đặc biệt cho phép kiểm tra chỉnh sửa nội dung từ tráơ đổi nội dung hai từ nhớ cách đon Chúng sử dụng giải vấn đề miền găng

function T e s t-a n d _ S e t(v a r target:boolean): boolean; begin

T e s t -a n d -5 e t := target;

end;

ta rg e r;= true;

Chì thỊ Test-anđ-Set

procedure Sw ap (v a , b; boolean);

v a r tem p: boolean; begin

te m p := a; a : = b; b := te m p ;

end; Chi th| Swap

Hinh 6.8 Các thị đặc biệt

Đặc điểm quan trọng cùa thị kiểu thực thi cách nguyên vẹn đơn nhất, nghĩa trình thực chi thị khơng bị gián

đoạn Vì vậy, nếu hai thị Test-and-Set được thực thi đồng thời (trên

CPU khác nhau), chúng thực thi theo thứ tự

Với thị Test-and-Set, có thể thi hành độc quyền truy xuất việc

khai báo biến boolean lock khởi tạo giá trị false, c ấ u trúc Pi minh họa

trong Hình 6.8 Chỉ thị sw âp tráo đổi nội dung từ định nghĩa

Hình 6.8 Giống Test-and-Set, sw ap được thực thi cách đơn Hình

(97)

năng áp dụng đơn giản hệ thống có có nhiều CPU Tuy nhiên, tượng busy-waiting, khả chết đói bế tắc vần cịn xảy

Repeat

w h i l e Test-and-Set(lock) do;

Miền gãng

Lock false;

Phần lại Until false;

(a) Độc quyên truy xuất Test-an d -S et

Repeat

k e y := true;

r e p e a t

Sw ap(Ịock, key);

u n til key^false;

Miên gắng

Lock ;= false;

Phần lại Until false;

(b) Độc quyền truy xuất bấng Swap

Hình 6.9 Độc quyền truy xuất thị đặc biệt 6.4 GIẢI PHÁP ĐỒNG Bộ c BẢN

6.4.1 Khóa (Lock)

Với ví dụ "lều Eskimo", giả sử cửa lều có khóa Người muốn vào miền găng đến trước cửa lều Nếu lều bị khóa, người phải đợi Nếu lều chưa khóa, người khóa lều lại, vào miền găng (cầm theo chia khóa) Sau khỏi miền găng, người quay trở mở khóa lều cho người muốn vào miền găng Hình 6.10a minh họa cách thức sử dụng khóa muốn vào miền găng Tuy nhiên, cần giải vấn đề hai người đồng thời muốn dùng khóa Người ta sử dụng giải pháp che ngẳl muốn dóng mớ khóa (minh họa Mình 6.1 Ob c)

Tỉền trình Pl enter (lock) { exit (lock) {

var íock boolean; disablelnterrupts(); dlsablelnterruptsO;

Repeat while (lock) { lock = true;

while (lock) ; enablelnterruptsO; enablelnterruptsO;

lock = true; disablelnterrupts(); }

Mien găng }

lock = false; lock = true;

Phần lại enab!elnterrupts();

Until false; >

(a) Cách s ứ dụng khóa (b) Đóng khóa (c) Mờ khóa

Hình 6.10 Khóa cách cài đặt khóa

Nhược điểm giải pháp tình trạng chờ bận {B usy

(98)

kiếm tra xem đến lượt vào chưa Tình trạng Busy waititng lãng phí chu kỳ CPU mà lẽ tiến trình khác sử dụng để thực

cơng việc hữu ích Tình trạng cịn gọi khóa xoay {Spinlock) (vì

các tiến Irình quay quanh vịng lặp chờ khóa), u điểm

spinìock Irong hệ thổng đa xử lý không cần phải chuyển ngữ cảnh khi

một tiến trình đợi khóa (vì chuyển ngữ cảnh chiếm lượng thời gian đáng kể)

6.4.2 Semaphore

Semaphore s biến nguyên mà sau khởi tạo truy cập qua

hai thao tác đơn w ait signal Hình 6.1 la định nghĩa wait

signal. Toán tử wait signal thay đổi giá trị semaphore thực cách đơn Tức tiến trình thay đổi giá trị semaphore khơng tiến trinh quyền thay đổi giá trị semaphore Ngoài ra,

trường hợp wait(S), việc kiểm tra giá trị s (S < 0) việc thay đổi s := s -

(nếu có) phải thực thi liên tục không gián đoạn Cách cài đặt tốn tứ trình bày mục 6.4.3 Nhưng trước tiên ta trình bày cách sừ đụng semaphore

w a it f s i: Repeat

while s < do; Wait(mutBx);

s := S-1; Miền gồng

sìg n l(S ) : Signal (m utex);

s S+1; Phần lại

Until false;

(a) Thao tác Wait signal (b) Độc quyên truy xuãt Semaphore

Hình 6.11 Định nghĩa cách sử dụng Semaphore

Có thể sử dụng semaphore để giải vấn đề miền găng cho n tiến

trình, n tiến trình chia sẻ semaphore m utex (mutual exclusion) khới tạo

giá trị Tiến trình Pị minh họa Hình 6.1 Ib "Lều Eskimo" ví dụ trước cải tiến sau; Bảng đen sử dụng để ghi số lưọng người lều (lều bố trí nhiều ghế ngồi) Người muốn vào miền găng (giả sử A) bước vào lều, tăng giá trị ghi bảng đen lên Nếu giá trị 1, A có quyền bước vào miền găng Nếu giá trị khác 1, A phải ngồi đợi lều Sau thoát khỏi miền găng, A phải quay trở lều, giảm giá trị ghi bảng đen giá trị khác 0, người khác đợi lều vào miền găng

(99)

Ngoài ra, sử dụng semaphore để giải nhiều vấn đề

đồng hóa khác Giả sử hai tiến trình chạy đồng thời; Pi với lệnh S] ?

với lệnh S2 Giả thiết S2 thực thi sau S| thực thi xong

Có thể giải vấn đề cách cho Pi P2 dùng chung sem aphore

synch khởi tạo bàng chèn vào'câu lệnh: {S1;signal(synch);} cho P)

câu lệnh {w ait(synch);S2;} cho P2 Vì synch khởi tạo 0, P2 thực thi

S2 sau P| thực signal(synch) sau Si,

6.4.3 Cài đặt semaphore

Với định nghĩa trên, semaphore bị tình trạng busy waiting. Để khấc

phục cần định nghĩa lại toán tử wait signal của semaphore Tiến trình gọi

wait thấy giá trị semaphore không dương phải chờ Tuy nhiên, thay

thực vịng lặp, tiến trình phong tỏa Tốn từ block đặt tiến

trình vào hàng đợi (hàng đợi gắn với semaphore) tiến trinh chuyển sang trạng thái đợi (waiting) Sau điều khiển chuyển cho điều phối CPU để lựa chọn tiến trình khác thực thi Tiến trình bị phong tỏa chờ

semaphore s sẽ khởi động lại (bằng tốn từ w akeu p) khi tiến trình

đấy thi hành tốn tử signal Khi trạng thái tiến trình chuyển từ đ^ri

(waiting) sang sẵn sàng (ready)

type semaphore = record valuè:ínteger;

L: Danh sách tlẽn trình;

end; (a)

slgnal(S):

s.value:= s.value + 1; if S value < then begin

Lấy m ột tiến trình p từ S.L; wakeup(P);

end;

(b )

w aỉt(5):

5 value := s.value - 1; if s.value < 0

then begỉn

Đăt tiến trinh S.L; Phong tỏa tiến trình; end;

(c)

Hình 6.12 Cài đặt semaphore

Semaphore cài đặt dạng ghi (Hình 6.12a), với hai thành

phần: giá trị nguyên danh sách tiến trình đợi Tốn từ sig nal

lấy tiến trình danh sách đợi để kích hoạt Hình 6.12b c minh

họa toán từ signal w ait Khi gọi block, tiến trình tự treo (chuyển sang

(100)

phục tiến trình p bị phong tỏa Hai toán tử HĐH cài đặt dạng lời gọi hệ thống

rheo dịnh nghĩa cũ, semaphore thuộc kiểu busy waiting giá trị

semaphore không âm Semaphore theo kiều nhận giá trị âm, dó độ âm xác định số lượng tiến trình đợi semaphore Thực tế toán từ wait, đảo lệnh trừ lên trước lệnh kiểm tra Dễ dàng đặt danh sách tiến trinh đợi thông qua trường liên kết khối điều khiển tiến trinh (PCB) Mỗi semaphore chứa giá trị nguyên trỏ trỏ tới danh sách PCB Để thêm xóa tiến trình khỏi danh sách để bảo đảm điều kiện giới hạn đợi, hệ thống sử dụng hàng đợi Fll’O (first-in, first-out) Khi đó, semaphore trỏ tới hai đầu hàng đợi Chú ý cách sừ dụng semaphore xác khơng phụ thuộc vào cách cài đặl danh sách đợi semaphore

Tốn tử semaphore phải thực cách tồn vẹn đonn nhất,

nghĩa hai tiến trình khơng thể lúc lại thực thi tốn tử wait và

signal trên semaphore Đây vấn đề miền găng giải

quyết theo hai cách sau; Trong mơi trường có CPU, che ngắt

thực thi wait hoặc signal Khi thị tiến trình khác khơng thể

xen kẽ vào thị tốn tử Nhưng mơi trưịng nhiều CPU, khó thực việc chặn ngắt Chỉ thị tiến trình khác (chạy CPU khác nhau) xen kẽ với tùy ý Nếu phần cứng khơng có thị đặc biệt sừ dụng giải pháp phần mềm cho vấn đề miền găng, tình trạng busy waiting xuất với thủ tục wait signal Chúng ta loại bỏ tình trạng busy waiting chương trình ứng dụng bước vào miền găng Tình trạng busy waiting bị giới hạn miền găng

của toán từ w ait signal Do độ lớn miền nhỏ (nếu tối ưu

sẽ không vượt 10 thị), nên tình trạng busy waiting có xuất chi thời gian ngắn

6.4.4 Bế tắc Chết đói

(101)

dụ, hệ thống có hai tiến trình Po P|, tiến trình truy cập vào nai semaphore s Q để đặt giá trị 1:

Po Pl

wait(S); wait(Q); wait(Q); wait(S);

signal(S); signal(Q); signal(Q); signal(S);

Giả sừ Po thực thi wait(S), sau P| thực thi wait(Q) Khi thực thi

wait(Q), Po phải đợi Pi thực thi xong signal(Q) Tương tự,

thực thi wait{S), P] phải đợi Po thực thi xong signal(S) Rõ ràng

hai tốn tử signal này khơng thể thực thi, Po Pi rơi vào bế tắc l'a

nói tập họp tiến trình tình trạng bế tắc tiến trình tập đợi kiện tiến trình khác tập gây Phần lớn kiện trình bày liên quan đến cấp phát tài nguyên Tuy nhiên, có nhiều loại kiện khác gây bế tắc trình bày

chương sau v ấ n đề khác liên quan đến tình trạng bế tắc trạng thái bị

phong tỏa vĩnh viễn hay chết đói (starvation), tượng tiến trình chờ vơ định semaphore Phong tỏa vĩnh viễn xảy ta thêm xóa tiến trinh khỏi danh sách gắn với semaphore theo thứ tự vào sau trước (LIFO)

6.4.5 Semaphore nhị phân

Cấu trúc semaphore nói gọi counting semaphore, giá trị

nguyên nhận giá trị tùy ý Semaphore nhị phân semaphore mà giá trị nguyên chi Cài đặt semaphore nhị phân đơn giản counting semaphore tận dụng kiến trúc phần cứng Bây trình bày việc cài đặt counting semaphore dựa semaphore nhị phân Để cài đặt counting semaphore s semaphore nhị phân, ta sử dụng cấu trúc

dữ liệu sau: S1: binary-semaphore; S2: binary-sem aphore; C: integer Khởi

(102)

w a it ( S l) ;

c := c ị 1;

if (c <= 0) th e n signal (52); e lse s lg n a l( S l) ;

w a i i O l

w a it ( s l) ; C ị^= C - 1;

if c < th e n begin s ig n a l( S l) ; w a it(S );

end

s ig n a l( S l) ;

Hình 6.13 Cài đặt counting semaphore semaphore nhị phân 6.5 NHỮNG VÁN ĐÈ ĐỒNG Bộ KINH ĐIẺN

Trong phần này, trình bày số vấn đề đồng liên quan đến điều khiển song song Những vấn đề thường sử dụng toán mẫu dể kiếm tra phương pháp đồng hóa

6.5.1 Vấn đề đệm giới hạn (The Bounded-Buffer Problem)

ở trình bày giải pháp tổng quát cho vấn đề Bộ đệm giới hạn (xem mục 6.1) Giả sử vùng đệm dùng chung có khả lưu giữ n item Semaphore Mutex đảm bảo độc quyền truy xuất với vùng đệm khởi

lạo giá trị Semaphore em pty và full đếm số đệm vùng chưa sử

dụng số đệm sừ dụng Semaphore empty khởi tạo giá trị n, semaphore full khởi tạo giá trị Mã cho tiến trình producer consumer minh họa Hình 6.14

6.5.2 Vấn đề đọc - ghi (The Readers and Writers)

Nhiều tiến trình hoạt động đồng thời dùng chung đối tượng liệu (file hay ghi) Đối tượng truy xuất theo chế độ đọc (reader) chế độ cập nhật (writer) vào đối tưọTig dùng chung Hiển nhiên, khơng có chuyện xảy hai tiến trình reader đọc Tuy

nhiên, cần phải đồng m ột tiến trình writer số tiến trình khác

(103)

kiểm tra công cụ đồng vấn đề đọc “ ghi có số biến thể liỗn

quan đến quyền ưu tiên Dị đơn giản gọi vấn đề đọc “ ghi đầu

liên, u cầu khơng tiến trình reader phải đợi trừ có liến trình wri'.er phép sử dụng đối tượng dùng chung Nói cách khác, khơng tiến trình reader phải đợi tiến trình reader khác hồn thành có tiấn trình writer đợi

Tiền trình Sản xuát Tiến trình Tiêu thụ

Repeat Repeat

wait (fu!l);

Tạo item đặt nextp wait (mutex);

wait (empty); Chuyến item vào nextc

wait (mutex);

signal (m utex);

Đưa nextp vào đệm signal (em pty);

signal (mutex); Tiêu thụ item nextc

signal (full);

until false; until false;

Hình 6.14 Bài tốn sản xuẩt - tiêu thụ

Tiền trình GHI Repeat

Wait (wrt);

Thực việc Ghi

signal ( w r t ); until false;

Tỉèn trình ĐỌC Repeat

Wait(mutex);

readcount:= readcount -I- 1; if readcount=l then w ait(wrt); signa!(mutex);

Thực việc Đọc

wait(mutex):

readcount := readcount-1 ; if readcount=0 then signal(wrt); signal(mutex);

until false;

Hình 6.1 Ố Reader vâ Writer

Trong dị Ihứ hai, tiến trình writer sẵn sàng ghi Tức tiến trình writer đợi để truy cập vào đối tượng chia sẻ, không tiến trinh reader đọc Chú ý rằng, hai phiên có

thể dẫn đến tình trạng "chết đói": trường họp writer, trường hợp

(104)

wrt \à số nguyên readcount Giá trị khỏd tạo semaphore mutex wrt 1, cúa readcount Semaphore wrt dùng chung hai tiến trình writer reader, semaphore mutex dùng để đảm bảo độc quyền truy xuấl với readcount Readcount đếm số tiến trình đọc đối tượng Semaphore wrt thực độc quyền truy xuất writer Ngồi wrt cịn dùng bời tiến trình reader cuối bước vào hay bước miền găng Hai tiến trình minh họa Hình 6.15 Chú ý, tiến trình writer miền găng với n tiến trìnli reader đợi, có tiến trình reader xếp hàng wrt n - tiến trình cịn lại xếp hàng mutex Khi tiến trình writer thi hành signal(wrt), hệ thống

cỏ thể khơi phục lại m ột tiến trình reader, tiến trình writer

đang chờ Lựa chọn phụ thuộc vào điều phối

6.5.3 "Bữa ăn tối triết gia"

Giả sử có triết gia suy nghĩ ăn Các ư-iết gia ngồi quanh bàn trịn, Irên bàn có nồi cơm đũa (Hình lóa) Các triết gia khơng Irao đổi với Khi đói triết gia cố gắng nhặt hai đũa gần Trong lần lấy, triết gia nhặt lên đũa Triết gia "cướp" đũa tay người khác Khi có đôi đũa, Iriết gia ăn buông đôi đũa cùa sau ăn xong Sau triết gia lại tiếp tục suy nghĩ Bữa ăn triết gia xem vấn đề đồng hóa kinh điển, khơng phải quan trọng thực tế mà cịn ví dụ lớp lớn vấn đề kiểm soát đồng Chẳng hạn, việc cấp phát tài nguyên cho tiến trình cho hệ thống không rơi vào trạng thái bế tắc hay chết đói

Một giải pháp đơn giản xem đũa semaphore Hành động Nhặt đũa thực qua tốn tử wait hành động Bng đũa thực qua tốn tị signal Như vậy, liệu chia sẻ là: chopstick: array [0 4] of semaphore;

ở tất phần từ mảng chopstick được khởi tạo c ấ u trúc

(105)

• Chỉ cho phép triết gia nhặt lên đũa đôi đũa chưa đuợc sừ dụng

• Sử dụng giải pháp phi đối xứng Triết gia mang sổ lẻ nhặt cũa

trái trước đũa phải, triết gia mang sổ chẵn nhặt cũa phải trước đũa trái

Bất giải pháp cho vấn đề Bữa ăn triết gia phải ngăn ngừa trường họp triết gia bị chết đói Giải bế tắc chưa loại trừ tình trạng chết đói

lìiu ậ t tốn Triềt gia: Repeat

w a it (chopstick[i] );

w a it (c h o p slck[i+l mod 5]); Ăn

signal (chopstick[i]);

signal (c h o p stick [i+ l mod ]); Suy nghĩ

U n til false; (b) Hình 6.16 Bữa ăn tối triết gia

6.6 CÁC GIẢI PHÁP ĐỒNG Bộ CAO CÁPm

6.6.1 Monitor biến điều kiên Condition

Monitor - cấu trúc đồng mức cao tập họp toán tử người lập trình định nghĩa trước Khai báo kiểu monitor gồm hai phần: phần khai báo biến cục phần thân thủ tục hay hàm thao tác kiểu Cú pháp Monitor minh họa Hình 6.17b Chú ý rằng, thủ tục,/hàm định nghĩa bên monitor truy cập tới biến khai báo cục monitor tham số hình thức Tương tự biến cục monitor truy cập qua thủ tục cục

(106)

bộ Vi vậy, bồ sung thêm vào monitor chế đồng khác cấu trúc condition Lập trình viên cần tự viết lược đồ đồng riêng để có

thé dịnh nghĩa nhiều biến thuộc kiểu condition Chỉ tốn tử wait

signal mới gọi biến kiểu condition Tiến trình gọi wait bị

treo tiến trình khác gọi signal trên biến điều kiện tương ứng

Toán tir x.signal khơi phục tiến trình bị treo Neu khơng có tiến

trinh bị treo, tốn tử signal khơng có tác dụng, nghĩa trạng thái X sẽ

giữ nguyên thể signal chưa thi hành (Hình 6.17a) Điều khác với

tốn tử signal sem aphore ln ln biến đổi trạng thái semaphore.

H đọH cóc Ị- ^ tiế n trin h E K h u vự c đợ i CÙ Ỗ M o n ito r

í

LƠI t B ié n cy c b ộ I

ĩiãRTrT! n

B iể n c o n d itio n T h ú Iv c

T hù tụ c k M» khM đ ộ n g Lồi

T y p e m o n l t o r - n a m e = m o n ĩ t o r

Khai b o biến

P r o c e d u r e P l ( ) ;

Begin e n d ; P r o c e d u r e P2(

Begin e n d ;

P r o c e d u r e e n tr y Pn( ); Begin e n d ;

B EGIN

Mã khởi t o END

(a) (b)

Hình 6.17 Monitor

Giả sử tiến trình p gọi tốn tử x.signaio tiến trình Q treo X

(kiểu condition) Rõ ràng Q khôi phục lại để tiếp tục thi hành, sau x.signaio, p phải đợi không p Q hoạt động đồng

thời monitor Chú ý hai tiến trình mặt khái niệm tiếp tục thực thi cơng việc bình thường Có thể có hai khả sau;

(1) p đợi đến Q rời khỏi monitor, đợi điều kiện khác (2) Q đợi đến p rời khỏi monitor, đợi điều kiện khác

(107)

6.6.2 Bài toán "Bữa ăn tối triết gia"

Chúng ta minh họa khái niệm cách trình bày giải pháp khơng có bế tắc cho tốn Bữa ăn tối triết gia Chú ý ràng, triết gia phép nhặt đũa lên chúng chưa nhặt, cầ n phân biệt khác ba trạng thái triết gia, ta có cấu trúc liệu

state:array[0 4] of (thinking, hungry, eating) Triết gia thứ i có thể đặt giá trị state[i] = eating hai người ngồi cạnh không ăn (stateti + m od 5] #

eating and statep + mod 5] # eating), ta khai báo self: array[0 4] of condition.

Triết gia thứ i phải chờ đói chưa có đủ đũa Việc cấp

phát đũa kiểm soát monitor dp - thể kiểu monitor dining-philosopher được minh họa Hình 6.18 Triết gia trước ăn phải gọi pickup Khi đó, tiến trình "triết gia" bị treo tạm thời Sau ăn xong, triết gia gọi toán từ putdown tiếp tục suy nghĩ Triết gia thứ i sử dụng toán tử putdown pickup theo trình tự: dp.pickup(i) => Ăn

dp.putdow n(i) Dễ dàng chứng minh giải pháp đảm bảo khơng có hai người ngồi cạnh đồng thời ăn khơng xảy tình trạng bế tắc Tuy nhiên, ý triết gia bị chết đói

T y p e dining-philosoper = m o n i t o r

v a r State : array[0 4] o f (th inkin g, hu ngry, eating ); v a r self ; array[0 4] o f c o n d itio n :

p ro c e d u re entry pickup (1:0 , 4) ■{ s ta te [i]:= hungry;

test(i);

if state[i] # eating then self[i].w alt; >

p r o c e d u r e entry putdown (i;0 4) {

s ta te [i]:= thinking;

te s t (H-4 mod 5); Các hàm cục te s t (i + l mod 5);

>

procedure test (k:0 4) {

if (state [k +4 mod 5] # eating) a n d

(state[k]=: hungry) a n d

(sta te [k -i-l mod ]# eating) { sta te [k ]:= eating; se lf[k j.sig n a l; >;

} B E G I N

f o r i: = to s t a t e [ij:= thinking; E N D

Mầ khởi tạo

(108)

6.6.3 Cài đặt monitor semaphore

H e m F

Afait(m utex): Thân hàm F

if next-count > signal (next) else signal (m utex);

x.waito {

x-count:= x-count + 1; if next-count >

signal (next) else

signal (m utex); wait (x-sem):

x-count:= x-count - 1:

}

x sỉgnaỉO {

if x-count > 0 { next-count := next- count + 1;

signal (x-sem); watt (next );

next-count : = next- count -1;

>

a) b) c)

Hinh 6.19 Cài đặt monitor condition

Mỗi monitor gắn với semaphore mutex (được khởi tạo giá trị 1) Tiến Irỉnh phải thực thi wait(mutex) trước bước vào monitor thực thi signal(mutex) sau rời khỏi monitor Tiến trình gọi wait phải đợi đến tián trình chiếm giữ semaphore rời khỏi semaphore, bị dìmg lại tạm ihời, nên hệ thống cài đặt thêm semaphore next khởi tạo Tiến trình semaphore mutex bị phong tịa next Biến

nguyên next-count đếm số tiến trình bị phong tỏa next Vì vậy, thủ tục F

cải tiến minh họa Hình 6.19a Như vậy, đảm bào độc quyền truy xuất monitor

Với X kiếu condition, ta có semaphore x-sem biến nguyên x-count,

cà hai khởi tạo Toán tử x.wait x.signal được minh họa

Hinh 6.19b c

Chuyển sang vấn đề thứ tự phục hồi tiến trình bên monitor,

nếu c ó số tiến trình bị treo biến X kiểu d ition m ột tiến trình

nào thi hành tốn tử x.signaio, phải xác định tiến trình bị treo khôi phục? Một cách giải đơn giản thuật tốn FCFS: tiến trình dợi lâu khơi phục trước Tuy nhiên, thuật tốn đơn giản nảy khơng phù hợp nhiều tình Vì vậy, người ta sử dụng

cấu trúc conditional-w ait có dạng: x.wait(c); c biểu thức kiểu

nguyên tính thi hành toán từ wait Giá trị c giá trị ưu tiên lưu giữ với tên tiến trình bị treo Khi tốn tử x.signaio thi

(109)

Truy cập sử dụng Tai nguyên; t đơn vỊ thời gian

R release;

v a r busy ; boolean; X ; condition; procedure acquire (time: integer)

{

if busy th en x.wait(time ); b u sy:= true;

>

procedure reiease() { b u sy:= false; X s i g n a l ; }

BEGIN

b u sy:= false; E N D

a ) b)

Hình 6.20 Vi dụ cấp phát tài nguyên

Để minh họa cho kỹ thuật này, xét monitor điều khiển việc cấp phát tài nguyên cho tiến trình cạnh tranh minh họa Hình 6.20b Khi yêu cầu tài nguyên, tiến trình cần rõ thời gian dự kiến sử dụng tài nguyên tối đa Monitor cấp tài ngun cho tiến trình có thời gian yêu cầu ngắn Tiến trình muốn truy cập tới tài nguyên phải thực Hình 6.20a đây, R thuộc kiểu resource-allocation Tuy nhiên, monitor khơng đảm bảo trình tự truy cập trước bảo tồn Cụ thể:

• Tiến trình truy cập trái phép tới tài nguyên

• Tiến trình khơng giải phóng tài ngun cấp phát

• Tiến trình thử giải phóng tài ngun mà chưa u cầu • Tiến trình u cầu tài nguyên liên tiếp hai lần (mà

chưa giải phóng tài nguyên trước)

Chú ý, cấu trúc miền găng có khó khăn tương tự, mặt chất, khó khăn động lực để phát triển cấu trúc vùng găng monitor Trước phải lo lắng cách sử dụng semaphore xác Bây lo lắng việc sử dụng xác tốn tử mức cao (mà trình biên dịch khơng thể giúp đỡ lập trình viên nữa)

Một giải pháp cho vấn đề đặt toán tử truy cập

tài nguyên bên monitor resource-allocation. Thế nhưng, điều dẫn

(110)

phai Ihuật toán mà mong muốn Đẻ đảm bảo tất liến Irình thực theo Irinh tự xác, phải giám sál tất chưong trình có

sư dụng monitor resource-allocalion tài nguyên Có hai điều

phải kiếm tra để đảm bảo tính đắn hệ thống Thứ nhất, tiến trình người dùng phải sử dụng tốn tử monitor theo thứ tự Thứ hai, phải chắn tiến trình "bất hợp tác" khơng thể vi phạm độc quyền truy xuất cùa monitor, tức truy cập trực liếp tới tài nguyên dùng chưng mủ không sử dụng quy tắc truy cập

6.7 Cơ CHẾ IPC

Những chế đồng đòi hỏi tiến trình có biển dùng chung Trong pliần này, trình bày chế truyền thơng liên tiến trình cho phép tiến trình trao đổi liệu đồng hoạt động thông qua việc chuyển thông điệp Thông điệp (message) khối thông tin theo khuôn dạng (đã thống trước) trao đổi hai tiến trình Cơ chế bảo vệ nhớ HĐH đại không cho tiến trình xâm nhập dù vơ tình hay cố ý vào không gian nhớ tiến trinh khác Để thực trao đơi thơng tin, HĐH đóng vai trị trung chuyển thơng điệp IPC chế cho phép tiến trình chép nội dung thông tin muốn gửi vào thông điệp sau HĐH chép nội dung thơng điệp vào khơng gian địa tiến trình nhận (Hình 6.21)

K b ô n g g ia o đ ịa c b ì Po b Ơ D g g ỉao đ ịa c h ì P ị

Hình 6.21 Cơ chế truyền thơng liên tiến trinh 6.7.1 Hộp thư

(111)

nhận Hộp thư để khơng gian HĐH (Hình 6.22b) khơng gian địa tiến trình nhận (Hình 6.22a) Nếu đặt khơng gian người nhận, íhủ tục Iihận cài đặt thư viện người dùng trình biên dịch tài phải cấp phát nhớ làm hộp thư Tiến trình người dùng chạy vơ tình phá hỏng hộp thư Nếu hộp thư đặt khơng gian HĐH, phía nhận chi nhận thông điệp tường minh gọi thủ tục nhận Hộp thư khơng bị tiến trình người dùng thay đổi (do đặt không gian HĐH), điều lại khiến HĐH phải tốn nhớ làm hộp thư

KhÔBg g ỉ a n đ ị j c b i Pq K h B g g U B đ ị i c b ì Pj

ĩ U ề g t i ề

c h ỉ ầ s ả

s « n d ( Ps- )■

H ỏ n I b c a P}

lifo copf

) ;

Tki tyc setđ

G ỉ a o d iệ o với H O H

(a)

K b ó i g g l i B đ Ị a c b i p O

T k t e g t t i c b Ị

•*nđ( Pw >'■

K b a g s ta i đ{« chiP i

GUo dlệo HĐII

ĨMid

r*c«l

Hòoa I h c i p

TỊế

i( -) ;

(b)

Hình 6.22, Hộp thư

6.7.2 Chuẩn thơng điệp

Để hai bên hiểu nhau, thơng điệp phải tuân theo quy lắc Thông thường, thông điệp có tiêu đề chứa thơng tin liên quan đến thơng điệp (chẳng hạn định danh tiến trình gửi, nhận, kích thước thơng điệp, )

6.7.3 Thao tác gửi nhận

Dung lượng hộp thư số lượng thơng điệp tối đa hộp thư chứa Thuộc tính nhận giá trị:

• Dung lượng 0: Hộp thư khơng thể cỏ thơng điệp đợi nhận Tiến trình gửi phải đợi đến tiến trình phía bên nhận thơng điệp Hai tiến trình phải đồng hóa truyền thơng điệp

(112)

việc Khi hộp thư đầy, tiến trình gửi phải đợi hộp ihư có chỗ trống

• Dung lưọTig vơ hạn: Mọi thơng điệp đặt hộp Ihư Tiến trình gửi khơng phải ngừng

rrường hợp dung lưọTig gọi chuyển thông điệp khơng có

đệm; cịn hai trường hợp đệm tự động Trong trường hợp dung

lượng khác 0, sau gửi thành công thông điệp, tiến trình khơng xác định

dược thơng điệp đến đích Nếu thơng tin quan trọng q trìnli tính tốn, tiến trình gừi phải hỏi tiến trình nhận cách tường minh để biết thơng điệp đến đích Ví dụ, tiến trình p gừi thơng điệp đến Q tiếp tục thực thi thơng điệp đến đích Tiến trình p thực hai lệnh sau: Send(Q, mess) Receive(Q, mess), cịn tiến trình Q thực thi hai lệnh; Receive(P, mess) Send(P, ack) Kiểu giao tiếp gọi giao tiếp đồng

Có trường hợp đặc biệt khơng nàm hồn tồn ba giải pháp nêu trên;

• Sau gửi thơng điệp, tiến trình tiếp tục thực thi Tuy nhiên, tiến trình nhận chưa nhận thơng điệp mà tiến trình gửi lại tiếp tục gửi tiếp thơng điệp khác, thơng điệp bị u điểm phương pháp thơng điệp lón khơng bị lặp nhiều lần Nhược điểm làm phức tạp cơng việc lập trình Các tiến trình cần đồng hóa cách tường minh để đảm bảo thơng điệp đến đích bên gửi lẫn bên nhận không đồng thời thao tác đệm

• Tiến trình sau gừi thơng điệp đợi phía bên trả lời Phương pháp sử dụng HĐH Thoth Thơng điệp

có kích thước cố định (8 từ) Tiến trình p sau gửi thơng điệp

bị phong tỏa phía nhận nhận thông điệp gửi thông điệp trả lời reply(P, mess) Thông điệp trả lời nằm đè lên vùng đệm thông điệp gốc Điểm khác biệt thông điệp gửi trà lời thông điệp gửi làm tiến trình gửi bị phong tỏa, cịn thơng điệp trả lời làm hai tiến trình tiếp tục hoạt động

(113)

năng Mọi hệ thống RPC dựa ý tưởng là, hệ thống có CPU, lời gọi thủ tục hay chương trình giống việc chuyển thơng điệp, tiến trinh gửi bị treo tiến trình nhận gửi thông điệp phản hồi biên nhận Sau thấy RPC mở rộng cho phép tiến trình máy tính khác phối họp làm việc với

6.7.4 X lý biệt lệ (E x c e p tio n C o n d itio n s )

ư u điểm hệ thống chuyển thông điệp bật mơi trường phân tán tiến trình nằm máy tính khác Tuy nhiên, khả xuất lỗi môi trường lớn, cần chế khẳc phục (xử lý biệt lệ)

Tiến trình bị kết thúc

Tiến trình gửi nhận bị phong tỏa trước xử lý xong thông điệp Tinh khiển thơng điệp khơng nhận tiến trình phải đợi thơng điệp không đến Xét trường họp sau;

1 Tiến trình p đợi thơng điệp từ tiến trình Q kết thúc Nếu khơng có chế giải quyết, p bị phong tỏa vĩnh viễn Trong trường hợp này, hệ thống cho p kết thúc báo cho p biết Q kết thúc

2 Tiến trình p gửi thơng điệp cho tiến trình Q bị ngất Khơng có vấn đề gi xảy phương pháp đệm tự động, p tiếp tục hoạt động Nếu p cần xác định thơng điệp Q xử lý chưa, p phải lập trình tường minh để đợi xác nhận từ Q Trong trường họp khơng có đệm, p bị phong tỏa hoàn toàn Giống trường họp 1, hệ thống cho p kết thúc, báo cho p biết Q kết thúc,

M ất thông điệp

Thông điệp p gửi cho Q bị (do lỗi phần cứng hay lỗi đưịmg truyền) Có ba phương thức khắc phục điều này:

1 HĐH chịu trách nhiệm phát sau gửi lại thơng điệp bị Tiến trình gửi có trách nhiệm phát truyền lại thông điệp

(114)

3 HĐH chịu trách nhiệm phát thơng điệp Sau HĐH báo cho tiến trình gửi thơng điệp bị Tiến trình gửi tự động đưa phương thức giải

Không phái việc phái lỗi lúc quan trọng Trên thực tế, bèrj cạnh giao thức mạng không đảm bảo chuyển thơng điệp tin cậy có giao thức đảm bảo tính tin cậy chuyển (TCP) Chính người sử dụng phải rõ (nghĩa báo với hệ thống, tự lập trình) xem có cần đảm bảo tin cậy q trình truyền khơng

Làm để phát thông điệp? Phương pháp phổ biến sừ dụng chế timeout (hết thời gian) Sau gửi thông điệp đi, tiến trinh gửi đợi thơng điệp biên nhận từ phía bên khoảng thời gian định trước Nếu hết khoảng thời gian mà chưa nhận phản hồi, HĐH (hoặc tiến trình) xem thơng điệp gửi lại thơng điệp Có thể thơng điệp khơng bị mất, mà đến muộn Khi đó, có hai thông điệp truyền qua mạng Có thể sừ dụng kỹ thuật đánh số thứ tự để phân biệt thông điệp

Thông điệp bị lỗi

Thơng điệp có Ihể đến đích, bị lỗi đường truyền (ví dụ nguyên nhân nhiễu xuất kênh truyền) Trường họfp giống trường hợp thông điệp Thường HĐH phải gửi lại thông điệp gốc Các kỹ thuật tổng kiểm tra (checksum) hay bit chẵn lẻ (parity bit) sừ dụng để phát lỗi thông điệp

6.8 N H Ậ N X É T

Khi nhiều tiến trình kết hợp với để chia sẻ liệu, HĐH phải đảm bảo độc quyền truy xuất Một cách giải đảm bảo thời điểm có tiến trình (hay thread) thực thi đoạn mã miền găng Nhiều thuật toán đưa để giải vấn đề miền găng Nhược điểm việc sử dụng đoạn mã mức người dùng tinh trạng busy waiting Semaphore khắc phục nhược điểm Semaphore sử dụng để giải nhiều vấn đề đồng hóa cài đặt hiệu phần cứng hỗ trợ thao tác đơn Vùng găng sử dụng để giải vấn đề độc quyền truy xuất

8' GTNLHĐH-DN

(115)

cũng vấn đề đồng cách an toàn hiệu Monitor cung

cấp kỹ thuật đồng để chia sẻ loại liệu trừu tượng Biến kiểu

condition cung cấp phương pháp cho phép thủ tục tự phong tỏa nó phép khơi phục

C Â U HỎI ÒN T Ậ P

1 Tại phải chia sẻ thông tin vấn đề g ặ p phải chia sẻ thông tin?

(116)

Chương 7 BÉ TÁC

Trong hệ thống, nhiều tiến trinh cạnh tranh quyền sử dụng lượng hữu hạn tài nguyên Khi yêu cầu tài nguyên mà chưa đáp ứng, tiến trình bị phong tỏa Có thể tiến trình trạng thái phong tỏa nếu tài nguyên yêu cầu bị tiến trình khàc trạng thái phong tỏa

chiếm giữ Tình gọi bế tắc và nói qua phần

semaphore Chương 6 Chương trinh bày phương thức giải

quyết bể tắc HĐH.

7.1 M Ô HỈN H H Ệ T H Ố N G

Trong trình hoạt động, tiến trình cạnh tranh quyền sử dụng tài nguyên hệ thống Có nhiều kiểu tài nguyên, kiểu có nhiều đối tượng giống Ví dụ, khơng gian nhớ, CPU, file thiết bị vào/ra (như máy in đĩa từ) kiểu tài nguyên Nếu hệ thống có hai

C P U , kiểu tài nguyên C P U có hai đối tượng Khi tiến trình u cầu kiểu tài ngun, hệ thống cấp phát đối tượng kiểu lài ngun cho tiến trình Tiến trình sử dụng nhiều tài ngun để hồn thành cơng việc mình, nhiên, lượng tài nguyên tiến trình yêu cầu

không thể vượt tổng lượng tài nguyên hệ thống Tiến trình sử dụng

lài nguyên theo trình lự:

1 u cầu (Request); Nếu khơng hệ thống đáp ứng tiến trình phải đợi có

2 Sử dụng (Use): Tiến trình sử dụng tài nguyên

3 Giải phóng (Release): Tiến trình trả tài nguyên cho hệ thống

(117)

HĐH thường cung cấp cho chương trình người dùng lời gọi hệ thống thực yêu cầu giải phóng thiết bị; yêu cầu mờ đóng file; yên cầu cấp phát giải phóng nhớ Yêu cầu giải phóng tài nguyên khác thực thông qua thao tác wait signal Irên semaphore HĐH có bảng tài nguyên hệ thống, qua xác định trạng thái cấp phát tài nguyên (đã cấp phát hay chưa cấp phát, cấp phát cho a i, Neu yêu cầu tài nguyên mà khơng đáp ứng, tiến trình bị phong tỏa hàng đợi tài nguyên

Tập hợp tiến trình trạng thái bế tắc tiến trình đợi kiện gây tiến trinh khác nằm tập hợp quan lâm chủ yếu đến kiện chiếm giữ giải phóng tài nguyên

7.2 ĐẶC ĐIẺM CỦA BÉ TÁC

Bế tắc tình trạng khơng mong muổn, vi xảy khơng tiến trình kết thúc, tài ngun hệ thống bị chiếm giữ Trước trình bày giải pháp xử lý, cần tìm hiếu sổ đặc điểm tượng

7.2.1 Điều kiện cần

Bế tắc xảy bốn điều kiện sau đồng thòd xuất hiện:

1 Độc quyền tru y xuất (M utual Exclusion): tài nguyên bị nắm giữ thuộc kiểu dùng chung Nghĩa là, thời điểm có tối đa tiến trình quyền sử dụng lài nguyên G iữ chờ (Hold and wait): Phải có tiến trình nắm giữ tài

nguyên đồng thời lại chờ tài ngun bị tiến trình khác chiếm giữ Khơng chiếm đoạt (No preem ption): Hệ thống lước đoạt

tài nguyên tiến trình, trừ tiến trình chủ động giải phóng tài ngun khơng cần thiết

4 Vòng đợi (C ircular wait): Tồn tập họp tiến trinh (Po, P | , P n } trạng thái chờ tài nguyên Trong Po chờ tài nguyên bị

Pi nắm giữ, Pi chờ tài nguyên bị ? nắm giữ, , Pn-I chờ tài nguy'ên

bị Pn nắm giữ Pn chờ tài nguyên bị Po nắm giữ

(118)

kiện khơng hẳn hồn tồn độc lập với Tuy nhiên, thuận tiện xét tách biệt điều kiện

7.2.2 Đồ thị phân phối tài nguyên

Dồ thị có tập đỉnh V tập cung E Tập đỉnh V phân thành hai

loại: p = {P|, P2,. , Pn} úng với tiến trình R = {Ri, R2, ', Rm} ứng

với kiểu tài nguyên hộ thống Cung yêu cầu p, —» Rj hướng từ tiến trình

1^1 tới tài ngun R j , có ý nghĩa P i yêu cầu đối tượng kiểu tài

nguyên Rj thời Pi đang trạng thái đợi Cung phân phối Rj p,

liướng từ tài nguyên Rj tới tiến trình Pị, có nghĩa đối tượng kiểu

lài nguyên Rj cấp phát cho tiến trình Pị Trên Hình la, tiến trình Pị

được biểu diễn cung trịn, tài ngun Rj hình vng Do kiểu tài ngun

llj có nhiều đổi tượng, chủng ta biểu diễn đối tượng chấm

nhỏ bên hình vng Lưu ý, cung u cầu nối tới hình vng Rj,

trong cung phân phối phải rõ xuất phát từ chấm bên hình vng

(a) (b) (C)

Hình 7.1 Đồ thị phân phối tài nguyên

Khi tiến trình Pj yêu cầu đối tượng tài nguyên Rj, hệ thống bổ sung một

cung yêu cầu vào đồ thị phân phối tài nguyên Khi đáp ứng yêu cầu, hệ thống chuyển cung yêu cầu thành cung phân phối Cung phân phối bị xóa bỏ tiến trình giải phóng tài nguyên

Đồ thị phân phối tài ngun Hình 7.1 a mơ tả tình sau:

P = { P i ,P2, P3},R = {Ri,R2,R3.R4},

(119)

số đối tượng tài nguyên: Ri có đối tượng, R2 có đối tượng,

R3 có đối tượng, R4 có đối tượng

Trạng thái tiến trình; Pi giữ đổi tượng tài nguyên R2

đang đợi đối tượng R] P2 giữ đổi tượng Ri đợi thẽm

một đối tượng R3 P3 giữ đối tượng R3

Với đồ thị phân phối tài nguyên, thấy, khơng có chu trình đồ thị khơng tiến trình bị bế tắc Tuy nhiên, đồ thị có chứa chu trình, bế tắc chưa chắc, mà có khả xuất Nếu kiểu tài nguyên có đối tượng, chu trình dẫn đến bế tắc tiến trình chu trình rơi vào trạng thái bế tắc Khi đó, chu trình đồ thị điều kiện cần đủ cho trạng thái bế tắc Nhưng, kiểu tài nguyên có nhiều đối tượng, chu trình khơng thiết kéo theo bế tắc (chu trình điều kiện cần chưa đủ)

Xét đồ thị phân phổi tài nguyên Hình 7.1b, giả sử P3 yêu cầu

đối tượng R2 Do hệ thống khơng cịn đối tượng tài nguyên R2 rỗi nên cung

yêu cầu P3 —^ R2 thêm vào đồ thị Lúc này, xuất hai chu trình:

(P, ^ R, P2 ^ r Ì P3 R2 -> Pi) (P2 ^ R3 P3 ^ R2 P2)

Ba tiến trình Pi, P2 P3 bế tắc: P2 đợi R3 - bị chiếm dụng P3 P3 đợi Pi

và P2 giải phóng R2, cịn Pi đợi P2 giải phóng R| Đồ thị phân phối tài

ngun Hình 7.1c có chu trình (Pi —^ Ri —> P3 —> R2 —> Pi) Tuy nhiên,

khơng có bế tắc P4 giải phóng đối tượng R2 Tài nguyên

sau cấp phát cho P3 (chu trình bị phá vỡ) Tóm lại, đồ thị

phân phối tài ngun khơng có chu trình, hệ thống chắn không ỏ trạng thái bế tắc Ngược lại, có chu trình, hệ thống rơi vào trạng thái bế tắc Chúng ta cần ý tới điểm giải tượng bế tấc

7.2.3 Giải bế tắc

Có ba giải pháp cho tượng bế tẳc sau:

1 Đảm bảo hệ thống không roi vào trạng thái bế tắc

2 Cho phép hệ thống rơi vào trạng thái bế tắc sau khắc phục Bỏ qua tất vấn đề giả định bế tắc không xuất

(120)

Phần mô tả ngắn gọn giải pháp, chi tiết trinh bày phần sau Đe đảm bảo không xảy bế tắc, hệ thống sừ dụng phương pháp Ngăn chặn phương pháp Tránh Ngăn chặn phương pháp ngăn không cho bổn điều kiện cần bế tắc xuất Ngược lại, phưcxng pháp tránh đòi hòi tiến trình phải báo trước cho HĐH thơng tin liên quan đến nhu cầu tài nguyên minh Với thơng tin biết trưởc này, tiến trình xin cấp phát tài nguyên, hệ thống định liệu có nên cấp phát cho tiến trình khơng Với yêu cầu, hệ thống xét lượng tài nguyên chưa cấp phát, lượng tài nguyên cấp phát, yêu cầu cấp phái giải phóng tài nguyên sẳp xuất để định xem có thỏa mãn yêu cầu hay không

Nếu hệ thống không sừ dụng phương pháp hai phương'pháp trên, trạng thái bế tắc có khả xuất Khi hệ thống cần xác định bố tắc xuất chưa sau khắc phục

Nếu hệ thống không đảm bảo bế tắc không xuất khơng có

chế kiểm tra khắc phục bế tắc, hệ thống rơi vào trạng thái bế tắc

mà khơng nhận Lúc đó, hiệu suất tổng thể hệ thống bị suy giảm nhiều tài nguyên bị tiến trình trạng thái phong tỏa chiếm giữ, ngày nhiều tiến trình rơi vào bế tắc yêu cầu thêm tài nguyên Cuối cùng, hệ thống ngừng hoạt động phải khởi động lại cách thủ cơng Mặc dù giải pháp không ổn, thực tế lại sử dụng rộng rãi Nếu bế tắc xuất không thưòng xuyên (một lần/năm) việc cài đặt giải pháp Ngăn chặn, Tránh hay Phát Khắc phục bế tắc tốn

7.3 NGĂN CHẶN BÉ TẮC

Bế tấc có bốn đặc điểm xem điều kiện cần Như vậy, cần ngăn không cho bốn điều kiện xuất ngăn chặn bé tắc

7,3.1 Độc quyền truy xuất (Mutual Exclusion)

(121)

liên quan tới tượng bế tắc Do chất íài nguyên, nên ngăn chặn bế tắc cách loại bỏ điều kiện độc quyền truy xuất

7.3.2 Giữ chờ

Để ngăn chặn điều kiện Giữ Chờ, phải đảm bảo không nắm giữ tài nguyên tiến trình yêu cầu tài nguyên Giải pháp thứ trước thực thi, tiến trình yêu cầu tất tài nguyên cần thiết Giải pháp thứ hai là, trước yêu cầu thêm tài ngun, tiến trình phải giải phóng tất tài nguyên chiếm giữ Để minh họa khác biộl hai giải pháp này, xét tiến trình lưu liệu từ băng từ vào ổ cứng, xếp file, sau in kết máy in Nếu tiến trình yêu cầu tất tài nguyên từ đầu phải yêu cầu ba loại tài nguyên (băng từ, ổ cứng máy in) Mặc dù sử dụng vào giai đoạn cuối, tiến trình giữ máy in suốt trình thực thi Phuofng pháp thứ hai cho phép tiến trình yêu cầu băng từ ổ đĩa lúc đầu Tiến trình chuyển liệu từ băng từ vào đĩa, giải phóng hai tài ngun Tiến trình tiếp tục yêu cầu ổ đĩa máy in Sau chuyển liệu từ ổ đĩa máy in, tiến trình giài phóng tất tài ngun kết thúc Các giải pháp có hai nhược điểm Thứ nhất, hiệu sử dụng tài nguyên thấp nhiều loại tủi nguyên bị chiếm giữ từ đầu chưa sử dụng Thứ hai, xảy tượng chết đói Tiến írinh phải đợi vơ hạn tài nguyên cần thiết bị cấp phát cho tiến trình khác

7.3.3 Không chiếm đoạt

(122)

sẽ phái đợi Trong bị phong tỏa, số tài ngun tiến trình In thu hồi cho tiến trình khác Tiến trình khởi động lại dược cấp phát thêm tài nguyên lấy lại tài nguyên bị thu hồi trạng thái phong tỏa Phương pháp thường áp dụng cho tài nguyên mà trạng thái lưu lại khởi tạo dễ dàng (thanh ghi hay lửiớ trong), áp dụng cho loại tài nguyên máy in liay băng từ

7.3.4 Vịng đợi

Có thể ngăn chặn điều kiện "vòng đợi" cách đánh số thứ tự cho tất tài nguyên, tiến trình phải yêu cầu tài nguyên theo thứ tự tăng dần

Giả sử R = {Ri, R2v Rm} tập tài nguyên, ta gán cho tài nguyên

số thứ tự (STT) nguyên Cách đánh STT phải đảm bảo so sánh STT cùa hai tài nguyên, nhằm xác định tài nguyên đứng irước, tài nguyên đứng sau Nghĩa mặt hình thức, ta định nghĩa

hàm F: R N, N tập số ngun Ví dụ, R bao gồm băng

lừ, ổ đĩa máy in hàm F định nghĩa sau: F(băng từ) =1, F(ổ đĩa) = 5, F(máy in) = 12 Xét phưoTig pháp ngăn chặn "bế tắc" sau đây; Tiến trình phải yêu cầu tài nguyên theo STT tăng dần Nghĩa là, lúc đầu tiến trình yêu cầu tài nguyên Rj Sau đó, yêu cầu thêm tài

nguyên Rj thì F(Rj) > F(Rj) Nếu cần nhiều đối tượng kiểu

lài nguyên, tiến trình phải yêu cầu yêu cầu Ví dụ, với hàm F trên, muốn sử dụng băng từ máy in thời điểm, tiến trình phải yêu cầu băng từ trước yêu cầu máy in Giải pháp tương đưong

là yêu cầu Rj, tiến trình phải giải phóng tất tài ngun Ri

F (R i) > F(Rj) Nếu sử dụng hai quy tắc này, vịng đợi khơng xảy

ra (có thể chứng minh phản chứng)

7.4 TRÁNH BẾ TẤC

(123)

ngun Ví dụ, hệ thống có băng từ máy in, hệ thổng biết tiến trình p yêu cầu băng từ trước yêu cầu máy in Ngược lại, tiến trình Q yêu cầu máy in trước băng từ Với hiểu biết tiến trình u cầu giải phóng tài ngun, hệ thống định việc cấp phát tài nguyên Khi có yêu cầu, hệ thống xét trạng thái cấp phát tài nguyên (các tài nguyên có; tài nguyên cấp phát; yêu cầu xin giải phóng tài nguyên tương lai) để định xem có cấp phát tài nguvên cho tiến trình hay khơng Các thuật tốn khác địi hỏi biết trước kiểu thông tin khác Thông thường, tiến trình khai báo số lượng cực đại kiểu tài ngun mà cần

7.4.1 Trạng thái an tồn

Ilệ thống trạng thái an toàn cấp phát đầy dủ tài nguyên cho tiến trinh mà không bị "bế tắc" Định nghĩa cách hình thức, hệ thống trạng thái an toàn tồn dãy an toàn Dãy

tiến Irình <P|, P v Pn> gọi an toàn trạng thái phân phối tài

Viguyên thời, yêu cầu tài nguyên tiến trình Pj đáp

ứng bàng tài nguyên chưa cấp phát tài nguyên bị giữ bời

tất Pj, với j < i Khi đó, tài ngun tiến trình Pi cần khơng

được dáp ứng ngay, Pi đợi tới tất Pj kết thúc Sau đó, Pi có

thể cấp phát đủ tài nguyên cần thiết để thực nhiệm vụ

Khi Pi kết thúc, Pin lấy tài nguyên cần thiết, Nếu không

tồn dãy vậy, hệ thống xem khơng an tồn

K h d a s đưi;rr

C buyro tr?ng

(k ii

T r f b g ikÃi K h ỗ a g A« t o i

Trạai* t h i ỉ Bể

Tiến L ^ g Lượng cần

trinh cần tối đa hiện thời

Po 10 5

Pi 4 2

P2 9 2

(a) |b)

Hình 7.2 Minh họa trạng thái bế tắc

(124)

khịng an lồn trạng thái bế tắc (Minh 7.2a) Trạng Ihái khơng an tồn có ihC' dần đến bế lắc Chừng hệ thống cịn trạng thái an tồn, lli)ll có thẻ neăn chặn bế tắc '1'rong trạng ihái khơng an tồn, HDH khơng thơ ngăn chặn liến trình u cầu tài nguyên dẫn đến bế tấc

Dè minh hoạ, xét hệ thống có 12 băng từ với tiến trình: P(), Pi, P2,

trong dó P{) tối da 10 băng từ, P| cần băng từ P2 cần băng từ Giả

sử thời điổm to, P() dang giữ 5, P; giữ P2 giữ băng từ (3 băng từ

chưa cấp phát) Ví dụ minh họa Hình 7.2b Tại thời điểm to, hệ

thòng trạng thái an lồn dãy <Pi, Po, thỏa mãn điều kiện an

tồn Pi lấy băng từ, thirc thi, giải phóng (hệ thống có băng từ

rồi): kế đỏ Po lấy thêm băng từ, Ihực thi giải phóng (lúc hệ thống có

10 băng từ rỗi) Cuổi ? thực thi giải phóng tài nguyên (cuối

cùng !iệ thống có 12 băng từ rỗi) Lưu ý, từ trạng thái an tồn dẫn đến

trạng thái khơng an tồn Giả sử thời điểm ti, P2 yêu cầu cấp

phái ihêm băng từ Hệ thống không Irạng thái an tồn Lúc này, chi lien trình Pi lấy đủ băng từ theo nhu cầu minh P| trà

lại, hộ thống có băng từ Trong đó, Po yêu cầu thêm hoăc ?2

yêu câu thêm băng từ' hệ thống kliông thể đáp ứng nên Po ?2

rơi vào trạng thái bế tắc Sai lầm cấp phái thêm băng từ cho P2

Nốu bắt P2 đọd tới tiến trình khác kết thúc giải phóng tài nguyên,

hệ thống tránh trạng thái bể tắc

Có thể đảm bảo bế tắc không xuất cách bẳt hệ thống trạng thái an toàn Ban đầu, hệ thống trạng thái an tồn Khi tiến trình u cầu tài ngun, hệ thống phải định xem liệu có nên cấp phát không You cầu chi đáp ứng sau cấp phát, hệ thống trạng thái an tồn Có thể u cầu hệ thống có đủ tài nguyên, tiến trình phải đợi Do hiệu suất sử dụng tài ngun khơng cao

7.4.2 Thuật toán Đồ thị cấp phát tài nguyên

Nếu kiểu tài nguyên chi có đối tưọng, áp dụng đồ thị cấp phát tài nguyên mục 7.2.2 để tránh bế tắc Ngồi cung u

cầu Phân phối có thêm cung Nhu cầu Cung nhu cầu Pị ^ Rj tiến

trình Pj u cầu tài nguyên Rj thời điểm tương lai

(125)

đường đứt nét Khi tiến trình Pi yêu cầu tài nguyên Rj, cung nhu cầu Pj — Rj biến thành cung yêu cầu Tương tự, Pj giải phóng Rj, cung phân phối Rj —> Pi đổi thành cung nhu cầu Pị—»Rj Giả sử tiến trình Pj yêu cầu tài nguyên Rj Yêu cầu thỏa mãn việc chuyển cung yêu cầu Pi —> Rj thành cung phân phối không tạo nên chu trình đồ thị cấp phát tài nguyên, thuật tốn xác định chu trình đồ thị có độ phức tạp O(n^), với n số tiến trình hệ thống Nếu khơng có chu trình, sau cấp phát tài nguyên, hệ thống trạng thái an tồn Ngược líũ, có chu trình, việc cấp phát đặt hệ thống trạng thái khơng im

tồn Do vậy, tiến trình Pj phải đợi

7.4.3 Thuật toán Ngân hàng

(126)

Available[1 m]; số lượng tài nguyên kiểu tài nguyên Available[j] = k, nghĩa kiểu tài nguyên Rj có k dối tượng chưa cấp phát

Max[1 n, Ma trận xác định yêu cầu lớn tiến

trình Max[i, j] = k, nghĩa tiến trình Pi u cầu nhiều k đối tưọnng tài nguyên Rj

Allocation[1 n, Ma trận xác định số lượng đối tượng kiểu

tài nguyên thời cấp phát cho mồi tiến trìnli Allocation[i, j] = k, nghĩa P| thời

- - cấp phát k đối tượng Rj

Need[1 n, m]ì' Ma trận xác định lượng tài nguyên cần thiết

mỗi tiến trình Need[i, j] = k, nghĩa Pị cần thêm k đối tượng tài nguyên Rj để hoàn thành nhiệm vụ

N h vậy, Need[i, j] = Max[i, j] - Allocation^, j].

Giả sử X Y vector có độ dài n Ta định nghĩa X < Y x [i| < Y[iJ với i = 1, 2, , n Ví dụ, X = {1, 7, 3, 2} Y = {0, 3, 2, 1}, thi Y < X Định nghĩa Y < X Y < X Y ^ X Có thể xem m ễ’ hàng ma tr?n Allocation Need vector, ký hiệu Allocatiorii Needị Allocatiorii xác định tài nguyên thời Pi nắm giữ, Ncedi xác định tài nguyên mà Pj yêu cầu để hồn thành nhiệm vụ

^ Thuật tốn xá c định trạng thải an tồn

Thuật tốn sau xác định trạng thái hệ thống có an tồn hay không:

1 Già sử W ork Finish vector có độ dài m n Khởi tạo W ork = A vailble Finish[i] = false với i = 1, 2, , n.

2 Tìm i thỏa mãn hai điều kiện: Finish[i] = false và Needi < W ork Nếu khơng có i nhiH thế, chuyển qua bước 4.

3 W ork = W ork + Allocation!; Finish[i] = true Quay lại bước 2.

4 Nếu Finish[i] = true VỚÍ tất i hệ thống trạng thái an tồn.

Độ phức tạp cùa thuật tốn 0(m X n^)

^ Thuật toán Yêu cầu Tài nguyên

Giả sừ Requestị vector yêu cầu tiến trình Pj Requesti[j] = k, nghĩa

là tiến trình muốn k đối tượng kiểu tài nguyên Rj Khi tiến trình Pj

(127)

1 Nếu Requestị < Needị, chuyển sang bước N gư ợc lại, đu>a m ộ t điều kiện lỗi tiến trình vipợt yêu cầu tối đa nó.

2 Nếu R eq uest < Available, chuyển sang bước Ngư ợc lại, Pj phải đợi vì chira đù tài nguyên.

3 Buộc hệ thống làm thể cấp phát tài nguyên Pj yêu cầu bằng cách sửa trạng thái sau:

a Available = Available - Request b Allocation = Allocationi + Request] c Needi = Needi - Requesti

4 Nếu hệ thống trạng thái an toàn sau cấp phát tài nguyên, hệ thống thực cấp phát tài nguyên cho Pj Tuy nhiên, nếu trạng thái khơng an tồn, Pj phải đợi Requesti hệ thống khôi phục lại trạng thái cấp phát tài nguyên cũ.

Ví dụ minh họa:

Al l ocat i on M a x Avai l abl e

RoRiKỉR.i R0R1K1R, RoRi Rĩ Rs Po 1 2 ữ Pl 2

Pz 0 5 Pj 1*4 J 3

1 rane Ihái an toàn

T n e thái khốne Hn toàn

RoRiR’ Rj Ki]RiR2Rỉ

2 11 1

0 1 0 0

0 12 1 J

(■I (b)

Hình 7.3 Vi dụ trạng thái hệ thống

Giả sử hệ thống có kiểu tài nguyên Ro Ri, R2, R3 với số lưcyng tương

ứng 8, 5, 9, Yêu cầu cực đại tài nguyên lưọng tài nguyên

thời cấp phát cho tiến trinh minh họa Hình 7.3a Lượng tài

nguyên lại hệ thống (1, 2, '1, 2). Ta thấy dãy (P2, P4, P), P3, Po) an

tồn, nên hệ thơng trạng Itiái an tồn Hình 7.3b minh họa ví dụ hệ thống trạng thái an tồn khơng an tồn

7.5 PHÁT HIỆN BÉ TẮC%

(128)

irội không việc ghi nhớ thông tin cần thiết cho thuật tốn

Ị)hát hiện, mà cịn mát chắn có giai đoạn

khẳc phục

7.5.1 Kiểu tài nguyên có đối tipợng

Trường họp áp dụng thuật toán Đồ thị đợi - chờ xây dựng từ đồ thị cấp phát tài nguyên, cách xóa đỉnh kiểu tài nguyên cung liên quan Chính xác hơn, cung Pị tới Pj đồ thị đợi - chờ có ý nghĩa tiến trình Pj nắm giữ tài nguyên mà Pi cần Tồn cung P| ^ Pj đồ thị đợi - chờ đồ thị cấp phát tài nguyên

lương ứng chứa hai cung Pj —> Rq Rq Pj với tài nguyên Rq

Giống trước kia, bế tắc xuất hệ thống có chu trinh đồ thị đợi - chờ Để xác định bế tắc, hệ thống cần xây dựng đồ ihỊ đợi - chờ định thi chương trình tìm kiếm chu trình đồ thị Độ phức tạp thuật tốn O(n^), n số đỉnh đồ thị

7.5.2 Kiểu tài nguyên có nhiều đối tượng

Nếu kiểu tài nguyên có nhiều đối tượng khơng áp dụng kỹ ihuật Đồ thị đợi - chờ, mà phải sừ dụng thuật toán xác định bế tắc cách kiểm tra dãy cấp phát Thuật tốn có cấu trúc liệu

A vailable[1 m ], A llocation[1 n, m] Request[1 n,

1 Giả sử W o rk Finish vector tương ứng có độ dài m n Khởi tạo W ork = A vailabje Với i = 1, 2, , n Nếu Allocatiorii^^ thì Finish[i] = false; ngược lại, Finish[i] = true.

2 Tìm chì số i thịa mãn hai điều kiện sau; (Finish[i] == false) và (Requesti < W ork) Nếu khơng tìm i vậy, chuyển sang bước 4.

3 W ork = W o rk + Allocationỹ.Finish[i] = true, chuyển sang bước 2.

4 Nếu với < i < n mà Finish[i] == false, hệ thống trạng thái bế tắc Hơn nữa, tiến trinh P| bị bế tắc.

(129)

trả lại hệ thống tất tài nguyên nắm giữ Nếu già thiết sai, bế tắc xảy xác định lần thực thi thuật toán

Để minh họa thuật tốn, xét hệ thống có năm tiến trình từ Po tới P4, ba

kiểu tài nguyên Ro, Ri, R2 có số đối tượng tương ứng 7, Giả sử

thời điểm To, trạng thái cấp phát tài nguyên minh họa Hình 7.4a Hệ thống khơng tình trạng bế tắc, thuật tốn thực thi, dãy

<Po, P2, P3, P |, ?4> dẫn đến Finish[i] = true với i Tuy nhiên, P2 yêu

cầu thêm đối tượng kiểu tài nguyên R3 Ma trận Request ihay đổi

trong Hình 7.4b Hệ thống rơi vào trạng thái bế tắc Mặc dù thu hồi tài nguyên cấp phát cho Po, số lượng tài ngun sẵn có khơng đủ đáp ứng yêu cầu tiến trình khác Do đó, bế tẳc xảy

và liên quan đến tiến trình Pi, P2, P3 P4

A llo c a t io n R e q u e s t A v a ila b le

R ộ R iR : R0R1R2 R0R1R2

Po 0 ! 0 0 0 0 0

P l 2 0 2 2

P l 3 3 0 0

2 1 1 1 0 0

P4 0 : 0 2

R e q u e s t

R0R1R2

0 0 0

*> 0 “>

0 0 1

1 0 0

0 0

(a) (b)

Hình 7.4 Ví dụ thuật tốn Tránh bế tắc 7.5.3 Sử dụng thuật toán Phát bế tắc

(130)

thống hiệu suất sử dụng CPU) Nếu thực thi thuật toán phát thời điểm ngẫu nhiên, có nhiều chu trình bế tắc đồ thị tài ngun Khi đó, khơng xác định tiến trình ngun nhân gây r;i bế tẳc

7.6 KHẨC PHỤC BÉ TÁC

Làm để khắc phục bế tắc? Giải pháp thông báo cho người quản trị người quàn trị có trách nhiệm xừ lý Giải pháp thứ hai dể cho hệ thống tự động phục hồi Có hai lựa chọn để phá vỡ bế tắc:

- rhứ nhất, loại bỏ số tiến trình để phá vỡ chu trinh - Thứ hai, thu hồi tài nguyên tiến trình bế tắc

7.6.1 Chấm dứt tiến trình

Hộ thống thu hồi tài nguyên tiến trinh bị chấm dứt Có hai giải pháp chấm dứt:

1 Chấm dứt tất tiến trình bế tắc: Phá vỡ tồn chu trình bế tắc, phí tổn lớn nhiều tiến trình bế tắc thực thi Irong thời gian dài, phần kết thực thi bị loại bỏ sau phải thực lại

2 Lần lượt chấm dứt tiến trình phá vỡ chu trình bế tắc Cứ sau kết thúc tiến trình, hệ thống kiểm tra xem bế tắc cịn hay khơng

Việc chấm dứt tiến trình khơng đơn giản Nếu chấm dứt tiến trinh trình cập nhật file gây lỗi cho file Nếu sử dụng

phuơng pháp (2), hệ thống phải xác định thứ tự chấm dứt tiến trình (hoặc

nhóm tiến trình) để phá vỡ bế tắc Quyết định phụ thuộc vào sách hệ thống, tương tự vấn đề điều phối CPU Nói chung, vấn đề kinih tế, nên chấm dứt tiến trình với chi phí thấp nhất, phải tính đến:

1 Độ ưu tiên tiến trình

2 Tiến trình thực thi bao lâu, cần thêm để kết thúc?

3 Tiến trình sừ dụng tài nguyên kiểu tài nguyên (liệu dàng chiếm đoạt khơng)?

9- G T T N U Í Đ H - D N

(131)

4 Tiến trình cần thêm tài ngun để hồn thành? Có tiến trình cần bị chấm dứt?

6 Liệu tiến trình có địi hỏi tương tác với người dùng dạng lô?

7.6.2 Chiếm đoạt tài nguyên

Có thể chấm dứt bế tắc cách thu hồi tài nguyên số tiến trình chuyển chúng cho tiến trình khác chu trình bế tắc bị phá vỡ Nếu sừ dụng cách này, có vấn đề cần xét:

1 Lựa chọn nạn nhân: Tiến trình bị thu hồi tài nguyên gọi nạn nhân Trong trình thực hiện, hệ thống định thứ tự thu hồi để giảm thiểu chi phí phụ trội đến mức thấp Các yếu tố phải tính đến số lượng tài nguyên mà tiến trình nắm giữ, thời gian thực thi tiến trình

2 Q uay lui: Rõ ràng tiến trình "nạn nhân" khơng thể tiếp tục chạy bình thường thiếu tài nguyên Hệ thống phải đưa tiến trình nàỵ quay lại trạng thái an tồn, để sau khơi phục lại Nhưng klió xác định trạng thái an toàn? Do vậy, cách giải đ()Tn giản quay lui tồn (chấm dứt tiến trình sau khởi động lại) Dĩ nhiên, quay lại trạng thái vừa đủ để chấm dứt bế tắc hiệu nhiều Nhưng hệ thống phải trì nhiều thông tin trạng thái tiến trinh chạy

3 C hết đói: Hệ thống phải đảm bảo khơng xảy tượng chết đói (có tiến trình ln ln bị chọn làm "nạn nhân") Trong hệ thống đặt yếu tố kinh tế lên hàrg đầu, có tiến trình ln bị chọn làm nạn nhân khơng thể thực thi Hệ thống giải cách giới hạn số lần bị chọn làm "nạn nhân" tiến trình

7.7 NHẬN XÉT

Trạng thái bế tắc xuất nhiều tiến trình chờ đợi vơ định, kiện tiến trình khác trạng thái đợi gây v ề mặt nguyên tắc, có ba phương pháp xử lý bế tắc:

1 Buộc hệ thống không rơi vào trạng thái bế lắc

(132)

Diều kiện cần để bế tắc xuất là: Độc quyền truy xuất; giữ chờ; khơng chiếm đoạt vịng đợi Để ngăn chặn bế tẳc, hệ thống cần ngăn cản xuất bốn điều kiện Giải pháp tránh bế tắc khác là, tiến trình báo trước cách sử dụng tài ngun Thuật tốn Ngân hàng cần phải biết số lượng lớn lóp tài ngun tiến trình u cầu Nếu hệ thống khơng có phương pháp để bảo đảm bế tắc khơng xuất hiện, cần phải phát khắc phục bế tắc Thuật toán phát sử dụng đế xác định bế tắc xuất chưa, có, hệ thống phải khắc phục cách loại bò thu hồi tài nguyên tiến trình bế tắc Trong hệ thống chọn lựa "nạn nhân" dựa yếu tố chi phí, cần ý đến tượng "chết đói"

CÁU HỎI ỊN TẬP 1 Trình bày m ô hình bế tắc.

2 Trình bày điều kiện xảy bế tắc giải pháp tương ứng. 3 Trình bày giải pháp ngăn chặn bế tắc.

(133)

Chưcyng 8

QUÀN LÝ THỈÉT BỊ

H ĐH kiểm soát hoạt động thiết bị vào/ra gắn với máy tính cách phát lệnh điều khiển thiết bị; phát hiện, xử lý ngắt quản lý lỗi HĐH cung cấp giao diện đơn giản giúp người sử dụng lập trình viên sử dụng thiết bị dễ ơàng Để dễ ghép nối thiết bị mới, giao diện hệ thống với thiết bị nên giống Tốc độ vào/ra nhỏ tốc độ tinh toán (CPU) hàng triệu lần tỷ lệ khơng có xu hướng giảm Do vậy. các hệ thống máy tinh đại cố gắng thực xen kẽ thao tác vào/ra với thao tác tính tốn để tăng hiệu suất tổng thể hệ thống Chương này trình bày căch thức H Đ H quản lý thiết bị vào/ra: cách thức HĐH quán lý thiết bị, phương pháp quản lỷ bản, căch sử dụng đệm để tăng hiệu suất vào/ra cấu trúc tổng quát trình điều khiển thiết bị.

8.1 NGUYÊN LÝ HOẠT ĐỘNG

Kỹ sư điện tử coi thiết bị vào/ra tổ họp vi mạch, dây dẫn, nguồn điện, motor Lập trình viên "giao tiếp" với thiết bị thông qua giao diện phần mềm khía cạnh mà quan tâm

8.1.1 Phân loại thiết bị vào/ra

(134)

khả nánii dịch tới vị trí Một kiều thiết bị vào/ra khác hướng ký tự (thiết bị tạo nhận dãy ký tự) Không thể đánh địa khơng có q trình dịch chuvển kiểu thiết bị Máy in, card mạng, chuột (để trỏ) hầu hết Ihiết bị không hoạt động giống ổ đĩa xem thiết bị hướng ký tự Phân loại chưa thực đầy đủ, số thiết bị khơng nằm loại Chẳng hạn, đồng hồ hay hình với nhớ ánh xạ Tuy nhiên, mơ hình thiết bị hướng khối hưóng ký tự tống quát để có thề làm tảng giúp HĐH tạo chế quản lý hoạt động cùa thiết bị Sự chênh lệch lớn tốc độ thiết bị khiến việc thiếl kế phần mềm khó khăn nhiều Mặc dù tốc độ hoạt động thiết bị cải thiện, tốc độ không tăng nhanh tốc độ CPU

8.1.2 Bộ điều khiển thiết bị■ •

Thiết bị vào/ra gồm hai phần phần khí phần điện tử, thiết kế độc lập với Phần điện từ gọi device controller (bộ điều khiển) adapter (bộ điều họp) Trên máy tính cá nhân (PC), diều khiển thường mạch in cấm vào khe cẳm mở rộng Phần khí ihiết bị

Bảng mạch điều khiển

, , , ' , Càm vào bảng mạch

thường có phần kết nối với thiết bị Nhiều điều khiển quản lý 2,

, r , - X , i , „ , Nối VÚH thiết bị

4 thiêt bị giơng hệt

Thưịng giao diện điều khiển U' u o < o - « CIOI

, ° , Hình 8.1 Bộ đièu khién SICI

và thiêt bị chuân hóa, theo

chuẩn thức (IEEE, ANSI, ISO), chuẩn khơng thức thừa nhận rộng rãi Ví dụ, phần lớn sản phẩm ổ đĩa tuân theo chuẩn IDE hay SCSI

(135)

số hiệu sector cylinder, kích thước sector thơng tin phục vụ cho mục đích đồng Cơng việc điều khiển ổ đĩa chuyển dòng bit sang khối byte sửa lỗi Đầu tiên bit ghép lại thành khối byte lưu tạm nhớ đệm điều khiển Sau đó, điều khiển thực kiểm tra giá trị bit sửa lỗi xác định khơng có lỗi khối byte chuyển vào nhớ Bộ điều khiển hình dạng thiết bị hoạt động theo chuỗi bit liên tiếp Bộ điều khiển đọc byte (là mã ký tự cần hiển thị) từ nhớ sau tạo tín hiệu điều chỉnh dịng CRT in hình Bộ điều khiển tạo tín hiệu để yêu cầu dòng CRT quét lại theo chiều dọc sau quét hết dòng, quét lại điểm hình sau qt xong tồn hình Nếu khơng có điều khiển, HĐH phải tự thực việc quét hình Nhưng bây giờ, HĐH cần khởi tạo điều khiển với vài tham số (số lượng ký tự hay số điểm ảnh dòng số lượng dòng hình) Sau khởi động, điều khiển trực tiếp kiểm soát thiết bị

8.2 CHIÉN LƯỢC QUẢN LÝ THIÉT BỊ

G i a o d ỉệo H ệ t h ố n g

T ỉê n t r ì n h ứngdụDg

B ộ q u o lý FUe

P b ụ t h u ộ c T h i ế t b|

G i a o d iệ p P h ầ n cửn't} / V 'v"

- It_U _ Đ ộ c lập T h i ế t b |

í

[C om njanidj

B ộ đ i ề u k h i ề n T h iế t b |

Hình 8.2 Bộ phận quản lý thiết bị HĐH

(136)

nào dó dã hồn thành chưa Tuy nhiên, hệ thống sử dụng ngắt, tiến trình ứng dụng khơng phải tự kiểm tra xem thiết bị thực xong công việc chưa Phương pháp thứ hai vào/ra qua ánh xạ nhớ Bộ nhớ cùa thiết bị ánh xạ vào phần không gian nhớ hệ thống Cơ chế cuối sử dụng chế truy cập nhớ trực tiếp (DMA - Direct Memory Access), tức có thiết bị chịu trách nhiệm chép liệu từ nhớ đến tlianh ghi điều khiển thiết bị mà không cần CPU điều khiển

8.2.1 Tổ chức hệ thống vào/ra

1'rong HĐH đại, có hai phương pháp cài đặt phận quản lý thiết bị: thông qua tưong tác trình điều khiển thiết bị (device driver) với quản lý ngắt (cơ chế vào/ra có ngắt), hoàn toàn trinh điều khiển thiết bị khơng sử dụng ngắt (cơ chế vào/ra thăm dị) Hình 8.3 minh họa thành phần hai chế Nếu muốn sử dụng thiết bị, tiến trình ứng dụng gửi lệnh cần thực (cùng với liệu có) tới trình điều khiển thiết bị

Trình điều khiển thực hai việc sau:

1 Cài đặt API - giao diện để ứng dụng sử dụng muốn tương tác với Ihiết bị

2 Dịch lệnh mức cao (từ ứng dụng gừi xuống) thành lệnh mức thấp (phụ thuộc vào thiết bị cụ thể)

Để thuận tiện, giao diện trình điều khiển nên giống nhau, klii đó, người lập trình biết sử dụng thiết bị dễ dàng làm việc với thiết bị khác Tuy nhiên, chịu trách nhiệm quàn lý thiết bị đặc thù, nên trình điều khiển phải có khả đưa lệnh cho thiết bị rõ ràng lệnh phụ thuộc vào điều khiển thiết bị

8.2.2 Vào/ra trực tiếp qua thăm dị

(137)

Hình 8.3a minh họa bước chuyển liệu tìr ứiiết bị vào nhớ trong:

1 l'iến trình ứng dụng yêu Cầu đọc liệu

2 Trình điều khiển kiểm tra ghi trạng thái xem thiết bị có bận khơng Nếu bận, trình điều khiển phải chờ

3 Trình điều khiển khởi tạo thiết bị cách ghi lệnh cần thực hiẹn (read) vào ghi lệnh điều khiển

4 Trình điều khiển kiểm tra thiết bị thực xong lệnh đọc hay chưa cách định kỳ đọc ghi trạng thái

5 Trình điều khiển chép giá trị (các) ghi liệu điều khiển vào không gian nhớ tiến trình

Thao tác ghi liệu thực tương tự Trong chế vào/ra trực tiếp qua thăm dị, u cầu vào/ra thực thơng qua tương tác với trình điều khiển, điều "che dấu" toàn hoạt động phần cứng điều khiển Nhược điểm cách tiếp cận hiệu suất sử dụng CPU thấp CPU phải thường xuyên kiểm tra tất thiết bị xem hoàn thành thao tác vào/ra chưa Có thể khắc phục điều cách sử dụng ngăt

Gỉao diệo \ởi Hệ tbốog

read(de\1c«,

D « Uệa

G U o d ỉ ệ o v ó i P b ầD c v n {

rbà tb y c re« đ

Ibị lục write

G i i ũ d iệ o H ệ tiiốiig

Dở Uệa

re»d driver

-irrí(« driver

B iag t n o g d iầ iT U ê tb ị

7

G i i o d iệ e PbầD c ứ i g

D « ic e

H a n d ler «

ỉ o l e m p l _ H a o d lêr

8i

1 CommMd Status II Dati Comiiaitỉ ị SdtBS Dau

Bộ Đỉều ktaiểo Tbiết bị Bộ Đik UiểnTbiHbị

(a) Thăm dị (b) Ngát

Hình 8.3 Cài đặt điều khiển thiết bị 8.2.3 Vào/ra sử (tụng ngắt

(138)

Hình 8.4 Cơ chế hoạt động ngắt

Nếu thời điểm có ngắt xuất hiện, điều khiển xừ lý ngất Nhưng xuất nhiều ngắt, hệ Ihống ưu tiên xừ lý ngắt có độ ưu tiên cao trước Bộ điều khiển ngất gán số thứ tự cho đường địa chi xác định thiết bị tạo tín hiệu ngắt tương ứng gửi tới CPU Tín hiệu ngắt khiến CPU tạm dừng công việc thực để

chuyển sang xử lý ngắt, số hiệu đưòng địa sử dụng làm số tra

cứu bảng vector ngắt để xác định địa đoạn chưong trinh xử lý ngắt Bảng vector ngắt ghi cứng máy, nằm nhớ, hệ thống sử dụng ghi đặc biệt CPU trỏ tới địa bảng vector ngắt Ngay sau bắt đầu chạy, thủ tục xử lý ngắt ghi giá trị xác định cổng điều khiển ngắt vào/ra để xác nhận ngắt xử lý, điều khiển tạo ngắt CPU gửi lín hiệu xác nhận xử lý ngắt tiếp theo, tránh xung đột nliiều ngắt xảy đồng thời

Hệ thống phải ghi lại số thông tin trước khởi động thủ tục xử lý ngắt Những thông tin ghi ghi vào đâu phụ thuộc vào kiến trúc CPU phải ghi lại ghi PC để sau xử lý xong ngắt quay lại chương trình cũ Nhưng có số kiến trúc phức tạp yêu cầu phải ghi lại tất ghi

(139)

hoặc phần cứng kiểm tra xem có xuất ngắt hay khơng Nếu có, giá trị PC ghi vào ngăn xếp chương trình xử lý ngắt bắt đầu thực thi Sau xử lý xong ngắt, PC đirợc khôi phục từ ngăn xếp để khơi phục tiến trình bị gián đoạn trước Chế độ kiểu ngầm định rằng, ngắt xuất sau thị A, tất ihị trước A hồn thành khơng thị sau A thực thi Trong kiến trúc đường ống, CPU thực thi lúc nhiều thị Giả sử ngắt xuất đường ống đầy, thị trạng thái Ihực khác Khi ngắt xuất hiện, giá trị PC khơng phản ánh xác thị bẳt đầu thi hành thị chưa thi hành PC địa thị lấy đưa vào đường ống, địa thị xử lý CPU Do vậy, phải định nghĩa rõ ràng ranh giới thị chi thị chưa thực thi Tuy nhiên, phần cứng xác định ranh giới Do đó, thực xong ngắt với địa ghi PC, HĐH

không thể làm đầy lại đường ống cũ cần xác định thị cuối

được thực thi, nhiên chức thường phức tạp, cần phân tích trạng thái máy tính Trên kiến trúc siêu vơ hướng vẩn đề cịn phức tạp hơn, thị thực thi không theo thứ tự, nên không thề định nghĩa rõ ràng ranh giới thị thực chưa thực Chảng

hạn, thị 1, 2, 3, thực thị 4, 6, 7, chưa thực

hiện Bên cạnh đó, ghi PC trỏ tới thị 9, 10 11

Ngắt nghiêm ngặt (precise interrupt) đặt máy tính trạng thái rõ ràng có thuộc tính;

1 Thanh ghi PC trỏ tới thị xác định

2 Tất chi thị trước thị PC trỏ tới hoàn toàn thực thi xong

3 Mọi thị sau thị PC trỏ tới chưa thực thi

4 Trạng thái thực tlii thị PC trỏ tới hoàn toàn xác định Chú ý rằng, thị đằng sau thị PC trỏ tới không bị cấm thực thi Tuy nhiên, thị gây thay đổi ghi nhó, thay đổi cần phải khôi phục lại trạng thái ban đầu trước ngắt xảy

(140)

khó khăn, plìài xác định chi thị thị thực thi. Máy lính với ngăl khơng nghiêm ngặt thường phải ghi lại nhiều thông tin

trạn;_i thái vào ngăn xếp, đổ Í IDH xác định dược thị thực

ihi giai doạn Phải ghi lưọTig lớn thông tin vào nhớ gặp

ntiắt làm tăng thời gian xư lý ngái Điều nàv dẫn tới nghịch lý là, CPU

sicu \ô hưứng lốc độ cực cao khơng Ihích hợp với cơng việc thời

gian thực xử lý ngắl chậm

Một số máy tíiih thiết kế đổ vừa có ngắt nghiêm ngặt, vừa có ngắt khơng nghiêm ngặt Một số kiến trúc siêu vô hướng, Pentium Pro san phâm thuộc dòng sử dụng ngắt nghiêm ngặt, cho phép chương trình viết 386, 486 Pentium I hoạt động xác (superscalar bắt đầu xuất Pentium Pro; Pentium I có đường ốiig) Khi đó, mạch logic điều khiển ngắt bên CPU phức tạp Bộ điều khiển ngắt phải đảm bảo xuất ngắt, thị trước mốc phải thực thi xong tất thị phía sau mốc khơng gây ảnh hưởng tới trạng thái máy đây, giá phải trả thời gian mà diện tích chip phức tạp thiết kế Nếu không cần ngắt nghiêm ngặt (để tương thích ngược với ứng dụng cũ), diện tích bo mạch sử dụng cài đặt thèm cache Ngược lại, ngắt không nghiêm ngặt làm HĐH phức tạp chậm Do đó, thật khó xác định phương pháp UXI việt

\'ớ i ngắt, trình điều khiển khơng phải thăm dị xem thiết bị hồn thành nhiệm vụ hay chưa Khi kết thúc công việc, điều khiển báo lại cho trình điều khiển thiết bị Bộ quản lý thiết bị chế vào/ra sử dụng ngắt có ihành phần:

•• Bảng trạng thái thiết bị • Trình xừ lý ngát

• Bộ phận thực thiết bị

Hình 8.3b minh họa bước đọc liệu hệ thống sử dụng ngắt: Tiến trình ứng dụng yêu cầu đọc liệu

(141)

3 Trình điều khiển ghi lệnh khởi tạo vào ghi lệnh điều khiển

4 Khi hồn thành cơng việc, trình diều khiển ghi vào bảng trạng thái thiết bị thông tin liên quan đến thao tác Bảng chứa thông tin tất thiết bị hệ thống, hàng ứng với thiết bị cụ thể Trinh điều khiển ghi lại số thông tin thiết bị qn lý Các thơng tin địa trả sau thao tác thirc xong số tham số đặc biệt khác Kế tiếp, trìiứi điều khiển kết thúc chuyển quyền điều khiển cho điều phối Khi kết thúc công việc giao, thiết bị tạo ngắt gửi đến CPU

trình xử lý ngắt tương ứng thực thi

6 Trình xử lý ngắt xác định thiết bị tạo ngắl Sau rẽ nhánh

đến trình xử lý ngắt thiết bị

7 Trình xử lý ngắt đọc bảng trạng thái thiết bị để lấy thông tin thao tác vừa thực thi

8 Trình xử lý ngắt chuyển liệu từ (các) ghi liệu

điều khiển vào không gian nhớ người sử dụng

9 Trinh xử lý ngất chuyển quyền điều khiển cho tiến trình ứng dụng

read(dev_I, x ) ;

y = f(X)

startRoad (dev_I, x) /

W h i l e ( s t i l i R e a d i n q í ) ) ;

y = f (X)

- Data on device

" H — -»V a n a b l c X r R e g i s t e r

Device dev_I

Memory CPU

Hình 8.5 Xử lý qua ngắt

(142)

ra kiện dc tiếp tục thirc thi cơng việc Do đó, cách tươníi tác với thiết bị thơng qua giao diện phần mồm, MĐIi cho phép tiến trình thực tính lốn CPU liến trình khác sử dụng thiết bị Mồi liến trình đảm bảo thực thi cách tuần lự, cho dù có gián doạn Các thao tác vào/ra có tính chất tuần tự, nghĩa lập trình viên sử

di.ing lệnh read trong chương trình lệnh read phải thực xong trước

khi thực thi lệnh sau Ví dụ, tiến trình thực đoạn chương trình minh họa Hình 8.5, to thời điểm sau tiến trình sử dụng lời gọi hệ

Ihống đế đọc từ thiếl bị, lời gọi chưa thực xong Nếu hàm f

với tham số X lính trước thao lác đọc thực hiện, tiến trình sử

cliing giá trị X cũ Để tránh lình trạng này, sau gọi read, tiến trinh phải bị

phong tóa read hồn ihành

Từng tiến trình riêng lè khơng nhận ích lợi việc xen kẽ thao

tác tính tốn với thao tác vào/ra, hiệu suất hệ thống tổng thể tăng đáng kể, CPU tận dụng lối đa (khi tiến Irình thực thi phải đợi vào/ra bị phong tỏa, tiến trinh khác sử dụng CPU)

8.2.4 Vào/ra qua ánh xạ nhớ

Dế tương tác với thiết bị phải có thị thao tác ghi

điều khiển tập thị ngôn ngữ máy, để HĐH lệnh cho thiết bị (ghi lệnh tương ứng lên ghi lệnh) xác định trạng thái thiết bị (dọc ghi trạng thái)

Hai địa chi Một khơng gian địa chí Hai khơng gian địa chi

OxFFFF Memory 1'Opoits

/

Q 1

(a) (b} (c)

Hình 8.6 Giao tiếp CPU điều khiển

Có hai cách để CPU trao đổi dừ liệu với điều khiển thiết bị Thứ nhất, ghi điều khiển gán định danh số nguyên, gọi

là số hiệu cổng vào/ra (I/O port number) CPU sử dụng thị IN REG,

(143)

Các máy lính tliời kỳ đầu làm việc theo cách Trong Hình 8.6a, khơng gian địa chi nhớ độc lập với không gian vào/ra điều khiển Chỉ thị IN RO, (chuyển nội dung cổng I/O có số hiệu vào thaah ghi RO) khác với thị MOV RO, (đưa nội dung ô nhớ thứ nhớ vào RO) Giá trị hai thị ứng với hai không gian địa chi khác Giải pháp thứ hai, ánh xạ tất ghi vào không gian

nhớ (Hình 8.6b) Mỗi ghi gán địa nhấ:

không trùng với địa ô nhớ nhớ Hệ thống gọi !à vào/ra qua ánh xạ nhớ Thông thường, địa ghi nằm đầu không gian địa Giải pháp thứ ba lai hai giải pháp

trên (Hình 8.6c), thực ánh xạ nhớ vào/ra (nằm điều khiển)

vào không gian nhớ trong, lại gán định danh cổng vào/ra cho ghi điều khiển Pentium sử dụng kiến trúc với vùng địa 604KB tới 1MB dùng cho nhớ thiết bị số hiệu cổng từ đến 64KB Hệ thống hoạt động sau: CPU đặt địa cần đọc (có thể nằm

nhớ hay nhớ vào/ra) lên bus địa phát lệnh READ trên bus

điều khiển Có thể sừ dụng thêm tín hiệu khác để xác định từ cần đọc nằm nhớ vào/ra hay nhớ Nếu sử dụng chung kỂông gian

bộ nhớ (như Hình 8.6b), nhớ lẫn tất thiết bị vào/ra phải

so sánh địa bus địa với khoảng địa Nấu địa yêu cầu nằm phạm vi quản lý, phận tương ứng trả lời yêu cầu

Hai phương pháp có ưu, nhược điểm riêng, u điểm vào/ra qua ánh xạ nhớ đơn giản cơng việc ngưịd lập trình Thứ nhất, hệ thống phải sử dụng chi thị vào/ra đặc biệt để đọc/ghi ghi điều khiển thiết bị, lập trình viên phải sử dụng mã Assembly ngơn ngữ

C/C++ khơng có lệnh ứng với thị IN/OUT Ngược lại, với vào/ra qua ánh

xạ nhớ, ghi điều khiển giống ô nhớ nhớ đánh địa chi biến khác Do đó, hệ thống vào/ra qua

ánh xạ nhớ, viết trình điều khiển thiết bị ngôn ngừ c Thứ

(144)

không làm giảm kích thước kernel mà cịn tránh xung đột diều khiến Thứ ba, với vào/ra qua ánh xạ nhớ, thị tham chiếu tới nhớ tham chiếu ghi điều khiển Ví dụ,

nếu Ihị TEST kiểm tra từ nhớ có bàng hay khơng, có ihề kiểm

tra ghi điều khiển có nhận giá trị hay khơng Đoạn mã ngôn ngữ Assembly kiểu sau:

LOOP:

TEST

BEQ BRANCH

P0RT_4

READY LOOP

//kiểm tra port_4 0 //nếu 0, nhảy tới READY //nếu không, tiếp tục kiểm tra. READY:

Nếu không dùng chế ánh xạ nhớ, muốn thực điều phải chép giá trị ghi điều khiển vào ghi CPU, sau kiểm tra Q trình cần khơng phải thị chế ánh xạ nhớ

Đọc/ghi nhớ qua Bus có tổc độ cao

Hình 8.7 Kiến trúc nhớ DMA

Ánh xạ nhớ có nhược điểm Phần lớn máy tính đại có cache nhớ Xét đoạn mã Assembly trên, lần tham chiếu tới

(145)

tham chiếu kế tiếp, giá trị cache lấy so sánh, không

phải giá trị thực P 0R T _ Khi thiết bị sẵn sàng, phần mềm khơng có

cách để phát hiện, vòng lặp LOOP sẽ lặp vơ hạn Để tránh tình trạng

này, trước tiên phần cứng phải có khả khơng cho cache trang nhớ cụ thể Chức làm kiến trúc phần cứng lẫn HĐH trở nên phức tạp Thứ hai, có khơng gian địa chỉ, module nhớ thiếl bị vào/ra cần kiểm tra xem tham chiếu nhớ có truy xuất vào khu vực nhớ hay khơng Điều dễ dàng thực máy tír;h chi có mộl bus Hình 8.7a Tuy nhiên, máy tính đại có bus chuyên dụng tốc độ cao nối CPU nhớ (Hình 8.7b) để tăng hiệu suất sử dụng nhớ Khi đó, hệ thống ánh xạ nhớ có bus nhớ chuyên dụng, thiết bị vào/ra có Ihể "khơng thấy" địa nhớ địa chi đặt bus chuyên dụng MỘI giải pháp là, CPU gửi địa chi Iham chiếu tới nhớ trước Nếu khơng có, CPU gửi bus khác Phần cứng kiểu thiết kế phức tạp Giải pháp thứ hai đặt thiết bị snoop bus nhớ đế thiết bị chuyển tất địa không gian vào/ra tới thiết bị tương ứng Nhược điểm phương pháp thiết bị vào/ra không xứ lý kịp tốc độ nhớ Giải pháp thứ ba sừ dụng Irên Pentium sừ dụng chip cầu PCI để lọc địa Chip chứa khoảng ghi nạp thời điểm hệ thống khởi động Ví dụ, địa chi từ 640KB đến 1MB đánh dấu không nằm nhớ Yêu cầu tới khoảng địa chuyển tới bus PCI thay tới nhớ

8.2.5 Truy cập trực tiếp nhớ (DMA)

Trong chế vào/ra trực tiếp qua thăm dị, trình điều khiển chuyển liệu từ vùng nhớ tiến trình người dùng lới ghi điều khiển thiết bị ghi liệu thực điều ngược lại đọc liệu Trong chế vào/ra có sử dụng ngắt, trình xừ lý ngắt ứng với thiết bị chịu trách nhiệm chép liệu Để chuyển khối liệu từ nhớ đến ghi điều khiển, hệ thống sử dụng đoạn mã tương tự sau:

LOAD R2, = LENG TH_O F_BLO CK II R2 ghi số Loop: LOAD R1, [data_area, R2] / / Tải block[i] STORE R1, OxFFFFOI 24 II Đ ặt d ữ liệu vào thanh

ghi liệu Ctrl

INCR R2 II Tăng chì số

(146)

I'rong cá hai trường họfp, CPU phải tham gia vận chuyển liệu Tuy nhiên, với chế truy cập trực tiếp nhớ, điều khiển DMA có khả nàng đọc/ghi thơng tin trực tiếp vào nhớ mà không cần can thiệp CPU DMA sử dụng chế phần mềm thăm dò lẫn chế ngắl Bộ điều khiển DMA có phần logic cho phép chuyển liệu nhớ điều khiển thiết bị Điều hoàn toàn thực bàng phần cứng điều khiển DMA không cần can thiệp từ CPU (Tuy nhiên, CPU DMA tranh chấp quyền sử dụng bus liệu) DMA làm lăng đáng kể hiệu suất vào/ra Với DMA, điều khiển thiốt bị khơng cần ghi liệu, điều khiển DMA chun liệu trực tiếp thiết bị nhớ Tuy nhiên, điều khiển DMA phải chứa ghi địa để trình điều khiển thiết bị xác lập địa nhớ nơi nhận liệu

Bộ điều khiển DMA tích hợp với điều khiển ổ đĩa điều khiển khác Phần lớn hệ thống máy tính đại sử dụng điều khiển DMA nàm bo mạch chủ điều hợp việc trao đổi liệu cho nhiều thict bị (có thể thực đồng thời) Bộ điều khiển DMA truy cập tới bus hệ thống độc lập với CPU minh họa Hình 8.7c Bộ điều khiển DMA có ghi cho phép CPU truy cập tới ghi địa nhớ, ghi đếm ghi điều khiển Thanh ghi điều khiển xác định sử dụng cổng vào/ra nào, hướng truyền (đọc hay ghi), đon vị truyền (byte hay word) khối lượng truyền lần

Xét thao tác đọc ổ đĩa không sử dụng DMA, điều khiển đọc khối (một nhiều sector) từ ổ đĩa cứng vào nhớ điều khiển Tiếp theo, điều khiển tính checksum để xác định khối vừa đọc có lỗi hay khơng Sau đó, điều khiển tạo ngắt Cuối cùng, HĐH đọc khối liệu từ đệm điều khiển cách sử dụng vòng lặp chuyển byte ghi liệu điều khiển vào nhớ

Nếu sử dụng DMA minh họa Hình 8.7c, CPU thiết lập ghi để điều khiển DMA biết chuyển liệu gi đến đâu (bước 1) Đồng thời, CPU phát lệnh cho điều khiển đĩa đọc liệu từ ổ đĩa vào nhớ nằm bên điều khiển ổ đĩa Khi liệu nằm nhớ điều khiển đĩa, DMA khởi động Bước 2,

ÌO -G TNLH ĐH-D N

(147)

bộ điều khiển DMA khởi tạo việc chuyển dừ liệu cách phát yêu cầu đọc tới điều khiển ổ đĩa Bộ điều khiển ổ đĩa không xác định yêu cầu từ CPU hay từ điều khiển DMA Do địa chi nhớ ghi đường bus địa chỉ, nên điều khiển ổ đĩa lấy byte ahớ ghi vào nhớ thích hợp Quá trinh ghi nhớ diễn chu kỳ bus (bước 3) Khi ghi xong, điều khiển ổ đĩa gửi tín hiệu biên nhận tới điều khiển DMA (bước 4) Bộ điều khiển DMA tăng địa nhớ giảm ghi đếm byte Nếu ghi đếm lớn 0, DMA thực bước tới ghi đếm bàng Lúc điều khiển DMA tạo ngắt báo cho CPU biết hồn thành q trình truyền liệu Có nhiều kiểu điều khiển DMA với độ phức tạp khác Đon giản kiểu tmyền byte thời điểm mô tả Phức tạp kiểu cho phép truyền nhiều luồng liệu lúc Như vậy, điều khiển có nhiều nhóm ghi, nhóm ứng với kênh truyền CPU nạp tham số thích hợp vào nhóm ghi Mồi lần truyền thực điều khiển thiết bị riêng

8.2.6 Bộ đệm (Buffer)

Trong kỳ thuật đệm liệu, thiết bị trạng thái rỗi, quản lý thiết bị thực đọc/ghi dừ liệu trước tiến trình yêu cầu thực Đệm vào việc đọc liệu vào nhớ trong, đệm việc ghi liệu thiết bị, hai thao tác thực song song với tiến trình trước tiến trinh đưa yêu cầu thực Bộ đệm cho phép tiến trình sử dụng xen kẽ

CPU thiết bị cách tường minh (minh họa Hình 8.8a)

Chú ý đến đặc điểm tiến trình: Tiến trinh hướng vào/ra có nhiều Ihao

tác vào/ra (ví dụ, tiến trình chép liệu hai thiết bị) tiến trình

hướiig tính tốn có nhiều thao tác tính tốn CPU (tiến trình tìm số ngun tố) Tiến trình bình thường chia thành nhiều pha, pha hướng tính tốn hướng vào/ra xen kẽ Bộ phận quản lý nhớ sử dụng kỹ thuật quản lý nhớ để làm giảm thời gian thực vào/ra trung bình Xét việc chuyển liệu modem không sử dụng đệm

minh họa Hình 8.8b Tiến trình người dùng sử dụng lời gọi hệ thống

(148)

này tốn nhiều thời gian, đặc biệt đường truyền có tốc độ thấp (chẳng hạn dường điện thoại) Cách thứ haí cho phép tiến trình người clùnu thực thi Trinh điều khiển thực việc xuất

tiến Irinh người dùng tiếp tục thực cơng việc tính tốn mình, vấn

dề dây là: Làm dế tiến trình người dùng xác định việc xuất liệu hoàn thành \ sử dụng tiếp đệm? Hệ thống có thồ tạo lín hiệu nẹắt phần mềm, kiểu lập trinh khó dặc biệt dễ gây xung dột, Một giải pháp tốt kernel chép liệu

tới dệm kernel (Hình 8.8d)

Tiến trình ngưịi dùng (ửng dụng)

06

nhớ troog

B ộ

nhớ tron g

CPU

o C P U

B ó đỉơu khiển

Khơng giatỉ Ngươi dung

ỡộ điểu khiển

Thiết bị

T hiổt bi

(a)

/ 2

p

\ i 3

M odem M odem

Hình 8.8 Bộ đệm liệu

Modem thiết bị kiểu ký tự đọc/ghi byte liệu Bộ điều khiển

modem có ghi liệu với kích thước byte chứa ký tự cuối

(149)

tiến trình yêu cầu ký tự đặt từ trước vào ghi B Lúc này, thiết bị đọc ký tự vào ghi A Thiết bị đọc ký tự (i + 1) song song với việc tiến trình sử dụng ký tự i Sự phối họfp trở nên "hoàn háo" tốc độ đọc điều khiển bàng tốc độ tiến trình "tiêu thụ" ký tự

Có thể đặt thêm đệm điều khiển trình điều khiển thiếi bị (Hình 8.9b), có hai đệm hệ thống Bộ đệm thứ luii tạin liệu cho tầng cao lấy, đệm lưu liệu lấy từ tầng bên Chú ý, kỹ thuật hoàn toàn áp dụng cho thiết bị hưởng khối, chẳng hạn ổ đĩa Khi đó, kích thước đệm phải đủ lớn để chứa khối liệu

Bộ điềụ khién

.A P ro c e s s đ o c b :t

KhJ a & có đ è n

(a)

P ro c e s s đoc bj C o n tr o lle r đọc

(b)

Hình 8.9 Kỹ thuật đệm liệu

Hệ thống có nhiều đệm Hình 8.10a Bộ phận tạo

dữ liệu (với thao tác read điều khiển, với thao tác write CPU) ghi dữ

liệu vào đệm i, phận tiêu thụ liệu (bộ điều khiển

thao lác w rite và CPU thao tác read) đọc liệu từ đệm j Khi đó,

các đệm từ j đến (n - 1) từ đến (i - 1) đầy Bộ phận tiêu thụ cỏ thể đọc liệu đệm j đến (n - 1) từ đến (i - 1) Bộ phận sản xuất

có thể ghi vào đệm i đến G - phận tiêu thụ đọc từ

đệm j Trong kỹ thuật đệm vòng (circular buffer) vậy, phận sản xuất khơng thể ghi vượt qua phận tiêu thụ, không làm liộu chưa tiêu thụ Bộ phận sản xuất ghi tới đệm j - đệm j đợi tiêu thụ

(150)

chuyền liệu vào, ghi dừ liệu điều khiển bắt đầu ghi liệu thiết bị Tiến trình hướng lính tốn có xu hướng ngược lại: đệm vào thường đầy Irong đệm thường rỗng Tiến trình đơn giản thường hướng vào/ra, cịn tiến trình phức tạp thường có nhiều pha, có pha hướng vào/ra có pha hưóng tính tốn Các pha xen kẽ tận dụng tối da ưu điểm đệm, thời gian tiến trình thực tính tốn, điều khiển nhanh chóng đổ liệu vào (hoặc ra) đệm Khi đệm đầy (hoặc trống), tiến trình chuyển sang pha hướng tính tốn Tuy nhiên, đệm làm suy giảm hiệu suất liệu bị trung chuyển qua nhiều đệm Xél ví dụ mạng máy tính hoạt động Hinh 8.10b Đầu tiên, tiến trình người dùng thực lời gọi hệ thống để gửi thơng điệp qua mạng HĐH chép gói liệu tới đệm HĐH để tiến trình người dùng tiếp tục thực thi (bước 1) Khi thực thi, trình điều khiển chuyển gói liệu tới diều khiển để xuất (bước 2) Trình điều khiển khơng gửi trực tiếp liệu đưịng truyền, phải đảm bảo tốc độ gửi cố định Trình điều khiển khơng thể đảm bảo lấy liệu từ nhớ với tốc độ định kênh DMA thiết bị vào/ra khác tranh chấp bus dùng chung, ('hỉ cần gửi lỗi byte, làm hỏng tồn gói liệu Đặt gói liệu đệm điều khiển tránh vấn đề Sau chiivển vào đệm bên điều khiển, gói liệu truyền mạng (bước 3) Sau bit cuối đến đích, tồn gói liệu đặt vào đệm điều khiển nơi nhận Tiếp đến, gói liệu chuyển tiếp vào đệm kernel (bước 4) Cuối cùng, gói liệu chép tới đệm tiến trình người dùng Thơng thường, tiến trình nhận gửi lại biên nhận Chỉ nhận biên nhận, phía gửi gửi tiếp gói liệu Rõ ràng, nhiều đệm, tốc độ truyền liệu chậm

Li t d liệ u t Bộ đệm

_ __

ũ ặ in n ã õ

^ -

-ị'ả'

C h u r ể n d c u o Bộ đệm

(a)

Tiến trình Người dùng

K hơng gian N g i dửng

K hông gian

HĐH

í

c

••Pi' Ị-** Bộ điếu khíén Mạng

_

(b)

Mạng máy tính

(151)

8.3 TRÌNH ĐIỀU KHIẾN THIẾT BỊ

riến trinh ứng dụng gọi trình điều khiển Ihiết bị muốn tlnrc vào/ra Trình điều khiển "dịch" yêu cầu thành lệnh mà điều khiển "hiểu" Sau đó, trinh điều khiển thăm dò xem điền khiền hồn thành cơng việc hay chưa, chi lại cảc thông tin vào bảng thiết bị trưịng hợp sử dụng ngắt Ngồi việc phải đưa lệnh đặc thù cho điều khiển thiết bị, trình điều khiển thiết bị cịn phải:

1 Cung cấp API để ứng dụng thực vào/ra thiết bị Giao diện API trình điều khiển nên giống

2 Đảm bảo phối hợp hoạt động tiến trình úng dụng điềii khiển thiết bị

3 Tối ưu hiệu suất tổng thể hệ thổng với phưíTng pháp điều khiến thích hợp

8.3.1 Giao diện trình điều khiển

Mỗi HĐH xây dựng riêng cho kiến trúc hệ thống vào/ra với hai giao diện API (giao diện cho người lập trình) giao diộn với nhân HĐH

^ A P I - Giao diện lập trình ứng dụng

API giao diện người lập trình sử dụng để thực vào/ra thiết bị Nhiệm vụ cúa thiết bị truyền thơng lưu trữ Các Ihiết bị "vào" thường "tạo" thơng tin đưa vào hệ thống Thơng tin khơng có khn dạng (đến từ mạng máy tính), có khn dạng xác định (đến lừ ố đĩa) Tiến trình "ghi" thơng tin lên thiết bị "ra", thiết bị truyền thông, thiết bị lưu trữ để sau sử dụng lại Trình điều khiển chịu trách nhiệm kiểm soát trạng thái thiết bị (bận hay rỗi) hay tiến trình sử dụng thiết bị Bên cạnh thông tin luxi bảng trạng thái thiết bị, phải lưu trữ thông tin đặc tính loại ihiết bị Phần lớn giao diện trình điều khiển có lời gọi open close với mục đích để khởi tạo (xin cấp phát thiết bị, tạo bảng tưoTig ứng) kết thúc trình sử dụng thiết bị (đánh dấu thiết bị trạng thái rỗi)

Trình điều khiển cung cấp hàm để ứng dụng sử dụng muốn trao đổi liệu với thiết bị Mặc dù cố gắng để tạo giao diện (là hệ thống

(152)

các hàrn) thống nhấl (về cách gợi, Iruvền tham số) cho tất !oại thiết

bị ITIỊIC liêu khó dạt vi kiểu thiết bị có chất khac

nhau, nơn cách sừ diintí, khác

Giao diện với nhân ỈỈĐ II

Trình điều khiền thực thi thị đặc quyền lệnh cho điều khiên thiết bị, nghĩa trình điều khiển thực thi phận HI3H, phận chương trình ứng dụng Trinh điều khiển cịn có khả đọc/ghi thơng tin khơng gian địa nhiều tiến trinh, thiết bị dùng chung Trong MĐH cũ, trình điều khiên Ihưừng tích hợp vào HĐH cách thay đổi mã nguồn HĐH sau biên dịch lại

Bộ dlểu khiển (Phản ctm g)

a) b)

Hình 8.11 Giao diện HĐH trinh điều khiển thiết bị

Các 1IĐH đại đơn giản hóa việc cài đặt thiết bị cách cho phép cài đặt trình điều khiển mà khơng cần biên dịch lại HĐH (hệ thống cấu hình lại thơng qua nhũTig thị đặc biệt) Khi thiết kế, mã HĐH kết buộc động với chức trình điều khiển Ví dụ hHình 8.1 la, bảng gián tiếp (ITR) thiết bị j "trò" tới module cài đặt hàm open, re a d trình điều khiển Trình điều khiển chuẩn hóa để

(153)

giao diện API - phần giao diện HĐH Khi tiến trình gọi lời gọi

hệ thống, nhân chuyển lời gọi tới trình điều khiển nhờ bảng gián tiếp.

Khi cài đặt trình điều khiển, thơng tin IRT đưa cho HĐH sừ dụng trình thực thi

8.3.2 Tương tác CPU thiết bị

CPU thiết bị thực thể tách rời, có khả hoạt động độc lập với Bộ phận quản lý thiết bị phải cung cấp cách thức để tiến trình thực thi CPU đồng hoạt động với thiết bị mà tiến trình sử dụng Hình 8.1 Ib minh họa ba phận có liên quan thao tác vào/ra cách thức phối hợp hoạt động chúng Trong hình vẽ, thao tác phần cứng điều khiển, trình điều khiển thiết bị phần mềm ứng dụng minh họa ngơn ngữ c Vì điều khiển phần cứng ln hoạt động ncn đặt vịng lặp vô hạn for Đầu tiên, thiết bị "đợi việc" - tức đợi lệnh đặt vào ghi lệnh điều khiển (đợi điều khiển thiết

lập cờ busy) Sau nhận lệnh, điều khiển thực lệnh báo hiệu

khi thực xong lệnh (bằng cách thiết lập cờ done trong ghi trạng

thái) Trình điều khiển thiết bị (một phần HĐH) người dùng gọi cần thiết, v ề mặt khái niệm, xem chức trình đicu khiển thủ tục, thủ tục tiến trình ứng dụng gọi Khi chức gọi, trình diều khiển thực "lời gọi phần cứng" tới điều khiển cách thiết lập giá trị ghi điều khiển Trong hệ thống thăm dị, trình điều khiển thăm dò xem thiết bị thực xong công việc hay chưa Trong trường hợp sử dụng ngắt, trình xử lý ngắt cho thiết bị gọi Trong hai trường họp, tiến trình ứng dụng yêu cầu vào/ra trả lại quyền sử dụng CPU giống trả sau gọi thủ tục mơi trưịng lập trình truyền thống

CÂU HỎI ƠN TẬP 1 Trình bày phương pháp quản lý thiết bị.

2 Trin h bày ưu điểm vào/ra qua ánh xạ nhớ.

(154)

ChLFcyng 9

QUÀN LÝ Bộ NHỚ

Để nâng cao hiệu suất cách chia sẻ CPU nhiều tiến trinh, hệ

thống phải tải nhiều tiến trinh vào nhớ, nghĩa nhớ sử dụng chế độ chia sẻ Chương trình bày, so sánh phương pháp quản lý nhớ khác nhau, từ thuật toán quản lý nhớ cực kỳ đơn giàn hệ máy tính đàu tiên đến thuật toán phàn trang kết hợp phân đoạn phức tạp.

9.1 CÁC LOẠI ĐỊA CHỈ 9.1.1 Kết buộc địa chỉ

ỉ)ối với người lập trình, chương trình viết có khn dạng tương tự Hinh la Trình biên dịch cấp phát khơng gian cho biến gVar module đơi tượng - module có khả tái định vị Tuy nhiên, hàm put_record lại nằm module đối tượng khác, trình biên dịch chưa kết buộc hàm với địa cụ Ihể Trinh biên dịch tạo đoạn mã tương tự Hình 9.1 b gVal nằm 0036 trình biên dịch ghi lại ánh xạ vào bảng Biểu tượng (bảng nằm vị trí 0600 module) Chi thị địa 0220 chuyển giá trị vào ghi R I, thị địa 0224 chuyển giá trị RI vào ô 0036, kết họfp lại lệnh gán gVar = Trình biên dịch thực lời gọi cách đặt giá trị gVar vào ngăn xếp (chỉ thị có địa 0228), sau gọi put_record (chỉ thị địa 0232) Chú ý, put_record nằm module đối tượng khác Vì chưa có đủ thơng tin nên trình

biên dịch khơng thể xác định vị trí put_record (cơng việc để lại

(155)

Trình liên kết chỉnh lại địa Đoạn mã Hình 9.1b chuvìn sang Hình 9.1c vị trí 1008 Như vậy, địa tương đổi Hình b chuyến thành địa 1008 Hình 9.1c Chú ý, địa modUe

tuyệt đối bắt đầu t 1'ại thời điểm tải, module tuyệt đối lài Vâo

bộ nhớ để tạo nên hình ảnh tiến trình nhớ (Hình 9.1 d) s ta tic in t g V a r; ( s )

in t proc_a{in1 aeg){ gVar - 7;

p o f _ r e c o r d ( g V a r ) ;

R e la tiv e A d d r e s s

0000

4 000

S220 ?4

&22ÍỈ 5232 M99 6334 M70 6d99 TOOO 7136 8000

G e n e r a t e d

coứe (d)

{ O th e r p r o c e * * ' i p r o g r a m * ) ( O t h e r m o d u le * )

entry P<’oc_a

[ S p a c e f o r g V a r v a h a b J e ]

I09d -7 R1

S l o r e R J p u s h 036 c s il M

{Erxi ol pfOc B)

( O t h e r m o ũ i é s )

e n t r y p u t_ re c o rd

( o p ti o n a l s y m b o t t a b l e )

( l a s t l o c a t io n In T he c o d e s e g m e n t ) ( f l r # t l o c a t io n in ! h e d a t a • e g m e f t ! ) [ S p a c e l o r g V s r v a ria W e J ( O t h e r p r c » c e s i 's p r o g r a m * )

D ata S e g m e n t R e la tiv e G e n e r a t e d A d d r e s s variat><e s p a c e C o d e S e g m e n t

R e i s tt v e G e n e r a t e d A d d r e s s C o d e

0 0 ( O tfw r m o d u l e * )

01J6

1008 e n t r y p f o c a

\ooo

1220 \<m6 - , R1 1224 * t o r e R l ’ o i 1228 p u s h 036 1232 c a ll Ỉ Ỉ 1399 (E n d o f p r o c _ a ) ( O t h e r m o d u l e * ) 2334 e n t r y p u t _ r e c o r d ( o p tio n a l l y m b o l la W e )

2 9 ( l a s t l o c a t io n in t n e c o d e » e g f n e r r t)

(c)

[ S p a c e f o r g V a r v a r ia b le ]

(la s t t o ca b o n in th e d a ta s e g m e n t)

C o d e S e g m e n t R e la tiv e G e n e r a t e d A d d r e s s C o d e 0000

D ata S e g m e n t R e la tiv e G e n e r a t e d

A d d r e s s v a r i a b l e u p s c e (b) 008 0220 224 228 232 404 i>^ Ữ&40

0 600 9

e n try

lo a d s t o r e p u s h

call

p r o c a =7,R R1, 00 036 • p o t_ r e c o r d '

0036

0(>49

[ S p a c e f o r g V a r v e ria b te }

( is t lo c a tio n in th e data s e g m e n t)

t x t e r o ỏ í r e f e r e n c e ta W e “p u t _ r e c o f d ' I x l e r n o l d e f i n i ti o n t a b l e 'p r o c a ' 0006 (ty m tx > ! to U tỉl

( I a s i t o c a l io n tn t t i e c o d e l e g m e f r t )

Hình 9.1 Quá trinh biên dịch

Thườiig chương trình khả thi (kết trình liên kết) luTJ trữ dạng file nhị phân, chẳng hạn file COM hay EXE HDH MS-DOS Chương trình tải vào nhớ hệ thống tạo lập úến trình tương ứng để thực thi Phụ thuộc vào phương pháp quản lý mớ, tiến trình hốn chuyển ổ đĩa nhớ suốt Irinh tầực thi Tiến trình người dùng tải vào vị trí nhớ Vì

thế, không gian địa chi 0, địa thị đầu

liên tiến trình khơng thiết phải Thường chương trình ngiồn phài qua nhiều bước trước thực thi (Hình 9.2a) Địa bvớc biểu diễn theo nhiều cách khác Địa chương trnh

(156)

biếu lirợng với địa chi dinh vị (chẳng hạn, cách vị trí bắt đầu của module 0036 byte) Den lưm irình liên kết hay tải kết buộc địa khả định vị với địa tuyệt đối (chẳng hạn 5036) Mỗi trình kết buộc là thực ánh xạ từ không gian địa sang không gian địa khác.

(a|

Inii:

( Fonran

^ ao n CJC tíU ,0

M o d u ỉr T i i d ỉa b tỊ

T r ia h L iên k ẽ l

tytĩéa

tabf

măntt

K ê t h p ìíýi c i c th v i ic n b ã [

n

â

tư>«t Ổi

Bộ tài ^

Bộ o b t r o B g

C b n g tr i n k K h i l t ú

(b)

20K

MK

SOK

Hình 9.2 Kết buộc địa trình ánh xạ nhở

Quả trình kếl buộc thị liệu với địa cụ thể nhớ có

thề ihirc Ihời điểm sau đây:

• Thời điềm bicn dịch: Nếu thời điểm biên dịch biết tiến• • • •

trình nằm đâu nhớ, Irinh biên dịch sinh mã với địa tuyệt đối Ví dụ, biết trước vị trí bẩt đầu liến trình người dùng R, mã trình biên dịch sinh vị trí R Nếu sau dó, vị trí khởi đầu thay đổi phải biên dịch lại chương trình Chương trình dạng COM MS-DOS có mã địa tuyệt đổi sinh thời diểm biên dịch

• T hịi điểm tải; Neu thời điểm biên dịch trước vị trí irong nhớ tiến trình, trình biên dịch sinh mã khả định vị Trong trường hợp này, kết buộc địa bị trì hỗn đến thời điểm tải Nếu địa khởi đầu thay đổi, cần nạp lại mã khả định vị để sinh địa tuyệt đối mà không cần biên dịch lại chương trình • T hịi điểm thực thi: Nếu q trình thực thi, tiến trình di

(157)

9.1.2 Tải động (Dynamic loading)

Thủ tục (lưu ổ đĩa định dạng liên kết tải) chi dược tải vào nhớ cần thiết Khi gọi, hệ thống kiểm tra xem thủ tục nằm nhớ hay chưa Nếu chưa, tải đưa thủ tục vào nhớ cập nhật lại bảng địa chương trình Sau đó, HĐH thực thi thủ tục vùa tái

vào Trong chương trình có nhiều đoạn mã xử lý biệt lệ (ví dụ thủ tỊic xừ lý

lỗi) với đặc điểm sử dụng, nhớ tiết kiệm khơng phải tải tồn chương trình vào Tải động khơng địi hỏi HĐH hồ trạ Người lập trình thiết kế chương trình để tận dụng ưu điểm chiến lược

9.1.3 Liên kết động

Phần lớn HĐH hỗ trợ liên kết tĩnh (thư viện ngôn ngữ lập trinh giống module đối tượng tải kết hợp thành hình ảnh nhị phân

chương trình) Khái niệm liên kết động lương tự khái niệm tải động, trong

đó q trình liên kết bị trì hỗn lại Đặc tính sử dụng với thư viện hệ thống, chẳng hạn thư viện thủ tục cùa ngôn ngữ lập trình Nếu

khơng có đặc tính này, hình ánh nhị phân tất chương trình trong

hệ thống phải chứa thư viện ngơn ngữ Điều lãng phí- khơng gian ổ đĩa nhớ Với liên kết động, hình ảnh nhị phân chương trinh không chứa thủ tục thư viện hệ thống mà chứa "đại diện" "Đại diện" đoạn mã nhỏ dùng để xác định vị trí cùa thủ tục tương ứng nhớ, làm để tải vào nhớ thủ tục chưa nằm nhớ Khi thực thi, "đại diện" kiểm tra liệu thủ tục mà minh đại diện nằm nhớ chưa, chưa tải thủ tục vào Sau đó, thú tục thật thay "đại diện" Trong lần thực thi kế đó, thủ tục thực thi Ngồi ra, cần thủ tục cho tất tiến trình dùng chung

(158)

vá chương trình quyếl dịnh sử dụriR phiên ihư viện 1^0 đó, chương irình biên dịch với phiên thư viện bị ảnh hưưng irong hệ thống chưa có phiên Những chưcmg trinh dưcyc liên kết trước có ihư viện tiếp tục sử dụng thư viện cũ Liên kết dộng địi hịi HDH hỗ trự liến trình khơng phép truy

xt vào vùng nhớ cúa HDH có thê cho phép nhiều tiến

liình Iruy xuất dến địa chi nhớ

9.1.4 Phủ (overlay)

rải phù cóng nghệ cho phép tiến trình lớn lượne bộ nhớ cấp

phát Ý tưởng kỳ thuật lại thời điểm lưu nhớ chi thị dừ liệu thực cần thiết Khi không cần thiết, thị liệu đưa đế lấy chồ cho thị liệu cần thiết Ví dụ, trình biên dịch gồm nhiều pha khác như: tiền xử lý, xây dirng cú pháp, biên dịch sơ bộ, tối im hóa, tạo mã máy Các pha diễn độc lập với Đoạn mã mồi pha dặt phủ dưa vào nhớ Giống tải động, phủ khơng địi hỏi HĐH hồ trợ Người lập trình ihiết kế lập trình cho cấu trúc vùng phủ xác Điều địi hỏi người lập trình phải biết đầy đủ cấu trúc, mã lệnh, cấu trúc ciữ liệu cúa chương trinh Nếu kích thước chương Irình lớn (chương trình nhỏ khơng cần kỹ thuật phủ) thi điều trở nên đặc biệt khó khăn

9.2 KHÒNG GIAN ĐỊA CHỈ

Địa CPU tạo dịa logic, địa CPU chuyển cho phận quản lý nhớ (địa tải vào ihanh ghi địa nhớ MAR) dịa chi vật lý Nếu kết buộc thời điểm tải thời điểm dịch, địa vật lý địa logic Còn kết buộc thời điểm ihực thi hai địa khác địa logic gọi địa ảo Tồn địa logic chương trình sinh tạo thành khơng gian địa chi logic, cịn tập tất địa vật lý ứng với địa chi logic tạo nên không gian địa vật lý

(159)

trình sinh với giá trị lưu ghi tái định vị Ví dụ, ghi tái định vị có giá trị 4000, địa người dùng muốn 25 MMỤ sin]i địa chi 4025 MS-DOS chạy dòng CPU Intel 80X86 sừ dụng bốn th.inh ghi tái định vị lải thực thi tiến trình Chương trình người dùng khịng "nhìn" thấy địa chi vật lý mà sinh địa logic Phần cứng chuyển địa logic sang địa vật lý xác định địa ô nhớ tham chiếu tham chiếu tạo Lúc có hai loại địa địa chi logic (từ đến max) địa vật lý (từ R + đến R + max với R giá trị ghi tái định vị) Quá trình ánh xạ trọng tâm việc quản lý nhớ

CPU

Đ ịa c h i tirơQg đ ố i [—

-T banh g h i tái d in h~vi}-~"Ỷ

T hanh ghi giới hạn <1

- H ìn h íih c ù a p|

(a) Interrupt

^ Cbuyêiip^vM ^ I ^1

ố đ ía

\ H ìu h ả o b

của-pỊ -Hình 9.3 Quản lý nhở 9.3 HOÁN CHUYẾN

(160)

kết ihúc, liến trinh mức ưu tiên thấp đưa trờ lại nhở để\iệp tục thực liiộn Neu kết buộc thời điểm biên dịch thời điểiĩl tải, tiền trình phải cỊuay vùng nhớ cũ Neu kết buộc bị trì hỗn dến thời điểm ihực thi, HDỈ i hốn chuyển tiến trình tới vị trí khác Bộ điều phối kiểm tra tiến

1 ri nil dược chọn thực thi nằm nhớ hay chưa Nếu chưa khơng

cịn vùng nhớ trống thi điều phối hốn chuyển tiến trình nằm irong nhớ ổ đĩa để lấy chỗ cho tiến trình Khi đó, thời gian chuyển ngữ cảnh hệ thống lớn Giả sử tiến trình người dùng có kích thước 100KB tốc độ truyền liệu ổ đĩa cứng IMGB/s Thời gii,in hốn chuyển tiến trình nliớ ổ đĩa 100/1000 = 1/lOs = lOOms

(jiả sử ihời gian trễ 8ms bỏ qua thời gian dịch chuyển đầu đọc ổ

ciĩíi cứng, thời gian hoán chuyển 108ms Tổng thời gian hoán chuyển hốn chuyển vào 216ms Thường khơng gian hoán chuyển vùng riêng biệt ổ đĩa, độc lập với hệ thống file, nên bỏ qua thời gian dịch chuyến đầu đọc/ghi Để tận dụng CPU hiệu quả, thời gian thực thi tiến trình phải lớn thời gian hốn chuyển Vì thế, thuật tốn điều phối CPU theo kiểu xoay vịng, lượng tử thời gian phải lón 0,216s

Thời gian truyền (chiếm phần lớn thời gian hoán chuyển) tỷ lệ với khối lượng hốn chuyển Do đó, xác định xác khối lượng nhớ tiến trình người dùng sử dụng (chứ khơng phải tồn kích thước tiến trìnli), cần hốn chuyển phần nhớ thực cần thiết giám thcM gian hốn chuyển Vì thế, tiến trình với u cầu nhớ động sử dụng lời gọi hệ thống yêu cầu hay giải phóng nhớ Nếu tiến trình P| đợi vào/ra đệm vào/ra nằm nhớ người dùng, Pj khơng phép hốn chuyển Giả sử thao tác vào/ra phải đợi thiết bị bận Khi

đó, hốn chuyển P| ngồi đưa tiến trình P2 vào chỗ, thao tác

vào/ra ghi vào vùng nhớ mà cấp cho P2 Có thể khắc

phục vấn đề cách, đặt đệm vào/ra khu vực nhớ HĐH Khi đó, trao đổi HĐH tứiớ tiến trinh xảy tiến trình chuyển vào

9.4 CÁP PHÁT LIÊN TỤC

(161)

vector ngắt Khơng tính tổng qt, giả sử HĐH đặt vùng nhớ thấp

9.4.1 Cấp phát vùng nhớ liên tục

Không bảo vệ đoạn mã dừ liệu HĐH (khơng cho tiến trìnli người dùng thay đổi) mà HĐH phải đảm bảo tiến trình người dùng khơng thể xâm phạm vào vùng nhớ Có thể thực điều bàng cácli sừ dụng ghi tái định vị ghi giới hạn (limit register) minli họa Hình 9.3a Thanh ghi tái định vị chứa giá trị địa vật lý nhỏ nhất, ghi giới hạn chứa địa logic lớn Công việc ánh xạ trình bày mục 9.2 Việc bảo vệ thực cách kiểm tra xem địa logic có bé ghi giới hạn khơng Khi chọn tiến trinh A thực thi, trình chuyển ngữ cảnh, điều phối thiết lập ghi tái định vị ghi giới hạn tương ứng với tiến trình A Vì địa CPU tạo kiểm tra, nên nhớ HĐH lẫn chương trình liệu người dùng bảo vệ

9.4.2 Cấp phát nhiều vùng nhớ liên tục

Để chứa nhiều tiến trình, hệ thống chia nhớ nhiều phân vùng có kích thước cố định, phân vùng chứa tiến trình Khi phân vùng rỗi, tiến trình hàng đợi nhập lài vào Nếu tiến trình kếl thúc, phân vùng tưong ứng giải phóng để cấp phát cho tiến trình khác Phương pháp gọi MFT lần cài đặt HĐH IBM OS/360, sừ dụng chủ yếu môi trường xử lý theo lô Tuy nhiên, nhiều ý tưởng giới thiệu áp dụng mơi trưịng chia sẻ thời gian - mơi trường áp dụng phưoTig pháp quản lý nhớ phân đoạn (mục 9.6)

(162)

T*— f 8M

■VMIÌ9 ĩẹsH m r

nr*m 1i

i

P1 P1

1

> 2QM P1

20M P1 20M

P1 > 20M !> 20M ! P7 14M

ị 1

ì

Ị 8M

6M

1

P2 j

} 14M j

P í ^ BM P4 P4 8M

> 55M

:i Ịí 36M

- - Ịrm ;6 M 6M

!

> ??M P3

Ịi8M P3 18M )

P3 18M P3 [

Ị18M P3 16M

J ; Ị) M M P4M > 4M 'm m 4M

( a | I b ) (c) ( d ) (n ( g ) (h) Hình 9.4 Ví dụ cấp phát nhớ

Giả sử thời điểm (a) hệ thống có 64MB nhớ, HĐH chiếm 8MB

đầu liên, 56MB dành cho tiến trình ngưịd dìmg minh họa Hình 9.4 Tại thời điểm (b) xuất tiến trình P1 có kích thước 20MB, P1 đưa vào nhớ, nhớ trống 36MB Tại thời điểm (c) tiến trinh P2 có kích thước 14MB xuất cấp phát nhớ Thời điểm (d) tiến trình P3 đcn cấp phát nhớ, nhớ cịn trống 4MB Nếu tiến trình P4 với

kích thước 8MB đến nhớ trống khơng đủ chỗ cho P4 Tuy nhiên,

thời diểm (e) tiến trình P2 kếl thúc nhớ đủ chỗ chứa P4, thời điêm (f), P4 đưa vào nhớ

Tiến trình lúc đầu nằm hàng đợi nhập Dựa nhu cậu sử dụng nhớ tiến trình tổng lượng nhớ khả dụng, HĐH xác định liến trình cấp phát nhớ Kế tiếp, tiến trình tải vào nhớ cạnh tranh quyền sử dụng CPU Khi kết thúc, tiến trình giải phóng nhớ, phần khơng gian nhớ lại HĐH cấp phát cho tiến trình khác Tụi bấl kỳ thời điểm nào, HĐH có danh sách khối nhớ khả dụng hàng đợi nhập HĐH sẳp xếp hàng đợi nhập theo thuật toán điều phối Bộ nhớ cấp phát cho liến trình khơng thể đáp ứng khơng có khối nhớ dụng đủ lớn HĐH đợi có khối nhớ khả dụng đủ lớn, tìm tiếp hàng đợi nhập để lựa chọn tiến trình có nhu cầu nhớ hoTi

Có thể có nhiều khoảng trống với kích cỡ khác nằm rải rác nhớ Khi cần cấp phát, hệ thống tìm kiếm khoảng trống đủ lớn để cấp K-hoảng trống bị tách ra, phần cấp cho tiến trình; phần cịn lại trớ thành khoảng trống Tiến trình kết thúc giải phóng vùng nhớ cấp phát vùng nhớ lại đánh dấu khoảng trống Có thể hẹrp hai khoảng trống nằm kề thành khoảng trống lớn

ll- G tN L H Đ H - D N

(163)

Thủ tục ví dụ điển hình vấn đề cấp phát tài nguyên: Làm ihế để đáp ứng u cầu nhớ có kích thước N từ danh sách khoảng trống? Tùy theo tiêu chí đó, hệ thống tìm kiếm tập hợp khoảng trống để lựa chọn khoảng trống tối uu

• First-fit: c ấ p phát khoảng trống có kích thước đủ lớn Việc tìm kiếm khoảng trống danh sách, sau khoảng trống vừa chọn trước Q trình tìm kiếm kết thúc sau tìm thấy

• Best-fit: Cấp phát khoảng trống đủ lớn nhỏ Phưong pháp tạo khoảng trổng lại nhỏ

• Worst-fit: Cấp phát khoảng trống lớn Phương pháp tạo khoảng trống lại lớn

Có thể cải tiến hiệu suất tìm kiếm Best-fit Worst-fit bàng cách xếp khoảng trống theo kích thước Các kết mơ cho thấy thuật toán First-fit Best-fit chạy nhanh tận dụng nhớ tốt so vóị Worst-fit Khơng thuật tốn hai thuật toán First-fil Best-fit thực vượt trội khả tận dụng nhớ, nhiên, thuật tốn First-fit nhìn chung chạy nhanh Best-fit

9.4.3 Phân mảnh phân mảnh trong

Khi nhiều tiến trình tải vào, sau giải phóng nhớ, khơng

gian nhớ trống bị phân thành nhiều mảnh nhỏ Phần mảnh ngoài

(164)

sẽ không sử dụng tượng phân mảnh Vậy, có tới 1/3 khơng gian nhớ bị lãng phí Dặc điểm gọi luật 50%

Xét khoảng trổng 8464 byte Giả sử tiến trình yêu cầu 8462 by le nhớ Nếu cấp phát khối nhớ theo yêu cầu thừa khoảng trổng byte Chi phí quản lý khoảng trống byte lớn nhiều so với giá trị khoảng trổng byle đem lại Đây

tưt.mg phãn mánh trong.

Giải pháp khắc phục tượng phân mảnh thu gọn (compaction): dồn khoảng trống rải rác thành khoảng lớn Kỹ thuật áp dụng trình tái định vị động thực thời đicm thực thi (vì cần thay đổi giá trị ghi tái định vị) Trong trường hợp đơn giản, hệ thống dồn tất tiến trình đầu dồn tất khoảng trống đầu nhớ để tạo nên khoảng trống khả dụng lớn Đê giảm chi phí, chi thu gọn phần tạo khoảng trống vừa đủ đáp ứng yêu cầu tiến trinh

Có thể sử dụng hốn chuyển với thu gọn Tiến trình bị chuyển lừ nhớ ổ cứng sau chuyển nhớ Khi chuyển ra, nhớ tiến trình chiếm giữ hệ thống cấp phát cho tiến trình khác Tuy nhiên, đưa tiến trình trở lại nhớ chính, có mộl vấn đề nảy sinh Nếu sử dụng kỹ thuật tái định vị tĩnh, tiến trình phải quay lại vùng nhớ mà Irước sử dụng Như vậy, vài tiến trình phải đưa để tạo khoảng trống theo yêu cầu Nếu sử dụng kỹ thuật tái định vị động, tiến trình đưa vào vùng nhớ Trong trường hợp Ỉ IĐI ỉ tìm khoảng trống, dùng kỹ thuật thu gọn thấy cần thiết tài tiến trình vào Một giải pháp kỹ thuật Ihu gọn đưa tiên trình cần di chuyển ngồi, sau tải lại vào vị trí khác nhớ Nếu kỹ thuật hốn chuyển tích hợp vào hệ ihống dễ dàng cài đặt thêm kỹ thuật thu gọn

9 P H Â N T R A N G

(165)

phân mảnh nhớ lẫn ổ cứng ngoài, Hiện tưọng phân mảnlh ổ đĩa cịn nghiêm trọng khó áp dụng kỹ thuật thu gọn

9.5.1 Phương pháp bản

Bộ nhớ vật lý chia thành khung trang có kích thước cố định Bộ nhớ logic chia thành trang (page) Kích thước trang khung trang bàng Trước thực thi, trang tiến trinh nằm ổ đĩa tải vào khung trang chưa sử dụng nhớ ổ cứng chia thành khối có kích thước kích thước khung trang Hinh 9.5 minh họa phần cứng hỗ trợ phân trang Địa CPU tạo chia thành hai phần địa trang (p) địa tương đối trang (d) Địa trang sừ dụng làm mục đến bảng trang (page table) Bảng trang luia trữ địa sở mồi trang nhớ vật lý Địa chi sờ cộng với địa chi tương đối trang lạo địa chi vật lý (địa tuyệt đối)

Cl*u

D Ịa c h i lo g ic

■H x m

Đ Ịo c h ỉ v ậ t tý

1

L i T d T - *

(a) B ả n g t r a n g

oooo

Bộ nhớ vật lý

Địa trang Địa chi offset

p d

■ Ut

( b )

Hình 9.5 Phần cứng hỗ trợ phân trang

Kích thước trang kiến trúc phần cứng quy định, thường lũy thừa 2, biến thiên từ 512 byte đến 16MB Nếu kích thước khơng gian địa logic 2"\ kích thước trang 2" đơn vị (byte word), (m - n) bit cao địa logic xác định số hiệu trang n bit thấp xác định địa tương đối trang (Hình 9.5b) Ví dụ, xét nhớ Hình 9.6b Q ả vSử trang có kích thước byte khơng gian nhớ vật lý 32 byte (8 trang) Địa logic ứng với trang 0, địa tương đối Trong bảng Irang, trang

0 khung Như vậy, địa logic ứng với địa vật lý 20 (5 X + 0)

(166)

p đ *

pôgôi pe0ô2

S hiệu khung

B n g a n g B ộ n h

l o g i c

PWO

Pégế2

paO»l

p a g t3

0 ' ' »

1 b c d t h e 10 k 11 12 m 13 n u B 0 \ 2

3

B ả n g a n g

B ộ n h l o g i c

B ộ n h V ậ t lỷ

(a) ( b )

Bộ nhớ

v ậ t lý i k m n o ' Ĩ T "

, p

20 ã ^ c đ 24 • I í 28

Hình 9.6

Phân trang trường họp tái định vỊ động (phần cứng biến đổi (hay ánh xự) địa logic với địa vật lý) Phân trang tổng qt hóa kỹ thuật trình bày mục 9.4 cách sử dụng bảng chứa nhiều ghi tái định vị, ghi ứng với khung trang Với phân trang, tượng phân mảnh ngồi khơng xuất (bất khung trang tự cấp phát cho tiến trình) Tuy nhiên, có tượng phân mảnh Vì khung trang đơn vị cấp phát sở, nên nhu cầu nhớ tiến trinh không bội số kích thước trang, khung trang cuối klìơng sử dụng hết Ví dụ, kích thước trang 1024 byte tiến trinh 2049 byte cần trang cộng với byte Hệ thống phải cấp phát kliung trang cho tiến trình, dẫn tới phân mảnh khung trang cuối Nếu kích thước tiến trình độc lập với kích thước trang, mức độ phân mảnh trung binh cùa tiến trình nửa trang Điều dẫn đến đề xuất giảm kích thước trang Tuy nhiên, giảm chi phí phụ trội để quàn lý báng trang bàng cách tăng kích thước trang Cũng vậy, thao

tác vào/ra đĩa hiệu khối lượng liệu trao đổi lớn

(167)

13

15

16

17 18

20

ữsnh sách khung trang tự

15

20

p«9»t

Trước khí cấp phát

Bâng Uang tiên bình mcri

Sau khỉ C ấ p phát Bổng ứang

(a) (b|

Hình 9.7 Bảng trang

Phân trang tách bạch quan niệm nhớ người dùng với V trí

chưong trình nằm nhớ vật lý Lập trình viên xem chương trinh khơng gian liên tục nhớ chứa chương trình Trên thực tế, chương trình nằm rải rác nhớ vật lý, nhớ vật lý chứa nhiều chưoTig trình khác Quá trình chuyển đổi địa che dấu khác biệt hoàn toàn "trong suốt" với người dùng Với trách nhiệm quản lý nhớ vật lý, HĐH phải xác định khung trang cấp phát, khung trang cịn tự (chưa cấp phát), Các thơng tin lưu giữ cấu trúc liệu gọi bảng khung Trong bảng khung, hàng ứng với khung trang vật lý xác định tình trạng cấp phát hay tự khung trang trường hợp cấp phát khung cấp phát cho trang tiến trình HĐH phải ghi nhớ bảng trang tiến trình (giống ghi nhớ nội dung ghi sở) Bộ điều phối sử dụng bảng trang để khởi tạo lại phần cứng thực ánh xạ trước tiến trình bắt đầu thực thi Chính thế, phân trang làm tăng thời gian chuyển ngữ cảnh tiến trình

9.5.2 Cấu trúc bảng trang

(168)

Phần cúng

Có nhiều cách cài đặt, đơn giản đặt bảng trang ghi chuyên dụng có tốc độ đọc/ghi cao Do đó, nhanh chóng xác định trang nằm khung Irang Mỗi truy xuất đến nhớ phải Ihông qua bảng trang, tốc độ yểu tố quan trọng Khi chuyển ngữ cảnh, điều phối CPU nạp lại ghi (giống nạp lại ghi khác CPU) Các thị nạp thay đổi nội dung tliunh ghi chuyên dụng thị đặc quyền, HĐH phép thay dồi ánh xạ nhớ DEC PDP-11 áp dụng cơng nghệ (địa 16 bit kích Ihước trang 8KB) Như vậy, bảng trang có dịng lưu giữ ghi chuyên dụng Có thể sử dụng ghi làm bảng trang

nếu bàng trang nhỏ vừa phải (256 hàng) Nếu bảng trang lớn khơng

the sứ dụng ghi chuyên dụng nữa, mà phải đặt bảng trang nhớ chính, ghi bảng trang sở (PRBR) trỏ đến bảng trang liến trình Thay đổi bảng trang cần thay đổi ghi, giam thời gian chuyển ngữ cảnh

I liệu suất giải pháp khơng cao, lần đọc/ghi phải truy xuất nhớ hai lần Bước thứ nhất, phải truy cập tới bảng trang để xác định số hiệu khung trang (bảng trang xác định qua ghi PTBR) Bước thứ hai, số hiệu khung cộng với địa tưofng đối để tạo địa vật lý thực Do đó, tốc độ truy xuất nhớ bị giảm hai lần

(169)

sổ hiệu trang số hiệu khung vào TLB để tham chiếu sau xác định nhanh (Hình 9.7b) Nếu TBL đầy, HĐH phải lựa chọn số hàng để thay Khi chuyển ngữ cảnh phải xóa tồn TBL để đảm bảo tiến trình thực thi không sử dụng thông tin tiến trình cũ

Tỷ lệ trúng (hit ratio) tỷ lệ tìm thấy số hiệu trang TLB, 80°^o nghĩa tìm thấy số hiệu trang mong muốn 80% số lần tìm kiếm Neu tìm kiếm TLB 20ns lOOns truy xuất nhớ, truy xuất nhớ có TLB 120ns trường hợp tìm thấy số hiệu trang TLB Nếu khơng tìm thấy số hiệu trang (vẫn 20ns tìm kiếm), trước hết phải truy xuất tới bảng trang nhớ để tìm số hiệu khung (lOOns), sau truy xuất byte mong muốn nhớ (lOOns), tổng cộng nnẩt 220ns Để xác định thời gian truy xuất nhớ hiệu dụng (effective memory- access time), phải xét đến trọng số xác suất xuất trường hợp

Thời gian truy xuất hiệu dụng 0,8 X 120 + 0,20 X 220 = 140ns Như vậy,

thời gian truy xuất nhớ chậm 40ns (từ lOOns đến 140ns) Với tỷ lệ trúng

là 98%, thời gian truy cập hiệu dụng 0,98 X 120 + 0,02 X 220 = 122ns

Tỷ lệ trúng cao giúp giảm tốc độ truy xuất nhớ 22% Hiển nhiên, tỷ lệ trúng có liên quan đến số lượng ghi liên kết Khi số lượng từ 16 đến 512, tỷ lệ trúng từ 80 đến 98% CPU Motorola 68030 (dùng hệ thống Apple Macintosh) có 22 ghi TBL, CPU Intel 80486 có 32 ghi tỷ lệ trúng đạt tới 98%

Bảo vệ

Mỗi khung trang có bit bảo vệ, thường lưu bảng trang Ngoài ra, sử dụng thêm bit để xác định trang có thuộc tính đọc/ghi hay chi đọc Mỗi tham chiếu đến nhớ phải qua bảng trang để tìm số hiệu khung trang Song song với việc xác định số hiệu khung, hệ thống kiểm tra bit bảo vệ để ngăn cản thao tác ghi trang có thuộc tính đọc Thao tác ghi gây lỗi phần cứng quyền điều khiển chuyển cho HĐH

(170)

CO giá trị "không hợp lệ" (i) trường hợp ngư ợc lại dụ, hệ

thống với khơng gian địa chi 14 bit (0 —^ 16383), có chương trình chi sử dụng địa từ —> 10468 Với trang kích thước 2KB, ta có tình minh họa Hình 9.8a Các địa trang 0, 1, 2, 3, ánh xạ bình thường qua bảng trang Tuy nhiên, truy cập tới địa chi trang bị lỗi tham chiểu trang không hợp lệ Do kích thước cliương trình 10468, tham chiếu vượt giá trị mặt logic kliông hợp lệ Tuy nhiên, tham chiếu đến trang xem hợp lệ,

đó truy xuất đến địa 10469 12287 hợp lệ (chỉ địa từ 12288 đến

16383 không hợp lệ) Đây tượng phân mành việc phân trang

00000

t0.4«B 12.287

S ố h iệ u K h i^ Khỏogbợpl*

0 V

PÉQtl 1 3 »

2 V

3 7 »

PÉ0*9

s » y

pÊQt4 e ỉ

■ í

Bàngtrvig

(a) (b)

Hình 9.8 Ví dụ bảng trang

Hiếm tiến trình sử dụng tồn mà chi sử dụng phần khơng gian địa chi Khi đó, trang dải địa chi chiếm dòng tương ứng bảng trang gây nên tình trạng lãng phí Một số hệ thống có thêm ghi độ dài bảng trang (PTLR) để kích thước bảng trang Giá trị kiểm tra lần truy xuất nhớ để đảm bảo truy xuất nàm dải địa họrp lệ

9.5.3 Phân trang đa mức

(171)

trang có lới mộl triệu hàng (2^^/2‘^) Mỗi hàng gồm byle, nên mồi tiến trình cần tới 4MB nhớ làm bảng trang Tất nhiên, cấp phát bảng trang khu vực nhớ liên tục mà nên chia báng trang thành nhiều bảng nhỏ

Địa chì togic

p I P; I

S õ hiệu tra n g O ffs e t p l p2 d Pi

10 10 12

B ả n g tr a n g n g o ả i T

B n g c ủ a B ả n g tr a n g

Hình 9.9 Phân trang đa mức

Thông ihường, hệ thống sử dụng phương pháp phân trang hai mức: phân trang cho bảng trang Xét hệ thống 32 bit địa trang

CQ kích thước 4KB Địa logic chia thành hai phần sổ hiệu trang

20 bit địa tưong đối trang 12 bit Do phân trang bảng trang nèn số hiệu trang chia thành hai phần P1 (10 bit) mục đốn bảng trang P2 (10 bit) độ dịch chuyển trang bảng traiig

Phương pháp chuyển đổi địa cho kiến trúc minh họa tròn Hinh 9.9 Kiến trúc VAX hồ trợ phân trang mức VAX có bus địa 32 bit kích thước trang 512 byte Khơng gian địa logic tiến trình

được chia thành bốn đoạn bàng nhau, mồi đoạn gồm 2^^ byte Mồi đoạn ứiig

(172)

|)háp nà\ áp dụng vài vi xứ lý 32 bit để lăng tính linh hoại hiộu Có số hộ thống áp dụng nhiều mức, chẳng hạn kiến trúc Sl^ARC (với dịa chi 32 bit) hỗ trợ phương pháp phân trang mức, kién trúc Motorola 68030 32 bit hỗ trợ phương pháp phân trang mức

l^hân trang đa mức làm suy giảm hiệu suất hệ thống Giả sử bảng trang mức nằm nhớ chuvển địa logic sang dịa vật lý có ihc cần bốn lần truy xuất nhơ Thòd gian truy xuẩt nhớ tăng gấp năm lần 'l uv nhiên, có cache hỗ trợ hiệu suất đảm bảo Giả sư tỷ lệ trúng 98% thời gian truy cập hiệu dụng

0,98 X 120 + 0,02 X 520= 128ns

Do đó, chí với nhiều mức tra cứu bảng trang, thời gian truy xuất Iihớ cũriiỉ giảm 28%

9.5.4, Bảng trang nghịch đảo

O

iachi-I ị ^iachi-ItỶ

-»fpidT pT^~I M

I -í im k ié m

M2

data r i ể n trin h P1

B n g (ra n g c ủ â P1

ed2

Bár»g trangi

(a)

0 d đ a ta

«12

Bđ3

TȎn t n n h P2

4

6

LLI

ũ n g tr a n g c ỏ a P

T ìển trin h P

BÀng tr a n g c u a P

(b)

»02

Hình 9.10 Bảng trang nghịch đảo chia sẻ bảng trang

(173)

lý ứng với hàng Hình 9.1 Oa minh họa bảng trang nghịch đảo Một số hệ thống sử dụng bảng trang nghịch đảo IBM System/38 IBM RISC System 6000, IBM RT

Địa ảo hệ thống gồm phần: <ID-tiến trình, số hiệu trang, Jịa tương đối> Mỗi dòng bảng trang nghịch đảo cặp <ID-tiến trình, số hiệu trang> Khi truy xuất <ID-tiến trình, số hiệu trang> sử dụng làm khóa tìm kiếm bảng trang nghịch đảo Nếu tìm thấy dịng i địa vật lý xác định từ <i, địa tương đối> Nếu khơng tìm thấy, địa khơng họp lệ Bảng trang nghịch đảo làm giảm lượng nhớ vật lý cần thiết để lưu giữ bảng trang Tuy nhiên, bảng trang nghịch đảo không chứa đầy đủ thông tin không gian địa logic tiến trình Do đó, tiến trình cần bảng trang riêng, bảng trang riêng không cần đặt nhớ Giải pháp gây nhiều lỗi trang Mặc dù tiết kiệm nhớ, thời gian cần thiết để tìm kiếm bảng trang tăng Bảng trang nghịch đảo xếp theo địa vật lý, tra cứu lại dựa địa ảo, cần phải tìm kiếm lâu tồn bảng Để khắc phục, sử dụng bảng băm để hạn chế việc tìm kiếm nhỏ hàng bảng trang Nhưng truy xuất đến bảng băm thêm lần tham chiếu nhớ, lần đọc/ghi cần hai lần đọc nhớ vậl lý (một bàng băm bảng trang) Đe cải thiện hiệu suất, sử dụng TLB để lưu dòng định vị trước

9.5.5 Chia sẻ trang

(174)

lianu liệu dược ánh xạ vào khung trang khác Mặc dù có 40 ngirừi dùng, hệ thống chi cần mộl mã chương trình soạn thảo (150KB), cộng thêm 40 trang liệu cho người dùng Lưcmg nhớ cần ihiết 2150KB

int tm p ; int f(ĩnt i)

<

t m p = trnp * 2: r e t u r n tiĩip:

>

int f(int í)

{

int t m p : t m p = t m p * 2: r e t u r n tm p ;

}

(a) M ă klìịng thuản túy (b) M ã thuắn tuy

Hình 9.11 Mã túy mã khơng túy

Có thê dùng chung chương trình sừ dụng thường xuyên trình biên dịch, hệ thống cửa sổ, hệ quản trị sở dừ liệu, Để chia sé, mã chương trình phải mã túy Việc chia sè nhớ tiến trình hệ thống giống cách thread chia sẻ không gian địa chi tác vụ Thực chia sé nhớ hệ thống sử dụng bảng trang nghịch đảo không dễ, vi việc chia sẻ nhớ thường thực bàng cách cho phép hai hay nhiều địa logic ánh xạ đến địa chi vậl lý Nhưng phương pháp này, khung trang vật lý chứa nhiều địa chi ảo dược

9.6 PHÂN ĐOẠN

Lập trình viên thuờng khơng coi nhớ dãy tuyến tính byte mà lập hợp đoạn có kích thước khác nhau, thực chức khác nhau, đoạn khơng có quan hệ thứ tự xác định (Hình 9.12a)

9.6.1 Phương thức C O ’ bản

(175)

(b)

Không gian logic Bộ nhớ vật !ý

Hình 9.12 Minh họa phân đoạn

Trong phương pháp phân đoạn, không gian địa logic tập họp đoạn có tên kích thước xác định Địa tuyệt đối xác định qua tên đoạn khoảng cách tương đối đoạn (trong phân trang, người dùng đưa m địa chi nhất, phần cứng chia địa thành số hiệu trang khoảng cách tưong đối trang) Đe đơn giản, đoạn đánh sổ dùng số hiệu đoạn thay cho tên gọi Do đó, địa logic gồm hai thành phần <số hiệu đoạn, địa tương đối đoạn> Khi biên dịch, trình biên dịch tir động tạo phân đoạn tương ứng với chương trìnli nguồn Trình biên dịch Pascal tạo đoạn khác cho: (1) biến toàn cục; (2) ngăn xếp để thủ tục sử dụng lưu giữ tham số địa trả về; (3) đoạn mã mồi thủ tục hàm; (4) biến cục thủ tục hàm Trình biên dịch Fortran tạo đoạn riêng cho khối mã dùng nhiều lần Mảng đưa vào đoạn riêng rẽ Bộ tải tải tất đoạn gán số hiệu đoạn cho chúng

9.6.2 Phần cứng

(176)

I lình 9.13a minh họa cách sử dụng bảng phân đoạn Địa logic gồm số hiệu đoạn (s) địa tương đối đoạn (d); s sử dụng làm chi mục đến bảng phân đoạn, d phải nằm khoảng từ đến giới hạn đoạn Neu khơng thỏa mãn lồi địa logic vượt khỏi giới hạn đoạn 1IDM chiếm lấy quyền sử dụng CPU Nếu thỏa mãn, d cộng với địa chi sờ đoạn để tạo địa vật lý thực Có thể coi bảng phân đoạn mảng cặp ghi sờ - ghi giới hạn Ví dụ, xét trường hí.vp Hình 9.13b Ta có phân đoạn nam nhớ vật lý đánh số từ tới Mỗi hàng bảng phân đoạn ứng với phân đoạn, cung cấp địa bắt đầu (địa sở) đoạn nhớ vật lý, kích thước đoạn (giới hạn đoạn) Ví dụ, kích thước đoạn 400 byte, địa bắt đầu 4300 Do đó, tham chiếu tới byte 53 phân đoạn ánh xạ tới vị trí 4300 + 53 = 4353 Tham chiếu tới byte 1222 phân đoạn gây lỗi vi kích thước phân đoạn chi có 1000 byte

C;PU

V s

timit base

(a) (b)

n

"ãnTwi]

0 tQM ôôế0

ã ô00 ô300

40 4300 ỉ 1109 u o o ig g g 4700

' ỉ

Bàng đoạn Địa Logic

-UOO'

Lỗi Chuyển cho hệ điều hành Bộ nhớ vật Địa vật

Hình 9.13 Phần cứng phân đoạn ví dụ 9.6.3 Cài đặt bảng phân đoạn

(177)

chương trinh có nhiều đoạn bảng phân đoạn phải đặt nhớ Thanh ghi sở bảng phân đoạn (Segment-table base register - STBR) ưị đến bảng đoạn Vì số đoạn mồi chương trình kliác nhau, nên cần thêm ghi kích thước bảng phân đoạn STLR (Segment-table length register) Với địa chì logic (s, d), HĐH kiểm tra xem số hiệu đoạn s có họfỊ3 lệ khơng (tức s < STLR) Sau cộng s với STBR, kết (STBR + s) mục đoạn bảng phân đoạn Hàng ứng với mục đọc xử lý sau: Dựa kích thước đoạn để kiểrn tra xem địa tương đối đoạn có hợp lệ khơng (d < kích thước đoạn) Nếu họp lệ địa vật lý xác định cách cộng địa sở đoạn với địa tưcmg đối đoạn Giống phân trang, ánh xạ cần tới hai tham chiếu nhớ cho địa logic, làm hệ thống máy tính chậm hai lần Có thể sử dụng TLB để lưu lại hàng sử dụng thường xuyên

9.6.4 Bảơvê chia sẻ

ư u điểm kỹ thuật phân đoạn chế bảo vệ Mặc dù việc sử dụng đoạn tương tự nhau, nhiên có đoạn chứa thị, có đoạn chứa liệu Trong kiến trúc đại, thị mang tính chất khơng tự sửa đổi, nên đoạn thị định nghĩa đọc chi thực thi Phần cứng thực ánh xạ nhớ kiểm tra bit bảo vệ hàng bàng đoạn để ngăn chặn truy xuất bất hợp lệ vào nhớ (như cố tình ghi lên đoạn đọc, sử dụng đoạn có thuộc tính thực thi làm liệu) Bằng cách đặt mảng mộl đoạn, phần cứng quản lý nhớ tự động kiểm tra chi số mảng có hợp lệ khơng ngăn cản truy xuất tới phần tìr nằm bên ngồi mảng

(178)

sao cúa trình soạn thảo, cần mộl nhớ Mỗi người dùng có đoạn riêng khơng chia sẻ để lun giữ biến cục

Gió^ han Cơ l 25286 ^ 4425 68348

(a)

Đảng đoạn c Tiến trìnli P1

Địa logic cùa lién trinh P1

43062

68346 72773

&0003 !■- 'l ■> I

mmi

96553

G iòi t m .

Đìa c t ì Logic

CÃTĨQ

(b)

25286

SS50 4306290003 Bộ nhở Vật lý *

-Địa c hỉ logic ci'ia tiến trình p?

Bàng đoạn Tiến ưình P2

ZHTE2} *

Địacrv Vặllỷ Bàng ừang cho

Đoans

Hình 9.14 Ví dụ bảng đoạn

Cũng chia sẻ phần chương trình Ví dụ, gói chương trìah chung dùng chung nhiều người dùng chúng nằm phân đoạn chia sẻ có tính chất chi đọc Ví dụ, hai chương trinh FORTRAN sử dụng chương trình Sqrt, cần chương trình Sqrt nằm nhớ Mặc dù kỹ thuật chia sẻ đơn giản, có yếu tổ tinh tế cần tính đến Nhừng đoạn mã chương trình thường chứa tham chiếu tới Ví dụ, tham số lệnh nhảy có điều kiện thưịng địa đích

Địa gồm hai phần: số hiệu đoạn và địa chỉ tương đổi đoạn, số

hiệu đoạn địa đích số hiệu đoạn Như vậy, sổ hiệu đoạm mã dùng chung tất tiến trình liên quan phải giống nhaiu Ví dụ, muốn chia sẻ chương trình Sqrt, số hiệu đoạn tiến trình 4, tiến trình khác lại 17 Vậy làm để chương trình Sqrt tham chiếu đến nó? Bởi có nhấtt hàm Sqrt nhớ vật lý, hàm tham chiếu tód cách thức giống hai tiến trình, nghĩa phảii có số hiệu đoạn nhất, dùng chung cho hai tiến trình Khi số

12- GTTNLHĐH-DN

(179)

lượng người dùng tăng, khó tim số hiệu phân đoạn chung cho tất tiến trình

Những đoạn liệu có thuộc tính chi đọc không chứa trỏ đoạn mã chương trình tham chiếu đến cách gián liếp chia sẻ tiến trình tiến trình có số hiệu đoạn khác Ví dụ, địa rẽ nhánh lệnh nhảy có điều kiện khoảng cách dịch chuyển so với đếm chương trình thời Điều tránh cho chương trình phải trực tiếp sử dụng số hiệu đoạn tham chiếu

9.6.5 Phân mảnh

Bộ điều phối dài hạn thực cấp phát nhớ cho tất đoạn tiến trình người dùng Việc tưomg tự phân trang, ngoại trừ đoạn có kích thước khác nhau, kích thước trang cố định Do vậy, phương pháp phân đoạn nhớ với kích thước thay đổi vấn đề cấp phát động thường giải thuật tốn best-fit first-fit Phân đoạn gây tượng phân mảnh tất khối tự nhỏ để chứa phân đoạn Khi đó, tiến trình bị phong tỏa cho đển hệ thống đáp ứng hệ thống phải thực thu gọn nhớ để tạo khoảng trống đủ lớn Hiện tượng phân mảnh phương pháp phân đoạn phụ thuộc chủ yếu vào kích thuớc đoạn trung bình, thái cực, đặt mồi tiến trình phân đoạn Đây giải pháp phân vùng với độ lớn cùa vùng không cố định, thái cực khác, byte đặt đoạn có khả tái định vị độc lập Khi triệt tiêu phân mảnh ngoài; nhiên, byte lại cần tới ghi sở để tái định vị, phải sử dụng gấp đơi nhớ Nếu kích thước trung bình đoạn nhỏ phân mảnh ngồi nhỏ

9.7 KÉT HỢP PHÂN ĐOẠN VỚI PHÂN TRANG

(180)

^ M L I L T I C S

Trong MULTICS, địa logic tách thành số hiệu đoạn 18 bit dịa chi tưtmg đối doạn (offset) 16 bit Mặc dù phương pháp tạo không gian địa chi 34 bit, chi phí quản iý (tính theo đơn vị nhớ) bảng đoạn chấp nhận dược (tiến trình có đoạn bảng đoạn có nhiéu hàng)

Tuy nhiên, đoạn kích thước 64KB, từ 36 bit nên kích thước trung bình đoạn tưoTig đối lớn gây tượng phân mảnh Bên cạnh đó, thời gian tìm kiếm đế cấp phát đoạn lớn Để khắc phục hai nhược điểm này, MULTICS thực phân trang cho đoạn Phân trang loại trừ tượng phân mảnh ngồi trang nhớ nằm khung trống Mỗi trang MULTICS có kích thước Kword Do đó, địa chi tương đối 16 bit đoạn chia thành bit số hiệu trang 10 bit

cho địa tương đối trang, số hiệu trang đối chiếu với bảng

trang đế xác định số hiệu khung tưưng ứng Cuối cùng, số hiệu khung kết họp với địa chí tương đối trang để tạo địa vật lý Phương pháp biến đổi địa minh họa Hình 9.14b Chú ý, khác biệt giải pháp phân đoạn nguyên thủy hàng bảng đoạn không chứa địa sở đoạn, mà địa chi sở bảng trang cho đoạn

Mồi đoạn có bảng trang riêng Tuy nhiên, kích thước đoạn bị giới

hạn nên bảng trang khơng cần phải có kích thước đầy đủ số lượng dịng

trong bảng trang số lượng trang thực cần thiết Giống phân trang, trang cuối phân đoạn thơng thưịmg khơng sử dụng hết Do đó, trung bình phân mảnh trong đoạn nửa trang

(181)

của đoạn; cuối cùng, d2 là địa tưong đổi trang ứng véi cần truy xuất Để đảm bảo đạt hiệu suất chấp nhận được, hệ thốig có 16 ghi TLB để lưu địa cùa 16 trang vừa truy xuất gần câv Mỗi ghi bao gồm phần khóa giá trị Trường khóa 24 ?i: chứa sổ hiệu đoạn lẫn số hiệu trang Trường giá trị số hiệu khung tưcng ứng

9.8 NHẬN XÉT

Cơ chế quản lý nhớ HĐH đa chưcmg trình tiến hóa từ coa giản (hệ thống ngưòã dùng) đến phức tạp (hệ thống kết họp phân rang phân đoạn) Yếu tố định sử dụng phưcmg pháp quản lý ihớ hỗ trợ từ phần cứng Mọi địa nhớ CPU tạo phải đixrc kiểm tra tính hợp lệ trước ánh xạ đến địa vật lý Không thể kiểm tra hiệu phần mềm Các thuật toán quản lý nhớ thảo luậi (cấp phát liên tục, phân trang, phân đoạn, kểt họp phân trang lln phân đoạn) khác nhiều khía cạnh

• Hỗ trợ phần cứng: Phưomg pháp đơn đa phân vùng cần

thanh ghi sở ghi giới hạn, phân trang /à phân đoạn cần có bảng xác định ánh xạ địa

• Hiệu suất: Độ phức tạp thuật tốn tỷ lệ với thời gian ền thiết

biến đổi địa logic sang địa vật lý Với hệ thống đơn ỊÌản, cần so sánh cộng, phép toán thực rấ nhanh Phân trang phân đoạn nhanh ntu bảng trang/đoạn nằm ghi tốc độ cao Tuy nhiên, rsu bảng nằm nhớ, tốc độ truy xuất nhớ người dùng (ó thể bị suy giảm đáng kể TLB sừ dụng để khắc phục nột phần suy giảm hiệu suất

• Hiện tượng phân m ảnh: Thơng thường hệ Ihống đa chươngtrình

(182)

Hệ thống mà đơn vị cấp phát có kích thước thay đổi, phưong pháp đa phân vùng phân đoạn lại xuất hiện tượng phân mảnh ngồi

• Tái định vị: Giải pháp cho vấn đề phân mảnh thu gọn nhớ (dịch chuyển chương trình nhớ mà không làm thay đổi nội dung chương trình) Việc địi hỏi địa chi logic phải tái định vị thời điếm thực thi

• Hoán chuyển: Bất giải pháp cần thêm khả hoán chuyển Sau khoảng thời gian định kỳ HĐH xác định (thường sách điều phối CPU quy định), tiến trình chuyển từ nhớ ổ đĩa cứng sau chuyển trở lại nhớ Phưcmg pháp cho phép thời điểm có nhiều tiến trình thực thi đồng thời

• Chia sẻ: Một cách để tăng mức độ đa chương trình chia sẻ mã liệu người dùng khác Thông thường chia sẻ thực với phương pháp phân trang phân đoạn có

thể dùng chung đom vị thông tin sở (trang đoạn) Chia sẻ

là biện pháp để chạy nhiều tiến trình với lượng nhớ giới hạn, chuơng trình liệu đuợc chia sẻ phải thiết kế cấn thận

• Bảo vệ: Nếu cung cấp phân trang phân đoạn, vùng khác cùa chương trình người dùng khai báo thuộc tính thực thi, đọc, đọc - ghi

CÂU HỎI ÔN TẬP

1 Phân biệt loại địa chí nhớ

(183)

Chương 10

Bộ NHỚ ẢO

Mục tiêu phương pháp quản lý nhớ tài đồng thời nhiều tiến

trình vào nhớ Chương 9 trinh bày cách tải toàn tiến trinh vào

trong nhớ trước thực thi Công nghệ nhớ ảo giới thiệu trong chương lại cho phép thực thi tiến trình khơng nằm trọn vẹn trong nhớ Khi đó, kích thước chương trình lớn kích thước bộ nhớ vật lý công nghệ tách bạch hinh ảnh nhớ vật lý với hình ảnh nhớ logic góc độ người dùng Tuy nhiên, cài đặt nhớ ào không dễ cố thể làm giảm hiệu suất hệ thống.

10.1 ĐẶT VÁN ĐỀ

Kỹ thuật phủ hay nạp động (Chương 9) cho phép tạo chưcmg trình có kích thước lớn nhớ vật lý cấp phát, rrên thực tế, nhiều chương trình máy tính có khà thực thi kể chưa nằm trọn vẹn nhớ (có thể không thực thi đoạn mã xử lý lỗi lỗi khơng xuất hiện) Thậm chí, ngay,cả cần sử dụng tồn chương trinh khơng thiết phải sử dụỉig tồàn thởi điểm

(184)

CPU Cuối cùng, Ihời gian tải hay hốn chuyển chưong trình người dùng váo nhớ giám, nên chương trình chạy nhanh Mặc dù phương pháp phân trang theo yêu cầu phổ biến hơn, nhiên nhớ áo có thề cài đặt irong hệ thống phân đoạn Trong nhiều hệ thống hỗ trợ phương pháp phán đoạn kết hợp phân trang (đoạn chia thành nhiều trang), góc dộ naười dùng, nhớ chia thành nhiều đoạn, nhimg HĐH lại cài đặt kỹ thuật phân trang theo yêu cầu Phân đoạn theo yêu cầu cài dặt nhớ ảo, nhiên, thay đoạn phức tạp thay trang vi kích thước doạn không cố định

(a)

\

Bàn đ b ộ n h ỡ B ộ n h

ả o

B ộ n h v ậ ỉ

□ □ □

11 u q

□ □ □!

4-1 n dị

□ □ ũịì

ổ dĩa ng

C hương trin h A

ChiPơng Irỉn h Đ

(b )

H oán ch u yê n ũ O 2Ũ SỊ3 s 6| i ^

an sD’oniO

H oán ch u yế n vào

’2 0i3D m Q i s C | *6D 17Ọ i6Ọ 19Ợ

2o Q z i n22023q

Độ nh ỡ tro n g

Hình 10.1 Bộ nhớ ảo nhớ vật lý 10.2 PHÂN TRANG THEO YÊU CẢU

Phân trang theo yêu cầu tương tự phân trang hốn chuyển Các tiến trình nằm ổ đĩa phân trang tải vào nhớ thực thi Chú ý, thay đưa tồn tiến trình vào, phân trang đưa vào nhớ trang mà liến Irình thực cần đến xem tiến trình tập hợp trang, không gian địa chi liên tục Bộ hốn chuyển tác động lên tồn tiến trình, đối tưọng phân trang trang riêng lẻ Trước tải tiến trình vào nhớ, phân trang dự đốn trang sử dụng đưa trang vào Do tải trang không dùng, nên giảm thời gian chuyển đổi tiết kiệm không gian nhớ vật lý

(185)

trị valid, trang tương ứng hợp lệ nằm nhớ Trong trường hợp ngược lại, trang tương ứng không hợp lệ (không nằm không gian địa tiến trình), hợp lệ nằm ổ đĩa Tình mơ tả Hình 10.2a

m\ịọf>\ệịy/ì-KhânghợplệlO

Khung trsn g

ộ J Ị_

t

^ JL

5 ^

Bộ nhớ ảo

Bâng Uang

|a) T rang dang

nẳmảod ũ c v n g <b)

Hệ đièu hành

Thamcni^

IOÉ0M \ i r

Lỗi

K hờidỏng l ĩ

thị

B àn g trv ig

ã (rwfwn

Thôyd(

g ii trt bàog tTK>a Đưa trang thiếu

vào nhớ

Bộ nhớ

vật lý Bộ nhở

vật lý

Hình 10.2 Xử lý lỗi trang

Trang chưa đưa vào nhớ không gây ảnh hưởng khơng sử dụng Do đó, dự đoán đưa vào nhớ tất trang cần thiết tiến trình chạy thể tồn tiến trình nằm nhớ v ấ n đề phát sinh tiến trình truy cập đến trang chưa tải vào nhớ Tình gây lỗi trang Trong trình giải mã địa chỉ, phần cứng phân trang nhận trang không hợp lệ, nên yêu cầu HĐH xừ lý Lỗi HĐH chưa tải trang cần thiết vào nhớ, truy cập tới vùng địa không hợp lệ Các bước xử lý lồi minh họa Hình 10.2b sau:

• Kiểm tra địa truy nhập có nằm vùng địa hợp lệ khơng

• Nếu u cầu truy nhập không hợp lệ, kết thúc công việc Nếu yêu cầu hợp lệ trang yêu cầu chưa nằm nhớ, thi íiĐH tải trang vào nhớ

• Tìm frame trống (lấy từ danh sách frame trống)

• Yêu cầu đọc trang mong muốn từ ổ đĩa vào frame tìm thấy

(186)

• Khởi động lại thị bị ngắt lồi trang Lúc tiến trình truy cập vào Irang nhớ bình Ihường thể trang ln nằm nhớ Khi bị lỗi trang, HĐH lưu lại ngữ cảnh tiến trình, nên tiến trình khửi dộng lại vị trí bị gián đoạn, ngoại trừ ràng, trang Ihiếu có nhớ

riến trình bắt đầu thực thi chưa có trang nhớ Khi thực thi thị đầu tiên, tiến trình bị phong tỏa lỗi trang Sau tải trang cần thiết vào nhớ, tiến trình tiếp tục chạy, lỗi trang lại xuấl tất trang cần thiết đưa vào nhớ

PhưOTg pháp gọi phân trang theo yêu cầu tủy (không tải

trang không cần thiết vào nhớ)

v ề mặt lý Ihuyết, hoàn toàn có khả thị chưong trình tham

chiểu tới nhiều trang nhở (một trang cho thị nhiều trang cho liệu) Do vậy, thị gây nhiều lỗi trang Điều làm giảm đáng kể hiệu suất máy tính Thống kê phân tích tiến trình chạy cho thấy khả hiếm, chương trình có xu hướng sử dụng

một miền tham chiếu cục bộ (locality of reference) Do vậy, phân trang theo yêu cầu làm tăng hiệu suất hệ thống Phần cứng hỗ trợ phân trang theo yêu cầu giống phần cứng hỗ trợ phân trang hay hốn chuyển;

Bảng phân tran g : Có thể đánh dấu trang không hợp lệ thông qua bit valid-invalid, giá trị đặc biệt bit bảo vệ

• Bộ nhớ thứ cấp: Dùng để lưu trữ tất trang chưa nạp vào nhớ

chính Bộ nhớ thứ cấp thường ổ đĩa cứng Vùng ổ đĩa dùng cho việc hoán chuyển gọi vùng hốn chuyển

riến trình phải khởi động sau lỗi trang Lỗi trang xáy với yêu cầu tmy cập nhớ Nấu xảy giai đoạn lấy chí thị hệ thống, khởi động lại cách lấy lại thị Nếu lỗi xảy giai đoạn đọc toán hạng, hệ thống phải lấy lại thị, giải mã đọc lại toán hạng Trường hợp phức tạp hơn, xét thị ADD A, B, c có toán hạng thực cộng giá trị A B đặt kết vào c Các bước tiến hành là;

(187)

3 Đọc B

4 Cộng A với B.

5. Lưu kết vào c.

Nếu lỗi trang xảy lưu kết vào c (vì lúc c nằm trang chưa tải vào nhớ), hệ thống phải tải trang chứa c vào nhớ, sửa lại bảng phân trang, khởi động lại thị Sau đó, thị lại đưa vào CPU, giải mã, đọc hai toán hạng A B, thực lại phép cộng

Vấn đề trở nên phức tạp thị tham chiếu đến nhiều địa khác Ví dụ, thị MVC hệ thống IBM 360/370 (move character) di chuyển khối byte hai vị trí (có thể xen phủ lẫn nhau) Nếu khối nguồn khối đích trải khỏi biên trang, lỗi trang xuất di chuyển phần liệu Có thể xử lý theo hai hưóng Hướng thứ nhất, vi mã (microcode) tính toán truy cập trước tới điểm mút hai khối Lỗi trang xảy bị phát xử lý sớm Giải pháp thứ hai là, dùng ghi tạm lưu trữ giá trị miền bị ghi đè Nếu xảy lỗi trang, tất giá trị cũ ghi trở lại vị trí nhớ lúc trước Thao tác khôi phục trạng thái nhớ trước thi hành thị

10.3 HIỆU SUÁT PHÂN TRANG THEO YÊU CẦU

'l a tính Ihời gian truy cập nhớ có ích để đánh giá ảnh hưởng phân trang theo yêu cầu tới hiệu suất hệ thống Giả sử thời gian truy cập

nhớ (ký hiệu ma) nằm khoảng 10 đến 200ns Nếu khơng có lồi trang,

thời gian truy cập có ích thời gian truy cập nhớ Nếu xảy lỗi trang, hệ thống phải tải trang từ ổ đĩa cứng, sau truy nhập đến trang nhớ mong muốn

Giả sử p xác suất lồi Irang (0 < p < 1) Thời gian truy cập có ích tính sau;

Thời g i a n iruy cập có ích = (1 - p) X ma + p X thời gian xừ lý lỗi trang

Hệ thống phải thực hành động xử lý lỗi trang sau:

1 Chuyển quyền điều khiển cho HĐH

2 Lưu lại ngữ cảnh tiến trình

(188)

4 Kiếm tra việc tham chiếu đến trang hợp lệ xác định vị trí Irang ổ đĩa cứng

5 Ra lệnh tải trang từ ổ đĩa cứng vào frame trổng:

a Đợi hàng đợi thiết bị b Chờ đầu đọc dịch chuyển ổ đĩa c Bắt đầu chuyến trang vào frame trống

6 'ÍYong lúc chờ đợi, chuyển CPU cho tiến trinh khác (không bẳt buộc) Xuất ngắt từ ổ đĩa cứng (hoàn tất thao lác đọc)

8 Lưu ngữ cảnh tiến trình chiếm dụng CPU (nếu có bước 6)

9 Xác nhận ngắt ngấl lừ ổ đĩa cứng

10 Cập nhật lại bảng phân trang để trang cần truy cập nằm nhớ

11 Chờ CPU cẩp phát lại cho tiến trinh

12 Khôi phục lại ngữ cảnh tiến trình bị phong tỏa bước 1, sau liếp tục thi hành chi thị bị ngắt

Không phải xuất tất 12 bước Ví dụ, bước bước có ihê khơng xảy Q trình xử lý lỗi trang có giai đoạn chính:

1 Xử lý ngắt gây lỗi trang Dọc trang nhớ yêu cầu Khởi động lại tiến Irinh

Có thề rút ngắn thời gian thứ thứ ba vài trăm thị viết mã tốt rhời gian thực công việc lừ đến lOOms Mặt khác, liiời gian hoán chuyển Irang xấp xỉ 24ms (ổ đĩa cứng ihơng thưịng có độ trễ trung bình 8ms, thời gian đầu đọc dịch chuyển 15ms thời gian truyền liệu liĩis) Như vậy, tổng thời gian thực phân trang xấp xỉ 25ms (tính cà thời gian dành cho phần cứng lẫn phần mềm) Lưu ý rằng, ta xét thời gian phục vụ thiết bị Neu nhiều tiến trình chờ thiết bị, phải cộng thêm thời gian đợi, vậy, thời gian hốn chuyển cịn lớn Neu lấy Ihời gian xử lý lỗi trang trung bình 25ms thời gian truy cập nhớ lOOns, thời gian truy cập có ích tính theo ns là:

Thờ i g i a n Iniycậpcóich = ( ỉ - p ) X /O ỡ + /7 X ( m s )

(189)

Thời gian Iruy cập có ích phụ thuộc vào tỷ lệ lỗi trang Nếu 1000 lần Iruy cập xuất lỗi trang, thời gian truy cập có ích 25ms Tốc độ máy tính giảm 250 lần Nếu muốn hiệu suất giảm cịn 10% thì:

110 > 100 + 25.000.000 X p <=> 10 > 25.000.000 X p p < 0,0000004. Tức là, xuất lỗi trang 2500000 lần truy cập nhớ Giữ tỷ lệ lỗi trang mức thấp đóng vai trị quan trọng hẹ thống phân trang theo yêu cầu Nếu thời gian truy cập có ích tăng, tốc độ thực thi tiến trình giảm đáng kể HĐH dành vùng ổ đĩa để lưu giữ trang nhớ, vùng gọi vùng hoán chuyển Cách quản lý sử dụng vùng hoán chuyển ảnh hưởng đến hiệu suất Vùng hoán chuyển chia thành sector có kích thước lớn khơng phải tìm kiếm theo tên file, nên tốc độ đọc/ghi vùng hốn chuyển nhanh hệ thống file Có thể cải thiện hiệu suất hệ thống phân trang cách chép tồn file vào vùng hốn chuyển khởi động tiến trình, sau thực phân trang theo u cầu từ vùng hốn chuyển Nếu kích thước vùng hốn chuyển bị giới hạn, sử dụng phương pháp khác trường họp sử dụng file nhị phân Các trang cần thiết tải trực tiếp từ hệ thống file Tuy nhiên, sử dụng thủ tục thay trang, khung trang nhớ bị ghi đè (vì trang có thuộc tính đọc) tải lại vào nhớ từ hệ thống file cần Một lựa chọn khác là, lấy trang trực tiếp từ hệ thống file Khi hoán chuyển ổ đĩa, trang lưu vào vùng hoán chuyển Giải pháp đảm bảo lấy trang từ hệ thống file lần nhất, tất lần sau lấy từ vùng hoán chuyển

10.4 THAY THÉ TRANG

Phân trang theo yêu cầu lải trang cần thiết vào nhớ Do đó, tăng mức độ đa nhiệm nhớ chứa nhiều tiến trình Tuy nhiên, tăng mức độ đa nhiệm lại dẫn đến tình trạng cấp phát nhớ ichả năng, tức tổng lượng nhớ tiến trình yêu cầu vượt khả hệ thống đáp ứng

(190)

sau dó nhận khơng cịn frame trống, tồn bộ nhớ lúc dược sử dụng (Hình 10.3a)

r C '

ũ H

1 M U

2 J

3 M

Khòng ạan 109c Bàng t r ^ CI£ ctM nqưởi (king Nọưỡi (^jnọ 1

A

1^ 1» - » t r i m

B e «

0

2 V

E ĩ V

kwtfU

Bộ nhớ vật lý

B i t h ợ p l ệ ( v ) KfM)gtríOT9 k h n g h p l ẽ (t)

^ Đ r t í i d ả u invaM

o

Thay đổi Bàng trang

(Oũngậantoqic Bángừ^của

cùa nạirôi dũng 7 N9trà1dủng2 (a)

Bộ nhớ

vật iý (b)

Hình 10.3 Thay trang

HĐH có nhiều cách giải quyết, chẳng hạn chấm dứt tiến trình hốn

chuyển tiến trình khác ngồi Giải pháp trình bày thay trang.

Nếu khơng có frame trống, HĐH thu hồi frame cách chuyển trang năm frame (cập nhật lại bảng phân trang để trang vừa chuyển không nằm nhớ) Sau đó, HĐH tải trang mà tiến trình cần vào frame trống Thủ tục xử lý lỗi trang bổ sung thêm việc thay trang:

1 Tìm trang cần tải ổ đĩa cứng

2 Tìm frame trống; thấy frame trống sử dụng; khơng thấy, dùng thuật tốn thay trang để tìm trang làm "nạn nhân" chuyển ngồi Ghi trang "nạn nhân" vào ổ cứng, cập nhật bảng phân trang bảng frame

3 Tải trang cần thiết vào frame vừa giải phóng, cập nhật lại bảng phân trang bảng frame

4 Khởi động lại tiến trình

Nếu khơng có frame trống, hệ thống phải hoán chuyển hai trang (một trang trang vào) Thời gian xử lý lỗi trang tăng gấp đôi, nên thời gian truy nhập có ích tăng theo

Kỹ thuật bit thay đổi (modify bit) giảm thời gian xử lý lỗi trang

(191)

Irang "gốc" nằm ổ đĩa hay không Khi trang ghi, phần cứng thiết lập giá trị cho bit để chi trang bị thay đổi (so với trang gốc) K-hi chọn trang thay thế, hệ thống kiểm tra bit thay đổi tương ứng Bit có giá trị

1, nghĩa trang bị thay đổi sau chuyển vào nhớ Nẻu chuyển trang cần ghi lại vào ổ cứng Nếu bit có giá trị 0, trang chua bị thay đổi từ đưa vào nhớ, hệ thống khơng phải ghi lại trang (vì trang nhớ giống trang ổ đĩa) Công nghệ áp dụng cho trang có thuộc tính đọc (ví dụ như, trang chứa mã nhị phân) Thời gian xử lý lỗi trang giảm đáng kể thời gian dành cho thao tác vào/ra giảm xuống nửa chọn trang chưa bị thay đổi

Thơng qua chế thay trang, lập trình viên thao tác nhớ ảo lớn nhớ vật lý Bộ nhớ logic tồn độc lập khơng bị ràng buộc kích thước nhớ vật lý Tiến trình người dùng có kích thước 30 trang thực thi 10 frame, HĐH sừ dụng thuật toán thay trang để tìm frame trống cần thiết Nội dung trang bị thay ghi ổ cứng Những tham chiếu sau đến trang bị chuyển gây tình trạng lỗi trang Khi đó, trang nói lại đưa trở lại nhớ lại chỗ cho trang khác

Phần sau trình bày hai vấn đề quan trọng triển khai phưoTig pháp

phân trang theo yêu cầu thuật toán cấp phát frame thuật toán Thay

trang Nếu có nhiều tiến trình nằm nhớ, HĐH phải định cấp phát cho tiến trình frame Hơn nữa, có yêu cầu thay trang, HĐH phải chọn frame để thay

10.5 THUẬT TOÁN THAY THÉ TRANG

(192)

1 Với kích thước trang xác định (trang thường có kích thước cổ định quy định phần cứng hệ thống), quan tâm đến địa trang không quan tâm đến địa ô nhớ

2 Ncu tồn tham chiếu tới trang p, Ihì tham chiếu liền kề tới trang p khơng gây lồi trang, p nằm nhớ sau tham chiếu

Giả sử kích thước trang 100 byte, theo dõi tiến trình cụ thể, chuỗi đia chuỗi tham chiếu tương ứng minh họa Hình 10.4

c^4jẻi

đ Ị e c h i 0 : 0101 0612 o i o : i0 0104 Q lO l Ũ611 o i o : 0103 0104 ), 0610 0102 0103 0104 010 0609, 0102 Q105

Hình 10.4 Chuỗi tham chiếu nhớ

Đổ xác định số lồi trang thuật toán thay trang chuỗi tham chiếu trên, phải biết số lượng frame trống Rõ ràng, nhiều frame trống thi số lỗi trang giảm Ví dụ, với chuỗi tham chiếu trên, số lưọng frame trống không nhỏ 3, tối đa có lỗi trang, lỗi trang xuất lần tham chiếu Mặt khác, có frame trổng, HĐH phài thay trang cho tất tham chiếu, kết có 11 lỗi trang

10.5.1 Thuật tốn FIFO

FIFO thuật toán thay trang đ#n giản Thuật toán ghi lại thời điểm trang nhớ đưa vào nhớVà^ệỄang "cũ nhất" bị thay Hình

10.5a m i ^ họa thuật tốn fchuoi tham chiếu R = 012301401234

Ta thấy xuất lỗi trang (các trang có gạch dưới)

Fram e 4 0 0 3 4 4 4

1 1 1 0 0 2 2

2 2 1 1 3

(a) Cỏ ba Frame

Fram e 4 0 0 0 4 4 3 1 1 1 0 0

2 2 2 2 1 1

3 3 3 3 2

(b) Có bốn Frame

Hình 10.5 Ví dụ FIFO

(193)

có thể chứa biến sử dụng nhiều lần khởi tạo từ đầu chương trình Dù trang sử dụng bị thay thế, hệ thống hoạt động bình thường Sau bị đưa ra, lỗi trang xuất gần tức thời HĐH phải tải lại trang vào nhớ Một trang lại bị đưa để đưa trang trở lại nhớ Thay sai làm tăng tỷ lệ lỗi trang làm chậm tiến trình

Tuy nhiên, hệ thống có frame ta thấy số hon số

lỗi trường hợp có frame 9) Kết không mong muốn gọi dị thường Belady Dị thường cho thấy thực tế là, số thuật toán thay trang, tỷ lệ lỗi trang tăng klií tăng,số frame cấp phát Thưòng cho rằng, cung cấp thêm b a nhớ cho tiến trình giúp cải thiện hiệu suất Tuy nhiên, nghiên cứu

gần cho thấy già định ln

10.5.2 Thuật tốn tối LPU (Optimal Algorithm)

Thay trang tối ưu thuật tốn có tỷ lệ lỗi trang thấp Thuật tốn gọi OPT hay MIN, khơng có dị thường Belady Thuật toán tối ưu thay trang khơng sử dụng thời gian dài Ví dụ, chuỗi tham chiếu mẫu R = 2031^03120316457, thuật toán thay trang tối ưu sinh 10 rỗi trang (Hình 10.6) Thuật tốn OPT khó cài đặt, cần phải biết trước chuỗi tham chiếu, thuật toán sử dụng chủ yếu nghiên cứu so sánh

Frame 3 , - Fr ame 3

0 2 2 g: 2 q ^ 4 2 1 3 0 6

1 , 0 0 < ỗ ' @ ' 3 ' ' 3 r e \ 6 0 2 1 3 4

2 ^ 1 1 í i V Ụ i s S 3 0 2 1 5

(a)niuậttoántAlưu (b) Tìiuệt tn LRU

Hình’ 10.6 Thuật tốn tối ưu LRU

10.5.3 Thuật tốn sử dụng gần (LRU)

(194)

khoáng thời gian dài Phương pháp thuật tốn tối ưu, nhin vào q khứ, khơng phải nhìn vào tương lai (Nếu s*^ nghịch đảo chuồi tham chiếu s, tỷ lệ lỗi trang thuật toán OPT áp dụng s tỷ lệ lồi trang thuật toán LRƯ áp dụng s*^) Thuật toán LRU cần nhiều trợ giúp từ phần cứng Có hai cách để xếp thứ tự frame theo thời điểm truy cập cuối cùng:

1 Bộ đếm (Counter): Bảng phân trang có trường thời gian sừ dụng ghi lại thời điểm cuối trang tham chiếu Hệ thống thay trang có giá trị thời gian nhỏ Phương pháp đòi hịi tìm kiếm bảng phân trang thay cập nhật trường thời gian sử dụng mồi lần truy nhập nhớ

2 Ngăn xếp (Stack): Có thể sử dụng ngăn xếp lưu trữ địa trang

Trang bị tham chiếu chuyển lên đỉnh ngăn xếp Đỉnh ngăn xếp trang sử dụng gần đáy ngăn xếp trang sử dụng Vì trang lấy từ ngăn xếp, nên cách cài đặt đơn giản sử dụng danh sách liên kết kép (với trỏ đầu trỏ đuôi) Việc loại bỏ trang đưa lên đỉnh ngăn xếp cần thay đổi trỏ Tất nhiên, lần cập nhật làm tăng chi phí, bù lại khơng cần phải tìm kiếm thay thế, trang nằm đáy ngăn xếp trang LRU

Chú ý, cài đặt LRU khơng có phần cứng hỗ trợ Phải thực cập nhật đồng hồ hay ngăn xếp với tham chiếu nhớ Nếu sử dụng ngắt để phần mềm thực cập nhật cấu trúc liệu có tham chiếu xảy ra, thi tốc độ truy xuất nhớ giảm kéo theo hiệu suất hệ thống giảm

10.5.4 Các thuật toán xấp xỉ LRU

Nếu khơng có phần cứng hỗ trợ, hệ thống phải cài đặt thuật toán thay trang khác Chẳng hạn, sử dụng thêm trường Bit tham chiếu hàng cùa bảng phân trang Trường Bit tham chiếu phần cứng thiết lập (đật giá trị 1) mồi trang tưofng ứng bị tham chiếu (đọc hay ghi) Ban đầu Hi)H đặt tất bit giá trị Khi tiến trình thực thi, phần cứng đặt bit.ứng với trang bị tham chiếu giá trị Dù khơng biết trình tự sử dụng, khoảng thời gian cụ thể, biết trang

13- GTNLHĐH-DN

(195)

được sử dụng trang chưa sử dụng Thône tin dẫn đến số

thuật toán xấp XI thuật toán ihay LRU

^ Thiiât toán N hiều bit tham chiếu

Sử dụng nhiều bil tham chiếiụ hệ Ihổng biết rõ tình trạng sử dụng trang Giả sử bên cạnh trường Bit tham chiếu, mồi trang nhớ có thêm trường IJch sử Iham chiếu bit Sau khoảng thời gian định kỳ

(chẳng hạn lOOms), định thời tạo ngắt để chuyển quyền điều khiển cho

HDH HĐH dịch Bit tham chiếu Irong trang vào bit cao Irong trường Lịch sử tham chiếu bit, dịch bit khác trường sang phải bil, loại bỏ bit thấp Trường bit ghi lại lịch sử Irinh sử

dụng trang khoảng thời gian (800ms) Irước Nếu trường có giá trị

00000000 trang khơng sử dụng lần khoảng thòi gian trước Trang mà trường Lịch sử tham chiếu có giá trị 11000100 đưọc sử dụng gần hon so với trang có giá trị 01110110 Trang có trưởng

Lịch sử iham chiếu nhỏ trang LRU bị thay ihế số lưcmg bit

ghi Irình lịch sử phụ thuộc vào khả phần cứng Frong trường hợp số bit bàng 0, chi trưịng Bit tham chiếu Thuật tốn nàv gọi thuật toán thay trang "cơ hội ihứ hai"

Thuật toán "cơ hội th ứ hai"

"Cơ hội thứ hai" thuật tốn FIFO Khi trang dược chọn làm "nạn nhân" Ihay thế, IIDH kiểm tra trường Bit iham chiếu lương ứng Nốu có giá trị 0, trang bị thay Nếu ngược lại, hệ thống cho trang hội thứ hai lại nhớ tiếp tục lựa chọn "nạn nhân" bàng thuật tốn FIFO Khi trang có hội thứ hai, bit tham chiếu tương ứng bị xóa thời gian thiết lập thời gian hiệii Do vậy, có "cơ hội thứ hai", trang khơng bị thay Ihế tất trang khác bị

thay thê (hoặc có "cơ hội thứ hai") Hơn nữa, trang sử dụng

thường xuyên (đủ để trì giá trị cho bit tham chiếu tương ứng) không bị thay

(196)

dược, trang "nạn nhân" bị thay trang chèn vào hàng đợi vịng vị trí Trong trường hợp xấu nhất, tất bit tham chiếu

có giá trị ụ con trỏ duyệt qua toàn hàng đợi, cho Irang "cơ hội

thứ hai" - thuật toán FIFO

B it

\ C ác ữ a n g T h a m c h lỗ u

n h ả n " k ể tíể p

1 \

.1

-I;ị

j

1 ỉ

i

’ N ạn n h ả n '

, I ĩ _

kẻ tiẻ p

, C ác ir a n g T h a m c h ie u

0

0

0

0

0

1

r

i

' i

Hình 10.7 Thuật toán "Cơ hội thứ hai"

riiu ậ t t o n 'C hội thú h a i" cải tiến

Cỏ ihc tiến thuật tòán "cơ hội thứ hai" cách xét cặp (Bit tham

chiơu lỉit ihay đoi) Với bit có khả sau:

(0, 0): Trang gần chưa sử dụng sứa đổi trang tốt để thay

(0, 1): Trang gần không sừ dụng r^ưlig bị sửa đổi, lựa

chọn khơng tốt cần ghi trang ổ đĩa cứng trước Ihay

(1, 0): Trang sử dụng gần chưa bị sửa đổi, sớm dùng lại

(1, 1): Trang gần sử dụng bị sừa đổi, sử

dụng lại thay phải ghi lại ổ đĩa cứng

(197)

ở đây, hệ thống xác định độ ưu tiên trang bị sửa đổi đê giảm thời gian đọc/ghi ổ đĩa cứng

10.5.5 Các thuật toán đếm (Counting Algorithm)

Một vài thuật toán thay trang sử dụng đếm - đếm số lần trang tham chiếu

Thuật toán L F U

Thuật toán thay trang LFU (The Least Frequently Used - sử dụng thirịng xun nhất) sử dụng trang có giá trị đếm nhỏ để thay Lý trang sừ dụng gần có đếm lớn Thuật tốn rơi vào tình xấu, trang sử dụng nhiều lần suốt pha khởi tạo tiến trình, sau khơng sử dụng nừa Vì sử dụng nhiều, nên giá trị biến đếm trang lớn, nèn trang nằm nhớ khơng cần thiết Có Ihể khẩc phục vấn đề cách, sau khoảng thời gian định kỳ dịch đếm sang phải bit, khiến giá trị đếm bị chia đôi

Thuật toán M F U

Thuật toán thay trang MFU (The Most Frequently Used - sử dụng nhiều nhất) dựa lý luận rằng, trang có giá trị đếm nhị đưa vào, nhung chưa sử dụng

Thuật toán LFU thuật tốn MFU phổ biến cài đặt phức tạp

10.5.6 Các thuật toán bổ trợ

(198)

trị Khi đó, trang bị chọn làm "nạn nhân" thay thế, khơng cần phái ghi lại ổ đĩa

Mộl kỹ thuật khác hộ thống ghi lại trang cuối nằm

frame trống Vì nội dung frame chưa bị sửa đổi sau trang frame ghi đĩa, nên trang cũ sử dụng từ tập 1'nime trống frame chưa bị cấp phát Khi lỗi trang xuất hiện, hệ thống kiểm tra xem Irang cần thiết có cịn nằm danh sách frame trống khơng Nểu có, hệ thống sừ dụng lại Ngược lại, hệ thống phải tải tning vào frame trống Kỹ thuật cài đặt hệ thống VAX/VMS với thuật toán thay Irang FIFO Khi thay nhầm trang sử dụng, trang nhanh chóng lấy lại từ danh sách frame trống mà tải vào từ ổ cứng

10.6 CÁP PHÁT FRAME

Cần cấp phát nhớ cho tiến trình khác nhau? Trường hcrp đơn giản hệ thống có tiến trình Xét hệ thống với kích thước nhớ vật lý 64 frame HĐH chiếm 10 frame, cịn lại 54 frame cho tiến trình ứng dụng Với phương pháp phân trang theo yêu cầu luý, 54 frame ban đầu nằm danh sách frame trống Khi bắt đầu thi hành, tiến trình ứng dụng có thề tạo chuỗi lỗi trang, 54 lồi trang lấy dần frame danh sách frame trống Khi khơng cịn frame trống, hệ thống sử dụng thuật toán thay trang, chọn 54 trang nhớ làm "nạn nhân" chuyển ngồi Q trình tiếp tục

Khi tiến trình kết thúc, frame đưa trở lại danh sách trống, vấn đề

nảy sinh phân trang theo yêu cầu kết hợp với đa chương trình Đa chương trình cho phép tải nhiều tiến trình vào nhớ lúc

10.6.1 Số frame tổi thiểu

(199)

Nếu lồi trang xảy trước thị hoàn thành, thị phải khởi động lại từ trạng thái trước bắt đầu thực Vì vậy, hệ thống cần có đủ frame để lưu giữ tất trang nhớ khác mà chi thị tham chiếu lói Ví dụ, xét dịng kiến trúc máy tính mà thị tham chiếu nhớ tham chiếu tới địa Vì thế, cần frame cho chi thị frame cho địa tham chiếu Nếu cho phép đánh địa gián tiếp cấp (ví dụ: thị LOAD AX, [17689] trang 16 lấy nội dung ô nhớ 17689 (giả sử X) làm địa chỉ, tải nội dung nhớ có địa chi X vào ghi AX), tối đa CPU phải truy xuất tới frame thực thi thị

Tình xấu kiến trúc cho phép địa có nhiều cấp độ

gián tiếp, về mặt lý thuyết, lệnh LOAD thơng thưịng tham chiếu đến

một địa gián tiếp, địa tham chiếu đến địa chi gián tiếp khác (ở trang khác), vậy, trang nhớ ảo tham chiếu hết Vì thế, trường hợp xấu nhất, tồn bộ nhớ phải nằm nhớ vật lý Để khắc phục điều này, phải đặt giới hạn cấp độ gián tiếp (ví dụ: giới hạn cấp độ gián tiếp tối đa cho thị 16) Khi tham chiếu gián tiếp xuất hiện, đếm đặt giá trị 16 giá trị đếm tự động giảm sau lần tham chiếu gián tiếp Nốu đếm giảm đến 0, lỗi tải tham chiếu gián tiếp xuất để Irả quyền điều khiển cho MĐH Giới hạn làm giảm số lượng tham chiếu nhớ thị xuống cịn 17, tiến trình cần tối thiểu 17 frame

Số frame tối thiểu cho tiến trình quy định bời kiến trúc máy tính, số frame tối đa bị giới hạn nhớ vật lý Trong khoảng cận cận này, hệ thổng phải đưa phương pháp cấp phát phù họp

10.6.2 Thuật toán cấp phát

Để chia m frame chọ n tiến trình, đơn giản phương pháp cấp phát đều, tiến trình m/n frame

(200)

innh ty lộ vói kích thước tiến trinh Giá sừ kích thước nhớ ảo tiến

irinh p, s, đặt s = Khi dó, tổng số frame có m, tiến

innh p, nhận dược a, = — X m frame Tất nhiên, a, phần nguyên tý lệ

trên \ phai lớn htm số frame lối thiểu tiến trình Áp dụng cấp phát tỷ lệ, có Ihê chia 60 frame cho hai tiến trình tiến trình 10 trang nhớ nhận frame tiến trình 140 trang nhận 56 frame

Với cấp phát hay cấp phát tỷ lệ, số lượng frame cấp phát cho mồi liến irình phụ thuộc vào mức độ đa chương Irình Nếu mức đa chương tăng, I lDH ihu bớt liến trình số frame để cấp phát cho tiến trình Ngược lại, mức độ đa chương giảm tiến trình nhận nhiều frame

Chú ý, Irong phương pháp cấp phát trên, tiến trình có độ ưu tiên cao hị dổi xử giống tiến trinh có độ ưu tiên thấp Mặc dù tiến trình có độ iru tiên cao nơn dược ưu tiên cấp phát nhớ để đảm bảo tốc độ thi hành Có Ihế sử dụng phương pháp cấp phái tỷ lệ, tỷ lệ frame cấp khơng chì phụ thuộc vào kích thước tiến trình mà vào độ ưu liên cúa tiến Irinh

10.6.3 Cấp phát toàn cục cục bộ

Với nhiều tiến trình cạnh tranh nhớ, phân thuật tốn thay Irang vào hai nhóm thay toàn cục thay cục Thay tồn cvic cho phép tiến trình lựa chọn frame để thay toàn danh sách frame, cho dù frame cấp phát cho liến trình khác Như vậy, tiến trình có thổ lấy frame từ tiến trình khác Thay cục yêu cầu tiến trình cliọn thay frame cấp phát cho minh

Xét phương pháp cho phép tiến trình có độ ưu tiên cao lấy frame từ liên irinh có độ ưu tiên Ihấp Tiến trình có độ ưu tiên cao tăng số frame cấp phát cách lấy frame tiến trình có độ ưu tiên thấp Với thay ihế cục bộ, tổng sổ frame cấp phát cho tiến trình khơng đồi Với thay tồn cục, tiến trình lấy frame từ tiến trình khác dề làm tăng số frame cấp phát

Ngày đăng: 01/04/2021, 20:09

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan