Professional Documents
Culture Documents
I. Đa nhiệm và đa chương
Câu hỏi: Vì sao muốn xử lý đồng thời nhiều công việc trên máy tính?
→ Tăng hiệu suất sử dụng CPU
(Hình ảnh trên cho thấy ở những đoạn IO, tức lúc CPU không làm việc, ở Job 1,
Job 2 có thể sử dụng CPU để xử lý)
→ Tăng tốc độ xử lý
Hạn chế của đa nhiệm là yêu cầu máy tính có nhiều CPU, nhưng máy
tính thưởng chỉ có 1 CPU
Kỹ thuật này sẽ được thực hiện bằng cách giả lập nhiều CPU ảo từ 1
CPU thật để cho phép chạy các chương trình đồng thời
1 vấn đề xảy ra khi xử lý đồng hành đó là tài nguyên của máy tính có
hạn, trong khi nhu cầu mở ứng dụng là vô hạn
Giải pháp cho việc này (cũng là ý tưởng cho việc giả lập CPU ảo) đó
là tư tưởng “chia để trị”, mỗi thời điểm chỉ giải quyết 1 yêu cầu, khi
đó toàn bộ tài nguyên sẽ được đưa cho chương trình đó, và CPU sẽ
quy định thời gian để chương trình đó có được tài nguyên.
Quá trình luân chuyển tài nguyên được diễn ra liên tục, hết chương
trình này qua chương trình khác, nhưng vì nó diễn ra quá nhanh nên
đôi khi chúng ta nghĩ là các chương trình được chạy đồng thời
Ready: Tiến trình đang nằm sẵn trong Ready List, chờ được nhận CPU
để chạy
Blocked: Nằm trong Waiting List, chờ nhận R (tức IO: thiết bị nhập xuất)
chạy xong để vào Ready List
Process ID (pID)
Ngữ cảnh tiến trình (trạng thái CPU, bộ nhớ chính, tài nguyên, bộ
xử lý (cho nhiều CPU))
Thông tin giao tiếp (tiến trình cha - tiến trình con, độ ưu tiên của
tiến trình)
Thông tin thống kê (Thời gian sử dụng CPU, thời gian chờ)
Khởi động batch job (chạy một công việc trên file bat)
Users log on (kết nối vào một chương trình nào đo)
Các tiến trình có thể tạo lập các tiến trình con, tạo thành một cây
tiến trình. Các tiến trình con được tạo có thể kế thừa tài nguyên
từ tiến trình cha hoặc được cấp một tài nguyên mới.
Một tiến trình đang chạy có thể kết thúc một tiến trình khác nếu
nó có PID của tiến trình đó và sử dụng lệnh kill —s SIGKILL [PID]
Ngoài ra còn có một số thao tác thay đổi trạng thái tiến trình như
điều chỉnh độ ưu tiên, hiển thị cây tiến trình,….
3. Mô hình đa tiến trình
Là một tập các tiến trình hoạt động đồng thời, trong đó 2 tiến trình
bất kỳ sẽ độc lập và không có sự trao đổi tài nguyên.
Ready List: Chứa các tiến trình trong trạng thái “sẵn sàng” nhận CPU
để chạy
Waiting List: Chứa các tiến trình đang ở trạng thái Blocked, chờ nhận
R (IO) để vào Ready List
Scheduler đóng vai trò chọn 1 tiến trình được nhận CPU
Dispatcher đóng vai trò chuyển CPU cho tiến trình được chọn đó,
tức chuyển đổi ngữ cảnh tiến trình
a. Scheduler
Khi thực hiện nhiệm vụ, Scheduler sẽ xem xét các tiến trình hiện
có trong Ready List. Nếu có nhiều các tiến trình cần xem xét,
Scheduler sẽ áp dụng thuật toán tương ứng được cài đặt trong nó
để chọn 1 tiến trình (chúng ta sẽ xem xét các thuật toán này ở
phần sau)
Sự hiệu quả được đánh giá qua các tiêu chí về thời
gian (thời gian đáp ứng, thời gian hoàn tất, thời gian
chờ) và thông lượng (hiệu suất tài nguyên, chi phí
chuyển đổi ngữ cảnh)
Không độc quyền: Một tiến trình được cấp phát CPU
trong quá trình sử dụng, nếu có một tiến trình có độ ưu
tiên cao hơn thì phải nhường CPU cho tiến trình đó.
Do đó, để xem xét 1 chiến lược điều phối có hiệu quả hay
không, chúng ta cần một số thông số đánh giá. Có 3 loại
thông số phổ biến:
Giải pháp cho vấn đề này là sử dụng ngắt điều phối để kiểm
soát hệ thống
Mỗi khi xuất hiện ngắt điều phối, CPU sẽ tạm thời không
thuộc về tiến trình nào cả, đây cũng là lúc Dispatcher xem xét
có thu hồi lại CPU của tiến trình đang chiếm nó hay không
(Lưu ý rằng HĐH chỉ thu hồi CPU khi có ngắt điều phối)
Một thông tin thú vị là trung bình 1 giây sẽ có ít nhất 18.2 lần
ngắt điều phối
3. Một số chiến lược phân phối
Dưới đây là một số chiến lược phân phối phổ biến được sử dụng trong
quá trình điều phối của hệ điều hành
Khi đó, tiến trình chưa xử lý xong (tức P1 trong ví dụ trên) sẽ được
sử dụng CPU. Việc không chuyển sang tiến trình khác (tức P2
trong ví dụ trên) mà vẫn “chung thuỷ” với tiến trình cũ sẽ giúp đỡ
tốn chi phí chuyển đổi ngữ cảnh tiến trình mà vẫn không vi phạm
nội dung của chiến lược điều phối.
Nhận xét:
Ưu điểm
Nhược điểm
Việc chọn 1 giá trị q hợp lý là rất khó, đặc biệt trong bối
cảnh áp dụng cho việc điều phối của hệ điều hành
Nếu q quá lớn sẽ giảm tính tương tác giữa tiến trình và
CPU, nói dễ hiểu là nó không khác gì so với FCFS nếu
q lớn
Nếu q quá nhỏ sẽ tăng chi phí chuyển đổi ngữ cảnh
c. Điều phối với độ ưu tiên
Tiến trình có độ ưu tiên cao nhất được chọn cấp CPU trước
Câu hỏi đặt ra là: Số phận của các tiến trình có độ ưu tiên thấp sẽ
ra sao nếu có quá nhiều tiến trình có độ ưu tiên cao hơn nó?
b. Dưới đây là bảng số liệu của thời gian turn around, thời gian chờ của
từng tiến trình và thời gian chờ trung bình
TT WT
P1 19 8
P2 17 1
P3 12 3
AVG(WT) 4
Khi bắt đầu tại 0, Ready List = [(P1, 5)], chọn P1 để chạy
Đến thời điểm 2, Ready List = [(P1, 3), (P2, 1)], chọn P2 nhận CPU
P2 chạy xong đến thời điểm 3, chuyển sang đọc I/O từ thời điểm 3
đến thời điểm 13 tại R1
Cùng lúc đó, tại thời điểm 3, Ready List = [(P1, 3)], chọn P1 nhận CPU
P1 chạy xong tiến trình tại thời điểm 6 và sẽ đọc I/O tại R1, nhưng vì
đến thời điểm 13 thì P2 mới đọc tại R1 xong nên P1 phải chờ
Tại thời điểm 10, P3 xuất hiện, Ready List = [(P3, 8)], chọn P3 nhận
CPU
khi đó Ready List = [(P3, 5), (P2, 1)], chọn P2 nhận CPU, đồng thời P1
đọc I/O tại R1 từ thời điểm 13 đến thời điểm 15
Đến thời điểm 14, P2 chạy xong, chuyển sang đọc I/O lần 2 tại R1,
nhưng vì P1 đọc đến thời điểm 15 mới xong nên phải chờ, đồng thời
lúc này, Ready List = [(P3, 5)], chọn P3 nhận CPU
Đến thời điểm 15, P1 đọc I/O lần 1 tại R1 xong, P2 tiến hành đọc I/O
lần 2 tại R1 từ thời điểm 15 đến thời điểm 19, đồng thời lúc này, Ready
List = [(P3, 4), (P1, 2)], chọn P1 nhận CPU
Đến thời điểm 17, P1 chạy xong, tiến hành đọc I/O lần 2 tại R2, đồng
thời lúc này, Ready List = [(P3, 4)], chọn P3 nhận CPU
Đến thời điểm 21, P3 chạy xong, tiến hành đọc I/O lần 1 đến thời điểm
22, sau đó vì các tiến trình còn lại đã xong và thông tin lần 2 của P3
là null nên mọi thứ kết thúc
Bài tập 2
Đề bài
Bảng dữ liệu sau mô tả yêu cầu xử lý của các tiến trình trong hệ thống.
Biết CPU được điều phối sử dụng chiến lược SJF không độc quyền còn
các tài nguyên R1, R2 được điều phối theo quy luật FIFO
b. Tính thời gian turn around, thời gian chờ của từng tiến trình và thời
gian chờ trung bình?
Lời giải
a. Dưới đây là sơ đồ điều phối hoạt động của các tiến trình tương ứng
với bảng số liệu trên
TT WT
P1 15 1
P2 17 1
P3 30 14
P4 26 3
AVG(WT) 4.75
Bài tập 3
Đề bài
Bảng dữ liệu sau mô tả yêu cầu xử lý của các tiến trình trong hệ thống.
Biết CPU được điều phối sử dụng chiến lược SJF không độc quyền còn
các tài nguyên R1, R2 được điều phối theo quy luật FIFO
b. Tính thời gian turn around, thời gian chờ của từng tiến trình và thời
gian chờ trung bình?
Lời giải
a. Dưới đây là sơ đồ điều phối hoạt động của các tiến trình tương ứng
với bảng số liệu trên
TT WT
P1 14 0
P2 23 6
P3 25 9
P4 34 23
AVG(WT) 9.5