1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng chương trình minh hoạ giải thuật banker để phát hiện và giải quyết quá trình deadlock

22 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xõy dựng ch°Ăng trỡnh minh ho¿ giÁi thu¿t Banker đà phỏt hiện và giÁi quy¿t quỏ trỡnh Deadlock
Tác giả Thỏi Khỏnh Ngọc, Huỳnh Trần Nh° Quỳnh, Ph°ớc Cụng Nguyờn, Nguyễn Chớ Khang, Lờ Anh Kha
Người hướng dẫn ThS. Trần Đức Tõm
Trường học Tr¯àNG Đắi Hàc S¯ PHắM THÀNH PHà Hõ CHÍ MINH
Chuyên ngành Hị ĐIÀU HÀNH
Thể loại TIÂU LUắN
Năm xuất bản 2022
Thành phố TP Hõ CHÍ MINH
Định dạng
Số trang 22
Dung lượng 2,46 MB

Nội dung

ấ- Giải thuật này đặc bi t không phù hệ ợp với các h phân chia thệ ời gian.. Là m t dộ ạng độ °u tiên đặc bi t vệ ới độ °u tiên �㕃Āā�㕐�㕒āāÿ�㕃ÿ = th i gian cònờThuật toán Shortest Job Fir

Trang 2

Bà GIÁO DĀC VÀ ĐÀO T¾O

KHOA CÔNG NGHÞ THÔNG TIN

~~~~~~*~~~~~~

Trang 3

MĀC L C Ā

Câu 1: Tìm hiểu, phân tích và đánh giá các thuật toán l p lậ ịch sử ụ d ng CPU 1

1.1 First Come First Serverd (FCFS) 1–

1.2 Shortest Job First (SJF) 3

1.3 Shortest Remaining Time SRT 5–

1.4 Round Robin (RR) 7

1.5 Đánh giá các thuật toán 8

Câu 2: Xây dựng ch°¡ng trình minh ho gi i thuạ ả ật Banker để phát hi n và gi i ệ ả quyết quá trình Deadlock 11

2.1 Deadlock 11

2.1.1 Deadlock là gì? 11

2.1.2 Khi có deadlock xảy ra, để phục hồi deadlock: 11

2.1.3 Y u t ch m d t quá trình b deadlock 11ế ố ấ ứ ị 2.1.4 Quá trình ch m d t deadlock 12ấ ứ 2.2 Thu t toán Banker (thuậ ật toán Nhà Băng) 12

2.2.1 Thu t toán Banker là gì? 12ậ 2.2.2 Tr ng thái an toàn 13ạ 2.2.3 Thu t toán Banker hoậ ạt động nh° thế nào? 13

2.2.4 Các b°ớc để giải thuật Banker 14

2.3 Ch°¡ng trình 15

2.3.1 Code 15

2.3.2 Hình ảnh trong ch°¡ng trình 15

Trang 4

NHIÞM VĀ THÀNH VIÊN NHÓM

Mức

đá hoàn thành

1 Thái Khánh Ngọc Nội dung ph n 1.1, 2.1.1, 2.2.2, trình ầ

bày ph n báo cáo b n Word ầ ả 98%

2 Huỳnh Trần Nh° Quỳnh Nội dung ph n 1.2, 2.1.2, 2.2.3, trình ầ

bày ph n báo cáo b n Word ầ ả 98%

3 Ph°ớc Công Nguyên Nội dung ph n 1.3, 2.1.3, 2.2.4, trình ầ

bày ph n báo cáo b n Word ầ ả 98%

4 Nguyễn Chí Khang Nội dung ph n 1.4, 2.1.4, 2.3.1 ầ 98%

5 Lê Anh Kha Nội dung ph n 1.5, 2.2.1, 2.3.2 ầ 98%

B ảng phân công nhi m v ệ ụ

Trang 5

DANH M C CÁC HÌNH NH Ā À

Hình 2.1 Màn hình chính ch°¡ng trình 15Hình 2.2 Nhập d li u 16ữ ệHình 2.3 Bảng Need 16Hình 2.4 Kết qu 16ả

Trang 6

NàI DUNG Câu 1: Tìm hi u, Ã phân tích và đánh giá các thu¿t toán l p l ch ¿ ß

sử d ng CPU ā

1.1 First Come First Serverd (FCFS)

Giải thu t ậ FCFS (First Come First Served) là gi i thuả ật đ°ợc th c hi n theo ự ệnguyên tắc <đến tr°ớc làm tr°ớc=, tức là công vi c nào ệ được gửi đến b x lý ộ ử trước thì

sẽ được xử lý trước và nh ng công viữ ệc đến sau s phẽ ải đợi cho đến khi công vi c hi n ệ ệtại hoàn thành thì mới được xử lý

Giải thu t ậ FCFS ứng d ng chụ ế độ non-preemptive Chế độ này cho phép tiến

trình giữ CPU cho đến khi nó trả CPU thông qua phương thức ng t theo yêu c u ắ ầ

Trang 7

- Là thuật toán đ¡n giản nh t ấ

- Giải thuật này đặc bi t không phù hệ ợp với các h phân chia thệ ời gian

FCFS không công b ng vằ ới các tiến trình có th i gian thực hiện CPU ngắn Các ờtiến trình này ph i chả ờ trong một thời gian dài (so với thời gian mà nó c n ph c v ) thì ầ ụ ụmới đ°ợc sử dụng CPU Điều này đồng nghĩa với việc FCFS <°u tiên= các tiến trình thuộc dạng CPU bound

FCFS th°ờng đ°ợc sử ụ d ng trong các h th ng bó (batch system) ệ ố

Biểu đồ Gantt cho quá trình lập lịch:

Thời gian chờ cho các ti n trình là: ế �㕃1 ch 0 ms, ờ �㕃2 ch 24 ms, ờ �㕃3 ch 27 ms ờThời gian chờ trung bình là:

Trang 8

3

0 + 24+27

1.2 Shortest Job First (SJF)

Shortest Job First (SJF) là m t k ho ch l p l ch ch n quá trình ch và th i ộ ế ạ ậ ị ọ ờ ờgian th c hi n nh nhự ệ ỏ ất để ực hiệ th n tiếp

Là m t dộ ạng độ °u tiên đặc bi t vệ ới độ °u tiên �㕃Āā�㕐�㕒āāÿ(�㕃ÿ) = th i gian cònờThuật toán Shortest Job First (SJF) có th ể đ°ợc cài đặt độc quy n hoề ặc không độc quy n ềMỗi tiến trình có 1 độ °u tiên, CPU sẽ đ°ợc điều phối cho tiến trình có độ °u tiên cao nhất: độc quyền và không độc quy n ề

SJF cũng là một dạng của b l p l ch theo mộ ậ ị ức độ °u tiên, cụ th mể ức độ °u tiên

Trang 9

Thời gian chờ trung bình:

- Cài đặt thuật toán phức tạp, tốn nhiều xữ lý cho quá trình quản lý

- Mặc dù SJF là tối °u nh°ng nó không thể đ°ợc cài đặ ạ ấp địt t i c nh thời CPU ng n vì không có cách nắ ào để ế bi t chi u dài chu k CPU ti p theo ề ỳ ế

- Giải thu t SJF có thậ ể tr°ng dụng hoặc không tr°ng dụng CPU, d n tẫ ới giải thu t này có nhi u d b n khác nhau và s tậ ề ị ả ẽ ối °u hay không tối °u phụ thuộc vào tr°ng dụng CPU

Trang 10

5

1.3 Shortest Remaining Time SRT

Giải thu t ậ SRT hay SRTF - Shortest Remaining Time First (Thời gian còn l i ạngắn nhất tr°ớc) Gi i thu t này là phiên bả ậ ản °u tiên điÁu ph, ối không độc quy Án c a ủlập lịch SJF

Nguyên tắc:

- Ban đầu, nếu có 2 hay nhiều h¡n tiến trình yêu cầu chạy, thì giải thuật

sẽ °u tiên tiến trình có th i gian th c thi (th i gian x lí ho c burst time) nh ờ ự ờ ử ặ ỏ h¡n chạy tr°ớc

- Các ti n trình có th i gian th c thi b ng nhau thì tiế ờ ự ằ ến trình nào đến tr°ớc

sẽ đ°ợc cấp phát CPU tr°ớc

- Khi m t ti n trình m i xu t hiộ ế ớ ấ ện trong hàng đợi, hệ điều hành so sánh thời gian còn l i c a tiạ ủ ến trình đang chạy với thời gian còn l i c a ti n trình mạ ủ ế ới xuất hi n N u ti n trình mệ ế ế ới xu t hi n có thấ ệ ời gian còn l i ngạ ắn h¡n, hệ điều hành s thu h i CPU c a tiẽ ồ ủ ến trình đang chạy và phân ph i cho ti n trình m i ố ế ớ(nguyên tắc không độc quy n) ề

- Chỉ s thố ời gian chờ chỉ đ°ợc xét tới trong l n chầ ạy đầu tiên và l n so ầsánh đầu tiên, sau khi tiến trình nào đã thực thi cho dù ch°a xong thì chỉ số thời gian ch c a ti n trình ờ ủ ế đó không còn đ°ợc quan tâm nữa, t°¡ng tự các ti n trình ếnếu đã đ°ợc so sánh thời gian thực thi trong một l°ợt nào đó rồi thì chỉ số thời gian chờ cũng không còn giá trị ậ ị l p l ch n a ữ

- Tiến trình đ°ợc °u tiên đ°a vào thực hiện sẽ đ°ợc chạy đến khi nó kết thúc

GiÁi thu t ¿ điÁu ph ái vßi đá °u tiên: có th theo nguyên tể ắc độc quy n hay ềkhông độc quyền

- Theo nguyên tắc không độc quy n, thu t toán s thu h i CPU t ti n ề ậ ẽ ồ ừ ếtrình hiện hành để ấ c p phát cho ti n trình m i nế ớ ếu độ °u tiên của ti n trình này ếcao h¡n tiến trình hiện hành

- Theo nguyên tắc độc quy n, s ch ề ẽ ỉ đ¡n giản chèn ti n trình m i vào danh ế ớsách s n sàng và ti n trình hi n hành v n ti p t c x lý h t th i gian dành cho nó ẵ ế ệ ẫ ế ụ ử ế ờ

¯u điÃm:

Trang 11

- Thuật toán này nh m tằ ối °u hóa, giảm thiểu thời gian đợi trung bình của các ti n trình ế

- Thời gian chờ đợi, t n t i trong h th ng c a mồ ạ ệ ố ủ ỗi tiến trình đều ng n ắ

- Có th i gian quay vòng tờ ốt h¡n SJF

- Tránh tr°ờng h p các ti n trình có th i gian x ợ ế ờ ử lí dài độc chiếm CPU

- Thuật toán tối °u nhất

Trang 12

sẽ lấy tiếp cận kế để đ°a vào xử lý, với mức l ng t °ợ ử nh° nhau cho t t c các ti n trình.ấ ả ếNếu g i n là s ti n trình có trong danh sách sọ ố ế ẵn sàng, l°ợng t th i gian là q, ử ờnh° vậy mỗi tiến trình sẽ có một khoảng thời gian 1�㕛 để sử dụng CPU.

Về mặt thời gian, với RR, thời gian hoàn toàn bình th°ờng sẽ cao h¡n SJF, bù lại, ng d ng tính toán s tứ ụ ẽ ốt h¡n

Đố ới v i Unknown type, ta sẽ xem xét ví dụ sau đây

Trang 13

Để thuận tiện cho việc tính toán, chúng ta sử d ng giản đồ Gantt:ụ

1.5 Đánh giá các thu¿t toán

Trang 14

- SJF có 2 loại ph°¡ng pháp: SJF non-preemptive và SJF pre-emptive

- Trong l p k ho ch non-preemptive, m t khi chu kậ ế ạ ộ ỳ CPU đ°ợc phân b ổ

để ử x lý, quá trình s gi ẽ ữ nó cho đến khi nó đạt đến tr ng thái ch ho c ch m d t ạ ờ ặ ấ ứ

- Trong l p k ho ch pre-emptive, các công viậ ế ạ ệc đ°ợc đ°a vào hàng đợi s n ẵsàng khi chúng đến

- SJF th°ờng đ°ợc sử dụng để lập kế ho ch dài h n, nó làm gi m th i gian ạ ạ ả ờchờ đợi trung bình qua thu t toán FIFO (First in First Out) ậ

- SJF không th ể đ°ợc triển khai để l p k hoậ ế ạch CPU trong ng n h n b i vì ắ ạ ởkhông có ph°¡ng pháp cụ thể nào để dự đoán độ dài của CPU burst sắp đến

SRT

T°¡ng tự nh° SJF nh°ng trong thuật toán này, độ °u tiên thực hi n các ti n trình ệ ếdựa vào th i gian c n thiờ ầ ết để ự th c hi n n t ti n trình(b ng tệ ố ế ằ ổng th i gian trờ ừ đi thời gian đã thực hiện) Nh° vậy, trong thu t toán này c n phậ ầ ải th°ờng xuyên c p nh t thông ậ ậtin v giề ời gian đã thực hiện của tiến trình Đồng thời, chế độ phân b l i giổ ạ ờ CPU cũng phải đ°ợc áp dụng n u không s làm mế ẽ ất tình °u việc c a thuủ ật toán

¯u điểm:

- Thời gian chờ đợi, tồn tại trong hệ thống của mỗi tiến trình đều ngắn

- Thuật toán tối °u nhất

Nh°ợc điểm:

- Việc cài đặt thuật toán khá phức tạp

- Cần quản lý chặt chẽ việc điều phối các tiến trình

Trang 15

- Quản lý thời gian đến của mỗi tiến trình

RR

- Round Robin là thu t toán pre-emptive ậ

- CPU đ°ợc chuyển sang quá trình tiếp theo sau khoảng thời gian cố định, đ°ợc gọi là lát c t th i gian ắ ờ

- Quá trình preemted đ°ợc thêm vào cuối hàng đợi

- Cho phép h ệ điều hành s d ng ử ụ ph°¡ng pháp chuyển đổi ng cữ ảnh để l°u trạng thái c a các quy trìủ nh đ°ợc ngăn chặn tr°ớc

- ¯u điểm l n nh t cớ ấ ủa ph°¡ng pháp lập lịch RR là n u b n bi t t ng s quy trình ế ạ ế ổ ốtrên hàng đợi chạy, thì bạn cũng có thể ả nh th i gian phản hồ gi đị ờ i tr°ờng h p xấu nhất ợcho cùng một quy trình

Trang 16

mà ti n trình cế ần, đ°ợc gi b i m t s ti n trình ữ ở ộ ố ế khác cũng đang chờ ộ ố m t s tài nguyên khác đ°ợc giải phóng Nếu không đ°ợc xử lí, giải quyết sẽ dẫn đến hiện t°ợng các tiến trình ch nhau và không m t tiờ ộ ến trình nào đ°ợc th c hi n, ự ệ đi vào vòng lặp ch tài ờnguyên mãi mãi

- Khi s d ng gi i thu t phát hiử ụ ả ậ ện deadlock xác định rằng deadlock đang tồn tại trong h thệ ống, có nhiều ph°¡ng pháp có thể ả gi i quy t deadlock ế

- Có nh ng cách ph c h i deadlock là ữ ụ ồ báo ng°ờ ậi v n hành để ng°ờ ậi v n hành giải quy t deadlock b ng th công và cho h thế ằ ủ ệ ống t khôi ph c deadlock ự ụ

Có 2 cách để thoát khỏi deadlock :

+ Chấm d t m t hay nhi u quá trình ứ ộ ề đang tham gia vào deadlock để phá Circular Wait (phá v vi c t n tỡ ệ ồ ại chu trình trong đồ th c p phát tài ị ấnguyên)

+ Lấy l i, tạ r°ng dụng (Preempt) một vài tài nguyên đang bị nắm gi b i quá ữ ởtrình này c p phát cho quá trình ấ khác cho đến khi không còn deadlock nữa

2.1.3 Y¿u t chấm d t quá trình b deadlock ứ ị

Rất nhi u các tác nhân khác nhau có th kề ể ể đến nh°:

- Độ °u tiên của ti n trình ế

- Thời gian đã thực thi của tiến trình và thời gian còn lại

- Loại tài nguyên mà tiến trình đã sử ụ d ng

- Tài nguyên mà tiến trình c n thêm hoàn t t công vi c ầ để ấ ệ

Trang 17

- Huỷ bß t ng ti n trình mừ ¿ át cho đ¿n khi h th ng thoát deadlock ß á : Ph°¡ng pháp này sẽ có m t overhead không nhỏ, vì sau mỗi lần huỷ một tiến ộtrình, chúng ta s ph i ch y l i thuẽ ả ạ ạ ật toán để xác định xem h th ng còn deadlock ệ ốkhông

Đối v i cách 1:ớ Vi c hu b m t ti n trình không ph i chuyệ ỷ ỏ ộ ế ả ện đ¡n giản N u m t ế ộtiến trình đang làm dở một công việc nào đó, chẳng hạn nh° upload file Nếu hu ti n ỷ ếtrình thì file chắc chắn s b lẽ ị ỗi T°¡ng tự đố ới v i các công vi c khác ệ

Đối v i cách 2:ớ Chúng ta cần xác định xem ti n trình nào b ế ị deadlocked nên đ°ợc terminated Ta c n ch n ti n trình sao cho m c hao phí (minimum cost) là nh nh t ầ ọ ế ứ ỏ ấTh°ờng thì hệ thống sẽ dựa vào các yếu tố ở câu trên để chấm dứt m t tiến trình ộSau khi đã chấm dứt tiến trình, ta sẽ lấy lại tài nguyên từ tiến trình đó, cấp phát cho tiến trình khác cho đến khi không còn deadlock nữa

Ta cũng cần quan tâm đến Starvation (đói tài nguyên), tức là không có tiến trình

sẽ luôn luôn bị l y l i tài nguyên m i khi deadlock x y ra ấ ạ ỗ ả

2.2 Thu ¿t toán Banker (thu ¿t toán Nhà Băng)

Giải thuật đồ thị cấp phát tài nguyên không thể áp dụng tới hệ thống cấp phát tài nguyên với nhiều thể hiện của mỗi loại tài nguyên Giải thuật tránh deadlock mà chúng

ta mô tả tiếp theo có thể áp dụng tới một hệ thống nh°ng ít hiệu quả h¡n c¡ chế đồ thị cấp phát tài nguyên Giải thuật này th°ờng đ°ợc gọi là giải thuật của Banker

Trang 18

Tr¿ng thái an toàn là tr ng thái mà s ạ ố l°ợng tài nguyên còn lại (Available) của

hệ thống có thể đáp ứng đ°ợ ấ ảc t t c các process và t o ra mạ ột chu i an toàn H thỗ ệ ống

có th c p phát các tài nguyên t i m i quá trình trong m t vài th t và v n tránh ể ấ ớ ỗ ộ ứ ự ẫdeadlock Do đó, trạng thái deadlock là tr ng thái không an toàn ạ

Chußi an toàn là m t th t th c hi n vi c cung c p tài nguyên cho các process, ộ ứ ự ự ệ ệ ấvới giả định r ng các process s tr l i ằ ẽ ả ạ tài nguyên mà nó đang giữ sau khi th c hi n ự ệxong

Khi m t ti n trình vào h th ng, tiộ ế ệ ố ến trình đó cần phải đ°a ra số l°ợng th c th ự ểtối đa mà nó cần Con s ố này không đ°ợc v°ợt quá s tài nguyên hi n có trong h th ng ố ệ ệ ốKhi m t ti n trình yêu c u tài nguyên, h th ng s xem xét: ộ ế ầ ệ ố ẽ Liệu sau khi cấp tài nguyên thì h th ng ệ ố có còn đang ở trạng thái an toàn hay không? N u có thì h th ng s ế ệ ố ẽcấp, ngược lại hệ thống sẽ không cấp tài nguyên cho process Lúc đó process phải chờ

đến khi các process khác giải phóng đủ số lượng tài nguyên cần thiết

Cấu trúc d li u cho gi i thu t Banker: ữ ệ ả ậ

- Gọi m là s lo i tài nguyên ố ạ đang xét trong gi i thu t Banker ả ậ

- Gọi n là s tiố ến trình đang xét trong giải thu t Banker ậ

- Available: m t vector có chi u dài m hi n th sộ ề ể ị ố l°ợng tài nguyên sẳn dùng c a m i lo i N u ủ ỗ ạ ế �㕨ĄÿþāÿĀāă ÿ[ ] = Ā, có k th hi n c a lo i tài nguyên Rj ể ệ ủ ạsẳn dùng

- Max: m t ma tr n ộ ậ Ā × ÿ định nghĩa số l°ợng tối đa yêu cầu của mỗi

quá trình N u ế ýÿ�㖙[ þ , ÿ] = Ā, thì quá trình �㕃ÿ có th yêu c u nhi u nh t ể ầ ề ấ �㕘 ể th hiện của loại tài nguyên �㕅Ā

Trang 19

- Allocation: m t ma tr n ộ ậ Ā × ÿ định nghĩa số l°ợng tài nguyên của mỗi

loại hiện đ°ợc cấp tới mỗi quá trình N u ế �㕨āāĀāÿĂþĀÿ[ þ, ÿ] = Ā, thì quá trình �㕃ÿ hiện đ°ợc cấp �㕘 ể hiện của loại tài nguyên �㕅 th Ā

- Need: m t ma tr n ộ ậ Ā × ÿ ể hi n th yêu c u tài nguyên còn l i c a m i ị ầ ạ ủ ỗ

quá trình N u ế þăăĂ[þ, ÿ] = Ā, thì quá trình �㕃ÿ có th c n thêm ể ầ �㕘 ể ệ ủ th hi n c a loại tài nguyên �㕅Āđể hoàn thành tác v c a nó ụ ủ

Chú ý rằng: þăăĂ[þ, ÿ] = ýÿ�㖙[þ, ÿ] – �㕨āāĀāÿĂþĀÿ [þ, ÿ].

2.2.4 Các bước để giải thuật Banker

B°ßc 1: G i ọ Work và Finish là 2 vector có độ dài là m và n

B°ßc 4: �㕭þÿþāý[þ] = ĂĀăă, þ = Ā, ā, & , ÿ thì h th ng tr ng thái an toàn ệ ố ở ạ

Resource – Request Algorithm:

Đặt �㕹ăÿăăāĂþ là mảng yêu cầu cho tiến trình �㕷þ �㕹ăÿăăāĂþ[ÿ] = Ā có nghĩa là tiến trình �㕷þ mu n ố k tr°ờng hợp ki u c a ể ủ �㕹ÿ Khi một yêu c u v ầ ề tài nguyên đ°ợc th c ựhiện bởi ti n trình c a ế ủ �㕷þ, thì các hành động sau đ°ợc th c hiự ện:

B°ßc 1: �㕰Ą �㕹ăÿăăāĂþ≤ þăăĂ

Đến B°ßc 2

Nếu không, đ°a ra một điều ki n l i, vì ti n ệ ỗ ế trình đã v°ợt quá yêu c u tầ ối đa của

Trang 20

15

B°ßc 2: �㕰Ą �㕹ăÿăăāĂþ≤ �㕨ĄÿþāÿĀāă

Đến B°ßc 3.

Nếu không, �㕷þ phải đợi vì tài nguyên không có s n ẵ

B°ßc 3: Yêu c u h th ng gi vầ ệ ố ả ờ đã phân bổ các tài nguyên đ°ợc yêu cầu để ử x

lý �㕷þ b ng cách sằ ửa đổi trạng thái nh° sau:

�㕨ĄÿþāÿĀāă = �㕨ĄÿþāÿĀāă – �㕹ăÿăăāĂþ

�㕨āāĀāÿĂþĀÿþ= �㕨āāĀāÿĂþĀÿþ + �㕹ăÿăăāĂþ þăăĂþ= þăăĂþ2 �㕹ăÿăăāĂþ

Trang 21

và chuỗi an toàn Ng°ợ ạc l i n u ti n trình không an toan thì s xu t hiế ế ẽ ấ ện <Tien trinh khong an toan=

Hình 2.3 B ng Need

Hình 2.4 K t quế

Trang 22

6 Introduction of Deadlock in Operating System

https://www.geeksforgeeks.org/introduction-of-deadlock-in-operating-system/

Ngày đăng: 02/08/2024, 16:20

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w