Lập lịch Round Robin trong Lập trình C



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về cách thực hiện Lập lịch vòng tròn trong Lập trình C.

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về thuật toán lập lịch hay còn gọi là thuật toán lập lịch round-robin, round-robin là gì? Làm thế nào để viết một chương trình? Vv. Hãy để chúng tôi bắt đầu.

Lập lịch Round Robin là gì?

Lập lịch Round Robin là một thuật toán lập lịch được hệ thống sử dụng để lập lịch sử dụng CPU. Đây là một thuật toán phủ đầu. Tồn tại một khoảng thời gian cố định gắn với mỗi yêu cầu được gọi là lượng tử. Bộ lập lịch công việc lưu tiến trình của công việc đang được thực hiện hiện tại và chuyển sang công việc tiếp theo có mặt trong hàng đợi khi một quy trình cụ thể được thực hiện trong một lượng tử thời gian nhất định.





Lập lịch Round Robin

Không có tiến trình nào sẽ giữ CPU trong một thời gian dài. Việc chuyển mạch được gọi là chuyển mạch ngữ cảnh. Nó có lẽ là một trong những thuật toán lập lịch tốt nhất. Hiệu quả của thuật toán này phụ thuộc vào giá trị lượng tử.



THUẬT TOÁN LẬP LỊCH ROBIN VÒNG

  • Đầu tiên chúng ta có một hàng đợi trong đó các quy trình được sắp xếp theo thứ tự đến trước phục vụ trước.
  • Một giá trị lượng tử được cấp phát để thực hiện mỗi quá trình.
  • Quá trình đầu tiên được thực hiện cho đến khi kết thúc giá trị lượng tử. Sau đó, một ngắt được tạo ra và trạng thái được lưu.
  • Sau đó CPU chuyển sang quy trình tiếp theo và phương pháp tương tự cũng được thực hiện.
  • Các bước tương tự được lặp lại cho đến khi tất cả các quá trình kết thúc.

Xem xét mã mẫu

#include int main () {int i, limit, total = 0, x, counter = 0, time_quantum int wait_time = 0, turnaround_time = 0, Arrival_time [10], burst_time [10], temp [10] float average_wait_time, average_turnaround_time printf ('nEnter Tổng số Quy trình: t') scanf ('% d', & limit) x = limit for (i = 0 i0) {temp [i] = temp [i] - time_quantum total = total + time_quantum} if (temp [i] == 0 && counter == 1) {x-- printf ('nProcess [% d] tt% dtt % dttt% d ', i + 1, burst_time [i], tổng số - thời gian đến [i], tổng số - thời gian đến [i] - thời gian nổ tung [i]) thời gian chờ đợi = thời gian chờ đợi + tổng số - thời gian đến [i] - thời gian hoạt động [i] thời gian chuyển tiếp = turnaround_time + total - Arrival_time [i] counter = 0} if (i == limit - 1) {i = 0} else if (scroll_time [i + 1]<= total) { i++ } else { i = 0 } } average_wait_time = wait_time * 1.0 / limit average_turnaround_time = turnaround_time * 1.0 / limit printf('nnAverage Waiting Time:t%f', average_wait_time) printf('nAvg Turnaround Time:t%fn', average_turnaround_time) return 0 }

ĐẦU RA:

GIẢI TRÌNH:

Trong đoạn mã trên, chúng tôi yêu cầu người dùng nhập số lượng quy trình, thời gian đến và thời gian liên tục cho mỗi quy trình. Sau đó, chúng tôi tính toán thời gian chờ và thời gian quay vòng bằng cách sử dụng thuật toán quay vòng.

Phần chính ở đây là tính toán thời gian quay vòng và thời gian chờ đợi. Thời gian quay vòng được tính bằng cách cộng tổng thời gian đã đi và trừ thời gian đến.

cách sử dụng anaconda cho python

Thời gian chờ được tính bằng cách lấy tổng trừ đi thời gian đến và thời gian liên tục và cộng với t0 thời gian chờ. Đây là cách diễn ra lịch thi đấu vòng tròn một lượt.



ƯU ĐIỂM:

  • Chi phí thấp cho việc ra quyết định.
  • Không giống như các thuật toán khác, nó ưu tiên như nhau cho tất cả các quy trình.
  • Quá trình này hiếm khi xảy ra chết đói.

NHƯỢC ĐIỂM:

  • Hiệu suất của hệ thống sẽ giảm nếu giá trị lượng tử thấp do việc chuyển đổi diễn ra thường xuyên.
  • Hệ thống có thể không phản hồi nếu giá trị lượng tử cao.

Với điều này, chúng ta đến phần cuối của bài viết này.

Tôi hy vọng bạn tìm thấy thông tin này và hữu ích, hãy theo dõi để biết thêm các hướng dẫn về các chủ đề tương tự. Bạn cũng có thể xem chương trình đào tạo của chúng tôi to có được kiến ​​thức chuyên sâu về jQuery cùng với các ứng dụng khác nhau của nó, bạn có thể để được đào tạo trực tuyến trực tiếp với hỗ trợ 24/7 và quyền truy cập trọn đời.Thực hiện đoạn mã trên với các chuỗi và sửa đổi khác nhau. Bây giờ, chúng ta đã hiểu rõ về tất cả các khái niệm chính liên quan đến con trỏ.

Có một câu hỏi cho chúng tôi? Đề cập đến họ trong phần bình luận của blog này và chúng tôi sẽ liên hệ lại với bạn.