Upload
lang1234
View
230
Download
0
Embed Size (px)
Citation preview
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 1/26
ĐỀ CƯƠNG ÔN TẬP MÔN : HỆ ĐIỀU HÀNH
LÝ THUYẾT
1 ) Trình bày các phương pháp tránh tương tranh ( các giải thuật) ,… ,tài nguyên găng ?* Tiến trình (process) được định nghĩa thông qua các khái niệm sau :+ Trạng thái của hệ thống tính toán : là một bộ thông tin của tất cả các thành phần tronghệ thống tính toán tại một thời điểm nhất định.+ Một dẫy chuyển trạng thái của hệ thống tính toán ( ký hiệu : S0,S1,S2…,Sn) trong đó S0
là trạng thái ban đầu , Sn là trạng thái kết thúc thì được gọi là 1 tiến trình.Tiến trình là mộtchương trình đang chạy, mỗi chương trình có không gian địa chỉ riêng, đó chính là vùng bộ nhớ dành riêng cho chương trình.
Vùng bộ nhớ chứa cả chương trình,dữ liệu,.. cho chương trình đó.
Tiến trình Thread :- Nếu chương trình là chương trình của hệ thống => khi chạy sẽ là tiến trình hệthống.
- Nếu chương trình là chương trình của người sử dụng thì khi chạy sẽ là tiến trìnhcủa người sử dụng.
* Điều độ tiến trình là đảm bảo chương trình qua đoạn găng 1 cách hợp lý.+ Tại 1 thời điểm có không quá 1 chương trình vào đoạn găng.+ không chương trình nào chiếm đoạn găng trong thời gian vô hạn.+ không có chương trình nào chờ vô hạn trước khi vào đoạn găng.- Có 2 loại điều độ : - điều độ ở mức sơ cấp
- điều độ ở mức cao cấp.
* Các kỹ thuật điều độ chương trình- Kỹ thuật khóa trong : kỹ thuật này không phụ thuộc vào thiết bị, có thể áp dụng cho mọiloại ngôn ngữ.
+ nguyên lý : dùng thêm các biến với tư cách là tài nguyên chung chứa các gờ cho biết chương trình vào hay ra khỏi đoạn găng.
+ giả thiết : - 2 chương trình song song.- khả năng phục vụ của tài nguyên găng là 1.- mỗi chương trình chỉ có một đoạn găng.- các chương trình lặp vô hạn, nếu có kết thúc thì kết thúc ngoài đoạn
găng.+ thực hiện : mỗi chương trình dùng một byte cho bộ nhớ chung để làm khóa, khi vào
đoạn găng byte này được gán bằng 1.Khi sử dụng xong tài nguyên găng thì byte đượcgán bằng 0.Khi chuẩn bị vào đoạn găng mỗi chương trình phải kiểm tra khóa của chươngtrình khác , nếu có byte = 1 => phải chờ cho đến khi byte = 0 thì mới vào kiểm tra. dùng sơ đồ nguyên lý :Var turn : integer ;
par begin
1
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 2/26
Chương trình 1 Chương trình 2RepeatWhile ( turn <> 1 ) do ;Vao doan gang 1 ;Turn : = 2 ;Thuc hien cong viec khac 1 ;Until false ;
RepeatWhile ( turn <> 2 ) do ;Vao doan gang 2 ;Turn : = 1;Thuc hien cong viec khac 2 ;Until false ;Par end ;End;
Nếu công việc khác mà ngắn => 2 chương trình vẫn phải chờ nhau , mặc dù tài nguyên
găng không được sử dụng.Dùng 2 biến C1 , C2 cho 2 chương trình và thực hiện như sau :var C1 , C2 : integer ; beginC1:= 0 ; C2:= 0; par begin
Chương trình 1 Chương trình 2RepeatWhile ( C2 > 0 ) do ;C1:= 1 ;Vao doan gang 1 ;
C1:=0 ;Thuc hien cong viec khac 1 ;Until false ;
RepeatWhile ( C1 > 0 ) do ;C2:= 1 ;Vao doan gang 2 ;
C2:= 0 ;Thuc hien cong viec khac 2 ;Until false ;Par end ;End ;
Ưu điểm : không đòi hỏi công cụ đặc biệt và có thể sử dụng bất kỳ cho các loại máy tùyý.có thể vận dụng phát huy tài nguyên. Nhược điểm :
* Giải thuật Dekkensử dụng 3 biến C1 , C2 , ttvar C1 , C2 , tt : integer ;
BeginChương trình 1 Chương trình 2
2
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 3/26
RepeatC1:= 1 ;While ( C2 = 1) do;BeginIf ( tt =2 ) then begin
C1:= 0 ;While (tt = 2) do ;C1:=1 ; end ;End;Vao doan gang 1 ;C1:= 0 ; tt:= 2 ;Thuc hien cong viec khac 1;Until false ;
RepeatC2:= 1;While ( C1 = 1) do ;BeginIf ( tt = 1) then begin
C2:= 0 ;While (tt = 1) do ;C2:= 1 ; end ;End ;Vao doan gang 2 ;C2:= 0 ; tt:= 1;Thuc hien cong viec khac 2;Until false ;Par end ;End ;
Nhược điểm : phức tạp, tỉ lệ, số lượng chương trình.* Phương pháp kiểm tra và xác lập ( test and set )Dùng lện TS cho phép thực hiện nhiều công việc liên tục, các công việc này tạo thành hệlệch nguyên tố không chỉ thực hiện 1 công việc.Procedure TS var local : integer ;Beginlocal := global ;global := 1 ;end; Nguyên lý :
- 2 lệnh trên được thực hiện liên tục không chia rẽ .
- Mỗi chương trình sử dụng local riêng của nó và biến global của toàn chươngtrình.Quá trình TS được thực hiện theo sơ đồ sau :var lc1 , lc2 : integer ;global : integer ;Beginglobal := 0 ; par begin
Chương trình 1 Chương trình 2Repeatlc1 := 1 ;
while lc1 := 1 do TS ( lc1 ) ;vao doan gang 1;global := 0 ;thuc hien cong viec khac 1 ;until false ;
Repeatlc2 := 1 ;
while lc2 := 1 do TS (lc2 ) ;vao doan gang 2 ;global := 0 ;thuc hien cong viec khac 2 ;until false ; par end ;end ;
3
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 4/26
Ưu điểm : khắc phục được độ phức tạp của thuật toán vì không phụ thuộc vào số lượngchương trình Nhược điểm : vẫn còn hiện tượng chờ đợi tiếp tục.* Phương pháp đèn báo- Nguyên lý : hệ thống sử dụng một biến đèn báo nguyên đặc biệt gọi là Semaphore (S).
Ban đầu S nhận giá trị bằng khả năng phục vụ tài nguyên găng.Hệ thống có 2 thao táctrên S là : P(S) và C(S). Mỗi lệnh này thực hiện 2 công việc 1 cách liên tục , các côngviệc trong các lệnh này không được chia rẽ.+ P(S) thực hiện 2 công việc : - giảm S = S -1 .
- kiểm tra S < 0 => chương trình xếp hàng+ V(S) thực hiện 2 công việc : - tăng S = S + 1
- kiểm tra S ≤ 0 => kích hoạt chương trình đang xếp hàng.Sơ đồ :var S : integer ; beginS := 1 ;
par begin chương trình 1 chương trình 2repeatP(S)vao doan gang 1 ;V(S)thuc hien cong viec khac 1 ;until false ;
repeatP(S)vao doan gang 2;V(S)thuc hien cong viec khac 2 ;until false ; par end ;end ;
Ưu điểm : chống được hiện tượng chờ đợi tích cực* Tài nguyên găng :là tài nguyên mà trong một khoảng thời gian nhất định chỉ phục vụ hợp lý cho một số hữuhạn các chương trình => được gọi là tài nguyên găng.Đoạn găng là đoạn chương trình sử dụng tài nguyên găng còn lại được gọi là chỗ hẹp.
Trong khoảng thời gian tài nguyên sử dụng tiến trình thì gọi là chương trình găng.2) Trình bày các phương pháp phân trang, phân đoạn bộ nhớ, các chiến lược quản lýbộ nhớ 2.1 – Cấu trúc phân đoạn :Chương trình được biên tập từng modun độc lập riêng rẽ, kết quả tập hợp chương trình làmột bảng điều khiển cho biết độ dài mỗi modun và chương trình sử dụng modun nào,
bảng điều khiển có tên Segment Control Block (SCB) .Hệ thống nạp tiếp các modun mới khi bộ nhớ còn đủ chỗ trống, nếu thiếu bộ nhớ sẽ đưa bớt ra ngoài một số modun. Nhược điểm : hiệu quả sử dụng bộ nhớ phụ thuộc vào cách phân chia chương trình thànhcác modun độc lập . Nếu tồn tại vài modun có độ dài lớn => hiệu quả sử dụng bộ nhớ thấp.Cấu trúc này chỉ áp dụng được khi bộ nhớ được quản lý theo kiểu phân đoạn2.2 – Cấu trúc phân trang :
4
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 5/26
chương trình được tập hợp như trong tập hợp cấu trúc tuyến tính, do đó được phân thànhnhiều phần bằng nhau gọi là các trang. Sau khi biên tập ta được bản quản lý trang với mỗi phần tử ứng với một trang chương trình.Đặc điểm : chỉ phát huy được hiểu quả khi bộ nhớ được quản lý theo chiến lược phântrang.
2.3 – Chiến lược quản lý bộ nhớ :2.3.1 chiến lược chương cố địnhkhi khởi động bộ nhớ chính được chia thành nhiều phần gọi là các chương,chương trìnhnào có kích thước nhỏ hơn hoặc bằng kích thước của chương thì được nạp vào chươngđó. Nếu chương trình có kích thước lớn hơn thì phải dùng cơ chế Overlay.Đặc điểm : có thể phân mảnh nội* Thay thế :khi kích thước các chương trình bằng nhau thì :
- Nếu còn chương trống thì chương trình được nạp vào.- Nếu không còn chương trống thì phải thực hiện cơ chế Swapin
Khi kích thước các chương khác nhau :- Giải pháp 1 : gán mỗi chương trình vào chương nhỏ nhất hợp với nó,như vậy mỗichương có một hàng đơi tương ứng.
- Giải pháp 2 : dùng một hàng đợi chung cho mọi chương thì hệ thống phải lựachọn chương nhỏ nhất hợp với nó.
2.3.2. Chiến lược chương động- số lượng và kích thước các chuông không cố định, mỗi chương trình được cấp phátchính xác dung lượng cần thiết sẽ tránh được sự phân mảnh nội, nhưng lại xuất hiện hiệntượng phân mảnh ngoại.- chiến lược thay thế :+ chiến lược Best-fit : chọn khối nhớ trống nhỏ nhất.+ chiến lược First – fit : chọn khối nhớ trống đầu tiên từ đầu bộ nhớ.+ chiến lược Next –fit : chọn khối nhớ trống phù hợp đầu tiên.+ chiến lược worst – fit : chọn khối nhớ trống lớn nhất2.3.3 Chiến lược phân trang.- Chiến lược này cho phép không gian địa chỉ thực hiện của chương trình có thể.- Bộ nhớ thực: Khối C bằng nhau, mỗi khối được gọi là Frame, kích thước 512 B đến
16 MB- Bộ nhớ loogic: là tập hợp mọi địa chỉ mà 1 chương trình có thể sinh ra, được chia thànhkhối cố định có kích thước bằng nhau, mỗi khối được gọi là Page.- Do đó HĐH phải thiết lập 1 bảng phân trang (Page table) để ánh xạ địa chỉ logic thành 1địa chỉ thực. Mỗi chương trình cí 1 bảng phân trang được quản lý bằng 1 con trỏ lưu trữtrong1 khối quản lý chương trình (PCB).- Đặc điểm: Cơ chế phân trang làm cho bộ nhớ bị phân mảnh nội nhưng khắc phục được phân mảnh ngoại* Cách chuyển đổi địa chỉ :
- địa chỉ logic
p : page number d : page offset ( độ lệch hay độ rời của ngăn nhớ ).Giả sử d có độ dài m bit
p d
5
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 6/26
=> kích thước trang = 2m
kích thước trường p = n- m bit có độ tối đa 2n – m trang. bảng phân trang chia thành các trang tương ứng , nội dung ứng với các frame của
địa chỉ vật lý.
f d
page table bộ nhớ vật lý
VD : bộ nhớ vật lý có kích thước = 32 byte , mỗi trang có kích thước = 4 byteBảng phân trang :
5612
Bộ nhớ logic : bộ nhớ logic :0 0
6
CPU P d
f
f
d
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 7/26
1 12 23 34 45 5
6 67 78 89 910 1011 1112 1213 1314 1415 1516 16
171819202122232425262728293031
+ Địa chỉ logic 1 : ta có 0/4 = 0 dư 0 => độ rời = 0 , f = 0 => trang 5=> 5 x 4 + 0 = 20
+ Địa chỉ logic 2 : 2/4 = 0 dư 2 => độ rời = 2 , f = 0 => trang 5=> 5 x 4 + 2 = 22
+ Địa chỉ logic 3 : 9/4 = 2 dư 1 => độ rời = 1 , f = 2 => trang 1=> 1 x 5 + 1 = 5
* Hiện thực bảng phân trang- Bảng phân trang được lưu trữ trong bộ nhớ chính , mỗi chương trình được HĐH cấpcho 1 bange phân trang, do nằm trong bộ nhớ chính nên nó phải có 1 thanh ghi trở tới bảng phân trang.Thanh ghi trở tới bảng này gọi là trở bảng phân trang.( PTPR )Để tăng tốc độ truy cập người ta dùng các thanh ghi liên kết hay bộ nhớ kết hợp gọi là(TLB) – Trans lation look – aside Buffer.- Cấu trúc của TLB là bảng bao gồm nhiều phần tử , mỗi phần tử có 2 trường . Mộttrường là p là trường logic , 1 trường là f là trường vật lý tương ứng.
7
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 8/26
p f
Bộ nhớ vật lýTLB
page table
* Bảo vệ bộ nhớ :Để bảo vệ bộ nhớ => gắn frame với các bit bảo vệ, các bit này nằm trong bảng phân
trang biểu thị các thuộc tính chỉ đọc,ghi, chỉ thục thi.Ngoài các bit bảo vệ người ta còn thêm bit hợp lệ hay không hợp lệ, bit này gọi là
valid => cho biết trang đó là trang của chương trình, đó là trang hợp lệ, nếu là invalid =>đó là trang không hợp lệ hay trang đó không là trang của chương trình.* Bảng phân trang đa mứcKhông gian địa chỉ logic rất lớn ( 32 – 64 bit)VD : 32 bit mã hóa được 232 = 4 G địa chỉ có 220 = 1 M mục ( trang )
Giả sử 1 trang có kích thước 4 KB = 212 Ggiả sử 1 mục = 4 byte
= > kích thước bảng phân trang : 4 Mb => lãng phíGiải pháp : thực hiện phân trang đa mức bằng cách phân trang lại được phân trang tiếp,sau khi phân trang vẫn tốn bộ nhớ nên chỉ giữ lại những trang cần thiết ( 4 M => 1K trang ).
-
P1 : cho biết chỉ số trang trong bảng phân trang mức 1P2 : cho biết chỉ số trang trong bảng phân trang mức 2 Như vậy khi truy cập bộ nhớ thì :
P1 P2 d
8
Pi f i
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 9/26
P2 P FP1
Outer page các bảng phân trang mức 2 bộ nhớ vật lý
- Ở bảng phân trang mức 1 có 2P1 mục- Ở bảng phân trang mức 2 có 2P2 mụcChia sẻ các trang nhớ :1 chương trình có thể dùng chung nhiều phần nhớ khác nhau.2.3.4. Cơ chế phân đoạn- Trong thực tế 1 chương trình được cấu thành bởi nhiều đoạn , mỗi đoạn là một đơnvị logic của chương trình.- Khi biên dịch thì trình biên dịch cũng tự động tạo thành các đoạn, khi được gọi thìhệ thống sẽ gán cho mỗi đoạn 1 định dạnh (ID) , mỗi đoạn sẽ được gán một số riêng biệt.
- Địa chỉ logic là một tập hợp các đoạn và mỗi đoạn có định dạnh và kích thước riêng biệt. Một địa chỉ logic sẽ xác định bởi các tên đoạn và độ rời.- Các tham số : base : địa chỉ cơ sở. ; bảng phân đoạn :limit : độ dài của đoạn
- Thanh ghi cơ sở của bảng phân đoạn ( STBR ) cho ta biết địa chỉ cơ sở của bảng phân đoạn.
- Thanh ghi chỉ số lượng của đoạn (STLR) , thanh ghi này cho biết số lượng củachương trình, do đó khi truy cập đến đoạn S , đoạn S chỉ hợp lệ nếu S < STLR.
VD : một chương trình có 5 đoạn , đoạn 1 chứa procedure.
Bảng phân đoạn :
limit base
limit base1000 1400400 6300400 4300
1100 32001000 4700
9
CPU P1 P2 d
f
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 10/26
0123
4 1400
3200S0
S3 4300
4700
S1
S2 S4 63006300
Không gian logic
Segment - table Không gian vật lý+ Khi truy cập :
S
địa chỉ vật lýyes
No
Lỗi
15 12 11 0VD : địa chỉ :
10
procedure
Symbol table
stack main program
function
procedure
function
stack
Symboltable
mainprogram
limit base
0001 0010 1111 0000
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 11/26
S# dlimit base
0
1
Tìm địa chỉ vật lý ?
địa chỉ vật lý
* Chia sẻ đoạn :
P1
P2
* Kết hợp phân trang và phân đoạn nhằm kết hợp các ưu điểm , hạn chế các khuyết điểmcủa từng phương pháp.- Phân trang : khuyết điểm : tách rời tầm nhìn của người sử dụng với địa chỉ logic.- Phân đoạn : khuyết điểm : khi kích thước lớn thì ta có thể không nạp được vào bộ nhớ.=> kết hợp lại bằng cách phân trang các đoạn => đó được gọi là cơ chế Segmentationwith paging.Để kết hợp => trong mỗi chương trình phải có :+ 1 bảng phân đoạn.+ Ứng với mỗi đoạn lại có một bảng phân trang => 1 chương trình có nhiều bảng phântrang.
limit base1000 4300500 6200
limit base1000 4300400 6700
11
0111 1001 1110 0010 0000 0010 0000
0010 0011 0001 0000
Program
Data
Program
Data
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 12/26
+ 1 địa chỉ logic bao gồm :
+ S# : Segement number : cho biết nó nằm ở đoạn nào.+ P# : Page number : cho biết nó nằm ở trang nào trong đoạn.+ Offset : độ lệch hay độ rời để xác định độ rời trong frame.
VD : Bảng phân trang f 0Bảng phân đoạn
0 f 1 1 f 2
2 f 3
3 f 4
4 f 5
15 f 6
f 7
f 8
10 f 9135
f 10
190f 11
* Bảo vệ bộ nhớ :Để bảo vệ tốt bộ nhớ :trong bảng phân đoạn người ta thêm vào các bit chứa các thông tin bảo vệ và chia sẻ.
Bảng phân đoạn
Bảng phân trang
P : PresentM : Modified.
BÀI TẬP
1.Bài tập về Deadlock ( tắc nghẽn )
S# P# offset
12
3279
1568
0 3 10
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 13/26
* Bài toán kiểm tra xem hệ thống có ở trạng thái an toàn không ?Trạng thái an toàn là trạng thái mà khi có hệ thống đó tồn tại 1 chuỗi con toán.Vd1 : 1 hệ thống có 3 chương trình : P0 , P1, P2 .ở thời điểm t0 ; TN : băng từ (12 )Chương trình :
Chương trình Tối đa Đường giữP0 10 5P1 4 2P2 9 2
Hỏi hệ thống này có an toàn không ?Bài giải :Tổng số TN = 12 , chương trình đang giữ 9 còn lại 3 TN
Chuỗi (P0 , P1, P2 ) không an toàn(P0 ,P2 , P1) không an toàn(P1 ,P0, P2 ) an toàn
hệ thống đang ở trạng thái an toàn.Vd2 :
P0 10 5P1 4 2P2 9 3
Ta có : tổng = 12 ,đường giữ 10 còn lại 2
chuỗi (P0 , P1, P2 ) không an toànchuỗi (P0 ,P2 , P1) không an toànchuỗi (P1 ,P0, P2 ) không an toànchuỗi ( P1, P2,P0 ) không an toànchuỗi ( P2,P0,P1) không an toànchuỗi (P2 ,P1,P0) không an toàn hệ thống không an toàn
* Giải thuật tìm một chuỗi an toànB1 : work , finish , 2 vecto có độ dài m,nWork = available
Finish[i] = false ∀ iB2 : tìm i thỏa mãn : Finish[i] = false
Need i ≤ work ; ( Need i : hàng i của Need ) Nếu không ∃ i thỏa mãn điều kiện trên => B4B3 : work = work + allocation iFinish[i] = true ;Quay về B2 .B4 : nếu finish[i] = true ∀ i => hệ thống ở trạng thái an toàn
13
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 14/26
VD1 : có 5 chương trình P0 ,P1,P2,P3,P4 có 3 TN : A,B,C trong đó A = 10 , B = 5, C = 7Tại thời điểm t0 :
Available Max allocation Need work A B C A B C A B C A B C A B C
P0 3 3 2 7 5 3 0 1 0 7 4 3 3 3 2P1 3 2 2 2 0 0 1 2 2 5 3 2P2 9 0 2 3 0 2 6 0 0 7 4 3P3 2 2 2 2 1 1 0 1 1 7 5 3P4 4 3 3 0 0 2 4 3 1 10 5 5
7 2 5 10 5 7
B1 :work = available = { 3 ,3 ,2 }Finish[i] = false ∀ i
B2 :
Need ≤ work => i = 1 => finish[1] = true => work = work + allocation 1i = 3 => finish[3] = true => work = work + allocation 3i = 0 => finish[0] = true => work = work + allocation 0i = 2 => finish[2] = true => work = work + allocation 2i = 4 => finish[4] = true => work = work + allocation 4
=> hệ thống đang ở trạng thái an toàn=> chuỗi an toàn (P1,P3, P0,P2,P4)VD2 :Một hệ thống có 4 TN và cùng loại có 3 chương trình,mỗi chương trình cần tối đa 2 TN.Hãy chứng tỏ hệ thống không bị Deadlock ( nguyên A = 4 )
Max allocation ( giả sử có các trường hợp )P0 2P1 2
P2 2
GIẢI :- Trường hợp 1 :
Available Max Allocation Need Work P0 0 2 2 0 0P1 2 2 0 2P2 2 0 2 4
4 4
work = available = 0 . finish[i] =false ∀ i.
Need ≤ work : i = 0 => finish[0] = true => work = work + allocation 0 ;i = 1 => finish[1] = truei = 2 => finish[2]= true
2 1 1 0 0 0 0 0
2 2 1 2 1 0 1 1
0 1 1 0 0 0 2 1
14
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 15/26
=> hệ thống đang ở trạng thái an toàn.=> chuỗi an toàn (P0,P1,P2) ;
- Trường hợp 2 :
Available Max allocation need work
P0 0 2 1 1 0P1 2 2 0 2P2 2 1 1 3
4 4B1 :Work = available = 0 ;Finish = false ∀ i.B2 : need ≤ work : i =1 => finish[1] = true .
i = 0 => finish[0] = truei = 2 => finish[2] = true.
=> hệ thống đang ở trạng thái an toàn.
=> chuỗi an toàn (P1, P0, P2).* Các trường hợp khác làm tương tự .
* GIẢI THUẬT CẤP PHÁT TÀI NGUYÊN
Vecto request (n x m) request[i, j] = k Tức là chương trình Pi cần thêm k thực thể R j.Cấp phát qua các bước :B1 : request i ≤ need i => chuyển sang B2, nếu không thì báo lỗi.B2 : request i ≤ available => chuyển sang B3 nếu không thì Pi phải chờ.B3 : giả sử cấp phát để thỏa mãn yêu cầu của Pi thì lúc đóAvailable = available – request i ;Allocation = allocation i + request i ; Need i = need i – request i ;Tiếp tục áp dụng giải thuật kiểm tra trạng thái an toàn,nếu trạng thái là an toàn thì TNđược cấp phát thực sự cho Pi ,nếu không thì Pi phải đợi và khôi phục trạng thái hệ thống bằng cách : available = available + request i ;
Allocation = allocation i – request i ;Need i = need i + request i ;
Vd : giả sử hệ thống đang ở trạng thái :Available Max allocation need
P0 3 3 2 7 5 3 0 1 0 7 4 3P1 3 2 2 2 0 0 1 2 2P2 9 0 2 3 0 2 6 0 0P3 2 2 2 2 1 1 0 1 1P4 4 3 3 0 0 2 4 3 1
7 2 5a) nếu P1 yêu cầu các TN( 1, 0 ,2) có được thỏa mãn không ?
15
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 16/26
Available Max allocation need requestP0 3 3 2 7 5 3 0 1 0 7 4 3P1 3 2 2 2 0 0 1 2 2 1 0 2P2 9 0 2 3 0 2 6 0 0
P3 2 2 2 2 1 1 0 1 1P4 4 3 3 0 0 2 4 3 17 2 5
GIẢI :B1 : request 1 ≤ need 1 => B2.B2 : request 1 ≤ available => B3.B3 : giả sử cấp phát để thảo mãn yêu cầu của Pi thì :Available = available - request 1 = 2 3 0 ;Allocation = allocation 1 + request 1 = 3 0 2 ; Need = need 1 – request 1 = 0 2 0 ;
Áp dụng giải thuật kiểm tra trạng thái an toàn ,co bảng mới :Available Max allocation need request work P0 2 3 0 7 5 3 0 1 0 7 4 3 2 3 0P1 3 2 2 3 0 2 0 2 0 1 0 2 5 3 2P2 9 0 2 3 0 2 6 0 0 7 4 3P3 2 2 2 2 1 1 0 1 1 7 5 3P4 4 3 3 0 0 2 4 3 1 10 5 5
7 2 5 10 5 5Có work = available = {2 ,3 ,0}
Finish[i] =false ∀ i. Need i ≤ work i = 1 => finish[1] = true.i = 3 => finish[3] = true.i = 0 => finish[0] = true.i = 2 =>finish[2] = true.i = 4 => finish[4] = true.=> hệ thống đang ở trạng thái an toàn=> hệ thống cấp phát tài nguyên cho P1. b) nếu P4 yêu cầu (3, 3, 0) có được thỏa mãn không ?
Available Max allocation need requestP0 3 3 2 7 5 3 0 1 0 7 4 3P1 3 2 2 2 0 0 1 2 2P2 9 0 2 3 0 2 6 0 0P3 2 2 2 2 1 1 0 1 1P4 4 3 3 0 0 2 4 3 1 3 3 0
7 2 5GIẢI :B1 : request 4 ≤ need 4 ;B2 : request 4 ≤ available ;B3 : giả sử cấp phát để thỏa mãn yêu cầu của P4 thì :
16
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 17/26
available = available – request 4 = 0 0 2available = allocation 4 + request 4 = 3 3 2need = need 4 – request 4 = 1 0 1áp dụng giải thuật kiểm tra trạng thái an toàn => có bảng mới :
Available Max allocation need request work
P0 0 0 2 7 5 3 0 1 0 7 4 3 0 0 2P1 3 2 2 2 0 0 1 2 2P2 9 0 2 3 0 2 6 0 0P3 2 2 2 2 1 1 0 1 1P4 4 3 3 3 3 2 1 0 1 3 3 0 không ∃ need ≤ work => hệ thống ở trạng thái không an toàn => P4 không được
cấp phát tài nguyên => P4 phải đợi và khôi phục trạng thái hệ thống bằng cách :available = available + request 4 = 3 3 2allocation = allocation 4 – request 4 = 0 0 2need = need 4 + request 4 = 4 3 1 hệ thống trở về trạng thái ban đầu
Available Max allocation needP0 3 3 2 7 5 3 0 1 0 7 4 3P1 3 2 2 2 0 0 1 2 2P2 9 0 2 3 0 2 6 0 0P3 2 2 2 2 1 1 0 1 1P4 4 3 3 0 0 2 4 3 1
7 2 5
* GIẢI THUẬT PHÁT HIỆN DEADLOCK
B1 : work , finish
work = availablefinish[i] =false ∀ iB2 : tìm i thỏa mãn : finish[i] = false
request i ≤ work nếu không ∃ i thỏa mãn yêu cầu trên => B4;B3 : work =work + allocation i
rồi quay về B2finish[i] = true
B4 : nếu ∃ i với finish[i] = false => hệ thống bị Deadlock chương trình Pi bị deadlock.
VD : có 5 chương trình P0 ,P1,P2,P3,P4 và 3 tài nguyên A(7) ,B(2) và C(6)Available requestP0 0 1 0 0 0 0P1 2 0 0 2 0 2P2 3 0 3 0 0 0P3 2 1 1 1 0 0P4 0 0 2 0 0 2hỏi hệ thống có bị deadlock không ?
17
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 18/26
GIẢI :
allocation request available work P0 0 1 0 0 0 0 0 0 0 0 0 0P1 2 0 0 2 0 2 0 1 0
P2 3 0 3 0 0 0 3 1 3P3 2 1 1 1 0 0 5 2 4P4 0 0 2 0 0 2 5 2 6
7 2 6 7 2 6B1 :
work = availablefinish[i] =false ∀ i.
B2 : request i ≤ work i = 0 => finish[0] = true => work = work + allocation 0i = 2 => finish[2] = true => work = work + allocation 2
i = 3 => finish[3] = true => work = work + allocation 3i = 4 => finish[4] = true => work = work + allocation 4i = 1 => finish[1] = true => work = work + allocation 1=> chuỗi (P0,P2,P3,P4,P1) an toàn => hệ thống không bị deadlock * Nếu P2 yêu cầu thêm 1 thực thể C thì hệ thống có bị deadlock không ?
allocation request available work P0 0 1 0 0 0 0 0 0 0 0 0 0P1 2 0 0 2 0 2 0 1 0P2 3 0 3 0 0 1P3 2 1 1 1 0 0P4 0 0 2 0 0 2
7 2 6B1 : work = available
finish[i] = false ∀ iB2 : i = 0 => finish[0] = truekhông có request nào nhỏ hơn => hệ thống bị deadlock chương trình bị deadlock là (P1,P2,P3,P4) II-BÀI TẬP VỀ ĐỊNH THỜI GIAN CPU 1) giải thuật first come first servered ( chương trình đưa ra yêu cầu trước sẽ đượccấp phát CPU trước)- dùng danh sách FIFO1 chương trình được thực thi cho đến khi phải chờ hay kết thúc.VD : giả sử tại một thời điểm có 3 chương trình : P1,P2,P3
dùng giải thuật FCFS
P1 P2 P3
0 24 27 30thời gian chờ trung bình :
18
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 19/26
P1 = 0 msP2 = 24 msP3 = 27 ms
=>0 24 27
3
+ += 17 ms
- nếu thứ tự yêu cầu là P2,P3,P1
P2 P3 P1
0 3 6 30thời gian đợi của các chương trình : P1 = 6
P2 = 0P3 = 3
thời gian chờ trung bình :6 0 3
3
+ += 3 ms
đặc điểm FCFS : không công bằng với chu kỳ CPU ngắn do các chương trình này phảichờ trong thời gian dài,giải thuật này không phù hợp với các hệ thống chiwa sẻ thời
gian,thường được sử dụng trong các hệ thống bó.2) giải thuật shortest job first (SJF)Nguyên lý : gán cho mỗi chương trình chiều dài của chu kỳ CPU tiếp theo mà khi CPUsắn sàng thì nó được gán cho chương trình có chu kỳ CPU ngắn nhất.VD :
Chương trình Thời điểm đến Thời gian xử lý
P1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4
GIẢI :lưu đồ Gantt theo giải thuật SJF
P1 P3 P2 P3
thời gian đợi trung bình : P1 = 0 ; P3 = 3 ; P2 = 6 ; P4 = 7
0 3 6 7
4
+ + += 4 ms
Tính theo FCFS
P1 P3 P2 P3
0 7 11 12 16
thời gian chờ trung bình : P1 = 0 , P2 = 5 , P3 = 7 , P4 = 7=>
0 5 7 7
4
+ + +
= 4,75 ms
Ưu điểm : tối ưu trong công việc giảm thời gian đợi chu kỳ. Nhược điểm : phải ước lượng thời gian cần CPU tiếp theo.Độ ưu tiên : công việc ngắn được ưu tiên trước.3) Giải thuật Shortest Remaining Time First (SRTF)Lưu đồ :
19
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 20/26
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16thời gian chờ trung bình : P1 = 9 ; P2 = 1 ; P3 = 0 ; P4 = 2
=> 9 1 0 24
+ + + = 3 ms
Đặc điểm : tránh được trường hợp các chương trình có thời gian dài độc chiếm CPU , cóthời gian hoàn thành tốt hơn giải thuật SJFĐộ ưu tiên : ưu tiên chương trình có thời gian thực thi ngắnquản lý thời gian thực thi còn lại của các chương trình.4) Giải thuật Round Robin (RR) :VD :
Chương trình Thời gian thực hiệnP1 24P2 3
P3 3TQ = 2.P1 P2 P3 P1 P2 P3 P1 P1 … … P1
thời gian đợi trung bình : P1 = 6 ; P2 = 6 ; P3 = 7
=>6 6 7
3
+ +≈ 6,33 ms
VD2 :
P1 53P2 17P3 68P4 24
TQ = 20
0 20 37 57 77 97 117 121 134 154 162
=> thời gian chờ trung bình : P1 = 81 ; P2 = 20 ; P3 = 94
=>
81 20 94
3
+ +
= 65 ms
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
20
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 21/26
BÀI TẬP CHUNG CHO CÁC GIÁ TRỊ ĐỊNH THỜI CPU
Bt1:
Chương trình Thời gian thực hiện Thời gian đếnP1 10 0
P2 29 0P3 3 0P4 7 0
P5 12 0QT=10xét các giải thuật FCFS, SJF, SRTF, RR.Giải thuật nào cho thời gian chờ đợi trung bình nhỏ nhất , thời gian hoàn thành , thời gianđáp ứng .Giải :- Giải thuật FCFS
lưu đồ :P1 P2 P3 P4 P5
0 10 39 42 49 61thời gian chờ đợi trung bình : P1 = 0 ; P2 = 10 ; P3 = 39 ; P4 = 42 ; P5 = 49 ;
=>0 10 39 42 49
5
+ + + += 28 ms
Thời gian hoàn thành : P1 = 10 ; P2 = 39 ; P3 = 42 ; P4 = 49 ; P5 =61
=>10 39 42 49 61
5
+ + + += 40,2 ms
Thời gian đáp ứng : P1 = 0 ; P2 = 10 ; P3 = 39 ; P4 = 42 ; P5 = 49 ;=>
0 10 39 42 49
5
+ + + += 28 ms.
- Giải thuật SJF :Lưu đồ :
P1 P3 P4 P5 P2
0 10 13 20 32 61Thời gian đợi trung bình : P1 = 0 ; P2 = 32 ; P3 = 10 ; P4 = 13 ; P5 = 20 .
=>0 32 10 13 20
5
+ + + += 15 ms
Thời gian hoàn thành : P1 = 10 ; P2 = 61 ; P3 = 13 ; P4 = 20 ; P5 = 32.
=>10 61 13 20 32
5
+ + + +
= 27,2 ms.
Thời gian đáp ứng : P1 = 0 ; P2 = 32 ; P3 = 10 ; P4 = 13 ; P5 = 20 .
=>0 32 10 13 20
5
+ + + += 15 ms
- Giải thuật SRTF :lưu đồ : giống giải thuật SJF do thời điểm đến cùng bằng nhau.
21
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 22/26
- Giải thuật RR :Lưu đồ :
P1 P2 P3 P4 P5 P2 P5 P2
0 10 20 23 30 40 50 52 61
Thời gian chờ trung bình : P1 = 0 ; P2 = 32 ; P3 = 20 ; P4 = 23 ; P5 = 40 .=>
0 32 20 23 40
5
+ + + += 23 ms
Thời gian tiến hành : P1 = 10 ; P2 = 61 ; P3 = 23 ; P4 = 30 ; P5 = 52.
=>10 61 23 30 52
5
+ + + += 35,2 ms
Thời gian đáp ứng : P1 = 0 ; P2 = 10 ; P3 = 20 ; P4 = 23 ; P5 = 30.
=>0 10 20 23 30
5
+ + + += 16,6 ms
BT2 :
Chương trình Thời gian đến Thời gian xử lýP1 0.0 8P2 0.4 4P3 1.0 1
Tính thời gian đợi,thời gian hoàn thành, thời gian đáp ứng. ( bằng các giải thuật FCFS ,SJF, SRTF , RR )GIẢI :- Giải thuật FCFS :Lưu đồ :
P1 P2 P3
0 8 12 13Thời gian đợi trung bình : P1 = 0 ; P2 = ( 8 – 0,4) = 7,6 ; P3 = 11.
=>0 7,6 11
3
+ += 6,2 ms
Thời gian hoàn thành : P1 = 8 ; P2 = (12-0,4) = 11,6 ; P3 = 12.
=>8 11,6 12
3
+ += 10,5 ms
Thời gian đáp ứng : P1 = 0 ; P2 = ( 8 – 0,4) = 7,6 ; P3 = 11.
=>
0 7,6 11
3
+ += 6,2 ms
- Giải thuật SJF :Lưu đồ :
P1 P3 P2
0 8 9 13Thời gian chờ đợi trung bình : P1 = 0; P2 = (9=0,4) = 8,6 ; P3 = 7
22
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 23/26
=>0 8,6 7
3
+ += 5,2 ms
Thời gian hoàn thành : P1 = 8 ; P2 = (13- 0,4) = 12,6 ; P3 = 8
=>8 12,6 8
3
+ += 9,53 ms
Thời gian đáp ứng : P1 = 0; P2 = (9=0,4) = 8,6 ; P3 = 7
=>0 8,6 7
3
+ += 5,2 ms
- Giải thuật SRTF :Lưu đồ :
P1 P2 P3 P2 P1
0 0,4 1 2 5,4 13Thời gian chờ trung bình : P1 = 5 ; P2 = 1 ; P3 = 0.
=>5 1 0
3
+ += 2 ms
Thời gian hoàn thành : P1 = 13 ; P2 = 5 ; P3 = 1.
=>13 5 1
3
+ += 6,3 ms
Thời gian đáp ứng : P1 = 0 ; P2 = 0 ; P3 = 0.
=>0 0 0
3
+ += 0 ms
- Giải thuật RR :Lưu đồ :
P1 P2 P3 P1 P2 P1 P2 P1 P2 P1 P1 P1 P1
0 1 2 3 4 5 6 7 8 9 13
Thời gian chờ trung bình : P1 = 5 ; P2 = 4,6 ; P3 = 1
=>5 4,6 1
3
+ += 5,33 ms
Thời gian hoàn thành : P1 = 13 ; P2 = (9 – 0,4) = 8,6 ; P3 = 2
=>13 8,6 2
3
+ += 7,9 ms
Thời gian đáp ứng : P1 = 0 ; P2 = (1- 0,4) = 0,6 ; P3 = 1
=>0 0,6 1
3
+ += 0,53 ms
BÀI TẬP VỀ BỘ NHỚ ẢO
- Giải thuật thay trang tối ưu ( OPT) thay trang không được sử dụng lâu nhất.VD : 1 chương trình có 5 trang nhưng chỉ được cấp phát cho 3 frame và chuỗi tham chiếutrang nhớ của nó là : 2321.5245.3252 . Khi tham chiếu
2 3 2 1 5 2 4 5 3 2 5 2
23
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 24/26
222
=> có 3 page fault
VD2 :cho chuỗi tham chiếu các trang nhớ sau : 1234.2156.2123.7632.1236số trang cấp phát là 4
1 2 3 4 2 1 5 6 2 1 2 3 7 6 3
2 1 2 3 6
4 page fault.- Giải thuật LRU : thay thế trang không được tham chiếu lâu nhất.VD1 : cho chuỗi 2321.5245.3252 , có 3 frame
2 3 2 1 5 2 4 5 3 2 5 2
=> 4 page fault.VD2 : cho chuỗi : 1234.2156.2123.7632.1236 , cấp phát cho 4 frame
1 2 3 4 2 1 5 6 2 1 2 3 7 6 3
2 1 2 3 6
6 page fault.- Giải thuật FIFO : trang nào vào trước sẽ được thay thế trước
24
2 23
23
231
235
235
435
435
435
235
235
235
1 12
123
1234
1234
1234
1235
1236
1236
1236
1236
1236
7236
7236
7236
7
236
1
236
1
236
1
236
1
236
2 23
23
231
251
251
254
254
354
352
352
352
1 12
123
1234
1234
1234
1254
1256
1256
1256
1256
1236
1237
6237
6237
6237
6231
6231
6231
6231
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 25/26
VD1 : cho chuỗi 2321.5245.3252 , cấp phát cho 3 frame
2 3 2 1 5 2 4 5 3 2 5 2
6 page fault.
VD2 : cho chuỗi 1234.2156.2123.6321 , cấp phát 4 frame
1 2 3 4 2 1 5 6 2 1 2 3
6 3 2 1
có 5 page fault.
- Giải thuật thay trang Clock VD1 : cho chuỗi 2321.5245.3252 , cấp phát cho 3 frame ( kí hiệu : * = Ub = 1)
2 3 2 1 5 2 4 5 3 2
F F F F5 2
5 2
F
=> có 5 page fault.
25
2 23
23
23
1
53
1
52
1
52
4
52
4
32
4
32
4
35
4
35
2
1 12
12
3
1234
12
34
12
34
52
34
56
34
56
24
56
21
56
21
36
21
3621
3621
3621
362
2* 2*
3*2*
3*2*
3*
1*
5*
31
5*
2*
1
5*
2*
4*
5*
2*
4*
3*
24
3*
2*
4
3*
2*
5*
3*
2*
5*
8/8/2019 Đề cương môn hệ điều hành
http://slidepdf.com/reader/full/de-cuong-mon-he-dieu-hanh 26/26
VD2 : cho chuỗi 1234.2156.2123.7632.1236 , cấp phát cho 4 frame.
1 2 3 4 2 1 5 6 2 1
2 3 7 6 3 2 1 2 3 6
có 10 page fault.
THE END
1* 1*
2*1*
2*
3*
1*
2*
3*
4*
1*
2*
3*
4*
1*
2*
3*
4*
5*
2
34
5*
6*
34
5*
6*
2*
4
5*
6*
2*
1*
5*
6*
2*
1*
3*
621
3*
7*
21
3*
7*
6*
1
3*
7*
6*
1
3*
7*
6*
2*
1*
762
1*
76
1*
3*
6
1*
3*
6*