精华内容
下载资源
问答
  • 中断调用过程

    千次阅读 2013-04-25 14:56:35
    从触发方式上看,可以认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是...

    2)具体的切换操作

    从触发方式上看,可以认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本上也是一致的,关于它们的具体区别这里不再赘述。关于中断处理机制的细节和步骤这里也不做过多分析,涉及到由用户态切换到内核态的步骤主要包括:

    [1] 从当前进程的描述符中提取其内核栈的ss0及esp0信息。

    [2] 使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个

    过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一

    条指令。

    [3] 将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始

    执行中断处理程序,这时就转到了内核态的程序执行了。

    展开全文
  • 1.中断描述符表(IDT),将每个异常或中断向量分别与它们的处理过程联系起来。与GDT和LDT类似,IDT也是由8字节长度的描述符组成。IDT空描述符的存在标志位必须是0。IDT表可以驻留在线性地址空间的任何地方,处理器使用...

    1.中断描述符表(IDT),将每个异常或中断向量分别与它们的处理过程联系起来。与GDT和LDT类似,IDT也是由8字节长度的描述符组成。IDT空描述符的存在标志位必须是0。IDT表可以驻留在线性地址空间的任何地方,处理器使用IDTR寄存器来定位IDT表的位置。


    LIDT指令可以把内存中的限长值和基地址操作数加载到IDTR寄存器中,该指令仅能由当前特权级CPL是0的代码执行,通常被用于创建IDT时的操作系统初始化代码中。SIDT作用相反,但可以在任何特权级执行。

    2.IDT描述符

    IDT表中可以存放3种类型的门描述符:中断门描述符、陷阱门描述符、任务门描述符。先介绍中断门描述符


    注:上面过程入口点偏移,和代码段描述符的基地址不同,这里入口点偏移值代码中断处理程序在.text段中的偏移量。

    3.异常和中断处理过程

    当相应一个异常或中断时,处理器使用异常或中断的向量作为IDT表中的索引。如果索引值指向中断们或陷阱门,则处理器使用与CALL指令操作调用门类似的方法调用异常或者中断处理过程。如果索引值指向任务门,则处理器使用与CALL指令操作任务门类似的方法进行任务切换,执行异常或中断处理过程。

    下图介绍中断过程调用。门中的段选择符指向GDT或LDT中的可执行代码段描述符。门描述符中的偏移字段指向异常或中断处理过程的开始处。



    4.中断任务处理

    当通过IDT中的任务门来访问异常或中断处理过程时就会导致任务切换。IDT中的任务门会引用GDT中的TSS描述符。


    展开全文
  • 中断处理调用过程

    千次阅读 2010-03-10 15:25:00
    对于中断,Linux分了以下几类:trap、system、call和intr(call还不明白)。trap类型15,特权级0(高);system类型15(怀疑是不是代码错了),特权级3(低);call类型12,特权级3;intr类型14,特权级0。 中断号...

          对于中断,Linux分了以下几类:trap、system、call和intr(call还不明白)。trap类型15,特权级0(高);system类型15(怀疑是不是代码错了),特权级3(低);call类型12,特权级3;intr类型14,特权级0。

          中断号为0~2、6~17的中断是trap,3~5和0x80是system,其余中断都是intr。

          对所有中断,产生中断处理器先从IDTR寄存器找到中断向量表(idt_talbe)在内存中的位置,再根据中断号找到处理函数。如果是中断号是0~17,则直接进入中断处理函数;如果中断号是0x80,则调用的函数是系统调用总控程序,总控程序根据参数调用对应的系统函数;如果是其他中断号,则中断实际上调用了do_IRQ()函数,在do_IRQ()中,函数调用irq_desc[]中对应的中断处理函数。

     

    展开全文
  • 子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点...

    1、两过程定义与作用 子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。
    子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
    子程序结构可简化程序,防止重复书写错误,并可节省内存空间。计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。

    中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。
    由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用中断方式。中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。

    2、两过程的联系与区别

    2.1联系 中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。

    2.2区别 中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。 两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完全中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。
    ————————————————
    版权声明:本文为CSDN博主「smilesundream」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/smilesundream/article/details/70237004

    展开全文
  • 1、两过程定义与作用 子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。 子 程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子...
  • 原语 操作系统或计算机网络用语范畴。...primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。 ...
  • 中断调用和子程序的调用的异同

    千次阅读 2013-06-06 18:08:00
    子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程...
  • 中断过程

    千次阅读 2019-08-31 20:38:20
    由于现在嵌入式开发主流是C,C属于高级语言,我们通常配置一些参数,重写中断服务函数就完事,对其中的过程一无所知,所以在本次博文中分享一些关于中断的理论知识。 中断执行过程通常含有一下五个过程: 中...
  • 在使用环接收串口数据时,在中断中向环区写入数据,在主程序中从环区读出数据。(测试芯片为雅特丽AT32F413) 上边做法经常出现环中数据没有完全读出时ringbuff1.length已经变为0的情况,并且出错一次有1个...
  • 函数调用过程

    万次阅读 多人点赞 2018-01-31 09:21:19
    今天突然看到有人私信我说一直没写函数调用过程(栈帧的形成和销毁过程)这篇博文,赶紧补上。 刚看的栈帧内容时,我很迷惑,我觉得栈帧创建和销毁很麻烦,几句话根本说不完,而且我好像描述不清楚他的过程,所以...
  • 499 cmpl $(NR_syscalls), %eax --- 对比一下传入的系统调用号是否合法 (gdb) ni 500 jae syscall_badsys ----- 不合法,则跳入到异常处理 (gdb) ni 502 call *sys_call_table(,%eax,4) ---合理,则进入我们的内核的...
  • 程序中断调用子程序有何区别

    万次阅读 多人点赞 2015-12-01 00:57:31
    中断过程发生的时间一般是随机的,CPU在执行某一主程序时受到中断源提出的中断申请,就发生中断过程,而中断申请一般由硬件电路产生,申请时间是随机的。也可以说,调用子程序是程序设计者事先安排好的,而执行...
  • 我要读磁盘上的一个数据,看王爽老师的汇编语言,中断例程13,你提供好了一些参数后就可以直接把数据读到对应的内存里,那么在中断程序里面是否是还会再发生中断呢?因为看书上都说磁盘要先准备你读的数据,然后准备...
  • 系统调用过程

    千次阅读 2017-03-26 16:27:43
    Linux系统调用简单分析
  • 中断中断处理过程

    万次阅读 多人点赞 2019-07-24 22:00:23
    1. 中断和异常的概念区别 Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。 不同点在于: 中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常...
  • 系统调用中断

    千次阅读 2015-10-27 22:16:19
    为了让程序有能力访问系统资源,也为了让程序借助操作系统做一些必须由操作系统支持的行为,每个操作系统都会提供一套接口,供应用程序调用,这些接口通常通过中断来实现。 现代操作系统中,CPU可以在多种不同的...
  • Linux系统调用过程分析

    千次阅读 2014-10-21 10:23:33
    linux的系统调用过程: 层次如下: 用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序 先说明一下,我们常说的用户API其实就是系统提供的C库。 系统调用是通过软...
  • 系统调用过程分析

    千次阅读 2013-10-13 11:32:06
    系统调用”是操作系统提供给用户程序进行调用的一些服务。...程序员在写程序的过程中会经常需要调用“系统调用”来完成特定的任务。我们以教学用的类Linux操作系统xv6为例,以打印操作为主线来说明系统
  • 中断和函数调用的异同
  • 中断、异常、和系统调用在OS和计算机组成原理中都经常被提到,很...异常与过程调用的区别 异常流的分类 中断 陷阱 故障 终止 Linux/x86-64 中的异常 总结 术语说明 逻辑控制流: 指的是程序从开始第一条...
  • 缺页中断处理过程

    千次阅读 2018-11-15 11:24:54
    缺页中断处理过程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 288,617
精华内容 115,446
关键字:

中断的调用过程