Đồ án Xây dựng chương trình quản lý CPU và RAM của Windows

MỤC LỤC

CHƯƠNG 1: MỞ ĐẦU . 4

1.1. Giới thiệu . . . 4

1.1.1. Quản lý bộ nhớ . . . 5

1.1.2. Quản lý tiến trình . . . 5

1.2. Đề tài và muc tiêu . . . 5

1.2.1. Đề tài . . . 5

1.2.2. Mục tiêu. . . 5

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT. 6

2.1. Tổng quan về tiến trình . . . 6

2.1.1. Tiến trình và các lo ại tiến trình . . 7

2.1.1.1. Tiến trình (process): . 7

2.1.1.2. Các loại tiến trình: . 7

2.1.2. Mô hình tiến trình: . . . 10

2.1.3. Tiểu trình và tiến trình . . 13

2.1.3.1. Tiểu trình: . 14

2.1.3.2. Đa tiểu trình trong đơn tiến trình: . 14

2.1.4. Các trạng thái tiến trình . . 15

2.1.4.1. Tiến trình hai trạng thái: . 15

2.1.4.2. Tiến trình ba trạng thái: . 16

2.1.4.3. Tiến trình 4 trạng thái: . 18

2.1.4.4. Tiến trình 5 trạng thái: . 19

2.1.5. Cấu trúc dữ liệu của khối quản lý tiến trình . . 21

2.1.5.1. Định vị của tiến trình (process location): . 21

2.1.5.2. Các thuộc tính của tiến trình: . 22

2.1.6. Các thao tác điều khiển tiến trình . . 23

2.1.7. So sánh Quản lý tiến trình của Windows với Linux . 24

2.1.7.1. Mức ưu tiên trong lập lịch (Scheduling) . 24

2.1.7.2. Thông tin chi tiết về bộ lập lịch: . 25

2.1.7.3. Lập lịch thời gian thực: . 26

2.1.7.4. Lập lịch lát cắt thời gian . 26

2.1.7.5. Kernel Retrancy . 27

2.1.7.6. Kernel Preemptibility . 27

2.1.7.7. Bộ lập lịch (Scheduling) . 28

2.1.7.8. Đồng bộ hóa Light- Weight. 28

2.2. So sánh Hệ thống quản lý bộ nhớ Windows với Linux . 28

2.2.1. Bộ nhớ ảo (Virtual Memory) . . 29

2.2.2. Phân trang (Paging) . . . 29

2.2.3. So sánh giữa Windows với Linux . . 30

2.2.3.1. Các điểm tương đồng giữa hệ thống Quản lý bộ nhớ của Windows và

Linux . 30

2.2.3.2. Cấu trúc dữ liệu để mô tả không gian tiến trình . 30

2.2.3.3. Sự Phân phối không gian địa chỉ tiến trình. 31

2.2.3.4. Thay thế trang (Page Replacement): . 31

2.2.3.5. Kết luận về windows và Linux . 34

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH .34

3.1. Phân tích chức năng: . . . 34

3.1.1. Lấy thông tin về bộ nhớ RAM, CPU: . . 35

3.1.1.1. Thông tin về hệ thống: Số Process, Số Handle, Số Thread, Commit,

CPU Usage . 35

3.1.1.2. Thông tin về RAM: % RAM Free, % RAM Used, Total RAM . 35

3.1.2. Hiển thị thông tin có được . . 35

3.1.2.1. Biểu đồ cột CPU Usage. . 35

3.1.2.2. Biểu đồ đường CPU Usage, RAM used. . 35

3.1.2.3. Biều đồ Chart 2D Ram used, free. 35

3.1.3. Cách tính CPU Usage: . . 35

4 Bộ môn mạng và truyền thông

3.1.3.1. Dùng hàmGetSystemTimes(). . 35

3.2. Xây dựng chức năng . . . 36

3.2.1. Lấy Thông tin về RAM . . 36

3.2.1.1. GlobalMemoryStatusEx(MEMORYSTATUSEX &); . 36

3.2.2. Lấy thông tin về hệ thống . . 36

3.2.2.1. GetPerformanceInfo(PERFORMANCEINFO&); . 36

3.2.2.2. GetSystemTimes(); . 36

3.2.3. Vẽ biểu đồ . . . 36

3.2.3.1. Affine.h để trợ giúp vẽ biểu đồ . 36

3.2.3.2. Draw.h vẽ các loại biểu đồ . 36

CHƯƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ .36

4.1. Môi trường triển khai . . . 36

4.2. Kết quả các chức năng của chương trình. . 36

4.3. Đánh giá và nhận xét . . . 37

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .38

5.1. Kết luận . . . 38

5.2. Hướng phát triển . . . 38

pdf38 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 3247 | Lượt tải: 1download
Tóm tắt nội dung Đồ án Xây dựng chương trình quản lý CPU và RAM của Windows, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
M của Windows 33 
Hoàng An 
1. Modified List: Các trang bị loại khỏi Working Set, vẫn còn 
liên quan đến tiến trình đã gọi nó. 
2. Standby List: Các trang bị loại ra khỏi Modified List, cũng 
còn liên quan đến tiến trình gọi nó, nhưng có 1 bản sao trên 
vùng Paging File ở bộ nhớ ngoài, vì vậy có thể xóa bản gốc trên 
RAM nếu cần. 
3. Free List: Các trang bị loại khỏi Standby List vì không còn 
gắn với tiến trình nào nữa. 
4. Zeroed List: Các trang chuyển từ Free List và được ghi lại hoàn 
toàn bằng mã 0 
Quá trình chuyển đổi giữa các danh sách này được xử lý bằng Working 
Set Manager và một số các tiến trình ngầm khác như tiến trình 
swapper,... 
 Linux 
Linux 2,2, Máy ảo Linux đã tập trung vào đơn giản và mức thấp. Do đó 
nó khá nguyên thủy và có nhiều vấn đề, đặc biệt là dưới tải nặng. Nó bị 
ảnh hưởng bởi hệ thống V. Tuy nhiên Riel [20] đã làm việc rất nhiều 
trên Máy ảo Linux và cải thiện rất nhiều cho việc phát hành Linux (thảo 
luận của ông với Linux sử dụng một hệ thống nhu cầu phân trang không 
có phân trang trước. Cho đến 2.2 phiên bản hạt nhân, Linux sử dụng 
thuật toán NRU để thay thế trang, nhưng do các thiếu sót của thuật toán, 
họ đã thay đổi nó và thực hiện tương tự LRU được sử dụng trong bản 
2,4. 
Sự lão hóa để có hiệu lực LRU là mang lại bằng cách tăng tuổi (một 
truy cập liên kết với một trang) được tham chiếu trong quá trình quét, và 
giảm theo cấp số nhân (chia 2) khi không tìm thấy tham chiếu. Phương 
pháp này xấp xỉ LRU khá tốt. Linux 2.4 phân chia các trang ảo thành 4 
danh sách 
1. Active list 
2. Inactive-dirty list 
3. Inactive-clean list 
4. Free list 
Danh sách 3 chứa các trang được chọn cho việc thu hồi. Thông thường, 
các trang hoạt động trên danh sách 1. Tuy nhiên, theo thời gian, nếu một 
số trang không hoạt động, thì đó độ tuổi (age) của chúng giảm dần và 
xuống tới 0, và lúc đó nó là một ứng cử viên cho việc thu hồi. Trang này 
được chuyển từ danh sách 1 vào danh sách 2. Đối với Linux 2.4, kích 
thước danh sách đã không hoạt động được thay đổi. Bây giờ hệ thống sẽ 
quyết định có bao nhiêu trang không hoạt động nên giữ trong bộ nhớ cho 
các trường hợp cụ thế. Sự thống nhất của bộ đệm cache và bộ nhớ cache 
trang cache đã được hoàn thành trong 2,4. Một tối ưu hóa hiện diện trong 
nhân Linux là nhận ra ngay liên tục I / O, nghĩa là giảm các ưu tiên của 
trang "đằng sau" và vì vậy trang đó trở thành một ứng cử viên thu hồi lại 
sớm hơn. Trang ngầm trong Linux là “kswapd” được kích hoạt định kì 
sẽ giảm dần biến đếm tuổi (age) của trang, và giải phóng bộ nhớ nếu 
không có hiệu lực. 
 Và flusing được thực hiện bởi “bdflush” daemon, đánh thức định kỳ để 
điền các trang bẩn vào đĩa. Flusing lấy ra từ danh sách không hoạt động, 
34 Bộ môn mạng và truyền thông 
Hoàng An 
không xảy ra trong 1 kiểu nào đó, nhưng hệ thống chờ đợi đúng thời 
điểm, khi nhóm có thể được sử dụng, và đĩa đọc-viết có thể được giảm 
thiểu, do đó tối ưu hóa flushing. 
2.2.3.5. Kết luận về windows và Linux 
Hai hệ thống có nguồn gốc từ 2 nền tảng khác nhau (Windows là sản phẩm 
thương mại và Linux là sản phẩm của các hacker). Cả hai hệ điều hành khá 
hiện đại và được sử dụng rộng rãi. Chúng có rất nhiều điểm chung, và có 
một vài sự khác biệt, về mặt công nghệ. Windows, được phát triển với động 
lực đồng tiền mạnh mẽ, đã trải qua nhiều nỗ lực trong thiết kế và phát triển 
của nó. Và các thiết kế được thực hiện ở các cấp độ khác nhau có xu hướng 
cho hiệu suất tốt hơn. Trong trường hợp của Linux, được tạo ra thường ưa 
thích sự đơn giản đối với hiệu suất. Vì vậy, Windows đã phát triển thành mã 
tinh vi phức tạp, trong khi đó UNIX đơn giản và thanh lịch nhưng vẫn hiện 
đại. Kết quả trong số đó là Windows có nhiều tính năng hơn nhưng khó để 
duy trì và cải thiện từ cách nhìn của các nhà phát triển, trong khi Unix có ít 
tính năng hơn nhưng dễ dàng hơn để duy trì và phát triển. Tuy nhiên, đối với 
người dùng cuối, Windows có thể cho hiệu suất tốt hơn khi chỉ thỉnh thoảng 
bị lỗi. Tuy nhiên nhiều nghiên cứu và phát triển được yêu cầu cho hệ thống 
mã nguồn mở, và có phạm vi cho nó. Tài liệu trên hệ điều hành mã nguồn 
mở như FreeBSD và Linux là thiếu, đặc biệt là cập nhật trên phạm vi rộng. 
Có vẻ như ngay sau khi một số tài liệu được hoàn thành, sự phát triển nhanh 
chóng của các hệ thống này hoạt động khiến chúng ngày càng bị lỗi thời. Tỷ 
lệ phát triển của các hệ điều hành mã nguồn mở được duy trì bởi hàng trăm 
và hàng ngàn hacker trên khắp thế giới. Hệ thống mã nguồn mở được mong 
đợi trong tương lai hoạt động trở nên ngang hoặc tốt hơn so với các dịch vụ 
thương mại. 
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG 
TRÌNH 
3.1. Phân tích chức năng: 
Xây dựng chương trình quản lý CPU và bộ nhớ RAM của Windows 35 
Hoàng An 
Với yêu cầu xây dựng chương trình quản lý Ram và CPU, chúng em xây 
dựng chương trình mô phỏng theo Tab Peformance của TaskManager của 
Windows gồm các chức năng sau: 
3.1.1. Lấy thông tin về bộ nhớ RAM, CPU: 
3.1.1.1. Thông tin về hệ thống: Số Process, Số Handle, Số 
Thread, Commit, CPU Usage 
3.1.1.2. Thông tin về RAM: % RAM Free, % RAM Used, Total 
RAM 
3.1.2. Hiển thị thông tin có được 
3.1.2.1. Biểu đồ cột CPU Usage. 
Mô phỏng tương tự như TaskManager. 
3.1.2.2. Biểu đồ đường CPU Usage, RAM used. 
Mô phỏng tương tự như TaskManager. 
3.1.2.3. Biều đồ Chart 2D Ram used, free. 
Thêm biểu đồ hình quạt 3D. 
3.1.3. Cách tính CPU Usage: 
Cách lấy CPU Usage: 
 Đã từ lâu rất nhiều người muốn lấy thông tin về CPU Usage, tất cả các 
giải pháp được đưa ra đều không phù hợp vì nó chỉ tương thích với một 
số phiên bản hệ điều hành. ( nói riêng trên C++). 
 Vậy giải pháp đưa ra ở đây là gì? 
GetSystemTimes() hàm hữu dụng để làm điều này, phù hợp với các 
phiên bản hệ điều hành bây giờ và sau này 
3.1.3.1. Dùng hàmGetSystemTimes(). 
Có 3 đối số truyền vào và hàm trả về nội dung trên chính 3 tham số đó: 
 idleTime: Thời gian nghỉ của hệ thống. 
 kerTime: Thời gian ánh xạ nhân. 
 user: Thời gian hệ thống làm việc. 
Lời gọi hàm: GetSystemTimes(&idleTime,&kerTime,&userTime) 
 Ta làm gì với 3 thông tin có được này? 
usr = userTime - last_userTime; 
ker = kerTime - last_kernelTime; 
idle = idleTime - last_idleTime; 
 Ta có được Kết quả sau : 
Thời gian làm việc của hệ thống: sys = ker + usr. 
Thời gian nghỉ của hệ thống: res=idle. 
 Ta sẽ sử dụng phép tính nhỏ sau để tính được CPU Usage: 
cpuUsage = int( (sys - res) *100 / sys ); 
36 Bộ môn mạng và truyền thông 
Hoàng An 
3.2. Xây dựng chức năng 
3.2.1. Lấy Thông tin về RAM 
Xây dựng header MemoryManager có chức năng lấy thông tin về RAM, 
trong lớp có sử dụng các hàm sau: 
3.2.1.1. GlobalMemoryStatusEx(MEMORYSTATUSEX &); 
 MEMORYSTATUSEX là 1 cấu trúc do window định nghĩa 
 Hàm này có chức năng lấy thông tin RAM 
3.2.2. Lấy thông tin về hệ thống 
Xây dựng header CPUManager có chức năng lấy thông tin về CPU, tính 
CPU usage, trong lớp có sử dụng các hàm sau 
3.2.2.1. GetPerformanceInfo(PERFORMANCEINFO&); 
PERFORMANCEINFO là cấu trúc do window định nghĩa 
Hàm này có chức năng lấy thông tin số process,handles,Threads 
3.2.2.2. GetSystemTimes(); 
Hàm này lấy thông tin của CPU: Thời gian chạy, thời gian nghỉ, thời gian 
ánh xạ 
3.2.3. Vẽ biểu đồ 
Xây dựng thêm các header phụ sau: 
3.2.3.1. Affine.h để trợ giúp vẽ biểu đồ 
3.2.3.2. Draw.h vẽ các loại biểu đồ 
CHƯƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 
4.1. Môi trường triển khai 
Để đảm bảo sự tương tác tốt nhất với hệ thống window nên chúng em dùng 
công cụ hỗ trợ là Visual C++ để xây dựng chương trình 
4.2. Kết quả các chức năng của chương trình 
Xây dựng chương trình quản lý CPU và bộ nhớ RAM của Windows 37 
Hoàng An 
Sau đây là kết quả Demo chạy chương trình: 
4.3. Đánh giá và nhận xét 
Module quản lý bộnhớ phải tận dụng các ưu/khuyết điểm của các loại bộ 
nhớ máy tính để cung cấp cho người lập trình không gian làm việc thoả 
mãn càng nhiều yêu cầu càng tốt. 
Bộ nhớ chính là một trong những tài nguyên quan trọng của hệ thống, đây là 
thiết bị lưu trữ duy nhất mà CPU có thể truy xuất trực tiếp được. 
Các chương trình của người sử dụng muốn thực hiện được bởi CPU thì 
trước hết nó phải được hệ điều hành nạp vào bộ nhớ chính, chuyển đổi các 
địa chỉ sử dụng trong chương trình thành những địa chỉ mà CPU có thể truy 
xuất được. 
Khi chương trình, tiến trình có yêu cầu được nạp vào bộ nhớ thì hệ điều 
hành phải cấp phát không gian nhớ cho nó. Khi chương trình, tiến trình kết 
thúc thì hệ điều hành phải thu hồi lại không gian nhớ đã cấp phát cho 
chương trình, tiến trình trước đó. 
Trong các hệ thống đa chương hay đa tiến trình, trong bộ nhớ tồn tại nhiều 
chương trình/ nhiều tiến trình, hệ điều hành phải thực hiện nhiệm vụ bảo 
vệ các vùng nhớ đã cấp phát cho các chương trình/ tiến trình, tránh sự vi 
phạm trên các vùng nhớ của nhau. 
Tóm lại, bộ phận quản lý bộ nhớ chính của hệ điều hành thực hiện những 
nhiệm vụ sau: 
 Cấp phát, thu hồi vùng nhớ. 
 Ghi nhận trạng thái bộ nhớ chính. 
 Bảo vệ bộ nhớ. 
 Quyết định tiến trình nào được nạp vào bộ nhớ. 
38 Bộ môn mạng và truyền thông 
Hoàng An 
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 
5.1. Kết luận 
Những kết quả đạt được: 
 Xây dựng được chương trình mô phỏng theo tab Perfomance của 
TaskManager 
 Tìm hiều được MFC Application 
 Tìm hiều được về thư viện liên kết động DLL 
 Biết được cách quản lý bộ nhớ 
 Hiểu hơn về cách quản lý tiến trình 
Những mặt hạn chế: 
 Chương trình chưa xem được các Tiến trình đang chạy trên hệ thống 
5.2. Hướng phát triển 
Xây dưng thêm chức năng xem và theo dõi các tiến trình đang chạy 
PHỤ LỤC 
Code: 
Tài liệu tham khảo 
[1] Trần Hồ Thủy Tiên, Giáo trình nguyên lý hệ điều hành. Đại học Bách 
Khoa đà nẵng 2009 
[2] E. G. Coffman and P. J. Denning. Operating Systems Theory. Prentice 
Hall, 1973. 
[3] Mark Russinovich’s 1999 article, “Linux and the Enterprise”: 
[4] Nguyễn Kim Tuấn, Giáo trình Nguyên Lý Hệ Điều Hành. Đại học khoa 
học Huế 

File đính kèm:

  • pdfĐồ án Xây dựng chương trình quản lý CPU và RAM của Windows.pdf