BÁO CÁO BÀI TẬP LỚN HỆ ĐIỀU HÀNH :Tùy Chỉnh Mức Ưu Tiên Của Tiến Trình Trong Hệ Điều Hành Linux - Pdf 14

Trường Đại Học Bách Khoa Hà Nội
Khoa Điện Tử Viễn Thông
BÁO CÁO BÀI TẬP LỚN
MÔN: HỆ ĐIỀU HÀNH
Tùy Chỉnh Mức Ưu Tiên Của Tiến Trình Trong Hệ Điều Hành Linux
GIẢNG VIÊN HƯỚNG DẪN :TS. PHẠM VĂN TIẾN
SINH VIÊN: BÙI TUẤN ANH
NGUYỄN DUY LINH
LÊ THÁI HƯNG
LÊ ANH VĂN
LỚP: KSTN-ĐTVT-K52
Hà Nội, 10/2011
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Mục lục
Group 4 – Lớp ĐTVT – KSTN – K52 2
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
I. Lời mở đầu
Nghiên cứu về hệ điều hành đã và đang là đề tài lôi cuốn nhiều nhà nghiên cứu.Sự phát
triển của phần cứng tốc độ xử lí cao, khả năng đa nhiệm, đã yêu cầu hệ điều hành phải có sự phát
triển trước và tương xứng.Một trong những vấn đề cơ bản nhất của hệ điều hành đó là xử lí đa
nhiệm.Và để hiểu rõ hơn chúng em đã chọn đề tài số 3: “ Tùy chỉnh mức ưu tiên của tiến trình
trong hệ điều hành Linux “ . Cảm ơn thầy Phạm Văn Tiến đã hướng dẫn giúp chúng em hoàn
thành bài tập lớn này.
II. Lý thuyết
2.1. Khái niệm tiến trình
Linux là hệ đa xử lý, tức khả năng thực thi nhiều tác vụ cùng một lúc. Một chương trình
máy tính là một chuỗi các chỉ lệnh mà theo đó máy tính phải thực hiện. Mặt khác tài nguyên máy
tính (CPU, bộ nhớ, tệp, các thiết bị…) là hữu hạn và khi các chương trình này chạy thì các
chương trình đều có nhu cầu trên các tài nguyên đó.Để đáp ứng nhu cầu tài nguyên, cần có một
sách lược chạy trình hiệu quả để đảm bảo tính đa nhiệm, nhiều người dùng.Cách phổ biến nhất là
cấp tài nguyên cho mỗi chương trình trong một lượng thời gian nhất định, sao cho các chương

Trong các hệ phân chia thời gian, kernel sẽ phân phối CPU cho các tiến trình trong một
khoảng thời gian nhất định (time slice).Khi lượng thời gian này kết thúc, kernel sẽ lập biểu
(schedule) chọn tiến trình khác và cấp CPU cho tiến trình đó. Để lựa chọn tiến trình tiếp theo
được chạy, kernel sẽ tính toán dựa vào mức ưu tiên, kernel sẽ chuyển đổi bối cảnh từ tiến trình
đang chạy sang bối cảnh của tiến trình có mức ưu tiên cao nhất.
Trong hệ điều hành linux, mức ưu tiên của tiến trình được tính là giá trị“nice value”, có
trị số nằm trong khoảng từ -20 đến 19. Giá trị -20 là có mức ưu tiên cao nhất, giá trị 19 là có mức
ưu tiên thấp nhất.Ngoài ra, để hiển thị mức ưu tiên có giá trị không âm thì priority còn được thể
hiện nằm trong khoảng từ 0 đến 39.
Các tiến trình trong Linux có đặc thù “chen ngang” (preemptive), nên khi tiến trình đi vào
trạng thái “sẵn sang chạy”, kernel sẽ kiểm tra nếu số ưu tiên của nó lớn hơn của tiến trình đang
chạy thì tiến trình đang chạy sẽ bị ngắt (bị chen ngang), bộ định thời biểu (scheduler) sẽ chọn
Group 4 – Lớp ĐTVT – KSTN – K52 4
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
tiến trình khác trong các tiến trình như trên cho chạy. Tiến trình bị chen ngang không có nghĩa là
bị treo, mà chỉ đơn giản là tiến trình không được dùng CPU, vì tiến trình vẫn còn trong danh sách
các tiến trình chạy.
Group 4 – Lớp ĐTVT – KSTN – K52 5
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
III. Các thông số hiển thị của tiến trình cho người dùng
Linux cung cấp cho chúng ta đầy đủ các công cụ để theo dõi và tùy chỉnh các thông số hệ
thống của tiến trình. Chúng ta sẽ đi tìm hiểu qua 1 chút về các thông số này. Sử dụng lệnh top
hoặc htoptrong terminal, giúp ta hiển thị ra các thông số cơ bản nhất của tiến trình.
Hình 3.1. Màn hình hiển thị lệnh htop
Trong đó:
• PID – The process ID of the process.
• USER – The name of the user that owns the process.
• PR – The priority assigned to the process.
• NI – This is the nice value of the process.
• VIRT – The amount of virtual memory used by the process.

4.2.1. Cách thức hiển thị các tiến trình
Yêu cầu hiển thị: PID, NI, và COMMAND.
Các tiến trình được lưu trữ đầy đủ trong folder : “home/user/proc/” lưu trữ đầy đủ các
folder với số hiệu PID là tên các folder. Bên trong chứa đầy đủ thông tin về các PID.
Thông số NI có thể được lấy bằng cách sử dụng thư viện sys/resource.h như sau:
Trong hàm getpriority cung cấp cho ta giá trị NI của PID.Biến which có thể nhận 1 trong các
giá trị sau: PRIO_PROCESS, PRIO_PGRP, hoặc PRIO_USER. Biến who ở đây chính là giá trị
PID của tiến trình.
Thông số COMMAND được đọc từ file cmdline bên trong mỗi folder PID. Ở ví dụ dưới
đây, ta hiển thị chương trình firefox có PID = 1973
Group 4 – Lớp ĐTVT – KSTN – K52 8
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Hình 4.1: Cấu trúc tổ chức quản lý PID trong linux.
4.2.2. Cách thức thay đổi giá trị ưu tiên của tiến trình
Để thay đổi giá trị ưu tiên của tiến trình, sử dụng “renice”.
Cấu trúc: renice -nincrement[-g | -p | -u]ID
Lưu ý: Giá trị ưu tiên của tiến trình được thay đổi trong khoảng nào là phụ thuộc vào tài khoản
của user. Đối với user root thì tiến trình được phép thay đổi từ mức cao nhất -20 đến mức thấp
nhất 19, còn đối với user thường thì tiến trình lựa chọn chỉ được phép thay đổi giá trị NI từ mức
0 đến mức 19. Ví dụ:
Hình 4.2 Hàm renice
4.2.3. Cách thức hủy tiến trình
Để thực hiện phương thức hủy tiến trình, ngôn ngữ C cung cấp cho chúng ta thư viện và
hàm:
#include <sys/types.h>
#include <signal.h>
Int kill(pid_t pid, int sig);
Trong đó: pidlà dấu hiệu nhận biết của một tiến trình.
Group 4 – Lớp ĐTVT – KSTN – K52 9
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux

và không phù hợp với yêu cầu của bài tập lớn này.
Cuối cùng nhóm quyết định chọn công cụ Qt để phát triển.Qt là công cụ lập trình GUI miễn
phí được Nokia phát triển. Chúng ta có thể download Qt thông qua Application/Ubuntu
Software Center chọn Qt Creator
Group 4 – Lớp ĐTVT – KSTN – K52 10
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Hình 4.3 Cài đặt phần mềm Qt
Hình 4.4 Giao diện chương trình
4.3. Kết quả
4.3.1. Hiển thị các tiến trình
Chạy file biên dịch ra, ta được giao diện lựa chọn. Lựa chọn hiển thị danh sách các tiến
trình ta được kết quả như hình dưới.
Hình 4.5: Hiển thị các tiến trình
4.3.2. Thay đổi mức ưu tiên các tiến trình
Sử dụng lựa chọn thay đổi mức ưu tiên của tiến trình, ta thu được các kết quả.
Đối với tài khoản sử dụng bình thường (không phải root), ta chỉ có thể thay đổi được các
giá trị NI trong khoảng từ 0 đến 19, nếu muốn thay đổi giá trị NI xuống âm thì ta phải đăng nhập
với tài khoản root.
Group 4 – Lớp ĐTVT – KSTN – K52 11
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Hình 4.6 Tiến trình gedit trước khi thay đổi mức ưu tiên
Hình 4.7 Tiến trình gedit sau khi thai đổi mức ưu tiên
4.3.3. Hủy tiến trình
Từ danh sách tùy chọn, ta lựa chọn tùy chọn hủy tiến trình.Sau khi xác định số PID của
tiến trình muốn hủy (chọn hoặc gõ số), thì tiến trình đó sẽ bị hủy. Dưới đây là hình vẽ minh họa
sự hủy tiến trình của chương trình gedit có PID = 2587
Chương trình gedit trước khi bị hủy đang ở hình nền sau terminal.
Group 4 – Lớp ĐTVT – KSTN – K52 12
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Hình 4.8 Tiến trình gedit khi bị hủy

 Tiến trình “htop” với mức NI = 19:
Hình 4.14: htop với NI = 19 tại 7:20:00am có TIME+=3:13,92s
Group 4 – Lớp ĐTVT – KSTN – K52 16
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Hình 4.15: htop với NI=19 tại 7:35:00am có TIME+=3:20,06s
Tổng kết kiểm tra hoạt động của tiến trình htop:
Giá trị NI Thời gian chiếm dụng CPU trong 10 phút
-20 3:35,08 – 3:22,00 = 13,08 giây
0 3:13,06 – 3:01,61 = 11,45 giây
19 3:20,06 – 3:13,92 = 6,14 giây
Qua bảng trên, ta nhận thấy tiến trình với mức ưu tiên cao hơn sẽ có thời gian chiếm
dụng CPU cao hơn.
• Kiểm tra kết quả hủy tiến trình:
Đối với yêu cầu này, chúng em chưa kiểm tra được sự hủy tiến trình có mức ưu tiên
thấp khi hệ thống ở trạng thái khan hiếm bộ nhớ. Ở các thử nghiệm của chúng em, thì tiến
trình có mức ưu tiên thấp nhất (trong khi gán cho các tiến trình còn lại mức cao nhất) cũng
không bị OS kill mà chỉ rơi vào trạng thái chờ và khi đó thời gian chiếm dụng CPU của nó
giảm đi rõ rệt và tăng tiến rất chậm.
Group 4 – Lớp ĐTVT – KSTN – K52 17
Tùy chỉnh mức ưu tiên của tiến trình trong hệ điều hành Linux
Tài liệu tham khảo
1. Operating System Concepts 7
th
Edition
2. />3. />4. />5. />6. />7. />Group 4 – Lớp ĐTVT – KSTN – K52 18


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status