Cau7 HDH

Màu nền
Font chữ
Font size
Chiều cao dòng

+Khái niệm Găng: Là những tài nguyên được HĐH chia sẻ cho nhiều tiến trình hoạt động đồng thời dùng chung mà có nguy cơ dẫn đến sự tranh chấp giữa các tiến trình được gọi là tài nguyên Găng.

VD: Giả sử 1 chương trình nào đó có 2 tiến trình P1 và P2 đang hoạt động đồng thời giống nhau

Tiến trình P1 phải đang tiến đến 1 đơn vị

Tiến trình P2 cũng tiến đến 1 đơn vị.

Với mục đích là tăng biến đếm lên 2 đơn vị thì chương trình có thể thực hiện như sau:

+B1:Tiến trình P1 ghi nội dung vào biến toàn cục (cộng thêm 1 vào biến đếm). Giá trị tăng ở biến cục bộ L1.

+B2:Tiến trình P2 ghi nội dung vào biến toàn cục đếm và ghi giá trị vào L2.

P1 thực hiện L1:=L1+1 =>Dem:=L1

P2 thực hiện L2:=L2+1 =>Dem:=L2;dem=+1

=>Bài toán trên cho thấy biến đếm tăng lên 2 đơn vị về mặt lí thuyết nhưng trên thực tế thì biến đếm chỉ tăng lên 1 đơn vị vì tiến trình P1 và tiến trình P2 sử dụng chung biến đếm, có sự tranh chấp về biến dùng chung 2 biến đếm. Nguyên nhân là cả 2 tiến trình P1 và P2 cùng truy xuất tới biến đếm. Trường hợp này có sự tranh chấp về biến dùng chung 2 biến đếm.

Đoạn mã lệnh sau dẫn đến tài nguyên Găng:

P1:Begin P2:Begin

P1:dem

L1:=L1+1

Dem:=L1

End;

L2:=dem

L2:=L2+1

Dem:=L2

End;

Do cả 2 đoạn mã lệnh đồng thời thực hiện=> biến toàn cục chỉ tăng lên 1 đơn vị =>biến đếm tạo sự tranh chấp, biến đếm là tài nguyên Găng.

VD2: Phòng kế toán: HĐH máy tính đa nhiệm đa người sử dụng. Phòng có 1 phần mềm quản lý do sv 07T1 viết. Điều kiện: Cho phép nhân viên kế toán được rút tiền trong tài khoản của phần mềm dùng chung khi và chỉ khi: tiền rút <= tài khoản (tài khoản - tiền rút >=0).

+Tiến trình rút tiền trên phần mềm được thực hiện như sau:

-Tiến hành ktra đkiện rút tiền: tài khoản.tiền rút >=0{Cho phép rút}

-Sẵn sàng chờ lệnh rút (Ready)

-Thực hiện rút (Running): Tài khoản = tài khoản - tiền rút

-Ngược lại ko rút tiền ( Block or Suspend)

Cụ thể, tại 1 thời điểm t có 2 nhân viên U20 và U21 thực hiện rút tiền, tức là có 2 tiến trình P1 và P2 thực hiện:giả sử trong tài khoản có 12.500.000đ

-U20 lệnh rút tiền trên phần mềm là 7.5tr ->phần mềm kiểm tra 12.5-7.5 = 5tr (cho phép), phần mềm chờ lênh rút(ready) ->U20 ko rút ngay mà bận buôn chuyện. Ngay lúc đó U21 cùng viết lệnh rút tiền với số tiền 6.5tr -> phần mềm ktra 12-6.5=6 > 0 ->phần mềm chờ lệnh. U21 rút ngay khi đó tài khoản còn 6tr. Sau thao tác này U20 quay trở lại rút tiền, phần mềm đã ktra xong đk nên ko ktra nữa => Cho rút -> xảy ra 6-7.5tr = 1.5tr<0 (vi phạm điều kiện rút)=>đây chính là nguyên nhân dẫn đến tài nguyên Găng.

-Đoạn mã lệnh:If (Tk rút) > 0 then {cho rút tiền} else {báo lỗi}

* Đoạn Găng: Đoạn mã lệnh trong các tiến trình đồng thời có tác động đến các tài nguyên có thể trở thành tài nguyên Găng, đoạn Găng hay miền Găng. Hay nói cách khác, các đoạn mã lệnh trong các chtrình để truy xuất đến các vùng nhớ chia sẻ, các tệp chia sẻ đoạn Găng.

VD3: Với VD2 đoạn Găng là đoạn mã lệnh {L1:=dem và dem:=L1;}

VD4: Với VD2 đoạn Găng là đoạn mã lệnh

P1:{L1=dem;

L1=++ ;

Dem=L1;

} P2:{L2=dem;

L2=++;

Dem=L2;

}

+Nếu có nhiều tiến trình cùng xin vào đoạn Găng thì chỉ có 1 tiến trình được vào đoạn Găng, các tiến trình khác phải xếp hàng đợi.

+Tiến trình nằm ngoài đoạn Găng không được ngăn cản tiến trình khác ở đoạn Găng.

+Ko có tiến trình nào được phép ở lâu vô hạn trong đoạn găng và không và không có 1 tiến trình nào phải chờ lâu mới vào đc đoạn Găng.

+Nếu tài nguyên Găng được giải phóng thì HĐH có nhiệm vụ đánh thức các tiến trình trong hàng đợi để tạo điều kiện cho nó vào đoạn Găng.

Bạn đang đọc truyện trên: Truyen2U.Pro

#kat