2013-08-21 27 views
15

Khi tôi tạo nhiều luồng từ một tiến trình, thì mỗi luồng có ngăn xếp riêng hay là chúng chia sẻ chồng của quá trình cha mẹ của chúng. Điều gì sẽ xảy ra khi một chuỗi tạo cuộc gọi hệ thống? Làm chủ đề cũng duy trì ngăn xếp hạt nhân của riêng họ như các quá trình?Mỗi luồng có ngăn xếp riêng không?

+1

có ngăn xếp chủ đề cụ thể !, giá trị toàn cục có thể chia sẻ giữa các chủ đề (địa phương không) –

+0

@GrijeshChauhan Điều gì sẽ xảy ra khi chúng tôi thực hiện cuộc gọi hệ thống từ một chuỗi? Ví dụ: –

+2

nếu bạn gọi lệnh 'open()' để mở tệp. bằng cách sử dụng 'int f = open()' thì dĩ nhiên 'f' là cục bộ cho luồng. nhưng hãy nhớ các mô tả tập tin được chia sẻ giữa các chủ đề. Nếu bạn biết giá trị của 'f' thì bạn có thể sử dụng giá trị đó trong chuỗi khác nhau để truy cập cùng một tệp (bạn không cần phải mở lại) –

Trả lời

9

Có chủ đề có ngăn xếp của riêng chúng và ngăn xếp hạt nhân của riêng chúng (ví dụ: linux).

Khi chuỗi tạo cuộc gọi hệ thống, bạn bẫy vào chế độ hạt nhân (từ chế độ người dùng), bạn chuyển đối số cho hạt nhân, đối số được chọn, hạt nhân thực hiện lệnh (trong hạt nhân ngăn xếp), trả về giá trị cuối cùng về chủ đề và bạn quay lại chế độ người dùng.

+0

Hạt nhân thực hiện "w/e cần làm" mà không cần ngăn xếp? – avakar

+0

Tôi sẽ làm rõ trong câu trả lời của mình – Joohwan

+2

Ngăn xếp hạt nhân chỉ là một đề phòng bảo mật được thêm vào một mô hình từ trước. Nhiều ngăn xếp là điều kiện tiên quyết để đa luồng. Hạt nhân về bản chất cung cấp một phiên bản song song của bất cứ điều gì đang xảy ra trong không gian người dùng để ngăn chặn dữ liệu nhạy cảm bị rò rỉ. – Potatoswatter

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