7 on tap hdh - c4 quan ly tien trinh

9
HỆ THỐNG QUẢN LÝ TIẾN TRÌNH 1. Tiến trình 1.1 Khái niệm Tiến trình (process) là chương trình đang chạy (đang được tiến hành). Mỗi tiến trình sở hữu một con trỏ lệnh (program counter), tập thanh ghi và các biến, và cần sử dụng một số tài nguyên như CPU, bộ nhớ chính, các tập tin, các thiết bị nhập xuất,.. Các máy tính chuẩn bình thường chỉ có 1 CPU – và mỗi thời điểm CPU chỉ thực hiện 1 lệnh của 1 chương trình, nhưng đại đa số hệ thống có nhu cầu chạy nhiều chương trình cùng lúc (hệ thống đa chương). Để đáp ứng hệ điều hành phải có 1 bộ điều phối (scheduler) luân chuyển sự hoạt động của các tiến trình, quyết điều phối điểm cần tạm dừng hoạt động của tiến trình đang xử lý để chuyển qua thực thi 1 tiến trình khác. Việc quản lý, điều phối tiến trình để có được hệ thống đa chương trên 1 CPU vẫn cần thiết ngay cả trên các máy nhiều CPU, vì khi này số tiến trình cần thực thi đồng hành thường vẫn nhiều hơn hẳn số CPU của máy. Tiến trình chạy tới một lúc nào đó sẽ bị Scheduler bắt tạm ngưng (trong thời gian nó dừng các tiến trình khác sẽ được chạy). Đến khi Scheduler cho nó được tiếp tục chạy lại, CPU sẽ được khôi phục lại giá trị bộ đếm chương trình (tức tiến trình được tiếp tục ở đúng vị trí bị ngưng trước đó), giá trị trong các thanh ghi cũng được phục hồi và các tài nguyên cần thiết tại thời điểm đó được cấp phát cho tiến trình. Với cơ chế chia sẻ thời gian để đạt được hiệu ứng đa chương, hệ điều hành không chỉ giải quyết được một số nhu cầu bắt buộc của người dùng mà có thể làm cho hệ thống máy tính hoạt động với năng suất cao hơn. 1.2 Các trạng thái của tiến trình Mỗi tiến trình có thể ở một trong những trạng thái sau: - Mới tạo (new): tiến trình mới được tạo và được đưa vào hệ thống. - Đang chạy (running): CPU đang thực thi các chthcủa tiến trình. Chờ (waiting): còn gọi là treo (blocked), tiến trình đang đợi cấp phát tài nguyên hoặc 1 sự kiện và chưa sẵn sàng chạy Sẵn sàng (ready): tiến trình đang chờ được cấp phát CPU để xử lý. Kết thúc (terminated): tiến trình hoàn tất Mỗi thời điểm chỉ có một tiến trình ở trạng thái running, khi tiến trình không còn ở trạng thái running (bị scheduler ngắt) thì 1 tiến trình trong trạng thái ready sẽ được chuyển sang trạng thái running (và được chạy)

Upload: an-duong

Post on 29-Dec-2015

42 views

Category:

Documents


6 download

DESCRIPTION

ok

TRANSCRIPT

Page 1: 7 on Tap HDH - C4 Quan Ly Tien Trinh

HỆ THỐNG QUẢN LÝ TIẾN TRÌNH

1. Tiến trình

1.1 Khái niệm

Tiến trình (process) là chương trình đang chạy (đang được tiến hành). Mỗi tiến trình sở

hữu một con trỏ lệnh (program counter), tập thanh ghi và các biến, và cần sử dụng một số tài

nguyên – như CPU, bộ nhớ chính, các tập tin, các thiết bị nhập xuất,..

Các máy tính chuẩn bình thường chỉ có 1 CPU – và mỗi thời điểm CPU chỉ thực hiện 1

lệnh của 1 chương trình, nhưng đại đa số hệ thống có nhu cầu chạy nhiều chương trình cùng lúc

(hệ thống đa chương). Để đáp ứng hệ điều hành phải có 1 bộ điều phối (scheduler) luân chuyển

sự hoạt động của các tiến trình, quyết điều phối điểm cần tạm dừng hoạt động của tiến trình đang

xử lý để chuyển qua thực thi 1 tiến trình khác. Việc quản lý, điều phối tiến trình để có được hệ

thống đa chương trên 1 CPU vẫn cần thiết ngay cả trên các máy nhiều CPU, vì khi này số tiến

trình cần thực thi đồng hành thường vẫn nhiều hơn hẳn số CPU của máy.

Tiến trình chạy tới một lúc nào đó sẽ bị Scheduler bắt tạm ngưng (trong thời gian nó dừng

các tiến trình khác sẽ được chạy). Đến khi Scheduler cho nó được tiếp tục chạy lại, CPU sẽ được

khôi phục lại giá trị bộ đếm chương trình (tức tiến trình được tiếp tục ở đúng vị trí bị ngưng

trước đó), giá trị trong các thanh ghi cũng được phục hồi và các tài nguyên cần thiết tại thời điểm

đó được cấp phát cho tiến trình.

Với cơ chế chia sẻ thời gian để đạt được hiệu ứng đa chương, hệ điều hành không chỉ giải

quyết được một số nhu cầu bắt buộc của người dùng mà có thể làm cho hệ thống máy tính hoạt

động với năng suất cao hơn.

1.2 Các trạng thái của tiến trình

Mỗi tiến trình có thể ở một trong những trạng thái sau:

- Mới tạo (new): tiến trình mới được tạo và được đưa vào hệ thống.

- Đang chạy (running): CPU đang thực thi các chỉ thị của tiến trình.

Chờ (waiting): còn gọi là treo (blocked), tiến trình đang đợi cấp phát tài nguyên hoặc 1 sự kiện

và chưa sẵn sàng chạy

Sẵn sàng (ready): tiến trình đang chờ được cấp phát CPU để xử lý.

Kết thúc (terminated): tiến trình hoàn tất

Mỗi thời điểm chỉ có một tiến trình ở trạng thái running, khi tiến trình không còn ở

trạng thái running (bị scheduler ngắt) thì 1 tiến trình trong trạng thái ready sẽ được chuyển

sang trạng thái running (và được chạy)

Page 2: 7 on Tap HDH - C4 Quan Ly Tien Trinh

Sơ đồ chuyển trạng thái của các tiến trình

1.3 Khối điều khiển quá trình

Mỗi tiến trình được hiện diện trong hệ điều hành bởi một khối điều khiển tiến trình (Process

Control Block-PCB) – cũng được gọi khối điều khiển tác vụ.

Khối điều khiển quá trình

Page 3: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.3

GV: Thái Hùng Văn - ĐH KHTN – 04.08

Lưu đồ biểu thị việc chuyển CPU từ tiến trình này tới tiến trình khác

1.4 Tiểu trình (Thread – dòng /luồng)

Ở các hệ điều hành đơn giản, mỗi tiến trình có một không gian địa chỉ và một dòng xử lý duy nhất. Tuy

nhiên hiện nay trên thực tế có nhiều lúc cần có nhiều dòng xử lý cùng chia xẻ một không gian địa chỉ - các

dòng đó là thread (tiểu trình). Nhiều hệ điều hành hiện đại cho phép một tiến trình tạo nhiều tiểu trình thực thi

đồng hành, tiểu trình sử dụng các tài nguyên cục bộ của tiến trình (tài nguyên của tiến trình là tài nguyên toàn

cục).

Các tiểu trình trong một tiến trình thì không hoàn toàn độc lập nhau như giữa các tiến trình. Các tiểu trình

trong một tiến trình dùng chung không gian địa chỉ, nghĩa là các tiểu trình có thể dùng chung các biến toàn cục,

tiểu trình có thể truy xuất đến bất cứ địa chỉ nào trong không gian địa chỉ của tiến trình, tiểu trình có thể đọc,

ghi lên cả ngăn xếp của tiểu trình khác trong cùng tiến trình.

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

Việc đa chương trên các hệ thống chia sẻ thời gian giúp người dùng có thể sử dụng nhiều chương trình

cùng lúc và tận dụng tối đa CPU. Để thực hiện Sheduler phải liên tục ngắt tiến trình running và chọn một tiến

trình trong danh sách ready ra để cho chạy tiếp, bộ phân phối (dispatcher) sẽ chịu trách nhiệm chuyển đổi ngữ

cảnh và trao CPU cho tiến trình được chọn.

Page 4: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.4

GV: Thái Hùng Văn - ĐH KHTN – 04.08

Hàng đợi tiến trình

Khi các tiến trình được đưa vào hệ thống, chúng được đặt vào hàng đợi. Các tiến trình đang sẵn sàng thực

thi được giữ trên hàng đợi sẵn sàng (ready). Hàng đợi này thường được lưu như một danh sách liên kết, đầu

hàng đợi hai con trỏ: một chỉ đến PCB đầu tiên và một chỉ tới PCB cuối cùng trong danh sách, trong mỗi PCB

có một con trỏ chỉ tới PCB kế tiếp.

Khi một tiến trình running bị ngắt vì phải đợi hoàn thành một yêu cầu nhập xuất trên 1 thiết bị nào đó thì nó

cũng được đưa vào hàng đợi thiết bị tương ứng

Các tiêu chuẩn điều phối

- Tận dụng CPU tối đa: Cần trên 40% cho hệ thống tải nhẹ, và tới 90% cho hệ thống tải nặng.

- Thông lượng tối đa: số lượng tiến trình được hoàn thành trên một đơn vị thời gian gọi là thông lượng

(throughput), và dĩ nhiên số lượng này càng nhiều thì càng tốt.

- Thời gian hoàn thành: Khoảng thời gian mà tiến trình phải lưu lại trong hệ thống (turnaround time).

- Thời gian chờ: (waiting time) là tổng thời gian chờ trong hàng đợi sẵn sàng.

- Thời gian đáp ứng: thời gian hoàn thành có khi không phải là tiêu chuẩn tốt nhất, mà thời gian từ lúc gởi

yêu cầu cho tới khi đáp ứng đầu tiên được tạo ra (thời gian đáp ứng - response time) lại đáng quan tâm hơn.

Các chiến lược điều phối

Chiến lược FIFO:

Là giải thuật điều phối biểu CPU đơn giản nhất: đến trước, được phục vụ trước (first-come, first-served).

Việc cài đặt chiến lược FCFS được quản lý dễ dàng với hàng đợi FIFO. Khi một tiến trình đi vào hàng đợi sẵn

sàng, PCB của nó được nối vào cuối hàng đợi. Khi tiến trình running bị ngắt, tiến trình ở đầu hàng đợi ready sẽ

được chọn và được lấy ra khỏi hàng đợi.

Thời gian chờ đợi trung bình trong chiến lược này có thể sẽ khá dài.

Ví dụ:

Tiến trình Thời điểm vào Thời gian xử lý

P1 0 24

P2 1 3

P3 2 3

Thì thứ tự cấp phát CPU sẽ là:

P1 P2 P3

0 24 27

- Thời gian chờ của tiến trình P1 là 0

- Thời gian chờ của tiến trình P2 là (24-1)

- Thời gian chờ của tiến trình P3 là (24+3-2)

- Thời gian chờ trung bình: (0+23+25)/3 = 16

Page 5: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.5

GV: Thái Hùng Văn - ĐH KHTN – 04.08

Tuy nhiên, nếu tiến trình P1 vào sau cùng thời gian chờ đợi trung bình sẽ nhỏ hơn nhiều lần.

Giải thuật FCSF là giải thuật điều phối không trưng dụng CPU. Một khi CPU được cấp phát tới một quá

trình, tiến trình đó giữ CPU cho tới khi nó giải phóng CPU bằng cách kết thúc hay yêu cầu nhập/xuất. Giải

thuật FCFS đặc biệt không phù hợp đối với hệ thống chia sẻ thời gian

Chiến lược RR:

Giải thuật điều phối luân phiên (round-robin) được thiết kế đặc biệt cho hệ thống chia sẻ thời gian. Đơn vị

thời gian chia sẻ được gọi là định mức thời gian (time quantum - thường từ 10-100ms), hàng đợi sẵn sàng là

một hàng đợi vòng. Scheduler lần lượt cấp phát cho từng tiến trình một khoảng thời gian sử dụng CPU là

quantum, hết khoảng thời gian này (hoặc khi tiến trình bị ngắt vì lý do khác), scheduler cấp CPU cho tiến trình

ở đầu hàng đợi

Thời gian chờ trung bình của chiến lược RR thường cũng khá dài.

Ví dụ:

Tiến trình Thời điểm vào Thời gian xử lý (ms)

P1 0 24

P2 1 3

P3 2 3

Nếu sử dụng định mức thời gian là 4ms thì tiến trình P1 nhận 4ms đầu tiên. Vì nó yêu cầu 20 ms còn lại

nên nó bị trưng dụng CPU sau định mức thời gian đầu tiên và CPU được cấp tới tiến trình tiếp theo trong hàng

đợi: tiến trình P2. Vì P2 không cần tới 4ms nên nó kết thúc trước khi định mức thời gian của nó hết hạn. Sau

đó, CPU được cho tới tiến trình kế tiếp, tiến trình P3. Thứ tự cấp phát CPU:

P1 P2 P3 P1 P1 P1 P1 P1

0 4 7 10 14 18 22 26

Thời gian chờ đợi trung bình là (0+6+3+5)/3 = 4.66 mili giây.

Năng lực của giải thuật RR phụ thuộc nhiều vào kích thước của định mức thời gian. Nếu định mức thời

gian rất lớn (lượng vô hạn) thì chính sách RR tương tự như chính sách FCFS. Nếu định mức thời gian là rất nhỏ

(1 mili giây) thì tiếp cận RR được gọi là chia sẻ bộ xử lý (processor sharing) và xuất hiện (trong lý thuyết) tới

người dùng như thể mỗi tiến trình trong n tiến trình có bộ xử lý riêng của chính nó chạy tại 1/n tốc độ của bộ xử

lý thật.

Thời gian hoàn thành cũng phụ thuộc kích thước của định mức thời gian.

Chiến lược SJF:

Một tiếp cận khác đối với việc điều phối CPU là giải thuật điều phối công việc ngắn nhất trước (shortest-

job-first). Giải thuật này chọn tiến trình chiều dài của chu kỳ CPU tiếp theo cho tiến trình sau đó. Khi CPU

rảnh, nó được gán tới tiến trình có chu kỳ CPU kế tiếp ngắn nhất. Nếu hai tiến trình có cùng chiều dài chu kỳ

CPU kế tiếp, điều phối FCFS được dùng.

Ví dụ:

Page 6: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.6

GV: Thái Hùng Văn - ĐH KHTN – 04.08

Tiến trình Thời điểm vào Thời gian xử lý (ms)

P1 0 6

P2 0 8

P3 0 7

P4 0 3

Thứ tự cấp phát CPU:

P4 P1 P3 P2

0 3 9 16

- Thời gian chờ của tiến trình P1 là 3

- Thời gian chờ của tiến trình P2 là 16

- Thời gian chờ của tiến trình P3 là 9

- Thời gian chờ của tiến trình P4 là 0

- Thời gian chờ trung bình: (3+16+9+0)/3 = 7

(Nếu chúng ta dùng cơ chế điều phối FCFS thì thời gian chờ đợi trung bình là 10.23)

Giải thuật SJF có thể là tối ưu, trong đó nó cho thời gian chờ đợi trung bình nhỏ nhất cho các tiến trình

được cho. Bằng cách chuyển một tiến trình ngắn trước một tiến trình dài thì thời gian chờ đợi của tiến trình

ngắn giảm hơn so với việc tăng thời gian chờ đợi của tiến trình dài. Do đó, thời gian chờ đợi trung bình giảm.

Khó khăn thật sự với giải thuật SJF là làm thế nào để biết chiều dài của yêu cầu CPU tiếp theo.

Giải thuật SJF có trưng dụng CPU: Chọn lựa này phát sinh khi một tiến trình mới đến tại hàng đợi sẵn

sàng trong khi một tiến trình trước đó đang thực thi. Một tiến trình mới có thể có chu kỳ CPU tiếp theo ngắn

hơn chu kỳ CPU được để lại của tiến trình thực thi hiện tại. Giải thuật SJF trưng dụng sẽ trưng dụng CPU của

tiến trình đang thực thi hiện tại, trong khi giải thuật SJF không trưng dụng sẽ cho phép tiến trình đang thực thi

kết thúc chu kỳ CPU của nó. Điều phối SJF trưng dụng còn được gọi là điều phối thời gian còn lại ngắn nhất

trước (shortest-remaining-time-first).

Ví dụ:

Tiến trình Thời điểm vào Thời gian xử lý (ms)

P1 0 8

P2 1 4

P3 2 9

P4 3 5

Thứ tự cấp phát CPU:

P1 P2 P4 P1 P3

0 1 5 10 17

Tiến trình P1 được bắt đầu tại thời điểm 0, vì nó là tiến trình duy nhất trong hàng đợi. Tiến trình P2 đến tại

thời điểm 1. Thời gian còn lại cho P1 (7) là lớn hơn thời gian được yêu cầu bởi tiến trình P2 (4) vì thế tiến

trình P1 bị trưng dụng CPU và tiến trình P2 được điều phối biểu.

Thời gian chờ trung bình : ((10-1) + (1-1) + (17-2) + (5-3))/4 = 6.5.

Page 7: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.7

GV: Thái Hùng Văn - ĐH KHTN – 04.08

Điều phối SJF không trưng dụng cho kết quả thời gian chờ đợi trung bình là 7.75 mili giây.

Chiến lược điều phối với nhiều mức độ ưu tiên:

Một loại giải thuật điều phối khác được tạo ra cho những trường hợp mà trong đó các tiến trình được phân

lớp thành các nhóm khác nhau. Thí dụ: việc phân chia thông thường được thực hiện giữa các tiến trình chạy ở

chế độ giao tiếp (foreground hay interactive) và các tiến trình chạy ở chế độ nền hay dạng lô (background hay

batch). Hai loại tiến trình này có yêu cầu đáp ứng thời gian khác nhau và vì thế có yêu cầu về điều phối khác

nhau. Ngoài ra, các tiến trình chạy ở chế độ giao tiếp có độ ưu tiên cao hơn các tiến trình chạy ở chế độ nền.

Giải thuật điều phối hàng đợi nhiều cấp (multilevel queue-scheduling algorithm) chia hàng đợi ready thành

nhiều hàng đợi riêng rẻ theo các độ ưu khác nhau. Mỗi hàng đợi có giải thuật điều phối của riêng nó.

3. Thông tin liên lạc giữa các tiến trình

3.1 Nhu cầu và các vấn đề phát sinh

Trong môi trường đa chương, tiến trình có thể tác động đến các tiến trình khác, hoặc bị các tiến trình khác

tác động, chúng có thể có nhu cầu liên lạc với nhau để:

- Chia sẻ thông tin

- Hợp tác hoàn thành tác vụ (để tối ưu thời gian, một tác vụ có thể được chia thành nhiều việc nhỏ tiến

hành song song – ví dụ như để tính f = a.b + c.d thì tích a.b và c.d có thể tính song song)

Nhưng do mỗi tiến trình sở hữu một không gian địa chỉ riêng biệt nên chúng không thể dễ dàng trực tiếp

liên lạc với nhau, hệ điều hành phải cung cấp cơ chế liên lạc. Khi đó hệ điều hành phải giải quyết các vấn đề

chính sau:

- Liên kết tường minh hay tiềm ẩn

- Liên lạc theo chế độ đồng bộ hay không đồng bộ

- Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống phân tán

3.2 Các cơ chế thông tin liên lạc

- Tín hiệu (Signal): mỗi tiến trình sở hữu một bảng tín hiệu, mỗi tín hiệu có tương ứng một trình xử lý tín

hiệu (signal handler) qui định các xử lý của tiến trình khi nhận đượvc tín hiệu

- Đường ống (Pipe): là một kênh liên lạc trực tiếp giữa hai tiến trình, dữ liệu xuất của tiến trình này được

chuyển thành dữ liệu nhập của tiến trình kia dưới dạng một dòng các byte (theo 1 chiều duy nhất).

- Vùng nhớ chia sẻ (Share memory): có một vùng nhớ vật lý mà các tiến trình cần liên lạc nhau đều truy

cập được.

- Thông điệp (Message): các tiến trình không chia sẻ tài nguyên chung mà liên lạc với nhau bằng cách gửi

/nhận các thông điệp.

- Sockets: là thiết bị truyền thông hai chiều tương tự như tập tin, có thể đọc /ghi lên đó, các thao tác đọc

/ghi chính là sự trao đổi dữ liệu (có thể trao đổi giữa các máy khác nhau).

Page 8: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.8

GV: Thái Hùng Văn - ĐH KHTN – 04.08

3.3 Đồng bộ hóa tiến trình

Đôi khi có những tiến trình c6àn độc quyền truy xuất một số tài nguyên trong một khaỏng thời gian, hoặc

các tiến trình cần hợp tác để hoàn thành một tác vụ, và phát sinh nhu cầu cần đồng bộ hóa hoạt động của chúng.

Ví dụ: giả sử có 2 người ở hai nơi cùng rút tiền từ một tài khoản, và hai tiến trình phát sinh tương ứng ở

máy chủ là P1 và P2. Đoạn mã xử lý cập nhật giá trị tài khoản như sau:

If (GiatriTaikhoan >= GiatriRut)

GiatriTaikhoan = GiatriTaikhoan – GiatriRut

Else

Error (“Khong the rut so tien lon hon so dang co trong tai khoan)

Nếu giá trị tài khoản (số tiền đang có trong tài khoản) là 500, P1 muốn rút 400 và P2 muốn rút 300, xử lý

đúng thì không thể giải quyết cho cả hai đều đuợc rút. Tuy nhiên nếu không khéo có thể xảy ra tình huống:

i) P1 thực hiện trước và điều kiện của cấu trúc if được kiểm tra thỏa (vì 500 > 400), lệnh bên trong

của cấu trúc if chuẩn bị thực hiện (chuẩn bị cập nhật lại GiátriTaikhoan) thì P1 hết khoảng thời

gian xử lý dành cho nó và phải tạm ngưng, P2 được chạy

ii) P2 chạy kiểm tra điều kiện của cấu trúc if và vẫn thỏa (vì 500 > 400, do GiátriTaikhoan vẫn chưa

được P1 cập nhật), như vậy P2 vẫn được rút.

iii) Khi P1 được chạy tiếp, P1 sẽ được thực hiện rút (vì điều kiện if ở đợt chạy trước của P1 đã được

kiểm tra và thấy thỏa)

Như vậy hệ thống đã bị lỗi! Đoạn chương trình có khả năng xảy ra mâu thuẫn truy xuất trên tài nguyên

chung gọi là miền găng (critical section).

Để giải quyết bài toán miền găng có thể dùng nhiều phương pháp (dùng cờ hiệu, kiểm tra luân phiên,

semaphore, monitors,..), sao cho đáp ứng được các yêu cầu:

- Không có hai tiến trình cùng ở trong một miền găng

- Không đòi hỏi sự liên hệ về tốc độ của các tiến trình

- Tiến trình ngoài miền găng không ngăn cản tiến trình vào miền găng

- Không có tiến trình nào phải chờ vô hạn để được vào miền găng.

4. Tắc nghẽn (DeadLock)

Một tập hợp tiến trình ở trạng thái tắc nghẽn khi mỗi tiến trình đều chờ một sự kiện mà chỉ có một tiến trình

trong tập hợp mới có thể phát sinh.

Nói các khác: mỗi tiến trình đều chờ được cấp phát một tài nguyên đang bị một tiến trình khác ở trạng thái

Blocked chiếm giữ. Như vậy không có tiến trình nào có thể tiếp tục xử lý, và như vậy cũng không có tiến trình

nào giải phóng tài nguyên cho tiến trình khác, dẫn đến các tiến trình trong tập hợp này bị khóa vĩnh viễn (dead

lock)

Ví dụ: Một bàn ăn hình tròn có n người ngồi cạnh nhau chuẩn bị ăn, trên bàn đã sắp sẵn n chiếc đũa (bên

trái mỗi người có 1 chiếc, bên phải cũng có 1 chiếc). Khi mọi người cùng đưa tay phải lấy đũa để ăn thì ai cũng

Page 9: 7 on Tap HDH - C4 Quan Ly Tien Trinh

TL bổ sung - môn HĐH - Hệ thống Quản lý tiến trình (tóm tắt) 4.9

GV: Thái Hùng Văn - ĐH KHTN – 04.08

lấy được 1 chiếc và thiếu 1 chiếc – không thể ăn được! Và nếu tất cả đều chờ ai đó trong bàn buông đũa của

mình ra thì xảy ra hiện tượng deadlock).

Điều kiện cần để phát sinh deadlock:

i. Có dùng tài nguyên không thể chia sẻ: khi tiến trình sử dụng xong, hệ điều hành mới có thể lấy cấp

cho tiến trình khác

ii. Sự chiếm giữ và yêu cầu thêm tài nguyên: tiến trình vẫn chiếm giữ tài nguyên được cấp trong khi

chờ tài nguyên mới

iii. Không thu hồi tài nguyên đang bị chiếm giữ: tài nguyên không thể được thu hồi từ tiến trình đang

chiếm giữ cho đến khi tiến trình sử dụng xong

iv. Tồn tại chu kỳ trong đồ thị cấp phát tài nguyên