Xem thử demofdfvddddddđsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss fesfsdfsdfdfdfffffffsffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffds
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN …o0o… BÀI TẬP LỚN MÔN NGUYÊN LÝ HỆ ĐIỀU HÀNH ĐỀ TÀI LẬP TRÌNH MÔ PHỎNG CÁC PHƯƠNG PHÁP LẬP LỊCH CHO CPU THỰC HIỆN: NHÓM 15_LỚP ĐHHTTT1_K6 GV HƯỚNG DẪN: NGUYỄN THANH HẢI …HÀ NỘI 2012… Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN …o0o… BÀI TẬP LỚN MÔN NGUYÊN LÝ HỆ ĐIỀU HÀNH ĐỀ TÀI LẬP TRÌNH MÔ PHỎNG CÁC PHƯƠNG PHÁP LẬP LỊCH CHO CPU THỰC HIỆN: NHÓM 15_LỚP ĐHHTTT1_K6: ĐỖ VĂN CHÍ TRỊNH VIỆT HÙNG ĐOÀN VĂN HUY TRẦN XUÂN KHÁNH HOÀNG VĂN PHẨM MỤC LỤC Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 GIỚI THIỆU .5 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 CƠ BẢN .7 1.2.1 Khái niệm CPU 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 CÁC THUẬT TOÁN LẬP LỊCH 1.3.1 First Come First Served(FCFS) 1.3.2 Round robin(RR) 10 1.3.3 Shortest Job First(SJF) 11 1.3.4 Shortest Remain Time(SRT) 11 CHƯƠNG CÀI ĐẶT THUẬT TOÁN 12 2.1 MÔ HÌNH CÀI ĐẶT THUẬT TOÁN 12 2.1.1 Cấu trúc liệu 12 2.1.2 Thuật toán xử lý chung 13 2.2 THUẬT TOÁN 14 2.2.1 Thuật toán First Come First Served(FCFS) 14 2.2.2 Thuật toán Round robin(RR) .15 2.2.3 Thuật toán Shortest Job First(SJF) .18 2.2.4 Thuật toán Shortest Remain Time(SRT) 20 Nhóm 15 _ ĐH HTTT1 _ K6 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 tìm hiểu, nghiên cứu đề tài: Lập trình mô phương pháp lập lịch cho CPU Nhóm 15 trình bày nội dung sau: - Tìm hiểu thuật toán: First Come First Served(FCFS), Round Robin(RR), Shortest Job First(SJF), Shortest Remain Time(SRT) - Chỉ ưu nhược điểm thuật toán lập lịch CPU Mặc dù nhóm 15 chúng em cố gắng tìm hiểu kiến thức, tài liệu phương pháp lập lịch CPU, cố gắng trình hoàn thiện tập Song kiến thức, trình độ chúng em nhiều hạn chế nên chắn không tránh khỏi sai sót Chúng em mong dẫn thầy giáo góp ý bạn, để chúng em hoàn thiện tập Chương CƠ SỞ LÝ THUYẾT Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU 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ược 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 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 hoà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à 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 Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU trình tác vụ xử lý theo lô nói chung trì hoã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 để hoà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 hoà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: - 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…) - Khi tiến trình kết thúc Đ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 hoàn tất tự nguyện giải phóng CPU, 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 có Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU thể 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: - Khi tiến trình chuyển từ trạng thái xử lý(running) sang trạng thái bị blocked - 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) - 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 hoàn tất) - 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 toá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: Running Ready Waiting Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU Hình 1.1: Các trạng thái tiến trình liên quan đến CPU Sẵn sàng(ready): trạng thái mà tiến trình phân phối đầy đủ 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: Sử dụng CPU Bắt đầu Sử dụng CPU ……… Đợi I/O Sử dụng CPU ……… Kết thúc đợi I/O Hình 1.2: Sơ đồ thực tiến trình Một tiến trình trạng thái thực hiện, rời khỏi trạng thái ba lý do: - Tiến trình hoàn thành công việc, trả 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ái 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 Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU 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: Read Queue CP U I/O Queue I/O I/O Queue …… …… I/O I/O Queue I/O Hình 1.3: Sơ đồ tổ chức hàng đợi tiến trình Như lập lịch cho CPU có nghĩa tổ chức hàng đợi 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 Các Thuật Toán Lập Lịch 1.3.1 First Come First Served(FCFS) Trong thuật toán này, độ ưu tiên phục vụ tiến trình vào thời điểm hình thành tiến trình Hàng đợi tiến trình tổ chức theo kiểu FIFO(First In First Out – Vào trước trước, vào sau sau) Mọi tiến trình phục vụ theo trình tự xuất kết thúc bị ngắt Ready list A B C CPU Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU Hình 1.4: Điều phối FIFO Ưu điểm: CPU không bị phân phối lại(không bị ngắt) chi phí thực thấp nhất(vì thay đổi thứ tự ưu tiên phục vụ, thứ tự ưu tiên thứ tự tiến trình hàng đợi) Nhược điểm: thời gian trung bình chờ phục vụ tiến trình nhau(không kể tiến trình ngắn hay dài), dẫn tới ba điểm sau: - Thời gian chờ trung bình tăng vô hạn hệ thống tiếp cận tới hạn khả phục vụ - Nếu độ phát tán thời gian thực tiến trình tăng thời gian chờ đợi trung bình tăng theo - Khi có tiến trình dài, bị ngắt tiến trình khác phải chờ đợi lâu 1.3.2 Round robin(RR) Giải thuật định thời luân phiên (round-robin scheduling algorithm-RR) thiết kế đặc biệt cho hệ thống chia sẻ thời gian Tương tự định thời FIFO trưng dụng CPU thêm vào để chuyển CPU trình Đơn vị thời gian nhỏ gọi định mức thời gian (time quantum) hay phần thời gian (time slice) định nghĩa Định mức thời gian thường từ 10 đến 100 mili giây Hàng đợi sẵn sàng xem hàng đợi vòng Bộ định thời CPU di chuyển vòng quanh hàng đợi sẵn sàng, cấp phát CPU tới trình có khoảng thời gian tối đa định mức thời gian Để cài đặt định thời RR, quản lý hàng đợi sẳn sàng hàng đợi FIFO trình Các trình thêm vào đuôi hàng đợi Bộ định thời CPU chọn trình từ hàng đợi sẵn sàng, đặt đếm thời gian để ngắt sau định mức thời gian gửi tới trình Sau đó, hai trường hợp xảy Quá trình có chu kỳ CPU định mức thời gian Trong trường hợp này, trình tự giải phóng Sau đó, định thời biểu xử lý trình hàng đợi sẵn sàng Ngược lại, chu kỳ CPU trình chạy dài định mức thời gian độ đếm thời gian báo gây ngắt tới hệ điều hành Chuyển đổi ngữ cảnh thực thi trình đặt trở lại cuối hàng đợi sẵn sàng Sau đó, định thời biểu CPU chọn trình hàng đợi sẵn sàng Ready List 10 Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU A B C A CPU Hình 1.5: Round Robin Ưu điểm : - Các trình luân phiên cho CPU xử lý nên thời gian chờ đợi - Đối với trình liên quan đến nhập/xuất người dùng hiệu - Việc cài đặt không phức tạp Nhược điểm : - Thời gian chờ đợi trung bình thuật toán RR thường dài - Nếu thời gian định mức cho việc xử lý lớn RR thành FIFO - Nếu thời gian ngắn so với thời gian xử lý tiến trình danh sách hàng đợi việc chờ đợi xử lý luân phiên nhiều - Qui tắc định mức thời gian nên dài 80% chu kỳ CPU 1.3.3 Shortest Job First(SJF) Một tiếp cận khác việc định thời CPU giải thuật định thời công việc ngắn trước (shortest-job-first-SJF) Giải thuật gán tới trình chiều dài chu kỳ CPU cho trình sau Khi CPU sẵn dùng, gán tới trình có chu kỳ CPU ngắn Nếu hai 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 next CPU burst) định thời thực cách xem xét chiều dài chu kỳ CPU trình toàn chiều dài Ư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 cài đặt cấp định thời CPU ngắn 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 1.3.4 Shortest Remain Time(SRT) Tương tự SJF thuật toán này, độ ưu tiên thực tiến trình dựa vào thời gian cần thiết để thực nốt tiến trình(bằng tổng thời gian trừ thời gian thực hiện) Như vậy, thuật toán cần phải thường xuyên cập nhật 11 Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU thông tin giời gian thực tiến trình Đồng thời, chế độ phân bổ lại CPU phải áp dụng không làm tình ưu việc thuật toán Ưu điểm : - Thời gian chờ đợi,tồn hệ thống tiến trình ngắn - Thuật toán tối ưu Nhược điểm : - Việc cài đặt thuật toán phức tạp - Cần quản lý chặt chẽ việc điều phối tiến trình - Quản lý thời gian đến tiến trình Chương CÀI ĐẶT THUẬT TOÁN 2.1 Mô hình cài đặt thuật toán 2.1.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: struct process { int id; int timexh; int timeth; }; Id: chứa số thứ tự tiến trình danh sách timexh: thời gian xuất tiến trình timeth: thời gian thực tiến trình Input: Input tổ chức theo cấu trúc mảng nhằm lưu trữ 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: process* input(int &n) 12 Nhóm 15 _ ĐH HTTT1 _ K6 Đề tài: Lập trình mô phương pháp lập lịch cho CPU { int i,j; process *a,tg; a=new process[n]; gotoxy(8,1);cout