gpt4 book ai didi

linux - 进程如何处理信号?

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:22 24 4
gpt4 key购买 nike

当程序发出 INT 命令时,操作系统会接管并正确处理请求吗?我不明白这与此相反,即当信号被发送和执行时,控制是如何从操作系统转移到进程的。好的,操作系统将信号发送到进程。它到底是怎么做到的?当涉及到数据包和套接字时,我可以理解控制流。我假设发送信号位本质上是将某些内容写入寄存器并将程序计数器设置为某个点并将机器状态移回保护模式。我阅读了一些关于如何向操作系统注册错误处理程序等内容。这确实有一定道理。当出现错误时,只需要求操作系统将程序计数器移动到用户空间代码中的某个点,这将是错误处理例程。但是很多对我来说还是很朦胧的。信号的作用是什么?进程如何知道信号已经到达并需要处理?

谁能解释一下信号发送和处理过程中的低级控制流程?

最佳答案

这完全不是它的工作方式。

int 0x80(等)是一种旧方法,在 amd64 上未使用(有专用指令“系统调用”)。但这与问题无关。

简而言之,线程始终遍历内核<->用户空间边界(系统调用、异常(例如页面错误)或只是被安排出去)。当线程返回到用户空间时,它只是检查是否有任何待处理的信号。

所谓的信号传递只是简单地将信息存储在信号未决的某处,并唤醒目标线程来处理它。被唤醒的线程返回到用户空间边界,在那里它执行指定的操作。

调用信号处理程序并在之后进行清理所需的实际机制更为复杂,我只能建议您阅读有关操作系统的书籍。

关于linux - 进程如何处理信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com