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

Viết chương trình bằng mô tả thuật toán lập lịch cho CPU không ưu tiên theo thuật toán SJF (Shortest Job First)

23 129 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 đề Viết chương trình bằng mô tả thuật toán lập lịch cho CPU không ưu tiên theo thuật toán SJF (Shortest Job First)
Tác giả Nghiêm Đức Hải, Nguyễn Thái Hà, Nguyễn Đại Long
Người hướng dẫn TS. Nguyễn Đào Trường
Trường học Học viện Kỹ thuật Mật mã
Chuyên ngành Kỹ thuật phần mềm
Thể loại Bài tập môn học
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 268,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

HỌC VIỆN KỸ THUẬT MẬT Mà KHOA CÔNG NGHỆ THÔNG TIN ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ BÀI TẬP MÔN HỌC NGUYÊN LÝ HỆ ĐIỀU HÀNH Viết chương trình bằng mô tả thuật toán lập lịch cho CPU không ưu tiên theo thuật toán SJF (Sh.

Trang 1

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA CÔNG NGHỆ THÔNG TIN

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

BÀI TẬP MÔN HỌC NGUYÊN LÝ HỆ ĐIỀU HÀNH

Viết chương trình bằng mô tả thuật toán lập lịch cho CPU

không ưu tiên theo thuật toán SJF

(Shortest Job First)

Sinh viên thực hiện:

Nghiêm Đức Hải – AT160516 Nguyễn Thái Hà – AT160515 Nguyễn Đại Long – AT160530

Lớp: L05

Người hướng dẫn:

TS Nguyễn Đào Trường

Khoa Công nghệ thông tin – Học viện Kỹ thuật mật mã

Trang 2

NHẬN XÉT VÀ CHO ĐIỂM CỦA GIÁO VIÊN

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

CHƯƠNG I: CƠ SỞ LÝ THUYẾT 2

1.1 Giới thiệu 2

1.1.1 Mục tiêu lập lịch 2

1.1.2 Các đặc điểm của tiến trình 2

1.1.3 Điều phối không độc quyền và điều phối độc quyền 3

1.2 Các khái niệm cơ bản 5

1.2.1 Khái niệm giờ CPU 5

1.2.2 Các trạng thái của tiến trình liên quan đến giờ CPU 5

1.2.3 Khái niệm lập lịch cho CPU 6

1.3 Giải thuật điều phối Shortest Job First (SJF) 7

1.3.1 Khái niệm giải thuật điều phối SJF 7

1.3.2 Ưu và nhược điểm của thuật toán 8

CHƯƠNG II: CÀI ĐẶT THUẬT TOÁN 9

2.1 Cấu trúc dữ liệu 9

2.2 Thuật toán xử lý 10

2.3 Kết quả thực hiện 11

PHỤ LỤC 13

KẾT LUẬN 16

TÀI LIỆU THAM KHẢO 17

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1 Các trạng thái của tiến trình liên quan đến giờ CPU 5

Hình 2 Sơ đồ thực hiện các tiến trình 6

Hình 3 Sơ đồ tổ chức hàng đợi các tiến trình 7

Hình 4 Điều phối Shortest Job First 8

Hình 5 Thuật toán xử lý Shortest Job First 10

Trang 5

LỜI NÓI ĐẦU

Hệ điều hành là phần gắn bó trực tiếp với phần cứng và là môi trường để chocác chương trình ứng dụng khác chạy trên nó Với chức năng quản lý và phân phốitài nguyên một cách hợp lý, đồng thời giả lập một máy tính mở rộng và tạo giaodiện tiện lợi với người sử dụng, hệ điều hành là một thành phần then chốt khôngthể thiếu được trong mỗi một hệ thống máy tính điện tử

Một trong những chức năng quan trọng của hệ điều hành là quản lý CPU Trongmôi trường xử lý đa chương, có thể xảy ra tình huống nhiều tiến trình đồng thờisẵn sàng để xử lý Mục tiêu của các hệ phân chia thời gian (time-sharing) làchuyển đổi CPU qua lại giữa các tiến trình một cách thường xuyên để nhiều người

sử dụng có thể tương tác cùng lúc với từng chương trình trong quá trình xử lý

Để thực hiện được mục tiêu này, hệ điều hành phải lựa chọn tiến trình được xử

lý tiếp theo Bộ điều phối sẽ sử dụng một giải thuật điều phối thích hợp để thựchiện nhiệm vụ này Một thành phần khác của hệ điều hành cũng tiểm ẩn trong côngtác điều phối là bộ điều phối (dispatcher) Bộ phân phối sẽ chịu trách nhiệmchuyển đổi ngữ cảnh và trao CPU cho tiến trình được chọn bởi bộ điều phối để xửlý

Vì những lợi ích lơn lao mà giải thuật điều phối CPU đem lại và để tìm hiểu kĩ

hơn về nguyên tắc hoạt động của chúng, chúng em quyết định chọn đề tài: Xây

dựng chương trình mô tả thuật toán lập lịch cho CPU không ưu tiên theo thuật toán SJF (Shortest Job First) bằng ngôn ngữ Java.

Trang 6

CHƯƠNG I: CƠ SỞ LÝ THUYẾT

1.1 Giới thiệu.

1.1.1 Mục tiêu lập lịch.

Bộ điều phối không cung cấp cơ chế, mà đưa ra các quyết định Các hệ điềuhành xây dựng nhiều chiến lượt khác nhau để thực hiện việc điều phối, nhưng tựuchung cần đạt được các mục tiêu sau:

 Sự công bằng: các tiến trình chia sẻ CPU một cách công bằng không có tiếntrình nào phải đợi vô hạn để được cấp phát CPU

 Tính hiệu quả: Hệ thống phải tận dụng được CPU 100% thời gian

 Thời gian đáp ứng hợp lý: cực tiểu hóa thời gian hồi đáp cho các tương táccủa người sử dụng

 Thời gian lưu lại trong hệ thống: cực tiểu hóa thời gian hoàn tất các tác vụ

1.1.2 Các đặc điểm của tiến trình.

Điều phối hoạt động của các tiến trình là một vấn đề rất phức tạp, đòi hỏi hệđiều hành khi giải quyết phải xem xét nhiều yếu tố khác nhau để có thể đạt đượcnhững mục tiêu đề ra Một số đặc tính của tiến trình cần được quan tâm như tiêuchuẩn điều phối:

 Tính hướng xuất/ nhập của tiến trình: Khi một tiến trình được nhận CPU,chủ yếu nó chỉ sử dụng CPU đến khi phát sinh một yêu cầu nhập xuất? Hoạt

Trang 7

động của các tiến trình như thế thường bao gồm nhiều lượt sử dụng CPU,mỗi lượt trong một thời gian khá ngắn.

 Tính hướng xử lý của tiến trình: Khi một tiến trình được nhận CPU, nó

có khuynh hướng sử dụng CPU đến khi hết thời gian dành cho nó? Hoạtđộng của các tiến trình như thế thường bao gồm một số ít lượt sử dụngCPU, nhưng mỗi lượt trong một thời gian đủ dài

 Tiến trình tương tác hay xử lý theo lô: Người sử dụng theo kiểu tươngtác thường yêu cầu được hồi đáp tức thời đối với các yêu cầu của họ,trong khi các tiến trình của các tác vụ được xử lý theo lô nói chung cóthể trì hoãn trong một thời gian chấp nhận được

 Độ ưu tiên của tiến trình: Các tiến trình có thế được phân cấp theo một

số tiêu chuẩn đánh giá nào đó, một cách hợp lý, các tiến trình quan trọnghơn(có độ ưu tiên cao hơn) cần được ưu tiên cao hơn

 Thời gian đã sử dụng CPU của tiến trình: một số quan điểm ưu tiên chọnnhững tiến trình đã sử dụng CPU nhiều thời gian nhất vì hy vọng chúng

sẽ cần ít thời gian nhất để hoàn tất và rời khỏi hệ thống Tuy nhiên cũng

có quan điểm cho răng các tiến trình nhận được CPU trong ít thời gian lànhững tiến trình đã phải chờ lâu nhất, do vậy ưu tiên chọn chúng

 Thời gian còn lại tiến trình cần để hoàn tất: Có thể giảm thiểu thời gianchờ trung bình của các tiến trình bằng cách cho các tiến trình cần ít thờigian nhất để hoàn tát được thực hiện trước Tuy nhiên đáng tiếc là rấthiếm khi biết được tiến trình cần bao nhiêu thời gian nữa để kết thúc xửlý

1.1.3 Điều phối không độc quyền và điều phối độc quyền.

Thuật toán điều phối cần xem xét và quyết định thời điểm chuyển đổi CPUgiữa các tiến trình Hệ điều hành các thể thực hiện cơ chế điều phối theo nguyên lýđọc quyền hoặc không đọc quyền:

Trang 8

 Điều phối độc quyền: Nguyên lý điều phối độc quyền cho phép một tiếntrình khi nhận được CPU sẽ có quyền độc chiếm CPU đến khi hoàn tất xử lýhoặc tự nguyện giải phóng CPU Khi đó quyết định điều phối CPU sẽ xảy ratrong các tình huống sau:

o Khi tiến trình chuyển từ trạng thái đang xử lý (running) sang trạngthái bị blocked (ví dụ chờ một thao tác nhập xuất hay chờ một tiếntrình con kết thúc…)

o Khi tiến trình kết thúc

Các giải thuật độc quyền thường đơn giản và dễ cài đặt Tuy nhiên chúngthường không thích hợp với các hệ thống tổng quát nhiều người dùng, vì nếucho phép một tiến trình có quyền xử lý bao lâu tùy ý, có nghĩa là tiến trìnhnày đã giữ CPU một thời gian không xác định, có thể ngăn cản những tiếntrình còn lại trong hệ thống có một cơ hội để xử lý

 Điều phối không độc quyền: Ngược với nguyên lý độc quyền, điều phối theonguyên lý không đọc quyền cho phép tạm dừng hoạt động của một tiến trìnhsẵn sàng xử lý Khi một tiến trình nhận được CPU, nó vẫn được sử dụngCPU đến khi hoàn tất hoặc tự nguyện giải phóng CPU, nhưng khí có mộttiến trình khác có độ ưu tiên có thể dành quyền sử dụng CPU của tiến trìnhban đầu Như vậy là tiến trình có thế bị tạm dừng hoạt động bất cứ lúc nào

mà không được báo trước, để tiến trình khác xử lý Các quyết định điều phốixảy ra khi:

o Khi tiến trình chuyển từ trạng thái đang xử lý(running) sang trạng thái

Trang 9

o Khi tiến trình kết thúc.

Trong các hệ thống sử dụng nguyên lý điều phối độc quyền có thể xảy ra tìnhtrạng các tác vụ cần thời gian xử lý ngắn phải chờ tác vụ xử lý với thời gian rất dàihoàn tất Nguyên lý điều phối độc quyền thường chỉ thích hợp với các hệ xử lýtheo lô

Đối với các hệ thống tương tác (time sharing), các hệ thời gian thực (realtime), cần phải sử dụng nguyên lý điều phối không độc quyền để các tiến trìnhquan trọng có cơ hội hồi đáp kịp thời Tuy nhiên thực hiện hiện điều phối theonguyên lý không độc quyền đòi hỏi nhưng cơ chế phức tạp trong việc phân định độ

ưu tiên, và phát sinh thêm chi phí khi chuyển đổi CPU qua lại giữa các tiến trình

1.2 Các khái niệm cơ bản.

1.2.1 Khái niệm giờ CPU

CPU là một loại tài nguyên quan trọng của máy tính Mọi tiến trình muốnhoạt động được đều phải có sự phục vụ của CPU(để xử lý, tính toán…) Thời gian

mà CPU phục vụ cho tiến trình hoạt động được gọi là giờ CPU

Tại mỗi thời điểm nhất, chỉ có một tiến trình được phân phối giờ CPU để hoạtđộng(thực hiện các lệnh của mình)

1.2.2 Các trạng thái của tiến trình liên quan đến giờ CPU

Trang 10

Trong chế độ đa chương trình, có ba trạng thái của tiến trình liên quan mậtthiết đến giờ CPU bao gồm:

 Sẵn sàng(ready): là trạng thái mà tiến trình được phân phối đầy đủ mọi tàinguyên cần thiết và đang chờ giờ CPU

 Thực hiện(running): là trạng thái mà tiến trình được phân phối đầy đủ mọitài nguyên cần thiết và giờ CPU

 Đợi(waiting): là trạng thái tiến trình không thực hiện được vì thiếu một vàiđiều kiện nào đó(đợi dữ liệu vào/ra, đợi tài nguyên bổ sung…) Khi sự kiện

mà nó chờ đợi xuất hiện, tiến trình sẽ quay lại trạng thái sẵn sàng

Như vậy, trong suốt thời gian tồn tại của mình, các tiến trình sẽ tuân thủ theo

sơ đồ thực hiện sau:

Hình 1 Các trạng thái của tiến trình liên quan đến giờ CPU

Hình 2 Sơ đồ thực hiện các tiến trình

Trang 11

Một tiến trình đang trong trạng thái thực hiện, nó có thể rời khỏi trạng thái bởimột trong ba lý do:

 Tiến trình đã hoàn thành công việc, khi đó nó trải lại giờ CPU và chuyểnsang chờ xử lý kết thúc

 Tiến trình tự ngắt: Khi tiến trình chờ đợi một sự kiện nào đó, tiến trình sẽđược chuyển sang trạng thá thực hiện khi có xuất hiện sự kiện nó đangchờ

 Tiến trình sử dụng hết giờ CPU dành cho nó, khi đó nó sẽ được chuyểnsang trạng thái sẵn sàng

Việc chuyển tiến trình sang trạng thái sẵn sàng về bản chất là thực hiện vệcphân phối lại giờ CPU

1.2.3 Khái niệm lập lịch cho CPU

Để điều khiển tiến trình ở nhiều trạng thái khác nhau, hệ thống thường tổchức các từ trạng thái(thực chất là các khối điều khiển tiến trình) để ghi nhận tìnhtrạng sử dụng tài nguyên và trạng thái tiến trình Các từ trạng thái được tổ chứctheo kiểu hàng đợi như sau:

Trang 12

Như vậy lập lịch cho CPU có nghĩa là tổ chức một hàng đợi các tiến trình sẵn sàng để phân phối giờ CPU cho chúng dựa trên độ ưu tiên của các tiến trình; sao cho hiệu suất sử dụng CPU là tối ưu nhất.

Mỗi tiến trình ở trạng thái sẵn sàng sẽ được gắn với một thứ tự ưu tiên Thứ tự ưu tiên này được xác định dựa vào các yếu tố như: thời điểm hình thành tiến trình, thời gian thực hiện tiến trình, thời gian kết thúc tiến trình.

1.3 Giải thuật điều phối Shortest Job First (SJF)

1.3.1 Khái niệm giải thuật điều phối SJF

Có 4 thuật toán lập lịch cho CPU là First Come First Served (FCFS), Round Robin (RR), Shortest Job First (SJF) và Shortest Remain Time (SRT) Mỗi thuật

toán đều có ưu, nhược điểm khác nhau nhưng trong đề tài này, chúng ta sẽ tập

trung nghiên cứu về thuật toán Shortest Job First (SJF).

Hình 3 Sơ đồ tổ chức hàng đợi các tiến trình

Trang 13

Shortest Job First là giải thuật định thời công việc ngắn nhất trước Giải thuật

này gán tới mỗi quá trình chiều dài của chu kỳ CPU tiếp theo cho quá trình sau đó.Khi CPU sẵn dùng, nó được gán tới quá trình có chu kỳ CPU kế tiếp ngắn nhất.Nếu hai quá trình có cùng chiều dài chu kỳ CPU kế tiếp, định thời FIFO đượcdùng Chú ý rằng thuật ngữ phù hợp hơn là chu kỳ CPU kế tiếp ngắn nhất (shortestnext 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 quá trình hơn là toàn bộ chiều dài của nó

1.3.2 Ưu và nhược điểm của thuật toán

Ưu điểm :

- Giải thuật được xem là tối ưu, thời gian chờ đợi trung bình giảm

- Tận dụng hết năng lực của CPU

Nhược điểm :

- Cài đặt thuật toán phức tạp,tốn nhiều xử lý cho quá trình quản lý

- Mặc dù SJF là tối ưu nhưng nó không thể được cài đặt tại cấp định thời CPUngắn vì không có cách nào để biết chiều dài chu kỳ CPU tiếp theo

- Giải thuật SJF có thể trưng dụng hoặc không trưng dụng CPU, dẫn tới giảithuật này có nhiều dị bản khác nhau và sẽ tối ưu hay không tối ưu phụ thuộc vàotrưng dụng CPU.

Hình 4 Điều phối Shortest Job First

Trang 14

CHƯƠNG II: CÀI ĐẶT THUẬT TOÁN

Code:

public class Input{

int den, xuly;

}

 den: thời gian đến của tiến trình khi nhập liệu

 xuly: thời gian xử lý của tiến trình khi nhập liệu

Trang 15

xác lập thoát quantum

Đúng Sai

Hình 5 Thuật toán xử lý Shortest Job First

Trang 16

2.2 Thuật toán xử lý

Trang 17

2.3 Kết quả thực hiện

- Nhập số tiến trình, thời gian xuất hiện (arrival time) và thời gian thực hiện ( burst time) của từng tiến trình

- Kết quả thu được:

- Kết quả bài toán thu được được ghi vào file sjf.txt

Trang 19

public static void main(String args[]) throws IOException {

Scanner sc = new Scanner(System.in);

System.out.println("Nhập sổ# tiế# n trình: ");

int n = sc.nextInt();

int pid[] = new int[n];

int at[] = new int[n]; // thời gian xuấ# t hiện arrival time

int bt[] = new int[n]; // thời gian thực hiện burst time

int ct[] = new int[n]; // thời gian hoàn thành complete time

int ta[] = new int[n]; // thời gian quay ngược turn around time int wt[] = new int[n]; // thời gian chờ waiting time

int f[] = new int[n]; // đánh dấ# u kiế% m tra quá trình đã hoàn thành hay chưa

Trang 20

}

for (i = 0; i < n; i++) {

/*

* nế# u thời gian xuấ# t hiện cu %a tiế# n trình thứ i <= thời điế% m hệ thổ# ng

và được đánh dấ# u f=0 và thời gian thực hiện bt < min

* Tiế# n trình đó sẽ được thực hiện đấ> u tiến

System.out.println(pid[i] + "\t\t" + at[i] + "\t\t" + bt[i] +

"\t\t\t" + ct[i] + "\t\t\t" + ta[i] + "\t" + wt[i]);

}

System.out.println("Thời gian chờ trung bình: " + (float) (avgwt / n));

try {

FileWriter fw = new FileWriter("sjf.txt");

BufferedWriter bw = new BufferedWriter(fw);

bw.append("Tiế# n trình\t\tThời gian vào\tThời gian thực hiện\t\ tThời gian hoàn thành\tLượt\tThời gian chờ");

bw.append("\n");

Trang 22

KẾT LUẬN

A Những kết quả đạt được của bài tập môn học.

 Qua quá trình tìm hiểu và nghiên cứu về thuật toán lập lịch không ưutiên Shortest Job First cho CPU, nhóm em đã củng cố thêm được kiến thức vàhiểu biết thêm về CPU, hiểu được tầm quan trọng và vai trò của CPU trong việcđiều khiển và quản lý các tiến trình

 Xây dựng được chương trình giải quyết bài toán

 Tăng khả năng làm việc nhóm

 Có thêm kinh nghiệm về các kiến thức liên quan đến môn học và lậptrình

B Hướng phát triển tiếp theo và đề xuất.

Tuy nhiên, chúng em vẫn chưa có nhiều kinh nghiệm và kiến thức còn hạnchế không thể tránh khỏi những sai sót, khiếm khuyết trong quá trình làm bài,mong thầy giáo và các bạn góp ý để chúng em chỉnh sửa

Chúng em xin chân thành cảm ơn!

Trang 23

TÀI LIỆU THAM KHẢO

[1] GeeksforGeeks (2022, February 8) Program for Shortest Job First (or SJF) CPU

Scheduling | Set 1 (Non- preemptive)

https://www.geeksforgeeks.org/program-for-shortest-job-first-or-sjf-cpu-scheduling-set-1-non-preemptive/

[2] Williams, L (2022, January 1) Shortest Job First (SJF): Preemptive, Non-Preemptive

Example Guru99 https://www.guru99.com/shortest-job-first-sjf-scheduling.html

[3] Tien, L D (2022, March 3) Tiến trình trong hệ điều hành (Phần 3) Viblo

https://viblo.asia/p/tien-trinh-trong-he-dieu-hanh-phan-3-3Q75wg6Q5Wb

[4] Shortest Job First Scheduling Algorithm | Studytonight (2021) StudyTonight

https://www.studytonight.com/operating-system/shortest-job-first

Ngày đăng: 30/08/2022, 18:27

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w