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.
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 mơ tả thuật tốn lập lịch cho CPU khơng ưu tiên theo thuật tố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ã Hà Nội, 2022 NHẬN XÉT VÀ CHO ĐIỂM CỦA GIÁO VIÊN 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 1.1.1 Mục tiêu lập lịch 1.1.2 Các đặc điểm tiến trình 1.1.3 Điều phối không độc quyền điều phối độc quyền 1.2 Các khái niệm .5 1.2.1 Khái niệm CPU .5 1.2.2 Các trạng thái tiến trình liên quan đến CPU 1.2.3 Khái niệm lập lịch cho CPU 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 1.3.2 Ưu nhược điểm thuật toán CHƯƠNG II: CÀI ĐẶT THUẬT TOÁN 2.1 Cấu trúc liệu 2.2 Thuật toán xử lý 10 2.3 Kết thực 11 PHỤ LỤC .13 KẾT LUẬN 16 TÀI LIỆU THAM KHẢO 17 DANH MỤC HÌNH ẢNH Hình Các trạng thái tiến trình liên quan đến CPU Hình Sơ đồ thực tiến trình Hình Sơ đồ tổ chức hàng đợi tiến trình Hình Điều phối Shortest Job First Hình Thuật tốn xử lý Shortest Job First 10 LỜI NÓI ĐẦU Hệ điều hành phần gắn bó trực tiếp với phần cứng mơi trường chương trình ứng dụng khác chạy Với chức quản lý phân phối tài nguyên cách hợp lý, đồng thời giả lập máy tính mở rộng tạo giao diện tiện lợi với người sử dụng, hệ điều hành thành phần then chốt thiếu hệ thống máy tính điện tử Một chức quan trọng hệ điều hành quản lý CPU Trong mơi trường xử lý đa chương, xảy tình nhiều tiến trình đồng thời sẵn sàng để xử lý Mục tiêu hệ phân chia thời gian (time-sharing) chuyển đổi CPU qua lại tiến trình cách thường xuyên để nhiều người sử dụng tương tác lúc với chương trình trình xử lý Để thực mục tiêu này, hệ điều hành phải lựa chọn tiến trình xử lý Bộ điều phối sử dụng giải thuật điều phối thích hợp để thực nhiệm vụ Một thành phần khác hệ điều hành tiểm ẩn công tác điều phối điều phối (dispatcher) Bộ phân phối chịu trách nhiệm chuyển đổi ngữ cảnh trao CPU cho tiến trình chọn điều phối để xử lý Vì lợi ích lơn lao mà giải thuật điều phối CPU đem lại để tìm hiểu kĩ nguyên tắc hoạt động chúng, chúng em định chọn đề tài: Xây dựng chương trình mơ tả thuật tốn lập lịch cho CPU khơng ưu tiên theo thuật tốn SJF (Shortest Job First) ngôn ngữ Java 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 chế, mà đưa định Các hệ điều hành xây dựng nhiều chiến lượt khác để thực việc điều phối, tựu chung cần đạt mục tiêu sau: Sự cơng bằng: tiến trình chia sẻ CPU cách cơng khơng có tiến trình phải đợi vô hạn để cấp phát CPU Tính hiệu quả: Hệ thống phải tận dụng 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 tương tác người sử dụng Thời gian lưu lại hệ thống: cực tiểu hóa thời gian hồn tất tác vụ xử lý theo lô Thông lượng tối đa: cực đại hóa số cơng việc xử lý đơn vị thời gian Tuy nhiên thường thỏa mãn tất mục tiêu kể thân chũng có mâu thuẩn với mà thể dung hịa chúng mức độ 1.1.2 Các đặc điểm tiến trình Điều phối hoạt động tiến trình vấn đề phức tạp, đòi hỏi hệ điều hành giải phải xem xét nhiều yếu tố khác để đạt mục tiêu đề Một số đặc tính tiến trình cần quan tâm tiêu chuẩn điều phối: Tính hướng xuất/ nhập tiến trình: Khi tiến trình nhận CPU, chủ yếu sử dụng CPU đến phát sinh yêu cầu nhập xuất? Hoạt động tiến trình thường bao gồm nhiều lượt sử dụng CPU, lượt thời gian ngắn Tính hướng xử lý tiến trình: Khi tiến trình nhận CPU, có khuynh hướng sử dụng CPU đến hết thời gian dành cho nó? Hoạt động tiến trình thường bao gồm số lượt sử dụng CPU, lượ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ương tác thường yêu cầu hồi đáp tức thời yêu cầu họ, tiến trình tác vụ xử lý theo lơ nói chung trì hỗn thời gian chấp nhận Độ ưu tiên tiến trình: Các tiến trình phân cấp theo số tiêu chuẩn đánh giá đó, cách hợp lý, tiến trình quan trọng hơn(có độ ưu tiên cao hơn) cần ưu tiên cao Thời gian sử dụng CPU tiến trình: số quan điểm ưu tiên chọn tiến trình sử dụng CPU nhiều thời gian hy vọng chúng cần thời gian để hoàn tất rời khỏi hệ thống Tuy nhiên có quan điểm cho tiến trình nhận CPU thời gian tiến trình phải chờ lâu nhất, ưu tiên chọn chúng Thời gian lại tiến trình cần để hồn tất: Có thể giảm thiểu thời gian chờ trung bình tiến trình cách cho tiến trình cần thời gian để hoàn tát thực trước Tuy nhiên đáng tiếc biết tiến trình cần thời gian để kết thúc xử lý 1.1.3 Điều phối không độc quyền điều phối độc quyền Thuật toán điều phối cần xem xét định thời điểm chuyển đổi CPU tiến trình Hệ điều hành thể thực chế điều phối theo nguyên lý đọc quyền không đọc quyền: Điều phối độc quyền: Nguyên lý điều phối độc quyền cho phép tiến trình nhận CPU có quyền độc chiếm CPU đến hồn tất xử lý tự nguyện giải phóng CPU Khi định điều phối CPU xảy tình sau: o Khi tiến trình chuyển từ trạng thái xử lý (running) sang trạng thái bị blocked (ví dụ chờ thao tác nhập xuất hay chờ tiến trình 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 dễ cài đặt Tuy nhiên chúng thường khơng thích hợp với hệ thống tổng quát nhiều người dùng, cho phép tiến trình có quyền xử lý tùy ý, có nghĩa tiến trình giữ CPU thời gian không xác định, ngăn cản tiến trình cịn lại hệ thống 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 theo nguyên lý không đọc quyền cho phép tạm dừng hoạt động tiến trình sẵn sàng xử lý Khi tiến trình nhận CPU, sử dụng CPU đến hồn tất tự nguyện giải phóng CPU, khí có tiến trình khác có độ ưu tiên dành quyền sử dụng CPU tiến trình ban đầu Như tiến trình bị tạm dừng hoạt động lúc mà không báo trước, để tiến trình khác xử lý Các định điều phối xảy khi: o Khi tiến trình chuyển từ trạng thái xử lý(running) sang trạng thái bị khóa blocked o Khi tiến trình chuyển từ trạng thái xử lý(running) sang trạng thái ready(vì xảy ngắt) o Khi tiến trình chuyển từ trạng thái chờ (blocked) sang trạng thái ready (ví dụ thao tác nhập xuất hồn tất) o Khi tiến trình kết thúc Trong hệ thống sử dụng nguyên lý điều phối độc quyền xảy tình trạng 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 dài hoàn tất Nguyên lý điều phối độc quyền thường thích hợp với hệ xử lý theo lô Đối với hệ thống tương tác (time sharing), hệ thời gian thực (real time), cần phải sử dụng nguyên lý điều phối khơng độc quyền để tiến trình quan trọng có hội hồi đáp kịp thời Tuy nhiên thực hiện điều phối theo nguyên lý không độc quyền đòi hỏi chế phức tạp việc phân định độ ưu tiên, phát sinh thêm chi phí chuyển đổi CPU qua lại tiến trình 1.2 Các khái niệm 1.2.1 Khái niệm CPU CPU loại tài nguyên quan trọng máy tính Mọi tiến trình muốn hoạt động phải có phục vụ CPU(để xử lý, tính tốn…) Thời gian mà CPU phục vụ cho tiến trình hoạt động gọi CPU Tại thời điểm nhất, có tiến trình phân phối CPU để hoạt động(thực lệnh mình) 1.2.2 Các trạng thái tiến trình liên quan đến CPU Trong chế độ đa chương trình, có ba trạng thái tiến trình liên quan mật thiết đến CPU bao gồm: Hình Cáclàtrạng tiến trình trình liên quan Sẵn sàng(ready): trạng thái thái mà tiến phân đến phốigiờ đầyCPU đủ tài nguyên cần thiết chờ CPU Thực hiện(running): trạng thái mà tiến trình phân phối đầy đủ tài nguyên cần thiết CPU Đợi(waiting): trạng thái tiến trình khơng thực thiếu vài điều kiện đó(đợi liệu vào/ra, đợi tài nguyên bổ sung…) Khi kiện mà chờ đợi xuất hiện, tiến trình quay lại trạng thái sẵn sàng Như vậy, suốt thời gian tồn mình, tiến trình tuân thủ theo sơ đồ thực sau: Hình thái Sơ đồ thựchiện, hiệnnó cáccótiến Một tiến trình trạng thực thểtrình rời khỏi trạng thái ba lý do: Tiến trình hồn thành cơng việc, trải lại CPU chuyển sang chờ xử lý kết thúc Tiến trình tự ngắt: Khi tiến trình chờ đợi kiện đó, tiến trình chuyển sang trạng thá thực có xuất kiện chờ Tiến trình sử dụng hết CPU dành cho nó, chuyển sang 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 chất thực vệc phân phối lại 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 từ trạng thái(thực chất khối điều khiển tiến trình) để ghi nhận tình trạng sử dụng tài nguyên trạng thái tiến trình Các từ trạng thái tổ chức theo kiểu hàng đợi sau: Sơlà đồ chức hàng đợiđợi cáccác tiến trình Như lập lịch cho CPUHình có nghĩa tổ tổ chức hàng tiến trình sẵn sàng để phân phối CPU cho chúng dựa độ ưu tiên tiến trình; cho hiệu suất sử dụng CPU tối ưu Mỗi tiến trình trạng thái sẵn sàng gắn với thứ tự ưu tiên Thứ tự ưu tiên xác định dựa vào yếu tố như: thời điểm hình thành tiến trình, thời gian thực 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ó thuật tốn lập lịch cho CPU First Come First Served (FCFS), Round Robin (RR), Shortest Job First (SJF) Shortest Remain Time (SRT) Mỗi thuật tốn có ưu, nhược điểm khác đề tài này, tập trung nghiên cứu thuật toán Shortest Job First (SJF) Shortest Job First giải thuật định thời công việc ngắn trước Giải thuật gán tới trình chiều dài chu kỳ CPU cho q trình sau Khi CPU sẵn dùng, gán tới q trình có chu kỳ CPU ngắn Nếu hai q trình có chiều dài chu kỳ CPU kế tiếp, định thời FIFO dùng Chú ý thuật ngữ phù hợp chu kỳ CPU ngắn (shortest Hình Điều phối Shortest Job First next CPU burst) định thời thực cách xem xét chiều dài chu kỳ CPU trình tồn chiều dài 1.3.2 Ưu nhược điểm thuật toán Ưu điểm : - Giải thuật xem tối ưu, thời gian chờ đợi trung bình giảm - Tận dụng hết lực CPU Nhược điểm : - Cài đặt thuật toán phức tạp,tốn nhiều xử lý cho trình quản lý - Mặc dù SJF tối ưu khơng thể cài đặt cấp định thời CPU ngắn khơng có cách để biết chiều dài chu kỳ CPU - Giải thuật SJF trưng dụng không trưng dụng CPU, dẫn tới giải thuật có nhiều dị khác tối ưu hay không tối ưu phụ thuộc vào trưng dụng CPU CHƯƠNG II: CÀI ĐẶT THUẬT TOÁN 2.1 Cấu trúc liệu - Quản lý tiến trình: Cấu trúc liệu đề xuất cho việc quản lý tiến trình xây dựng thành cấu trúc nhằm tạo điều kiện cho việc quản lý tiến trình dễ dàng Code: public class DS{ int id; } - Id: chứa số thứ tự tiến trình danh sách Input: Input tổ chức theo danh sách liên kết đơn nhằm lưu giữ giá trị nhập tiến trình liệu để phục hồi lại tiến trình nhằm để tránh trường hợp sai lệnh liệu xử lý Code: public class Input{ int den, xuly; } den: thời gian đến tiến trình nhập liệu xuly: thời gian xử lý tiến trình nhập liệu 2.2 Thuật tốn xử lý Hình Thuật tốn xử lý Shortest Job First 10 2.3 Kết thực - Nhập số tiến trình, thời gian xuất (arrival time) thời gian thực ( burst time) tiến trình - Kết thu được: - Kết toán thu được ghi vào file sjf.txt 11 Thuật toán: boolean a = true; while (true) { int c = n, = 999; if (tot == n) // tot = tổng số tiến trình = vòng lặp kết thúc { break; } for (i = 0; i < n; i++) { /* * thời gian xuất tiến trình thứ i