1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

15 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Đàm Quân Sơn
Người hướng dẫn TS. Đỗ Quốc Huy
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài tập lớn
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 1,89 MB

Nội dung

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 1

TRƯỜ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 2

MỤ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 3

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 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

• 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 4

1.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 5

Bộ đ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 6

3 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 7

1.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 8

4.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 10

Khi đ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 11

1 1 4

Ví dụ 1 OUTPUT:

Ví d 2: Khi có ng t x y ra ụ ắ ả ở hàng đợi 2

Trang 12

Ta 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 13

3.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 14

3.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

Ngày đăng: 29/05/2024, 17:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w