9
6
Sơ đồ chuyển trạng thái quá trình
Khi quá trình được phát sinh nó ở trạng thái (8), tùy thuộc vào tình trạng bộ nhớ quá
trình được phân phối bộ nhớ trong (3) hay bộ nhớ ngoài (5). Trạng thái (3) thể hiện quá
trình đã sẵn sáng thực hiện, các thành phần của nó đã ở bộ nhớ trong chờ đợi CPU để thực
hiện. Việc thực hiện tiếp theo tùy thuộc vào trạng thái trước đó của nó. Nếu lần đầu phát
sinh, nó cần đi tới thực hiện mức nhân để hoàn thiện công việc lời gọi fork sẽ từ trạng thái
(3) sang trạng thái (1), trong trường hợp khác, từ trạng thái (3) nó đi tới trạng thái chờ dợi
CPU ở mức người dùng (7).
Trong trạng thái thực hiện ở mức người dùng (1), quá trình đi tới trạng thái (2) khi gặp
lời gọi hệ thống hoặc hiện tượng ngắt xảy ra. Từ trạng thái (1) tới trạng thái (7) khi hết
lượng tử thời gian.
Trạng thái (4) là trạng thái chờ đợi trong bộ nhớ còn trạng thái (6) thể hiện việc chờ đợi
trong bộ nhớ ngoài.
Cung chuyển từ trạng thái (2) vào ngay trạng thái (2) xảy ra khi ở quá trình ở trạng thái
thực hiện mức nhân, nhân hệ thống gọi các hàm xử lý ngắt tương ứng.
4.1.6. Sự ngưng hoạt động và hoạt động trở lại của quá trình
Một quá trình trong trạng thái thực hiện mức nhân có khả năng chuyển sang trạng thái
ngưng
theo lời gọi hàm sleep. Trạng thái ngưng xảy ra trong một số tình huống chờ đợi một
sự kiện: hoàn thành việc vào-ra, quá trình khác thực hiện lời gọi exit v.v.
Sau khi sự kiện xảy ra, quá trình từ trạng thái ngưng chuyển sang trạng thái sẵn sàng để
có thể được cấp phát CPU chạy.
4.1.7. Sơ bộ về lệnh đối với quá trình
Khi mở một trang
man, liệt kê các file với lệnh ls, chạy trình soạn thảo vi hay chạy bất
kỳ một lệnh nào trong Linux thì điều đó có nghĩa là đang khởi tạo một hoặc nhiều quá
trình. Trong Linux, bất cứ chương trình nào đang chạy đều được coi là một quá trình. Có
thể có nhiều quá trình cùng chạy một lúc. Ví dụ dòng lệnh
ls -l | sort | more sẽ khởi tạo
ba quá trình:
ls, sort và more.
Quá trình có thể trải qua nhiều trạng thái khác nhau và tại một thời điểm một quá trình
rơi vào một trong các trạng thái đó. Bảng dưới đây giới thiệu các trạng thái cơ bản của quá
trình trong Linux.
Ký hiệu
Ý nghĩa
D
R
S
T
Z
(
uninterruptible sleep) ở trạng thái này quá trình bị treo và không thể
chạy lại nó bằng một tín hiệu.
(
runnable) trạng thái sẵn sàng thực hiện, tức là quá trình có thể thực
hiện được nhưng chờ đến lượt thực hiện vì một quá trình khác đang có
CPU.
(
sleeping) trạng thái tạm dừng, tức là quá trình tạm dừng không hoạt
động (20 giây hoặc ít hơn)
(
traced or stopped) trạng thái dừng, quá trình có thể bị treo bởi một
quá trình ngoài