Bộ định thời - Stream Hub

Định thời CPU

by Admin


Đăng vào Thu Oct 19 2017



Mục tiêu của việc đa chương trình là lúc nào cũng có những chương trình chạy xuyên suốt để tối đa hóa sử dụng CPU. Mục tiêu của việc chia sẻ thời gian là chuyển đổi CPU giữa những quá trình đó một cách thường xuyên để người dùng có thể tương tác với mỗi chương trình trong lúc nó hoạt động.

 

Để đạt được những mục tiêu này, bộ định thời (process scheduler) sẽ chọn một quy trình sẵn có (có thể là từ một bộ các quy trình có sẵn) để chương trình hoạt động trên CPU. Ở một hệ thống xử lý đơn, sẽ không bao giờ xảy ra việc nhiều chương trình cùng chạy một lúc, nếu có nhiều hơn, những chương trình khác sẽ phải đợi đến khi CPU chạy xong và được đặt lại.

 

3.2.1 Hàng chờ

Khi những chương trình đi vào hệ thống, chúng được đặt vào một job queue, hay còn gọi là hàng chờ, nó bao gồm toàn bộ những quá trình trong hệ thống. Những chương trình được giữ trong một hàng chờ sẵn sàng (ready queue) thì được lưu trữ trong bộ nhớ chính, sẵn sàng và đợi để hoạt động. Danh sách này được lưu trữ như một linked-list. Đầu của danh sách ready-queue chứa những cái dấu PCBs đầu tiên và cuối cùng trong danh sách. Mỗi PCB bao gồm những cái thẻ để chỉ PCB kế tiếp đã sẵn sàng

 

Hệ thống cũng bao gồm nhiều danh sách đợi. Khi mà chương trình đã được chỉ định trong CPU, nó sẽ hoạt động trong một thời gian và cuối cùng là bị loại bỏ, bị cắt ngang hoặc đợi sự xuất hiện của một sự kiện cụ thể, ví dụ như sự hoàn thành của yêu cầu I/O.

 

Chương trình làm những yêu cầu I/O để hoàn thành công việc của chúng. Ví dụ, bạn yêu cầu hệ điều hành, hay chi tiết hơn là CPU thực hiện công việc "in một trang giấy" cho bạn. CPU sẽ phải cắt ngang vì phải đợi I/O (ở đây là máy in) thực hiện xong công việc in của nó. Sau đó quá trình (hay còn gọi process, bạn có thể tham khảo process là gì) đó được xếp trở lại hàng chờ, chờ lần được gọi tiếp theo.

 

 

Một quy trình mới thì sẽ được đặt đầu tiên ở danh sách sẵn sàng. Nó đợi cho đến khi nó được chọn để hoạt động hoặc dispatched. Khi chương trình được phân bổ trong CPU và hoạt động, một vài vấn đề có thể xảy ra:

Chương trình có thể đưa ra yêu cầu I / O và sau đó được đặt trong một hàng đợi I / O.

Chương trình có thể tạo ra một chương trình con mới và đợi chương trình con này chấm dứt

Chương trình có thể bị xóa bỏ khỏi CPU, đó là kết quả của sự ngắt kết nối, sau đó được đặt lại vào hàng chờ sẵn sàng

Trong hai trường hợp đầu tiên, chương trình chuyển từ tình trạng chờ sang tình trạng sẵn sàng và sau đó được đặt lại trong ready-queue. Một chương trình tiếp tục chu kỳ này đến khi nó kết thúc, lúc đó nó sẽ bị xóa bỏ khỏi mọi hàng chờ, PCB và nguồn của nó cũng bị xóa.

 

3.2.2  Schedulers (Bộ định thời)

Một chương trình di chuyển giữa các hàng đợi khác nhau trong suốt thời gian của nó. Hệ điều hành sẽ phải chọn ra những chương trình từ những hàng chờ vào một lúc nào đó. Việc chọn lựa chương trình được tiến hành bởi một scheduler thích hợp.

Thông thường, trong một hệ thống, nhiều chương trình được chọn để xem xét hơn là hoạt động ngay lập tức. Những chương trình được lưu trữ trong bộ nhớ của thiết bị (thông thường là ổ đĩa), đó là nơi lưu trữ để hoạt động sau này. long-term scheduler hoặc job scheduler sẽ chọn những chương trình từ chỗ này và tải chúng vào bộ nhớ để hoạt động. Short-term scheduler hoặc CPU scheduler sẽ chọn từ những chương trình đã sẵn dàng để hoạt động và phân bổ CPU cho một trong số chúng

Sự khác nhau cơ bản giữa hai bộ lập trình này nằm ở tần suất hoạt động. Short-term scheduler phải chọn một chương trình mới cho CPU thường xuyên. Mỗi chương trình có thể hoạt động chỉ trong vòng một vài phần nghìn giây trước khi chờ một yêu cầu I/O.

Thông thường, Short-term scheduler hoạt động tối thiểu mỗi 100 phần nghìn giây. Bởi vì những hoạt động như vậy, Short-term scheduler phải nhanh. Nếu tốn 10 phần nghìn giây để quyết định hoạt động một chương trình 100 phần nghìn giây thì 10/(100+10)=9 phần trăm CPU đang được dùng chỉ để lên kế hoạch (phần trăm lãng phí lãng phí).


Để lại bình luận:
Curious developer
Tech seeker
Search