2014-05-16 15 views
9

Trình lập lịch biểu Linux có thích chạy tiến trình con sau fork() với tiến trình của cha không?Trình lập lịch biểu Linux có thích chạy tiến trình con sau fork() không?

Thông thường, quy trình chia sẽ thực hiện exec của một số loại như vậy, tốt hơn là để cho quá trình con chạy trước khi quá trình cha (để ngăn sao chép khi ghi).

Tôi giả định rằng đứa trẻ sẽ thực hiện exec là hoạt động đầu tiên sau khi nó được tạo.

Giả sử của tôi (rằng trình lên lịch sẽ thích quy trình con) chính xác. Nếu không, tại sao? Nếu có, có thêm lý do để chạy con đầu tiên không?

Trả lời

6

Để báo The Linux Programming Interface (pg. 525) cho một câu trả lời chung:

Sau một fork(), nó là không xác định mà quá trình - phụ huynh hoặc đứa trẻ - tiếp theo có quyền truy cập vào CPU. (Trên một hệ thống đa xử, họ có thể cả hai cùng một lúc được tiếp cận với một CPU.)

Cuốn sách tiếp tục về sự khác biệt trong các phiên bản hạt nhân và cũng đề cập đến CFS/Linux 2.6.32:

[ ...] kể từ Linux 2.6.32, nó là một lần nữa cha mẹ đó là, theo mặc định, chạy đầu tiên sau khi một fork(). Mặc định này có thể được thay đổi bằng cách gán giá trị không đồng bộ cho tệp /proc/sys/kernel/sched_child_runs_first dành riêng cho Linux.

This behaviour is still present with CFS mặc dù có some concerns cho tương lai của tính năng này. Nhìn vào việc thực hiện CFS, nó seems to schedule cha mẹ trước đứa trẻ.

Cách để thực hiện cho bạn là đặt /proc/sys/kernel/sched_child_runs_first thành giá trị khác 0.

Chỉnh sửa:This answer phân tích hành vi mặc định và so sánh nó với sched_child_runs_first.

3

Đối với trường hợp trẻ gọi exec vào lần đầu tiên, bạn có thể sử dụng vfork thay vì ngã ba. vfork tạm ngưng phụ huynh cho đến khi trẻ gọi _exit hoặc exec *. Tuy nhiên, một khi nó gọi exec đứa trẻ sẽ bị đình chỉ nếu mã đã được nạp từ đĩa. Trong trường hợp này, phụ huynh có cơ hội tốt để tiếp tục trước khi đứa trẻ làm.

+0

Ok, cảm ơn, nhưng trường hợp thông thường thì sao. Người lập kế hoạch có thích con với cha không? – Farseer

+3

Với vfork đọc của tôi là đứa trẻ được ưa thích, với nĩa, nó không được chỉ định. –

Các vấn đề liên quan