Giới thiệu chung về bài toán Deadlock Trong môi trường tin học và các hệ thống phức tạp, deadlock là một vấn đề bất ôn định có thê xảy ra khi một tập hợp các tiến trình hoặc luồng chờ đợ
Trang 1TRUONG DAI HOC CONG NGHE THONG TIN VA
TRUYEN THONG VIET - HAN KHOA KHOA HQC MAY TINH
VU
ĐỎ ÁN MÔN LẬP TRÌNH HỆ THÓNG
DE TAI: Deadlock - C program demonstrates Bankers
algorithms for deadlock avoidance
Sinh viên thụchiện : TRẢN HƯNG BÌNH - 21IT265
TRẢN ĐỨC CÔNG - 211T535 PHAM DUY CHANH - 211T532 NGUYEN TRUONG CHI - 21IT062
Giảng viên học phần : TS HOÀNG HỮU ĐỨC
Da nang, thang 10 nim 2023
Trang 2TRUONG DAI HOC CONG NGHE THONG TIN VA
TRUYEN THONG VIET - HAN KHOA KHOA HOC MAY TINH
VU
ĐỎ ÁN MÔN LẬP TRÌNH HỆ THÓNG
DE TAI: Deadlock - C program demonstrates Bankers
algorithms for deadlock avoidance
Sinh viên thụchiện : TRAN HUNG BINH -2I1IT265
TRAN DUC CONG - 211T535 PHẠM DUYCHÁNH -21IT532 NGUYÊN TRƯỜNG CHÍ - 21IT062
Giảng viên học phần: TS HOÀNG HỮU ĐỨC
Đà nẵng, thúng 10 năm 2023
Trang 3NHAN XET
(Giảng viên hướng dẫn)
Giảng viên hướng dẫn (Kí và ghi rõ họ tên)
Trang 4LOI CAM ON
Chúng em xin gửi lời cảm ơn chân thành tới nhà trường đã tận tình chỉ bảo, góp ý và tạo điều
kiện cho em hoàn thành đề tài nghiên cứu Đồ án môn học “Lập trình hệ thống” một cách tốt
nhất Em xin cảm ơn TS Hoàng Hữu Đức đã nhiệt tình hướng dẫn em trong quá trình thực hiện báo cáo đề tài nghiên cứu Trong quá trình thực hiện đề tài nghiên cứu, bán thân chúng
em đã cô găng nỗ lực, tuy nhiên không tránh khỏi sai sót Chúng em mong nhận được sự góp
ý của thầy cô giáo, và từ phía hội đồng đề dé tài nghiên cứu của chúng em được hoàn thiện hơn
Chung em xin chan thành cảm ơn!
Da Nang, thang 10 nim 2023
Trang 5MUC LUC
Contents
Trang 6DANH MUC HINH VE
Trang 7PHAN I: GIOI THIEU TONG QUAN
I TONG QUAN CHON DE TAI
1 Giới thiệu
1.1 Giới thiệu chung về bài toán Deadlock
Trong môi trường tin học và các hệ thống phức tạp, deadlock là một vấn đề bất ôn định có thê xảy ra khi một tập hợp các tiến trình hoặc luồng chờ đợi tài nguyên mà chúng cần đề tiến hành công việc của mình, nhưng không thê hoàn thành công việc do tài nguyên bị khóa bởi các tiến trình khác trong tình trạng tương tự
Deadlock là một tình huống tiềm ân đe dọa tính an toàn và hiệu suất của hệ thống Nếu không được quản lý cân thận, nó có thê dẫn đến sự chậm trễ và ngừng hoạt động của hệ thống, ảnh hưởng đến trải nghiệm của người dùng và có thê gây ra sự cô nghiêm trọng Sự hiểu biết về cách xử lý deadlock và ngăn chặn nó trở thành một phân quan trọng của quản lý hệ thông và phát triển ứng dụng
1.2 Lý do nghiên cứu đề tài Deadlock
Sự nghiên cứu về deadlock là quan trọng vì nó liên quan trực tiếp đến sự ôn định và hiệu suất của hệ thông Khi deadlock xảy ra, nó có thê gây ra những tác động tiêu cực nghiêm trọng như tăng tải máy chủ, làm giảm hiệu suất ứng dụng, và làm giảm trải nghiệm của người dùng Thậm chí trong môi trường quan trọng như hệ thống y tế hoặc tài chính, đeadlock có thể dẫn đến tình huống nguy cơ và thiệt hại đáng kẻ
Do đó, việc nghiên cứu về deadlock không chỉ là sự quan tâm của lập trình viên và quản trị hệ thông mà còn của cả các công ty và tô chức sử dụng hệ thông điện toán
Trang 81.3 Muc tiéu va pham vi dé tai
1.3.1 Mục tiêu đề tài
Mục tiêu chính của đề tài này là tìm hiểu về bai toan deadlock va tập trung vào việc nghiên cứu và thực hiện Bankers Algorithm - một trong các giải pháp phô biến để ngăn chặn deadlock trong hệ thống Đồng thời, chúng ta sẽ xác định và phân tích các tỉnh huống deadlock cụ thé, cung cap ví dụ minh họa và thảo luận về hiệu quả của thuật toán Banker's Algorithm
1.3.2 Phạm vi đề tài
Phạm vi của đề tài bao gồm:
- Định nghĩa và giải thích bài toán deadlock, bao gồm các yêu tố dẫn đến deadlock
- Trình bày Bankers Algorithm, một giải pháp phổ biến để ngăn chặn deadlock
- Cai dat va minh hoa Banker's Algorithm trên một ví dụ cụ thé
- Phan tich hiéu qua cua Banker's Algorithm va cach no giúp ngan chan deadlock trong môi trường thực tế
Trang 9IL CO SO LY THUYET
2 Khái niệm và Tình huống của Deadlock
2.1 Định nghĩa về Deadlock
Deadlock (hoặc khóa cứng) là tình huống trong hệ thống máy tính hoặc môi trường đa nhiém (multi-tasking) khi hai hoặc nhiều tiến trình (process) hoặc luỗng (thread) không thê tiến hành hoặc kết thúc vì chúng đang chờ nhau để giải quyết một tài nguyên hoặc
sự kiện Trong một tỉnh huong deadlock, các tiến trình hoặc luỗng đều cần một tài nguyên mà một tiên trình hoặc luồng khác đang giữ, và đồng thời cả hai cũng không thê thả tài nguyên của mình để cho tiến trình khác sử dụng Do đó, các tiến trình hoặc luồng nay bi mắc kẹt và không thé tiép tục hoạt động, dẫn đến sự chậm trễ hoặc tỉnh trạng đóng băng của hệ thông
2.2 Yếu tô dẫn dén Deadlock
Deadlock xảy ra khi một số yêu tô cơ bản tồn tại trong hệ thống Các yêu tô chính dẫn đến sự xuất hiện của deadlock bao gồm:
® Các tiến trình cần tài nguyên chia sẻ: Deadlock thường xảy ra khi các tiến trình hoặc luỗng cần sử dụng các tài nguyên chia sẻ, chăng hạn như bộ nhớ, tệp, hoặc thiết bị LO Nếu các tài nguyên này không được quản lý cân than, co thé xảy ra deadlock
e Khóa va khéng tha (Hold and Wait): Cac tién trình đã nắm giữ một tài nguyên
và đang chờ tài nguyên khác mà họ cần Điều này có nghĩa rằng một tiền trình
có thể năm giữ một tài nguyên trong khi đồng thời cô gắng yêu cầu tài nguyên khác, và đây là một trong những yếu tô dẫn đến deadlock
e Không chia sẻ (No Preemption): Một khi một tiến trình đã nắm giữ một tài nguyên, nó không thê bị loại bỏ hoặc chuyên nhượng tài nguyên đó cho tiến trình khác Điều này tao ra một tình huống trong đó các tiến trình có thể cô gắng năm giữ nhiều tài nguyên và không thể bị đánh cắp tài nguyên của họ để giải quyét deadlock
Trang 10e Xây dựng chu trình (Circular Wait): Các tiến trình hoặc luồng tạo ra một chu
trình khóa khi mỗi tiến trình cần tài nguyên mà tiền trình khác đang nắm giữ Ví
dụ, tiền trình A cần tài nguyên mà tiến trình B đang nắm giữ, tiến trình B cần tài nguyên của tiến trình C và tiến trình C cần tài nguyên của tiền trình A
e Thiếu xác định (Lack of Information): Hệ thống không có thông tin đầy đủ về tai nguyên mà các tiến trình đang sử dụng hoặc chờ đợi, làm cho việc quản lý tài nguyên và dự đoán sự xuất hiện của deadlock trở nên khó khăn
2.3 Cac vi du vé tinh huéng Deadlock
Trang 11III BANKER’ S ALGORITHM: GIAI PHAP CHO DEADLOCK
3.1 Gidi thigu vé Banker's Algorithm
Khái niệm: Giải thuật của ngân hàng (Bankers Algorithm) là một thuật toán được sử dụng trong hệ thống máy tính đề quản lý tài nguyên hệ thống, như bộ nhớ và các tài nguyên khác,
đề đảm bảo rằng không có tình trạng xung đột (deadlock) xảy ra trong quá trình thực thi các tiến trình
Bankers Algorithm sử dụng một số ma trận, bao gồm ma trận tài nguyên còn lại và ma trận yêu cầu của các tiến trình đề thực hiện tính toán Điều quan trọng là nó đảm bảo rằng chỉ có thê cấp phát tài nguyên khi tài nguyên đó có sẵn và việc cấp phát không gây ra tình trạng xung đội
3.2 Cách hoạt động của Banker's Algorithm
Gom có 6 bước:
Giải thuật của ngân hàng (Bankers Algorithm) hoạt động theo cách sau:
1, Ban đầu, thuật toán thu thập thông tin về tài nguyên có sẵn trong hệ thông Cụ thẻ, nó cần biết số lượng tài nguyên của mỗi loại và số lượng tài nguyên đã được cấp phát cho mỗi loại
2, Khi một tiến trình yêu cầu tài nguyên, hệ thống kiêm tra xem có đủ tài nguyên đề đáp ứng yêu cầu hay không Nếu có, tiên trình được cho phép sử dụng tài nguyên và số lượng tài nguyên được cấp phát giảm đi
3,Nếu tài nguyên không đủ đề đáp ứng yêu cầu của tiền trình, tiến trình phải chờ đợi cho đến khi có đủ tài nguyên Trong khi đó, hệ thống không cấp phát tài nguyên cho các tiến trình
khác đề đảm bảo tính an toàn.
Trang 124, Khi một tiến trình hoàn thành và trả lại tài nguyên, số lượng tài nguyên được cấp phát tăng lên và có thê được cấp phát cho các tiến trình khác
5, Thuật toán kiểm tra tình trạng an toàn bằng cách sử dụng một thuật toán kiểm tra tỉnh trạng an toàn, như thuật toán Safety Algorithm Thuật toán này đảm bảo rằng một tình trạng
an toàn tồn tại trước khi cấp phát tài nguyên cho một tiền trình
6, Nếu một tình trạng an toàn không thê đạt được, nghĩa là không có cách đề cấp phát tài nguyên sao cho không có deadlock xảy ra, thì việc cấp phát tài nguyên mới bị từ chối cho đến khi có tỉnh trạng an toàn
3.3 Công thức và thuật toán
Giải thuật của ngân hàng (Bankers Algorithm) không phụ thuộc vào các công thức phức tạp Thay vào đó, nó dựa trên quy tắc và kiểm tra đề quản lý và phân bô tài nguyên một cách an toàn trong hệ thống đa nhiệm Dưới đây là một mô tá thuật toán sử đụng các phép kiểm tra
đề quản lý tài nguyên:
1, Khởi tạo:
Số lượng tài nguyên của mỗi loại và số lượng tài nguyên đã cấp phát ban đầu cho mỗi loại tài nguyên
Ma trận yêu cầu: Một ma trận m x n (n là số loại tài nguyên và m là số tiến trình) cho biết số lượng tài nguyên mỗi tiền trình yêu cầu đề hoàn thành công việc của nó
2, Kiêm tra yêu câu:
Khi một tiền trình yêu cầu tài nguyên, hệ thống kiểm tra xem yêu cầu này có thể được đáp ứng ngay lập tức mà không gây ra tình trạng an toàn không đủ tài nguyên hay không Điều
Trang 13này được thực hiện bằng cách so sánh yêu cầu với số lượng tài nguyên còn lại và số lượng tài nguyên đã được cấp phát
3, Cấp phát tài nguyên:
Nếu yêu cầu có thể được đáp ứng mà không gây ra deadlock, tiễn trình được cấp phat tai nguyên, và số lượng tài nguyên còn lại giảm đi
Nếu yêu cầu không thê được đáp ứng ngay lập tức, tiến trình phải chờ đợi cho đến khi có đủ tài nguyên hoặc tình trạng an toàn
4, Trả tài nguyên:
Khi tiến trình hoàn thành công việc va trả lại tài nguyên, số lượng tài nguyên còn lại tăng lên
5, Kiểm tra tình trạng an toàn:
Khi có yêu câu cấp phát tài nguyên mới hoặc khi tiến trình trả lại tài nguyên, hệ thông kiểm tra xem tình trạng an toàn có bị suy yếu hay không Điều này được thực hiện bằng cách sử dụng một thuật toán kiểm tra tình trạng an toàn như thuật toán Safety Algorithm
6, Nếu tình trạng an toàn không thê đạt được sau việc cấp phát tài nguyên, thì yêu cầu cấp phát tài nguyên mới bị từ chối đề đám bảo tính an toàn của hệ thông
Trang 14IV Vi DU MINH HQA VE BANKER’S ALGORITHM
4.1, Tinh huéng cu thé:
Giả sử có một hệ thông máy tính với 3 loại tài nguyên: A, B và C Có 5 tiến trình cần sử dụng tài nguyên này Ban đầu, trạng thái tài nguyên và yêu cầu của từng tiến trình như sau: Trạng thái tài nguyên ban đầu:
Tài nguyên A B C
Số lượng còn lại 10 5 7
Mối tiên trình có yêu câu về tài nguyên như sau:
Tiến trình
P0
Pl
P2
4.2 Quy trình giải quyết deadlock bằng thuat toan Banker's Algorithm:
Bước | : Tính toán tài nguyên còn lại sau mỗi tiến trình đã thực thi
Trước tiên, tính toán tài nguyên còn lại trong trạng thái ban đầu sau khi P0 đã thực hiện xong:
+ A:10-7=3
+ B:5-5=0
Trang 15Bước 2: Xem xét các tiên trình có yêu câu dưới giới hạn tài nguyên còn lại và có thê thực hiện Dựa trên trạng thái tài nguyên sau khi thực hiện P0, chỉ P1 và P3 có thể thực hiện +_PI có thê thực hiện bằng cách sử dụng 3 đơn vị A, 2 đơn vị B và 2 đơn vị C
Bước 3: Thực hiện lựa chọn tiền trình để chạy Trong trường hợp này, có thể chọn lần lượt
P1 và P3 để thực hiện
Bước 4: Cập nhật trạng thái tài nguyên sau khi PI và P3 đã thực hiện
Sau khi PI và P3 thực hiện xong:
A:3+3+2=8
B:0+2+2=4
C:4+2+2=8
Bước 5: Lặp lại các bước trước cho đến khi tất cả các tiền trình đã được thực hiện
4.3 Kết quả và giải thích:
Sử dụng Bankers Algorithm, sau khi tất cả các tiên trình đã được thực hiện, không còn deadlock nào và hệ thống đảm bảo an toàn về tài nguyên Khi tất cả tiễn trình đã hoàn thành, trạng thái tài nguyên là:
Trang 16Không có tién trình nào còn chờ đợi tài nguyên, và deadlock đã được giải quyết thành công bằng cách ưu tiên thực hiện các tiền trình mà có thể thực hiện được dựa trên trang thai tai nguyên va yêu câu của từng tiên trình