Mời các bạn cùng tìm hiểu khái niệm tiến trình; các process song song không đồng bộ; Deadlock - Treo;... được trình bày cụ thể trong Giáo trình Kiến trúc hệ điều hành: Phần 1. Cùng tìm hiểu để nắm bắt nội dung thông tin tài liệu.
GIÁO TRÌNH KIẾN TRÚC HỆ ĐIỀU HÀNH NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT HÀ NỘI - 2010 Phần II Chương Khái niệ m Tiế n trình (Process) 3.1 Mởđầu Trong chương sẽxem xét khái niệ m process, khái niệm quan trọng nhấtđểhình dung vềcơng việ c máy tính ngày Chúng ta sẽtìm hiểu khái niệm vềcác trạ ng thái (rời rạ c) process cách mà process chuyể n từtrạ ng thái sang trạ ng thái khác với thao tác cơbả n process Khái niệ m process lần đầ u tiên kỹsưthiết kếhệthống MULTICS vào năm 60 Trong thời kỳđầ u tiên, process hiể u nhiề u trường hợp đồng nghĩ a nhưlà chương trình, tốn (task) đối tượng bộxửlý phục vụ, Người ta thường dùng đị nh nghĩ a process nhưlà chương trình lúc chạ y 3.2 Trạng thái p ro cess Trong thời gian tồn tạ i mình, process tồn tạ i trang thái tách biệ t (rời rạ c) Sựđổi từtrạng thái sang trạ ng thái khác có thểxảy sựkiệ n khác Nói process ởtrạ ng thái hoạ t động (running state) nế u BXL phục vụ.Cịn nế u process sẵ n sàng đểđược BXL phục vụnhưng chờđế n lượt proces ởtrạ ng thái sẵ n sàng – ready state Nói rằ ng process ởtrạng thái bị cản, chặn – blocked state nế u nhưnó chờmộtsựkiệ n (ví dụkế t thúc tác vụvào/ra) đểcó thểtiếp tục hoạ t động Ngồi trạng thái nói cịn số trạng thái khác tạ m thời chỉxem xét quan hệgiữa trạ ng thái Đểđơn giả n xem xét trường hợp máy tính chỉcó BXL Trong hệ thống BXL, tạ i thời điể m chỉcó thểcó process thực hiện, cịn sốprocess nằm trạ ng thái sẵ n sàng (ready) sốkhác trạ ng thái bịchặ n (blocked) Do có thểlập danh sách chứa process trạng thái ready danh sách blocked process Mỗi ready process nằm list thứnhấ t sẽcó mức độưu tiên riêng (priority) mình- tức process sắ p xế p theo thứtựvà process nằm ởđầu danh sách sẽlà process có độưu tiên cao nhấ t sẽđược BXL thực hiệ n tiế p theo (có nhiề u tiêu chuẩ n để gán priority thay đổi priority) Còn danh sách blocked process nói chung khơng có thứtựvì blocked process sẽđược giả i phóng (unblock) sựkiệ n mà chờ 3.3 Sựchuyển trạng thái p ro cess Khi có chương trình – task bắ t đầu thực hiệ n, hệthống sinh process tương ứng process đưa vào danh sách ready process, đơn giản nhấ t đưa vào cuối danh sách – tức có mức ưu tiên priority thấp Process sẽdị ch chuyển dầ n lên phía đầ u list process trước dầ n dầ n BXL phục vụ Khi process nằ m ởđầ u list BXL giả i phóng process BXL phục vụvà lúc xả y sựthay đổi trạ ng thái process – chuyển từtrạ ng thái ready sang running Việ c trao quyề n sửdụng BXL cho process đầ u tiên danh sách ready processes gọi trình dispatching, điều thực bởimodule chương trình nằ m OS gọi dispatcher Q trình đổitrạng thái có thểbiể u diễ n bằ ng ký hiệ u: dispatch(process name): ready running Process sửdụng BXL gọi process thực Running blocking Dispatch Over time Ready Blocked waik up H×nh 3.1 Đểngă n chặ n trường hợp vơ tình cốý độc quyền chiế m tài nguyên hệthống process, hệđiều hành sinh ngắ t cứng đặ c biệ t – timer interrupt (ngắt thời gian), xác đị nh khoả ng thời gian lớn nhấ t mà process sửdụng BXL liên tục Nếu nhưsau khoảng thời gian đó, process khơng tựgiả i phóng BXL hệ thống sẽsinh ngắ t, theo quyề n điề u khiển chuyể n lạ i cho HĐH Lúc HĐH sẽchuyể n process thực hiệ n từtrạ ng thái running vềtrạng thái, đưa vào danh sách ready process, sau đưa process đầ u tiên danh sách (process có mức ưu tiên cao nhấ t) vào thực (running state) Các sựbiế n đổinày có thểbiể u diễ n bằ ng hai thao tác: interval gone (process name): running ready dispatch (process name) : ready running Nế u nhưmộtprocess sửdụng BXL (running state) trình hoạ t động thực hiệ n tác vụvào/ra (I/O) sẽtựmình giả i phóng BXL (tựmình chuyển vào trạ ng thái blocked đểchờtác vụvào/ra kếtthúc) Sựchuyển trạng thái có thểbiể u diễn: blocking (process name): running blocked Cịn q trình thay đổi trạng thái cuối cùng, kết thúc tác vụvào/ra (hay nói chung xảy sựkiệ n mà blocked process chờ) lúc process chuyển từtrạ ng thái blocked sang trạ ng thái ready – sẵn sàng đểthực tiế p Q trình có thểbiểu diễ n: waikup(npocess name): blocked ready Với trạng thái cơbả n trên, có khảnă ng chuyể n trạ ng thái process là: dispatch (process name): ready running interval gone(process name): running ready blocking (process name): running blocked waikup (process name): blocked ready Chú ý khảnăng trên, chỉcó khảnă ng thứ3 có thểsinh chương trình người sửdụng, cịn lạ i khảnă ng khác đề u đối tượng khác ởbên process gây 3.4 Process control Block (PCB)- kh ối điều kh iển ti ến trình Đạ i diệ n cho process HĐH khối điề u khiể n process (PCB) PCB cấ u trúc dữliệ u chứa thơng tin quan trọng vềprocess có thểkhác hệthống khác nhau, thường có: trạng thái hiệ n tạ i process ID (identifier) nhấ t cho process độưu tiên (priority) process thông tin vềbộnhớ thông tin vềcác tài nguyên process sửdụng vùng đểcho ghi PCB đối tượng quan trọng, nhờnó HĐH có thểcó tồn bộthơng tin cơbả n nhấ t vềmột process Khi HĐH chuyển (switch) BXL từđang phục vụprocess sang phục vụprocess khác, dùng vùng cho ghi PCB lưu thông tin giá trịcác ghi hệthống đểcó thểtiế p tục thực process process đế n lượt sửdụng BXL Tóm lại, PCB đốitượng đạ i diện cho process HĐH Vì HĐH phải có khảnăng thực hiệ n thao tác với PCB khác cách nhanh chóng, nhiề u hệthống có ghi đặ c biệ t chỉtới PCB running process Và có lệ nh cài đặt phần cứng đểđả m bảo nhanh chóng ghi thông tin trạ ng thái vào PCB tiế p theo nhanh chóng đọc thơng tin 3.5 Các th ao tác với process Hệthống điề u khiển process cầ n có khảnăng thực hiệ n thao tác với process, có: tạo process (create) huỷprocess (free, destroy) thay đổiđộưu tiên priority dừng – block process kích hoạ t – waikup process thực process (dispatch) Quá trình tạ o mộtprocess gồm nhiề u thao tác nhỏ: gán tên cho process đưa tên process vào danh sách process hệthống xác đị nh mức ưu tiên priority ban đầ u cho process tạo, nạ p thông tin PCB phân chia tài nguyên khởiđầu cho process Một process có thểtạ o process Process đầ u tiên parent process tạo child process Đểtạ o process chỉcần process tức child process chỉcó mộtparent cịn parent có thểcó nhiề u child Các quan hệđó tạ o kiế n trúc process A B D H×nh 3.2 C E F Xố process loạ i bỏnó khỏihệthống Khi tài nguyên phân chia cho process sẽđược giả i phóng, trảlạ i cho HĐH, tên process xoá khỏitất cảcác danh sách hệthống, cịn PCB giảiphóng Một suspended process (bịhỗn, dừng) process không tiếp tục thực hiệ n đế n có process khác kích hoạ t Suspending (tạm dừng) thao tác quan trọng sửdụng nhiều hệthống với cách cài đặ t, thực hiệ n khác Suspending thường chỉdiễ n khoả ng thời gian ngắ n Ví dụHĐH phải suspend sốprocess (không phải tấ t cả) thời gian ngắn hệ thống tả i, Trong trường hợp process bịdừng thời gian dài tài ngun phả i giả i phóng trảlại cho HĐH Việ c loạ i tài ngun có cầ n giả i phóng hay khơng cịn phụthuộc vào kiể u Ví dụbộnhớcầ n giả i phóng ngay, cịn thiết bịvào có thểvẫ n thuộc quyề n sửdụng process trường hợp process bịsuspend thời gian ngắ n sẽđược giải phóng thờigian suspend dài hay khơng xác đị nh Q trình activate – kích hoạ t thao tác chuẩn bịđểprocess có thểtiế p tục thực từđúng trạ ng thái mà bịdừng trước Q trình huỷbỏmột process sẽkhá phức tạ p parent process Trong sốhệthống children process sẽtựđộng bịhuỷbỏtheo, cịn sốhệ thống khác children process vẫ n tồn tạ i (độc lập vớiparent process) Sựthay đổi priority process thường đơn giả n thay đổi giá trịpriority PCB HĐH 3.6 Suspend ing and Activating - d ừn g kích h oạt Chúng ta biế t khái niệ m suspend and activate Các thao tác quan trọng lý do: nế u hệthống hoạ t động không ổn đị nh có dấu hiệ u trục trặ c process diễ n cầ n suspend đểlạiđược activate sau sửa lỗi Người sửdụng (lậ p trình viên) có thểcầ n tạ m dừng (khơng phả i huỷbỏ) process đểkiể m tra kếtquảtrung gian xem chương trình có hoạ t động hay khơng Mộtsốprocess có thểbịsuspend khoả ng thời gian ngắ n hệthống tả i sau lạ i activate có đủtài ngun (hệthống trởvề trạng thái bình thường) event terminated Ready Dispatch Over time Suspend Blocked waik up Activate Running Suspend Activate ACTIVE STATE Suspend Ready suspend H×nh 3.3 Blocked suspend SUSPENDED STATE event terminated So vớimục trước- có thêm hai trạ ng thái ứng vớicác thao tác suspend activate Tác nhân dừng có thểlà thân process process khác Trong hệcó BXL process chỉcó thểdừng bả n thân khơng có proces khác chạ y đồng thời vớinó Cịn hệcó nhiề u BXL process bịdừng bởiprocess khác chạ y BXL khác Một process ởtrạ ng thái ready chỉcó thểbịdừng process khác, lúc xả y sựchuyển trạ ng thái: suspend (process name): ready suspended-ready Process ởtrạ ng thái suspended-ready có thểchuyển vềtrạ ng thái ready process khác; trình chuyể n trạ ng thái có thểbiểu diễ n activate (process name): suspend-ready ready Process ởtrạ ng thái blocked có thểchuyể n sang trạ ng thái suspend process khác, diễn sựđổitrạ ng thái suspend (process name): blocked suspend-blocked Và ngược lạ i, prrocess ởtrạng thái suspended blocked có thểđược kích hoạ t process khác activate (process name): suspended-blocked blocked Chúng ta có thểđặ t vấ n đềtạisao khơng thay suspend process ởtrạ ng thái blocked, ta vẫ n chờđế n có sựkiện (kế t thúc I/O) mà process đợi xả y để process chuyể n vềtrạng thái ready Tuy nhiên tác vụI/O hay sựkiện process chờ có thểkhơng xả y hay xảy Nhưthế , nhà thiết kế cần phải chọn lựa: hoặ c suspend blocked process (đưa trạ ng thái suspended-blocked) phải sinh cơchếcho phép đưa process từtrạng thái blocked sang trạng thái ready sau chuyể n thành trạ ng thái suspened-ready kế t thúc I/O hay diễ n kiệ n process chờ Mặt khác thao tác suspending thường có mức ưu tiên cao cầ n thực hiệ n ngay, phầ n lớn hệthống sửdụng cách thứnhấ t Khi sựkiệ n process chờxảy (nế u nhưnó xả y ra), trạ ng thái process sẽchuyể n từsuspended-blocked sang trạ ng thái suspended-ready: Incommingevent (process name): suspended-blocked suspended-ready 3.7 Xửl ý ngắt Trong thực tếcó nhiề u trường hợp tương tựngắ t máy tính Trong kỹthuậ t máy tính, ngắ t (interupt) sựkiệ n làm thay đổi trình tựthực hiệ n lệnh bình thường BXL Tín hiệ u ngắt xửlý phần cứng Khi xảy ngắ t, trình tựthực hiệ n nhưsau: Điề u khiể n chuyển cho HĐH HĐH lưu lạ i trạng thái process bịngắ t Trong nhiều hệthống thơng tin lưu PCB process bịngắ t HĐH phân tích loạ i ngắ t chuyể n điề u khiể n cho chương trình xửlý ngắt tương ứng Tác nhân gây ngắ t có thểlà bả n thân process chạ y, kiện có thểliên quan hoặ c khơng liên quan đế n process 3.7.1 Các dạng ngắt Chúng ta xem xét ng ngắttrong hệthống máy lớn IBM: SVC- interrupt: ngắt process chạ y sinh SVC chương trình ứng dụng sinh đểyêu cầ u dị ch vụnào hệthống, ví dụ thực hiệ n tác vụvào/ra, cấ p phát bộnhớ CơchếSVC giúp bả o vệHĐH, người sửdụng không tựdo xâm nhậ p OS mà phảiyêu cầ u dị ch vụthơng qua lệnh SVC Do HĐH ln kiể m sốt thao tác vượt q giớihạn ứng dụng hồn tồn có thểtừchốiu cầ u Ngắ t vào/ra: thiế t bịvào/ra sinh Các ngắt thông báo cho BXL vềsựthay đổi trạng thái ví dụkế t thúc tác vụin, máy in hết giấy, External interrupt: ngắ t có thểdo nhiề u nguyên nhân sinh ra, có ngắ t thời gian overtime, ngắ t bàn phím, ngắ t từcác BXL khác hệ thống đa BXL, Restart interrupt: sinh người điề u kiể n cầ n khởi động lạ i hệthống, hay lệ nh restart SIGP processor (BXL) khác hệthống đa BXL Program check interrupt: ngắ t sinh lỗihoạt động chương trình ví dụlệnh chi cho 0, Machine check interrupt: sinh lỗi phầ n cứng hệthống 3.8.2 Context switching - Đổingữcảnh Đểxửlý loại ngắt, HĐH có chương trình chun biệt gọi interrupt handler Nhưtrên nói, hệthống có loạ i ngắt, nhưthếtrong HĐH có IH (interrupt handler) đểxửlý loạ i ngắt khác Khi có ngắ t HĐH ghi lại trạng thái process bịngắ t chuyể n điề u khiển cho chương trình xửlý ngắt tương ứng Điề u thực hiệ n bởiphương pháp gọi “chuyể n đổingữcảnh” (context switching) Trong phương pháp sử dụng ghi trạ ng thái chương trình PSW (program status word), chứa thứtựthực lệ nh thông tin khác liên quan đế n trạng thái process Có loạ i PSW: PSW hiệ n thời (current), PSW (new) PSW cũ(old) Đị a chỉcủa lệ nh tiế p theo (sẽđược thực hiện) chứa current PSW, current PSW chứa thông tin vềnhững loạ i interrupt bịcấm (disable) hay phép (enable) BXL chỉphản ứng với loạiinterrupt phép, interrupt bịcấ m sẽđược xửlý sau hoặ c bỏqua Có số interupt khơng bao giờbịcấ m: SVC, restart, Trong hệcó BXL chỉcó current PSW, có new PSW (tương ứng cho loạ i ngắ t) old PSW tương ứng New PSW mộtloạingắ t chứa đị a chỉcủa chương trình xửlý ngắ t (interupt handler) loạ i New PSWs Old PSWs SVC SVC I/O I/O External current PSW External Restart Restart Program check Program check Machine check Machine check H×nh 3.5 Khi xả y ngắ t (nế u loại ngắ t khơng bịcấ m) lúc sẽtựđộng (do phầ n cứng thực hiện) xả y trình chuyể n đổiPSW nhưsau: current PSW trởthành old PSW loạ i ngắ t tương ứng new PSW loạ i ngắtđó trởthành current PSW Nhưthế , sau chuyển đổi current PSW chứa đị a chỉcủa chương trình xửlý ngắ t sau chương trình xửlý ngắt sẽđược thực Khi kế t thúc chương trình xửlý ngắ t, BXL lạ i hoạ t động bình thường, BXL sẽtiế p tục phục vụprocess bịngắ t hoặ c có thểmột process khác danh sách ready process Trong trường hợp process khơng cho phép giải phóng (nhường) quyền sửdụng BXL sẽtiếp tục BXL phục vụ, cịn cho phép tiếp tục sử dụng BXL khơng có ready process Trong hệthống, có nhiề u mơ hình xửlý ngắ t khác khơng hồn tồn mơ hình 3.8 Hạt nhân OS Tất cảcác thao tác liên quan đế n process, thực hiệ n phần HĐH gọi hạt nhân – kernel Kernel chỉlà phầ n khơng lớn (vềkích thước code) HĐH sốnhững thành phầ n sửdụng nhiề u nhấ t HĐH Do kernel thường ln nạp vào bộnhớ, thành phầ n khác có thểnằ m ởbộnhớngồi chỉđược nạ p vào cầ n Một chức quan trọng kernel xửlý ngắ t Trong hệlớn nhiề u thành phầ n (component) thường xun có dịng lớn (nhiề u) ngắ t Do xửlý ngắ t nhanh đóng vai trị quan trọng quan điể m sửdụng tài nguyên hệ thống đả m bả o thời gian phả n ứng với yêu cầ u người dùng cách nhanh chóng Khi kernel xửlý ngắ t, cấm ngắ t khác chỉcho phép tiế p tục xửlý ngắtsau xửlý xong ngắ t hiệ n thời Trong trường hợp có dịng liên tục ngắt có thểxuấ t hiệ n tình ngắ t bịchặ n thời gian tương đối lớn tức hệ thống không phả n ứng kị p thời với sựkiệ n Do kernel thường thiế t kế cho chỉthực hiệ n việ c tiề n xửlý tốithiể u chuyển việ c xửlý cho process hệthống (system process) tương ứng có thểcho phép xửlý ngắt tiế p theo Theo ngắ t bịcấ m khoảng thời gian nhỏhơn tốc độ phả n ứng hệthống tăng đáng kể 3.8.1 Các chức kernel Kernel thường gồm chương trình thực chức nă ng sau: xửlý ngắ t tạo xoá process đổitrạ ng thái process dispatching Chương 6: Deadlock - Treo 6.1 Mởđầu Trong hệthống đa chương trình, process nằm trạ ng thái deadlock hay treo, nế u nhưnó chờsựkiệ n (event) khơng bao giờxả y Tình treo hệthống tình có mộthay nhiề u process nằ m trạng thái treo Trong hệthống đa chương trình chức quan trọng HĐH n lý, phân chia tài nguyên Khi tài nguyên chia sẻgiữa user, người có tồn quyề n điề u khiể n, sửdụng tài nguyên phân chia cho anh ta, hồn tồn có thểxả y deadlock process người dùng chẳng bao giờkế t thúc Trong chương xem xét vấ n đềdeadlock sốkết quảnghiên cứuvềvấ n đềngă n ngừa, phòng tránh phát hiệ n tình trạng deadlock khơi phục sau Chúng ta xem xét vấ n đềliên quan chờvơ tậ n (indefinite postponement- hỗn khơng xác đị nh) process chờmột sựkiện chẳng bao giờxả y lý chủquan hệthống điề u khiể n tài nguyên Các khảnă ng, giả i pháp cân bằ ng giá phả i trảcho phương tiệ n ngă n chặ n deadlock với lợi ích mang lạ i xem xét Trong nhiề u trường hợp, giá phả i trảcho việ c loạ i trừtình trạ ng deadlock cao Còn trường hợp khác (ví dụcác hệthống điề u khiể n thời gian thực) giá khơng tránh khỏi deadlock có thểgây hậ u quảkhơng lường trước 6.2 Ví dụtình trạn g d eadl ock Có lẽcách đơn giả n nhấ t đểtạ o deadlock chương trình mà Holt đưa bằ ng ngôn ngữPL/1, chạ y OS 360: Revenge: procedure options (main, task); wait (event) end revenge; process gắn với chương trình sẽln chờsựkiệ n event lạ i khơng xem xét dấ u hiệ u xuấ t event Hệthống bắ t buộc nhậ n thấ y process bịtreo sau phảiloạibỏprocess đểthốt khỏi tình trạng deadlock Deadlock lỗi chương trình hay thuậ t tốn thường khó phát hiệ n 6.2.1 Ví dụtrong thực tế tắc nghẽ n giao thơng: H×nh 6.1 6.2.2 Ví dụdeadlock phân chia tài ngun Trong HĐH, deadlock phầ n lớn xuất hậ u quảcủa sựtranh chấp sửdụng (chiế m) tài nguyên mà thời điể m chỉcấp cho user, đơi gọi tài ngun sửdụng tuầ n tự Trên hình 6.2 đưa ví dụđơn giả n deadlock dạng Trên sơđồphân chia tài nguyên có hai process hai tài nguyên Mũi tên từtài nguyên vào process chỉra tài nguyên thuộc quyền sửdụng process Cịn mũi tên từprocess vào tài nguyên chỉra process yêu cầ u sửdụng tài nguyên chưa cấp phát tài nguyên tương ứng Resource Process A Process B Resource H×nh 6.2 Sơđồnày biể u diễ n hệthống ởtrong tình trạ ng deadlock: processA chiế m resource1 đểtiếp tục hoạ t động cầ n resource2 Trong processB chiế m resource2 lạ i cầ n resource1 đểtiếp tục Mỗiprocess đợi đểprocess giả i phóng resource mà cần, mặtkhác process khơng giải phóng resource mà process chưa giả i phóng tài ngun Tình đợi vịng quanh đưa hệthống vào tình trạ ng deadlock 6.2.3 Deadlock hệthống dùng spooling Hệthống spooling thường xảy deadlock Chếđộspooling (vào/ra với buffer) áp dụng đểnâng cao hiệu suấ t hệthống bằ ng cách phân cách chương trình khỏicác liên lạc trực tiếp với thiếtbịngoạ i vi tốc độthấ p nhưmáy in, Nế u nhưchương trình đưa dịng text máy in mà phả i đợi đế n in xong dịng tiếp tục in dịng tiế p theo chương trình hoạ t động chậm nhiều hạ n chếtốc độcủa máy in Đểtă ng tốc độthực hiệ n chương trình, đầ u tiên dịng liệ u ghi thiế t bịcó tốc độcao nhưđĩ a cứng lưu tạ m thời trước đưa máy in Trong sốhệthống spooling, chương trình phả i đị nh dạng (format) tồn bộthơng tin ra, chỉsau bắ t đầu thực sựin Do vài process đưa dữliệ u vào spooling file đểin, hệthống có thểrơi vào tình trạng deadlock, nế u nhưbuffer đị nh trước bịđầy chưa hồn tấ t cơng việc Đểkhơi phục, hay khỏi tình trạng có thểphảirestart system- dẫn đến tồn bộkết quảcơng việc tiến hành, hoặ c phải loạ i bỏmột sốchương trình để chương trình cịn lạicó thểhoạ t động tiếp tục Khi người điều hành bắ t đầ u công việ c thiế t lậ p kích thước cho spooling file Một cách làm giảm khảnă ng xuấ t deadlock spooling thiế t lậ p kích thước ban đầ u lớn so với dựtính Nhưng cách thực hiệ n (khảthi) bộnhớthiếu, Giả i pháp thông dụng đốivới process thiết lậ p ngưỡng đểspooling không tiếp nhậ n thêm cơng việ c từcác chương trình khác spooling file sửdụng ví dụtới 75% khơng gian Giải pháp có thểdẫ n tới giả m hiệ u suất hệthống giá phả i trảđể giảm xác suấtxả y deadlock Các hệthống ngày hoàn thiện hơn, có thểcho phép bắ t đầu in trước kết tấtcảdữliệ u đị nh ng nhờđó phầ n hay tồn bộspooling file giải phóng (xố) q trình thực hiệ n cơng việ c Trong nhiề u hệthống có khả nă ng cấp phát bộđệm (buffer) động đểkhi spooling file sắ p đầy tă ng kích thước Dù ưu thếcủa spooling vẫ n lớn rấ t nhiề u vấ n đềdeadlock có thểnả y sinh 6.3 Vấn đềch ờvơ tận -hỗn kh ơng xác đị nh (in defini te postpo nement) Trong hệthống, process phả i chờví dụkhi chờđược cấp phát tài ngun hay lập lị ch trình, có thểxuất tình mà (quyề n) sửdụng BXL bịhỗn khơng xác đị nh Tình gọi hỗn vơ thời hạ n (khơng xác đị nh) có thểdẫ n tới tình khơng chấp nhậ n nhưtình trạ ng deadlock Tình trạng hỗn vơ thời hạ n có thểxả y cách điều khiể n tài nguyên hệ thống Khi tài nguyên phân bốtheo ngun tắc ưu tiên có thểxảy trường hợp process sẽchờđược cấ p tài nguyên lâu vô hạ n, ln có process khác vớiđộưu tiên cao Khi thiế t kếHĐH cầ n xem xét chiế n lược điề u khiể n process nằ m trạng thái chờ.Trong nhiề u hệthống tình trạng hỗn vơ hạ n ngă n chặ n độ ưu tiên process tă ng dần với thờigian chờđược cấ p tài nguyên Do cuối process có độưu tiên cao nhấ t sẽđược phục vụ 6.4 Khái n iệm tài ng uyên - reso urce Mộtchức quan trọng HĐH n lý điều khiể n tài nguyên hệ thống Nó có trách nhiệ m phân phốicác tài nguyên thuộc loạikhác hệ thống Chúng ta xem xét tài nguyên coi preemtible (được xửdụng nhiều nhấ t) nhưlà BXL hay bộnhớ; Chương trình nằ m bộnhớcó thể bịđưa ngồi đểcấ p vùng nhớđó cho chương trình khác cầ n bộnhớ, ví dụ nhưkhi chương trình thực hiệ n u cầ u vào/ra nói chung khơng sửdụng bộnhớ suốt khoả ng thời gian thực hiệ n thao tác vào/ra Nói chung, hệthống, tài nguyên sửdụng nhiều nhấ t (năng động nhấ t) BXL, BXL phả i phục vụcác process song song, chuyể n từprocess sang process khác đểtất process đề u tiế p tục với tốc độchấ p nhậ n Nế u process không sử dụng hợp lý BXL ví dụkhi thực thao tác I/O, quyề n sửdụng BXL process cần tạ n thời ngă n cấ m, trao cho process khác Do đó, việ c tổchức phân chia tài nguyên động chỉtiêu rấtquan trọng đểđả m bả o hoạ t động hiệu hệthống đa chương trình Các ng tài nguyên xác đị nh "không phân chia" với ý nghĩ a chúng tuỳý lấ y lạ i từprocess mà chúng cấp Ví dụnhưbă ng từ, thơng thường cấp cho process khoảng thời gian dài Thiết bịkiể u không thểđơn giản lấ y lạ i từprocess đểcấ p cho process khác Có loạ i tài nguyên khác cho phép chia sẻgiữa vài process, cịn có loạ i chỉdo mộtprocess độc quyề n sửdụng Ví dụổđĩ a thường chứa file thuộc nhiề u process process chiếm giữ Bộnhớvà BXL sửdụng chia sẻbởi nhiều process Dữliệ u chương trình tài nguyên chúng cần cơcấ u điề u khiển, cấ p phát tương ứng Ví dụtrong hệ , nhiề u user có thểcùng cầ n chạ y chương trình Bởi user có copy chương trình nhớthì khơng tiế t kiệ m, có thểchỉnạp bả n copy chương trình vào bộnhớcịn mỗiuser sẽcó mộtvùng dữliệu riêng Code chương trình mà khơng thay đổi thời gian chạ y gọi reentrant (hay có thểchạ y nhiều lầ n đồng thời) cịn code chương trình thay đổi thời gian chạ y gọi code sửdụng nối tiế p (serial reusable) Với reentrant code - có thểcó sốprocess làm việ c cịn với code nối tiếp process làm việ c với tạ i thời điể m Khi nói vềmột tài ngun đó, cầ n hình dung xem chúng có thểđược sửdụng nhiều process đồng thời hay nhiều process chỉmộtprocess tạ i thời điể m Chính loạ i tài nguyên thứhai thường gây deadlock 6.5 Bốn điều ki ện xuất hi ện deadlo ck Coffman, Elphick Sheshani phát biể u điề u kiện xuấ t hiệ n deadlock: 1) Các process yêu cầ u quyền độc quyề n sửdụng tài nguyên sẽcấ p phát cho (điều kiệ n loạ i trừnhau) 2) Process giữcho tài nguyên cấp đồng thời yêu cầ u tài nguyên bổsung (điều kiệ n chờtài nguyên) 3) Tài nguyên không lấ y lạ i từprocess tài ngun chưa sử dụng đểkếtthúc cơng việc (điều kiệ n khơng phân chia) 4) Tồn vịng kín process, process giữtài ngun mà process kếtiế p đòi hỏi(điề u kiện chờvòng) 6.6 Các h ướng ngh iên cứu cơbản vềvấn đềdead lock Vấ n đềdeadlock vấ n đềđược nghiên cứu nhiề u lĩ nh vực công nghệthông tin, thành tựu lĩ nh vực cho phép đềra thuậttoán giảiquyế t nhiề u toán Các nghiên cứu có thểchia làm hướng sau: Ngă n chặn deadlock Tránh deadlock Phát hiệ n deadlock Khôi phục sau deadlock Hướng thứnhất có mục đích tìm điề u kiệ n đểloạ i trừkhảnăng xuấ t hiệ n tình trạ ng deadlock Hướng giải pháp trực diệ n vấ n đềdeadlock, thường dẫn tới việ c sửdụng tài nguyên không hiệu Nhưng dù phương pháp ngă n chặ n deadlock áp dụng phổbiế n Mục đích biệ n pháp tránh deadlock ởchỗcho phép điều kiệ n nghiêm ngặt so với biệ n pháp ngăn chặ n deadlock, đảm bảo sử dụng tài nguyên tốt Các biệ n pháp tránh deadlock khơng địi hỏi loạ i bỏhồn tồn đểkhơng xả y tình trạ ng dealock hệthống Ngược lạ i ý khả nă ng xuấ t hiệ n deadlock, trường hợp xác suấ t xuấ t hiệ n dealock tă ng lên áp dụng biệ n pháp tránh xả y deadlock Các phương pháp phát hiệ n deadlock áp dụng hệthống có khảnă ng xuất deadlock hậ u quảcủa thao tác vơ ý hay cốý Mục đích biệ n pháp phát hiệ n xác đị nh sựtồn tạ i tình trạ ng deadlock hệthống, xác đị nh process tài nguyên nằ m tình trạng deadlock Sau có thểáp dụng biện pháp thích hợp đểkhắ c phục Các biệ n pháp khôi phục sau deadlock áp dụng loạ i bỏtình trạ ng deadlock để hệthống có thểtiế p tục hoạ t động, cịn process rơi vào tình trạ ng deadlock có thểphả i kế t thúc tài nguyên giả i phóng Sau process thường nạ p bắ t đầ u từđầ u (các công việ c thực đến lúc xả y deadlock sẽbịmấ t) 6.7 Ngăn chặn dead lock Đế n nhà thiế t kếkhi giả i quyế t vấn đềdeadlock thường theo hướng loại trừnhững tình deadlock hay xả y Chúng ta sẽxem xét phương pháp ngă n chặ n deadlock đánh giá hậ u quảcủa user nhưvới hệthống đặ c biệ t vềmặ t hiệ u quảcông việ c tính nă ng sửdụng Havender chỉra rằ ng khảnă ng xuấ t hiệ n deadlock khơng thểcó cảkhi tồn tạimột bốn điều kiệ n xuấthiện dealock Havender đềra chiế n lược sau: Mỗiprocess phả i yêu cầu tấ t cảcác tài nguyên cầ n lần, không thểbắ t đầu cho đế n chưa có đủcác tài nguyên Nế u process có tài nguyên đso, bịtừchốicấ p phát tài ngun (bổsung) phả i giả i phóng tài nguyên ban đầ u (đã có) trường hợp cầ n thiế t phải yêu cầ u cấp lạ i với tài nguyên bổsung Đưa vào tài nguyên tuyế n tính tấ t cảprocess, tức nế u process cấ p tài nguyên loạinào (phân loạ i theo thứtự) sau chỉcó thể yêu cầ u tài nguyên loạ i có bậ c lớn Chúng ta thấ y chỉcó ba chiế n lược (chứkhông phảibốn) Mỗi nguyên tắ c có mục đích loạ i trừ(phá vỡ) điề u kiện tồn tạ i deadlock Điều kiệ n (điề u kiệ n loạ i trừnhau), theo process có độc quyề n điề u khiể n tài nguyên cấ p cho nó, khơng muốn loạ i trừbởi cần cho phép khảnă ng làm việc với tài nguyên đơn 6.7.1 Loạibỏđiề u kiệ n “chờtài nguyên bổsung” Nguyên tắ c thứnhấ t Havender đòi hỏi process phả i yêu cầ u tấ t cả(tồn bộ) tài ngun mà cần từđầ u Hệthống phả i cấ p tài ngun theo ngun tắc "có tấtcảhoặc khơng có gì" Nế u tậ p hợp tài ngun có đủthì hệthống có thểcấp tất cảđểcho process có thểtiếp tục cơng việc Nế u lúc khơng có đủtài ngun process phả i chờđế n tài nguyên có đủ(nhờđược process khác giả i phóng) Bởi process nằm trạ ng thái chờkhông giữtài nguyên nào, ngă n chặn sựxuất điề u kiệ n "chờtài nguyên bổ sung" tình deadlock khơng thểxảy Kế t quảđó trảgiá việ c sửdụng tài nguyên không hiệ u Ví dụ, chương trình vào lúc cầ n 10 thiế t bịbăng từ, bắt buộc phả i yêu cầ u có đủcả10 thiết bịtrước có thểbắt đầ u Nếu như10 thiết bịđó cần suốt thời gian hoạ t động khơng có vấn đềgì vềhiệ u suấtsửdụng Nhưng nói chung khơng phải tấ t cảchúng sửdụng cảquá trình tồn tạ i process mà chúng chỉcầ n khoảng thời gian đó, nhưthếcác thiết bịđược sửdụng vớihiệ u suấ t rấtthấp, không thểchấ p nhậ n Một cách đểnâng cao hiệu suấ t phân chia chương trình thành vài giai đoạ n tương đối độc lập với Do có thểthực hiệ n việc cấ p phát tài nguyên cho giai đoạ n chương trình thay cấ p lầ n cho cảchương trình Điề u cho phép giả m việ c lãng phí tài nguyên lạ i tă ng chi phí thiế t kế cảkhi thực hiệ n chương trình Chiến lược làm tă ng khảnă ng process phả i chờvô hạ n (không xác đị nh) khơng phả i tấ t cảtài nguyên cầ n thiế t đề u có vào lúc process cầ n Nhưthếhệthống phả i thực (đén kế t thúc) sốlượng lớn toán khác giả i phóng tài nguyên cấ p cho chúng đểbài tốn chờcó thểhoạt động Vào khoảng thời gian tài ngun cần có thu thập chúng khơng thểcấp cho task khác, tức lúc chúng khơng hoạ t động Từkhía cạ nh kinh tếthì chi phí cần phải tính Có nhiều ý kiế n khác vềviệ c phả i trảchi phí Có người cho tài nguyên thu thậ p cho người sửdụng nên người dùng phả i trảtiền cảcho thời gian chúng dừng Còn người khác cho điều khơng hợp lý lúc người dùng khơng thực sựsửdụng tài ngun Nế u người dùng muốn thực chương trình vào giờcao điểm sẽphả i trảnhiề u đáng kểso vớitrường hợp thực vào thời gian khác 6.7.2 Loạibỏđiề u kiệ n “không phân bốlại” Tiêu chuẩn thứhai Havender (xem xét độc lậ p) , ngăn chặ n việ c xuấ t hiệ n điề u kiện "không phân bốlạ i" Giảsửrằ ng hệthống cho phép process yêu cầu thêm tài nguyên bổsung vẫ n giữnhững tài nguyên cấ p Nếu nhưhệ thống có đủtài ngun trống đểphân phối khơng có tình trạ ng deadlock Nhưng u cầ u khơng giả i quyế t có thểcó tình process chiế m giữtài nguyên mà process khác yêu cầu đểtiếp tục hoạ t động, process thứhai lạ i chiế m giữtài nguyên mà process đầ u cần tức xuấthiện deadlock Nguyên tắc Havender thứhai địi hỏi rằ ng process khơng cấ p phát tài nguyên bổsung yêu cầ u phả i giả i phóng tấ t cảtài nguyên chiế m giữ,và trường hợp cầ n thiế t phả i yêu cầu lạ i tấ t cảcùng với tài nguyên bổsung Nguyên tắc thậ t sựloạitrừđược yế u tố"không phân bốlạ i" có thểlấy tài nguyên từcác process chiế m chúng trước process hoàn thành Nguyên tắc có nhiề u nhược điể m Nế u nhưprocess trình làm việc sửdụng tài nguyên mà sau giả i phóng chúng có thểmấ t kết quảlàm việ c đế n lúc Giá có vẻq lớn, nhiên cịn phụthuộc vào tầ n số(xác suấ t) xả y Nế u tình xả y có thểnói rằ ng tiêu chuẩ n khơng phảilà q đắ t Còn nế u nhưthường xuyên xả y giá q đắt, đặ c biệ t vớicác process có mức ưu tiên cao hay khẩn cấ p Một nhược điể m lớn biệ n pháp xác suấ t xả y 'chặn vô hạ n' (indefinite posponement) Sựthực hiệ n process mà nhiều lầ n phải yêu cầ u giảiphóng mộttài ngun có thểbịdừng mộtthời hạ n khơng xác đị nh Trong trường hợp hệthống có thểphả i loạ i process đểcác process khác có thểtiế p tục Cũng khơng thểkhơng tính khảnăng process bịchặ n vô hạ n hệ thống không nhận ra, tình làm lãng phí tài ngun giả m hiệ u suấ t cảhệthống 6.7.3 Loạitrừđiề u kiệ n “chờvòng quanh” Nguyên tắc thứba Havender loạ i trừsựxuấ t hiệ n tình trạ ng chờvịng Vì tấ t tài nguyên gán sốduy process phả i yêu cầu tài ngun với sốtă ng dầ n khơng thểxuấ t hiệ n tình trạng 'chờvịng quanh' Ngun tắc thực nhiều HĐH gây khó khă n nhấtđị nh: Vì tài nguyên yêu cầ u (cấ p phát) theo thứtựtăng dầ n số gán cho tài nguyên gán từđầ u trường hợp đưa thêm vào hệthống tài nguyên loạ i có thểgây tình phả i thiế t kếlại chương trình cảhệthống Rõ ràng rằ ng việc gán sốcho tài nguyên cần thểhiện thứtựthông thường mà phầ n lớn task sửdụng tài nguyên Đối với task thực hiệ n theo thứtựđó tài ngun có thểđược sửdụng có hiệ u Cịn nế u task lạ i yêu cầu tài nguyên theo thứtựngược lại sẽchiếm giữtài ngun lâu cầ n thiế t (tính đế n lúc tài nguyên thực sựđược dùng) Bởi chức nă ng quan trọng HĐH cho phép người dùng sửdụng thuận tiện Người dùng phả i có khảnă ng thiế t kếchương trình với thứkhơng cầ n thiết nhấ t sựhạ n chếtừphía máy tính HĐH Nguyên tắc thứba Havender ngă n chặ n tình trạ ng 'chờvòng' lại ả nh hưởng xấ u đến cơng việc user q trình làm việc (lập trình) 6.8 Ngăn chặn dead lock thuật to án Ban ker Ngay cảkhi tồn tạ i điều kiện xuấ t hiệ n deadlock có thểtránh tình trạ ng nế u nhưtài ngun cấ p phát theo qui tắ c nhấtđị nh Có lẽthuậ t tốn thơng dụng đểtránh tình trạ ng deadlock thuậ t toán banker Dijstra đề xuấ t 6.8.1 Thuật toán banker Dijstra Khi xem xét thuậ t toán banker sẽxem xét tài nguyên sẽgiới hạ n xét tài nguyên mộtloạ i, thuậttốn có thểdễdàng thay đổi đểáp dụng cho tài nguyên nhiề u loạikhác Chúng ta xem trường hợp ví dụnhưphân chia t thiế t bịlưu trữbă ng từ HĐH phả i đả m bả o phân chia sốt thiế t bịcho mốt sốcốđị nh u người sử dụng Mỗi người dùng sẽphả i báo trước sốthiế t bịlớn nhấ t mà sẽcần thực hiệ n toán HĐH sẽchấ p nhậ n yêu cầ u người dùng u cầ u cao nhấ t khơng vượt q sốthiếtbịt Người dùng có thểchiế m hay giả i phóng thiết bịmột Có thểrằ ng phả i chờđược cấp tài nguyên HĐH đả m bả o rằ ng sựchờđợi khơng phải vơ hạ n Sốthiếtbịcấ p cho người dùng tạ i mộtthờiđiể m không bao giờvượt sốthiế t bịnhiề u nhấtanh ta cần đế n Nếu HĐH có đủsốthiế t bịthoảmãn yêu cầ u lớn người dùng, người sửdụng đảm bả o rằ ng thiế t bịđó sẽđược sửdụng trảlạicho HĐH sau khoảng thời gian hữu hạ n Trạng thái hiệ n thời máy tính gọi ổn đị nh HĐH có thểđảm bả o tấ t chương trình ứng dụng hiệ n thời hệthống có thểhồn thành (kết thúc bình thường) sau khoảng thời gian hữu hạn Cịn trường hợp ngược lạithì trạ ng thái khơng ổn đị nh Giảsửrằng có n người sửdụng Giảsửl(i) sốthiế t bịcấ p cho người sửdụng thứi Ví dụngười dùng thứ5 dùng thiế t bịthì l(5)=4 Giảsửm(i) sốthiếtbịlớn nhấ t mà ngườidùng thứi có thểcầ n ví dụngười dùng thứ5 cầ n nhiều nhấ t thiế t bịthì m(5)=6 Tại thời điể m, c(i) yêu cầ u lớn nhấ t hiệ n thời người dùng i- hiệ u sốthiế t bịnhiề u nhấ t có thểyêu cầu sốthiế t bịhiệ n có, tức c(i)=m(i)-l(i) ví dụởtrên ta có c(5)= m(5)-l(5) = 6-4=2 Trong hệthống với t thiế t bịthì sốthiếtbịcịn rỗi tạimột thời điểm a sẽbằ ng t trừtổng thiế t bịđược cấp phát: a = t - l(i) Thuật toán banker Dijkstra yêu cầ u rằ ng thiế t bịchỉđược cấp phát cho người dùng theo yêu cầ u trường hợp sau cấ p phát hệthống vẫ n trạng thái ổn đị nh Trạng thái ổn đị nh trạng thái mà với tài nguyên có, tấtcảứng dụng người dùng có khảnăng kế t thúc (bình thường) cơng việ c Cịn trạ ng thái không ổn đị nh trạ ng thái có thểdẫ n tớideadlock 6.8.2 Ví dụvềtrạng thái ổn đị nh Giảsửhệthống có 12 thiế t bị , chúng phân chia người dùng với trạng thái status1 biểu diễ n bả ng sau: Trạng thái status1 Sốthiế t bịđang cấ p Sốthiế t bịlớn nhấ t có thểcầ n Người dùng 1 Người dùng Người dùng Dựtrữcịn lại Trạng thái ổn đị nh cả3 người dùng có khảnăng kế t thúc cơng việ c 6.8.3 Ví dụvềtrạng thái khơng ổn đị nh Giảsửhệthống có 12 thiế t bị , chúng phân chia người dùng với trạ ng thái status2 biể u diễ n bảng sau: Trạng thái status2 Sốthiế t bịđang cấ p Sốthiế t bịlớn nhấ t có thểcầ n Người dùng 10 Người dùng 2 Người dùng 3 Dựtrữcòn lại Trong trường hợp 11 thiế t bịtrong trạ ng thái cấ p phát chỉcòn thiết bịdựtrữ Trạ ng thái khơng ổn đị nh bất cứngười dùng yêu cầu thêm thiế t bịvà hệthống đáp ứng khơng thểđả m bả o chương trình đề u kếtthúc bình thường Chúng ta cầ n ý rằ ng thuậ t ngữ'trạng thái không ổn đị nh' khơng có nghĩ a vào lúc hoặ c thời điể m 'nhất đị nh' sẽxuấ t hiệ n tình trạng deadlock, mà chỉnói rằ ng trường hợp xấ u, hệthống 'có thể ' rơi vào tình trạng deadlock 6.8.4 Ví dụchuyể n từtrạng thái ổn đị nh sang không ổn đị nh Nế u nhưtrạng thái hiệ n thời hệthống ổn đị nh điề u khơng có nghĩ a tấtcảcác trạng thái sau đề u ổn đị nh Cơchếcấp phát cầ n phải phân tích yêu cầ u trước cấ p phát tài nguyên Giảsử hệthống ởtrạ ng thái 3, rõ ràng trạng thái ổn đị nh Người dùng thứ3 yêu cầ u tài nguyên bổsung Nế u nhưthoảmãn u cầ u hệthống chuyển sang trạ ng thái Dễthấ y trạng thái trạ ng thái không ổn đị nh Trạng thái Sốthiế t bịđang cấ p Sốthiế t bịlớn nhấ t có thểcầ n Người dùng 1 Người dùng Người dùng Dựtrữcòn lại Trạng thái Sốthiế t bịđang cấ p Sốthiế t bịlớn nhấ t có thểcầ n Người dùng 1 Người dùng Người dùng Dựtrữcòn lại Tất nhiên trạ ng thái khơng thiế t dẫn tới tình trạ ng deadlock Tuy nhiên hệ thống chuyể n từtrạng thái (ổn đị nh) sang trạng thái (không ổn đị nh) 6.8.5 Phân phốitài nguyên theo thuật toán banker Chúng ta sẽxem xét sựphân phối tài nguyên theo Dijkstra thực thếnào Các điề u kiện 'loạ i trừnhau', 'chờtài nguyên bổsung' 'không phân chia lạ i' có thểxả y Các process có thểđược độc quyề n sửdụng tài nguyên cấ p cho Các process quyề n yêu cầ u chờtài nguyên bổsung vẫ n giữcác tài nguyên cấp, ngồi tài ngun khơng bịlấ y khỏiprocess Người dùng khơng đặtra cho hệthống tốn q phức tạp tạimỗithời điểm chỉyêu cầ u tài nguyên Hệthống hoặ c thoảmãn hoặ c từchối yêu cầ u Nế u yêu cầ u bịtừ chối user giữcác tài nguyên cấ p chờtrong mộtkhoả ng thờigian (hữu hạn) đế n cấp Hệthống chỉthoảmãn yêu cầ u mà sau trạng thái hệthống vẫ n ổn đị nh Còn yêu cầ u có thểdẫ n hệthống tới trạ ng thái khơng ổn đị nh bịhỗn khoả ng thời gian cuối sẽđược thoảmãn Bởi , hệthống ởtrạ ng thái ổn đị nh, tấtcảcác yêu cầ u sẽđược thoảmãn tấ t cảuser có thểkế t thúc cơng việ c 6.8.6 Những nhược điể m thuật toán banker Thuậttoán banker có nhiề u ưu điể m cho phép cấp phát tài nguyên, tránh tình trạ ng deadlock Nó cho phép tiế p tục thực hiệ n process mà trường hợp dùng biệ n pháp ngă n chặ n chúng bịdừng Nhưng thuậ t tốn banker vẫ n có nhược điểm mà nhà thiếtkếhệthống có thểphả i lựa chọn cách khác đểgiả i quyế t vấn đềdeadlock 1/ Thuật toán banker xuất phát từgiảthiế t sốtài nguyên cốđị nh Nhưng tài ngun khơng thểlàm việ c (ví dụdừng lạ i đểbả o dưỡng) khơng thểcho rằ ng sốlượng tài nguyên cốđị nh 2/ Thuậ t tốn địi hỏi sốngười dùng khơng đổi u cầu khơng thực tế,vì hệđa chương trình, sốlượng người dùng ln thay đổi 3/ Thuật tốn đòi hỏi bộphậ n phân phối tài nguyên phải đả m bả o thoảmãn tấ t yêu cầ u sau khoả ng thời gian hữu hạ n Tuy nhiên thực tếngười ta cần sốcụthểhơn nhiề u 4/ Cũng nhưthế , thuậ t toán đòi hỏi người dùng phả i trảlại tài nguyên cấp, sau mộtkhoảng thời gian đó- thực tếcũng cầ n chỉsốcụthể 5/ Thuậ t toán yêu cầ u người dùng phảibáo trước sốlượng lớn nhấ t tài nguyên cầ n Nhưng sựphân phối tài nguyên ngày phả i linh động, khó đánh giá yêu cầ u lớn nhấ t Vì máy tính ngày thân thiện với người dùng nên sẽngày nhiề u người dùng hình dung xác vềsốtài ngun lớn nhấ t mà sẽcầ n, thay vào cầ n tài nguyên người dùng yêu cầu 6.9 Phát h iện d eadl ock Phát hiệ n deadlock- xác đị nh sựkiện xuấ t hiệ n trạ ng thái deadlock, xác đị nh trình tài nguyên nằ m tình trạ ng deadlock Các thuậ t toán xác đị nh deadlock thường áp dụng hệthống có xuấ t ba điều kiệ n đầ u tiên sốcác điề u kiện làm xuấ t deadlock Và sau xác đị nh xem có tồn tạ i trạ ng thái 'chờvịng' hay khơng Tấtnhiên sửdụng thuậ t tốn phát deadlock phả i trảgiá, chi phí vềthờigian máy Và lạ i gặ p vấ n đềphả i xác đị nh giả i pháp trung hồ: chi phí thực hiệ n thuậ t tốn phát hiệ n deadlock có tiế t kiệm hẳn so với dùng biện pháp cô lậ p, loạibỏdeadlock hay không 6.9.1 Graph phân bốtài nguyên Trong thuật toán phát hiệ n deadlock, thường áp dụng cách biể u diễn phân bố tài nguyên dạng đồthịcó hướng Các hình vng biể u diễn process, cịn hình trịn lớn biể u diễ n lớp tài nguyên Các vòng tròn nhỏbiể u diễ n sốlượng tài nguyên lớp R1 (a) P1 R4 R2 (b) P2 (d) R3 (c) P3 P5 P6 R5 P4 H×nh 6.3 Ví dụtrong vịng trịn lớn R1 có vịng nhỏtức hệthống có tài ngun thuộc lớp R1 Trên h.6.3 biể u diễ n quan hệtrên đồthịgiữa process tài nguyên Trong hình 6.3(a) - process P1 yêu cầ u tài nguyên lớp R1 Mũi tên từP1 đế n vịng trịn lớn có nghĩ a rằ ng hiệ n thời yêu cầu process xem xét Hình 6.3 (b) thểhiệ n process P2 cấp tài nguyên lớp R2, ởđây mũi tên từ vòng tròn nhỏnằm vòng tròn lớn R2 đến process P2 Trên hình.6.3 (c) biể u diễn tình ởmột ý nghĩ a gầ n với tình trạ ng deadlock: process P3 yêu câu tài nguyên lớp R3 cấ p cho process P4 Hình 6.3(d) biể u diễn tình trạ ng deadlock: process P5 yêu cầ u tài nguyên lớp R4, tấ t cảtài nguyên lớp cấ p cho process p6, ngược lạ i process P6 yêu cầ u tài nguyên lớp R5- cấ p cho P5- tình trạng chờvịng tình trạng deadlock hay gặp Đồthịphân bốvà yêu cầ u cấp phát tài ngun ln thay đổi q trình process u cầ u tài nguyên, nhận tài nguyên sau trảlạ i cho HĐH 6.9.2 Sửdụng đồthịphân bốtài nguyên Cơchếphát hiệ n deadlock- xác đị nh xem có xuấ t hiệ n tình trạ ng deadlock hay khơng Một phương pháp phát hiệ n rút gọn đồthịphân bốtài nguyên (reduction of a resource allocation graph), cho phép xác đị nh process có thểkế t thúc process có mặ t tình deadlock Nế u nhưyêu cầ u tài nguyên process có thểthoảmãn nói graph có thểrút gọn đốivới process Sựrút gọn tương đương với biểu diễ n graph ng mà có process kế t thúc cơng việ c trảlạicác tài nguyên cho hệthống Sựrút gọn graph process thểhiệ n bằ ng việ c ngắ t bỏcác cung tới proces đ ó từcác tài nguyên (tức tài nguyên cấp cho process) cung từprocess đế n tài nguyên (tức yêu cầ u cấp phát hiệ n thời process) Nếu nhưgraph có thểrút gọn thành tấ t cảprocess lậ p có nghĩ a khơng có tình trạng deadlock, cịn khơng thểlàm process khơng rút gọn process nằ m trạng thái deadlock Trên hình 6.4 dãy thao tác rút gọn graph, kếtquảcho ta thấ y trường hợp khơng xuấ t hiệ n trạ ng thái deadlock Chúng ta cầ n đểý rằ ng thứtựthực thao tác không quan trọng Dù ta rút gọn theo thứtựnào kết quảcuối Hình 6.4 R6 R6 P8 P8 giảm P9 P7 P7 R7 R7 P9 P9 giảm trªn P7 R6 R6 P8 P7 P8 P7 R7 R7 P9 giảm P8 P9 6.10 Kh ụi phc sau dead lock Hệthống nằ m trạng thái deadlock cân khỏi tình trnạg bằ ng cách loạibỏcác điề u kiện tồn tạ i deadlock Thơng thường mộtsốprocess sẽmấtmột phầ n hay toàn bộkết quảđã thực hiệ n Nhưng giá nhỏhơn nhiề u hệthống bịtreo hoàn toàn Mức độphức tạp việ c khôi phục hệthống phụ thuộc nhiề u yếu tố: Ngay từđầ u việc xác đị nh tình trạ ng deadlock không phả i rõ ràng Trong nhiều hệthống khơng có cơng cụđủhiệ u quảđểdừng process thời hạ n khơng xác đị nh, đưa khỏi hệthống lạ i khởi động sau Trong thực tếthì có sốprocess phảilàm việc liên tục không cho phép dừng lạivà khởi động Ngay cảkhi hệthống có cơng cụhữu hiệ u đểdừng/khởi động process việc sửdụng chúng địi hỏichi phí đáng kểvềthờigian máy, Khơi phục tình trạ ng deadlock ởquy mơ nhỏ(có process nằm tình trạng đó) thường địi hỏi cơng sức có nhiề u process nằ m tình trạ ng deadlock có thểđịi hỏimột chi phí lớn Trong hệthống hiệ n việ c khôi phục thường thực hiệ n bằ ng cách loại sốprocess đểcó thểsửdụng tài nguyên chúng Kế t quảcủa process bịhuỷthường bịmấ t nhờđó process cịn lạ i có thểtiếp tục, kết thúc cơng việ c Thuậtngữ'khơi phục' khơng xác lắm, ý nghĩ a khơi phục khảnăng làm việ c bình thường hệthống Việ c lựa chọn process đểloạ i khỏihệthống cần phả i theo chỉtiêu đó, ví dụmức độưu tiên process Nhưng có sốkhó khăn Process nằ m tình trạ ng deadlock có thểkhơng cịn giá trịpriority Priority proces có thểkhơng ngun nhân ví dụpriority process có thểtă ng lên theo thời gian phảichờ Có lẽphương pháp khôi phục tốt nhấ t cơchếtạ m dừng/khởi động process (suspend/activate) Cơchếnày cho phép chuyể n process vào trạng thái chờ, sau sẽđược khởi động, kết quảlàm việ c vẫ n giữnguyên khơng bị Deadlock có thểdẫn tới hậ u quảlớn hệthống thời gian thực Các hệthống phả i hoạt động liên tục khơng cho phép xả y tình trạ ng deadlock Nhưng khơng thểđả m bảo tuyệt đốilà khơng xả y – vấ n đềcầ n giả i ... chờ Chương trình 4.6 Program Version4 var flag1, flag2: boonlean; procedure process1 begin while true begin flag1 := true; while flag2 = true begin flag1 := false; Delay(random); flag1 := true;... TestAndSet var disable1, disable 2: boonlean; active: boolean; procedure process1 var disable1: boonlean; begin while true begin disable1 := true; while disable1 = true testAndSet(disable1, active); {critical... tài nguyên lớp R1 (a) P1 R4 R2 (b) P2 (d) R3 (c) P3 P5 P6 R5 P4 H×nh 6.3 Ví dụtrong vịng trịn lớn R1 có vịng nhỏtức hệthống có tài nguyên thuộc lớp R1 Trên h.6.3 biể u diễ n quan hệtrên đồthịgiữa