Lập lịch thời gian thực:

Một phần của tài liệu Tiểu luận: Xây dựng chương trình Quản lý CPU và RAM của Windows pot (Trang 26 - 28)

Lập lịch trong thời gian thực:  Windows:

Windows hỗ trợ chiến lược lập lịch tĩnh round-robin cho các tiểu trình với độ ưu tiên trong phạm vi thời gian thực (16-31).

 Các tiểu trình chạy để tăng quantum lên 1.  Quantum được thiết lập lại đẩy đủ như trước.  Mức ưu tiên không bao giờ tăng.

Các tiểu trình trong thời gian thực có thể thiếu các dịch vụ quan trọng của hệ thống.

 Chẳng hạn như csrss.exe.

 SeIncreaseBasePriorityPrivilege cần thiết để nâng cao ưu tiên của một tiểu trình vào phạm vi thời gian thực (đặc quyền này được giao cho các thành viên của nhóm quản trị).

Hệ thống gọi xử lý DPC/APC có thể gây ra đảo lộn mức ưu tiên.  Linux:

Linux hỗ trợ 2 chiến lượng lập lịch tĩnh là Roud-Robin và FIFO  Round-robin và FIFO :

Được lựa chọn với lời gọi hệ thống sched setscheduler (). Sử dụng các giá trị ưu tiên tĩnh trong phạm vi 1 đến 99. Thực hiện đúng theo thứ tự giảm ưu tiên tĩnh.

 Chiến lược FIFO cho phép một Tiểu trình chạy để hoàn thành Tiểu trình cần phải cho biết kết thúc bằng cách gọi sched_yiedl().  Round-robin cho phép tiểu trình chạy ở lát cắt thời gian

Sau đó chuyển sang các Tiểu trình tiếp theo với cùng một ưu tiên tĩnh.

 Tiến trình thời gian thực có thể dễ dàng bị thiếu hơn chủ đề từ thực hiện.

Đặc quyền root hoặc khả năng CAP-SYS-NICE là cần thiết cho việc lựa chọn một chiến lược lập lịch thời gian thực.

 Sau 1 thời gian dài hệ thống có thể gây ra các đảo ngược độ ưu tiên tương tự như trong Windows, nhưng cmp. rtLinux

2.1.7.4. Lập lịch lát cắt thời gian

Windows:

Tiểu trình lát cắt thời gian (quantum) là 10ms-120ms  Khi quantum nhận 1 trong 2 giá trị

Reentrant and preemptible ( gọi lại lần nữa gián đoạn giữa chừng và tiếp tục gián đoạn để gọi tiếp sau đó)

Linux:

Quantum của tiều trình từ 10ms-200ms  Mặc định là 100ms

 Thay đổi trên toàn bộ phạm vi dựa trên độ ưu tiên là dựa trên mức độ tương tác

Reentrant and Preemptible.

2.1.7.5. Kernel Retrancy

Bài viết của Mark Russinovich’s April 1999 tạp chí Windows NT , “Linux and the Enterprise”, đã chỉ ra nhiều điều của Linux 2.2 không Reentrant

Ingo Molnar phản bác:

“ví dụ của ông ta không rõ ràng.” (“his example is a clear red herring.”) Một tháng sau Mark đã làm rõ điều này.

2.1.7.6. Kernel Preemptibility

Một hạt nhân preemptible đáp ứng các nhiệm vụ ưu tiên cao.

Thông qua việc phát hành cơ sở của v2.4 Linux chỉ hợp tác preemptible.  Có được xác định rõ những nơi an toàn, nơi một thread đang chạy

trong hạt nhân có thể được preempted.

Hoàng An (adsbygoogle = window.adsbygoogle || []).push({});

Windows NT đã luôn luôn được preemptible.

2.1.7.7. Bộ lập lịch (Scheduling)

The Linux 2.4 scheduler là O(n)

 Nếu có 10 task hoạt động, nó quét 10 trong sô chúng trong danh sách để quyết định bước thực hiện tiếp theo

 Có nghĩa là quét dài và cần thời gian dài để khóa lập lịch

Linux 2.6 có cải tiến lập lịch đó là O (1) từ Ingo Molnar:

 Tính ưu tiên của task vào thời điểm đó, để quyết định cho lập lịch  Có mỗi CPU hàng đợi sẵn sàng để Task được sắp xếp theo độ ưu tiên

Windows NT luôn có một lịch cơ sở O(1) dựa trên sự xắp xếp vào hàng đợi

2.1.7.8. Đồng bộ hóa Light-Weight

Linux 2.6 giới thiệu Futexes

 Chỉ chuyển sang kernel-mode khi có tranh chấp Windows luôn luôn có Đoạn găng (CriticalSections)  Cùng 1 hành vi

Futexes đi xa hơn:

 Cho phép mức ưu tiên chờ đợi  Việc giải phóng tiến trình tốt hơn

Một phần của tài liệu Tiểu luận: Xây dựng chương trình Quản lý CPU và RAM của Windows pot (Trang 26 - 28)