Tải bản đầy đủ (.pdf) (91 trang)

Lý thuyết lập lịch và ứng dụng giải pháp quyết bài toán lập lịch cho CPU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 91 trang )

1

S
ố hóa bởi Trung tâm Học liệu


ĐẠ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






2


S
ố hóa bởi Trung tâm Học liệu



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
3

S
ố hóa bởi Trung tâm Học liệu



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.
4

S
húa bi Trung tõm Hc liu


MC LC
LI CM N 1
LI CAM OAN 3
MC LC 4
LI NểI U 6
CHNG 1 8
MT S KIN THC C BN V THUT TON V PHC TP THUT
TON 8
1.1. Khỏi nim c bn 8
1.1.1. Thut toỏn 8
1.1.2. Khái niệm về độ phức tạp thuật toán. 8
1.1.3. Cỏch tớnh phc tp 12
1.2. Vn phõn lp cỏc bi toỏn 13
1.2.1. Tng quan v s phõn lp cỏc bi toỏn 13
1.2.2. Khỏi nim dn v c 16
1.3. Lp cỏc bi toỏn P v NP 16

1.3.1. Mt s khỏi nim 16
1.3.2. Mt s bi toỏn ó c chng minh l NP khú, NP - y 21
1.4. Thut toỏn xp x 23
1.4.1. Cỏc khỏi nim 23
1.4.2. Thut toỏn

- xp x tuyt i 24
1.4.3. Thut toỏn

- xp x 26
CHNG 2 28
Lí THUYT LP LCH 28
2.1. Mụ hỡnh bi toỏn lp lch 28
2.2. Cỏc thut toỏn lp lch kinh in 32
2.3. Mt s thut toỏn lp lch cho CPU 34
2.3.1. Mụ hỡnh bi toỏn lp lch cho CPU 34
2.3.2. Mt s thut toỏn lp lch cho CPU 35
5

S
ố hóa bởi Trung tâm Học liệu


2.3.2.1. Lập lịch FCFS 35
2.3.2.2. Lập lịch SJF 37
2.3.2.3. Lập lịch theo độ ƣu tiên 40
2.3.2.4. Lập lịch RR 43
2.3.2.5. Lập lịch với hàng đợi nhiều cấp 46
2.3.2.6. Lập lịch hàng đợi phản hồi đa cấp 48
CHƢƠNG 3 51

KẾT QUẢ CÀI ĐẶT MỘT SỐ THUẬT TOÁN LẬP LỊCH CPU 51
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. 51
3.1.1.Giới thiệu về ngôn ngữ lập trình C# 51
3.1.2. Giới thiệu về công cụ lập trình Visual Studio 54
3.2. Phân tích thuật toán cài đặt CPU 56
3.2.1. Thuật toán FCFS 56
3.2.2 Thuật toán SJF 57
3.2.3. Thuật toán RR 59
3.2.4. Sơ đồ thuật toán CPU 60
3.3. Kết quả cài đặt thuật toán CPU 60
3.3.1. Các thành phần của chƣơng trình 60
3.3.2. Cấu trúc chi tiết 61
3.3.3. Sử dụng chƣơng trình. 63
KẾT LUẬN 66
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 68
I. Thuật toán cài đặt 68
II. Các hàm và phƣơng thức cơ bản của chƣơng trình. 77
6

S
ố hóa bởi Trung tâm Học liệu


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.
7

S
ố hóa bởi Trung tâm Học liệu


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.















8

S
húa bi Trung tõm Hc liu


CHNG 1
MT S KIN THC C BN V THUT TON
V PHC TP THUT TON


Trong chng 1, lun vn s trỡnh by mt s kin thc c bn v thut toỏn v
phc tp thut toỏn, vn phõn lp cỏc bi toỏn da trờn phc tp thut toỏn.
Cỏc kin thc ny ó c tham kho trong cỏc ti liu [3], [4]. õy l cỏc kin thc
quan trng trỡnh by tip cỏc ni dung trong chng 2 v chng 3 ca lun vn.
1.1. Khỏi nim c bn
1.1.1. Thut toỏn
Thut toỏn gii mt bi toỏn l mt dóy hu hn cỏc thao tỏc c sp xp
theo mt trỡnh t xỏc nh sao cho sau khi thc hin dóy thao tỏc ú, t d liu u vo
(Input) ca bi toỏn, ta nhn c kt qu (Output) cn tỡm.
Ta ó bit 2 mụ hỡnh tớnh toỏn l mỏy Turing v mỏy x lý thut toỏn vit bng
ngụn ng ta ALGOL. ng vi hai mụ hỡnh tớnh toỏn ny cú 2 cỏch biu din thut
toỏn:
+ Thut toỏn c biu din bng ngụn ng mỏy Turing.
+ Thut toỏn c biu din bng ngụn ng ta ALGOL.
1.1.2. Khái niệm về độ phức tạp thuật toán.
a. Chi phớ phi tr cho mt quỏ trỡnh tớnh toỏn
Trong quỏ trỡnh x lý thut toỏn, ngi ta thng quan tõm ti chi phớ cho thi
gian tớnh toỏn v chi phớ cho khụng gian cha d liu tớnh toỏn (b nh).
- Chi phớ thi gian chớnh l tng thi gian cn thit thc hin xong mt quỏ
trỡnh tớnh toỏn.
+ Vi mỏy Turing: Chi phớ thi gian l s bc chuyn hỡnh trng t hỡnh trng
u
0
q
n hỡnh trng kt thỳc
n
q
.
9


S
ố hóa bởi Trung tâm Học liệu


+ 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
+
()
A
te
là giá phải trả về thời gian tính toán
+
()
A
le
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)=
()
A
te
+
()
A
le


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à:

( ) max{ ( ) || | | }
AA
L n l 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à :

( ) max{ ( ) || | | }
AA
T n t 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,
00
: ( ) . ( ),
A
N T n C f n n N£ " ³
tức là
()
A
Tn

có tốc độ tăng là O(f(n))
10

S
ố hóa bởi Trung tâm Học liệu



11

S
ố hóa bởi Trung tâm Học liệu


Độ 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à
0
( ) . ( ),
A
T n C P n n N£ " ³
.
Thuật toán đa thức
Thuật toán đƣợc gọi là đa thức nếu độ phức tạp về thời gian trong trƣờng hợp
xấu nhất của nó là đa thức.
Việc đánh giá đúng độ phức tạp của bài toán là một vấn đề hết sức phức tạp. Vì
vậy ngƣời ta thƣờng quan tâm đến việc đánh giá độ phức tạp thời gian trong trƣờng
hợp xấu nhất của bài toán.
Một số quy ước kí hiệu về độ phức tạp thuật toán
Kí hiệu
Độ phức tạp

Ghi chú
(1)O

Độ phức tạp hằng số

(log )On

Độ phức tạp logarit

()On

Độ phức tạp n

( log )O n n

Độ phức tạp nlogn

()
k
On

Độ phức tạp đa thức

(2 )
n
O

Độ phức tạp hàm mũ

( !)On


Độ phức tạp giai thừa

×