当前位置:  技术问答>linux和unix

操作系统:关于任务切换,中断

    来源: 互联网  发布时间:2017-03-24

    本文导语:  在学习操作系统内核时,有一个问题一直困扰着我,找了很多资料都没有具体提及。 比如,当运行在优先级3的一个进程遇到时钟中断,势必会跳转到时钟中断函数,我想知道,在产生中断这一刻,CPU具体做了哪些事...

在学习操作系统内核时,有一个问题一直困扰着我,找了很多资料都没有具体提及。

比如,当运行在优先级3的一个进程遇到时钟中断,势必会跳转到时钟中断函数,我想知道,在产生中断这一刻,CPU具体做了哪些事,具体点就是CS,SS怎么变化,还有DPL,CPL怎么变化。我知道这当中跟TSS有关,具体加载TSS哪些东西。

还有就是,在处理完中断函数时切换到优先级1的进程,执行iretd指令时,CS,SS,DPL,CPL怎么变化,可以正常切换吗?

其实就是不同优先级代码之间的切换,关于优先级的检查。

希望高手指点,谢谢!

|
中断打断进程:
进程正在执行一条指令,此时cs,eip指向下一个将要执行的指令,如果这时发生中断,那么CPU控制单元:
 1、确定中断关联的向量,就是中断号,跟中断线对应的!
 2、读idtr,其中存放的地址指向中断描述符表的对应中断号的位置,而中断描述符表,及IDT,中存放的是段选择符,对应的段描述符则指定了中断处理程序入口地址。
 3、所以需要从gdtr寄存器获取GDT的基地址,再根据IDT中的段选择符中的index找到对应的段描述符。
 4、将当前CS中描述CPL的两位与 对应中断处理程序的段描述符的DPL进行比较,如果 CPL小于DPL,证明中端的特权低于被中断的程序的特权,这样会产生一个“General protection”异常。
 5、检查特权级是否发生变化,即CPL是否跟DPL不同,如果不同,则使用新的特权级相关的栈:
       读tr寄存器,获取被中断进程的TSS段地址
       用于新特权级相关的栈和栈指针装载ss,esp寄存器
       在新的栈中保存ss,esp以前的值,这个就跟旧的栈相关连,以便恢复时回到初始位置。
 6、在栈中保存eflags,cs,eip。
 7、将中断处理程序入口地址装载cs,eip。地址见步骤2
 8、跳转至中断处理程序。

中断处理完毕回到被中断的进程:
 1、用上面保存在栈中的以前进程的寄存器值,填充cs,eip
 2、同样弹出栈中保存的以前进程的栈寄存器值,填入ss,esp
这样就回到了原来的进程

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 什么样的操作最耗费服务器的IO操作? iis7站长之家
  • 微内核多任务分时图形化操作系统 ulios
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 无操作系统下对U盘的操作
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问16位操作系统和32位操作系统的区别?
  • c/c++ 操作符优先级参考
  • 基于linux操作系统之上操作LCD问题,急???
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • Plesk 中操作和设置 Docker 容器
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3