Sự khác biệt giữa Preemptive và Non-Preemptive Scheduling trong Hệ điều hành Sự khác biệt giữa Lịch trình xử lý (hoặc Lập lịch CPU)

Anonim

Lập lịch trình xử lý (hoặc Lập lịch CPU ) xác định quy trình nào được gán cho và loại bỏ khỏi CPU, dựa trên các mô hình lập lịch như PreemptiveKhông Lập kế hoạch bảo vệ (còn được gọi là Lập kế hoạch hợp tác )

Các hệ thống cũ hơn có thể hoạt động ở các chế độ độc lập đơn giản cần có các hệ thống linh họat, linh hoạt, cũng như ảo hóa, quản lý đa xử lý hiệu quả cung cấp phản ứng nhanh cho tất cả các yêu cầu xử lý tác vụ.

Các đơn vị lập kế hoạch thường được gọi là nhiệm vụ và đó là công việc của Scheduler để chạy và quản lý các tác vụ này bất cứ khi nào yêu cầu; Scheduler chọn nhiệm vụ được gỡ bỏ và được gán cho CPU để xử lý, phù hợp sử dụng mô hình lập kế hoạch.

Làm thế nào mà Scheduler biết được nhiệm vụ nào được ưu tiên?

Scheduler cần chạy một quy trình lựa chọn công bằng và hiệu quả, có tính đến các yêu cầu xử lý biến, động, và tận dụng tối đa chu kỳ của CPU.

Nhiệm vụ có thể ở hai trạng thái trong khi xử lý:

  1. Trong CPU CPU Burst , nơi CPU thực hiện các phép tính để xử lý nhiệm vụ (khoảng thời gian cho một CPU Burst thay đổi từ công việc sang nhiệm vụ và chương trình).
  2. Trong một Đầu vào / Đầu ra (I / O) Burst chờ dữ liệu được nhận hoặc gửi từ hệ thống.

Khi CPU không hoạt động, Scheduler đọc Sẵn sàng hàng đợi, và chọn nhiệm vụ kế tiếp sẽ được chạy. Sau đó, đó là Dispatcher cho phép kiểm soát nhiệm vụ được chọn của CPU, do đó nó cần phải nhanh! Bất kỳ thời gian nào được Dispatcher thực hiện được gọi là Độ trễ phân phối .

Có các cấu trúc khác nhau và các tham số tùy chỉnh để xác định Sẵn sàng hàng đợi, cũng như một số phương pháp có thể được sử dụng để quản lý sự phức tạp của quá trình lên kế hoạch.

Nói chung, tối ưu hóa và tối đa hóa việc sử dụng CPU, thông lượng, vv

Scheduler phải đưa ra quyết định trong một trong các giai đoạn sau:

  1. Khi Task thay đổi từ Chạy đến trạng thái Trạng thái Chờ đợi (ví dụ như chờ trong thời gian yêu cầu I / O).
  2. Khi tác vụ thay đổi từ Chạy đến Sẵn sàng (ví dụ như trả lời một ngắt).
  3. Khi tác vụ thay đổi từ Chờ đợi đến Sẵn sàng (ví dụ yêu cầu I / O đã hoàn tất).
  4. Khi nhiệm vụ Nhiệm vụ mới

Phải chọn một nhiệm vụ mới nếu giai đoạn 1 hoặc 4 xảy ra để đảm bảo sử dụng toàn bộ CPU, và trong cả giai đoạn 2 và 3, nhiệm vụ có thể tiếp tục chạy hoặc một nhiệm vụ mới là đã chọn.

Sau khi hiểu được nhiệm vụ được xử lý như thế nào, chúng ta hãy nhìn vào hai mô hình lập lịch để xử lý các ngắt CPU.

Cả hai đều có các tính năng tương tự với các tác vụ, các trạng thái tác vụ, hàng đợi, và các ưu tiên (tĩnh hoặc động):

  • Lập lịch Không-Ngăn ngừa là khi một tác vụ chạy đến khi nó dừng lại (tự nguyện) hoặc kết thúc. Windows® đã lập kế hoạch Non-Preemptive đến Windows 3.x, sau đó nó đã được thay đổi thành Preemptive từ Windows 95.
  • Preemptive Scheduling là nơi mà một nhiệm vụ có thể bị treo bởi một ngắt CPU, không giống như Non-Preemptive, nhiệm vụ chạy cho đến khi nó phát hành kiểm soát của CPU.

Lập lịch không bắt buộc

Nhiệm vụ trong một hệ thống Không bắt buộc sẽ chạy cho đến khi hoàn thành.

Scheduler sau đó sẽ kiểm tra tất cả các trạng thái công việc và lên kế hoạch cho nhiệm vụ ưu tiên cao nhất tiếp theo với trạng thái Sẵn sàng.

Với Non-Preemptive Scheduling, một khi nhiệm vụ được phân công cho CPU, nó không thể lấy đi, ngay cả khi các nhiệm vụ ngắn phải đợi cho các nhiệm vụ dài hơn để hoàn thành.

Việc quản lý lập kế hoạch đối với tất cả các nhiệm vụ là "công bằng" và thời gian phản hồi có thể dự đoán được vì các nhiệm vụ ưu tiên cao không thể vượt qua các nhiệm vụ chờ đợi hơn nữa trong hàng đợi.

Scheduler đảm bảo mỗi nhiệm vụ được 'chia sẻ của CPU, tránh sự chậm trễ với bất kỳ công việc. "Số lượng thời gian" được phân bổ cho CPU có thể không nhất thiết phải bằng nhau, vì nó phụ thuộc vào thời gian thực hiện nhiệm vụ phải hoàn thành.

Lập kế hoạch dự phòng

Mô hình lập kế hoạch này cho phép các nhiệm vụ bị gián đoạn - trái với Kế hoạch Không-Ngăn ngừa có phương pháp "chạy để hoàn thành".

Các ngắt, có thể được bắt đầu từ các cuộc gọi bên ngoài, gọi Scheduler để tạm dừng một nhiệm vụ đang chạy để quản lý một nhiệm vụ ưu tiên cao hơn - vì vậy việc kiểm soát của CPU có thể được preempted.

Nhiệm vụ ưu tiên cao nhất trong trạng thái Sẵn sàng được thực hiện, cho phép phản ứng nhanh với các sự kiện thời gian thực.

Một số nhược điểm của Preemptive Scheduling liên quan đến việc tăng chi phí chung của các tài nguyên khi sử dụng ngắt và các vấn đề có thể xảy ra với hai nhiệm vụ chia sẻ dữ liệu, vì có thể bị gián đoạn trong khi cập nhật các cấu trúc dữ liệu chia sẻ và có thể ảnh hưởng xấu đến tính toàn vẹn của dữ liệu.

Mặt khác, thực tế là có thể tạm dừng nhiệm vụ để quản lý một nhiệm vụ khác có thể là quan trọng.

Trong Tóm tắt

Có thể định nghĩa nhiều sự khác biệt và sự phụ thuộc trong các chính sách khác nhau, chẳng hạn như sử dụng một "" Round Robin Policy [i] " ở đó mọi công việc (có mức độ ưu tiên ngang nhau) chạy một lần, đặt ở cuối hàng đợi, cho chu kỳ tiếp theo. Các chính sách khác bao gồm

First-In-First-Out , Shortest-Job-First , Shortest-Job-Next , Shortest Remaining Time , vv Phân tích dữ liệu lịch sử có thể cung cấp thông tin về các khía cạnh, như tỷ lệ các tác vụ mới đến, CPU và I / O Bursts vv để xác định các đặc tính thời gian chờ đợi của nhiệm vụ, quản trị viên với dữ liệu có liên quan để xác định mô hình lập kế hoạch.