2009-05-08 33 views
5

Tôi đã đọc tín hiệu đó cần phải có một ngăn xếp riêng biệt, tại sao và làm thế nào để bạn nghĩ rằng nó được thực hiện?Ngăn xếp tín hiệu

Chúng được phân bổ động hay phân bổ tĩnh? Phân bổ bộ nhớ được thực hiện như thế nào? Có giống nhau cho mọi tín hiệu không?

Trả lời

2

Lý do tín hiệu cần một ngăn xếp riêng biệt là, nếu ngăn xếp bình thường bị hỏng hoặc tràn, tín hiệu vẫn có thể thực thi. Tôi nghĩ rằng các ngăn xếp tín hiệu thường được phân bổ động, nhưng nó có thể thực hiện được một trong hai cách. Bạn có thể đặt ngăn xếp tín hiệu mới với sigaltstack. Nó là như nhau cho tất cả các tín hiệu.

+0

Vì vậy, khi tôi hiểu chúng tôi có tất cả các trình xử lý mặc định trên ngăn xếp tín hiệu riêng biệt, có đúng không? Điều gì xảy ra khi chúng tôi quyết định sử dụng trình xử lý tín hiệu khác? Trường hợp đặc biệt này được xử lý như thế nào? – Thunderboltz

+0

Trình xử lý tín hiệu không mặc định cũng được thực hiện trên cùng một ngăn xếp tín hiệu. – Zifre

+0

Làm thế nào điều đó có thể thực hiện được? Các trình xử lý tín hiệu không mặc định sẽ không được thực hiện trên cùng một ngăn xếp tín hiệu. Trình xử lý tín hiệu không mặc định sẽ được xác định trong chương trình người dùng và sẽ sử dụng ngăn xếp người dùng thông thường chứ không phải ngăn xếp tín hiệu đặc biệt. Tôi nghĩ rằng chúng tôi vượt qua con trỏ để xử lý tín hiệu không mặc định mà sau này được sử dụng với các API tín hiệu BSD. – Thunderboltz

1

Lý do khác, bí truyền hơn là tạo chủ đề cấp người dùng. Xem bài báo "Đa luồng di động" của Ralf Engelschall: http://www.gnu.org/software/pth/rse-pmt.ps. Nó mô tả cách "bẫy tín hiệu trampoline lừa" được sử dụng để có hiệu lực luồng không gian người dùng.

+0

Hoàn toàn không có chủ đề câu hỏi này (không may), nhưng liên kết rất thú vị :-) – Mecki

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