Lập kế hoạch trong các hệ thống Linux được dựa trên các lớp lập kế hoạch. Mỗi lớp được
chỉ định một ưu tiên cụ thể. Bằng cách sử dụng các lớp học khác nhau lập kế hoạch, hạt nhân có thể
chứa các thuật toán lập lịch trình khác nhau dựa trên nhu cầu của các hệ thống
và quy trình của nó. Các tiêu chí lập kế hoạch cho một máy chủ Linux, ví dụ, có thể
là khác nhau từ những người cho một thiết bị di động chạy Linux. Để quyết định
nhiệm vụ để chạy tiếp theo, các Scheduler chọn nhiệm vụ ưu tiên cao nhất thuộc về
các lớp lập kế hoạch ưu tiên cao nhất. Hạt nhân Linux chuẩn thực hiện hai
lớp lập lịch trình: (1) một lớp học lịch mặc định sử dụng lập lịch CFS
thuật toán và (2) một lịch trình thời gian thực class.We thảo luận mỗi lớp học
ở đây. Lớp học lập lịch trình mới có thể, tất nhiên, được bổ sung.
Thay vì sử dụng các quy tắc nghiêm ngặt mà kết hợp một giá trị ưu tiên tương đối với
chiều dài của một lượng tử thời gian, lên lịch CFS gán một tỷ lệ CPU
thời gian xử lý cho từng công việc. Tỷ lệ này được tính toán dựa trên các mái
giá trị được gán cho mỗi nhiệm vụ. Giá trị đẹp dao động từ -20 đến 19, nơi một
giá trị tốt đẹp về số thấp hơn cho thấy một ưu tiên tương đối cao. Nhiệm vụ có
giá trị thấp hơn đẹp nhận được một tỷ lệ cao hơn trong thời gian xử lý CPU hơn
nhiệm vụ với những giá trị tốt đẹp hơn. Giá trị mặc định là 0. đẹp (The ngơi dài đến
từ ý tưởng rằng nếu một công việc làm tăng giá trị tốt đẹp của nó từ, nói, 0-10, nó đang được
tốt đẹp để các nhiệm vụ khác trong hệ thống bằng cách hạ thấp ưu tiên tương đối của nó.) CFS không
sử dụng các giá trị rời rạc của lát thời gian và thay vào đó xác định một độ trễ nhắm mục tiêu,
đó là một khoảng thời gian mà mỗi nhiệm vụ Runnable nên chạy
ít nhất một lần. Tỷ lệ thời gian CPU được cấp phát từ giá trị của mục tiêu
độ trễ. Ngoài việc có giá trị mặc định và tối thiểu, mục tiêu độ trễ
có thể tăng lên nếu số nhiệm vụ hoạt động trong hệ thống phát triển vượt ra ngoài một số
ngưỡng.
CFS lịch không trực tiếp định các ưu tiên. Thay vào đó, nó ghi như thế nào
lâu mỗi nhiệm vụ đã chạy bằng cách duy trì thời gian chạy ảo của mỗi nhiệm vụ bằng cách sử dụng
các vruntime biến cho mỗi nhiệm vụ. Thời gian chạy ảo được liên kết với một phân rã
yếu tố dựa trên các ưu tiên của một nhiệm vụ: nhiệm vụ ưu tiên thấp hơn có tỷ lệ
sâu hơn các nhiệm vụ ưu tiên cao hơn. Đối với nhiệm vụ ở mức ưu tiên bình thường (giá trị tốt đẹp
trong số 0), thời gian chạy ảo giống hệt với thực tế thời gian chạy vật lý. Như vậy, nếu một nhiệm vụ
ưu tiên mặc định chạy cho 200 mili giây, vruntime của nó cũng sẽ là 200
mili giây. Tuy nhiên, nếu một nhiệm vụ ưu tiên thấp hơn chạy cho 200 mili giây, nó
vruntime sẽ cao hơn 200 mili giây. Tương tự như vậy, nếu một ưu tiên cao hơn
nhiệm vụ chạy trong 200 mili giây, vruntime của nó sẽ ít hơn 200 mili giây.
Để quyết định nhiệm vụ để chạy tiếp theo, lên lịch chỉ đơn giản là lựa chọn các công việc có
giá trị nhỏ nhất vruntime. Ngoài ra, một nhiệm vụ ưu tiên cao hơn mà trở nên
có sẵn để chạy có thể chặn trước một nhiệm vụ ưu tiên thấp hơn.
đang được dịch, vui lòng đợi..
