kasperskyvn

New Member
trong đề cương ôn tập Nguyên Lý HĐH của bọn e trong cái câu kiểm tra trạng thái an toàn của hệ nó lại có Allocation < Max => nếu tính Need thì need âm. như vậy là thế nào ạ??

ai biết chỉ e với

VD:
Code:
Process		  Allocation			Max
		    A	B	 C		   A	  B	 C
P1		  2	1	  3		  2	   0	 1
như vậy need sẽ như thế nào vậy ạ??

thanks các bạn trước nha
 

tctuvan

New Member
Re: [help] giúp e bài tập Nguyên Lý Hệ Điều Hành

Nếu hệ thống có thể thỏa mãn các nhu cầu tài nguyên tối đa của mỗi tiến trình theo một thứ tự cấp
phát nào đó mà không bị tắc nghẽn thì gọi là hệ thống ở trạng thái là an toàn. Hệ thống ở trạng
thái không an toàn có thể dẫn đến tình trạng tắc nghẽn.
Ta có giải thuật xác định trạng thái an toàn như sau:

int NumResources;//số tài nguyên, một tài nguyên có thể có nhiều thể hiện (instance)
int NumProcs;//số tiến trình trong hệ thống
int Available[NumResources]; // Available[r]= số lượng các thể hiện còn tự do của tài nguyên r
int Max[NumProcs, NumResources]; //Max[p,r]= nhu cầu tối đa của tiến trình p về tài nguyên r
EN.PTIT.EDU.VN
int Allocation[NumProcs, NumResources];// Allocation[p,r] = số tài nguyên r đã cấp phát cho tiến
trình p
int Need[NumProcs, NumResources]; // Need[p,r] = Max[p,r] - Allocation[p,r]= số tài nguyên r
mà tiến trình p còn cần sử dụng
int Finish[NumProcs] = false; //Finish[p]=true là tiến trình p đã thực thi xong;

B1.Tìm tiến trình i thoả các điều kiện sau:
- Tiến trình i chưa thực thi xong:
Finish = false
- Mọi nhu cầu về tài nguyên của tiến trình i đều có thể đáp ứng:
Need[i,j] <= Available[j], với mọi tài nguyên j
Nếu không có tiến trình i như thế thì đến bước 3, nếu có xuống bước 2

B2. Cấp phát mọi tài nguyên mà tiến trình i cần
- Cấp phát đủ tài nguyên cho tiến trình i.
Allocation[i,j]= Allocation[i,j]+Need[i,j]; ∀j
need[i,j]=0 ; ∀j
Available[j]= Available[j] - Need[i,j];
- Đánh dấu tiến trình i thực hiện xong
Finish = true;
- Thu hồi lại tất cả tài nguyên đã cấp cho tiến trình i, cập nhật lại số tài nguyên j khả dụng
Available[j]= Available[j] + Allocation[i,j];
- Quay lại bước 1

B3. Nếu Finish = true với mọi i, thì hệ thống ở trạng thái an toàn, ngược lại là không an toàn.

Dựa vào đó để tính nhé

Trích từ
Giáo trình Hệ điều hành (operating system)
 

Các chủ đề có liên quan khác

Top