ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Nguyễn Văn Kiên LÝ THUYẾT LẬP LỊCH VÀ ỨNG DỤNG GIẢI QUYẾT BÀI TOÁN LẬP LỊCH CHO CPU LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH 1 Số hóa bởi Trung tâm Học liệu http://lrc.vn Thái Nguyên 2013 LỜI CẢM ƠN Em xin chân thành cảm ơn Trƣờng Đại Học Công Nghệ Thông Tin và truyền thông đã tạo điều kiện cho em thực hiện luận văn này. Em cũng xin chân thành cảm ơn tới toàn thể thầy cô giáo ở Viện công nghệ thông tin và trƣờng Đại học công nghệ thông tin và truyền thông đã tận tình giảng dạy và hƣớng dẫn, trang bị cho em những kiến thức cần thiết trong quá trình thực hiện luận văn đƣợc thành công. Dựa trên sự chỉ bảo tận tình của T.S Vũ Vinh Quang dựa trên những kiến thức đã học, và tìm hiểu đƣợc, em đã hoàn thành luận văn theo đúng thời gian quy định. Tuy nhiên trong quá trình thiết kế và thực hiện luận văn không tránh khỏi sai sót, do thời gian có hạn và khả năng còn hạn chế.
Em mong quý thầy cô và các bạn thông cảm và có những ý kiến quý báu nhằm hoàn thiện hơn cho sản phẩm. Em xin chân thành cảm ơn. Thái nguyên, ngày 18 tháng 7 năm 2013 Học viên Nguyễn Văn Kiên 2 Số hóa bởi Trung tâm Học liệu http://lrc.vn LỜI CAM ĐOAN Em xin cam đoan luận văn tốt nghiệp: “Lý thuyết lập lịch và ứng dụng giải quyết bài toán lập lịch cho CPU” do em tự thực hiện dƣới sự hƣớng dẫn của thầy giáo Vũ Vinh Quang. Các kết quả và số liệu hoàn toàn trung thực.
Ngoài các tài liệu tham khảo đã dẫn ra ở cuối luận văn em đảm bảo rằng không sao chép các công trình hay luận văn tốt nghiệp của ngƣời khác. Nếu phát hiện có sự sai phạm với điều cam đoan trên, em xin hoàn toàn chịu trách nhiệm. 3 Số hóa bởi Trung tâm Học liệu http://lrc.vn MỤC LỤC LỜI CẢM ƠN. 1 LỜI CAM ĐOAN.
8 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN VÀ ĐỘ PHỨC TẠP THUẬT TOÁN. Khái niệm cơ bản. Kh¸i niÖm vÒ ®é phøc t¹p thuËt to¸n. Cách tính độ phức tạp.
Vấn đề phân lớp các bài toán. Tổng quan về sự phân lớp các bài toán. Khái niệm dẫn về đƣợc. Lớp các bài toán P và NP.
Một số khái niệm. Một số bài toán đã đƣợc chứng minh là NP – khó, NP - đầy đủ. Thuật toán xấp xỉ. Thuật toán - xấp xỉ tuyệt đối.
Thuật toán - xấp xỉ. 28 LÝ THUYẾT LẬP LỊCH. Mô hình bài toán lập lịch. Các thuật toán lập lịch kinh điển.
Một số thuật toán lập lịch cho CPU. Mô hình bài toán lập lịch cho CPU. Một số thuật toán lập lịch cho CPU. 35 4 Số hóa bởi Trung tâm Học liệu http://lrc.
Lập lịch FCFS. Lập lịch SJF. Lập lịch theo độ ƣu tiên. Lập lịch RR.
Lập lịch với hàng đợi nhiều cấp. Lập lịch hàng đợi phản hồi đa cấp. 51 KẾT QUẢ CÀI ĐẶT MỘT SỐ THUẬT TOÁN LẬP LỊCH CPU. Giới thiệu sơ lƣợc về ngôn ngữ lập trình C# và công cụ lập trình Visual Studio.Giới thiệu về ngôn ngữ lập trình C#.
Giới thiệu về công cụ lập trình Visual Studio. Phân tích thuật toán cài đặt CPU. Thuật toán FCFS.2 Thuật toán SJF. Thuật toán RR.
Sơ đồ thuật toán CPU. Kết quả cài đặt thuật toán CPU. Các thành phần của chƣơng trình. Cấu trúc chi tiết.
Sử dụng chƣơng trình. 66 TÀI LIỆU THAM KHẢO. Thuật toán cài đặt. Các hàm và phƣơng thức cơ bản của chƣơng trình.
77 5 Số hóa bởi Trung tâm Học liệu http://lrc.vn LỜI NÓI ĐẦU Máy tính điện tử ra đời vào những năm 40 của thế kỷ XX. Ban đầu, phạm vi sử dụng máy tính còn rất hẹp, đa phần chỉ nhằm phục vụ mục đích nghiên cứu khoa học. Hơn nữa, để vận hành hệ thống cần phải sử dụng các công cụ phần cứng đặc biệt và thao tác vận hành rất phức tạp. Cùng phát triển song song với sự phát triển của kỹ thuật điện tử, các thế hệ máy tính về sau đƣợc cải tiến ngày một tinh vi hơn, có tốc độ xử lý nhanh hơn, kích thƣớc nhỏ gọn hơn, tiêu tốn ít năng lƣợng hơn và đã làm nên một cuộc cách mạng trong lĩnh vực xử lý, tính toán, điều khiển động…Với các hệ máy tính này đòi hỏi phải có sự điều khiển, vận hành một cách tự động để phát huy hiệu quả của nó một cách tối ƣu nhất.
Nhƣ vậy, cần phải có một chƣơng trình phần mềm đảm bảo việc giải quyết các vấn đề trên. Đó chính là các hệ điều hành máy tính. Mỗi hệ điều hành đều cần có thuật toán lập lịch cho riêng chúng. Thuật toán thƣờng đƣợc thực hiện để cân bằng cho hệ thống máy tính đƣợc hiệu quả.
Sự cần thiết của thuật toán lập lịch xuất phát từ yêu cầu cho hầu hết các hệ thống hiện đại để thực thi nhiều hơn một công việc tại cùng một thời điểm và có thể truyền tải nhiều luồng dữ liệu một lúc. Trong môi trƣờng thời gian thực, chẳng hạn nhƣ các hệ thống nhúng điều khiển tự động trong ngành công nghiệp (Robot) thì lập lịch cũng phải đảm bảo rằng quá trình có thể đáp ứng đúng thời hạn, điều này là rất quan trọng để giữ hệ thống ổn định. Việc nghiên cứu các thuật toán lập lịch dành CPU này mở ra nhiều hƣớng mới cho khoa học và ứng dụng của nó trong thực tiễn cuộc sống. Đƣợc sự đồng ý của Thầy hƣớng dẫn, Em chọn đề tài “Lý thuyết lập lịch và ứng dụng giải quyết bài toán lập lịch cho CPU” làm đề tài luận văn cao học.
Nội dung chính của đề tài bao gồm: Chƣơng 1: Trình bày một số khái niệm về thuật toán và các nguyên tắc đánh giá độ phức tạp của thuật toán, vấn đề phân lớp các bài toán theo độ phức tạp của thuật toán. Đầy là phần lý thuyết quan trọng làm cơ sở để nghiên cứu trong các chƣơng tiếp sau của luận văn. 6 Số hóa bởi Trung tâm Học liệu http://lrc.vn Chƣơng 2: Trình bày lý thuyết cơ bản về bài toán lập lịch, các thuật toán giải bài toán lập lịch cơ bản và trọng tâm là trình bày một số thuật toán lập lịch cho CPU. Đây chính là nội dung trọng tâm của luận văn Chƣơng 3: Đƣa ra kết quả cài đặt các thuật toán lập lịch cho CPU trên nền ngôn ngữ Visual Studio 10.
Nội dung đề tài là một lĩnh vực rộng và khó, với khoảng thời gian không nhiều cùng với kiến thức của bản thân còn hạn chế, trong đề tài này mới chỉ đề cập đến việc nghiên cứu thuật toán lập lịch chủ yếu là trên một máy và ứng dụng cho lập lịch CPU. 7 Số hóa bởi Trung tâm Học liệu http://lrc.vn CHƢƠNG 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN VÀ ĐỘ PHỨC TẠP THUẬT TOÁN Trong chƣơng 1, luận văn sẽ trình bày một số kiến thức cơ bản về thuật toán và độ phức tạp thuật toán, vấn đề phân lớp các bài toán dựa trên độ phức tạp thuật toán. Các kiến thức này đã đƣợc tham khảo trong các tài liệu [3], [4]. Đây là các kiến thức quan trọng để trình bày tiếp các nội dung trong chƣơng 2 và chƣơng 3 của luận văn.
Khái niệm cơ bản 1. Thuật toán Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác đƣợc sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ dữ liệu đầu vào (Input) của bài toán, ta nhận đƣợc kết quả (Output) cần tìm. Ta đã biết 2 mô hình tính toán là máy Turing và máy xử lý thuật toán viết bằng ngôn ngữ tựa ALGOL. Ứng với hai mô hình tính toán này có 2 cách biểu diễn thuật toán: + Thuật toán đƣợc biểu diễn bằng ngôn ngữ máy Turing.
+ Thuật toán đƣợc biểu diễn bằng ngôn ngữ tựa ALGOL. Kh¸i niÖm vÒ ®é phøc t¹p thuËt to¸n. Chi phí phải trả cho một quá trình tính toán Trong quá trình xử lý thuật toán, ngƣời ta thƣờng quan tâm tới chi phí cho thời gian tính toán và chi phí cho không gian chứa dữ liệu tính toán (bộ nhớ). - Chi phí thời gian chính là tổng thời gian cần thiết để thực hiện xong một quá trình tính toán.
+ Với máy Turing: Chi phí thời gian là số bƣớc chuyển hình trạng từ hình trạng đầu q0 đến hình trạng kết thúc qn. 8 Số hóa bởi Trung tâm Học liệu http://lrc.vn + Với thuật toán tựa Algol: Chi phí thời gian là số các phép tính cơ bản cần thực hiện trong quá trình tính toán. - Chi phí không gian chính là số ô nhớ cần để thực hiện hoàn chỉnh trong quá trình tính toán. Gọi A là một thuật toán tƣơng ứng với một mô hình tính toán, gọi e là bộ dữ liệu vào đã đƣợc mã hóa theo cách nào đó.
Khi đó thuật toán A tính trên bộ dữ liệu e cần phải trả về giá thời gian và giá không gian trong đó ta kí hiệu + t A (e ) là giá phải trả về thời gian tính toán + lA (e ) là giá về không gian của bộ nhớ cần thiết sử dụng Khi đó tổng giá phải trả của thuật toán A tính trên bộ dữ liệu e chính bằng : T(A)= t A (e ) + lA (e ) b. Các khái niệm về độ phức tạp của thuật toán Độ phức tạp trong trƣờng hợp xấu nhất Cho một thuật toán A với đầu vào n, khi đó: - Độ phức tạp về bộ nhớ trong trƣờng hợp xấu nhất đƣợc định nghĩa là: LA (n ) = max{lA (e) || | e | £ n } tức là chi phí lớn nhất về bộ nhớ. - Độ phức tạp thời gian trong trƣờng hợp xấu nhất đƣợc định nghĩa là : T A (n ) = max{t A (e) || | e | £ n } tức là chi phí lớn nhất về thời gian. Độ phức tạp trung bình Là tổng số các độ phức tạp khác nhau ứng với các bộ dữ liệu chia cho tổng số.
Độ phức tạp tiệm cận Thuật toán A với đầu vào n gọi là có độ phức tạp O(f(n)) nếu $ hằng số C, N 0 :T A (n ) £ C .f (n ), " n ³ N 0 tức là T A (n ) có tốc độ tăng là O(f(n)) 9 Số hóa bởi Trung tâm Học liệu http://lrc.vn 10 Số hóa bởi Trung tâm Học liệu http://lrc.vn Độ phức tạp đa thức (Polynomial) Thuật toán đƣợc gọi là có độ phức tạp đa thức nếu tồn tại đa thức P(n) mà T A (n ) £ C .