1. Trang chủ
  2. » Giáo án - Bài giảng

bài tập os

6 529 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 160,5 KB

Nội dung

Bài 1: Các thuật toán lập lịch cho CPU xác định thứ tự cho việc thực hiện của các tiến trình đã được lập lịch. Cho n tiến trình được lập lịch trên một bộ vi xử lý, có bao nhiêu cách lập lịch khác nhau có thể? (Trong tài liệu phô tô của thầy có phần này rồi) Bài 2: Định nghĩa sự khác nhau giữa lập lịch dừng (preemptive) và không dừng (non-preemptive). Phát biểu tại sao lập lịch không dừng không được ưu thích lập lịch cho máy tính trung tâm? Lập lịch không dừng Non- preemtive: - Một khi tiến trình được cấp CPU, CPU sẽ bị chiếm dụng cho đến khi tiến trình trả lại CPU do tiến trình đó đã kết thúc, hoặc chuyển sang trạng thái đợi. Lập lịch dừng Preemptive: - Một tiến trình đang thực hiện có thể bị ngắt do yêu cầu được thực hiện của 1 tiến trình khác. Khi đó, CPU phải chịu những phí tổn do việc chuyển giữa các tiến trình gây ra – CS (CS – Context Switch chính là công việc xảy ra khi CPU chuyển giữa các tiến trình với nhau). CS thực sự là một chi phí về thời gian của hệ thống (hệ thống sẽ không làm gì ong khoảng thời gian của CS) và phụ thuộc nhiều vào sự hỗ trợ của phần cứng. Tại sao lập lịch không dừng không được ưu thích lập lịch cho máy tính trung tâm? Có lẽ là nếu sử dụng Non-Preemptive thì tổng thời gian của hệ thống sẽ lớn.:-P Ví dụ: Tiến trình thứ nhất đang thực hiện dở, vào thời điểm i, tiến trình thứ hai xuất hiện với CPU burst nhỏ hơn CPU burst còn lại của tiến trình thứ nhất tại thời điểm đó. Nếu sử dụng lập lịch không dừng - tức là phải để tiến trình thứ nhất thực hiện xong - thì tổng thời gian để thực hiện tiến trình thứ hai sẽ lớn hơn nhiều nếu cho tiền trình thứ hai thực hiện ngay. Điều này cũng đúng với nhiều tiến trình. => Tổng thời gian thực hiện các tiến trình của hệ thống sẽ rất lớn. Bài 3: Xem xét các tiến trình sau đây, với các CPU – burst được tính bằng mili giây. Process Burst Time Priority P1 10 3 P2 1 1 P3 2 3 P4 1 4 P5 5 2 Các tính trình được giả định xuất hiện theo thứ tự P1, P2, P3. P4, P5 tại thời điểm bắt đầu là 0. a. Vẽ bốn biểu đồ Gantt giải thích thứ tự thực hiện của các tiến trình sử dụng các thuật toán lập lịch FCFS, SJF, ưu tiên không dừng (số ưu tiên (priority) nhỏ nhất suy ra độ ưu tiên lớn nhất), và RÕ RÀNG (quantum=1). b. Xác định tổng thời gian thực để thực hiện cho mỗi tiến trình tiến trình trong mỗi thuật toán trong câu a. c. Xác định thời gian chờ cho mỗi tiến trình trong mỗi thuật toán trên. d. Thuật toán lập lịch nào cho kết quả thời gian chờ trung bình là ít nhất. GIẢI Gọi tổng thời gian thực hiện cho mỗi tiến trình P1, P2, P3, P4, P5 tương ứng là T1, T2, T3, T4, T5. Gọi thời gian chờ tương ứng cho mỗi tiến trình là Tw1, Tw2, Tw3, Tw4, Tw5. a. Vẽ 4 biểu đồ Gantt theo 4 thuật toán FCFS (First Come First Served) P1 (10) P2 (1) P3 (2) P4 (1) P5 (5) Tw1 T1 Tw2 T2 Tw3 T3 Tw4 T4 Tw5 T5 0 0+10=10 10 10+1=11 11 11+2=13 13 13+1=14 14 14+5=19 SJF (Shortest Job First) P2 (1) P4 (1) P3(2) P5 (5) P1 (10) Tw2 T2 Tw4 T4 Tw3 T3 Tw5 T5 Tw1 T1 0 0+1=1 1 1+1=2 2 2+2=4 4 4+5=9 9 9+10=19 Priority (ưu tiên) không dừng P(độ ưu tiên, CPU burst) P2 (1,1) P5 (2,5) P1(3,10) P3 (3,2) P4 (4,1) Tw2 T2 Tw5 T5 Tw1 T1 Tw3 T3 Tw4 T4 0 0+1=1 1 1+5=6 6 6+10=16 16 16+2=1 8 18 18+10=28 Round Robin (Rõ ràng) quanum = 1 P(CPU burst) P1(10) P2(1) P3(2) P3(1) P4(1) P5(5) P5(4) P5(3) P5(2) P5(1) P1(9) P1(8) … P1(0) 0 1 2 3 4 5 6 7 8 9 10 11 … 19 P1(9) P2(0) P1(9) P3(0) P1(9) P4(0) P1(9) P5(0) … xong Ghi chú: P1(9): đến thời điểm này P1 còn 9 CPU burst > CPU burst của P2 nên P1 bị ngắt và P2 được thực hiện…. b và c. Xác định tổng thời gian thực hiện và thời gian chờ cho mỗi tiến trình ứng với thuật toán trong câu a. Với FCFS: T1 = 0+10=10; T2 = 10+1=11; T3 = 11+2=13; T4 = 13+1=14; T5 = 14+5=19 Tw1 = 0 ; Tw2 = 10 ; Tw3 = 11 ; Tw4 = 13 ; Tw5 = 14 Tw(tb) = (0+10+11+13+14)/5 = 9.6 Với SJF T1 = 9+10=19; T2 = 0+1=1; T3 = 2+2=4; T4 = 1+1=2; T5 = 4+5=9 Tw1 = 9 ; Tw2 = 0 ; Tw3 = 2 ; Tw4 = 1 ; Tw5 = 4 Tw(tb) = (9+0+2+1+4)/5 = 3.2 Với Priority T1 = 6+10=16; T2 = 0+1=1; T3 = 16+2=18; T4 = 18+10=28; T5 = 1+5=6 Tw1 = 6 ; Tw2 = 0 ; Tw3 = 16 ; Tw4 = 18 ; Tw5 = 1 Tw(tb) = (6+0+16+18+1)/5 = 8.2 P1(10) P2(1) P3(2) P4(1) P5(5) P1(9) P3(1) P5(4) P1(8) P5(3) P1(7) P5(2) P1(6) P5(1) P1(5) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CPU burst của các tt còn lại P1(9) P1(9) P2(0) P1(9) P3(1) P1(9) P3(1) P4(0) P3(1) P5(4) P1(8) P5(4) P1(8) P5(3) P1(7) P5(2) P1(6) P5(1) P1(5) P5(0) Còn lại chỉ còn P1 với 5 CPU burst => bộ lập lịch lần lượt cấp phát CPU cho P1 với khoảng thời gian 1 quantum (= 1) 5 lần cho đến khi P1 được thực hiện xong. P1(4) P1(3) P1(2) P1(1) 15 16 17 18 19 Với Round Robin T1 = 19; T2 =1; T3 = 7-2=5; T4 = 1; T5 = 14-4=10 Tw1 = [(5-1)+(8-6)+(10-9)+(12-11)+(14-13)] = 9 Tw2 = 1-0 = 1 Tw3 = [(2-0)+(6-3)] = 5 Tw4 = 3-0 = 3 Tw5 = [(4-0)+(7-5)+(9-8)+(11-10)+(13-12)] = 9 Tw(tb) = (9+1+5+3+9 )/5= 5.4 d. Thuật toán lập lịch nào cho kết quả thời gian chờ trung bình là ít nhất. Như kết quả trên ta thấy thuật toán cho thời gian chờ trung bình ít nhất là: SJF Bài 4: Chứng minh rằng thuật toán Bakery dưới đây repeat choosing[i] := true; number[i] := max(number[0], number[1], …, number [n – 1])+1; choosing[i] := false; for j := 0 to n – 1 do begin while choosing[j] do no-op; while number[j] ≠ 0 and (number[j],j) < (number[i], i) do no-op; end; critical section number[i] := 0; remainder section until false; Nếu P i đang trong vùng Critical section của nó và P k (k<>i) đã được chọn number[k] <>0 thì (number[i], i)< (number[k],k). Bài 5: Xem xét hệ thống tại thời điểm t trạng thái của các tiến trình và tài nguyên như sau Allocation A B C D Max A B C D Available A B C D P0 0 0 1 2 0 0 1 2 1 5 2 0 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 a. Nội dung của ma trận Need b. Hệ thống có an toàn không? c. Nếu yêu cầu P1 với các tài là (0, 4, 2, 0) thì hệ thống có đáp ứng ngay được không? GIẢI a. Nội dung của ma trận Need Ta có Need[i,j] = Max[i,j] - Allocation[Pi,j] Allocation A B C D Max A B C D Need A B C D Available A B C D P0 0 0 1 2 0 0 1 2 0 0 0 0 1 5 2 0 P1 1 0 0 0 1 7 5 0 0 7 5 0 P2 1 3 5 4 2 3 5 6 1 0 0 2 P3 0 6 3 2 0 6 5 2 0 0 2 0 1 11 5 2 P4 0 0 1 4 0 6 5 6 0 6 4 2 1 11 6 6 P1 1 0 0 0 1 7 5 0 0 7 5 0 2 11 6 6 P2 1 3 5 4 2 3 5 6 1 0 0 2 3 14 11 10 b. Hệ thống có an toàn không?  Xét P1 Need[1,1] = 0 < Available[1,1]=A=1 Need[1,2] = 7 > Available[1,2]=B=5 nên hệ thống không cấp phát tài nguyên cho P1  Xét P2 Need[2,4]=D=2 > Available[2,4]=D=0 nên hệ thống không cấp phát tài nguyên cho P2.  Xét P3 Need[3,j] <= Available[3,j] nên hệ thống cấp phát tài nguyên cho P3= Need(P3)= 0 0 2 0 và tài nguyên hệ thống còn: - 1 5 2 0 0 0 2 0 Còn 1 5 0 0 Sau khi tiến trình P3 thực hiện xong, P3 trả lại hệ thống lượng tài nguyên = Max(P3) = 0652  Available lúc này là: + 1 5 0 0 0 6 5 2 Tổng 1 11 5 2  Xét P4 Need[4,j] <= Available[4,j] nên hệ thống cấp phát tài nguyên cho P4=Need(P4)= 0 6 4 2 và tài nguyên hệ thống lúc này còn là: - 1 11 5 2 0 6 4 2 Còn 1 5 1 0 Sau khi tiến trình P4 thực hiện xong, P4 trả lại hệ thống lượng tài nguyên = MAX(P4) = 0 6 5 6  Available lúc này là: + 1 5 1 0 0 6 5 6 Tổng 1 11 6 6 Lúc này ta thấy hệ thống đã có thể cấp phát cho P1 lượng tài nguyên = Need(P1) =0 7 5 0.  Available lúc này là: - 1 11 6 6 0 7 5 0 Còn 1 4 1 6 Sau khi thực hiện xong, P1 trả lại hệ thống lượng tài nguyên = MAX(P1)=1 7 5 0  Available lúc này là: + 1 4 1 6 1 7 5 0 Còn 2 11 6 6 Hệ thống tiếp tục cầp phát cho P2 lượng tài nguyên = Need(P2) = 1 0 0 2  Available lúc này là: - 2 11 6 6 1 0 0 2 Còn 1 11 6 4 Sau khi thực hiện xong, P2 trả lại hệ thống lượng tài nguyên = MAX(P2)=2 3 5 6  Available hệ thống lúc này là: + 1 11 6 4 2 3 5 6 Còn 3 14 11 10 Vậy trạng thái lúc này là an toàn vì tồn tại dãy (P0,P3,P4,P1,P2) c. Nếu yêu cầu P1 với các tài là (0, 4, 2, 0) thì hệ thống có đáp ứng ngay được không? Ta thấy Reques i > Available, vì thế yêu cầu không được đáp ứng Allocation A B C D Max A B C D Need A B C D Available A B C D P0 0 0 1 2 0 0 1 2 0 0 0 0 1 5 2 0 P1 1 4 2 0 1 7 5 0 0 7 5 0 1 1 0 0 P2 1 3 5 4 2 3 5 6 1 0 0 2 P3 0 6 3 2 0 6 5 2 0 0 2 0 P4 0 0 1 4 0 6 5 6 0 6 4 2 P1 1 0 0 0 1 7 5 0 0 7 5 0 P2 1 3 5 4 2 3 5 6 1 0 0 2 . trung bình ít nhất là: SJF Bài 4: Chứng minh rằng thuật toán Bakery dưới đây repeat choosing[i] := true; number[i] := max(number[0], number[1], …, number [n – 1])+1; choosing[i] := false; for j. có bao nhiêu cách lập lịch khác nhau có thể? (Trong tài liệu phô tô của thầy có phần này rồi) Bài 2: Định nghĩa sự khác nhau giữa lập lịch dừng (preemptive) và không dừng (non-preemptive). Phát. đúng với nhiều tiến trình. => Tổng thời gian thực hiện các tiến trình của hệ thống sẽ rất lớn. Bài 3: Xem xét các tiến trình sau đây, với các CPU – burst được tính bằng mili giây. Process Burst

Ngày đăng: 01/11/2014, 00:00

Xem thêm

w