1. Khỏi niệm
• Multi-programming (chế độ đa chương trỡnh): • Giỳp tăng hiệu quả sử dụng CPU
• Chu kỳ sử dụng CPU-I/O (CPU-I/O Burst Cycle):
• Sự thực hiện tiến trỡnh luụn chứa một chu kỳ thực hiện của CPU và chu kỳ chờ I/O.
• CPU burst và I/O burst lũn phiờn nhau • Sự phõn phối sử dụng CPU:
• Giỳp lựa chọn giải thuật lập lịch CPU
1.1. Trỡnh lập lịch CPU - CPU Scheduler
• Mỗi khi CPU rỗi, HĐH cần chọn trong số cỏc tiến trỡnh ở trạng thỏi săn sang (ready) thực hiện trong bộ nhớ và phõn phối CP0 cho một trong số đú.
• Tiến trỡnh được thực hiện bởi trỡnh lập lịch ngắn kỳ (short-term scheduler, CPŮ scheduler)
• Cỏc quyết định lập lịch CPU (cú thể xảy ra khi một tiến trỡnh) 1. Chuyển từ trạng thỏi chạy sang trạng thỏi chờ (vd: I/O
request)
2. Chuyển từ trạng thỏi chạy sang trạng thỏi sẵn sàng (vd: khi một ngắt xuất hiện)
3. Chuyển từ trạng thỏi đợi sang trạng thỏi sẵn sàng (vd: I/O hoàn thành)
4. Kết thỳc
1.2. Preemptive/nonpreemptive Scheduling
• Lập lịch CPU khi chuyển trạng thỏi (1), (4) • (1) Running → Waiting • (4) End
• Là khụng được ưu tiờn trước - (nonpreemptive)-độc quyền • Khụng cú sự lựa chọn: phải chọn 1 tiến trỡnh mới để thực hiện. • Tiến trỡnh được phõn phối CPU
• sử dụng CPU cho đến khi nú giải phúng CPU bằng cỏch kết thỳc • Hoặc chuyển sang trạng thỏi chờ.
• Cỏc tiến trỡnh sẵn sàng nhường điều khiển của CPU.
• Lập lịch khi chuyển trạng thỏi (2), (3) • (2) Running → Ready • Tiến trỡnh giải phúng CPU ằ Cõn phải chọn tiến trỡnh kế tiếp. • (3) Waiting → Ready
• Tiến trỡnh cú thể đẩy tiến trỡnh khỏc để dành quyền điều khiển CPU. • Là được ưu tiờn trước - preemptive)-khụng độc quyền
1.3. Trỡnh điều vận- Dispatcher
• Mụđun trỡnh điều vận
• Trao quyền điều khiển CPU cho tiến trỡnh được lựa chọn bởi trỡnh lập lịch CPU.
• Cỏc bước:
• 1. Chuyển ngữ cảnh
• 2. Chuyển sang user mode
• 3. Nhảy tới vị trớ thớch hợp trong chương trỡnh của người sử dụng để khởi động lại chương trỡnh đú
• Trễ điều vận (Dispatch latency)
• Thời gian cần thiết để trỡnh điều vận dừng một tiến trỡnh • Và khởi động một tiến trỡnh khỏc chạy.
2. Tiờu chuẩn định thời
• CPU utilization(tận dụng) - giữ cho CPU càng bận càng tốt (0 100%)
• Throughput (thụng lượng tối đa) – số tiến trỡnh được hoàn thành trong một đơn vị thời gian
• Turnaround time - tổng lượng thời gian để thực hiện một tiến
trỡnh: t/g chờ được đưa vào bộ nhớ + t/g chờ trong ready queue + t/g thực hiện bởi CPU + t/g thực hiện vào-ra
• Waiting time – thời gian mà một tiến trỡnh chờ đợi ở trong ready queue
• Response time - lượng thời gian tớnh từ khi cú một yờu cầu được gửi đến khi cú sự trả lời đầu tiờn được phỏt ra, khụng phải là thời gian đưa ra kết quả của sự trả lời đú. – là tiờu chuẩn tốt.
3. Cỏc giải thuật lập lịch
• Giải thuật First-Come, First-Served • Giải thuật Shortest-job-First
• Giải thuật Lập lịch cú ưu tiờn - Priority Scheduling • Giải thuật Round-Robin (RR)
• Giải thuật Lập lịch hàng đợi đa mức - Multilevel Queue
3.4. Lập lịch cú ưu tiờn - Priority Scheduling(1)
• Mỗi tiến trỡnh được gắn một số ưu tiờn (số nguyờn). VD: 0-127
• CPU được phõn phối cho tiến trỡnh cú mức ưu tiờn cao nhất (cú số ưu tiờn nhỏ nhất)
• Preemptive • Nonpreemptive
• SJF là trường hợp riờng của lập lịch cú ưu tiờn: mức ưu tiờn chớnh là thời gian sử dụng CPU tiếp sau dự đoỏn được.
• Vấn đề: những tiến trỡnh cú mức ưu tiờn thấp cú thể khụng bao giờ được thực hiện (starvation).
• Giải phỏp = Aging: kỹ thuật tăng mức ưu tiờn của cỏc tiến trỡnh chờ đợi lõu trong hệ thống.
• VD: Sau 1-15 phỳt giảm số ưu tiờn một lần.
3.5. Giải thuật Round-Robin (RR)(1)
Mỗi tiến trỡnh sử dụng một lượng nhỏ thời gian của CPU (time quantum- thời gian định lượng, q), thường là 10-100 m
• Sau thời gian thực hiện q, tiến trỡnh đưa vào cuối của ready queue. • Ready queue được tổ chức dạng FIFO (FCFS)
• Nếu tiến trỡnh cú thời gian sử dụng CPU cũn lại < q • Tiến trỡnh sẽ giải phúng CPU khi kết thỳc
• Giải phúng khỏi ready queue
• Trỡnh lập lịch sẽ chọn tiến trỡnh kế tiếp trong ready queue. • Nếu tiến trỡnh cú thời gian sử dụng CPU cũn lại > q
• Bộ định thời (timer) sẽ đếm lựi q • Gõy ngắt HĐH khi q = 0
• Trỡnh lập lịch sẽ chọn tiến trỡnh kế tiếp trong ready queue. • Tiến trỡnh hiện tại được đưa xuống cuối ready queue.
3.6. Lập lịch hàng đợi đa mức Multilevel Queue(1)
•í tưởng: chia ready queue thành nhiều queue, cỏc tiến trỡnh trờn cựng queue cú cựng độ ưu tiờn
Phổ biến:
• foreground (chứa cỏc interactive process) • background (chứa cỏc batch process) • Mỗi hàng đợi cú giải thuật lập lịch riờng: • foreground - RR
• background - FCFS •
Phải cú sự lập lịch giữa cỏc queue: • Lập lịch với mức ưu tiờn cố định
• VD: phục vụ tất cả tiến trỡnh từ foreground, • Tiếp theo từ background
(cú thể xảy ra starvation). • Phõn chia thời gian
• Mỗi queue nhận được một lượng thời gian CPU • Cỏc queue cú thể lập lịch cỏc tiến trỡnh của mỡnh.
• VD: 80% cho foreground queue Và 20% cho background queue
3.7. Hàng đợi phản hồi đa mức Multilevel Feedback Queue(1)
Hạn chế của multilevel queue: • Khụng linh động
• (một tiến trỡnh khụng thể di chuyển giữa cỏc hàng đợi) • Dễ xảy ra trường hợp đúi CPU
• Multilevel Feedback Queue:
• Tiến trỡnh cú thể di chuyển giữa cỏc queue .
• Tiến trỡnh sử dụng nhiều CPU burst cú thể di chuyển từ hàng đợi cú mức ưu tiờn cao xuống hàng đợi cú mức ưu tiờn thấp hơn
Multilevel Feedback Queue(1)
• Vớ dụ: cú 3 queue: • Queue - RR, 40 = 8 ms • Queuel - RR, 41 = 16 ms • Queue2 - FCFS
• Lập lịch:
• Một tiến trỡnh vào Queue0 và được phục vụ RR • Khi nú giành được CPU, tiến trỡnh nhận được 8 ms
• Nếu nú khụng hồn thành trong 8 ms, tiến trỡnh được chuyển tới Queuet. • Tại Queue tiến trỡnh tiếp tục được phục vụ RR với 16 ms nữa.
• Nếu nú vẫn chưa hồn thành thỡ nú được ưu tiờn và được chuyển đến Queue). • Tiến trỡnh được chuyển từ Queue cú mức cao xuống Queue cú mức ưu tiờn thấp:
• vẫn cú độ ưu tiờn cao hơn tiến trỡnh vào Queue mà nú chuyển xuống ngay từ dõu.
• Cỏc tiến trỡnh Queue cú mức ưu tiờn thấp chỉ được thực thi khi Queue cú mức ưu tiờn cao rộng
4. Lập lịch multiprocessor
• Phức tạp
• Cỏc loại processor trong multiprocessor • Đồng nhất (Homogeneous):
• Tất cả cú cựng kiến trỳc.
• Khụng đồng nhất (Heterogeneous)
• Một số tiến trỡnh cú thể khụng tương thớch với kiến trỳc của cỏc CPU.
• Cõn bằng tải (Load balancing/sharing) • Một ready queue cho tất cả cỏc processor,
• CPU nhàn rỗi được gỏn cho tiến trỡnh ở đõu queue • Trỏnh trường hợp 1 CPU quỏ tải
• Ready queue gắn với nú liờn tục đõy
• Trong khi cỏc ready queue gắn với cỏc CPU khỏc cú thể luụn rửng.
• Đa xử lý khụng đối xứng - Asymmetric multiprocessing:
• Làm giảm sự chia sẻ dữ liệu;
• Cú thể gõy hiệu ứng thắt cổ chai khi CPU master phải thực hiện quỏ nhiểu việc.
Chƣơng 5 :Đồng bộ giữa cỏc tiến trớnh
1.Nhu cầu đồng bộ húa
o Nhiều tiến trỡnh liờn lạc với nhau
o Hệ điều hành cần cung cấp những cơ chế đồng bộ húa
Để bảo đảm hoạt động đồng thời của cỏc tiến trỡnh
Khụng tỏc động sai lệnh đến nhau Nguyờn nhõn tỏc động sai lệch :
+, Yờu cầu độc quyền truy xuất +, Yờu cầu Phối hợp
1.1 Phõn loại tài nguyờn trong hệ thống
+, Tài nguyờn chia xẻ :
Cho phộp nhiều tiến trỡnh đồng thời truy xuất +, Tài nguyờn khụng thể chia xẻ :
Tại một thời điểm chỉ cú một tiến trỡnh sử dụng Khụng thể chia sẻ do :
-Đặc điểm phần cứng
-Nhiều tiến trỡnh đồng thời sử dụng tài nguyờn này sẽ gõy ra kết quả khụng dự đoỏn trước được
Giải phỏp :
+, Hệ điều hành đảm bảo vấn đề độc quyền truy xuất tài nguyờn +, Tại một thời điểm chỉ cho phộp một tiến tỡnh sử dụng tài nguyờn
1.2 Yờu cầu phối hợp đồng bộ
a. Cỏc tiến trỡnh trong hệ thống
Hoạt động độc lập
Thường khụng đồng bộ.
b. Khi cú nhiều tiến trỡnh
Phối hợp hoàn thành một tỏc vụ
Cú thể dẫn đến yờu cầu đồng bộ:
o Tiến trỡnh này sử dụng kết quả của tiến trỡnh kia
o Cần hoàn thiện con mới cú thể hoàn thành tiến trỡnh cha.
Giải phỏp:
Áp dụng cơ chế truy xuất độc quyền
o Trờn tài nguyờn đú (Accnout):
Khi 1 tiến trỡnh đang sử dụng tài nguyờn thỡ cỏc tiến trỡnh khỏc khụng được sử dụng.
a. Đoạn găng
Khỏi niệm:
o Là đoạn mó lệnh cú khả năng xảy ra mõu thuẫn khi sử dụng tài nguyờn chung.
Hệ điều hành
o Cần cài đặt cỏc giải phỏp đồng bộ
Để giải quyết vấn đề độc quyền truy xuất
Quyết định: Tiến trỡnh nào sẽ được vào miền găng (thực hiện cỏc lệnh)
Khi một tiến trỡnh đang ở miền găng thỡ cỏc tiến trỡnh khỏc khụng thể vào miền găng.
Giải phỏp <BUSY WAITING>
a. Giải phỏp phần mềm
Sử dụng cỏc biến cờ hiệu (semaphore)
Sử dụng việc kiểm tra luõn phiờn
Giải phỏp của peterson
b. Giải phỏp phần cứng
Cấm ngắt
Test & set
Sử dụng cỏc biến cờ hiệu
a. í tưởng:
Cỏc tiến trỡnh chia sẻ một biến chung
o Biến này được khởi động là 0.
Một tiến trỡnh muốn vào găng:
o Trước tiờn phải kiểm tra giỏ trị của biến lock.
Nếu lock=0, tiến trỡnh đặt lại cho giỏ trị lock=1 và đi vào miền găng
Nếu lock=1, tiến trỡnh phải đợi cho đến khi lock=0.
Như vậy:
o lock=0 khụng cú tiến trỡnh nào đang ở trong miền găng
o lock=1 hiện cú một tiến trỡnh đang ở trong miền găng.
Sử dụng việc kiểm tra luõn phiờn
Giải phỏp
o Đề nghị cho hai tiến trỡnh:
Hai tiến trỡnh sử dụng chung biến turn
Khởi động turn == 0.
Nếu turn = 0
Tiến trỡnh P1 được đưa vào đoạn găng
Khi tiến trỡnh P1 rời khỏi đoạn găng, nú đặt giỏ trị turn=1 để cho phộp tiến trỡnh P2 đi vào đoạn găng.
Nếu turn = 1
Tiến trỡnh P2 được vào đoạn găng
Khi tiến trỡnh P2 vào đoạn găng, nú đặt lại giỏ trị turn=0 để cho phộp tiến trỡnh P1 vào lại đoạn găng.
Nếu một trong hai tiến trỡnh P1, P2 trong đoạn găng:
Tiến trỡnh cũn lại đi vào vũng lặp chờ biến turn thay đổi.
b. Nhận xột
Ngăn được trường hợp 2 tiến trỡnh đồng thời trong đoạn găng
Xảy ra tỡnh huống:
o Một tiến trỡnh bị ngăn vào đoạn găng bởi một tiến trỡnh bờn ngoài đoạn găng khi:
turn=0
P1 vào đoạn găng xong, đặt lại turn=1 rồi ra
Và muốn nhanh chúng trở lại miền găng
Turn=1: tiến trỡnh P2 được quyền vào đoạn găng:
Hiện P2 đang thực thi ngoài đoạn găng
=> Chưa thể đặt lại turn=0 ngay được
=> P1 chưa thể vào găng
Giải phỏp Peterson
a. Do Peterson đề nghị
b. í tưởng: kết hợp 2 giải phỏp trờn
c. Nhận xột
Ngăn chặn được tỡnh trạng truy xuất:
o Pi chỉ cú thể vào miền găng khi
in[j]=false
hoặc turn=i
o Nếu cả 2 tiến trỡnh đều muốn vào miền găng:
Thỡ in[i]=in[j]=true
Nhưng: giỏ trị của turn chỉ cú thể
Hoặc là turn=0: Tiến trỡnh P0 được vào miền găng
Hoặc là turn=1: Tiến trỡnh P1 được vào miền găng
Do vậy chỉ cú một tiến trỡnh được vào miền găng.
Cấm ngắt
a. Nhận xột:
Khụng được ưa chuộng:
o Vỡ thiếu thận trọng khi cho phộp tiến trỡnh người dựng được phộp thực hiện lệnh cấm ngắt.
Hệ thống cú nhiều CPU:
o Lệnh cấm ngắt
Cỏc tiến trỡnh hoạt động trờn cỏc CPU khỏc vẫn cú thể truy xuất đến miền găng
Kết luận về giải phỏp Busy waiting
a. Hoạt động chung:
Tất cả cỏc giải phỏp trờn:
o Đều phải thực hiện một vũng lặp để kiểm tra xem cú được vào đoạn găng khụng.
o Nếu điều kiện chưa cho phộp, tiến trỡnh phải tiếp tục chờ trong vũng lặp.
o Cỏc giải phỏp buộc tiến trỡnh:
Phải liờn tục kiểm tra điều kiện để phỏt hiện thời điểm thớch hợp để vào găng.
Cỏc giải phỏp Busy Waiting : Chờ vỡ bận.
b. Hạn chế:
Việc kiểm tra như thế tiờu thụ nhiều thời gian sử dụng CPU, do vậy tiến trỡnh đang chờ vẫn chiếm dụng CPU.
Xu hướng giải quyết vấn đề đồng bộ húa:
o Nờn trỏnh cỏc giải phỏp Busy Waiting.
4.Cỏc giải phỏp <SLEEP AND WAKEUP>
a. Khắc phục nhược điểm
Cho một tiến trỡnh chưa đủ điều kiện vào găng, chuyển sang trạng thỏi waiting
Tạm khúa tiến trỡnh, khụng cho sử dụng CPU ngay vỡ tiến trỡnh chỉ sử dụng CPU khi ở trạng thỏi running.
b. Giải phỏp
í tưởng:
o SLEEP: Khi tiến trỡnh chưa đủ điều kiện vào găng => gọi SLEEP để khúa. Đến khi cú một tiến trỡnh khỏc => gọi WAKEUP để giải phúng cho nú.
o WAKEUP: Khi một tiến trỡnh ra khỏi miền găng => gọi WAKEUP để đỏnh thức một tiến trỡnh đang chờ => tạo cơ hội cho tiến trỡnh này vào miền găng.
Chƣơng 6 : Bế Tắc ( Dealock)
1.Vấn đề DeadLock
Trong chế độ đa chương trỡnh ,một số tiến trỡnh cú thể tranh chấp một số tài nguyờn hạn chế
Một tiến trỡnh yờu cầu cỏc tài nguyờn ,nếu tài nguyờn khụng thể đỏp ứng tại thời điểm đú thỡ tiến trỡnh sẽ chuyển sang trạng thỏi chờ
Cỏc tiến trỡnh chờ cú thể sẽ khụng bao giờ thay đổi lại trạng thỏi được vỡ cỏc tài nguyờn mà nú yờu cầu lại bị giữ bởi cỏc tiến trỡnh chờ khỏc
DeadLock (khúa chết-bế tắc ) là hiện tượng một tiến trỡnh chiếm hữu tài nguyờn lõu dài làm ho cỏc tiến trỡnh cú nhu cầu sử dụng tài nguyờn này luụn ở trạng thỏi chờ
Một tiến trỡnh DeadLock là tiến trỡnh đợi một sự kiện khụng bao giờ xảy ra
1.1.Mụ tả DeadLock
DeadLock cú thể xảy ra nếu 4 điều kiện sau đồng thời tồn tại
o Ngăn chặn (loại trừ ) lẫn nhau :
Tại một thời điểm chỉ một tiến trỡnh cú thể sử dụng một tài nguyờn (chỉ một tiến trỡnh trong đoạn găng)
o Giữ và đợi
Một tiến trỡnh đang giữ it nhất một tài nguyờn và đợi để nhận được tài nguyờn khỏc (đang được giữ bởi tiến trỡnh khỏc )
o Khụng cú ưu tiờn (độc quyền)
Một tài nguyờn chỉ cú thể tiến trỡnh (tự nguyện ) giải phúng khi nú đó hồn thành cụng việc
o Chờ đợi vũng trũn
Tồn tại một tập cỏc tiến trỡnh chờ đợi {P0,P1,.,,,Pn,P0}
P0 đang đợi tài nguyờn bị giữ bởi P1
P1 đang đợi tài nguyờn bị giữ bởi P2
Pn đang đợi tài nguyờn bị giữ bởi P0
1.2.Biểu đồ phõn bố tài nguyờn
Đồ thị phõn bố tài nguyờn khụng chu trỡnh
Nếu đồ thị khụng chu trỡnh thỡ sẽ khụng cú tiến trỡnh nào bị deadlock
Đồ thị phõn phối tài nguyờn cú chu trỡnh Nếu đồ thị cú chu trỡnh thỡ cú thể tồn tại deadlock
1.3.Cỏc phương phỏp xử lớ bế tắc
Sử dụng một phương thức để ngăn ngừa hoặc trỏnh xa , đảm bảo rằng hệ thống khụng bao giờ đi vào trạng thỏi bế tắc
Cho phộp hệ thống đi vào trạng thỏi bế tắc rồi khụi phục lại
Bỏ qua vấn đề này và vờ như bế tắc khụng bao giờ xuất hiện trong hệ thống .Giải phỏp này được sử dụng hầu hờt cỏc hệ điều hành bao gồm cả