Định thời biểu công viêc ngắn nhất truớcSJF• Kết hợp với độ dài của tiến trình tiếp theo để sắp xếp các tiến trình theo thời gian ngắn nhất.. * Trưng dụng - Nếu một tiến trình mới đến
Trang 1Chương 5 :
Định thời biểu cho CPU
Nguyễn Tất Bình Nguyễn Khoa Bằng
Trang 2Chưong 5: Định thời biểu cho CPU
• Khái niệm cơ bản.
• Các tiêu chuẩn của định thời biểu.
• Các thuật toán trong định thời biểu.
• Định thời biểu đa bộ xử lý.
• Định thời thời gian thực
• Định thời biểu theo luồng.
• Các ví dụ về hệ điều hành.
• Định thời biểu theo luồng trong Java.
• Thuật toán ước lượng.
Trang 3Các khái niệm cơ bản
• Sử dụng tối đa khả năng của CPU với lập
trình đa nhiệm.
• Chu kỳ CPU – I/O Burst.
(Burst 1 khái niệm chỉ quá trình truyền tải
Trang 4Thay đổi thứ tự của CPU và I/O Bursts
Trang 5Biểu đồ thời gian của CPU burst
Trang 6Bộ định thời CPU
• Chọn từ những tiến trình đã sẵn sàng thực hiện
trong bộ nhớ, và chỉ định CPU thực hiện nó.
• Quyết định định thời CPU có thể xảy ra khi một
• Định thời biểu xảy ra chỉ trong trừờng hợp 1 và 4
gọi là cơ chế định thời không trưng dụng.
• Định thời biểu xảy ra trong những trường hợp
khác gọi là cơ chế định thời trưng dụng.
Trang 7Bộ phân phát
• Bộ phân phát là một module có nhiệm vụ
trao điều khiển CPU tới tiến trình được
chọn bởi bộ định thời biểu ngắn, chức năng này gồm:
* Chuyển ngữ cảnh.
* Chuyển chế độ người dùng.
* Nhảy tới vị trí hợp lý trong chương trình người dùng để khởi động lại chương trình đó.
• Thời gian trễ cho việc điều phối - thời gian
mất cho bộ phân phát dừng một tiến trình này và bắt đầu chạy một tiến trình khác.
Trang 8Các tiêu chuẩn định thời
• Tận dụng CPU - giữ cho CPU làm việc hết mức
có thể.
• Thông lượng - số lượng tiến trình được hoàn
thành trên một đơn vị thời gian.
• Thời gian hoàn thành - khoảng thời gian thực
hiện quá trình và các thành phần liên quan.
• Thời gian chờ - khoảng thời gian tiến trình chờ
trong hàng đợi sẵn sàng.
• Thời gian đáp ứng - khoảng thời gian từ lúc gởi
yêu cầu cho tới khi đáp ứng đầu tiên nhưng không
là thời gian mất đi để xuất ra đáp ứng đó (môi
trường chia sẽ thời gian).
Trang 9Tiêu chuẩn tối ưu
Trang 10Định thời đến trước phục vụ trước (FCFS)
Tiến trình Thời gian xử lý
• Thời gian chờ của P1 = 0; P2 = 24; P3 = 27
• Thời gian chờ trung bình: (0+24+27)/3 = 17
Trang 11• Thời gian chờ của P1 = 6; P2 = 0; P3 = 3
• Thời gian chờ trung bình: (6+0+3)/3 = 3
• Tốt hơn trường hợp trên
• Tác dụng phụ khi tiến trình ngắn sau tiến
trình dài
Trang 12Định thời biểu công viêc ngắn nhất truớc(SJF)
• Kết hợp với độ dài của tiến trình tiếp theo để
sắp xếp các tiến trình theo thời gian ngắn nhất.
• Hai dạng:
* Không trưng dụng - Một khi CPU đã được
cấp cho một tiến trình nó không thể ưu tiên cho tiến trình khác cho đến khi nó hoàn thành CPU burst.
* Trưng dụng - Nếu một tiến trình mới đến
với độ dài CPU burst ngắn hơn thời gian còn
lại của tiến trình đang thực hiện Dạng này
được biết đến như là định thời thời gian còn lại
ngắn nhất trước (SRTF)
• SJF là tối ưu - cho thời gian chờ đợi trung bình
nhỏ nhất cho các tiến trình được cho
Trang 13Ví dụ của SJF không trưng dụng
Process Arrival Time B urst Time
Trang 15Xác định độ dài của CPU Burst tiếp theo
1 tn = là chiều dài của chu kỳ CPU thứ n
2 Tn+1 = giá trị được đoán cho chu kỳ CPU kế tiếp
3 0 ≤ α ≤ 1
4 Định nghĩa
Trang 16Dự đoán độ dài của CPU burst
Trang 17* chỉ chu kỳ CPU gần nhất có ảnh hưởng
• Nếu chúng ta mở rộng công thức ta được:
Tn+1 = α tn+(1-α) α tn-1+…
+(1-α)j α tn-j+…+(1-α)n - 1T0
• Từ (vì) cả hai α và (1- α) là nhỏ hơn hay
bằng 1, mỗi số hạng tiếp theo có trọng số nhỏ hơn số hạng trước đó
Trang 18Định thời theo độ ưu tiên
• Thứ tự ưu tiên (kiểu nguyên) được kết hợp với
mỗi tiến trình
• CPU cho phép tiến trình với thứ tự ưu tiên cao
nhất (số càng nhỏ quyền ưu tiên càng cao)
* Trưng dụng
* Không trưng dụng
• SJF là trường hợp đặc biệt của định thời theo
độ ưu tiên nơi mà quyền ưu tiên được dự
đoán là chu kỳ CPU tiếp theo
• Vấn đề (đói CPU) - là tiến trình có độ ưu tiên
thấp có thể sẽ không bao giờ được thực hiện.
• Giải pháp (sự hoá già) - tăng dần độ ưu tiên
theo thời gian của tiến trình.
Trang 19Luân phiên (RR)
• Mỗi tiến trình lấy đơn vị thời gian nhỏ của CPU
(quantum), thường là 10-100 mili giây Sau khi thời gian này trôi qua, tiến trình được ưu tiên và thêm vào cuối hàng đợi sẵn sàng.
• Nếu có n tiến trình trong hàng đợi sẵn sàng và
thời gian quantum là q, thì mỗi tiến trình lấy 1/n của khoản thời gian CPU nhiều nhất là q đơn vị thời gian cho 1 lần Không tiến trình nào chờ
quá (n-1)q đơn vị thời gian.
Trang 20Ví dụ của RR với thời gian quantum = 20
Process Burst Time
• Đặc trưng, thời gian hoàn thành cao hơn
SJF, nhưng thời gian đáp ứng nhanh hơn
Trang 21Thời gian Quantum và thời gian chuyển đổi ngữ cảnh
Trang 22Hiển thị cách thời gian hoàn thành biến đổi theo định mức thời gian
Trang 23* Hàng đợi ở chế độ giao tiếp được định thời bởi giải thuật
RR
* Hàng đợi ở chế độ nền được định thời bởi giải thuật FCFS
* Định thời trưng dụng với độ ưu tiên cố định (phục vụ cho
cả chế độ giao tiếp và chế độ nền) Cải thiện cho vấn đề đói CPU
thời gian CPU xác định sau đó nó có thể định thời giữa các tiến trình khác nhau trong hàng đợi của nó (ví dụ trong hàng đợi giao tiếp-nền, hàng đợi giao tiếp được cho 80% thời gian của CPU cho giải thuật RR, ngược lại hàng đợi nền nhận
20% thời gian CPU cho các tiến trình của nó theo cách
FCFS)
Trang 24Giải thuật hàng đợi nhiều cấp
Trang 25Định thời hàng đợi phản hồi đa cấp
• Một tiến trình cố thể di chuyển giữa các hàng đợi:
Đây là hình thức của sự hóa già nhằm ngăn chặn sự đói CPU
• Định thời hàng đợi phản hồi đa cấp được định nghĩa theo những tham số bên dưới:
* Số lượng hàng đợi
* Giải thuật định thời cho mỗi hàng đợi
* Phương thức được dùng để xác định khi nâng cấp một tiến trình tới hàng đợi có độ ưu tiên cao hơn.
* Phương thức được dùng để xác định khi nào chuyển một quá trình tới hàng đợi có độ ưu tiên thấp hơn.
* Phương thức được dùng để xác định hàng đợi nào một tiến trình sẽ đi vào và khi nào quá trình đó cần
phục vụ.
Trang 26Ví dụ của hàng đợi phản hồi đa cấp
• Ba hàng đợi:
* Q0 - RR với thời gian quantum 8 mili giây
* Q1 - RR với thời gian quantum 16 mili giây
* Q2 – FCFS
• Định thời
* Một tiến trình mới được đua vào hàng đợi Q0
được thực hiện theo cơ chế FCFS Khi nó được cấp CPU một lần nữa, thời gian cho nó là 8 mili giây Nếu chưa hoàn thành trong 8 miligiây, nó
sẽ được đưa vào hàng đợi Q1.
* Tại Q1 tiến trình được thực hiện theo cơ chế
FCFS với thời gian 16 miligiây Nếu nó vẫn chưa hoàn thành, nó bị đưa vào hàng đợi Q2.
Trang 27Ví dụ của hàng đợi phản hồi đa cấp(tt)
Trang 28Định thời biểu đa bộ xử lý
• Đinh thời CPU sẽ phức tạp hơn khi có
Trang 29Định thời thời gian thực
• Hệ thống thời thực cứng - được yêu
cầu để hoàn thành một tiến trình tới
hạn trong lượng thời gian được đảm bảo
• Thời gian thực mềm - yêu cầu các quá
trình tới hạn nhận độ ưu tiên cao hơn các quá trình khác
Trang 30Định thời theo luồng
• Định thời cục bộ - cách nào để quyết
định luồng thư viện để đặt giá trị cho luồng nào có thể sử dụng LWP
• Định thời toàn cục - Cách nào để nhân
quyết định luồng nhân nào sẽ chạy tiếp theo
Trang 31Định thời theo luồng API
Trang 32Các ví dụ Hệ điều hành
Trang 33Định thời biểu trong Solaris
Trang 34Bảng phân phát trong Solaris
Trang 35Sự ưu tiên trong Window XP
Trang 36Định thời trong Linux
• Hai thuật toán: Thời gian chia sẽ và thời gian thực
• Thời gian chia sẽ:
* Dựa vào quyền ưu tiên của - tiến trình nào được ưu tiên hơn sẽ được xếp tiếp theo
* Quyền ưu tiên sẽ bị giảm đi khi thời gian bị ngắt quảng
* Khi quyền ưu tiên = 0, tiến trình khác sẽ được chọn
* Khi tất cả các tác vụ có quyền ưu tiên = 0, tạo lại quyền
Trang 37Mối quan hệ giữa độ ưu tiên
và phần thời gian dài
Trang 38Danh sách mối liên hệ các công viêc theo độ ưu tiên
Trang 39Định thời biểu trong Java
lẻo Một luồng chạy cho đến khi:
1 Thời gian quantum của nó kết
thúc
2 Ngăn chặn bởi tiến trình vào/ra
3 Đóng phương thức đang chạy.
Một vài hệ thống có thể hổ trợ chiếm quyền ưu tiên.
Trang 40Định thời biểu trong Java (tt)
• Độ ưu tiên thay đổi từ 1 đến 10
• Độ ưu tiên nhỏ nhất là 1
• Độ ưu tiên thường là 5
• Độ ưu tiên cao nhất là 10
Trang 41Định thời biểu trong Java (tt)
• Thay đổi độ ưu tiên sử dụng hàm đặt
độ ưu tiên setPriority()
Trang 42Định thời biểu trong Java (tt)
Java và Win32
Trang 43Định thời biểu trong Java (tt)
Định thời của Java theo luồng trong Solaris
Trang 44Thuật toán đánh giá (ước lượng)
việc nạp lên đã quyết định trước và
chỉ định thực thi cho các thuật toán
của công việc đã nạp đó.
Trang 45Thuật toán đánh giá (tt)
• Đánh giá các bộ định thời CPU bằng mô phỏng
Trang 46Thuật toán đánh giá (tt)
Trang 47Kết thúc chương 5
Trang 48Phần bổ sung slide 1 CPU
• CPU (Central Processing Unit) Đơn vị xử lý
trung tâm Mạch lưu giữ, xử lý, và điều
khiển bên trong của máy tính, bao gồm đơn vị số học-logic ( ALU), đơn vị điều khiển, và bộ nhớ sơ cấp trong dạng ROM hoặc RAM Chỉ có ALU và đơn vị điều khiển là được
chứa chọn vẹn trong chip gọi là chip vi xử lý; còn bộ nhớ thì được lắp ở một nơi nào đó trên board mẹ hoặc trong một card cắm trên bus mở rộng.
Trang 49Phần bổ sung slide 1 Định thời biểu
• Định thời biểu là cơ sở của các hệ điều hành đa chương
Bằng cách chuyển đổi CPU giữa các quá trình, hệ điều
hành có thể làm máy tính hoạt động nhiều hơn Trong
chương này, chúng ta giới thiệu các khái niệm định thời cơ bản và trình bày các giải thuật định thời biểu CPU khác nhau.
• Định thời biểu là chức năng cơ bản của hệ điều hành Hầu
hết tài nguyên máy tính được định thời biểu trước khi
dùng Dĩ nhiên, CPU là một trong những tài nguyên máy tính ưu tiên Do đó, định thời biểu là trọng tâm trong việc thiết kế hệ điều hành
• Định thời CPU là một tác vụ chọn một tiến trình đang chờ
từ hàng đợi sẳn sàng và cấp phát CPU tới nó CPU được cấp phát tới quá trình được chọn bởi bộ cấp phát.
Trang 50Phần bổ sung slide 3 Tận dụng CPU
• Mục tiêu của đa chương là có nhiều tiến trình chạy cùng thời điểm để tối ưu hóa việc sử dụng CPU Trong hệ thống đơn xử lý, chỉ một tiến trình có thể chạy tại một thời điểm; bất cứ tiến trình nào khác đều phải chờ cho đến khi CPU rảnh và có thể được định thời lại
• Ý tưởng của đa chương là tương đối đơn giản
Một tiến trình được thực thi cho đến khi nó phải chờ yêu cầu nhập/xuất hoàn thành Trong một hệ thống máy tính đơn giản thì CPU sẽ rảnh rỗi; tất
cả thời gian chờ này là lãng phí Với đa chương, chúng ta cố gắng dùng thời gian này để CPU có
thể phục vụ cho các tiến trình khác Nhiều tiến
trình được giữ trong bộ nhớ tại cùng thời điểm
Khi một tiến trình phải chờ, hệ điều hành lấy CPU
từ tiến trình này và cấp CPU tới tiến trình khác.
Trang 51Phần bổ sung slide 3 chu kỳ CPU/IO
Sự thành công của việc định thời biểu CPU phụ
thuộc vào thuộc tính được xem xét sau đây của
tiến trình Việc thực thi tiến trình chứa một chu kỳ
(cycle) thực thi CPU và chờ đợi nhập/xuất Các
tiến trình chuyển đổi giữa hai trạng thái này Sự
thực thi tiến trình bắt đầu với một chu kỳ CPU
(CPU burst), theo sau bởi một chu kỳ nhập/xuất
(I/O burst), sau đó một chu kỳ CPU khác, sau đó lại tới một chu kỳ nhập/xuất khác khác, Sau cùng, chu kỳ CPU cuối cùng sẽ kết thúc với một yêu cầu
hệ thống để kết thúc việc thực thi, hơn là với một chu kỳ nhập/xuất khác.
Trang 52Phần bổ sung slide 6 Bộ định thời
Bất cứ khi nào CPU rảnh, hệ điều hành phải chọn một trong những tiến trình trong hàng đợi sẳn sàng để thực thi
Chọn tiến trình được thực hiện bởi bộ
định thời biểu ngắn (short-term
scheduler) hay bộ định thời CPU Bộ định thời này chọn các tiến trình trong
bộ nhớ sẳn sàng thực thi và cấp phát
CPU tới một trong các tiến trình đó
Trang 53Phần bổ sung slide 8 sử dụng CPU
Chúng ta muốn giữ CPU làm việc nhiều nhất có thể Việc sử dụng CPU có thể
từ 0 đến 100% Trong hệ thống thực,
nó nên nằm trong khoảng từ 40% (cho
hệ thống được nạp tải nhẹ) tới 90%
(cho hệ thống được nạp tải nặng)
Trang 54Phần bổ sung slide 8 Thông lượng
Nếu CPU bận thực thi các tiến trình thì công việc đang được thực hiện Thước
đo của công việc là số lượng tiến trình được hoàn thành trên một đơn vị thời
gian gọi là thông lượng (throughput)
Đối với các tiến trình dài, tỉ lệ này có thể là 1 tiến trình trên 1 giờ; đối với
các giao dịch ngắn, thông lượng có thể
là 10 tiến trình trên giây
Trang 55Phần bổ sung slide 8 Thời gian hoàn thành
Từ quan điểm của một tiến trình cụ thể, tiêu chuẩn quan trọng là mất bao lâu để thực thi tiến trình đó 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 gọi là thời gian
hoàn thành (turnaround time) Thời
gian hoàn thành là tổng các thời gian
chờ đưa tiến trình vào bộ nhớ, chờ
hàng đợi sẳn sàng, thực thi CPU và
thực hiện nhập/xuất
Trang 56Phần bổ sung slide 8 Thời gian chờ
Giải thuật định thời CPU không ảnh
hưởng lượng thời gian tiến trình thực thi hay thực hiện nhập/xuất; nó ảnh
hưởng chỉ lượng thời gian một tiến
trình phải chờ trong hàng đợi sẳn sàng
Thời gian chờ (waiting time) là tổng
thời gian chờ trong hàng đợi sẳn sàng
Trang 57Phần bổ sung slide 10 FCFS
Giải thuật định thời biểu CPU đơn giản nhất là
đến trước, được phục vụ trước (first-come,
first-served-FCFS) Với cơ chế này, tiến trình yêu cầu CPU trước được cấp phát CPU trước Việc cài đặt chính sách FCFS được quản lý dễ dàng với hàng đợi FIFO Khi một tiến trình đi vào hàng đợi sẳn sàng, PCB của nó được liên kết tới đuôi của hàng đợi Khi CPU rảnh, nó được cấp phát tới một tiến trình tại đầu hàng đợi Sau đó, tiến trình đang chạy được lấy ra khỏi hàng đợi Mã của giải thuật FCFS đơn
giản để viết và hiểu Tuy nhiên, thời gian chờ đợi trung bình dưới chính sách FCFS thường
là dài.
Trang 58Phần bổ sung slide 12 SJF
Một tiếp cận khác đối với việc định thời CPU là giải
thuật định thời công việc ngắn nhất trước
(shortest-job-first-SJF) Giải thuật này gán tới mỗi tiến trình
chiều dài của chu kỳ CPU tiếp theo cho tiến trình sau
đó Khi CPU sẳn dùng, nó được gán tới tiến trình có
chu kỳ CPU kế tiếp ngắn nhất Nếu hai tiến trình có
cùng chiều dài chu kỳ CPU kế tiếp, định thời FCFS
được dùng Chú ý rằng thuật ngữ phù hợp hơn là chu kỳ CPU kế tiếp ngắn nhất (shortest next CPU burst) vì
định thời được thực hiện bằng cách xem xét chiều dài của chu kỳ CPU kế tiếp của tiến trình hơn là toàn bộ
chiều dài của nó Chúng ta dùng thuật ngữ SJF vì hầu hết mọi người và mọi sách tham khảo tới nguyên lý của loại định thời biểu này như SJF
Trang 59Phần bổ sung slide 12 SJF (tt)
bình nhỏ nhất cho các quá trình được cho Bằng cách chuyển một quá trình ngắn trước một quá trình dài thì thời gian chờ đợi của quá trình
ngắn giảm hơn so với việc tăng thời gian chờ đợi của quá trình dài Do
đó, thời gian chờ đợi trung bình giảm
yêu cầu CPU tiếp theo Đối với định thời dài trong hệ thống bó, chúng ta
có thể dùng chiều dài như giới hạn thời gian xử lý mà người dùng xác định khi gởi công việc Do đó, người dùng được cơ động để ước lượng chính xác giới hạn thời gian xử lý vì giá trị thấp hơn có nghĩa là đáp ứng nhanh hơn Định thời SJF được dùng thường xuyên trong định thời dài
CPU ngắn vì không có cách nào để biết chiều dài chu kỳ CPU tiếp theo Một tiếp cận là khác gần đúng định thời SJF được thực hiện Chúng ta
có thể không biết chiều dài của chu kỳ CPU kế tiếp nhưng chúng ta có đoán giá trị của nó Chúng ta mong muốn rằng chu kỳ CPU kế tiếp sẽ tương tự chiều dài những chu kỳ CPU trước đó Do đó, bằng cách tính toán mức xấp xỉ chiều dài của chu kỳ CPU kế tiếp, chúng ta chọn một quá trình với chu kỳ CPU được đoán là ngắn nhất