Quản lý tiến trình và tác vụ
6.2.1 Khái niệm tác vụ
Các tiến trình có thể được gọi bằng một tiến trình khác. Trường hợp được NSD kích hoạt trực tiếp, tiến trình này chính là console (ttyX). Trong trường hợp này, tiến trình được gọi là một công việc-tác vụ của NSD. Mỗi tác vụ đều có một đầu vào chuẩn và đầu ra chuẩn để nhận đầu vào và hiển thị đầu ra. Mặc định đầu vào và đầu ra chuẩn này là consoleKhi tác vụ được khởi tạo từ console, luôn luôn chỉ có 1 tiến trình được sở hữu console. Tiến trình này có thể là chính console hoặc một trong các tác vụ được khởi tạo từ console. Tác vụ sở hữu console được gọi là thực hiện ở chế độ foreground (bề mặt), các tác vụ khác thực hiện ở chế độ nền (background).
Quá trình chạy ở chế độ hiện sẽ tiến hành theo những bước như sau:
• Thực hiện quá trình fork nhân bản tiến trình cha (trong trường hợp thực thi các lệnh, đó sẽ là tiến trình shell)
• Thực hiện quá trình wait, đưa tiến trình cha vào trạng thái ngủ (sleep).
• Thực hiện quá trình exec, thực thi tiến trình con.
• Sau khi tiến trình con thực thi xong, một tín hiệu đánh thức sẽ được gửi đến tiến trình cha.
• Do quá trình chạy như trên => trong quá trình thực hiện tiến trình con, người sử dụng không thể tương tác với tiến trình cha.
• Quá trình chạy ở chế độ ngầm cho phép thực thi tiến trình cha và tiến trình con một cách độc lập.
Hình 6.2.3: Các trạng thái và các thao tác trên tác vụ 6.2.2 Các thao tác trên tác vụ Ví dụ: $ emacs & [1] 756 $ stop 756 # or $ stop %1 $ bg 756 # or $ bg %1 $ kill 756 # or $ kill %1 6.3 Cơ chế đường ống