当前位置: 首页 > 面试题库 >

发出信号并中断比较

公西国发
2023-03-14
问题内容

基于各种参考,我 在Linux中信号的 主观定义
是“用于将特定事件的发生通知进程的触发器。此处的事件可能是指软件异常。此外,信号也可以用于IPC机制。 ” 我的问题是

  • 我假设只有异常(软件中断)是通过信号通知的。
  • 信号的各种来源是什么?在我看来,内核始终是信号的来源。(用于IPC时除外)
  • 信号处理程序和ISR之间的区别?
  • 信号屏蔽和中断屏蔽之间的区别?

问题答案:

中断可以看作是CPU与OS内核之间通信的一种方式。信号可以看作是OS内核与OS进程之间通信的一种手段。

中断可能由CPU(异常-例如:除以零,页面错误),设备(硬件中断-例如:可用输入)或CPU指令(陷阱-
例如:系统调用,断点)启动。它们最终由CPU管理,后者“中断”当前任务,并调用OS内核提供的ISR /中断处理程序。

信号可以由OS内核(例如:SIGFPE,SIGSEGV,SIGIO)或进程(kill())启动。它们最终由OS内核管理,由OS内核将它们传递到目标线程/进程,并调用通用操作(忽略,终止,终止和转储核心)或进程提供的信号处理程序。



 类似资料:
  • 我有噪声数据(周期为1.8s的峰值,每个周期2048个箱子),我想计算频率并删除50Hz。我很确定我要找的频率是50Hz,因为我是通过使用找到的。 当我尝试在python中执行相同操作时,平均峰值约为47Hz。我正在寻找教程和示例,但结果仍然是一样的。 有人能帮我怎么修吗? 我必须恢复关于切断噪音的问题。当我减去频率时,信号振幅显著降低。这是正确的吗?

  • 问题内容: 我正在用python编写程序。我希望阅读stdin并处理sigchld。我想处理输入中的任何一个,但不要旋转(以推测方式采样输入)。 在我进行的每个调用中,我都无法捕获被信号打断的系统调用。 我会以错误的方式处理吗?我可以不用try / except使它正常工作吗? 我主要担心的不是到目前为止的try / except。但是在程序中其他代码行中,我将需要数百人。在我看来,这似乎不是模块

  • 问题内容: 我在PyQt上开发了一个应用程序,我喜欢信号槽模型,但是有什么方法可以确定信号的发射器吗?我希望有一种方法,因为它可以编写更多通用代码,而无需为每个相似信号定义很多插槽。 问题答案: 我认为我提早提出一个问题,因为我自己在Google上找到了答案。当发射器激活插槽时,将存储发射器的指针,并可以通过 结果可以通过以下方式在PyQt中进行访问:

  • 问题内容: 在我的Django应用中,我需要在用户登录时开始运行一些定期的后台作业,并在用户注销时停止运行它们,因此我正在寻找一种优雅的方式 收到用户登录/注销的通知 查询用户登录状态 在我看来,理想的解决方案是 由每个发送的信号和 一种类似于… 或… Django 1.1.1没有该功能,我不愿意修补该源代码并添加它(无论如何都不确定如何做到)。 作为一个临时解决方案,我向UserProfile模

  • 我使用,并在它停止开发后移到。 最近,我被指向Google repository和另一个断言库(http://Google.github.io/truth/)。 阅读这些示例,我没有发现使用start比使用有任何优势。所以用什么只是品味的问题。但也许我没抓住重点,是吗?

  • #include <stdio.h> #include <signal.h> void handler(int sig); void handler(int sig) { signal(sig, handler); printf("Receive signal: %d\n", sig); } int main(void) { signal(SI