interrupt相关内容

中断技术如何帮助实现多线程?

中断技术如何帮助实现多线程? 还是多线程与中断之间是什么关系? 非常感谢! 解决方案 '或者多线程与中断之间是什么关系?' 在大多数现代的抢占式OS上,中断是进入OS的方式-除非存在中断,否则OS不会执行任何操作.中断分为两种:设备/驱动程序的硬件中断(即磁盘,键盘,NIC,鼠标,USB,内存管理硬件,计时器硬件)和“软件中断".系统调用.两种类型的中断都可以更改就绪/正在运行 ..
发布时间:2020-05-21 19:09:27 其他开发

什么是“中断挂接"?意思是?

我正在阅读 PnP BIOS规范,并迷迷糊糊在以下段落中: 积极监控INT 19h引导程序向量 当前的系统BIOS 架构允许选件ROM随意钩住INT 19h.经过 主动监视INT 19h的控制,系统BIOS可能会恢复 控制Bootstrap进程以确保操作系统 是从正确的设备以正确的方式加载的. 在第3行中,提到了“挂接"中断的可能性.据我所知,这意味着监视中断的发出,例如在每个I ..
发布时间:2020-05-21 19:07:44 其他开发

线程如何在禁用中断的情况下进入睡眠状态?

我试图了解以下代码的工作方式.这直接来自我的专业讲座幻灯片.这个P()和V()函数是我们在类(OS161)中使用的OS中信号量实现的一部分.我认为您可能需要了解OS161才能回答我的问题,因为它已被广泛使用,希望有人可以回答这个问题. 我对本代码的理解和讲义: X:P()函数的流程 1.当线程调用P()时,我们禁用中断 2.检查sem-> count 是否有可用资源 3.a)如果co ..

进行微操作的顺序是什么?

请考虑以下微操作顺序. MBR ← PC MAR ← X PC ← Y Memory ← MBR 以下哪个是该序列可能执行的操作? 指令提取 操作数获取 条件分支 启动中断服务 答案是选项(4). 我的尝试: 指令提取:提取指令:从PC中的地址读取指令代码,并将其放置在IR中. (IR←内存[PC]) 操作数获取:如有必要,从内存中 ..

CPU如何空闲(或低于100%运行)?

我首先了解了计算机是如何在原始的单个存储程序机器方面工作的. 现在,我正在学习多任务操作系统,调度,上下文切换等.除了一件事,我认为我对这一切都有很好的了解.我一直认为CPU只是不断向前充电.它总是知道下一步要执行的内容(程序计数器),并且会无限制地转到该指令等. 显然不是这样,因为我的台式机CPU并非总是以100%的速度运行.那么,CPU如何关闭自身或关闭自身,操作系统在其中扮演什么 ..
发布时间:2020-05-21 19:03:00 其他开发

中断屏蔽:为什么?

我正在阅读中断.可以通过特殊的中断屏蔽挂起非紧急中断.这称为中断屏蔽.我不知道是什么时候/为什么要或需要暂时挂起中断?可能是信号量,还是在多处理器环境中编程? 解决方案 操作系统准备运行自己的“让世界编排"代码时会执行此操作. 例如,在某些时候OS线程调度程序可以控制.它在允许线程运行之前准备处理器寄存器以及需要完成的所有其他操作,以便为该进程和线程建立环境.然后,在让该线程运行之前 ..
发布时间:2020-05-21 19:02:02 其他开发

CPU如何从RAM访问应用程序和数据

在将应用程序加载到RAM中并打开文件(因此文件的数据也存储在RAM中)之后,我很难理解CPU如何从RAM中访问应用程序和数据. 据我了解,当程序计数器滴答或在中断后执行任务时,CPU只是从RAM中获取指令.然后如何访问应用程序和数据.是不是它仍然并且仅获得指令(例如,将文件加载到要在应用程序中打开的硬盘驱动器上)并处理由应用程序发出的所有请求,这些请求随后作为指令存储在RAM中(例如保存一个 ..
发布时间:2020-05-21 19:00:56 其他开发

什么是INT 21h?

受到这个问题的启发 如何强制GDB进行反汇编? 我想知道INT 21h是一个概念.现在,我对内部结构有一些非常生锈的知识,但是没有那么多细节.我记得在C64中您有常规的中断和不可屏蔽的中断,但是我的知识到此为止.你能给我一些线索吗?这是与DOS相关的策略吗? 解决方案 来自 ..
发布时间:2020-05-21 18:57:10 其他开发

处理器如何处理被零除的情况

很好奇处理器/CPU在intel cpu& Linux,当它执行零除法指令时.还将错误如何中继到应用程序,以便它可以记录错误或通知开发人员? 谢谢! 解决方案 一般性地回答,而不是深入研究x86_64上Linux的细节,这可能会使概念模糊. CPU倾向于在诸如被零除或取消引用NULL指针之类的事件时引发异常中断.这些中断被捕获,就像硬件中断时一样,停止当前程序的执行并将控制权返 ..

dma vs中断驱动的I/o

我不清楚DMA与中断I/O之间的区别. (当前正在阅读《操作系统概念》,第7版). 具体来说,我不确定这两种情况下何时发生中断,以及在两种情况下的什么时候CPU都有空做其他工作.我一直在阅读的东西,但不一定能调和: 中断驱动 通过驱动程序初始化的控制器 控制器检查驱动程序加载的寄存器以决定操作 随之发生从/向外围设备的数据传输以及控制器的缓冲区. 控制器何时(在读取的每个字 ..
发布时间:2020-05-21 18:56:26 其他开发

可以在Linux上的代码中使用BIOS中断吗?

我在Linux中使用汇编语言编写了一个简单程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗? 解决方案 最简单的答案是,不可能. 更长的答案是Linux支持virtual8086模式(int vm86(unsigned long fn, struct vm86plus_struct *v86)调用),该模式能够执行实模式代码(包括BIOS功能, ..
发布时间:2020-05-16 21:09:25 其他开发

帮助在DOS的NASM汇编中编写TSR程序

我一直在尝试在MS-DOS的汇编语言(16位)中编写TSR(终止驻留)程序(通常).我已经阅读了维基百科页面 在TSR上以及在DOS中专门使用它的页面(但它似乎是在用C而不是直接在Assembly中进行讲授).我查看了一个包含大量DOS中断文档的站点,并找到了这一个 ,此,以及与TSR计划最相关的另一个.我无法发布所有链接,因为作为新用户,我在帖子中最多可以有2个超链接. 因此,我尝试在NA ..
发布时间:2020-05-16 21:08:09 其他开发

如何取消阻塞调用,例如select()或read()?

正如标题所述,如何取消另一个线程的阻塞调用,如select()或(在串行通讯和类似情况下)read()?解决此类问题的传统方式是什么?我想一个人可以使用一个小的超时时间,这也许可以正常工作,但对我来说似乎有点破烂. 解决方案 中断select(2)的传统方法是 self-pipe trick .通过使描述符 non-blocking 和处理EAGAIN更好地服务于输入/输出调用. ..
发布时间:2020-05-14 01:01:14 其他开发

Java线程

我试图让我的主线程产生一个新线程,并在一段时间后引发中断标志.这样做时,生成的线程应该看到该标志并自行终止. 主线程看起来像这样: final Thread t = new Thread() { @Override public void run() { f(); } }; t.start(); try { t.join(time ..
发布时间:2020-05-14 00:58:00 Java开发

强制终止停留在某些方法的API调用上的线程

我的情况如下: 我正在实现一个服务器,该服务器必须在每个请求的指定超时期限内超时或产生响应.因此,从服务器的角度确保了每个请求的响应(当然,由于传输层故障等原因,该响应可能不会到达客户端.) 为了实现上述语义,每个请求都产生一个线程(实际上是从线程池中检索一个可用的线程),并通过对同步对象的通知等待其响应.等待时间受到发送给对象的wait方法的超时参数的限制.产生的线程将请求委托给实际 ..
发布时间:2020-05-14 00:57:17 Java开发

为什么一个线程会中断另一个线程

在Java多线程应用程序中,我们处理InterruptedThreadException.如果另一个线程中断当前线程,则抛出此异常.现在,另一个线程在知道它将导致异常的情况下可能想要中断当前线程的原因是什么? 解决方案 很多原因.但是最流行的一种方法是取消线程上的某些任务. 请参见 http://www.ibm.com/developerworks /java/library/j-j ..
发布时间:2020-05-14 00:42:28 Java开发

由于system.out.println语句,导致运行线程延迟

在下面的代码中,如果我在for循环内使用sysout语句,则代码在条件满足后执行并进入循环,但如果我在循环内未使用sysout语句,则无限循环将继续进行,而无需输入if即使满足条件也可以..任何人都可以帮助我找出造成此情况的确切原因.只需sysout语句即可将if条件变为true.为什么会这样呢? 代码如下:- class RunnableDemo implements Runnabl ..
发布时间:2020-05-14 00:28:14 Java开发