1.Giới thiệu đề tài và một số ái nikh ệm 1.1 Tiến trình Process, hay tiến trình, là sự thực thi của một chương trình và thực hiện các hành động liên quan được chỉ định trong một chương
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ
NỘI
Viện Công nghệ Thông tin và Truyền thông
BÀI TẬP LỚN HỆ ĐIỀU HÀNH
XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA GIẢI THUẬT LẬP LỊCH HỒI TIẾP ĐA MỨC
Sinh viên thực hiện:
Mã l p: 124155ớ
Giáo viên hướng dẫn: TS Đỗ Quốc Huy
Trang 2MỤC LỤC
1.Giới thiệu đề tài và một số khái ni m ệ 3
1.1 Ti n trình ế 3
1.2 Lu ồng 4
1.3 Job scheduler ( Long-term scheduler) 4
1.4 CPU scheduler (Short-term scheduler) 5
1.5 First-Come, First-Served Scheduling 5
1.6 Công vi c ng ệ ắn trước(Shortest-job-first (SJF) 5
1.7Công việc ưu tiên cao trước (Priority scheduling) 5
1.8 Round Robin 1.9 Multilevel Queue Scheduling (MLQ) 5
1.9a Ưu điểm của hàng đợi đa mức (Multilevel Queue Scheduling (MLQ)) 6
1.9b Nhược điểm của hàng đợi đa mức 7
1.10 Hàng đợi hồi ti ếp đa mứ c ( Multilevel Feedback Queue Scheduling) 7
Mô t bài toán: ả 8
2.N i dung chínhộ 8
-L i gi ờ ải đã lự a ch ọn: 8
3 Miểu tả chương trình 10
3.1 INPUT và OUTPUT 10
12
3.2 Miêu t các hàmả 13
13
3.3 Miêu tả biến của chương trình 14
3.4 Nh n xét:ậ 14
Ngu n tham kh o :ồ ả 15
Trang 31.Giới thiệu đề tài và một số ái nikh ệm
1.1 Tiến trình
Process, hay tiến trình, là sự thực thi của một chương trình và thực hiện các hành động liên quan được chỉ định trong một chương trình, hoặc nó là một đơn vị thực thi nơi chương trình chạy Hệ điều hành tạo, lên lịch và chấm dứt các tiến trình Các tiến trình khác được tạo bởi tiến trình chính được gọi là tiến trình con
Hoạt động của bất kì tiến trình nào cũng được kiểm soát bởi khối điều khiển tiến trình (Process Control Block, viết tắt là PCB) PCB chứa tất cả những thông tin quan trọng liên quan đến các tiến trình, chẳng hạn như: id tiến trình, ưu tiên, trạng thái, CPU, …
Những hoạt động xen kẽ của các tiến trình giúp nâng cao tốc
độ tính toán khi hoạt động I / O trong một tiến trình trùng lặp với hoạt động tính toán trong tiến trình khác
Tiến trình đơn luồng: Là TT thực hiện chỉ 1 luồng thực thi Tiến trình đa luồng : Là TT có nhiều luồng thực thi
Khi thực hiện, TT thay đổi trạng thái
• Khởi tạo (New) TT đang được khởi tạo
• Sẵn sàng (Ready) TT đang đợi sử dụng processor vật
lý
• Thực hiện (Running) Các câu lệnh của TT đang được
thực hiện
• Chờ đợi (Waiting) TT đang chờ đợi 1 sự kiện nào đó
xuất hiện (sự hoàn thành thao tác vào/ra)
• Kết thúc (Terminated) TT thực hiện xong
Trạng thái của TT là một phần trong hoạt động hiện tại
của TT
Trang 41.2 Luồng
Luồng (tiếng Anh: thread) thực thi là một chuỗi các lệnh được lập trình nhỏ nhất để có thể được quản quản lý độc lập bởi một
bộ định thời (scheduler), thường là một phần của hệ điều hành Việc hiện thực các luồng và tiến trình (process) khác nhau giữa các hệ điều hành, nhưng trong hầu hết các trường hợp, luồng
là một thành phần của tiến trình Đa luồng có thể tồn tại trong cùng một tiến trình, thực thi đồng thời và chia sẻ tài nguyên như bộ nhớ, trong khi những tiến trình khác nhau thì không chia sẻ các tài nguyên này Cụ thể, các luồng trong một tiến trình chia sẻ mã thực thi và giá trị của các biến được phân bổ động và biến toàn cục không phải cục bộ của luồng tại bất kì thời điểm nào
➔Trong máy tính có nhiều tiến trình ( process) và luồng
(thread) Nhưng CPU thì mỗi máy chỉ có một, và thực tế đa số
hệ thống khi hoạt động đều là thực hiện 1 lúc nhiều tiến trình
và luồng
Vậy làm sao để có thể điều phối tiến trình hợp lí nhất và sử dụng CPU sao cho tận dụng được tối đa năng suất của CPU?
➔Cần có 1 cơ chế để điều phối tiến trình và CPU (Scheduler) 1.3 Job scheduler ( Long-term scheduler)
Trang 5Bộ điều phối công việc là cơ chế chọn tiến trình nào sẽ được thêm vào hàng đợi sẵn sàng (ready queue)
1.4 CPU scheduler (Short-term scheduler)
Điều phối CPU là cơ chế chọn tiến trình tiếp theo trong hàng đợi sẵn sàng ( ready queue) để xử lí
➔Có rất nhiều thuật toán điều phối CPU nhưng thuật toán tổng hợp nhất là Điều phối hàng đợi hồi tiếp đa mức (Multilevel Feedback Queue )
Phần tiếp theo của đề tài em xin trình bày về thuật toán điều phối hàng đợi hồi tiếp đa mức các thuật toán khác chỉ nêu tên
1.5 First-Come, First-Served Scheduling
1.6 Công việc ngắn trước(Shortest-job-first (SJF)
1.7Công việc ưu tiên cao trước (Priority scheduling)
1.8 Round Robin
1.9 Multilevel Queue Scheduling (MLQ)
Các tiến trình trong hàng đợi sẵn sàng được chia thành các hàng đợi riêng biệt phụ thuộc vào một số đặc điểm của tiến trình ví dụ( memory size, process priority, process type…) mỗi hàng đợi có một 1 thuật toán điều phối CPU riêng Ví dụ cách chia phổ biến là foreground và background 2 loại tiến trình này có thời gian phản hồi khác nhau nên cần 2 thuật toán điều phối riêng(VD Foreground dùng RR và background dùng FCFS) Ngoài ra hàng đợi foreground có độ ưu tiên cao hơn background Tiến trình được chia cố định cho một hàng đợi
Ví dụ chúng ta có 5 hàng đợi với mức độ ưu tiên từ cao theo STT:
1 System Processes
2 Interactive Processes
Trang 63 Interactive Editing Processes
4 Batch Processes
5 Student Processes
Tiến trình trong hàng đợi chỉ được xử lí khi những hàng đợi có
độ ưu tiên cao hơn nó đều trống Ví dụ tiến trình trong hàng đợi Batch process chỉ được xử lí khi 3 hàng đợi System,
Interactive, và Interactive editting đều trống Giả sử tiến trình trong hàng đợi Batch process đang được xử lí mà có một tiến trình vào hàng đợi Interactive editing thì CPU sẽ được chuyển giao cho tiến trình vừa vào
1.9a Ưu điểm của hàng đợi đa mức (Multilevel Queue
Scheduling (MLQ))
Có thể sử dụng đa dạng thuật toán điều phối CPU hợp lí cho mỗi hàng chờ VD:
For System Processes: First Come First Serve(FCFS)
Scheduling
For Interactive Processes: Shortest Job First (SJF)
Scheduling
For Batch Processes: Round Robin(RR) Scheduling
For Student Processes: Priority Scheduling
Trang 71.9b Nhược điểm của hàng đợi đa mức
Xảy ra hiện tượng “đói CPU” cho các tiến trình ở các hàng đợi
có mức độ ưu tiên thấp Chúng không bao giờ được thực thi hoặc phải đợi 1 khoảng thời gian dài vì các tiến trình ở hàng đợi ưu tiên cao chiếm một khoảng thời gian lớn
1.10 Hàng đợi hồi tiếp đa mức (Multilevel Feedback Queue
Scheduling)
Trong thuật toán điều phối hàng đợi đa mức , các tiến trình được chia
c nh vào các hàng ch , ti n trình không th di chuy n gi a các ố đị ờ ế ể ể ữ hàng đợi tuy rằng chi phí lên lịch thấp nhưng nhược điểm là không lịch hoạt Hàng đợ ồ ếp đa mứi h i ti c giống hàng đợi hàng đợi đa mức nhưng các tiến trình có thể di chuyển giữa các hàng đợi Phân chia tiến trình theo đặc điểm xử dụng vi xử lí
-N u m t ti n trình x lí m t quá nhi u th i gian, nó sế ộ ế ử ấ ề ờ ẽ được chuyển tới hàng đợi có độ ưu tiên thấp hơn
-N u m t tiế ộ ến trình đợi quá lâu ở hàng đợi ưu tiên thấp, nó s ẽ được chuyển lên hàng đợi có mức độ ưu tiên cao hơn
Định nghĩa của bộ lập lịch hàng đợi phản hồi đa cấp làm cho nó trở thành thu t toán l p l ch CPU chung nh t Nó có th ậ ậ ị ấ ể được cấu hình để phù hợp v i m t h ớ ộ ệ thống c ụ thể đang được thi t kế ế Thật không may,
nó cũng yêu cầu một số phương tiện chọn giá trị cho tất cả các tham
số để xác định b l p l ch t t nh t Mộ ậ ị ố ấ ặc dù hàng đợi ph n hả ồi đa cấp
là sơ đồ chung nhất, nhưng nó cũng là sơ đồ phức tạp nhất
Nói chung, b l p l ch ộ ậ ị hàng đợi ph n hả ồi đa cấp được xác định bởi các tham s sau: ố
1.S ố lượng hàng đợi
2.Thu t toán l p l ch cho mậ ậ ị ỗi hàng đợi
3.Phương pháp được sử dụng để xác định thời điểm chuyển tiến trình lên hàng đợi có mức độ ưu tiên cao hơn
Trang 84.Phương pháp được sử dụng để xác định thời điểm chuyển một tiến trình xuống hàng đợi có mức độ ưu tiên thấp hơn
5.Phương pháp được sử dụng để xác định hàng đợi mà một tiến trình
sẽ vào khi quy trình đó cần được x lí ử
Mô tả bài toán:
-Xây dựng chương trình minh họa gi i thu t l p l ch h i tiả ậ ậ ị ồ ếp đa
m c((Multilevel Feedback Queue Scheduling) Yêu cứ ầu đặt ra là phân phối CPU cho các ti n trình sao cho: ế
- Có các ti n trình v i th i gian vào và th i gian x lí riêng vào h ế ớ ờ ờ ử ệ thống
- Có các hàng đợi và mức độ ưu tiên
-Chỉ có 1 n trình s d ng CPU t i 1 thtiế ử ụ ạ ời điểm
-Các ti n trình ế ở hàng đợi ưu tiên thấp không được phân ph i CPU ố trừ khi hàng đợi ưu tiên cao hơn nó trống
-N u m t ti n trình x lí m t quá nhi u th i gian thì chuy n nó ế ộ ế ử ấ ề ờ ể xuống hàng đợi có mức ưu tiên thấp hơn
2.N i dung chính ộ
-Lời giải đã lựa chọn:
Xây dựng chương chình có 3 hàng đợ ới v i 3 mức độ ưu tiên lần lượt
là 1, 2, 3 Các tiến trình trên cùng 1 hàng đợi có cùng mức độ ưu tiên Khi tiến trình đang chạy nghĩa là nó đang được phân ph i CPU ố
* Queue 1 s d ng chiử ụ ến lược điều ph i RR vố ới lượng t ử thời gian
là 8
* Queue 2 s d ng chiử ụ ến lược điều ph i RR vố ới lượng t ử thời gian
là 16
* Queue 3 s d ng chiử ụ ến lược điều ph i FCFS ố
* Khi 1 ti n trình P1 yêu cế ầu CPU mà không được đáp ứng ngay thì xếp nó vào Queue 1
Trang 9* N u hế ết lượng t ử thời gian dùng CPU Queue 1 mà P1 vở ẫn chưa thực hiện xong thì đẩy nó xuống Queue 2
* N u hế ết lượng t ử thời gian dùng CPU Queue 2 mà P1 vở ẫn chưa thực hiện xong thì đẩy nó xuống Queue 3
* Th c hi n các ti n trình theo mự ệ ế ức độ ưu tiên và thứ ự t trong hàng đợi
* Khi m t ti n trình ộ ế ở hàng ưu tiên thấp đang chạy mà có ti n trình ế đẩy vào hàng đợi ưu tiên cao hơn thì nó sẽ bị ngắt và chuyển CPU cho tiến trình v a vào ừ
- Cài đặt 3 hàng đợi 1,2,3.bằng 3 mảng 1 chiều q1;q2;q3 Với mỗi mảng ta dùng 2 biến f và r riêng
- Ban đầu f=r=0
-Khi đẩy 1 phần tử vào hàng đợi :tăng chỉ số của r lên 1 và ghi vào q[r]
-Khi đẩy 1 phần tử ra khỏi hàng đợi: Tăng chỉ số của f lên 1
- Khi hàng đợi rỗng thì f=r Ngoài ra các kết quả của phép toán thay đổi giá trị r và f sẽ được chia lấy dư cho max ➔ Số phần tử tối đa của hàng đợi là max Khi hàng đợi đầy thực hiện đẩy phần tử vào hàng đợi sẽ không thêm được phần tử
- Luồng chạy và thuật toán của chương trình được minh họa ở hình bên dưới
Trang 10Khi điều kiện kết thúc của chương trình đúng thì chương trình sẽ
kết thúc
3 Miểu tả chương trình
3.1 INPUT và OUTPUT
INPUT: Số lượng tiến trình, thời điểm tiến trình xuất hiện, thời
gian cần để xử lí
OUTPUT: Thời điểm chạy và kết thúc của các tiến trình
Ví dụ 1 INPUT:
Tiến trình Thời điểm vào hệ thống Thời gian thực thi
Trang 111 1 4
Ví dụ 1 OUTPUT:
Ví d 2: Khi có ng t x y ra ụ ắ ả ở hàng đợi 2
Trang 12Ta có thể thấy tiến trình 1 đang chạy thì ti n trình 3 vào hàng ế đợi 1 nên CPU sẽ chuyển cho tiến trình 3
Ví d 3: Khi có ngụ ắt ở hàng đợi 3
Trang 133.2 Miêu tả các hàm
1 Sort() S– ắp x p thứ tựế các ti n trình xuế ất hiện lưu kết quả vào m ng vt[]ả
2.void push(int q[], int i, int &f, int &r) – Đẩy tiến trình i vào hàng đợi q.Nếu hàng đợi đầy, ko thể đầy tiến trình vào hàng đợi và thông báo
3 int pop(int q[], int &f, int &r) – Đẩy tiến trình ra khỏi hàng đợi
và trả về tiến trình đó
4 int isempty(int q[], int f, int r) – Kiểm tra 1 hàng đợi có rỗng hay không
5.int ketthuc() – Kiểm tra tất cả tiến trình đã được xử lí chưa( điều kiện kết thúc của chương trình)
Trang 143.3 Miêu tả biến của chương trình
max Số lượng phần tử tối đa của các hàng đợi t[] Mảng lưu thời gian các tiến trình hoàn thành b[] Mảng lưu thời điểm các tiến trình xuất hiện kt[] Mảng kiểm tra tiến trình i hoàn thành chưa
Nếu hoàn thành kt[i]=1, ngược lại=0 q1,q2,q3 3 mảng lưu hàng đợi 1,2,3
f1,f2,f2,r1,r2,r3 Các biến lưu địa chỉ đầu và cuối hàng đợi Vt[] Mảng lưu thứ tự các tiến trình xuất hiện
tt Biến int lưu tiến trình đang làm việc
ok Biến để rẽ nhánh luồng chương trình
td Biến lưu thời gian hiện tại trong chương trình
3.4 Nhận xét:
- Chương trình đã thực hiện được yêu c u cầ ủa bài toán đặt ra
- X lí ng t chính xác ử ắ
Trang 15-Input và output d p c n ễ tiế ậ
-Chưa có giao điện đồ ọ h a
Nguồn tham khảo :
1 Giáo trình Nguyên lí h ệ điều hành –Trường Đại Học Bách Khoa
Hà N i ộ
2 https://www.studytonight.com/operating-system/multilevel-queue-scheduling
3 Báo cáo bài t p l n h ậ ớ ệ điều hành Chu Đức Lộc, Ph m Quang ạ Toản
4 Multilevel Queue Scheduling Algorithm:
https://www.youtube.com/watch?v=fvkSXMZaBNY
5 https://en.wikipedia.org/wiki/Multilevel_feedback_queue
6 https://www.geeksforgeeks.org/multilevel-feedback-queue-scheduling-mlfq-cpu-scheduling/
7 https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.310.9615&rep
=rep1&type=pdf