Thụng thƣờng, trong thuật toỏn hàng đợi đa cấp, cỏc tiến trỡnh đƣợc gỏn vĩnh viễn tới hàng đợi khi đƣợc đƣa vào hệ thống. Cỏc tiến trỡnh khụng di chuyển giữa cỏc hàng đợi. Nếu cú cỏc hàng đợi riờng cho cỏc tiến trỡnh tƣơng tỏc và cỏc tiến trỡnh nền thỡ cỏc tiến trỡnh khụng di chuyển từ một hàng đợi này tới hàng đợi khỏc vỡ cỏc tiến trỡnh khụng thay đổi tớnh tự nhiờn giữa tƣơng tỏc và nền. Cỏch tổ chức cú ớch vỡ chi phớ lập lịch thấp nhƣng thiếu linh động và cú thể dẫn đến tỡnh trạng “đúi CPU”.
Hỡnh 7. Cỏc hàng đợi phản hồi nhiều cấp
Tuy nhiờn, lập lịch hàng đợi phản hồi đa cấp (multilevel feedback queue scheduling) cho phộp một tiến trỡnh di chuyển giữa cỏc hàng đợi. í tƣởng là tỏch riờng cỏc tiến trỡnh với cỏc đặc điểm chu kỳ CPU khỏc nhau. Nếu một tiến trỡnh dựng quỏ nhiều thời gian CPU thỡ nú sẽ đƣợc di chuyển tới hàng đợi cú độ ƣu tiờn thấp. Cơ chế này để lại cỏc tiến trỡnh hƣớng nhập/xuất và cỏc tiến trỡnh tƣơng tỏc trong cỏc hàng đợi cú độ ƣu tiờn cao hơn. Tƣơng tự, một tiến trỡnh chờ quỏ lõu trong hàng đợi cú độ ƣu
49
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
tiờn thấp hơn cú thể đƣợc di chuyển tới hàng đợi cú độ ƣu tiờn cao hơn. Đõy là hỡnh thức của sự húa già nhằm ngăn chặn sự đúi CPU.
Thớ dụ, xột một bộ lập lịch hàng đợi phản hồi nhiều cấp với ba hàng đợi đƣợc đỏnh số từ 0 tới 2 (nhƣ hỡnh 7). Bộ lập lịch trƣớc tiờn thực thi tất cả tiến trỡnh chứa trong hàng đợi 0. Chỉ khi hàng đợi 0 rỗng nú sẽ thực thi cỏc tiến trỡnh trong hàng đợi 1. Tƣơng tự, cỏc tiến trỡnh trong hàng đợi 2 sẽ đƣợc thực thi chỉ nếu hàng đợi 0 và 1 rỗng. Một tiến trỡnh đến hàng đợi 1 sẽ ƣu tiờn hơn tiến trỡnh đến hàng đợi 2. Tƣơng tự, một tiến trỡnh đến hàng đợi 0 sẽ ƣu tiờn hơn một tiến trỡnh vào hàng đợi 1.
Một tiến trỡnh đƣa vào hàng đợi sẵn sàng đƣợc đặt trong hàng đợi 0. Một tiến trỡnh trong hàng đợi 0 đƣợc cho một định mức thời gian là 8 mili giõy. Nếu nú khụng kết thỳc trong thời gian này thỡ nú sẽ di chuyển vào cuối của hàng đợi 1. Nếu hàng đợi 0 rỗng thỡ tiến trỡnh tại đầu của hàng đợi 1 đƣợc cho định mức thời gian là 16 mili giõy. Nếu nú khụng hoàn thành thỡ nú bị chiếm CPU và đƣợc đặt vào hàng đợi 2. Cỏc tiến trỡnh trong hàng đợi 2 đƣợc chạy trờn cơ sở FCFS chỉ khi hàng đợi 0 và 1 rỗng.
Thuật toỏn lập lịch này cho độ ƣu tiờn cao nhất tới bất cứ tiến trỡnh nào với chu kỳ CPU 8 mili giõy hay ớt hơn. Một tiến trỡnh nhƣ thế sẽ nhanh chúng nhận CPU, kết thỳc chu kỳ CPU của nú và bỏ đi chu kỳ I/O kế tiếp của nú. Cỏc tiến trỡnh cần hơn 8 mili giõy nhƣng ớt hơn 24 mili giõy đƣợc phục vụ nhanh chúng mặc dự với độ ƣu tiờn thấp hơn cỏc tiến trỡnh ngắn hơn. Cỏc tiến trỡnh dài tự động rơi xuống hàng đợi 2 và đƣợc phục vụ trong thứ tự FCFS với bất cứ chu kỳ CPU cũn lại từ hàng đợi 0 và 1.
Núi chung, một bộ lập lịch hàng đợi phản hồi nhiều cấp đƣợc định nghĩa bởi cỏc tham số sau:
Số lƣợng hàng đợi.
Thuật toỏn lập lịch cho mỗi hàng đợi.
Phƣơng phỏp đƣợc dựng để xỏc định khi nõng cấp một tiến trỡnh tới hàng đợi cú độ ƣu tiờn cao hơn.
50
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
Phƣơng phỏp đƣợc dựng để xỏc định khi nào chuyển một tiến trỡnh tới hàng đợi cú độ ƣu tiờn thấp hơn.
Phƣơng phỏp đƣợc dựng để xỏc định hàng đợi nào một tiến trỡnh sẽ đi vào và khi nào tiến trỡnh đú cần phục vụ.
Định nghĩa bộ lập lịch dựng hàng đợi phản hồi nhiều cấp trở thành thuật toỏn lập lịch CPU phổ biến nhất. Bộ lập lịch này cú thể đƣợc cấu hỡnh để thớch hợp với hệ thống xỏc định. Tuy nhiờn, bộ lập lịch này cũng yờu cầu một vài phƣơng tiện chọn lựa giỏ trị cho tất cả tham số để định nghĩa bộ lập lịch tốt nhất. Mặc dự một hàng đợi phản hồi nhiều cấp là cơ chế phổ biến nhất nhƣng nú cũng là cơ chế phức tạp nhất.
Kết luận: Nội dung của chƣơng này 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à cỏc thuật toỏn đƣợc xõy dựng trong chƣơng 3 của luận văn, làm cơ sở để đỏnh giỏ cỏc kết quả đạt đƣợc khi chạy chƣơng trỡnh thực nghiệm.
51
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
CHƢƠNG 3
KẾT QUẢ CÀI ĐẶT MỘT SỐ THUẬT TOÁN LẬP LỊCH CPU 3.1. 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.
3.1.1.Giới thiệu về ngụn ngữ lập trỡnh C#
Ngụn ngữ C# là một ngụn ngữ đƣợc dẫn xuất từ C và C++, nhƣng nú đƣợc tạo từ nền tảng phỏt triển hơn. Microsoft bắt đầu với cụng việc trong C và C++ và thờm vào những đặc tớnh mới để làm cho ngụn ngữ này dễ sử dụng hơn. Nhiều trong số những đặc tớnh này khỏ giống với những đặc tớnh cú trong ngụn ngữ Java. Khụng dừng lại ở đú, Microsoft đƣa ra một số mục đớch khi xõy dựng ngụn ngữ này. Những mục đớch này đƣợc đƣợc túm tắt nhƣ sau: C# là ngụn ngữ đơn giản C# là ngụn ngữ hiện đại C# là ngụn ngữ hƣớng đối tƣợng C# là ngụn ngữ mạnh mẽ và mềm dẻo C# là ngụn ngữ cú ớt từ khúa C# là ngụn ngữ hƣớng module C# sẽ trở nờn phổ biến C# là ngụn ngữ đơn giản
C# loại bỏ một vài sự phức tạp của những ngụn ngữ nhƣ Java và c++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo (virtual base class). Chỳng là những nguyờn nhõn gõy ra sự nhầm lẫn hay dẫn đến những vấn đề cho cỏc ngƣời phỏt triển C++. Nếu chỳng ta là ngƣời học ngụn ngữ này đầu tiờn thỡ chắc chắn là ta sẽ khụng trải qua những thời gian để học nú. Nhƣng khi đú ta sẽ khụng biết đƣợc hiệu quả của ngụn ngữ C# khi loại bỏ những vấn đề trờn.
52
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
Ngụn ngữ C# đơn giản vỡ nú dựa trờn nền tảng C và C++. Nếu chỳng ta thõn thiện với C và C++ hoậc thậm chớ là Java, chỳng ta sẽ thấy C# khỏ giống về diện mạo, cỳ phỏp, biểu thức, toỏn tử và những chức năng khỏc đƣợc lấy trực tiếp từ ngụn ngữ C và C++, nhƣng nú đa đƣợc cải tiến để làm cho ngụn ngữ đơn giản hơn. Một vài trong cỏc sự cải tiến là loại bỏ cỏc dƣ thừa, hay là thờm vào những cỳ phỏp thay đổi. Vớ dụ nhƣ, trong C++ cú ba toỏn tử làm việc với cỏc thành viờn là ::, . , và ->. Để biết khi nào dựng ba toỏn tử này cũng phức tạp và dễ nhầm lẫn. Trong C#, chỳng đƣợc thay thế với một toỏn tử duy nhất gọi là . (dot). Đối với ngƣời mới học thỡ điều này và những việc cải tiến khỏc làm bớt nhầm lẫn và đơn giản hơn.
C# là ngụn ngữ hiện đại
Những đặc tớnh nhƣ là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảo mật mó nguồn là những đặc tớnh đƣợc mong đợi trong một ngụn ngữ hiện đại. C# chứa tất cả những đặc tớnh trờn.
C# là ngụn ngữ hƣớng đối tƣợng
Những đặc điểm chớnh của ngụn ngữ hƣớng đối tƣợng (Object-oriented language) là sự đúng gúi (encapsulation), sự kế thừa (inheritance), và đa hỡnh (polymorphism). C# hỗ trợ tất cả những đặc tớnh trờn.
C# là ngụn ngữ mạnh mẽ và cũng mềm dẻo
Ngụn ngữ C# chỳng ta chỉ bị giới hạn ở chớnh bởi bản thõn hay là trớ tƣởng tƣợng của chỳng ta. Ngụn ngữ này khụng đặt những ràng buộc lờn những việc cú thể làm. C# đƣợc sử dụng cho nhiều cỏc dự ỏn khỏc nhau nhƣ là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tớnh, hay thậm chớ những trỡnh biờn dịch cho cỏc ngụn ngữ khỏc.
C# là ngụn ngữ ớt từ khúa
C# là ngụn ngữ sử dụng giới hạn những từ khúa. Phần lớn cỏc từ khúa đƣợc sử dụng để mụ tả thụng tin. Chỳng ta cú thể nghĩ rằng một ngụn ngữ cú nhiều từ khúa thỡ sẽ mạnh hơn. Điều này khụng phải sự thật, ớt nhất là trong trƣờng hợp ngụn ngữ C#,
53
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
chỳng ta cú thể tỡm thấy rằng ngụn ngữ này cú thể đƣợc sử dụng để làm bất cứ nhiệm vụ nào. Bảng sau liệt kờ cỏc từ khúa của ngụn ngữ C#.
C# là ngụn ngữ hƣớng module
Mó nguồn C# cú thể đƣợc viết trong những phần đƣợc gọi là những lớp, những lớp này chứa cỏc phƣơng thức thành viờn của nú. Những lớp và những phƣơng thức cú thể đƣợc sử dụng lại trong ứng dụng hay cỏc chƣơng trỡnh khỏc. Bằng cỏch truyền cỏc mẫu thụng tin đến những lớp hay phƣơng thức chỳng ta cú thể tạo ra những mó nguồn dựng lại cú hiệu quả.
C# sẽ là một ngụn ngữ phổ biến
Ngụn ngữ này cú một số lý do để trở thành một ngụn ngữ phổ biến. Một trong những lý do chớnh là Microsoft và sự cam kết của .NET
Microsoft muốn ngụn ngữ C# trở nờn phổ biến. Mặc dự một cụng ty khụng thể làm một sản phẩm trở nờn phổ biến, nhƣng nú cú thể hỗ trợ. Cỏch đõy khụng lõu, Microsoft đa gặp sự thất bại về hệ điều hành Microsoft Bob. Mặc dự Microsoft muốn Bob trở nờn phổ biến nhƣng thất bại. C# thay thế tốt hơn để đem đến thành cụng so với Bob. Thật sự là khụng biết khi nào mọi ngƣời trong cụng ty Microsoft sử dụng Bob trong cụng việc hằng ngày của họ. Tuy nhờn, với C# thỡ khỏc, nú đƣợc sử dụng bởi Microsoft. Nhiều sản phẩm của cụng ty này đa chuyển đổi và viết lại bằng C#. Bằng
54
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
cỏch sử dụng ngụn ngữ này Microsoft đa xỏc nhận khả năng của C# cần thiết cho những ngƣời lập trỡnh.
Micorosoft .NET là một lý do khỏc để đem đến sự thành cụng của C#. .NET là một sự thay đổi trong cỏch tạo và thực thi những ứng dụng.
Ngoài hai lý do trờn ngụn ngữ C# cũng sẽ trở nờn phổ biến do những đặc tớnh của ngụn ngữ này đƣợc đề cập trong mục trƣớc nhƣ: đơn giản, hƣớng đối tƣợng, mạnh mẽ...
3.1.2. Giới thiệu về cụng cụ lập trỡnh Visual Studio
Visual Studio là mụi trƣờng phỏt triển tớch hợp (Integrated Development Environment (IDE) đƣợc phỏt triển bởi Microsoft. Đõy là một loại phần mềm mỏy tớnh cú phục vụ cho cỏc lập trỡnh viờn trong việc phỏt triển phần mềm.
Cỏc mụi trƣờng phỏt triển hợp nhất thƣờng bao gồm:
- Một trỡnh soạn thảo mó (source code editor): dựng để viết mó. - Trỡnh biờn dịch (compiler) hoặc trỡnh thụng dịch (interpreter).
- Cụng cụ xõy dựng tự động: khi sử dụng sẽ biờn dịch (hoặc thụng dịch) mó nguồn, thực hiện liờn kết (linking), và cú thể chạy chƣơng trỡnh một cỏch tự động.
- Trỡnh gỡ lỗi (debugger): hỗ trợ dũ tỡm lỗi.
- Ngoài ra, cũn cú thể bao gồm hệ thống quản lớ phiờn bản và cỏc cụng cụ nhằm đơn giản húa cụng việc xõy dựng giao diện ngƣời dựng đồ họa (GUI).
- Nhiều mụi trƣờng phỏt triển hợp nhất hiện đại cũn tớch hợp trỡnh duyệt lớp (class browser), trỡnh quản lớ đối tƣợng (object inspector), lƣợc đồ phõn cấp lớp (class hierarchy diagram),… để sử dụng trong việc phỏt triển phần mềm theo hƣớng đối tƣợng.
Nhƣ vậy, Visual Studiođƣợc dựng để phỏt triển console (thiết bị đầu cuối – bàn giao tiếp ngƣời mỏy) và GUI (giao diện ngƣời dựng đồ họa) cựng với cỏc trỡnh ứng dụng nhƣ Windows Forms, cỏc web sites, cũng nhƣ ứng dụng, dịch vụ web (web
55
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
applications, and web services). Chỳng đƣợc phỏt triển dựa trờn một mó ngụn ngữ gốc (native code) cũng nhƣ mó đƣợc quản lý (managed code) cho cỏc nền tảng đƣợc đƣợc hỗ trợ Microsoft Windows, Windows Mobile, .NET Framework, .NET Compact Framework và Microsoft Silverlight.
Nú hỗ trợ rất nhiều ngụn ngữ lập trỡnh, cú thể kể tờn nhƣ sau: C/C++ (Visual C++), VB.NET (Visual Basic .NET), và C# (Visual C#)… cũng nhƣ hỗ trợ cỏc ngụn ngữ khỏc nhƣ F#, Python, và Ruby; ngoài ra cũn hỗ trợ cả XML/XSLT, HTML/XHTML, JavaScript và CSS…
Visual Studio cú những chức năng cơ bản sau: soạn thảo mó (code editor); Trỡnh gỡ lỗi (debugger) và Thiết kế (Designer). Một số cụng cụ quan trọng của chức năng Designer – đõy đƣợc xem là một trong những điểm nhấn của Microsft Visual Studio.
- WinForms Designer: đõy là cụng cụ tạo giao diện đồ họa dựng WinForms. Điểm đặc biệt ở đõy là giao diện với ngƣời dựng sinh động, dễ nắm bắt. Nú bao gồm cỏc phớm bấm, thanh tỏc vụ, hay cỏc box đa dạng (textbox, list box, grid view…). Bạn cú thể di chuyển, kộo ra, nhỳng thả chỳng một cỏch dễ dàng.
- WPF Designer: WPF Designer cũn cú tờn mó là Cider, đƣợc hỗ trợ trong Visual Studio 2008. Nú tạo cỏc mó XAML cho giao diện ngƣời sử dụng (UI), mó này tớch hợp với trỡnh ứng dụng Microsoft Expression Design. - Web designer: Visual Studio cũng hỗ trợ cộng cụ thiết kế trang web, trong
đú cho phộp cỏc cụng cụ thiết kế trang web đƣợc kộo, thả, rờ, nhỳng một cỏch dễ dàng… Cụng cụ này dựng để phỏt triển trỡnh ứng dụng ASP.NET và hỗ trợ HTML, CSS and JavaScript.
- Class designer: Đõy là cụng cụ dựng để thực thi và chỉnh sửa lớp. Nú cú thể dựng mó C# và VB.NET …
- Data designer: Đõy là cụng cụ dựng để chỉnh sửa một cỏch sinh động, linh hoạt cỏc lƣợc đồ dữ liệu, bao gồm nhiều loại lƣợc đồ, liờn kết trong và ngoài.
56
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn
- Mapping designer: Đõy là cụng cụ tạo cỏc mối liờn hệ giữa sơ đồ dữ liệu và cỏc lớp để quản lý dữ liệu một cỏch hiệu quả hơn.
Ngoài ra cũn cú thể kể tờn một số cụng cụ khỏc nhƣ:
- Open Tabs Browser: Nú đƣợc dựng để liệt kể cỏc tab đó mở và chuyển đổi giữa chỳng. Bạn cũng cú thể dựng phớm núng: CTRL + TAB.
- Properties Editor: Chức năng dựng để chỉnh sửa cỏc chức năng của cỏc cửa sổ giao diện đồ họa ngƣời dựng (GUI) trong Visual Studio. Nú cú thể ỏp dụng cho cỏc lớp, cỏc mẫu định dạng hay trang web và cỏc đối tƣợng khỏc. - Object Browser: Đõy là một thƣ viện tờn miền và lớp trỡnh duyệt cho
Microsoft.NET.
- Solution Explorer: theo ngụn ngữ của Visual Studio, solution là một bộ phận của mó file và mó nguồn khỏc đƣợc dựng để xõy dựng cỏc trỡnh ứng dụng. Cụng cụ Solution Explorer đƣợc dựng để để quản lý và trỡnh duyệt cỏc file trong solution.
- Team Explorer: Đõy là cụng cụ dựng để hợp nhất cỏc mỏy tớnh trong Team Foundation Server, và RCS (revision control system – hệ thống điều khiển xột duyệt) vào trong IDE
- Data Explorer: Data Explorer dựng để quản lý cỏc dữ liệu trờn cỏc phiờn bõn của Microsoft SQL Server. Nú cho phộp tạo lập và chỉnh sửa cỏc bảng dữ liệu đƣợc tạo T-SQL commands hay dựng Data designer
- Server Explorer: Đõy là cụng cụ dựng để quản lý dữ liệu trờn mỏy tớnh đƣợc kết nối.
3.2. Phõn tớch thuật toỏn cài đặt CPU
3.2.1. Thuật toỏn FCFS
Bài toỏn: Cho n tiến trỡnh P P1, 2, ...,Pnvới thời gian thực hiện lần lƣợt là t t1, ,...,2 tn. Hóy vẽ biểu đồ Gantt và tớnh thời gian trung bỡnh phải chờ của cỏc tiến trỡnh.
57
Số húa bởi Trung tõm Học liệu http://lrc.tnu.edu.vn Input: Cho n tiến trỡnh P P1, 2, ...,Pnvới thời gian thực hiện lần lƣợt là t t1, ,...,2 tn. Output: Thời gian chờ trung bỡnh cỏc tiến trỡnh
í tƣởng : Tiến trỡnh nào đến trƣớc sẽ đƣợc phục vụ trƣớc. Thuật toỏn:
Bƣớc 1: Sắp xếp thứ tự lập lịch cỏc tiến trỡnh P P1, 2, ...,Pn.