Trong lập lịch SJF, quy trình có Burst Timethời gian thực thi thấp nhất, trong số danh sách các tiến trình có sẵn trong hàng đợi sẵn sàng, sẽ được lên lịch tiếp theo.. Theo thuật toán, h
Trang 1BỘ XÂY DỰNG TRƯỜNG ĐẠI HỌC KIẾN TRÚC VÀ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-o0o -BÀI TẬP MÔN
HỆ ĐIỀU HÀNH Chủ đề: CPU Scheduling
Sinh viên thực hiện: Nguyễn Văn Đạt
Trần Trung Tuyến Nguyễn Tấn Hưng Trần Hoàng Long Khúc Anh Duy
2155010069 2155010239 2155010129 2155010154 2155010054
Lớp: 21CN4
Giáo viên hướng dẫn: Nguyễn Mạnh Hùng
Hà Nội, tháng 5 năm 2023
Trang 2Mục lục
1 Khái niệm cơ bản 3
2 Các bộ định thời 3
a) Long-term scheduling 3
b) Medium-term scheduling 3
c) Short term scheduling 3
3 Các tiêu chuẩn định thời CPU 5
4 Các thuật toán 6
a) First Come First Served (FCFS) 6
b) Shortest Job First (SJF) 8
c) Shortest Remaining Time First (SRTF) 10
d) Round - Robin 13
e) Multi Level Queue (MLQ) 18
f) Multi Level Feedback Queue (MLFQ) 21
5, Ngắt 24
Trang 3CPU SCHEDULING
1 Khái niệm cơ bản
Trong các hệ thống multitasking
– Thực thi nhiều chương trình đồng thời làm tăng hiệu suất hệ thống
– Tại mỗi thời điểm, chỉ có một process được thực thi Do đó, cần phải giải quyết vấn đề phân chia, lựa chọn process thực thi sao cho được hiệu quả nhất chiến lược định thời CPU
Định thời CPU
– Chọn một process (từ ready queue) thực thi
– Với một multithreaded kernel, việc định thời CPU là do OS chọn kernel thread được chiếm CPU
2 Các bộ định thời
a) Long-term scheduling
– Xác định chương trình nào được chấp nhận nạp vào hệ thống để thực thi
– Điều khiển mức độ multiprogramming của hệ thống
– Long term scheduler thường cố gắng duy trì xen lẫn CPU-bound và I/Obound process
b) Medium-term scheduling
– Sự chuyển đổi dựa trên sự cần thiết để quản lý multiprogramming
– Được thực hiện bởi phần quản lý bộ nhớ và được thảo luận ở phần quản lý bộ nhớ
Các bộ định thời (tt)
c) Short term scheduling
- Xác định process nào trong ready queue sẽ được chiếm CPU để thực thi kế tiếp (còn được gọi là định thời CPU, CPU scheduling)
- Short term scheduler còn được gọi với tên khác là dispatcher
- Bộ định thời short-term được gọi mỗi khi có một trong các sự kiện/interrupt sau xảy ra:
Clock interrupt – I/O interrupt – Operating system call, trap – signal
Trang 4Dispatcher*
- Dispatcher sẽ chuyển quyền điều khiển CPU về cho process được chọn bởi bộ định thời ngắn hạn
- Bao gồm:
– Chuyển ngữ cảnh (sử dụng thông tin ngữ cảnh trong PCB)
– Chuyển về user mode
– Nhảy đến vị trí thích hợp trong chương trình ứng dụng để khởi động lại chương trình (chính là program counter trong PCB)
- Công việc này gây ra phí tổn
– Dispatch latency: thời gian mà dispatcher dừng một process và khởi động một process khác
Trang 53 Các tiêu chuẩn định thời CPU
– Processor utilization: định thời sao cho CPU càng bận càng tốt cực đại
– Fairness: tất cả process phải được đối xử như nhau
– Throughput: số process hoàn tất công việc trong một đơn vị thời gian cực đại
Trang 64 Các thuật toán
a) First Come First Served (FCFS)
Thuật toán lập lịch trình First come first serve (FCFS) chỉ đơn giản là lên lịch
công việc theo Arrival Time của họ Công việc nào đến trước trong hàng đợi sẵn sàng sẽ lấy CPU trước Arrival Time của công việc càng ít thì công việc nhận được CPU càng sớm Lập lịch FCFS có thể gây ra vấn đề chết đói nếu Burst
Time của quá trình đầu tiên là lâu nhất trong số tất cả các công việc
Do tính chất không phủ đầu của thuật toán, vấn đề chết đói có thể xảy ra
Mặc dù nó dễ thực hiện, nhưng nó có hiệu suất kém vì Avg Waiting Time cao hơn so với các thuật toán lập lịch trình khác
Thí dụ
Hãy lấy một ví dụ về thuật toán lập lịch FCFS Trong lịch trình sau, có 5 quy trình
với ID quy trình P0, P1, P2, P3 và P4 P0 đến tại thời điểm 0, P1 tại thời điểm 1,
P2 tại thời điểm 2, P3 đến tại thời điểm 3 và Quy trình P4 đến tại thời điểm 4 trong
hàng đợi sẵn sàng Các quy trình và Arrival Time và Burst tương ứng của chúng
được đưa ra trong bảng sau
Turn Around Time và Waiting Time được tính bằng công thức sau.
1 Turn Around Time = Completion Time – Arrival Time
2 Waiting Time = Turn Around Time – Thời gian liên tục
Avg Waiting Time được xác định bằng cách tổng Waiting Time tương ứng của tất
cả các quá trình và chia tổng cho tổng số quá trình
Trang 7Avg Waiting Time được xác định bằng cách tổng Waiting Time tương ứng của tất
cả các quá trình và chia tổng cho tổng số quá trình
Avg Waiting Time = 31/5
Burst Time
Completion Time
Turn Around Time
Waiting Time
Trang 8b) Shortest Job First (SJF)
Shortest Job First (SJF) là một thuật toán lập lịch CPU trong hệ thống máy tính
Thuật toán này sắp xếp các quá trình theo thời gian thực hiện (execution time) từ thấp đến cao và lựa chọn quá trình có thời gian thực hiện ngắn nhất để thực thi
trước
Với SJF, các quá trình mới được đưa vào hàng đợi sẽ được so sánh với các quá
trình đang thực thi, và nếu thời gian thực hiện ngắn hơn thì quá trình mới sẽ được thực thi trước Tuy nhiên, SJF không hoàn toàn công bằng, vì nó có thể dẫn đến tình trạng starvation (quá trình bị đói tài nguyên) Nếu một quá trình có thời gian thực hiện lớn hơn các quá trình khác, nó có thể không được thực thi cho đến khi các quá trình khác đã hoàn thành
SJF có thể được sử dụng để cải thiện hiệu suất của hệ thống máy tính, đặc biệt là trong các hệ thống có nhiều quá trình có thời gian thực hiện ngắn
Trong lập lịch SJF, quy trình có Burst Time(thời gian thực thi) thấp nhất, trong số danh sách các tiến trình có sẵn trong hàng đợi sẵn sàng, sẽ được lên lịch tiếp theo
Tuy nhiên, rất khó dự đoán Burst Time cần thiết cho một quá trình do đó thuật toánnày rất khó thực hiện trong hệ thống
Ưu điểm:
• Thông lượng tối đa
• Waiting Time và Turn Around trung bình tối thiểu
Nhược điểm:
• Có thể đau khổ với vấn đề chết đói
• Nó không thể thực hiện được vì không thể biết trước thời gian Burst chính xác cho một quá trình
Trang 92 3 3 13 10 7
Do đó, Không có Quy trình nào đến tại thời điểm 0; sẽ có một vị trí trống
trong biểu đồ Gantt từ thời điểm 0 đến 1 (thời điểm mà quá trình đầu tiên đến).
Theo thuật toán, hệ điều hành lập lịch cho quá trình có Burst Time thấp nhất trong
số các quá trình có sẵn trong hàng đợi sẵn sàng
Cho đến nay, chúng ta chỉ có một quá trình trong hàng đợi sẵn sàng, do đó bộ lập lịch sẽ lập lịch trình này cho bộ xử lý bất kể Burst Time của nó là bao nhiêu
Điều này sẽ được thực hiện cho đến 8 đơn vị thời gian Cho đến khi chúng tôi có thêm ba quy trình nữa được đưa vào hàng đợi sẵn sàng, do đó bộ lập lịch sẽ chọn quy trình có Burst Time thấp nhất
Trong số các quy trình được đưa ra trong bảng, P3 sẽ được thực thi tiếp theo vì nó đang có Burst Time thấp nhất trong số tất cả các quy trình có sẵn
Vì vậy, đó là cách thủ tục sẽ diễn ra trong thuật toán lập lịch trình công việc ngắn
nhất (SJF)
Waiting Time trung bình = 27/5
Trang 10c) Shortest Remaining Time First (SRTF)
Shortest remaining time first(srtf) hay có tên gọi khác là Shortest remaining time, là một phương pháp lập lịch là phiên bản ưu tiên của việc lập lịch tiếp theo
cho công việc có thời gian ngắn nhất Trong thuật toán lập lịch trình này, tiến trình
có khoảng thời gian nhỏ nhất còn lại cho đến khi hoàn thành được chọn để thực thitrước
Cách hoạt động của SRTF như sau:
1 Khi một tiến trình mới được tạo, hệ thống so sánh thời gian thực thi còn lại của tiến trình này với thời gian thực thi còn lại của tiến trình đang được thựcthi hiện tại
2 Nếu thời gian thực thi còn lại của tiến trình mới ngắn hơn, hệ thống chuyển đổi ngay lập tức sang tiến trình mới và tiếp tục thực thi
3 Nếu thời gian thực thi còn lại của tiến trình mới dài hơn, tiến trình đang được thực thi tiếp tục thực hiện cho đến khi hoàn thành hoặc có tiến trình khác ngắn hơn xuất hiện
4 Khi một tiến trình khác ngắn hơn xuất hiện, hệ thống chuyển đổi sang tiến trình mới và tiếp tục quá trình này
Ưu điểm:
Thời gian chờ đợi, tồn tại trong hệ thống của mỗi tiến trình đều ngắn
Thuật toán tối ưu nhất
Nhược điểm:
Việc cài đặt thuật toán khá phức tạp
Cần quản lý chặt chẽ việc điều phối các tiến trình
Quản lý thời gian đến của mỗi tiến trình
Completion Time
Turn Around Time
Waiting Time
Response Time
1 0 8 20 20 12 0
Trang 113 2 2 4 2 0 2
Waiting Time trung bình = 24/6
Biểu đồ Gantt được chuẩn bị theo Arrival Time và Burst Time được cho trong bảng
1 Vì, tại thời điểm 0, quy trình khả dụng duy nhất là P1 với Burst Time CPU là 8 Đây là quy trình khả dụng duy nhất trong danh sách do đó nó được lên lịch
2 Quá trình tiếp theo đến ở đơn vị thời gian 1 Vì thuật toán chúng tôi đang
sử dụng là SRTF là thuật toán phủ đầu, quá trình thực thi hiện tại bị dừng
và bộ lập lịch kiểm tra quá trình có thời gian liên tục ít nhất
Cho đến bây giờ, có hai quy trình có sẵn trong hàng đợi sẵn sàng Hệ điềuhành đã thực thi P1 trong một đơn vị Waiting Time đến nay; thời gian nổ còn lại của P1 là 7 đơn vị Burst Time của Quy trình P2 là 4 đơn vị Do
đó, tiến trình P2 được lập lịch trên CPU theo thuật toán
3 Quá trình tiếp theo P3 đến đơn vị thời gian 2 Tại thời điểm này, việc thựchiện quá trình P3 bị dừng và quá trình có Burst Time còn lại ít nhất được tìm kiếm Vì quá trình P3 có 2 đơn vị Burst Time nên nó sẽ được ưu tiên hơn các đơn vị khác
4 Quy trình tiếp theo P4 đến ở đơn vị thời gian 3 Tại thời điểm này, bộ lập lịch sẽ dừng việc thực thi P4 và kiểm tra xem quy trình nào có Burst Time
ít nhất trong số các quy trình có sẵn (P1, P2, P3 và P4) P1 và P2 đang có thời gian nổ còn lại lần lượt là 7 đơn vị và 3 đơn vị
5 P3 và P4 đang có thời gian nổ còn lại mỗi loại 1 đơn vị Vì cả hai đều bình đẳng nên việc lên lịch sẽ được thực hiện tùy theo Arrival Time của
họ P3 đến sớm hơn P4 và do đó nó sẽ được lên lịch lại.Quy trình Tiếp theo P5 đến ở đơn vị thời gian 4 Cho đến thời điểm này, Quy trình P3 đã
Trang 12hoàn thành việc thực thi và nó không còn trong danh sách Bộ lập lịch sẽ
so sánh Burst Time còn lại của tất cả các quy trình có sẵn Vì Burst Time của quá trình P4 là 1, ít nhất trong số tất cả các quá trình nên điều này sẽ được lên lịch
6 Quy trình Tiếp theo P6 đến ở đơn vị thời gian 5, cho đến thời điểm này, Quy trình P4 đã hoàn thành việc thực thi Chúng tôi có 4 quy trình khả dụng cho đến thời điểm này, đó là P1 (7), P2 (3), P5 (3) và P6 (2) Thời gian Burst của P6 là ít nhất trong số tất cả các P6 do đó được lên lịch Kể
từ bây giờ, tất cả các quy trình đều có sẵn, do đó thuật toán bây giờ sẽ hoạt động giống như SJF P6 sẽ được thực hiện cho đến khi hoàn thành vàsau đó quá trình với thời gian còn lại ít nhất sẽ được lên lịch
Trang 13d) Round - Robin
Định nghĩa:
Round-Robin là gì ta có thể hiểu nó là một giải thuật định thời CPU
Trong một chu kỳ, mỗi tiến trình được gán một thời gian giữ CPU nhất định
Round Robin xuất phát từ nguyên tắc vòng tròn, lần lượt mỗi người sẽ nhận được một phần bằng nhau của một thứ gì đó
Giải thuật Round Robin cung cấp khả năng thực thi các quy trình miễn phí
Các điều kiện quan trọng được sử dụng trong giải thuật Round Robin:
Thời gian hoàn thành: Là thời gian mà bất kỳ quá trình nào cũng cần hoàn
thành công việc thực hiện
Thời gian quay vòng: Dùng để phân biệt giữa thời gian hoàn thành và thời
gian đến Sử dụng công thức: [Thời gian quay vòng = Thời gian hoàn thành – Thời gian đến]
Thời gian chờ: Dùng để phân biệt giữa thời gian quay vòng và thời gian
liên tục Sử dụng công thức: [Thời gian chờ = Thời gian quay vòng – Thời gian nổ]
Giải thuật Round Robin:
Đầu tiên có một hàng đợi trong đó các quy trình được sắp xếp theo thứ tự đến trước xử lý trước
Mỗi 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ỗi ngắt được tạo ra và trạng thái được lưu
CPU chuyển sang quy trình tiếp theo, phương pháp cũng tượng tự và được thực hiện theo
Các bước tương tự được lặp lại cho đến khi kết thúc quá trình
Ưu điểm:
• Với sự hỗ trợ của Round Robin giúp các công việc phân bổ cho CPU được phân bổ hợp lý
• Tất cả các quy trình đều được xử lý mà không có bất kỳ ưu tiên nào
• Giải thuật mang lại hiệu suất tốt cho thời gian phản hồi trung bình
• Trong giải thuật không gặp phải các vấn đề thiếu hụt hay hiệu ứng bảo vệ
• Round Robin không mang tính chu kỳ
• Thêm các quy trình mới tạo vào cuối hàng đợi
• Khi thực hiện, một lượng tử thời gian cụ thể được phân bổ cho các công việckhác nhau
• Mỗi quá trình sẽ có cơ hội lên lịch lại sau một thời gian lượng tử cụ thể
Trang 14• Một bộ lập lịch vòng tròn thường sử dụng tính năng chia sẻ thời gian Điều này có nghĩa là cung cấp cho mỗi công việc một khe thời gian hoặc lượng tử
Nhược điểm:
• Nếu thời gian ngắt của hệ điều hành thấp, đầu ra của bộ xử lý sẽ bị giảm
• Hiệu suất bị phụ thuộc nhiều vào lượng tử thời gian
• Không ưu tiên cho những việc quan trọng khi lập lịch vòng tròn
• Phương pháp này mất nhiều thời gian cho việc chuyển đổi ngữ cảnh
• Lượng tử thời gian thấp nên dẫn đến quá trình chuyển đổi ngữ cảnh trong hệthống cao hơn
• Trở ngại trong việc tìm một lượng tử thời gian chính xác
• Không đặt được mức độ ưu tiên
• Khả năng hiểu suy giảm
Thí dụ:
Lập kế hoạch Round –robin được diễn ra theo các bước sau:
Hàng đợi tiến trình Thời gian bắt đầu tiến trình
Trang 15Bước 1: Quy trình P1 bắt đầu được thực thi với thời gian bắt đầu là 4 trong khi đó P2
và P3 đang ở hàng đợi Mỗi quy trình này đều diễn ra trong khoảng thời gian là 2s
Bước 2: P1 sẽ được thêm vào cuối hàng đợi khi at time = 2 và lúc này P2 được thực
thi
Bước 3: P3 được thực thi và P2 được thêm vào cuối hàng đợi khi at time = 4.
Trang 16Bước 4: P1 được thực thi khi at time = 6 và P3 lại thêm vào cuối hàng đợi.
Bước 5: Thời gian nổ của P1 là 4 vì thế khi at time = 8 thì P1 hoàn thành việc thực
thi, kế tiếp sẽ là P2
Bước 6: Thời gian nổ của P2 là 3 như vậy khi at time = 9 P2 sẽ thực thi xong, quá
trình thực thi P3 bắt đầu cho đến khi hoàn thành
Trang 17Bước 7: Thời gian chờ trung bình của ví dụ trên được tính như dưới đây:
Thời gian chờ đợi:
P1= 0+ 4= 4
P2= 2+4= 6
P3= 4+3= 7
Trang 18e) Multi Level Queue (MLQ)
Multi Level Queue là một thuật toán lập lịch (scheduling) trong hệ điều hành,
nơi các tiến trình (processes) được phân loại và ưu tiên theo nhiều mức độ khác nhau Mỗi mức độ sẽ có một queue (hàng đợi) riêng để lưu trữ các tiến trình
Trong thuật toán Multi Level Queue, các tiến trình được phân loại vào các queue khác nhau dựa trên các yếu tố như độ ưu tiên giảm dần: thời gian hoàn thành, thời gian đáp ứng, v.v Các tiến trình trong cùng một queue sẽ được ưu tiên
xử lý trước các tiến trình trong các queue khác
Thuật toán Multi Level Queue thường được sử dụng trong các hệ thống đa nhiệm (multitasking) để đảm bảo việc xử lý các tiến trình được ưu tiên và hiệu quả hơn Tuy nhiên, việc thiết lập các queue khác nhau và định nghĩa các tiêu chí phân loại tiến trình có thể là một thách thức đối với các nhà phát triển hệ thống
Cách hoạt động:
Thuật toán Multi Level Queue (MLQ) chia các tiến trình trong hệ thống vào các hàng đợi (queue) khác nhau dựa trên mức độ ưu tiên của chúng Các hàng đợi này được sắp xếp theo thứ tự ưu tiên giảm dần Cụ thể, các tiến trình ưu tiên cao sẽđược đưa vào các hàng đợi ưu tiên cao hơn, trong khi các tiến trình ưu tiên thấp hơn sẽ được đưa vào các hàng đợi ưu tiên thấp hơn
Khi một tiến trình được tạo ra, nó sẽ được đưa vào hàng đợi ưu tiên cao nhất, tùy thuộc vào độ ưu tiên của tiến trình đó Các tiến trình trong hàng đợi cao nhất sẽ được CPU thực thi đầu tiên Nếu một tiến trình đang chạy trong hàng đợi cao nhất nhưng không hoàn thành trong một khoảng thời gian nhất định, nó sẽ bị đẩy xuống hàng đợi ưu tiên thấp hơn để các tiến trình khác ưu tiên cao hơn được thực thi trước
Trong hệ thống MLQ, mỗi hàng đợi sẽ có một bộ lập lịch riêng biệt để quản
lý các tiến trình trong hàng đợi đó Các bộ lập lịch này có thể sử dụng các thuật toán lập lịch khác nhau, tùy thuộc vào đặc tính của các tiến trình trong hàng đợi đó
Ví dụ, các tiến trình ưu tiên cao có thể sử dụng thuật toán Round Robin để đảm bảo tính công bằng, trong khi các tiến trình ưu tiên thấp hơn có thể sử dụng thuật toán First-Come, First-Serve để đơn giản hóa quá trình lập lịch
Một số hệ thống MLQ có thể có nhiều hơn hai hàng đợi và các tiến trình có thể được đưa qua lại giữa các hàng đợi khác nhau, tùy thuộc vào các tham số như thời gian chờ đợi và độ ưu tiên của tiến trình Tuy nhiên, việc sử dụng quá nhiều hàng đợi có thể làm tăng độ phức tạp của hệ thống và làm giảm hiệu suất của nó