Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Thảo luận Bài 8

+24
HuynhHuuPhat(HLT3)
HuynhQuangLuc52 (HLT3)
dangthituyetnhungTH08a1
KhanhChan
vothihongngoc72 (HLT3)
NguyenQuocCuong(HLT3)
PhamAnhDung_HLT3
NguyenMinhToan23 (HLT3)
TranNguyenBinh(HLT3)
NguyenThiThuThao(TH09A2)
NguyenHuuSonLam(TH10A1)
NguyenCongTri(HLT3)
DoHuynhBinhNghia(HLT3)
LeVanVan69 (I22B)
NguyenHaAn(I22A)
truongphamhuytruong.i11c
NguyenVanNgoc (HLT3)
LeThanhQuan (TH10A2)
NguyenLamGiang28
VoMinhQuang (HLT3)
LamQuocVu(HLT3)
NguyenChiKien(HLT3)
VanPhuAnhTuan95(HLT3)
Admin
28 posters

Trang 2 trong tổng số 3 trang Previous  1, 2, 3  Next

Go down

Thảo luận Bài 8 - Page 2 Empty Re: Thảo luận Bài 8

Bài gửi  VanPhuAnhTuan95(HLT3) 3/5/2014, 22:00

NguyenLamGiang28 đã viết:- Câu a cùng đáp án.
- Câu b:
+ Sau khi cấp cho P3 1 ổ đĩa nữa thì mình không tìm ra được chuỗi an toàn => KHÔNG nên đáp ứng yêu cầu của P3.
**Ra cùng 1 đáp án nhưng cách làm khác nhau và mình cũng cũng không biết nên làm theo cách nào. Có ai có câu trả lời chính xác không?
có thể là do mình chọn khác Process đó, thầy cũng có nói là mình có thể tìm được chuỗi an toàn khác nhau nếu chọn những Process khác nhau. Mình nghĩ là vậy. Còn câu b thì mình cũng không tìm ra được chuỗi an toàn nào.

VanPhuAnhTuan95(HLT3)

Tổng số bài gửi : 31
Join date : 16/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Quá trình trung gian tránh Deadlock dùng RAG

Bài gửi  DoHuynhBinhNghia(HLT3) 3/5/2014, 23:01

Quá trình trung gian tránh Deadlock dùng RAG
Thảo luận Bài 8 - Page 2 6paznr
Single Instance
Thảo luận Bài 8 - Page 2 Xbi9nc
Multi Instance
Thảo luận Bài 8 - Page 2 24y5ms2

DoHuynhBinhNghia(HLT3)

Tổng số bài gửi : 4
Join date : 10/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Ngăn chặn Deallock

Bài gửi  NguyenCongTri(HLT3) 4/5/2014, 01:26

Bằng cách sao cho ít nhất 1 trong 4 điều kiện cần kể trên không xảy ra.
- Với Mutual Exclusion: Đảm bảo tài nguyên nào cũng dùng chung được cùng một lúc bởi nhiều tiến trình.
- Với Hold and Wait:
+ Khi tiến trình yêu cầu tài nguyên, nó không được giữ 1 tài nguyên nào khác.
+ Tiến trình phải yêu cầu và được cấp tất cả các tài nguyên mà nó cần ngay đầu công việc.
- Với No Preemption:
+ Khi tiến trình giữ tài nguyên mà xin thêm nhưng không được, các tài nguyên mà nó giữ phải bị tiếm quyền sử dụng và trả lại hệ điều hành.
+ Khi tiến trình xin thêm tài nguyên, nếu tài nguyên này đang được giữ bởi tiến trình khác đang ở trạng thái chờ, tài nguyên của tiến trình khác này bị tiếm quyền sử dụng để cấp cho tiến trình đang xin.
- Với Circular Wait: Cấp tài nguyên theo một thứ tự nào đấy.

NguyenCongTri(HLT3)

Tổng số bài gửi : 3
Join date : 14/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Trình bày 4 điều kiện cần dẫn đến DEADLOCK

Bài gửi  NguyenHuuSonLam(TH10A1) 4/5/2014, 06:41

Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
- Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
- Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
- Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên {P1, P2, ..., Pn}, khi đó P1 chờ TN giữ bởi P2, P2 chờ TN giữ bởi P3 , ... , Pn chờ P1.

NguyenHuuSonLam(TH10A1)

Tổng số bài gửi : 35
Join date : 14/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Re: Thảo luận Bài 8

Bài gửi  NguyenThiThuThao(TH09A2) 4/5/2014, 08:15

truongphamhuytruong.i11c đã viết:Hiện tượng kẹt mạng tại tổng đài 1080:
+ Ví dụ tổng đài 1080 gồm có 100 điện thoại viên.
+ 100 khách hàng gọi tới cùng một lúc. Khách hàng 101,102…. Gọi tới, sẽ phải chờ.
+ 1 khách hàng ứng với một điện thoại viên có thể xem như một tài nguyên.
+ Nếu deadlock xuất hiện, nó có thể được giải quyết nếu 1 trong 100 khách hàng đã được điện thoại viên trả lời xong và nhường tài nguyên cho các khách hàng tiếp theo..
Mình nghĩ trạng thái mà bạn đang nói là trạng thái chu trình chứ chưa phải deadlock và điện thoại viên thì không thể cùng lúc trả lời 2 khách hàng nên sẽ không có việc dùng chung tài nguyên giũa 2 khách hàng, phải không nhỉ ^^!

NguyenThiThuThao(TH09A2)

Tổng số bài gửi : 21
Join date : 09/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Phục hồi Deadlock

Bài gửi  LeVanVan69 (I22B) 4/5/2014, 23:09

       
 Khi giải thuật phát hiện, xác định tồn tại một deadlock, có 2 cách để giải quyết:
   1/ Thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng nhiều thao tác.
Cách thức thực hiện:
- Kết thúc các process bị deadlock.
- Kết thúc tất cả các process bị deadlock.
- Lần lượt kết thúc các process bị deadlock cho đến khi hết deadlock.
   2/ Để cho hệ thống phục hồi tự động, có hai tùy chọn để phá vỡ deadlock, đơn giản là hủy một hay nhiều tiến trình để phá vỡ  chu trình trong đồ thị cấp phát tài nguyên. Thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock.
                 


LeVanVan69 (I22B)

Tổng số bài gửi : 16
Join date : 18/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Phân tích 4 điều kiện cần dẫn đến Deadlocks? Phủ định 4 điều kiện thì có tác dụng ngăn chặn deadlock ko xảy ra?

Bài gửi  TranNguyenBinh(HLT3) 5/5/2014, 00:21

* 4 điều kiện cần dẫn đến Deadlocks:
- Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyen có tính không chia sẽ (non-sharable), nghĩa là : Một thời điểm chỉ có 1 tiến trình được sử dụng nó.
VD: Xe qua cầu hẹp. Mỗi thời điểm chỉ có xe ô tô được đi qua cầu thôi. vì cầu hẹp nên không thể dùng chung được.
- Giữ và chờ ( Hold and Wait ) : Có một tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm tiến trình khác.
VD: Xe qua cầu hẹp . 2 xe đang đứng giữa cầu. Mỗi xe đang giữ nửa mặt cầu và muốn "xin" thêm nửa mặt cầu còn lại.
- Không có tiếm quyền ( No Preemption ) : Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dung xong.
VD:Xe qua cầu hẹp .Phải để 2 xe A hoặc B tự nguyện trả lại mặt đường (tức là một trong 2 xe phải lùi lại). Còn có tiếm quyền (Preemption) nghĩa là cầu được lắp chiếc "cẩu" để khi cần thiết "nhấc" 1 ô tô lên khoảng 2 m (tiếm quyền sử dụng mặt cầu của nó) để chiếc kia qua được !
- Chờ xoay vòng ( Circular Wait ): Giả sử có n tiến trình đang chờ tài nguyên là { P1,P2,..,Pn }, khi đó P1 chờ TN bời giữ P2, tiến trình P2 chờ TN giữ bởi P3,...,Pn chờ P1.

* Phủ định 4 điều kiện:
- Loại trừ lẫn nhau: để ngăn tình trạng này xảy ra thì ta có thể tạo nhiều tài nguyên dùng chung để các tiến trình sử dụng 1 cách hiệu quả.
- Giữ và chờ: để ngăn tình trạng này ta sẽ cho các tiến trình giữ và chờ trong một khoảng thời gian nhất định nào đó. Như thế, sẽ giải phóng được tài nguyên và các tiến trình khác tiếp tục sử dụng TN đó.
- Không có tiếm quyền: để ngăn tình trạng này thì ta phải làm cho hệ điều hành lấy lại tài nguyên mà tiến trình đó đang giữ (có tiếm quyền).
- Chờ xoay vòng: cách giải quyết cũng giống (Loại trừ lẫn nhau) là phải tạo nhiều TN dùng chung.

TranNguyenBinh(HLT3)

Tổng số bài gửi : 42
Join date : 18/03/2014
Age : 34
Đến từ : Tiền Giang

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Các giải pháp xử lý Deadlock

Bài gửi  TranNguyenBinh(HLT3) 5/5/2014, 00:25

1.Phát hiện và phục hồi từ deadlock:
Phát hiện deadlock:
Dùng các giải thuật phát hiện vòng chờ các process.
Do người quản trị hệ thống.
Phục hồi từ deadlock:
Kết thúc các process bị deadlock.
Kết thúc tất cả các process bị deadlock.
Lần lượt kết thúc các process bị deadlock cho đến khi hết deadlock.
Thông số chọn process để kết thúc:
Độ ưu tiên.
Thời gian đã thực thi.
Thời gian còn lại.
Số tài nguyên đã cấp phát.
Số tài nguyên đang chờ.
Lấy lại tài nguyên từ process.
Lần lượt lấy lại các tài nguyên đã cấp phát cho các process cho đến khi hết deadlock.
Phụ thuộc bản chất của tài nguyên.
Sử dụng công cụ của hệ điều hành.
Phục hồi các điểm kiểm tra.
Định kỳ tạo các điểm kiểm tra (checkpoint).
Lưu trạng thái hệ thống tại điểm kiểm tra.
Thực hiện lại (rollback) các process bị deadlock tại các điểm kiểm tra.
Lần lượt thực hiện lại các process bị deadlock tại các điểm kiểm tra cho đến khi hết deadlock.
2.Ngăn chặn deadlock:
Loại bỏ các điều kiện dẫn đến deadlock.
Các điều kiện xem như không thể loại bỏ:
Loại trừ tương hỗ.
Không lấy lại tài nguyên từ process.
Loại bỏ điều kiện loại trừ tương hỗ:
Giảm số tài nguyên tranh chấp.
Tăng số lượng tài nguyên.
Cấp phát tài nguyên dạng spool.
Vd: chỉ 1 printer daemon dùng máy in.
Các process gởi yêu cầu cho printer daemon.
Loại bỏ điều kiện giữ và chờ tài nguyên:
Nguyên tắc: process không được giữ tài nguyên khi yêu cầu tài nguyên mới.
Process khai báo tài nguyên và được cấp phát 1 lần.
Nếu process yêu cầu tài nguyên và không được cấp phát thì phải trả các tài nguyên đang giữ.
Loại bỏ điều kiện không lấy lại tài nguyên:
Lấy lại tài nguyên từ process.
Không thể với tài nguyên như máy in.
Loại bỏ vòng chờ các process:
Có thể quy định số thứ tự tài nguyên.
Process chỉ được yêu cầu tài nguyên theo thứ tự tăng.
Giả sử có deadlock:
P1 giữ Ri, chờ Rj -> i < j.
P2 giữ Rj, chờ Rj -> j < i.
3.Tránh deadlock:
Chấp nhận các điều kiện tạo deadlock.
Theo dõi và tránh dẫn đến deadlock.
Hai hướng giải quyết.
Không tạo process mới nếu có thể dẫn đến deadlock.:
Process cần khai báo số lượng tài nguyên cần sử dụng.
Không tạo process mới nếu số lượng tài nguyên hệ thống không đủ, có thể dẫn đến deadlock.
Không cấp phát thêm tài nguyên cho process:
Liên quan đến việc sử dụng tài nguyên trong tương lai của các process.
Định nghĩa trạng thái hệ thống với:
Vector E: tổng số các loại tài nguyên.
Vector A: số tài nguyên mỗi loại chưa dùng.
Ma trận C: số tài nguyên đã cấp phát cho các process.
Ma trận R: số lượng tài nguyên các process sẽ tiếp tục yêu cầu.


Được sửa bởi TranNguyenBinh(HLT3) ngày 5/5/2014, 00:29; sửa lần 1.

TranNguyenBinh(HLT3)

Tổng số bài gửi : 42
Join date : 18/03/2014
Age : 34
Đến từ : Tiền Giang

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Thủ thuật phát hiện deadlock và phục hồi deadlock.

Bài gửi  TranNguyenBinh(HLT3) 5/5/2014, 00:26

1. Thủ thuật phát hiện deadlock:
- Khi nào chúng ta cần giải thuật phát hiện deadlock?
- Câu trả lời phụ thuộc vào hai yếu tố:
+ Deadlock có khả năng xảy ra như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.

- Deadlock xảy ra khi một tiến trình thực hiện yêu cầu mà không được cấp phát tài nguyên tức thì. Yêu cầu này có thể là yêu cầu cuối cùng hoàn thành một chuỗi các tiến trình chờ. Trong trường hợp này chúng ta có thể gọi giải thuật phát hiện deadlock mỗi khi yêu cầu cấp phát không được cấp phát tức thì. Chúng ta không chỉ biết được tập hợp các tiến trình bị deadlock mà còn xác định tiến trình đã gây ra deadlock (Trong thực tế, mỗi tiến trình trong suốt quá trình bị deadlock là một liên kết trong chu trình của đồ thị tài nguyên vì thế tất cả chúng gây ra deadlock). Nếu có nhiều loại tài nguyên khác nhau, một yêu cầu tạo ra một chu trình trong đồ thị tài nguyên, mỗi chu trình hoàn thành bởi các yêu cầu gần đây nhất và “gây ra” bởi một tiến trình có thể xác định.

- Tất nhiên, nếu thuật toán phát hiện deadlock được gọi cho mọi yêu cầu tài nguyên điều này có thể gây ra chi phí lớn trong thời gian tính toán. Một phương pháp để giảm chi phí là ta gọi giải thuật trong thời điểm ít thường xuyên hơn - ví dụ mỗi giờ hoặc bất cứ khi nào CPU sử dụng dưới 40%. Nếu giải thuật phát hiện deadlock được gọi vào thời điểm bất kỳ, có thể có nhiều chu trình trong đồ thị tài nguyên. Chúng ta không thể xác định được tiến trình nào “gây ra” deadlock.
2. Phục hồi deadlock:
- Khi giải thuật phát hiện deadlock xác định tồn tại một deadlock, có 2 cách để giải quyết:
+ Một là thông báo cho người điều hành biết deadlock xảy ra và để cho người điều hành khắc phục bằng tay.
+ Hai là để cho hệ thống phục hồi tự động. Có hai tùy chọn để phá vỡ deadlock. Một giải pháp đơn giản là hủy một hay nhiều tiến trình để phá vỡ tồn tại chu trình trong đồ thị cấp phát tài nguyên. Lựa chọn thứ hai là lấy lại một hay nhiều tài nguyên từ tiến trình deadlock.

TranNguyenBinh(HLT3)

Tổng số bài gửi : 42
Join date : 18/03/2014
Age : 34
Đến từ : Tiền Giang

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Phát hiện và phục hồi từ deadlock

Bài gửi  NguyenMinhToan23 (HLT3) 5/5/2014, 01:46

Phát hiện deadlock:
Dùng các giải thuật phát hiện vòng chờ các process.

Do người quản trị hệ thống.

Phục hồi từ deadlock:
Kết thúc các process bị deadlock.

Kết thúc tất cả các process bị deadlock.

Lần lượt kết thúc các process bị deadlock cho đến khi hết deadlock.

Thông số chọn process để kết thúc:

Độ ưu tiên.

Thời gian đã thực thi.

Thời gian còn lại.

Số tài nguyên đã cấp phát.

Số tài nguyên đang chờ.

Lấy lại tài nguyên từ process.

Lần lượt lấy lại các tài nguyên đã cấp phát cho các process cho đến khi hết deadlock.

Phụ thuộc bản chất của tài nguyên.

Sử dụng công cụ của hệ điều hành.

Phục hồi các điểm kiểm tra.

Định kỳ tạo các điểm kiểm tra (checkpoint).

Lưu trạng thái hệ thống tại điểm kiểm tra.

Thực hiện lại (rollback) các process bị deadlock tại các điểm kiểm tra.

Lần lượt thực hiện lại các process bị deadlock tại các điểm kiểm tra cho đến khi hết deadlock.

NguyenMinhToan23 (HLT3)

Tổng số bài gửi : 7
Join date : 18/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Cách ngăn chặn deadlock

Bài gửi  NguyenMinhToan23 (HLT3) 5/5/2014, 01:48

Loại bỏ các điều kiện dẫn đến deadlock.

Các điều kiện xem như không thể loại bỏ:

Loại trừ tương hỗ.

Không lấy lại tài nguyên từ process.

Loại bỏ điều kiện loại trừ tương hỗ:
Giảm số tài nguyên tranh chấp.

Tăng số lượng tài nguyên.

Cấp phát tài nguyên dạng spool.

Vd: chỉ 1 printer daemon dùng máy in.

Các process gởi yêu cầu cho printer daemon.

Loại bỏ điều kiện giữ và chờ tài nguyên:
Nguyên tắc: process không được giữ tài nguyên khi yêu cầu tài nguyên mới.

Process khai báo tài nguyên và được cấp phát 1 lần.

Nếu process yêu cầu tài nguyên và không được cấp phát thì phải trả các tài nguyên đang giữ.

Loại bỏ điều kiện không lấy lại tài nguyên:
Lấy lại tài nguyên từ process.

Không thể với tài nguyên như máy in.

Loại bỏ vòng chờ các process:
Có thể quy định số thứ tự tài nguyên.

Process chỉ được yêu cầu tài nguyên theo thứ tự tăng.

Giả sử có deadlock:

P1 giữ Ri, chờ Rj -> i < j.

P2 giữ Rj, chờ Rj -> j < i.

NguyenMinhToan23 (HLT3)

Tổng số bài gửi : 7
Join date : 18/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Tránh deadlock

Bài gửi  NguyenMinhToan23 (HLT3) 5/5/2014, 01:49

Chấp nhận các điều kiện tạo deadlock.
Theo dõi và tránh dẫn đến deadlock.
Hai hướng giải quyết.
Không tạo process mới nếu có thể dẫn đến deadlock.:
Process cần khai báo số lượng tài nguyên cần sử dụng.

Không tạo process mới nếu số lượng tài nguyên hệ thống không đủ, có thể dẫn đến deadlock.

Không cấp phát thêm tài nguyên cho process:
Liên quan đến việc sử dụng tài nguyên trong tương lai của các process.

NguyenMinhToan23 (HLT3)

Tổng số bài gửi : 7
Join date : 18/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Điều kiện dẫn đến deadlock

Bài gửi  PhamAnhDung_HLT3 5/5/2014, 14:08

Trình bày 4 điều kiện cần dẫn đến DEADLOCK

Loại trừ lẫn nhau (Mutual Exclusion): Ít nhất có 1 tài nguyên có tính không chia sẻ (non-sharable), nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được sử dụng nó.
- Giữ và chờ (Hold and Wait): Có 1 tiến trình đang giữ 1 tài nguyên và xin thêm tài nguyên đang độc chiếm bởi tiến trình khác.
- Không có tiếm quyền (No Preemption): Tài nguyên đang giữ bởi tiến trình không thể bị tiếm quyền mà phải được tiến trình này tự nguyện trả lại hệ thống sau khi sử dụng xong.
- Chờ xoay vòng (Circular Wait): Giả sử có n tiến trình đang chờ tài nguyên {P1, P2, ..., Pn}, khi đó P1 chờ TN giữ bởi P2, P2 chờ TN giữ bởi P3 , ... , Pn chờ P1.

PhamAnhDung_HLT3

Tổng số bài gửi : 23
Join date : 25/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Cách thức tránh được hiện tượng Deadlock?

Bài gửi  NguyenQuocCuong(HLT3) 5/5/2014, 14:43

+ Trường hợp deadlock có thể phát sinh nếu bốn điều kiện sau xảy ra cùng một
lúc trong hệ thống:
1) Loại trừ tương hỗ(Mutual exclusion): ít nhất một tài nguyên phải được giữ trong chế độ
không chia sẻ; nghĩa là: chỉ một quá trình tại cùng một thời điểm có thể sử
dụng tài nguyên. Nếu một quá trình khác yêu cầu tài nguyên đó, quá trình
yêu cầu phải tạm dừng cho đến khi tài nguyên được giải phóng.
2) Giữ và chờ cấp thêm tài nguyên (Hold and wait): quá trình phải đang giữ ít nhất một tài
nguyên và đang chờ để nhận tài nguyên thêm mà hiện đang được giữ bởi
quá trình khác.
3) Không có ưu tiên (No preemption): Các tài nguyên
không thể bị đòi lại; nghĩa là, tài nguyên có thể được giải phóng chỉ tự ý
bởi quá trình đang giữ nó, sau khi quá trình đó hoàn thành tác vụ.
4) Tồn tại chu trình trong đồ thị cấp phát tài nguyên (Circular wait): một tập hợp các quá
trình {P0, P1,…,Pn} đang chờ mà trong đó P0 đang chờ một tài nguyên
được giữ bởi P1, P1 đang chờ tài nguyên đang giữ bởi P2,…,Pn-1 đang chờ
tài nguyên đang được giữ bởi quá trình P0.

+ Để các tài nguyên sử dụng hợp lý và ít ảnh hưởng bởi hệ thống khi xảy ra tình huống kẹt khi các tiến trình yêu cầu, có thể giải quyết bằng một số biện pháp:

- Sử dụng chức năng đồng bộ hóa các tiến trình (đã được học ở bài 7) để đảm bảo tính nhất quán, tính đúng của các tài nguyên trước khi xảy ra tranh chấp.

- Giải quyết thứ tự sử dụng tài nguyên hệ thống, nếu có thể, nên gán số độ ưu tiên lên tiến trình khi yêu cầu tài nguyên. Giá trị ưu tiên có thể cho phép tiến trình thực thi theo thứ tự.

- Các tài nguyên gián tiếp khi yêu cầu CPU cấp phát, nếu cảm thấy hợp lý mới được cấp để sử dụng.

Tại sao phải thông qua hệ điều hành để quản lý các tài nguyên dùng chung? Hoặc nên để các tiến trình hoạt động tự do (khi cần dùng thì tự túc yêu cầu và tự sử dụng) hay là để hệ thống quản lý một cách tập trung và yêu cầu tài nguyên khi cần thiết mới hiệu quả?

NguyenQuocCuong(HLT3)

Tổng số bài gửi : 15
Join date : 15/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Định nghĩa Deadlocks ? ví dụ minh hoạ

Bài gửi  NguyenQuocCuong(HLT3) 5/5/2014, 14:46

- Định nghĩa Deadlock (Kẹt khoá): Là Tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.
- Deadlock là tình huống xuất hiện khi hai hay nhiều “hành động” phải chờ một hoặc nhiều hành động khác để kết thúc, nhưng không bao giờ thực hiện được Máy tính: Bế tắc là tình huống xuất hiện khi hai tiến trình phải chờ đợi nhau giải phóng tài nguyên hoặc nhiều tiến trình chờ sử dụng các tài nguyên theo một “vòng tròn.
-Sử dụng tài nguyên.

Ví dụ 1:
2 con dê đi qua cầu, dê trắng và dê đen đều múốn mình qua cầu chẳng ai chịu nhường ai cả, và cả 2 đều mắc kẹt mãi trên cầu....(có thể tranh chấp dẫn đến xảy ra đến cả 2 con đều rơi xuống cầu)

Ví dụ 2:
có 5 phòng trọ trong cùng 1 dãy.nhưng chỉ có 1 wc,phòng nào cũng giành đi trước không ai chịu nhường,xảy ra (deadlock).

Ví dụ 3: Giả sử có hai tiến trình P1 và P2 hoạt động đồng thời trong hệ thống. Tiến trình P1 đang giữ tài nguyên R1 và xin được cấp R2 để tiếp tục hoạt động, trong khi đó tiến trình P2 đang giữ tài nguyên R2 và xin được cấp R1 để tiếp tục hoạt động. Trong trường hợp này cả P1 và P2 sẽ không tiếp tục hoạt động được. Như vậy P1 và P2 rơi vào trạng thái tắc nghẽn. Ví dụ này có thể được minh hoạ bởi sơ đồ ở hình 2.

Tắc nghẽn thường xảy ra do xung đột về tài nguyên thuộc loại không phân chia được, một số ít trường hợp xảy ra với tài nguyên phân chia được. Ví dụ sau đây là trường hợp tắc nghẽn do xung đột về tài nguyên bộ nhớ, là tài nguyên thuộc loại phân chia được.

Ví dụ 4: Trong các ứng dụng cơ sở dữ liệu, một chương trình có thể khoá một vài record mà nó sử dụng, để dành quyền điều khiển về cho nó. Nếu tiến trình P1 khoá record R1, tiến trình P2 khoá record R2, và rồi sau đó mỗi tiến trình lại cố gắng khoá record của một tiến trình khác. Tắc nghẽn sẽ xảy ra.

Như vậy tắc nghẽn là hiện tượng: Trong hệ thống xuất hiện một tập các tiến trình, mà mỗi tiến trình trong tập này đều chờ được cấp tài nguyên, mà tài nguyên đó đang được một tiến trình trong tập này chiếm giữ. Và sự đợi này có thể kéo dài vô hạn nếu không có sự tác động từ bên ngoài.

Trong trường hợp của ví dụ 1 ở trên: hai tiến trình P1 và P2 sẽ rơi vào trạng thái tắc nghẽn, nếu không có sự can thiệp của hệ điều hành. Để phá bỏ tắc nghẽn này hệ điều hành có thể cho tạm dừng tiến trình P1 để thu hồi lại tài nguyên R1, lấy R1 cấp cho tiến trình P2 để P2 hoạt động và kết thúc, sau đó thu hồi cả R1 và R2 từ tiến trình P2 để cấp cho P1 và tái kích hoạt P1 để P1 hoạt động trở lại. Như vậy sau một khoảng thời gian cả P1 và P2 đều ra khỏi tình trạng tắc nghẽn.

Khi hệ thống xảy ra tắc nghẽn nếu hệ điều hành không kịp thời phá bỏ tắc nghẽn thì hệ thống có thể rơi vào tình trạng treo toàn bộ hệ thống. Như trong trường hợp tắc nghẽn ở ví dụ 1, nếu sau đó có tiến trình P3, đang giữ tài nguyên R3, cần R2 để tiếp tục thì P3 cũng sẽ rơi vào tập tiến trình bị tắc nghẽn, rồi sau đó nếu có tiến trình P4 cần tài nguyên R1 và R3 để tiếp tục thì P4 cũng rơi vào tập các tiến trình bị tắc nghẽn như P3, … cứ thế dần dần có thể dẫn đến một thời điểm tất cả các tiến trình trong hệ thống đều rơi vào tập tiến trình tắc nghẽn. Và như vậy hệ thống sẽ bị treo hoàn toàn

NguyenQuocCuong(HLT3)

Tổng số bài gửi : 15
Join date : 15/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty BÀI TẬP THUẬT GIẢI NHÀ BĂNG- HỆ ĐIỀU HÀNH

Bài gửi  vothihongngoc72 (HLT3) 6/5/2014, 08:21

Giải thích thuật giải Nhà băng
Dữ liệu : – có 5 tiến trình : P0,……,P4 (Ví dụ là : 5 công ty khác nhau cần vay )
- 3 loại tài nguyên : A(10 phiên bản), B(5 phiên bản), C(7 phiên bản)
=>Đây là các loại tiền mà nhà băng có.
- Tại thời điểm To:
Allocation Max Available
A B C A B C A B C
Po 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3

Tổng loại tiền mà các công ty có (Cộng theo cột từ trên xuống của Allocation)
Tổng :7 2 5

Chú ý :
- Allocation tổng số các loại tiền mà các công ty đang có
- Max : Tổng các loại tiền (tối đa ) mà các công ty có thể có
- Hệ có : Available = ( 10 ,5 ,7 ) – ( 7, 2 ,5 ) = ( 3 ,3 ,2 )
Ta có : Need = Max – Allocation
=>Số loại tiền tối đa mà các công ty có thể vay thêm.
Ta có ma trận sau : Need
A B C
P0 7 4 3 (7,5,3) – (0,1,0)
P1 1 2 2 (3,2,2) – (2,0,0)
P2 6 0 0 (9,0,2) - (3,0,2)
P3 0 1 1 (2,2,2) - (2,1,1)
P4 4 3 1 (4,3,3) – (0,0,2)

Giả sử tại thời điểm To công ty : Ta phải kiểm tra tổng số các loại tiền mà công ty cần : Need <= Work : hệ số các loại tiền có trong nhà băng. Trong thời điểm này thì chỉ có P1,P3 là thỏa điều kiện được vay trước.
Giả sử P1 vay trước : Ta có bảng sau đảm bảo số tiền vay không vượt qua số tiền nhà băng cần có.
Work Need(i) P(i) Allocation
A B C A B C A B C
3 2 2 1 2 2 P1 2 0 0

Số tiền ít nhất nhà băng cần có cho P1 vay là (3,2,2)
Vậy hệ số tiền mà nhà băng có ít nhẩt cho công ty tiếp theo vay là:
Work = (3,2,2)+(2,0,0) = (5,3,2)
Ta xét hệ số các loại tiền Need <=Work. Trong trường hợp này thì P1 và P4 có thể vay.Giả sử P3 vay.Và làm các bước tương tự cho các công ty còn lại ta có bảng sau
Work Need(i) P(i) Allocation
A B C A B C A B C
3 2 2 1 2 2 P1 2 0 0
5 3 2 0 1 1 P3 2 1 1
7 4 3 4 3 1 P4 0 0 2
7 4 5 6 0 0 P2 3 0 2
10 4 7 7 4 3 P0 0 1 0

Chú ý : Hệ số các loại tiền của nhà băng cần có để cho vay (10,4,7) <= (10,5,7) các tài nguyên ban đầu
Như vậy : Ở thời điểm To hệ thống nhà băng trong trạng thái an toàn vì tồn tại chuỗi an toàn : < P1 ,P3 ,P4 ,P2 ,P0 >

P1 muốn tăng tiền vay (1,0,2) thì phải thỏa điều kiện:
1 – Request (yêu cầu) <= Need vì (1,0,2) <= (1,2,2) // Thỏa điều kiện
2- Request (yêu cầu) <= Available vì (1,0,2) <= (3,3,2) // Thỏa điều kiện

Ta lại làm lại từ đầu và xét trạng thái mới
Ta có:
Bảng Max sẽ được thay bằng bảng Need (Vì Need đã là giá trị lớn nhất để có thể tồn tại chuổi an toàn).
Allocation của P1 sẽ đổi do cộng đồn giá trị Allocation ban đầu với giá trị Allocation mới:
(2,0,0) + (1,0,2) = (3,0,2)

Need của P1 cũng thay đổi do điều kiện xét ta có:
Need (P1)[mới] = Need(P1)[cũ] – Request = (1,2,2) – (1,0,2) = (0,2,0)

Available cũng thay đổi do:
Available (mới) = Available (củ) – Request = (3,3,2,) – (1,0,2) = (2,3,0)

Allocation Need Available
A B C A B C A B C
Po 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1

Work Need(i) P(i) Allocation
A B C A B C A B C
2 3 0 0 2 0 P1 3 0 2
5 3 2 0 1 1 P3 2 1 1
7 4 3 4 3 1 P4 0 0 2
7 4 5 6 0 0 P2 3 0 2
104 7 7 4 3 P0 0 1 0

Chú ý : Hệ số các loại tiền của nhà băng cần có để cho vay (10,4,7) <= (10,5,7) các tài nguyên ban đầu
Như vậy : Ở thời điểm To hệ thống nhà băng trong trạng thái an toàn vì tồn tại chuỗi an toàn : < P1 ,P3 ,P4 ,P2 ,P0 >

Các bạn chú ý là việc tìm chuỗi trên ko chỉ có tính duy nhất nhé

vothihongngoc72 (HLT3)

Tổng số bài gửi : 28
Join date : 16/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Giải bài tập về Thuật giải Nhà băng.

Bài gửi  KhanhChan 6/5/2014, 10:05

Đề bài:
Một hệ thống có 12 ổ băng từ và 3 tiến trình P1, P2, P3 với trạng thái cấp phát tài nguyên ở thời điểm Ti thể hiện bằng các vectơ Allocation=(5,2,2) Max=(10,4,9). Dùng thuật giải Nhà băng để:
a) Chứng minh trạng thái này an toàn ?
b) Xác định có nên đáp ứng hay không yêu cầu xin thêm 1 ổ nữa của P3 ?

Bài giải:
a) Chứng minh trạng thái này an toàn:
Tính Available = 12 - ( 5 + 2 + 2 ) = 12 - 9 = 3
Trạng thái của hệ thống:
Process Allocation Max Need Available
P1 5 10 5 3
P2 2 4 2
P3 2 9 7

Bảng trợ giúp:
Work >= Needi Pi Allocation
3 2 P2 2
5 5 P1 5
10 7 P3 2

Vậy: Tìm được chuỗi an toàn: {P2,P1,P3}.
Do đó trạng thái hệ thống ở thời điểm Ti là an toàn.

b) Xác định có nên đáp ứng hay không yêu cầu xin thêm 1 ổ nữa của P3:
Gọi yêu cầu là Request3 ta có:
Request3 = 1
Request3 <= Need3 (vì 1 <=7 )
Request3 <= Available (vì 1 <= 3)
Trạng thái mới của hệ:
Process Allocation Max Need Available
P1 5 10 5 2
P2 2 4 2
P3 3 9 6

Bảng trợ giúp:
Work >= Needi Pi Allocation
2 2 P2 2
4 ? ? ?

Không tồn tại chuỗi an toàn nào (chỉ tìm được 1 chuỗi không đầy đủ bắt đầu từ P2).
Vậy: Không nên đáp ứng yêu cầu Request3 vì hệ thống sẽ không an toàn (không tìm thấy chuỗi an toàn).

KhanhChan

Tổng số bài gửi : 12
Join date : 20/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Định nghĩa Deadlock

Bài gửi  dangthituyetnhungTH08a1 6/5/2014, 22:29

Định nghĩa: Tình huống bị kẹt của một nhóm tiến trình do mỗi tiến trình trong nhóm đều chờ một sự kiện (event) có thể chỉ được gây ra bởi một tiến trình khác.

Ví dụ:
- 5 thầy giáo đều cần máy chiếu để dạy ngay trong khi ở phòng thiết bị hiện tại chỉ có 1 máy chiếu => dẫn đến tranh chấp
- 2 xe đi ngược chiều cùng qua 1 cây cầu hẹp, mà cầu thì chỉ có 1 làn xe nên khi 2 xe vào đến giữa cầu thì không thể tiếp tục tiến tới nữa, xãy ra kẹt xe (deadlock) vì không xe nào chịu nhường xe nào.

dangthituyetnhungTH08a1

Tổng số bài gửi : 41
Join date : 19/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Thủ thuật phát hiện deadlock

Bài gửi  dangthituyetnhungTH08a1 6/5/2014, 22:37

- Khi nào chúng ta cần giải thuật phát hiện deadlock?
- Câu trả lời phụ thuộc vào hai yếu tố:
+ Deadlock có khả năng xảy ra như thế nào?
+ Có bao nhiêu tiến trình sẽ bị ảnh hưởng bởi deadlock khi nó xảy ra ?
- Nếu deadlock xảy ra thường xuyên thì giải thuật phát hiện deadlock sẽ được thực hiện thường xuyên. Tài nguyên được cấp phát cho deadlock sẽ được rảnh rỗi cho đến khi deadlock bị phá vỡ. Ngoài ra, số lượng tiến trình tham gia vào trong chu trình deadlock có thể tăng lên.

dangthituyetnhungTH08a1

Tổng số bài gửi : 41
Join date : 19/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Các phương pháp xử lý Deadlock

Bài gửi  dangthituyetnhungTH08a1 6/5/2014, 22:40

+ Ngăn ngừa hoặc tránh xa, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock.

+ Cho phép hệ thống đi vào trạng thái deadlock rồi khôi phục lại.

+ Bỏ qua dead lock , coi như ko có dead trong hệ thống

dangthituyetnhungTH08a1

Tổng số bài gửi : 41
Join date : 19/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Giải pháp ngăn Deadlock

Bài gửi  HuynhQuangLuc52 (HLT3) 7/5/2014, 10:18

Phần lớn, chúng ta có thể giải quyết vấn đề deadlock theo một trong ba cách:
• Chúng ta có thể sử dụng một giao thức để ngăn chặn hay tránh deadlocks, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock
• Chúng ta có thể cho phép hệ thống đi vào trạng thái deadlock, phát hiện nó và phục hồi.
• Chúng ta có thể bỏ qua hoàn toàn vấn đề này và giả vờ deadlock không bao giờ xảy ra trong hệ thống. Giải pháp này được dùng trong nhiều hệ điều hành, kể cả UNIX.
• Chúng ta sẽ tìm hiểu vắn tắt mỗi phương pháp. Sau đó, chúng ta sẽ trình bày các giải thuật một cách chi tiết trong các phần sau đây.
Để đảm bảo deadlock không bao giờ xảy ra, hệ thống có thể dùng kế hoạch ngăn chặn hay tránh deadlock. Ngăn chặn deadlock là một tập hợp các phương pháp để đảm bảo rằng ít nhất một điều kiện cần không thể xảy ra. Các phương pháp này ngăn chặn deadlocks bằng cách ràng buộc yêu cầu về tài nguyên được thực hiện như thế nào. Chúng ta thảo luận phương pháp này trong phần sau.
Ngược lại, tránh deadlock yêu cầu hệ điều hành cung cấp những thông tin bổ sung tập trung vào loại tài nguyên nào một quá trình sẽ yêu cầu và sử dụng trong thời gian sống của nó. Với những kiến thức bổ sung này, chúng ta có thể quyết định đối với mỗi yêu cầu quá trình nên chờ hay không. Để quyết định yêu cầu hiện tại có thể được thoả mãn hay phải bị trì hoãn, hệ thống phải xem xét tài nguyên hiện có, tài nguyên hiện cấp phát cho mỗi quá trình, và các yêu cầu và giải phóng tương lai của mỗi quá trình.
Nếu một hệ thống không dùng giải thuật ngăn chặn hay tránh deadlock thì trường hợp deadlock có thể xảy ra. Trong môi trường này, hệ thống có thể cung cấp một giải thuật để xem xét trạng thái của hệ thống để xác định deadlock có xảy ra hay không và giải thuật phục hồi từ deadlock.
Nếu hệ thống không đảm bảo rằng deadlock sẽ không bao giờ xảy ra và cũng không cung cấp một cơ chế để phát hiện và phục hồi deadlock thì có thể dẫn đến trường hợp hệ thống ở trong trạng thái deadlock. Trong trường hợp này, deadlock không được phát hiện sẽ làm giảm năng lực hệ thống vì tài nguyên đang được giữ bởi những quá trình mà chúng không thể thực thi, đi vào trạng thái deadlock. Cuối cùng, hệ thống sẽ dừng các chức năng và cần được khởi động lại bằng thủ công.
Mặc dù phương pháp này dường như không là tiếp cận khả thi đối với vấn đề deadlock nhưng nó được dùng trong một số hệ điều hành. Trong nhiều hệ thống, deadlock xảy ra không thường xuyên; do đó phương pháp này là rẻ hơn chi phí cho phương pháp ngăn chặn deadlock, tránh deadlock, hay phát hiện và phục hồi deadlock mà chúng phải được sử dụng liên tục. Trong một số trường hợp, hệ thống ở trong trạng thái cô đặc nhưng không ở trạng thái deadlock. Như thí dụ, xem xét một quá trình thời thực chạy tại độ ưu tiên cao nhất (hay bất cứ quá trình đang chạy trên bộ định thời biểu không trưng dụng) và không bao giờ trả về điều khiển đối với hệ điều hành. Do đó, hệ thống phải có phương pháp phục hồi bằng thủ công cho các điều kiện không deadlock và có thể đơn giản sử dụng các kỹ thuật đó cho việc phục hồi deadlock.

HuynhQuangLuc52 (HLT3)

Tổng số bài gửi : 14
Join date : 23/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Định nghĩa DeadLock và nêu các ví dụ minh họa về hiện tượng này.

Bài gửi  HuynhQuangLuc52 (HLT3) 7/5/2014, 10:20

Deadlock : Là Một số tiến trình có thể tranh nhau bởi một số tài nguyên hạn chế.

Tài nguyên hệ thống được chia thành nhiều loại, mỗi loại có 1 hoặc nhiều phiên bản(Instances).
+ Các tiến trình chờ có thể sẽ không bao giờ thay đổi lại trạng thái được vì các tài nguyên mà nó yêu cầu bị giữ bởi các tiến trình chờ khác.

+ Mỗi tiến trình sử dụng tài nguyên theo các bước sau:
• yêu cầu tài nguyên(request): Nếu yêu cầu không được giải quyết ngay( ví dụ khi tài nguyên đang được tiến trình khác sử dụng) thì tiến trình yêu cầu phải đợi cho đến khi nhận được tài nguyên.
• Sử dụng tài nguyên(use)
• Trả lại(Release): Trả tài nguyên cho HĐH quản lý.

ví dụ: Hiện tượng tắc nghẽn trên cầu:
+ Hai (hay nhiều hơn) ô tô đối đầu nhau trên một cây cầu hẹp chỉ đủ độ rộng cho một chiếc.
+ Mỗi đoạn của cây cầu có thể xem như một tài nguyên
+ Nếu deadlock xuất hiện, nó có thể được giải quyết nếu một hay một số ô tô lùi lại nhường đường rồi tiển ra sau. deadlock là kẹt mãi mãi

HuynhQuangLuc52 (HLT3)

Tổng số bài gửi : 14
Join date : 23/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Điều kiện gây ra deadlock

Bài gửi  HuynhQuangLuc52 (HLT3) 7/5/2014, 10:21

Trường hợp deadlock có thể phát sinh nếu bốn điều kiện sau xảy ra cùng một lúc trong hệ thống:

1) Không đòi lại tài nguyên từ quá trình đang giữ chúng: Các tài nguyên không thể bị đòi lại; nghĩa là, tài nguyên có thể được giải phóng chỉ tự ý bởi quá trình đang giữ nó, sau khi quá trình đó hoàn thành tác vụ.
2) Loại trừ hỗ tương: ít nhất một tài nguyên phải được giữ trong chế độ không chia sẻ; nghĩa là, chỉ một quá trình tại cùng một thời điểm có thể sử dụng tài nguyên. Nếu một quá trình khác yêu cầu tài nguyên đó, quá trình yêu cầu phải tạm dừng cho đến khi tài nguyên được giải phóng.

3) Giữ và chờ cấp thêm tài nguyên: quá trình phải đang giữ ít nhất một tài nguyên và đang chờ để nhận tài nguyên thêm mà hiện đang được giữ bởi quá trình khác.

4) Tồn tại chu trình trong đồ thị cấp phát tài nguyên: một tập hợp các quá trình {P0, P1,…,Pn} đang chờ mà trong đó P0 đang chờ một tài nguyên được giữ bởi P1, P1 đang chờ tài nguyên đang giữ bởi P2,…,Pn-1 đang chờ tài nguyên đang được giữ bởi quá trình P0.

Chúng ta nhấn mạnh rằng tất cả bốn điều kiện phải cùng phát sinh để deadlock xảy ra.

HuynhQuangLuc52 (HLT3)

Tổng số bài gửi : 14
Join date : 23/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Điều kiện xảy ra Deadlock

Bài gửi  HuynhHuuPhat(HLT3) 8/5/2014, 09:24

-Điều kiện xảy ra Deadlock
-Có bốn điều kiện cần thiết để deadlock có thể xảy ra.

Điều kiện loại trừ lẫn nhau: Một tài nguyên không thể sử dụng bởi nhiều hơn một tiến trình tại một thời điểm

Điều kiện giữ và chờ: Các tiến trình giữ tài nguyên và chờ tài nguyên mới

Điều kiện không thể chiếm: Các tài nguyên không thể bị đòi lại, chúng chỉ có thể được giải phóng bởi chính tiến trình chiếm giữ chúng

Điều kiện chu trình chờ: Các tiến trình giử tài nguyên và chờ các tài nguyên bị giử bởi tiến trình khác, tạo thành một chu trình. Ví dụ: Tiến trình 1, chiếm A1, chờ A2. Tiến trình 2 chiếm A2, chờ A3,... Tiến trình N chiếm An, chờ A1.

HuynhHuuPhat(HLT3)

Tổng số bài gửi : 19
Join date : 16/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Cách ngăn chặn và tránh deadlock

Bài gửi  HuynhHuuPhat(HLT3) 8/5/2014, 09:27

Các phương pháp xử lý Deadlock

+ Ngăn ngừa hoặc tránh xa, đảm bảo rằng hệ thống sẽ không bao giờ đi vào trạng thái deadlock.

+ Cho phép hệ thống đi vào trạng thái deadlock rồi khôi phục lại.

+ Bỏ qua dead lock , coi như ko có dead trong hệ thống

*Ngăn chặn deadlock : là đảm bảo ít nhất một trong bốn điều kiện không thể xuất hiện
a.Ngăn cản lẫn nhau – đảm bảo là hệ thống không có các file không thể chia sẻ.
Một tiến trình không bao giờ phải chờ tài nguyên có thể chia sẻ
Ví dụ: read-only files(vì file read only thì nhiều tiến trình truy xuất nó cũng không ảnh hưởng gì-nội dung file không thay đổi)
Một số tài nguyên là không thể chia sẻ
Ví dụ: chế độ toàn màn hình


b.Giữ và đợi cấp thêm tài nguyên – phải đảm bảo rằng mỗi khi một tiến trình yêu cầu một tài nguyên, nó không giữ bất kỳ tài nguyên nào khác.
Đòi hỏi tiến trình yêu cầu và được phân phối tất cả các tài nguyên của nó trước khi nó bắt đầu thực hiện, hoặc chỉ cho phép tiến trình yêu cầu các tài nguyên khi không có tài nguyên nào cả.


c.Không có ưu tiên: không đòi lại tài nguyên từ tiến trình đang giữ chúng_
Nếu một tiến trình đang giữ một số tài nguyên và yêu cầu tài nguyên khác mà không thể được phân phối ngay cho nó thì tất cả các tài nguyên nó đang giữ được giải phóng.
Các tài nguyên ưu tiên được thêm vào danh sách tài nguyên dành cho tiến trình đang chờ đợi.
Tiến trình sẽ được khởi động lại chỉ khi nó có thể lấy lại các tài nguyên cũ của nó cũng như các tài nguyên mới mà nó đang yêu cầu.


d.Chờ đợi vòng tròn – áp dụng một thứ tự tuyệt đối cho tất cả các loại tài nguyên: mỗi loại được gắn một số nguyên
Mỗi tiến trình yêu cầu các tài nguyên theo thứ tự tăng dần: chỉ có thể nhận được tài nguyên có trọng số cao hơn của bất kỳ tài nguyên nào nó đang giữ
Muốn có tài nguyên j, tiến trình phải giải phóng tất cả các tài nguyên có trọng số i > j (nếu có)

*Tránh deadlock

Một số thông tin ưu tiên trong hệ thống :
-Mô hình hữu dụng nhất và đơn giản nhất yêu cầu mỗi tiến trình công bố số lượng tài nguyên lớn nhất của mỗi loại mà nó có thể cần đến.
-Giải thuật tránh deadlock luôn kiểm tra trạng thái phân phối tài nguyên để đảm bảo rằng sẽ không bao giờ có tình trạng chờ đợi vòng tròn.
-Trạng thái phân phối tài nguyên được xác định bởi số tài nguyên khả dụng (Available) và đã được phân phối (Allocation) cũng như số tài nguyên tối đa (max)tiến trình yêu cầu.

Giải thuật đồ thị cấp phát tài nguyên (đc dùng với tài nguyên đơn cá thể)
- Ngoài các cạnh yêu cầu và gán, chúng ta giới thiệu một loại cạnh mới được gọi là
cạnh thỉnh cầu (claim edge). Một cạnh thỉnh cầu Pi → Rj hiển thị quá trình Pi có thể yêu cầu tài nguyên Rj vào một thời điểm trong tương lai. Cạnh này tương tự cạnh yêu cầu về
phương hướng nhưng được hiện diện bởi dấu đứt khoảng. Khi quá trình Pi yêu cầu tài nguyên Rj, cạnh thỉnh cầu Pi → Rj chuyển tới cạnh yêu cầu. Tương tự, khi một tài nguyên Rj được giải phóng bởi Pi, cạnh gán Rj → Pi được chuyển trở lại thành cạnh
thỉnh cầu Pi → Rj. Chúng ta chú ý rằng các tài nguyên phải được yêu cầu trước trong hệ thống. Nghĩa là, trước khi Pi bắt đầu thực thi, tất cả các cạnh thỉnh cầu của nó phải xuất hiện trong đồ thị cấp phát tài nguyên. Chúng ta có thể giảm nhẹ điều kiện này bằng cách cho phép một cạnh Pi → Rj để được thêm tới đồ thị chỉ nếu tất cả các cạnh gắn liền với quá trình Pi là các cạnh thỉnh cầu. Giả sử rằng Pi yêu cầu tài nguyên Rj. Yêu cầu có thể được gán chỉ nếu chuyển cạnh yêu cầu Pi → Rj tới cạnh gán Rj→Pi không dẫn đến việc hình thành chu trình trong đồ thị cấp phát tài nguyên. Chú ý rằng chúng ta kiểm tra tính an toàn bằng cách dùng giải
thuật phát hiện chu trình. Một giải thuật để phát hiện một chu trình trong đồ thị này yêu cầu một thứ tự của n2 thao tác, ở đây n là số quá trình trong hệ thống.Nếu không có chu trình tồn tại, thì việc cấp phát tài nguyên sẽ để lại hệ thống trong trạng thái an toàn. Nếu chu trình được tìm thấy thì việc cấp phát sẽ đặt hệ thống trong trạng thái không an toàn. Do đó, quá trình Pi sẽ phải chờ yêu cầu của nó được thoả.

HuynhHuuPhat(HLT3)

Tổng số bài gửi : 19
Join date : 16/03/2014

Về Đầu Trang Go down

Thảo luận Bài 8 - Page 2 Empty Re: Thảo luận Bài 8

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 2 trong tổng số 3 trang Previous  1, 2, 3  Next

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết