腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
Linux中的中断和系统调用调度
、
、
、
在Linux中,硬件中断和系统调用/异常是否由同一个dispatcher过程分派?如果您看到Linux,您会注意到,硬件中断(在x86 arch上)在其中断向量上不包含更多的指令,这些指令会在堆栈上推送中断向量号并跳转到common_interrupt。 我的问题是:是Linux中的每个中断(异常(包括SysCall)、中断)都以相同的方式发送,直到到达某个点到分支为止?(由于他们的类型) 对不起我的英语。
浏览 8
提问于2016-01-13
得票数 2
1
回答
键盘中断如何作为进程信号结束?
、
、
、
我正在研究linux内核,了解O‘’Reilly对Linux的理解,最近讨论了信号和中断处理一章,坚持了一些基本的Linux2.4版本,并深入研究了我所能理解的代码。 然而,我无法向自己解释,也无法在其他地方找到答案,当ctrl + c被按下运行在shell中的进程时,会发生什么指令流。 到目前为止我发现的是: 一旦按下键盘,APIC就会将IRQ线提升到cpu。 如果中断不可掩蔽,cpu将加载相应的int。来自IDT的处理程序 比,一些关键的int。调用处理程序代码,进一步处理从键盘设备的寄存器中按下的char到其他寄存器 从这里开始对我来说很模糊。 不过,我确实理解,中断处理不是在进程上下文
浏览 0
提问于2017-07-28
得票数 5
回答已采纳
2
回答
cpu如何对硬件异常发出核心信号?
、
、
、
、
具有这样的程序集用户空间程序: _start: data: db"DATA..........." mov eax, 5 结果导致CPU执行数据,导致硬件异常被linux内核捕获,导致程序分割、故障和程序终止。我的问题是,CPU如何告诉内核有关异常的信息,以及是否有一些细节(如零除法或数据执行异常),以及当这样的异常发生处理异常(我猜类似于内核硬件异常处理程序)时,它如何知道下一步要执行什么指令?
浏览 4
提问于2020-09-21
得票数 0
回答已采纳
1
回答
内核软件陷阱处理
、
、
、
我正在读一本关于Windows内核的书,但有件事我不明白: “内核作为硬件中断处理的一部分处理软件中断,或者在线程调用与软件中断相关的内核函数时同步处理软件中断。” 因此,这是否意味着软件中断或异常只能在以下情况下处理: *a.当内核从所述线程执行与软件异常(陷阱) b相关的函数时,当它已经在处理硬件陷阱时* 我对此的理解是正确的吗? 下一段: 在大多数情况下,内核安装前端陷阱处理函数,在将控制转移到其他函数之前和之后执行一般的陷阱处理任务。 我不太明白它是什么意思‘前端陷阱处理功能’和‘字段陷阱’? 有谁可以帮我?
浏览 4
提问于2009-12-29
得票数 2
2
回答
如何限制操作系统中的中断次数?
、
我是Linux内核的新手。我从"Linux内核开发,Robert Love第3版,第7章中断和中断处理程序“中读到了关于Linux内核的内容。为了注册中断处理程序,Linux使用request_irq()函数: int request_irq( unsigned int irq , irq_handler_t handler, unsigned long flags , const char *name, void *dev) 因为我是Linux内核的新手,所以我对Linux中的中断有一些怀疑: Q1 -> Are interr
浏览 1
提问于2014-02-22
得票数 0
2
回答
基于x86体系结构的Linux内核中中断处理代码的定位
、
、
我正在进行这样的研究,试图在Linux内核中找到实现中断处理的代码;特别是,我试图找到负责处理系统定时器的代码。 根据 内核处理中断的方式非常类似于它处理异常的方式:所有通用>目的寄存器都被推到系统堆栈上,并调用一个公共中断处理程序。>保存当前中断优先级并加载新的优先级。这可以防止>优先级较低的中断中断内核,而内核则处理此>中断。然后调用真正的中断处理程序。 我正在寻找推动堆栈上所有通用寄存器的代码,以及常见的中断处理代码。 至少,将通用寄存器推到堆栈上是与体系结构无关的,因此我正在寻找与x86体系结构相关联的代码。目前,我正在查看内核源代码的3.0.4版本,但是任何
浏览 7
提问于2012-01-24
得票数 1
回答已采纳
2
回答
内核控制路径与内核线程之间的关系是什么?
、
、
、
理解Linux内核是这样说的: 内核控制路径表示内核执行的处理系统调用、异常或中断的指令序列。 和 除了用户进程之外,Unix系统还包括一些特权进程,称为内核线程,具有以下特征: 它们在内核地址空间中以内核模式运行。 它们不与用户交互,因此不需要终端设备。 它们通常是在系统启动时创建的,在系统关闭之前一直保持活动状态。 这两个概念之间的关系是什么:内核控制路径和内核线程? 内核控制路径是内核线程吗? 内核线程是内核控制路径吗? 如果我是正确的,内核线程被表示为一个task_struct对象。 那么内核控制路径是什么呢? 如果不是,什么类型的内核控制路径可以是,哪些类型不
浏览 0
提问于2018-09-16
得票数 0
1
回答
我对中断、异常和信号定义的理解是否正确?
、
、
、
中断是基于硬件并发生异步的(数据输入到套接字,一些I/O准备从或写入,用户按下键盘。 异常也是基于硬件的,但是它们是同步的,在执行指令时是由CPU造成的。例如,虚拟内存地址空间中没有实际内存块映射到它的页面将导致页面错误。异常是故障、陷阱和中止的通用名称。 中断和异常由硬件生成,并由内核空间中的处理程序处理。它们可以看作是硬件和内核之间通信的手段。 信号信号可以看作是正在运行的进程与内核之间通信的一种手段。在某些情况下,中断/异常将使用信号作为内核处理的一部分。
浏览 3
提问于2019-12-22
得票数 0
回答已采纳
1
回答
中断例程中的控制标志和NMI [8086]
、
、
、
我知道8086是如何执行中断例程的。我不清楚的是,不同类型的中断(即硬件、软件和异常)如何在执行过程中使用控制标志(中断标志和陷阱标志)。 另一件事是,什么是非屏蔽中断及其用途? 所以请帮帮我,谢谢。
浏览 4
提问于2015-05-16
得票数 2
回答已采纳
1
回答
Linux进程上下文与ARM中的SVC调用
、
、
根据一些Linux书籍 由用户应用程序发出的服务系统调用的内核代码代表相应的应用程序进程运行,据说是在进程上下文中执行的。中断处理程序在中断上下文中运行。 现在svc和irq是两个例外。 因此,当linux处理svc时,它在进程上下文中,在处理irq时,它处于中断上下文中。是这样映射的吗? 只需对此编辑一次 书中还提到tasklet/ softirqs在中断上下文中运行,而工作队列在进程上下文中运行。那么,这是否意味着tasklet将在CPSR.mode = IRQ中运行?
浏览 5
提问于2014-05-01
得票数 1
回答已采纳
1
回答
如何知道中断是硬件中断还是cpu异常?
、
、
我一直在研究x86上的中断以及内核如何使用中断处理程序处理各种中断。但有一件事让我困惑。 我知道中断可能是硬件产生的,比如磁盘和定时器中断,也可能是CPU异常,比如页面错误,除以零异常等等。让我困惑的是,一些int代码被用来处理两者(特别是int08-0F)。例如,拉尔夫·布朗的列表中说,int09H中断既是KEYBOARD DATA READY硬件中断,也是COPROCESSOR SEGMENT OVERRUN异常。 所以我的问题是,如果有这样的中断,中断处理程序如何知道要处理哪个中断?
浏览 0
提问于2013-03-24
得票数 5
1
回答
x86如何发出中断指令流信号
、
、
、
Linux信号是如何导致X86处理器的指令流中断的?那么使用的是什么CPU工具呢? 您有同步和异步中断。 同步中断是针对诸如页面错误、异常等问题。这些问题是由CPU上执行的指令引起的。 异步中断来自来自LAPIC的IPI,定时器中断或I/O-APIC拾取的中断,并被路由到正确的LAPIC,然后中断处理器。所以这些都是外部事件。 但是信号使用哪种X86机制来中断指令流并开始处理信号处理程序。 它不是异步中断AFAIK,因为中断是在内核中处理的,而信号是在用户空间中处理的。但它的行为与异步中断非常相似。
浏览 1
提问于2020-05-29
得票数 0
3
回答
硬件异常处理输入/退出代码存储在哪里?
、
、
、
我知道这个问题看起来很通用,因为它可以依赖于平台, 但是我理解过程/函数调用时,在堆栈和局部变量上推送返回地址的汇编程序代码可以是调用函数或被调用函数的一部分。 当硬件异常或中断发生时,程序计数器将通过异常表获取异常处理程序的地址,但用于存储状态、返回地址等的实际代码在哪里。或者,对于中断和异常,这是在硬件级别自动完成的吗? 提前感谢
浏览 2
提问于2018-04-12
得票数 0
回答已采纳
2
回答
TCP/IP中用于数据包处理的中断代码是什么?
、
、
、
、
我在Linux x86_64上使用基于以太网的TCP/IP 10 Gbit/s。 但是当中断发生在CPU内核中时会发生什么情况呢? 这是真的吗? 中断代码计算IP包校验和 中断代码将数据从内核空间缓冲区复制到所需的套接字缓冲区。 中断代码将数据从以太网卡上的缓冲区复制到内核空间中的缓冲区(或者在产生中断之前,使用以太网上的DMA控制器,这是由以太网卡启动的吗?)
浏览 8
提问于2015-01-21
得票数 0
回答已采纳
2
回答
例外和中断
、
、
、
、
当我在寻找异常和中断之间的区别时,我发现了这个问题,所以. 有些答案不适合(至少在组装级别): “例外是中断的软件版本”但是存在软件中断!! “中断是异步的,但异常是同步的”是这样吗? “中断经常发生” 中断是硬件实现的陷阱,异常是软件实现的“与上面的相同! 我需要找出其中一些答案是否正确,如果有人能给我一个更好的答案,我将不胜感激. 谢谢!
浏览 1
提问于2010-06-03
得票数 0
回答已采纳
1
回答
这些干扰正常吗?
、
、
、
、
来自cat /proc/interrupts的输出: CPU0 CPU1 CPU2 CPU3 0: 13 0 0 0 IO-APIC 2-edge timer 8: 1 0 0 0 IO-APIC 8-edge rtc0 9: 0 0 0 0 IO-APIC 9-fas
浏览 0
提问于2017-07-16
得票数 0
1
回答
定时器中断是否与系统处于内核模式或用户模式无关?
、
、
在Linux单处理器系统中,定时器中断与系统处于内核模式还是用户模式无关? 当系统处于内核模式时,定时器中断有什么不同的行为吗?
浏览 1
提问于2013-04-15
得票数 6
回答已采纳
1
回答
在硬件I/O期间,抢占是如何工作的?
、
假设我有一个使用SPI或其他通信协议与运行Linux的计算机对话的设备,例如Raspberry Pi。为了使此通信成功,不允许中断,因为否则将错过发送或接收数据的时间窗口。然而,Linux不正是这样做的吗?中断进程并执行上下文切换以运行下一个进程?如果由于某种原因,在我描述的情况下没有发生这种情况,为什么不呢?为什么桌面没有被冻结呢? 此外,我们如何保证当时钟信号高或低时,对等方会准确地写入/读取数据?当时钟发生变化时,如果对等方正在做其他事情,而不是监视时钟,该怎么办?即使在Arduino中,当Arduino可能在做其他事情时,通过串行方式保存在缓冲区中的数据又是怎样的呢?
浏览 0
提问于2020-11-21
得票数 1
回答已采纳
1
回答
硬中断和软
、
、
在linux中,当网卡接收数据包时,会触发一个硬中断,然后在中断回调函数中,它会引发一个NET_RX_SOFTIRQ,这个软irq会在同一个cpu上运行吗?
浏览 5
提问于2016-03-30
得票数 8
1
回答
等待的线程可以休眠吗?
、
、
、
、
这个问题与linux调度和线程中不同阶段的处理器活动有关,线程可能正在进行某些活动,或者处于空闲/等待状态,或者处于休眠状态。当线程正在做一些事情时,处理器将执行指令(处理器吞吐量,即每秒执行的指令数量)将会很高。我的问题是,当线程处于等待和休眠状态时,处理器的行为(可能大致如此)是怎样的?等待的线程可以休眠吗?当线程处于休眠状态时,是否意味着处理器处于空闲状态?当一个处理器空闲时,是否意味着所有的线程都在休眠?当处理器空闲时,Linux是否真的将处理器置于一种不执行任何指令的模式(即时钟门控)?
浏览 2
提问于2014-08-29
得票数 2
2
回答
在Linux内核中,哪些内核线程负责发送网络数据包
、
、
、
我正在阅读Linux内核的源代码,试图弄清楚Linux内核是如何发送网络数据包的,几个小时后,我只能看到网络数据包流经TCP层、IP层和最终的数据链路层,我找不到是哪些线程在做这些工作。 我的问题是,哪些内核线程负责发送网络数据包,它们在哪里?(因为我们可以将套接字设置为非阻塞,并让用户应用程序尽可能快地发送网络数据包,所以当网络繁忙时,必须有一些队列来缓冲这些数据包,并且一定有一些内核线程在某个地方运行来发送这些数据包。)
浏览 2
提问于2013-12-15
得票数 1
1
回答
硬件堆栈中断Linux内核的上半部分?
、
、
、
我知道Linux内核在2.6.32之前将线程内核堆栈作为ISR堆栈,在2.6.32之后,内核使用分隔堆栈,如果错误,请更正。您能告诉我ISR堆栈何时设置/装箱,或者如果有,则销毁。或者告诉我源文件名和行号?提前谢谢。 更新日期:2014年10月17日: Linux中有几种堆栈。下面是我所知道的三大(不是全部)。 用户空间进程堆栈,每个用户空间任务都有自己的堆栈,这是在创建任务时由mmap()创建的。 用户空间任务的内核堆栈,每个用户空间任务一个,这是在do_fork()->copy_process()->dup_task_struct()->alloc_thread_
浏览 6
提问于2014-10-03
得票数 3
1
回答
关于上半处理程序中是否禁用interuppts的进一步说明。
、
、
最近,我在网上的一篇文章中看到了这样一条信息: 在现代内核中,快中断和慢中断之间的大多数区别已经消失。剩下的只有一个:在当前处理器上禁用所有其他中断的情况下,执行快速中断(使用SA_INTERRUPT标志请求的中断)。注意,其他处理器仍然可以处理中断,尽管您永远不会看到两个处理器同时处理相同的IRQ。 在其他在线文档中,我发现一些语句表明,在处理任何给定的中断时,至少在上半部分处理程序中,所有其他中断都是禁用的。这似乎与上面的引文不符。我最感兴趣的是单CPU arm系统。有人能告诉我这些观点中哪一种是正确的吗?我要补充的是,我在这方面问的是2.6.10内核,这是所涉及的处理器上的最新版
浏览 4
提问于2012-12-01
得票数 2
2
回答
为中断服务还是为异常服务
、
、
、
、
我的理解是:中断(硬件中断)通常是由直接中断CPU的外部事件引起的。然后CPU将向量到特定的ISR以处理中断。显然,ISR不能有返回值或传递参数,因为事件发生在代码中的任何时间点。 但是,除了例外,我的理解是,这是一个软件中断,它是由软件中的一个特殊指令pd引起的。 我听说异常的处理方式类似于处理ISR。在这种情况下,异常处理程序是否可以通过从代码中获取参数并返回值来区别于ISR,因为我们知道执行代码时我们在代码中的位置? 提前感谢
浏览 0
提问于2018-02-07
得票数 0
回答已采纳
1
回答
在访问中断门描述符之前,用户如何切换到内核模式?
、
、
、
我目前正在阅读“理解Linux内核”。我正在研究中断和例外一章。 我发现在设置IDT时,我们可以使用Linux术语中的五种门描述符。 任务门(DPL: 0) 中断门(DPL: 0) 陷阱门(DPL: 0) 系统中断门(DPL: 3) 系统门(DPL: 3) 现在我意识到使用DPL 3的用户可以从用户模式访问。但是那些有DPL 0的呢?特别是中断门。 如果I/O APIC中断发生在用户模式下,则无法访问中断门。 所以我的问题是,在访问中断门之前,内核模式开关的用户模式是如何发生的?
浏览 2
提问于2016-06-05
得票数 0
回答已采纳
1
回答
在没有实际硬件的linux上编写中断处理程序需要做些什么?
、
、
、
在Linux上有没有可以产生硬件中断的硬件模拟器?我希望编写设备驱动程序,可以处理硬件中断,读或写到硬件内存,延迟工作,顶部和底部处理,等等。基本上,希望学习完整的设备驱动程序端到端。但是障碍是什么--如何模拟硬件。我真的需要一些可以产生中断的硬件吗?我看过书中的LDD3,但他们正在使用skull -一块内核空间内存模拟作为硬件,但这不能产生中断,或者它可以?请给我点光。
浏览 3
提问于2020-06-30
得票数 0
2
回答
在linux中,什么等同于在DOS中注册ISR
、
在DOS中,可通过以下代码注册isr(中断服务例程): mov ah,25H mov al,0BH lea dx,handler mov bx,seg handler mov ds,bx int 21H 该过程将处理0BH中断。 我想知道:在linux中与此相当的是什么?
浏览 0
提问于2013-12-26
得票数 0
1
回答
VirtualBox如何处理客户Linux的中断?
、
、
、
、
我正在练习在VirtualBox客户Linux中编写一个简单的键盘驱动程序。问题是,我的代码只是注册一个中断处理程序并将scancode打印到日志文件中。我也不会将这些传入的扫描码发送到任何较高级别的代码,比如Linux input core。在insmod之后,我可以使用dmesg看到捕获的扫描代码。但是为什么我的终端仍然得到正确的输入?终端机不应该收到任何东西。 我的代码如下所示: static int __init init_simple_keyboard_driver(void) { free_irq (IRQ_1, NULL); return request_irq
浏览 1
提问于2012-09-14
得票数 2
2
回答
当两个中断同时发生在linux内核中时会发生什么?
、
、
、
当两个中断同时发生在Linux内核中时会发生什么..? 如果该处理器有多个CPU,那么中断可以同时在不同的cpu核心上运行。
浏览 5
提问于2014-03-25
得票数 12
回答已采纳
3
回答
在哪里可以找到i 486-linux-gnu指令集的中断列表?
、
、
、
、
我正在为我在学校的高级项目开发一个编译器,我正在使用AS (GNU汇编程序)来组装。我的所有测试都相当成功,但我看到的任何中断列表似乎都与我的测试代码有效或匹配。 这一版本的相关信息: GNU汇编程序2.17 Debian GNU/Linux版权2005自由软件基金会公司。该程序是免费软件,您可以根据GNU通用公共许可证的条款重新发行它。这个程序绝对没有保证。此汇编程序配置为“i 486-linux-gnu”目标。
浏览 10
提问于2009-04-07
得票数 0
1
回答
什么能延迟我的select()调用?
、
、
我有一个运行在Linux上的小程序(在嵌入式PC上运行,在双核Intel Atom 1.6GHz上,Debian 6运行Linux2.6.32-5),它通过FTDI USB到串行转换器(使用ftdi_sio内核模块和/dev/ttyUSB*设备)与外部硬件进行通信。基本上,在我的主循环中,我运行 使用clock_gettime()的CLOCK_MONOTONIC 超时为8ms的select() clock_gettime()和以前一样 输出两个clock_gettime()调用的时间差 为了具有某种级别的“软”实时保证,这个线程以最大优先级(在SCHED_FIFO中显示
浏览 1
提问于2015-05-20
得票数 10
回答已采纳
2
回答
linux中的中断处理
、
、
你能给我解释一下interrupts在linux中是如何处理的吗?我使用的是gentoo 12。据我所知,HW IRQ只是从特定硬件到处理器本身的电信号。我不明白,处理器是如何区分来自不同硬件的中断的? 让我们安装一个新的硬件。显然,它不知道从这个硬件到一个过程会产生什么特定的电脉冲。因此,不清楚处理器如何为该中断更改特定中断处理程序。
浏览 3
提问于2013-12-29
得票数 0
2
回答
为什么我要使用陷阱指令?
、
我研究了陷阱指令,但对我来说,它没有什么意义,看起来很像Java中的throws exception或类似于the,它是相似的吗?或者它是做什么的?它只是说TRAP指令总是生成一个异常,我为什么要这样做呢?没有足够的信息让我了解我为什么以及在哪里想要使用TRAP。
浏览 4
提问于2013-07-16
得票数 1
回答已采纳
1
回答
Linux调度程序:如何停止任务?
、
据我所理解,通过阅读一些这样的问题和内核文档,在Linux中,一个任务(线程、进程,甚至是一组任务)可以在最短的时间内不间断地执行(根据/proc/sys/ some /sched_min_ questions,在我的膝上型计算机中有3ms),在此之后,如果负载很高,它可以随时停止。如果不是这种情况,并且已经超过了CPU时间,则必须停止该任务以允许其他任务进行。 但根据我的理解,一旦CPU运行了一个任务,任何事情都无法阻止它,这自然会产生两个非常相关的问题: 如何停止一项任务?我唯一能想到的就是通过操作系统发送一些简单的CPU中断,或者这里有什么更复杂的东西吗? 如果CPU是单线程的,一次只能
浏览 0
提问于2022-01-10
得票数 1
回答已采纳
3
回答
如何利用Linux内核生成方波
、
、
、
我需要使用MIPS平台(这不是i386)开发一个产生方波的Linux驱动程序,周期约为1ms。 我尝试过一些方法,但这些方法都没有成功: unstableCannot使用使用timer/hrtimer ->但周期为12 is,而使用实时附加包作为RTLinux/RTAI,因为它们不支持MIPS使用具有永久循环和udelay函数的内核->它占用了太多的CPU资源-->性能是不可接受的。 你帮我吗?还是你阻止了我?(请救救!) 谢谢。
浏览 3
提问于2012-02-01
得票数 0
3
回答
为什么linux (ARM)在异常处理期间总是切换到supervisor模式?
、
在异常处理期间,Linux总是切换到supervisor模式。这是什么原因?为什么它不能在异常模式下继续执行呢?
浏览 1
提问于2011-10-27
得票数 5
2
回答
Linux看门狗
、
、
、
现在,我遇到了一个关于Linux看门狗的问题。我想使用Linux看门狗来检测和恢复OS挂起。因此,我将"nmi_watchdog=1“添加到grub.cfg中。然后检查/proc/中断,NMI是每秒触发的。但是,在我加载了一个死锁模块(双获取自旋锁)之后,系统完全挂起了,什么也没有发生(永远不要惊慌!)看来NMI的看门狗不起作用了! 然后我阅读了文档/nmi_watchdog.txt dog.txt,它说: 需要注意的是,当使用本地APIC时,它所产生的NMI中断的频率取决于系统负载。缺少更好的源代码的本地APIC看门狗使用“循环未停止的”事件。 什么是“循环未停止的”事件? 它补充
浏览 13
提问于2012-03-26
得票数 30
2
回答
Linux在所有内核上都会进入内核吗?
、
、
对于运行Linux2.6.x的多核计算机,当线程进行系统调用时会发生什么?它是只在运行线程的核心上插入内核,还是在所有核心上插入到内核中(如果这是一个新手问题,对不起)。 这种行为(以正确的为准)在接收中断时是否相同?如果不是,有何不同?
浏览 2
提问于2010-01-13
得票数 2
回答已采纳
1
回答
软件产生的中断和软件产生的异常有什么区别?
、
、
、
我正在阅读英特尔手册3A第6章中断和异常处理。 中断和异常分别有3个源。 对于软件生成的中断,它说: INT指令通过提供中断向量号作为操作数,允许从软件内部产生中断。例如,INT 35指令强制对中断处理程序的中断35进行隐式调用。从0到255的任何中断向量都可以用作此指令中的参数。但是,如果使用处理器的预定义NMI向量,则处理器的响应将不同于以正常方式生成的NMI中断的响应。如果在此指令中使用向量号2( NMI向量),则调用NMI中断处理程序,但处理器的NMI处理硬件未被激活。在带有INT指令的软件中生成的中断不能被EFLAGS寄存器中的IF标志所掩盖。 对于软件生成的异常,它说:
浏览 5
提问于2016-11-09
得票数 2
回答已采纳
1
回答
系统呼叫可以中断吗?
、
、
、
请评论以下一句: 在没有rt补丁的标准Linux内核上,中断不能中断正在进行的系统调用。当从硬盘获取数据时,我们的机器之所以不停止工作,是因为我们用于该操作的系统调用是阻塞的。阻塞意味着一旦它向硬盘发出请求,它就会将进程状态更改为阻塞,并自愿放弃处理器时间。在非实时内核上无法中断正在进行的系统调用。 这是我对这个话题的理解,但我不确定它是否正确。
浏览 0
提问于2013-07-24
得票数 3
回答已采纳
1
回答
陷阱、软件中断和硬件中断之间的区别?
、
、
、
、
我只想知道他们之间的基本区别。 我在一些地方发现,陷阱本质上也被称为软件中断,或者类似于异常。 另外,软件中断和异常之间的基本区别是什么。 软件中断可以由INT指令产生,但是陷阱只能由某些场景产生,比如除以零?是那么回事吗? 对这个查询给出了一个合适的答案,包括中断陷阱和异常.。
浏览 3
提问于2017-01-11
得票数 2
1
回答
解决自旋锁问题
、
在Linux设备驱动程序中。当它引入自旋锁时,它给出了以下示例: 您的驱动程序正在执行,并且刚刚取出一个控制对其设备的访问的锁。当锁被持有时,设备发出一个中断,这将导致您的中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁。在中断处理程序中取出自旋锁是合法的;这是spinlock操作不休眠的原因之一。但是,如果中断例程与最初取出锁的代码在同一个处理器中执行,会发生什么情况呢?当中断处理程序正在旋转时,非中断代码将无法运行以释放锁。处理器会永远旋转。 如何解决这个问题?用信号灯?请帮帮忙。
浏览 5
提问于2012-05-30
得票数 2
回答已采纳
1
回答
这段代码如何在Linux内核中运行?
、
在linux内核中,在文件arch/arm/mach-exynos/cpuidle.c中,有以下代码: local_irq_disable(); cpu_do_idle(); local_irq_enable(); cpu_do_idle在哪里 dsb wfi mov pc, lr 在cpu_do_idle中,它执行“wfi”命令,表示等待中断。但是,我不理解的是,它在禁用irq之后进入cpu_do_idle。这是怎么发生的?
浏览 4
提问于2014-04-08
得票数 4
回答已采纳
2
回答
当一个新硬件在Linux中首次连接时会发生什么?
、
、
假设,我已经将一台设备连接到一台PC上。 问: Linux操作系统(Ubuntu)是如何实现连接新硬件设备的? 答:新连接的设备会引发中断(并且会做更多的事情)。 我的回答是正确的吗,至少是说新连接的设备引发中断的部分?
浏览 0
提问于2017-11-17
得票数 3
1
回答
IA32 IDT和linux中断处理程序
、
、
、
在IDT中,每一行都有一些名为"DPL“的位--描述符特权级别,内核为0,普通用户为3(可能还有更多级别)。我不明白两件事: 这是运行中断处理程序代码所需的级别吗?或者触发导致它的事件?因为system_call有DPL=3,所以在用户模式下我们可以做“int0x80”。但是在linux中,只有内核处理中断,所以我们可以触发事件,但不能处理它?即使我们有正确的CPL。 在linux中,只有内核处理中断,但是当中断(或陷阱)发生时,什么使我们进入内核模式? 对不起任何错误,我对所有这些东西都是新手,我只是试着去学习。
浏览 5
提问于2015-06-28
得票数 1
6
回答
在中断处理程序中传递参数
、
假设我们正在为裸机MCU编写固件,即没有操作系统。我被告知这是不可能的(非法?)将参数传递给中断处理函数? 我不能确切地理解为什么会这样?这有什么问题吗? PS。在一些RTOS-es,嵌入式Linux等中是否可能这样做,或者它根本就是错误的?
浏览 0
提问于2010-12-07
得票数 3
回答已采纳
1
回答
Linux内核是一个进程、一个线程还是一些被动的东西来处理来自应用程序的请求?
、
、
、
、
看起来linux内核正在运行一个进程。但是我看到一些回答说linux内核既不是进程也不是线程。所以我希望有人能解释一下这个概念。
浏览 1
提问于2014-03-13
得票数 0
2
回答
陷阱与例外的区别
、
、
参加操作系统课程。所以我明白陷阱和异常都可以被认为是软件中断..。所以它们既是内部的,也是同步的。然而,我似乎找不出这两种定义之间的区别。因此,如果有人不介意解释和列举一些例子,我们会非常感激的。 谢谢。
浏览 0
提问于2019-07-03
得票数 1
回答已采纳
3
回答
为什么infite循环不锁定操作系统?
、
、
假设您有一个进程运行了如下代码 while (true) { //do nothing } 为什么这不阻止操作系统呢? 我知道操作系统有一个进程调度程序(比如Linux上的CFS ),但是这实际上是如何工作的呢? 如果代码正在执行无限循环,什么时候进程调度程序有时间执行自己的代码? 难道不需要一些外部运行来中断运行中的代码才能返回到操作系统吗?如果是这样的话,像Linux这样的操作系统是如何管理的呢? CPU有内置功能来管理这种用例吗?
浏览 5
提问于2021-06-13
得票数 1
回答已采纳
2
回答
为什么访问未映射的位置不会产生硬件异常(Microblaze)
、
、
、
、
我想编写我的代码来处理Microblaze上的TLB错误,当然,通过它,页面表等等。这一切都是在OVPsim上完成的。 在我学习的过程中,我编写了这个小程序集来引用未映射的位置(0x1000000) --我在VM上以特权代码的形式运行这个程序集: ori r20, r0, 0 ori r12, r0, 0x1000000 /* next line should break it */ sw r20, r12, r0 (也就是说,将r20 == 0的内容明显地写到ORing r12 == 0x1000000和r0 == 0 => 0x1000000形成的地址中。) 但是,GDB没有跳转到
浏览 6
提问于2014-11-17
得票数 6
回答已采纳
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
python中断和异常处理
异常值检测和处理
JS错误和异常处理
异常与错误,以及异常处理和自定义异常
重学计算机组成原理-异常和中断
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券