Để cho các tiến trình được xử lý hiệu quả và thời gian đợi là ít nhất, hệ điều hành sẽ phải sử dụng một giải thuật lập lịch thích hợp nhất để chọn một trong các tiến trình trong hàng đợi
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
Giảng viên hướng dẫn: TS Nguyễn Thanh Bình
Nguyễn Mạnh Toàn 20200543 Điện tử 08 - K65 Phùng Ngọc Tùng 20203781 Điện tử 08 - K65 Nguyễn Phương Linh 20203730 Điện tử 08 - K65 Đinh Việt Thắng 20200607 Điện tử 08 - K65 Kiều Đức Thành 20203583 Điện tử 08 - K65
Hà Nội, 11/2023
Trang 2LỜI NÓI ĐẦU
Hệ điều hành được coi là linh hồn của phần cứng máy tính, là môi trường để cho các chương trình thực thi trên nó Với chức năng phân phối và quản lý tài nguyên hợp
lý, đồng thời có thể tạo giao diện thân thiện với người dùng, hệ điều hành là một phần then chốt không thể thiếu được trong mỗi hệ thống máy tính điện tử
Trong môi trường xử lý đa nhiệm, có thể xảy ra tình huống nhiều tiến trình đồng thời sẵn sàng để được xử lý Điều này yêu cầu hệ điều hành sẽ phải lựa chọn và xử lý các tiến trình trong hàng đợi một cách hợp lý và hiệu quả Do đó, một trong những chức năng quan trọng không thể thiếu của hệ điều hành là lập lịch cho tiến trình
Để cho các tiến trình được xử lý hiệu quả và thời gian đợi là ít nhất, hệ điều hành
sẽ phải sử dụng một giải thuật lập lịch thích hợp nhất để chọn một trong các tiến trình trong hàng đợi Giải thuật phải tối ưu năng suất của CPU và giảm thời gian chờ đợi trung bình, giúp các tiến trình được thực thi nhanh chóng
Chính vì những tính năng đặc biệt mà giải thuật lập lịch tiến trình đem lại và để tìm hiểu kĩ về nguyên tắc hoạt động của chúng, nhóm chúng em sẽ cùng nhau tìm hiểu và
nghiên cứu đề tài: “Tìm hiểu và mô phỏng các thuật toán lập lịch cho CPU”
Nhóm chúng em xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Thanh Bình đã hướng dẫn, đưa ra quy trình tìm hiểu để nhóm chúng em có thể hoàn thành được mục tiêu của đề tài Trong quá trình thực hiện đề tài, chúng em không tránh khỏi những thiếu sót, rất mong nhận được chỉ dẫn và góp ý của thầy để đề tài ngày càng hoàn thiện hơn
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 2
DANH MỤC KÍ HIỆU VÀ TỪ VIẾT TẮT 4
DANH MỤC HÌNH VẼ 5
PHÂN CÔNG CÔNG VIỆC 6
CHƯƠNG 1: LÝ THUYẾT CƠ BẢN VỀ HỆ ĐIỀU HÀNH 7
1.1 Giới thiệu chung về Hệ điều hành 7
1.2 Các chức năng của Hệ điều hành 7
1.3 Nhiệm vụ của Hệ điều hành 8
1.4 Phân loại hệ điều hành 8
CHƯƠNG 2: TỔNG QUAN VỀ TIẾN TRÌNH 9
2.1 Khái niệm tiến trình 9
2.2 Các trạng thái của tiến trình 10
2.3 Các đặc tính của tiến trình 11
2.4 Khối điều khiển tiến trình (Process Control Block) 11
CHƯƠNG 3: LẬP LỊCH CHO TIẾN TRÌNH 13
3.1 Chu kỳ CPU và I/O burst 13
3.2 Bộ lập lịch CPU (CPU Scheduler) 14
3.3 Bộ điều phối (Dispatcher) 14
3.4 Tiêu chuẩn lập lịch (Scheduling criteria) 15
3.5 Mục tiêu của lập lịch 15
3.6 Lập lịch ưu tiên (Preemptive Scheduling) 15
CHƯƠNG 4: GIẢI THUẬT LẬP LỊCH 17
4.1 Thuật toán First Come First Serve (FCFS) 17
4.2 Thuật toán Shortest Job First (SJF) 19
4.3 Thuật toán Shortest Remain Time First (SRTF) 22
4.4 Thuật toán Priority Scheduling 26
4.5 Thuật toán Round Robin (RR) 30
KẾT LUẬN 40
TÀI LIỆU THAM KHẢO 41
Trang 4DANH MỤC KÍ HIỆU VÀ TỪ VIẾT TẮT
Từ viết tắt Định nghĩa và giải thích
CPU Central Processing Unit – Bộ xử lý trung tâm
PCB Process Control Block – Khối điều kiển tiến trình
Trang 5DANH MỤC HÌNH VẼ
HÌNH 1 HỆ ĐIỀU HÀNH 7
HÌNH 2 PROCESS IN MEMORY 9
HÌNH 3 SƠ ĐỒ CHUYỂN TRẠNG THÁI CỦA TIẾN TRÌNH 10
HÌNH 4 PROCESS CONTROL BLOCK (PCB) 12
HÌNH 5 CHU KỲ LUÂN PHIÊN CỦA ĐỢT CPU VÀ I/O 13
HÌNH 6 BIỂU ĐỒ THỜI LƯỢNG CÁC ĐỢT CPU 14
HÌNH 7 MÔ TẢ THUẬT TOÁN FCFS 17
HÌNH 8 BIỂU ĐỒ PHÂN BỐ THỜI GIAN CỦA THUẬT TOÁN FCFS 18
HÌNH 9 MÔ TẢ THUẬT TOÁN SJF 20
HÌNH 10 BIỂU ĐỒ PHÂN BỐ THỜI GIAN CỦA THUẬT TOÁN SJF 21
HÌNH 11 BIỂU ĐỒ PHÂN BỐ THỜI GIAN CỦA THUẬT TOÁN SRTF 25
HÌNH 12 MÔ TẢ THUẬT TOÁN ROUND ROBIN 30
HÌNH 13 TIME QUANTUM VÀ CHUYỂN ĐỔI NGỮ CẢNH 35 HÌNH 14 LẬP LỊCH HÀNG ĐỢI ĐA CẤP (MULTILEVEL QUEUE SCHEDULING)
ERROR! BOOKMARK NOT DEFINED
HÌNH 15 CÁC HÀNG ĐỢI PHẢN HỒI ĐA CẤP (MULTILEVEL FEEDBACK QUEUES)
ERROR! BOOKMARK NOT DEFINED.
Trang 6PHÂN CÔNG CÔNG VIỆC
1 Đinh Việt Thắng Tìm hiểu lý thuyết tiến trình, lý thuyết thuật
toán, soạn thảo báo cáo
2 Kiều Đức Thành Tìm hiểu lý thuyết lập lịch, lý thuyết thuật
toán, soạn thảo báo cáo
3 Nguyễn Phương Linh Tìm hiểu thuật toán, đề xuất mô phỏng cải
tiến Round Robin, soạn thảo báo cáo
4 Nguyễn Mạnh Toàn
Phùng Ngọc Tùng
Tìm hiểu và mô phỏng thuật toán, soạn thảo báo cáo, làm slide
Trang 7CHƯƠNG 1: LÝ THUYẾT CƠ BẢN VỀ HỆ ĐIỀU HÀNH
Trong chương này, chúng em xin trình bày tổng quan về hệ điều hành Sau đó, chúng em sẽ trình bày khái niệm, các chức năng, nhiệm vụ và phân loại hệ điều hành
1.1 Giới thiệu chung về Hệ điều hành
Hệ điều hành là một phần mềm chạy trên máy tính và các thiết bị di động, dùng để điều hành, quản lý các thiết bị phần cứng và các tài nguyên phần mềm trên máy tính, và các thiết bị di động
Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính Khi khởi động máy tính, hệ điều hành được khởi động đầu tiên, sau
đó người sử dụng mới có thể sử dụng được các chương trình ứng dụng khác thông qua giao diện tương tác do hệ điều hành cung cấp
Hình 1 Hệ điều hành
1.2 Các chức năng của Hệ điều hành
Hệ điều hành có các chức năng chính sau:
Trang 8- Quản lý tiến trình (process management)
- Quản lý bộ nhớ (memory management)
- Quản lý hệ thống lưu trữ
- Giao tiếp với người dùng
1.3 Nhiệm vụ của Hệ điều hành
➢ Điều khiển và quản lý trực tiếp các phần cứng
➢ Thực hiện một số thao tác cơ bản trong máy tính như các thao tác đọc, viết tập tin, quản lý hệ thống tập tin (file system) và các kho dữ liệu
➢ Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng
➢ Cung ứng một hệ thống lệnh cơ bản để điều hành máy Các lệnh này gọi là lệnh hệ thống (system command)
1.4 Phân loại hệ điều hành
Phân loại hệ điều hành dưới góc độ người sử dụng và số chương trình được thực thi cùng lúc trong hệ điều hành:
❖ Hệ điều hành đơn nhiệm một người sử dụng
Hệ điều hành chỉ cho phép tại một thời điểm chỉ có một chương trình được thực thi Muốn thực hiện nhiều chương trình, các chương trình phải được thực hiện lần lượt Mỗi lần làm việc cũng chỉ có một người được đăng nhập vào hệ thống
VD: MS-DOS (tiền thân của hệ điều hành Windows hiện nay)
❖ Hệ điều hành đa nhiệm một người sử dụng
Hệ điều hành loại này chỉ cho phép một người đăng nhập vào hệ thống nhưng có thể kích hoạt cho hệ thống thực hiện nhiều chương trình đồng thời
VD: Hệ điều hành Windows 95
❖ Hệ điều hành đa nhiệm nhiều người sử dụng
Hệ điều hành loại này cho phép nhiều người đăng nhập vào hệ thống tại các thời điểm khác nhau (thông qua tên tài khoản - Account Name) và thực hiện đồng thời nhiều chương trình Hệ điều hành loại này phức tạp, đòi hỏi máy tính phải có bộ xử lí mạnh và
bộ nhớ trong lớn Đa số các hệ điều hành ngày nay là đa nhiệm nhiều người dùng
VD: Windows XP, Windows 7, Linux,
Trang 9CHƯƠNG 2: TỔNG QUAN VỀ TIẾN TRÌNH
2.1 Khái niệm tiến trình
• Tiến trình (process) được coi là một chương trình (program)đang được xử lý
• Một tiến trình bao gồm:
- Giá trị tập thanh ghi của bộ xử lý
- Giá trị các vùng dữ liệu trong bộ nhớ như text (chứa mã code thực thi), data (chứa các biến toàn cục), heap (chứa các liên kết được cấp phát động) và stack
(lưu biến cục bộ, các tham số truyền vào hàm và địa chỉ trả về của hàm)
• Mục đích cho nhiều tiến trình hoạt động đồng thời:
- Tăng hiệu suất sử dụng CPU
- Tăng mức độ đa nhiệm
- Tăng tốc độ xử lý
Trang 102.2 Các trạng thái của tiến trình
❖ Tại một thời điểm, một tiến trình có thể nhận trong một các trạng thái sau đây:
• New: Tiến trình đang được tạo lập
• Running: Các chỉ thị của tiến trình đang được xử lý
• Ready: Tiến tình chờ được cấp phát CPU để xử lý
• Waiting: Tiến trình dừng để chờ được cấp phát tài nguyên, hoặc chờ thao tác
nhập xuất hoặc chờ một sự kiện nào đó
• Terminated: Tiến trình hoàn tất xử lý
Hình 3 Sơ đồ chuyển trạng thái của tiến trình
❖ Cách tiến trình chuyển trạng thái:
Đầu tiên, khi vừa khởi tạo, tiến trình sẽ ở trạng thái là new
Thông qua bộ định thời dài hạn Long-term Scheduler, tiến trình từ new sẽ được sắp xếp vị trí để vào trong hàng đợi ready
Thông qua bộ định thời Short-term Scheduler, từ trạng thái ready tiến trình sẽ được sắp xếp để chuyển qua trạng thái running (là trạng thái chạy - trạng thái sử dụng
Trang 11• ready: Khi tiến trình bị interrupt (bị ngắt) bởi Short-term Scheduler Các lý do
ngắt có thể là: Ngắt thời gian (Clock Interrupt), Ngắt ngoại vi (I/O Interrupt), Lời gọi hệ thống (Operating System Call)
• terminated: Khi ứng dụng thực thi xong: Khi gặp lệnh exit
2.3 Các đặc tính của tiến trình
a/ Tính hướng nhập/xuất (I/O-boundedness):
Tiến trình khi thực thi, đa số là các thao tác nhập xuất, rất ít lệnh xử lý
b/ Tính hướng xử lý (CPU-boundedness):
Tiến trình khi thực thi, đa số là các thao tác tính toán và xử lý, rất ít thao tác nhập/xuất
c/ Tiến trình tương tác hay xử lý theo lô:
Khi có cả hai tiến trình tương tác và xử lý theo lô, tiến trình xử lý theo lô có thể được tạm dừng và ưu tiên cho tiến trình tương tác được phản hồi ngay lập tức Vì tiến trình tương tác thường yêu cầu thời gian phản hồi nhanh Còn xử lý theo lô chạy ngầm nên có thể trì hoãn
d/ Thời gian đã sử dụng CPU của tiến trình
Các tiến trình nhận được CPU trong ít thời gian là những tiến trình đã phải chờ lâu nhất, do vậy ưu tiên chọn chúng
f/ Thời gian còn lại tiến trình cần để hoàn tất
Có thể giảm thiểu thời gian chờ đợi trung bình của các tiến trình bằng cách cho các tiến trình cần ít thời gian nhất để hoàn tất được thực hiện trước Tuy nhiên hiếm khi biết được tiến trình cần bao nhiêu thời gian nữa để kết thúc xử lý
2.4 Khối điều khiển tiến trình (Process Control Block)
Hệ điều hành quản lý các tiến trình trong hệ thống thông qua khối điều khiển tiến trình (process control block - PCB)
Trang 12Hình 4 Process Control Block (PCB)
PCB là một cấu trúc dữ liệu chứa những thông tin về tiến trình, bao gồm:
- Trạng thái của tiến trình (process state): new, ready, waiting, …
- Thanh ghi program counter: chứa địa chỉ của lệnh tiếp theo được thực thi trong tiến trình này
- Tập thanh ghi CPU
- Thông tin lập lịch của CPU (*)
- Thông tin về bộ nhớ (memory): quản lý thông tin bộ nhớ cấp phát cho tiến trình
- I/O status: danh sách các thiết bị vào ra, danh sách các file đang mở
Trang 13CHƯƠNG 3: LẬP LỊCH CHO TIẾN TRÌNH
Trong hệ thống đơn nhiệm, tại một thời điểm chỉ có một tiến trình được thực thi,
các tiến trình khác (ready) phải đợi tiến trình đang thực thi hiện tại (running) hoàn thành
rồi mới được cấp CPU Mục tiêu là luôn có một số tiến trình chạy để tối đa hóa việc sử dụng CPU
3.1 Chu kỳ CPU và I/O burst
Qúa trình thực thi tiến trình bao gồm một chu kỳ thực thi CPU và chờ I/O Các tiến trình luân phiên giữa 2 trạng thái này Qúa trình thực thi bắt đầu với một đợt CPU (CPU burst), tiếp theo là một đợt I/O (I/0 burst), tiếp theo là một đợt CPU khác, sau đó là một đợt I/O khác … Cuối cùng, đợt CPU cuối cùng kết thúc với yêu cầu hệ thống chấm dứt thực thi
Hình 5 Chu kỳ luân phiên của đợt CPU và I/O
Thời lượng của các đợt CPU đã được đo rộng rãi Mặc dù chúng khác nhau rất nhiều từ tiến trình này sang tiến trình khác và từ máy tính này sang máy tính khác, chúng
có xu hướng có đường cong tần số tương tự như trong hình bên dưới Đường cong
Trang 14thường được đặc trưng là hàm mũ hoặc siêu mũ, với một số lượng lớn các đợt CPU ngắn
và một số lượng nhỏ các đợt CPU dài
Hình 6 Biểu đồ thời lượng các đợt CPU
3.2 Bộ lập lịch CPU (CPU Scheduler)
Khi CPU không hoạt động, hệ điều hành phải chọn 1 trong các tiến trình trong hàng đợi sẵn sàng để thực thi Quá trình lựa chọn được thực hiện bởi bộ lập lịch CPU (bộ lập lịch ngắn hạn) Bộ lập lịch chọn 1 tiến trình đã sẵn sàng để thực thi và phân bổ CPU cho tiến trình đó
Lưu ý rằng hàng đợi sẵn sàng có thể được triển khai dưới dạng hàng đợi FIFO, hàng đợi ưu tiên, cây hoặc đơn giản là danh sách liên kết không có thứ tự
Việc một tiến trình chiếm CPU trong thời gian dài sẽ làm cho các tiến trình trong hàng đợi sẵn sàng bị rơi vào trạng thái chờ vô hạn Từ đó làm lãng phí tài nguyên, gây chậm toàn hệ thống Do đó, lập lịch giúp tận dụng tài nguyên hệ thống một cách triệt để
3.3 Bộ điều phối (Dispatcher)
Một thành phần khác liên quan đến lập lịch CPU là bộ điều phối Bộ điều phối là mô-đun trao quyền điều khiển CPU cho tiến trình được chọn bởi bộ lập lịch ngắn hạn Chức năng này bao gồm những điều sau đây:
- Chuyển ngữ cảnh (switching context)
- Chuyển sang chế độ người dùng
- Chuyển đến vị trí thích hợp trong chương trình người dùng để khởi động lại chương
Trang 15trình đó
Bộ điều phối phải càng nhanh càng tốt, vì nó được gọi mỗi lần chuyển đổi tiến trình Thời gian cần thiết để bộ điều phối dừng 1 tiến trình và bắt đầu chạy 1 tiến trình khác được gọi là độ trễ điều phối
3.4 Tiêu chuẩn lập lịch (Scheduling criteria)
Một số tiêu chuẩn lập lịch của tiến trình cần được quan tâm như:
➢ Mức sử dụng CPU (CPU Utilization): Hệ thống phải tận dụng được CPU tối đa
thời gian CPU càng bận rộn càng tốt (max) (trong khoảng 40 – 90%)
➢ Thông lượng (Throughput ): Số lượng tiến trình hoàn thành trong một đơn vị
thời gian Tiến trình chạy càng nhanh càng tốt (Thông lượng càng lớn càng tốt) (10 tiến trình / giây – 1 tiến trình / giờ)
➢ Thời gian quay vòng (Turnaround Time): Khoảng thời gian từ thời điểm gửi
tiến trình tới khi tiến trình hoàn thành, cần đạt min Thời gian quay vòng càng ngắn thì thông lượng càng lớn
Thời gian quay vòng = thời gian chờ đợi truy cập bộ nhớ + thời gian chờ trong hàng đợi sẵn sàng + thời gian thực thi trên CPU + thực thi I/O
➢ Thời gian chờ (Waiting Time): tổng thời gian chờ trong hàng đợi sẵn sàng, cần
phải nhỏ nhất Thời gian chờ càng lâu thì thời gian quay vòng càng kéo dài dẫn đến thông lượng giảm xuống (Min)
➢ Thời gian phản hồi (Response time): Thời gian từ lúc người dùng gửi yêu cầu
đến lúc có phản hồi đầu tiên, phải nhỏ nhất (Min)
3.5 Mục tiêu của lập lịch
➢ Đảm bảo sự công bằng trong việc phục vụ các tiến trình, tránh tình trạng bị rơi vào trạng thái chờ vô hạn
➢ Tối đa hóa số lượng tiến trình được phục vụ trong một đơn vị thời gian
➢ Tối thiểu chi phí, tài nguyên hệ thống
3.6 Lập lịch ưu tiên (Preemptive Scheduling)
• Các quyết định lập lịch CPU có thể diễn ra trong bốn trường hợp sau:
- Khi một tiến trình chuyển từ trạng thái đang chạy sang trạng thái chờ (ví dụ: do
yêu cầu từ I/O hoặc gọi hàm wait () để kết thúc một tiến trình con)
- Khi một tiến trình chuyển từ trạng thái đang chạy sang trạng thái sẵn sàng (ví
Trang 16• Khi việc lập lịch chỉ diễn ra trong trường hợp 1 và 4, lập lịch là không ưu tiên
(nonpreemptive) Nếu không, lập lịch là ưu tiên (preemptive)
• Trong lập lịch không ưu tiên, một khi CPU đã được phân bổ cho một tiến trình, tiến trình sẽ giữ CPU cho đến khi nó giải phóng CPU bằng cách kết thúc hoặc bằng cách
chuyển sang trạng thái chờ
Trang 17CHƯƠNG 4: GIẢI THUẬT LẬP LỊCH
Trong chương này, chúng em xin trình bày về các giải thuật lập lịch: First Come First Serve, Shortest Job First, Shortest Remaining Time First, Round Robin Sau đó, chúng
em sẽ so sánh ưu điểm và nhược điểm của từng giải thuật trên
4.1 Thuật toán First Come First Serve (FCFS)
Trong thuật toán này, độ ưu tiên phục vụ tiến trình căn cứ vào thời điểm hình thành
tiến trình Hàng đợi các tiến trình được tổ chức theo kiểu FIFO (First In First Out), vào
trước sẽ được phục vụ trước Mọi tiến trình đều được phục vụ theo trình tự xuất hiện cho đến khi kết thúc hoặc bị ngắt
Hình 7 Mô tả thuật toán FCFS
Ví dụ: Cho các tiến trình với thời gian đến và thời gian thực thi Sử dụng thuật toán lập lịch FCFS để lập lịch cho các tiến trình
Tiến trình Thời điểm đến (s) Thời gian thực thi (s)
Trang 18Tại thời điểm t=0, tiến trình P1 đến trước và thực hiện trước (với thời gian thực thi
là 11s)
Tại t = 11, tiến trình P1 thực hiện xong đến tiến trình P2 bắt đầu thực hiện
Tại t = 18, tiến trình P2 thực hiện xong đến tiến trình P3 bắt đầu thực hiện
Tại t = 37, tiến trình P3 thực hiện xong đến tiến trình P4 bắt đầu thực hiện
Tại t = 41, tiến trình P4 thực hiện xong đến tiến trình P5 bắt đầu thực hiện
Hình 8 Biểu đồ phân bố thời gian của thuật toán FCFS
Thời gian chờ (s)
Trang 19P5 17 9 24 41 50
Từ bảng trên ta tính được thời gian chờ trung bình của các tiến trình là
0 11 18 37 41
135
+ + + +
= giây
Nhận xét:
• Có thể một tiến trình có thời gian xử lý ngắn phải chờ một tiến trình có thời gian xử
lý dài thực thi xong
• Thời gian chờ trung bình phụ thuộc vào thứ tự của các tiến trình trong danh sách sẵn sàng
Ưu điểm:
• Dạng đơn giản nhất của thuật toán lập lịch CPU → dễ dàng lập trình
• CPU không bị phân phối lại (không bị ngắt)
• Ai đến trước được phục vụ trước
• Chi phí thực hiện thấp nhất (vì không phải thay đổi thứ tự ưu tiên phục vụ, thứ tự ưu tiên là thứ tự của tiến trình trong hàng đợi)
Nhược điểm:
• Thời gian chờ trung bình cao
• Là một thuật toán không mang tính ưu tiên non-preemptive, vì vậy sau khi tiến trình
đã được cấp phát cho CPU, nó sẽ không bao giờ giải phóng CPU cho đến khi nó kết thúc quá trình thực thi
• Khi có tiến trình dài, ít bị ngắt thì các tiến trình ngắn ở phía sau hàng đợi phải chờ đợi lâu hơn
4.2 Thuật toán Shortest Job First (SJF)
Thuật toán này xác định thứ tự ưu tiên thực hiện tiến trình dựa vào tổng thời gian thực hiện tiến trình Tiến trình có thời gian thực hiện ngắn sẽ được ưu tiên phục vụ cho lần thực hiện tiếp theo Nếu có các tiến trình có tổng thời gian thực hiện bằng nhau thì sẽ áp dụng FCFS
Trang 20Hình 9 Mô tả thuật toán SJF
Ví dụ: Cho các tiến trình với thời gian đến và thời gian thực thi Sử dụng thuật toán lập lịch SJF để lập lịch cho các tiến trình
Tiến trình Thời điểm đến (s) Thời gian thực thi (s)
lý trước
Tại thời điểm t = 11s, P1 xử lý xong, P2 được xử lý (với thời gian xử lý xong là 7s) Trong khoảng thời gian P2 thực thi (từ 11 -> 18s), tiến trình P4 và P5 đến (tại thời điểm t
= 13s và t = 17s) và được đưa vào hàng đợi
Lúc này trong hàng đợi có các tiến trình P3, P4, P5 với thời gian thực thi lần lượt là (19s, 4s, 9s) Như vậy P4 có thời gian thực thi nhỏ nhất nên sẽ được ưu tiên thực thi tiếp