软中断

Linux 时钟系统漫游

你离开我真会死。 提交于 2020-01-10 23:29:41
缘由: 在开发KVM虚拟机过程中,不可避免的会跟虚拟机时钟打交道 目前存在的问题是:一旦出现多个虚拟机运行在同一个CPU上,造成足够多的负载时,由于调度不及时导致虚拟机时钟中断的频率将会变慢 在x86上的虚拟机貌似没有这个问题,借此机会打算梳理一下整个Linux 时钟系统,也不一定能解决,但是至少可以理一下思路 时钟贯穿整个Linux 执行周期,千丝万缕,我们就从最直观的 时钟中断 切入,循序渐进,看看Linux 时钟的演化过程(本篇不涉及动态时钟,后续有机会可以继续分析)。 时钟中断: 1. 时钟中断到来时,系统首先就是要更新墙上时间:update_wall_time 与时钟中断和墙上时钟紧密相关的一个变量是jiffies。这个变量记录着系统启动后产生了多少次时钟中断,所以每个中断来后自增。 与时钟中断相关的重要配置是CONFIG_HZ,这个是编译时配置文件决定,在我这里CONFIG_HZ=256表示一秒钟jiffies增加256次。 但系统时钟并不用jiffies来更新,在update_wall_time函数内使用clock->read(clock)读取时钟源,并更新系统时钟xtime。这个时钟源往往是之前注册好的主板上恒定的硬件时钟 内核中很多变量都需要用jiffies计算,而不是人所需要的xtime,所以对内核来说jiffies比xtime更有用。 2.

linux shell 基础语法B

岁酱吖の 提交于 2020-01-10 18:39:26
接着之前的内容继续讲shell编程的基础。 这部分还是先要巩固重定向的使用,以及创建自己的文件描述符,在编写shell脚本中关注临时重定向和永久重定向的用法。 (1)< << (2)> >> 为了区分如上的重定向符号,大家搞懂以下2个例子就行: cat > file <<eof; cat >> fileA <fileB 实际使用中输入重定向还是比较少,多数是输出重定向 &> 表示stdout和stderr都重定向 对于文件描述符,我们不光要掌握0,1,2,还要能够自己创建自己的文件描述符,且在shell编程中与默认的标准文件描述符进行组合使用。比如说要恢复文件描述符就是一个例子。 exec 3 >&1 exec 1> testfile ... ... exec 1>&3 ... ... 以上是输出重定向的恢复,输入重定向如下 exec 6 <&0 exec 0 <filein ... exec 0 <&6 关闭文件描述符 exec 3 >&- 还有一种<>读写文件描述符的,慎用,最好是读完后再重定向写入,不然shell维护的内部指针会把文件内容搞得很混乱。 创建临时文件和目录 mktemp file.XXXXXX mktemp -t 创建在/tmp下面且返回绝对路径 mktemp -d创建目录 tee的使用 tee -a 重定向讲完,再讲讲脚本的控制。脚本的控制主要是信号的处理。

软中断和硬中断

有些话、适合烂在心里 提交于 2020-01-04 14:34:54
1、中断: 通常被定义成一个事件,该事件改变处理器执行的指令顺序。这样的事件与cpu芯片外部电路产生 的电信号相对应。 2、中断的产生: 每个能够发出中断请求的硬件设备控制器都有一条称为IRQ的输出线(中断线)。所有的IRQ线都 与一个中断控制器的输入引脚相连,中断控制器与cpu的intr引脚相连。 3、中断向量: 每个中断由0-255之间的一个8位数来标识。称为中断向量。 4、中断描述符表: IDT是一个系统表,它与每一个中断或者异常向量相联系,每一个向量在表中有相应的中断处理程 序的入口地址。cpu的idtr寄存器执行IDT表的物理基地址。 5、中断的硬件处理: 在内核被init进程初始化后,cpu运行在保护模式下。当执行一条指令后,sc和eip这对寄存器包 含了下一条将要执行的指令的逻辑地址。在执行这条指令之前,cpu控制单元会检查在运行前一条指令时是 否发生了一个中断。如果发生了,cpu控制单元处理中断。 软中断: 软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。 硬中断是外部设备对cpu的中断。 软中断通常是硬中断服务程序对内核的中断。(中断服务程序和中断处理程序不同) 信号则是由内核或者其他进程对某个进程的中断。 理解:因为每个进程空间或者线程空间都是在一定程度上相对逻辑独立的,类似于外部设备DMA相 对于cpu。所以从理论上说

异常、中断、陷阱

。_饼干妹妹 提交于 2020-01-04 14:29:13
int 3 指令是常见的 断点中断,研究这个的时候发现个系统的一些机制有关。就研究了一下中断的分类,还有异常和陷阱。下面是我百度之后的一些总结: 中断的分类:外中断和内中断 根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处理。 根据中断源产生的条件,可把中断分为外中断和内中断。 外中断是指来自处理器和内存外部的中断,包括I/0设备发出的I/O中断、外部信号中断(例如用户键人ESC键)。各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。外中断在狭义上一般被称为中断。 内中断主要指在处理器和内存内部产生的中断。内中断一般称为陷阱(trap)或异常。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。 为了按中断源的轻重缓急处理响应中断,操作系统为不同的中断赋予不同的优先级。各中断源的优先级在系统设计时给定,在系统运行时是固定的。而处理器的优先级则根据执行情况由系统程序动态设定。 除了在优先级的设置方面有区别之外, 中断和陷阱还有如下主要区别: 1、陷阱通常由处理器正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的

5.信号的接收与处理

我是研究僧i 提交于 2020-01-01 00:26:47
一.基本的概念 1.中断 终止或者暂停当前正在执行的进程,转而去执行其他的任务。 硬中断:来自硬件设备的中断 软中断:来自其他程序的中断 2.信号 信号是一种软中断 ,可以把他看作是进程与进程,内核与进程通信的一种方式,它为程序的异步执行提供了技术支持。 3.常见的信号 SIGINI(2) 终端中断ctrl+c SIGQUIE(3) 终端退出信号ctrl+/ SIGABRT(6) 调用abort函数产生的信号 SIGFPE(8) 算术信号 SIGKILL(9) 死亡信号 SIGSEGV(11) 段错误信号 SIGALRM(14) 闹钟信号 SIGCHLD(17) 子进程结束信号 SIGCONT(18) 进程继续信号 SIGSTOP(19) 进程结束信号 SIGTSTP(20) 终端停止 4.不可靠信号(非实时) 1.编号小于SIGRGMI(34)的信号都是不可靠的,这些信号是建立在早期的信号机制上的,一个时间的发送可能会产生多次信号。 2. 不可靠信号不支持排队 ,因此在接收信号的时候可能会丢失, 如果一个信号发送个一个进程多次,它可能只接收到一次,其他的可能就丢失了 。 3.进程在处理这种信号的时候,哪怕进行设置了信号处理函数,当信号处理函数完毕后,会再次恢复成默认的信号处理函数。 5.可靠信号(实时) 1.位于[SIGRGMI(34),SIGRGMI(64)]区间的都是可靠信号

信号中断与异步信号中断安全编程

故事扮演 提交于 2020-01-01 00:21:50
1、什么是中断? 1.1、什么是中断 外围设备的速度远低于CPU的速度,所以为提高CPU计算效率,现代计算机变内核主动为硬件主动,只在硬件需要的时候才发送信号,通知内核来处理数据。这样外围设备与内核的协作方式即为中断机制。而设备发送的信号即为中断,其本质为一种特殊的电信号。 硬中断处理流程: 1、各外围设备与中断管理器各输入引脚相连; 2、中断管理器与CPU之间只存在一条中断管线; 3、设备发送一个中断到中断管理器; 4、中断管理器发送对应电信号给CPU。 5、CPU中断当前工作,开始处理中断,并通知操作系统。 6、操作系统调用中断处理程序。 中断的特点: 1、不同的设备对应不同的中断,并被用数字标识; 2、对应的设备需要对应的中断处理程序; 3、中断值即中断请求线(IRQ),被关联到不同的数值量,如IRQ 0,中断亦可动态分配。 4、设备中断信号可能在任意时刻到来,不与CPU时钟同步,即异步硬件中断。 糕富帅CPU来到女儿国,女儿国的妹子们(中断集合)精心打扮,总在认为打扮完美的时刻向糕富帅抛媚眼露大腿扮性感,引起糕富帅的注意。糕富帅玩弄妹子的手段高超,经验丰富,与最靓的妹纸牵手,喜欢为不同的妹子编号并制定不同的攻略策略,总是上半场激烈,下半场缠绵,中场偷腥不断,并在腻味之后回归原始的浪荡生活。妹纸们总是很傻很天真,屡败屡战,不停地打扮自己,完美自己,期待着与糕富帅的重新开始。

硬中断与软中断的区别

强颜欢笑 提交于 2019-12-25 03:37:41
硬中断与软中断的区别 作者:Danbo 时间:2015-7-9 硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成

硬中断与软中断的区别!

霸气de小男生 提交于 2019-12-25 03:37:08
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I

硬中断和软中断

女生的网名这么多〃 提交于 2019-12-25 03:36:58
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I

硬中断和软中断的区别

♀尐吖头ヾ 提交于 2019-12-25 03:36:50
硬中断 1、硬中断是由硬件产生的。比如像磁盘、网卡、键盘、时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2、处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,他可以在没有主CPU的支持下,可以同时处理多个中断)。 3、硬中断可以直接中断CPU、它会引起内核中的相关代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4、对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或成为调度器)可以调度多任务。 软中断 1、软中断的处理非常像硬中断。然而仅仅是由当前正在运行的进程所产生的。 2、通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据i/O模型的不同,进程或许会挂起直到I/O完成,此时内核调度器会选择另一个进程去运行。I/O可以在进程之间产生调度过程通常和磁盘I/O的方式是相同的。 3