Sự khác biệt giữa nhóm quá trình và công việc?


7

Sự khác biệt giữa một nhóm quy trình và công việc là gì? Nếu tôi gõ pr * | lprthì đó có phải là một nhóm quy trình cũng là một công việc không? Chính xác thì sự khác biệt giữa ID nhóm quy trình và ID công việc là gì?

Chỉnh sửa: Tôi biết nó xuất hiện tương tự như sự khác biệt giữa công việc và quy trình là gì? , nhưng nó hơi khác nhau. Ngoài ra, tôi đã không hiểu khái niệm này từ chủ đề này.

Câu trả lời:


9

Một nhóm quy trình là một khái niệm hạt nhân unix. Nó không xuất hiện rất thường xuyên. Bạn có thể gửi tín hiệu đến tất cả các quy trình trong một nhóm, bằng cách gọi cuộc gọi kill hệ thống hoặc tiện ích với một đối số phủ định.

Khi một tiến trình được tạo (với fork), nó vẫn nằm trong cùng nhóm quy trình với cha mẹ của nó. Một quá trình có thể di chuyển vào một nhóm khác bằng cách gọi setpgidhoặc setpgrp. Điều này thường được thực hiện bởi shell khi nó bắt đầu một tiến trình bên ngoài, trước khi nó thực thi execveđể tải chương trình bên ngoài.

Việc sử dụng chính cho các nhóm trình là khi bạn nhấn Ctrl+C, Ctrl+Zhoặc Ctrl+\để giết hoặc đình chỉ các chương trình trong một thiết bị đầu cuối , thiết bị đầu cuối sẽ gửi một tín hiệu cho một nhóm toàn bộ quá trình, các nhóm trình foreground . Các chi tiết khá phức tạp và chủ yếu được người thực hiện shell hoặc kernel quan tâm; các chung ga Interface chương của tiêu chuẩn POSIX là một bài thuyết trình tốt (bạn cần một số nền tảng lập trình unix).

Việc làm là một khái niệm nội bộ cho vỏ. Trong các trường hợp đơn giản, mỗi công việc trong shell tương ứng với một nhóm quy trình trong kernel.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.