Tìm hiểu về cách các quy trình Unix hoạt động và nhận thấy rằng quy trình con kế thừa hầu hết các thuộc tính (bao gồm mô tả tệp) từ quy trình cha. Tôi cũng vừa mới học về thực hiện và cách nó thay thế các thuộc tính tiến trình con bằng các thuộc tính hoàn toàn mới (không gian bộ nhớ mới, v.v.), nhưng vẫn giữ ID tiến trình ban đầu.
Sau đó tôi biết về môi trường hộp cát trong Node.js , trong đó nó cung cấp cho bạn một bảng cơ bản trống và bạn thêm các biến và "tính năng" vào bối cảnh của quy trình con.
Điều tôi băn khoăn là, các loại cấu hình khác nhau dành cho các thuộc tính mà tiến trình con nhận được là gì và tại sao tiến trình con trong Unix lại "mặc định" để kế thừa tất cả các thuộc tính cha. Tự hỏi tại sao nó sẽ không có không gian bộ nhớ riêng và không có gì.
Cũng tự hỏi nếu có "cấu hình thuộc tính quy trình con" thay thế cho 2 trường hợp này (kế thừa tất cả các thuộc tính cha hoặc không kế thừa). Có thể nó muốn thừa hưởng một nửa không gian địa chỉ cha hoặc sử dụng một số không gian địa chỉ từ quy trình anh chị em hoặc sử dụng một vài mô tả tệp từ cha mẹ cũng như một số riêng của nó, v.v. Có thể bạn nói rằng nó có thể truy cập một vài trình điều khiển thiết bị và những người khác không, vv
Sẽ rất thú vị nếu biết có cách nào để vượt qua các "tính năng cấu hình" như vậy khi tạo một tiến trình con, trên Unix hoặc trên bất kỳ hệ điều hành nào khác. Ví dụ: "tạo quy trình con, sử dụng một nửa không gian địa chỉ cha mẹ, 1/4 của không gian địa chỉ của anh chị em 2, 1/8 của không gian địa chỉ của anh chị em 1 và 8 còn lại sử dụng không gian địa chỉ địa phương của riêng tôi. đến trình điều khiển thiết bị a, b và c, và mặt khác cho phép không có quyền truy cập mạng. " Một cái gì đó tùy ý, về cơ bản nó đang cấu hình "bộ tính năng" của quy trình con thành một mức độ chi tiết tốt.
Tự hỏi nếu bất cứ điều gì như thế xảy ra trong Unix hoặc các hệ điều hành khác, và nếu không, tại sao không. Tôi không hiểu tại sao quyết định được đưa ra chỉ có 2 trường hợp quy trình cho phép / quy định này.
Có vẻ như điều này bằng cách nào đó trùng lặp với vòng bảo vệ khái niệm. Bạn ngăn các quy trình người dùng (quy trình con) truy cập vào một số tính năng nhất định. Tự hỏi tại sao nó không thể cấu hình nhiều hơn thế này, ở mức cao.
fork()
va trươc đâyexec..()
.