Hệ iều hành UNIX-Linux
Chương 4. Quản trị tiến trình
Đặng Thu Hiền
Khoa Công nghệ thông tin
Trường Đại học Công nghệ
Đại học Quốc gia Hà Nội
1
Khái niệm cơ bản
n
n
n
n
n
Tiến trình là đối tượng trong hệ thống tương ứng với một phiên thực hiện của
một chương trình
Tiến trình bao gồm ba thành phần là text, data, stack
Text là thành phần câu lệnh thực hiện, data là thành phần dữ liệu cịn stack là
thành phần thơng tin tạm thời hoạt động theo cơ chế LIFO
Các câu lệnh trong text chỉ thao tác tới vùng data, stack tương ứng của tiến trình,
khơng truy nhập được tới data và stack của các tiến trình khác, ngoại trừ các vùng
dữ liệu dùng chung
Hệ thống thực hiện theo ba mức: mức người dùng, mức nhân và mức phần cứng.
n
n
Mức người dùng (user level): gồm có chương trình người dùng và chương trình
trong các th- viện. Các chương trình này chạy (phần lệnh của chúng thực hiện)
trong trạng thái người dùng của tiến trình. chương trình người dùng thao tác với
nhân hoặc trực tiếp hoặc gián tiếp nhờ gọi thư viện nhờ các lời gọi hệ thống.
Mức nhân là mức trọng tâm nhất của hệ iều hành Linux-UNIX. Là những chương
trình của hệ iều hành thuộc hệ thống con iều khiển File, hệ thống con iều
khiển tiến trình, các lời gọi hệ thống (system calls), các chương trình iều khiển
thiết bị, Cache bộ đệm và các chương trình iều khiển phần cứng Hai thành phần
cơ bản nhất là Hệ thống iều khiển File và Hệ thống con iều khiển tiến trình
Đặng Thu Hiền - 2009
2
Phân cấp trong Linux
Đặng Thu Hiền - 2009
3
Điều khiển tiến trình
n
n
Tương ứng với mỗi tiến trình ang tồn tại trong hệ thống có một khối chứa thơng tin iều
khiển tiến trình:
n
Trạng thái của tiến trình,
n
Chủ sở hữu của tiến trình,
n
Trường liên quan đến trạng thái ngưng của tiến trình (theo lời gọi hàm sleep)
n
Địa chỉ của vùng sử dụng tương ứng với tiến trình,
n
Các thơng tin tương ứng được trình bày trong PCB.
Vùng sử dụng (U-area) chứa các thơng tin riêng, có tác dụng khi tiến trình ang thực hiện:
n
n
Chỉ số thành phần tương ứng với tiến trình trong bảng các tiến trình: địa chỉ của khối PCB
tương ứng,
n
Bộ đếm thời gian chạy mức nhân và mức người dùng,
n
Các giá trị trả về và mã lỗi (nếu có) đối với lời gọi hệ thống hiện tại,
n
Mơ tả về các file ang mở ứng với tiến trình,
n
Tham số lưu trữ dung lượng dữ liệu di chuyển trong vào - ra.
n
Thư mục hiện tại và thư mục gốc hiện tại: mơi trường của tiến trình,
n
Các giới hạn kích thước file và tiến trình,
n
Các mức cho phép thực hiện đối với tiến trình,
n
Một số thơng tin khác
Các bảng định vị địa chỉ bộ nhớ đối với mỗi tiến trình,
Đặng
Thu
Hiền
- 2009
n
Bảng
chứa
vùng bộ nhớ chung: phân hoạch bộ nhớ, đặc tính mỗi vùng theo phân hoạch:
chứa text, data hoặc vùng bộ nhớ dùng chung v.v.
4
Trạng thái tiến trình
Đặng Thu Hiền - 2009
5
Trạng thái tiến trình với người dùng
Đặng Thu Hiền - 2009
6
Các lệnh thao tác với tiến trình
n
Tổ hợp phím CTRL+z s dừng một tiến trình, khởi động lại tiến trình bằng cách gõ lệnh fg
n
Lệnh fg (foreground) tham chiếu đến các chương trình mà màn hình c ng nh- bàn phím ang
làm việc với chúng
n
Ví dụ: ang xem trang man của lệnh sort, muốn thử tùy chọn -b đồng thời vẫn muốn xem
trang man. Thay cho việc ánh q để thốt và sau ó chạy lại lệnh man, cho phép người dùng
gõ CTRL+z để tạm dừng lệnh man và gõ lệnh thử tùy chọn -b. Sau khi thử xong, hãy gõ fg
để tiếp tục xem trang man của lệnh sort
n
# man sort | more
n
SORT(1) FSF SORT(1)
n
NAME
n
sort - sort lines of text Files
n
SYNOPSIS
n
../src/sort [OPTION] ... [Files]...
n
DESCRIPTION
n
--More--
n
(CTRL+z)
n
[1]+ Stopped man sort | more
n
# ls -s | sort -b | head -2
n
# fg
man sort | more
Đặng Thu Hiền - 2009
n
7
Hiển thị các tiến trình ang chạy
n
ps [tùy-chọn]
n
-A, -e : chọn để hiển thị tất cả các tiến trình.
n
-T : chọn để hiển thị các tiến trình trên trạm cuối ang chạy.
n
-a : chọn để hiển thị tất cả các tiến trình trên một trạm cuối, bao gồm cả các tiến trình của
những người dùng khác.
n
-C : chọn hiển thị các tiến trình theo tên lệnh.
n
-G : hiển thị các tiến trình theo chỉ số nhóm người dùng.
n
-u : hiển thị các tiến trình theo tên và chỉ số của người dùng hiệu quả.
n
n
-f : hiển thị thông tin về tiến trình với các tr-ờng sau UID - chỉ số người dùng, PID - chỉ số tiến
trình, PPID - chỉ số tiến trình khởi tạo ra tiến trình, C - , STIME - thời gian khởi tạo tiến trình,
TTY - tên thiết bị đầu cuối trên ó tiến trình được chạy, TIME - thời gian để thực hiện tiến
trình, CMD - lệnh khởi tạo tiến trình
-o xâu-chọn : hiển thị các thơng tin về tiến trình theo dạng do người dùng tự chọn thơng qua
xâu-chọn các kí hiệu iều khiển hiển thị có các dạng nh- sau:
%C, %cpu % CPU được sử dụng cho tiến trình
n
%mem % bộ nhớ được sử dụng để chạy tiến trình
n
%G tên nhóm người dùng
n
%P chỉ số của tiến trình cha khởi động ra tiến trình con
n
%U định danh người dùng
n
%c lệnh tạo ra tiến trình
n
%p chỉ số của tiến trình
n
%x thời gian để chạy tiến trình
%y thiết bị đầu cuối trên ó tiến trình được thực hiện
Đặng Thu Hiềnn - 2009
n
8
Hủy tiến trình
n
n
Xác định được chỉ số của tiến trình mà chúng ta muốn hủy
Cú pháp lệnh:
n kill [tùy-chọn] <chỉ-số-của-tiến-trình>
n kill -l [tín hiệu]
Lệnh kill s gửi một tín hiệu đến tiến trình được chỉ ra
n Ngầm định là tín hiệu TERM s
được gửi.
n Ví dụ:
n # ps
n PID TTY TIME CMD
n 2240 pts/2 00:00:00 bash
n 2276 pts/2 00:00:00 man
n 2277 pts/2 00:00:00 more
n 2280 pts/2 00:00:00 sh
n 2281 pts/2 00:00:00 sh
Đặng Thu Hiền - 2009
n # kill 2277
n
9
Các tín hiệu
Đặng Thu Hiền - 2009
10
Cho máy ngừng hoạt động một thời gian
n
Cho máy nghỉ một thời gian mà khơng muốn tắt vì
ngại khởi động lại thì cần dùng lệnh sleep. Cú pháp:
n
sleep [tùy-chọn] NUMBER[SUFFIX]
n
n
n
NUMBER: số giây(s) ngừng hoạt động.
SUFFIX : có thể là giây(s) hoặc phút(m) hoặc giờ hoặc ngày(d)
Các tùy chọn:
n
n
--help : hiện thị trợ giúp và thốt
--version : hiển thị thơng tin về phiên bản và thoát
Đặng Thu Hiền - 2009
11
Xem cây tiến trình
n
pstree [tùy-chọn] [pid | người-dùng]
n
Hiển thị các tiến trình ang chạy d-ới dạng cây tiến trình
n
Gốc của cây tiến trình thường là init
n
Nếu đưa ra tên của một người dùng thì cây của các tiến trình do
người dùng ó sở hữu s được đưa ra
Đặng Thu Hiền - 2009
12
Thiết đặt lại độ ưu tiên của tiến
trình
n
nice [tùy-chọn] [lệnh [tham-số ]... ]
n
Chạy một chương trình (lệnh) theo độ ưu tiên ã sắp xếp
n
Nếu khơng có lệnh, mức độ ưu tiên hiện tại s hiển thị. Độ ưu tiên được
sắp xếp từ -20 (mức ưu tiên cao nhất) đến 19 (mức ưu tiên thấp nhất).
n
n
n
n
-ADJUST : t ng độ ưu tiên theo ADJUST đầu tiên
--help : hiển thị trang trợ giúp và thoát
Để thay đổi độ ưu tiên của một tiến trình ang chạy dùng lệnh
renice <độ-ưu-tiên> [tùy-chọn]
n -g : thay đổi quyền ưu tiên theo nhóm người dùng
n -p : thay đổi quyền ưu tiên theo chỉ số của tiến trình
n -u : thay đổi quyền ưu tiên theo tên người dùng
Ví dụ:
n
n
# renice +1 987 -u daemon root -p 32
lệnh trên s thay đổi mức độ ưu tiên của tiến trình có chỉ số là 987 và
32, và tất cả các tiến trình do người dùng daemon và root sở hữu.
Đặng Thu Hiền - 2009
13