Khi một công việc mới được thêm vào hàng đợi, thuật toán SJF sé so sanh thời gian xử lý của công việc với các công việc đang chờ xử lý và chọn công việc có thời gian xử lý ngắn nhất đề x
Trang 1VIEN ĐÀO TAO CHAT LUQNG TRUONG DAI HQC GIAO THONG
BAI TAP LON
Chương: Lập trình các giải thuật của hệ điều hành
Nguyễn Thành Danh
Hồ Chí Minh, ngày 27 tháng 09 năm 2023
Trang 2Muc Luc
Dam mu tir Viet tat cccscsssssssssssssssssssssssssssessssssssssscsssssesssssscssscscsscssssssssssossoes ill Lời mở đầu seve 1
Nội dung
Chương 1: Giới thiệu
1.] Cúc khải niệm CƠ ĐỞH co cnnnnkknnnHn ng kh gu na 2 Z5 .nn nha ` 2
Chương 2: Cơ chế hoạt động
2.1 M6 ta thuGt tod ah n nhe ằne 4
2.2 Quy trình lựa chọn công việc ngắn nhất ch na 4 2.3 Thời gian đợi trung bình và thời gian hoàn thành trung bình 6
Chương 4: Ưu tiên và không ưu tiên
Chuong 5: Cai dat
Trang 3CPU FCFS FIFO TAT RR SJF SRIF
Dạnh mục từ viết tắt
Central Processing Unit First Come, First Serverd First-In-First-Out Turn-Around- Time Round Robin Shortest Job First Shortest Remain Time First
Trang 4Loi mo dau Trong lĩnh vực quản lý và lập lịch hệ thông máy tính, việc tôi ưu hóa thời gian xử lý và tăng hiệu suất là một yêu cầu cấp thiết Một trong những thuật toán lập lịch phô biến và được sử dụng rộng rãi đề giải quyết vẫn dé nay la SJF (Shortest Job First)
SJF là một thuật toán lập lịch non-preemptive (không bị gián đoạn) mà nhiệm vụ có thời gian xử lý ngắn nhất được ưu tiên xử lý trước Y tưởng chính của SJF là dam bao rằng công việc sẽ được hoàn thành nhanh nhất có thê Khi một công việc mới được thêm vào hàng đợi, thuật toán SJF sé so sanh thời gian xử lý của công việc với các công việc đang chờ xử lý và chọn công việc có thời gian xử lý ngắn nhất đề xử lý tiếp theo
Một trong những ưu điểm nỗi bật của SJF là giảm thiêu thời gian chờ đợi va thời gian
quay vòng của các công việc trong hàng đợi Điều này có thê cải thiện hiệu suât và hiệu quả tông thê của hệ thông
Tuy nhiên, SJF cũng gặp một số hạn chế Vấn đề lợi thế chờ đợi' (Lớn job chờ đợi) có thê xảy ra khi một công việc có thời gian xử lý dài phải chờ đợi trong khi có nhiều
công việc khác có thời gian xử lý ngăn năm trong hàng đợi Điều này CÓ thể làm gia tăng thời gian chờ đợi cho công việc dài hơn và ảnh hưởng đến hiệu suất tổng thê của hệ thông
Nghiên cứu về SJF đòi hỏi việc xem xét và đánh giá cần thận các ưu điểm, hạn chế và
các biến thê của thuật toán này Nghiên cứu SJF cung cấp cơ sở để phát triển các thuật toán lập lịch mới và cải tiễn hiệu suất của hệ thống máy tính
Trên thực tế, SJF không phải lúc nào cũng là giải pháp lý tưởng cho tất cả các tình huông Điều quan trong la hiéu rõ về thuật toán SJE, ưu điểm và hạn chế của nó, và áp
dụng đúng cách dé dam bảo tối ưu hóa hiệu suất của hệ thống máy tính
Trang 5Chương 1: Giới thiệu
1.1 Các khái niệm cơ bản Lập lịch CPU là quá trình sử dụng các thuật toán đề giúp hệ điều hành xác định được tiên trình nào sẽ được thực thi trên bộ xử lý (CPU) tiếp theo Trong các hệ thống đa
nhiệm, có nhiều tiến trình đang chạy cùng một lúc, nhưng chỉ có một tiến trình có thể
được thực thi trên CPU tại một thời điểm Lập lịch CPU quyết định tiến trình nào sẽ
được thực thi tiếp theo
Shortest Job First (SJF) là một thuật toán lập lịch CPU đơn giản và phố biến SJF lựa chọn tiên trình có thời gian xử lý ngăn nhât vào hàng đợi sẵn sàng đề thực thi Tiến trình (process) là một chương trình đang chạy trên hệ thống Tiến trình được tạo ra bởi hệ điều hành khi người dùng khởi chạy một chương trình Tiên trình có thê được xem như một thực thê đang chạy trên hệ thống, bao gồm các trạng thái, bộ nhớ, tai nguyên và các thông tin khác
Các trạng thái của tiến trình Tiên trình có thể ở một trong các trạng thái sau:
O New: Tiến trình mới được tạo ra và chưa được thực thi L1 Ready: Tiến trình đã được tao ra va san sàng dé được thực thi trên CPU
C1 Running: Tién trinh đang được thực thi trên CPU C1 Waiting: Tién trinh đang chờ đợi một sự kiện nào đó xảy ra, chăng hạn như
LO hoặc tín hiệu O Terminated: Tiến trình đã hoàn thành và không còn tồn tại trên hệ thống Burst time là thời gian mà một tiến trình cần để sử dung CPU Burst time duoc do
bang don vi thoi gian, chang han nhw gidy (s) hodc mili giây (ms), nano giây (ns), micro giây (us )
Giả sử có một tiến trình có thời gian thực thi là 10 giây và thời gian L/O là 5 giây Burst time của tiến trình này là:
burst time = 10+ 5 =15 Hàng đợi là một cầu trúc đữ liệu tuyến tính, trong đó các phần tử được thêm vào ở một đâu và được lây ra ở đâu kia Hàng đợi tuân theo co ché FIFO (First In First Out), nghĩa là phân tử được thêm vào đầu tiên sẽ được lây ra đầu tiên
1.2 Mục tiêu
Trang 6Cac muc tiéu cua lap lich CPU bao gom: LO Thông lượng tối đa: Số lượng tác vụ được hoàn thành nhiều nhất trong một
khoảng thời gian nhất định O Đáp ứng thời gian: Thời gian cần thiết ít nhất dé một tác vụ bắt đầu thực thi sau
khi nó được yêu cầu
O Ty 1é si dung CPU: Tận dụng tối đa phần trăm thời gian mà CPU đang được sử dụng một cách hiệu quả đề thực thi các tác vụ
Cân bằng tải là một vấn đề quan trọng trong lập lịch CPU đa nhân Tuy nhiên không thê thỏa mãn tất cả các mục tiêu trên vì bản thân chúng có sự mâu thuần với nhau mà
chỉ có thể thể cân bằng chúng ở một mức độ nào đó
Trang 7Chương 2: Cơ chế hoạt động 2.1 Mô tả giải thuật
Thuật toán SJF ưu tiên xử lý các tiễn trình có thời gian xử lý ngắn nhất trước Y
tưởng chính của SJF la dam bao rang nhiém vu sé dugc hoan thành nhanh nhật có thê Khi một tiên trình mới được thêm vào hàng đợi, thuật toán SJF so sánh thời gian xử lý
của tiên trình đó với các tiền trình đang chờ xử lý và chọn tiên trình có thời gian xử lý
Ví dụ, có ba tiến trình (bỏ qua thời gian xuất hiện) : Tiến trình P1 yêu cầu 10 đơn vị
thời gian đê hoàn thành, Tiên trình P2 yêu cầu 5 đơn vị thời gian đê hoàn thành, tiên
trỉnh P3 yêu câu l6 đơn vị thời gian đề hoàn thành
Trang 8Quy trình lựa chọn tiến trình ngắn nhất của thuật toán SJF (Shortest Job First) được mô tả như sau:
1 Khởi tạo hàng đợi: Bắt đầu bằng việc tạo một hàng đợi rỗng để lưu trữ các tiễn trỉnh chờ xử ly
2 Tiếp nhận tiễn trình: Khi một tiễn trình mới được gửi đến hệ thống, nó sẽ được
tiếp nhận và các thông tin về tiễn trình như thời gian xử lý sẽ được xác định
3 Thêm tiến trình vào hàng đợi: Tiên trình sẽ được thêm vào hàng đợi theo thứ tự từ tiễn trình có thời gian xử lý ngắn nhất đến tiền trình có thời gian xử lý dài hơn Trong trường hợp hai tiễn trình có cùng thời gian xử lý, có thể sử dụng các tiêu chí khác như thử tự tiếp nhận để quyết định vị trí của chúng trong hàng đợi 4 Lara chọn tiến trình để xử lý: Khi cần chọn tiền trình đề xử lý tiếp theo, thuật
toán SJF sẽ lựa chon tiền trình có thời gian xử lý ngắn nhất từ hàng đợi Công việc này sẽ được chuyền đến bộ xử lý để tiếp tục xử lý
5 Xử lý tiễn trình: Tiến trình được chuyển đến bộ xử ly va được xử lý cho đến
khi hoàn thành 6 Hoan thành tiến trình: Khi tiến trình đã hoàn thành nhiệm vụ của nó, thông tin
về thời gian đợi và thời gian hoàn thành có thể được tính toán và lưu trữ cho
mục đích thông kê 7 Quá trình lặp lại: Quá trình trên sẽ được lặp lại cho đến khi tất cả các tiễn rình
trong hàng đợi được xử ly hoàn thành Quy trình lựa chọn tiễn trình có thời gian thực thi ngắn nhất trong thuật toán SJF đảm bảo rằng các công việc có thời gian xử lý ngắn nhất sẽ được ưu tiên xử lý trước, từ đó giảm thiểu thời gian chờ đợi và thời gian quay vòng của các tiền trình trong hệ thông
2.3 Thời gian đợi và thời gian hoàn thành trung bình:
Thời gian chờ (Waiting Time) là thời gian từ khi một tiến trình được đưa vào hàng doi (Arrival time) cho đên khi nó được xử lý Thời gian chờ của các tiên trình trong SJF có thê được tính từ thời điêm tiên trình đên cho tới khi tiên trình được hoàn thành
xử lý hoặc tạm thời hoàn thành xử lý
Arrival time (thời gian xuất hiện) là thời gian mà một tiễn trình đến và sẵn sàng để được xử lý trong hệ thống Nó biểu thị thời điểm mà tiễn trình được đưa vào hàng đợi hoặc bắt đầu quá trình xử lý Thời gian chờ nêu không được khai báo sẽ mặc định bằng 0
Ví dụ, giả sử có ba tiến trình đến theo thứ tự sau: PI, P2, P3, với thời gian cần đề hoàn thành tiên trình lân lượt là 7, 6, 8 (ms) và thời gian xuât hiện lân lượt là 3, 5, 2 (ms)
O Tai thời điểm 2ms, chỉ có P3 xuất hiện nên sẽ được xử lý dau tiên.
Trang 9LJ_ Trong khoảng thời gian 2-l0ms, P] và P2 cùng xuất hiện nhưng P2 sẽ được ưu tiên hơn vì có thời gian cân đê hoàn thành tiên trình nhỏ hơn so với PT (6ms < 7m8)
Khi ap dung SJF, cac thoi gian cho sé la:
(| Thời gian chờ của PI: I3ms (PI được đưa vào hàng đợi tại thời điểm 3ms
nhưng đến thời điểm lóms thì PI mới được xử lý)
LO Thời gian chờ của P2: 5ms (P2 được đưa vào hàng đợi tại thời điểm 5ms nhưng
đến thời điểm 10ms thì P2 mới được xử lý)
LJ Thời gian chờ của P3: 0ms (không có tiên trình đang xử lý nào trước nó) => Thời gian đợi trung bình = (I3 + 5 + 0) /3 = 6ms
Thời gian hoàn thành (Turn-Around-Tìime) là thời gian từ khi một tiên trình được đưa vào hàng đợi cho đến khi nó hoàn thành Thời gian xử lý của các tiễn trình trong SF có thê được tính bằng tổng thời gian chờ và thời gian xử lý của tiến trình đó Với ví dụ ở trên, các TAT sẽ là:
O TAT của PI: 20ms (13ms thời gian chờ + 7ms thời gian xử lý) C1 TAT cha P2: llms (Sms thoi gian cho + 6ms thoi gian xt ly) C1 TAT của P3: 8ms (0ms thời gian chờ + 8ms thời gian xử lý) => TAT trung bình = (20 + 11 + 8) / 3 = 13ms
Trang 10Chương 3: Đánh giá và so sánh
Ưu điểm: 1 Thời gian chờ trung bình thấp: Bằng cách ưu tiên xử lý các tiến trình có thời
gian xử lý ngắn nhất, thuật toán SJF giúp giảm thời gian chờ trung bình cho các tiến trình Điều này cải thiện hiệu suất hệ thong va kha nang phan héi nhanh 2 Hiéu suat cao đối với các tiền trình ngăn: ŠJF là thuật toán tối ưu cho các hệ
thống có nhiều tiến trình ngắn Nếu hệ thống có nhiều tiến trình có thời gian xử lý ngắn, SJF có thể đảm bảo rằng những tiến trình này được xử lý sớm, tôi ưu hóa thời gian hoàn thành tông thê
3 Dễ triển khai: SJF là một thuật toán đơn giản và dễ triển khai Không cần có
nhiều thông tin và các bước phức tạp đề xác định thời gian thực hiện của các quá trình
Nhược điểm: 1 Không công bằng đối với các tiến trình dài: Một nhược điểm chính cua SJF là
sự ưu tiên cho các tiền trình ngắn, dẫn đến thiếu công bằng đối với các tiễn trình dài hơn Điều này có thể gây ra hiện tượng đói (starvation) cho các tiến trình dài hơn khi chúng phải chờ lâu hơn đề được xử lý
2 Thiếu thông tin thực tế: SJF yêu cầu có thông tin chính xác về thời gian xử lý của các tiến trình trước khi thực thi Tuy nhiên, trong thực tế, việc xác định thời gian xử lý cụ thê của mỗi tiến trình có thê khá khó khăn và không chắc chắn
Bảng so sánh các thuật toán lập lịch CPU phổ biến hiện nay
bình ngắn nhất thực hiện bằng cho các tiễn trình
Nhược Có thê dân đên trình | Tiên trình đên sớm có | Thời gian đợi trung
điểm trạng đói CPU thê phải chờ đợi lâu | bình cao
Khả năng Phủ hợp với hệ Phù hợp với hệ thông | Phù hợp với hệ thông áp dụng thống có các tiễn có các tiễn rình có cần đảm bảo tính công
trình có thời gian xử | thời gian xử lý tương | bằng cho các tiến tinh
Trang 11Tuy nhiên, tính hữu dụng của thuật toán còn phụ thuộc vào yêu cầu cụ thể của hệ
thông, ta co thé chọn thuật toán lập lịch phù hợp SJF là một lựa chọn tốt khi nhằm đến tối ưu hóa thời gian chờ đợi và hoàn thành các tiên trình có thời gian thực hiện tương đôi nhỏ Tuy nhiên, nếu hệ thống yêu cầu tính toán chính xác thời gian thực hiện hoặc ưu tiên các tiến trình lớn, các thuật toán khác như Round Robin hoặc Priority
Scheduling cé thé pha hop hon.
Trang 12Chương 4: Ưu tiên và không ưu tiên Chương này giới thiệu về hai hình thức chính của thuật toán SJF (Shortest Job First) - Non-preemptive SJF và Preemptive SJF Như chúng ta đã biết, thuật toán SJF là một phương pháp quản lý tiễn trình trong lập lịch, tập trung vào việc ưu tiên xử lý các tiền trình có thời gian thực thi ngắn nhất Sự hiểu biết và áp dụng thành công của SJF phụ thuộc vào việc lựa chọn đúng hình thức SJF phù hợp với yêu cầu va tính chất của công viỆc
4.1 Non-Preemptfive SJF (SJE không ưu tiên) Trong thuật toán SJF không ưu tiên, các tiến trình có thời gian thực thi ngắn nhất sẽ được ưu tiên thực hiện trước Nếu có nhiều tiên trình có cùng thời gian thực thi ngắn nhất, thuật toán sẽ tiếp tục ưu tiện tiến trình nào được đưa vào hệ thống trước Điều này đám bảo rằng các tiến trình ngắn sẽ hoàn thành sớm hơn và giúp tăng hiệu suất tổng
Shortest Remaining Time First (SRTF) la mot thuật toán lập lịch pho biến hiện này sử dụng phương pháp Preemptive SJF Thuật toán này sắp xếp các tiến trình dựa trên thời gian thực hiện còn lại ngăn nhất của chúng
Trang 13Trong SRTE, thay vì chỉ xem xét thời gian thực hiện tổng cộng, thuật toán đồng thời theo dõi thời gian xử lý còn lại của mỗi tiến trình Khi một tiễn trình mới được triển khai hoặc tiên trình đang thực thi bi gian doan (preempted), SRTF sé so sánh thời gian
xử lý còn lại của tiến trình mới với tiến trình đang được thực hiện Nếu thời gian thực
hiện còn lại của tiễn trình mới ngắn hơn, nó sẽ được ưu tiên và tiến trình hiện tại sẽ bị
(1 Từ khoảng thời điểm P2 xuất hiện đến thời điểm P2 được xử lý hoàn tất (2-7ms)
không có tiên trình nào xuất hiện có thời gian cân hoàn thành thập hơn P2 nên P2 được xử lý hoàn thành đâu tiên
O Tại thời điểm t= 7ms, khi P2 đã được xử lý, chí còn duy nhất PI trong hàng đợi nên CPU sẽ mặc định xử lý tiệp P1 cho đên khi có tiên trình khác xuất hiện C1 Khi P3 xuất hiện, (t = 8ms), CPU sé tiễn hành so sánh thời gian cần hoàn thành
còn lại của P1 và P3 (13ms và 10ms) CPU nhận thấy răng thời gian cần hoàn
thành còn lại của P3 nhỏ hơn PL Vì vậy P1 sẽ bị tạm dừng và đưa vào hàng đợi, còn P3 sẽ được CPU xử lý
10