Bài giảng Nguyên lí hệ điều hành - Chương 5: Lập lịch CPU - Phạm Quang Dũng
Bạn đang xem tài liệu "Bài giảng Nguyên lí hệ điều hành - Chương 5: Lập lịch CPU - Phạm Quang Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_nguyen_li_he_dieu_hanh_chuong_5_lap_lich_cpu_pham.pdf
Nội dung text: Bài giảng Nguyên lí hệ điều hành - Chương 5: Lập lịch CPU - Phạm Quang Dũng
- Nội dung chương 5 BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH Các khái niệm cơ bản Các tiêu chuẩn lập lịch Chương 5: Lập lịch CPU Các giải thuật lập lịch Lập lịch multiprocessor Phạm Quang Dũng Bộ môn Khoa học máy tính Lập lịch thời gian thực Khoa Công nghệ thông tin Trường Đại học Nông nghiệp Hà Nội Lựa chọn giải thuật Website: fita.hua.edu.vn/pqdung Bài giảng Nguyên lý Hệ điều hành 5.2 Phạm Quang Dũng ©2008 5.1. Các khái niệm cơ bản Trình lập lịch CPU - CPU Scheduler multi-programming giúp đạt được sự sử dụng CPU tối đa Mỗi khi CPU rỗi, HĐH cần chọn trong số các tiến trình đã sẵn Chu kỳ sử dụng CPU–I/O (CPU–I/O Burst Cycle): Sự thực hiện sàng thực hiện trong bộ nhớ (ready queue), và phân phối CPU tiến trình gồm một chu kỳ thực hiện của CPU và chờ vào-ra. cho một trong số đó. Sự phân phối sử dụng CPU giúp lựa chọn giải thuật lập lịch CPU Tiến trình được thực hiện bởi trình lập lịch ngắn kỳ (short-term scheduler, CPU scheduler) Các quyết định lập lịch CPU có thể xảy ra khi một tiến trình: 1. Chuyển từ trạng thái chạy sang trạng thái chờ (vd: I/O request) 2. Chuyển từ trạng thái chạy sang trạng thái sẵn sàng (vd: khi một ngắt xuất hiện) 3. Chuyển từ trạng thái đợi sang trạng thái sẵn sàng (vd: I/O hoàn thành) 4. Kết thúc Bài giảng Nguyên lý Hệ điều hành 5.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.4 Phạm Quang Dũng ©2008 1
- Preemptive/nonpreemptive Scheduling Trình điều vận - Dispatcher Lập lịch CPU khi 1 và 4 là không được ưu tiên trước Môđun trình điều vận trao quyền điều khiển của CPU cho tiến (nonpreemptive): trình được lựa chọn bởi trình lập lịch CPU; các bước: z Không có sự lựa chọn: phải chọn 1 tiến trình mới để thực hiện. z chuyển ngữ cảnh z Khi 1 tiến trình được phân phối CPU, nó sẽ sử dụng CPU cho đến z chuyển sang user mode khi nó giải phóng CPU bằng cách kết thúc hoặc chuyển sang trạng z nhảy tới vị trí thích hợp trong chương trình của người sử dụng để thái chờ. khởi động lại chương trình đó z Các tiến trình sẵn sàng nhường điều khiển của CPU. Trễ điều vận (Dispatch latency) –thời gian cần thiết để trình điều Lập lịch khi 2 và 3 là được ưu tiên trước (preemptive) vậndừng một tiến trình và khởi động một tiến trình khác chạy. z Khi 2: tiến trình đábật CPU ra. Cần phải chọn tiến trình kế tiếp. z Khi 3: tiến trình có thể đábật tiến trình khác ra khỏi CPU. Bài giảng Nguyên lý Hệ điều hành 5.5 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.6 Phạm Quang Dũng ©2008 5.2. Các tiêu chuẩn lập lịch 5.3. Các giải thuật lập lịch First Come, First Served (FCFS) Max CPU utilization –giữ cho CPU càng bận càng tốt (0-100%) Shortest Job First (SJF) Throughput –số tiến trình được hoàn thành trong một đơn vị thời Max gian Priority Round Robin (RR) Turnaround time –tổng lượng thời gian để thực hiện một tiến trình: Multilevel Queue Min t/g chờ được đưa vào bộ nhớ + t/g chờ trong ready queue + t/g thực Multilevel Feedback-Queue hiện bởi CPU + t/g thực hiện vào-ra Min Waiting time –lượng thời gian mà một tiến trình chờ đợi ở trong ready queue Response time –lượng thời gian tính từ khi có một yêu cầu được Min gửi đến khi có sự trả lời đầu tiên được phát ra, không phải là thời gian đưa ra kết quả của sự trả lời đó. → là tiêu chuẩn tốt. Bài giảng Nguyên lý Hệ điều hành 5.7 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.8 Phạm Quang Dũng ©2008 2
- 1) Giải thuật First-Come, First-Served (FCFS) Giải thuật FCFS (tiếp) Tiến trình nào yêu cầu CPU trước sẽ được phân phối CPU trước Giả định rằng các tiến trình đến theo thứ tự P2 , P3 , P1 → Giải thuật FCFS là không được ưu tiên trước. Biểu đồ Gantt của lịch biểu như sau: Là giải thuật đơn giản nhất Process Burst Time (thời gian sử dụng CPU, ms) P2 P3 P1 P1 24 P2 3 0 3306 P3 3 Giả định rằng các tiến trình đến theo thứ tự: P , P , P thì 1 2 3 Thời gian chờ đợi của các tiến trình: P1 = 6; P2 = 0;; P3 = 3 biểu đồ Gantt (Gantt Chart) của lịch biểu như sau: Thời gian chờ đợi trung bình: (6 + 0 + 3)/3 = 3 P P P 1 2 3 Tốt hơn nhiều so với trường hợp trước 0 24 27 30 Convoy effect (hiệu ứng hộ tống): tiến trình ngắn đứng sau tiến trình dài, như là các xe máy đi sau xe buýt vậy. Thời gian chờ đợi của các tiến trình: P1 = 0; P2 = 24; P3 = 27 Thời gian chờ đợi trung bình: (0 + 24 + 27)/3 = 17 Bài giảng Nguyên lý Hệ điều hành 5.9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.10 Phạm Quang Dũng ©2008 2) Giải thuật Shortest-Job-First (SJF) Ví dụ SJF không ưu tiên trước Gắn với mỗi tiến trình là thời gian sử dụng CPU tiếp sau của nó. Process Arrival Time Burst Time Thời gian này được sử dụng để lập lịch các tiến trình với thời P1 0.0 7 gian ngắn nhất. P2 2.0 4 P 4.0 1 Hai phương pháp: 3 P4 5.0 4 z không ưu tiên trước (non-preemptive)– một tiến trình nếu sử dụng SJF (non-preemptive) CPU thì không nhường cho tiến trình khác cho đến khi nó kết thúc. z có ưu tiên trước (preemptive)– nếu một tiến trình đến có thời gian P1 P3 P2 P4 sử dụng CPU ngắn hơn thời gian còn lại của tiến trình đang thực hiện thì ưu tiên tiến trình mới đến trước. Phương pháp này còn 0 3167 8 12 được gọi là Shortest-Remaining-Time-First (SRTF). Thời gian chờ đợi của các tiến trình: P1 = 0; P2 = 6;; P3 = 3, P4 = 7 SJF là tối ưu–cho thời gian chờ đợi trung bình của các tiến Thời gian chờ đợi trung bình = (0 + 6 + 3 + 7)/4 = 4 trình là nhỏ nhất. Bài giảng Nguyên lý Hệ điều hành 5.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.12 Phạm Quang Dũng ©2008 3
- Ví dụ SJF có ưu tiên trước Xác định thời gian sử dụng CPU tiếp sau Process Arrival Time Burst Time Không thể biết chính xác thời gian sử dụng CPU tiếp sau của tiến trình P1 0.0 7 nhưng có thể đoán giá trị xấp xỉ của nó dựa vào thời gian sử dụng CPU P2 2.0 4 trước đóvàsử dụng công thức đệ quy: P3 4.0 1 τ n+1 = α tn + (1−α )τ n . P4 5.0 4 z τn+1 = giá trị dự đoán cho thời gian sử dụng CPU tiếp sau SJF (preemptive) z tn = thời gian thực tế của sự sử dụng CPU thứ n z α, 0 ≤ α ≤ 1 P1 P2 P3 P2 P4 P1 z τ0 là một hằng số 0 2 4 5 7 11 16 α = 0: τn+1 = τn = τ0. z Thời gian thực tế sử dụng CPU gần đây không có tác dụng gì cả. Thời gian chờ đợi trung bình = (9 + 1 + 0 +2)/4 = 3 α = 1: τn+1 = tn. z Chỉ tính đến thời gian sử dụng CPU thực tế ngay trước đó. Bài giảng Nguyên lý Hệ điều hành 5.13 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.14 Phạm Quang Dũng ©2008 Minh họa khi α = 1/2 và τ0 = 10 3) Lập lịch theo mức ưu tiên Mỗi tiến trình được gắn một số ưu tiên (số nguyên). VD: 0-127 CPU được phân phối cho tiến trình có mức ưu tiên cao nhất (có số ưu tiên nhỏ nhất) z Preemptive z nonpreemptive SJF là trường hợp riêng của lập lịch theo mức ưu tiên: mức ưu tiên chính là thời gian sử dụng CPU tiếp sau dự đoán được. Vấn đề gặp phải là: những tiến trình có mức ưu tiên thấp có thể không bao giờ được thực hiện (starvation). Giải pháp ≡ Aging: kỹ thuật tăng mức ưu tiên của các tiến trình chờ đợi lâu trong hệ thống. z VD: Sau 1-15 phút giảm số ưu tiên một lần. Bài giảng Nguyên lý Hệ điều hành 5.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.16 Phạm Quang Dũng ©2008 4
- Ví dụ lập lịch theo mức ưu tiên 4) Giải thuật Round-Robin (RR) Process Burst Time Priority Mỗi tiến trình sử dụng một lượng nhỏ thời gian của CPU (time P1 10 3 quantum – định lượng thời gian, q), thường là 10-100 ms. Sau P2 11 đónó được ưu tiên đưa vào cuối của ready queue. P 24 3 Ready queue được tổ chức dạng FIFO (FCFS) P4 15 Nếu tiến trình có thời gian sử dụng CPU q ⇒ bộ định thời 01 6 161819 (timer) sẽ đếm lùi và gây ngắt HĐH khi nó = 0. Việc chuyển ngữ cảnh được thực hiện và tiến trình hiện tại được đưa xuống cuối T/gian chờ đợi trung bình = (0 + 1 + 6 + 16 + 18)/5 = 8.2 ready queue để nhường CPU cho tiến trình kế tiếp. Bài giảng Nguyên lý Hệ điều hành 5.17 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.18 Phạm Quang Dũng ©2008 Ví dụ lập lịch RR với q = 20 Quan hệ giữa q và hiệu năng Process Burst Time Nếu q lớn ⇒ tương tự như FCFS. P 53 1 Nếu q nhỏ ⇒ số lần chuyển ngữ cảnh càng nhiều, làm giảm hiệu P 17 2 năng. P3 68 P4 24 Biểu đồ Gantt: P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 0 20 37 57 77 97 117 121 134 154 162 T/g chờ đợi TB = ((57+24)+20+(37+40+17)+(57+40))/4 = 73 Thường thì RR có turnaround trung bình cao hơn SJF, nhưng có response tốt hơn (thấp hơn). Bài giảng Nguyên lý Hệ điều hành 5.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.20 Phạm Quang Dũng ©2008 5
- Phụ thuộc của Turnaround Time vào q 5) Lập lịch đa mức hàng đợi Turnaround Time trung bình của một tập tiến trình không phải Ready queue được chia thành nhiều queue riêng biệt: luôn được cải thiện khi q tăng lên. foreground (chứa các interactive process) Luật: 80% các CPU burst nên nhỏ hơn q. background (chứa các batch process) Mỗi hàng đợi có giải thuật lập lịch riêng: z foreground – RR z background – FCFS Phải có sự lập lịch giữa các queue: z Lập lịch với mức ưu tiên cố định; vd: phục vụ tất cả tiến trình từ foreground, tiếp theo từ background (có thể xảy ra starvation). z Phân chia thời gian: mỗi queue nhận được một lượng thời gian CPU nào đómànócóthể lập lịch các tiến trình của nó. vd: 80% cho foreground và 20% cho background queue Bài giảng Nguyên lý Hệ điều hành 5.21 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.22 Phạm Quang Dũng ©2008 Multilevel Queue Scheduling 6) Lập lịch đa mức hàng đợi thông tin phản hồi Một tiến trình có thể di chuyển giữa các queue khác nhau; có thể thực hiện aging Trình lập lịch đa mức hàng đợi thông tin phản hồi được xác định bởi các tham số sau: z số lượng queue z giải thuật lập lịch cho mỗi queue z phương pháp được sử dụng để xác định khi nào thì tăng/giảm mức ưu tiên của một tiến trình ¾ Tiến trình trong queue có mức ưu tiên thấp hơn chỉ có thể chạy z phương pháp được sử dụng để xác định queue nào mà tiến trình sẽ khi các queue có mức ưu tiên cao hơn rỗng. đến khi nó cần được phục vụ. ¾ Tiến trình có mức ưu tiên cao hơn khi vào ready queue không ảnh hưởng đến tiến trình đang chạy có mức ưu tiên thấp hơn. Bài giảng Nguyên lý Hệ điều hành 5.23 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.24 Phạm Quang Dũng ©2008 6
- Ví dụ Multilevel Feedback Queue Multilevel Feedback Queues Ba queue: z Q0 –thời gian định lượng 8 ms z Q1 –thời gian định lượng 16 ms z Q2 –FCFS Lập lịch: z Một tiến trình vào queue Q0 và được phục vụ FCFS. Khi nó giành được CPU, tiến trình nhận được 8 ms. Nếu nó không hoàn thành trong 8 ms, tiến trình được chuyển tới queue Q1. z Tại Q1 tiến trình tiếp tục được phục vụ FCFS với 16 ms nữa. Nếu nó vẫn chưa hoàn thành thì nó được ưu tiên và được chuyển đến queue Q2. Bài giảng Nguyên lý Hệ điều hành 5.25 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.26 Phạm Quang Dũng ©2008 5.4. Lập lịch multiprocessor 5.5. Lập lịch thời gian thực Lập lịch CPU khi có nhiều processor phức tạp hơn nhiều Hard real-time systems – yêu cầu hoàn thành một tác vụ găng (critical task) trong thời gian được đảm bảo. Các loại processor trong multiprocessor z resource reservation: khi tiến trình được gửi đến cùng với lệnh cho z Đồng nhất (Homogeneous): tất cả có cùng kiến trúc. biết thời gian cần thiết của nó, trình lập lịch có thể chấp nhận và đảm z Không đồng nhất (Heterogeneous): một số tiến trình có thể không bảo nó sẽ kết thúc đúng hạn, hoặc từ chối tiến trình. tương thích với kiến trúc của các CPU. Soft real-time computing – yêu cầu các tiến trình găng nhận mức Cân bằng tải (Load balancing/sharing): một ready queue cho tất ưu tiên trên các tiến trình kém may mắn hơn. cả các processor, CPU nhàn rỗi được gán cho tiến trình ở đầu z có thể phân phối tài nguyên không hợp lý, thời gian trễ lâu, starvation. queue. → phải cẩn thận trong thiết kế trình lập lịch và các khía cạnh liên quan của HĐH: Đa xử lý không đối xứng - Asymmetric multiprocessing: lập lịch có ưu tiên, các tiến trình thời gian thực có mức ưu tiên cao z chỉ một processor (master processor) truy nhập các cấu trúc dữ liệu nhất. hệ thống, làm giảm sự cần thiết bảo vệ dữ liệu chia sẻ. trễ điều vận (dispatch latency) phải nhỏ. Bài giảng Nguyên lý Hệ điều hành 5.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.28 Phạm Quang Dũng ©2008 7
- 5.6. Lập lịch luồng 5.7. Các ví dụ lập lịch trong HĐH Lập lịch cục bộ (Local Scheduling): z Bằng cách nào Thư viện luồng quyết định chọn luồng nào để đặt Solaris scheduling vào một CPU ảo khả dụng: Windows XP scheduling Thường chọn luồng có mức ưu tiên cao nhất Linux scheduling z Sự cạnh tranh CPU diễn ra giữa các luồng của cùng một tiến trình. z Trong các HĐH sử dụng mô hình Many-to-one, Many-to-many. Lập lịch toàn cục (Global Scheduling) z Bằng cách nào kernel quyết định kernel thread nào để lập lịch CPU chạy tiếp. z Sự cạnh tranh CPU diễn ra giữa tất cả các luồng trong hệ thống. z Trong các HĐH sử dụng mô hình One-to-one (Windows XP, Linux, Solaris 9) Bài giảng Nguyên lý Hệ điều hành 5.29 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.30 Phạm Quang Dũng ©2008 1) Solaris 2 Scheduling Solaris 2 Scheduling (tiếp) Lập lịch dựa trên mức ưu tiên Xác định 4 lớp lập lịch có thứ tự ưu tiên như sau 1. Real time 2. System 3. Time sharing 4. Interactive Trong mỗi lớp có các mức ưu tiên khác nhau và các giải thuật lập lịch khác nhau. Bài giảng Nguyên lý Hệ điều hành 5.31 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.32 Phạm Quang Dũng ©2008 8
- Lớp cho các luồng tương tác và chia sẻ thời gian Bảng điều vận của Solaris cho các luồng tương tác và chia sẻ thời gian Lớp lập lịch mặc định cho tiến trình là Time sharing. Chính sách lập lịch tự động thay đổi mức ưu tiên và gán các q khác nhau nhờ dùng một multilevel feedback queue. Mặc định: Quan hệ tỷ lệ nghịch: mức ưu tiên càng cao, q càng nhỏ và ngược lại. Các tiến trình tương tác có mức ưu tiên cao hơn các tiến trình CPU-bound z Thời gian đáp ứng tốt cho các tiến trình tương tác z Thông lượng tốt cho các tiến trình CPU-bound Bài giảng Nguyên lý Hệ điều hành 5.33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.34 Phạm Quang Dũng ©2008 Giải thích Lớp cho các luồng thời gian thực và luồng hệ thống Priority: mức ưu tiên phụ thuộc lớp của các lớp tương tác và chia sẻ thời gian. Lớp hệ thống z Số càng lớn mức ưu tiên càng cao. z Để chạy các tiến trình kernel, ví dụ như trình lập lịch, trình quản lý Time quantum: lượng thời gian cho mức ưu tiên tương ứng. phân trang bộ nhớ. z Tỷ lệ nghịch với mức ưu tiên z Các tiến trình người sử dụng chạy trong kernel mode không ở trong lớp hệ thống. Time quantum expired: mức ưu tiên mới của một luồng mà đã sử dụng hết lượng thời gian của nó mà chưa kết thúc. z Mức ưu tiên của các tiến trình hệ thống là không thay đổi. z Thấp hơn mức ưu tiên gốc Lớp thời gian thực Return from sleep: mức ưu tiên của một luồng đang trở về từ z Chứa các luồng có mức ưu tiên cao nhất ⇒ tiến trình thời gian thực trạng thái ngủ (vd đợi vào/ra). sẽ được chạy trước tiến trình thuộc các lớp khác z Cao hơn mức ưu tiên gốc, giúp giảm thời gian đáp ứng cho các tiến z Ít tiến trình thuộc lớp này. trình tương tác. Bài giảng Nguyên lý Hệ điều hành 5.35 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.36 Phạm Quang Dũng ©2008 9
- Solaris 9 scheduling Chọn luồng tổng thể? Có thêm 2 lớp lập lịch mới cho các luồng: Mỗi lớp có tập mức ưu tiên riêng (cục bộ). Fixed priority: Trình lập lịch z Dải mức ưu tiên giống như lớp chia sẻ thời gian z chuyển đổi mức ưu tiên cục bộ thành mức ưu tiên toàn cục z Khác ở chỗ mức ưu tiên không được điều chỉnh tự động z chọn luồng có mức ưu tiên toàn cục lớn nhất để chạy. Fair share: z Sử dụng sự chia sẻ CPU thay vì dùng mức ưu tiên Luồng được chọn sẽ dùng CPU cho đến khi: z Nó chuyển trạng thái khóa (vd để vào/ra) z Nó sử dụng hết lượng thời gian q z Bị một luồng có mức ưu tiên cao hơn giành quyền Khi có nhiều luồng có cùng mức ưu tiên, trình lập lịch sử dụng một hàng đợi round-robin. Bài giảng Nguyên lý Hệ điều hành 5.37 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.38 Phạm Quang Dũng ©2008 2) Windows XP Scheduling Quan hệ mức ưu tiên của kernel và Win32 API Sử dụng giải thuật lập lịch có ưu tiên trước dựa trên mức ưu tiên. Win32 API định nghĩa các lớp ưu tiên: Chịu trách nhiệm lập lịch luồng: trình điều vận (dispatcher) z REALTIME_PRIORITY_CLASS z HIGH_PRIORITY_CLASS Một luồng được chọn sẽ chạy đến khi: Mức ưu tiên của z ABOVE_NORMAL_PRIORITY_CLASS z Nó gọi system call khóa (vd để vào/ra) một luồng thuộc một z NORMAL_PRIORITY_CLASS z Nó sử dụng hết lượng thời gian q trong những lớp này z BELOW_NORMAL_PRIORITY_CLASS z Bị một luồng có mức ưu tiên cao hơn giành quyền là có thể thay đổi z IDLE_PRIORITY_CLASS Trình điều vận sử dụng dải ưu tiên 32 mức, chia làm 2 lớp: Trong mỗi lớp ưu tiên gồm các giá trị ưu tiên: z Variable class: chứa các luồng có mức từ 1 đến 15 z TIME_CRITICAL z Real-time class: chứa các luồng có mức từ 16 đến 31. z HIGHEST Mỗi mức ưu tiên có 1 queue. Trình điều vận duyệt qua các queue z ABOVE_NORMAL từ cao nhất đến thấp nhất cho đến khi tìm thấy 1 luồng sẵn sàng. z NORMAL Nếu không có luồng như vậy, trình điều vận thực hiện luồng đặc z BELOW_NORMAL biệt – idle thread. z LOWEST z IDLE Bài giảng Nguyên lý Hệ điều hành 5.39 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.40 Phạm Quang Dũng ©2008 10
- Quan hệ mức ưu tiên của kernel và Win32 API Chiến lược tăng, giảm mức ưu tiên Khi lượng thời gian q của luồng hết, luồng bị ngắt. Nếu luồng thuộc lớp có thể thay đổi mức ưu tiên thì mức của nó bị giảm. Tuy nhiên không giảm đến dưới mức ưu tiên cơ sở. ⇒ có xu hướng giới hạn sử dụng CPU của các luồng CPU-bound Khi luồng thuộc lớp có thể thay đổi mức ưu tiên được giải phóng khỏi hoạt động đợi, trình điều vận tăng mức ưu tiên cho nó. Lượng tăng phụ thuộc luồng đã đợi cái gì, ví dụ: Base Priority z Đợi vào/ra bàn phím ⇒ tăng mạnh z Đợi hoạt động đĩa ⇒ tăng vừa Chiến lược này có xu hướng cho thời gian đáp ứng tốt với các luồng tương tác sử dụng chuột và cửa sổ, cho phép các luồng I/O-bound giữ các thiết bị vào/ra “bận rộn”, và các luồng CPU-bound sử dụng các chu kỳ CPU dư thừa trong “lặng lẽ”. Chiến lược này một số HĐH chia sẻ thời gian sử dụng, vd UNIX. Ngoài ra, cửa sổ mà user đang tương tác được nâng mức ưu tiên. Bài giảng Nguyên lý Hệ điều hành 5.41 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.42 Phạm Quang Dũng ©2008 3) Linux Scheduling Quan hệ giữa Priorities và Time-slice length Linux kernel từ phiên bản 2.5, z Cung cấp giải thuật lập lịch chạy trong thời gian hằng - O(1) – bất kể số lượng luồng trong hệ thống. z Hỗ trợ tốt hơn cho các hệ thống đa xử lý đối xứng (SMP) z Cung cấp sự công bằng và hỗ trợ cho các tác vụ (task) tương tác Trình lập lịch Linux dùng giải thuật có ưu tiên trước dựa trên mức ưu tiên với 2 dải riêng: z Dải real-time: có mức từ 0 đến 99 z Dải nice: có mức từ 100 đến 140. Số càng nhỏ, mức ưu tiên càng cao Không giống với nhiều HĐH khác, Linux gán các task có mức ưu tiên càng cao càng được nhiều lượng thời gian q. Bài giảng Nguyên lý Hệ điều hành 5.43 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.44 Phạm Quang Dũng ©2008 11
- Linux Scheduling (tiếp) 5.8. Lựa chọn giải thuật Kernel duy trì danh sách các task sẵn sàng trong một runqueue Chọn giải thuật lập lịch CPU nào cho hệ thống cụ thể? z Nếu có nhiều bộ xử lý, mỗi BXL có 1 runqueue và lập lịch độc lập Trước tiên, xác định sử dụng tiêu chuẩn nào? Vd: Mỗi runqueue có 2 mảng ưu tiên: z Tối đa CPU utilization với ràng buộc response time lớn nhất là 1s z active: chứa tất cả task vẫn còn trong lượng thời gian của chúng z Tối đa throughput để turnaround time là tỷ lệ tuyến tính với thời gian thực hiện z expired: chứa tất cả task đã hết lượng thời gian Trình lập lịch chọn task có mức ưu tiên cao nhất trong mảng 1. Phân tích hiệu năng của từng giải thuật đối với các tiến trình active. Khi mảng active rỗng, 2 mảng sẽ tráo đổi cho nhau. 2. Sử dụng chuẩn hàng đợi: công thức Little: n = λ x W Các real-time task được gán mức ưu tiên tĩnh n: độ dài queue trung bình Các task khác có mức ưu tiên động: = nice value ± 5 W: thời gian chờ đợi trung bình trong queue z Task có thời gian ngủ đợi vào/ra dài hơn thường là tương tác hơn λ: tốc độ đến queue của tiến trình (số tiến trình/giây) ⇒ tăng mức ưu tiên bằng cách -5 3. Mô phỏng: lập trình mô hình hệ thống để đánh giá z Task có thời gian ngủ ngắn hơn thường là CPU-bound ⇒ giảm mức ưu tiên bằng cách +5 4. Thực hiện: đặt giải thuật cụ thể trong hệ thống thực để đánh giá Bài giảng Nguyên lý Hệ điều hành 5.45 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 5.46 Phạm Quang Dũng ©2008 End of Chapter 5 12