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

请教一下,进程调度时在导入新进程的cr3之后,CPU是怎么区分当前正处于内核而不去使用新的页目录呢?

    来源: 互联网  发布时间:2015-11-18

    本文导语:  看到内核详解上说不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射,内核就不用cr3吗?实在搞不明白,希望大虾详细讲解一下 | 内核当然会用cr3,在每个进程的页目录项中,...

看到内核详解上说不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射,内核就不用cr3吗?实在搞不明白,希望大虾详细讲解一下

|
内核当然会用cr3,在每个进程的页目录项中,都把最后3-4G的页目录项映射到了同一物理内存空间,也就是说每个进程的页目录项中的3-4G的映像关系完全相同!!!!
所以从任何一个进程在运行时进入内核空间,无非就两种情况:
1.从系统调用进入内核态,此时内核用的就是当前进程的CR3,就是所谓的进程上下文中,内核在运行时用的是3-4G的线性空间,在MMU处理时,找到CR3,查找到此时的页目录项与页表,因为每个进程的3-4G空间所映射的物理地址完全一样,所以MMU一定能找到内核相应函数所对应的物理地址,并且任何一个进程在切换到内核空间时,只要它用的是同一个函数,其物理地址就完全一样
2.在中断发生的情况下,比如进程A在运行时,突然发生一个中断,此时由于没有进程调度,所以进入到进程A的内核态下时其CR3并没有变化,其页目录项与页目录表也没有变化,那么中断处理函数用的就完全是进程A的页表,由于内核线性地址在3-4G空间,只要内核不刻意访问用户空间,它所用到的地址就与用户空间相互隔离。假定此中断处理程序属于进程A所用的一个设备驱动,此时中断一处理完毕,退出中断,回到用户空间,并继续运行,假定此时产生时钟中断,并且重新调度到进程B,此时CR3发生了变化,所有页表采用了进程B的页表,假定上次的那个中断又到来,切换到内核态,由于其3-4G的映射完全没有变,所以内核代码进行了平稳过度,但是此时0-3G的所有页表映射与进程A不同,所以中断处理程序不能假定此时的0-3G的线性地址就是进程A的,此时它已是进程B的,这就是所谓的中断上下文,通过current宏所访问到的就不再是进程A的PCB结构了,也就不能用current宏来访问其内容,因为已经没有任何意义,除非你是想知道在任一时刻所发生的中断所处的进程上下文,这就是设备驱动程序中为何要禁止在中断处理程序中直接与使用这个设备的进程进行数据交互的原因了!!!

    
 
 

您可能感兴趣的文章:

  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • 请教,进程通讯问题,除了父子进程能进行通讯外,任意两个进程都可以吗?
  • 请教--父进程监控子进程,欢迎高手进来探讨!!!
  • 请教一个关于子进程和父进程竞争的问题
  • 请教急:shell怎么实现进程监控,重启进程
  • 请教如何编程实现父进程产生多个子进程
  • 请教:进程创建和进程状态有关问题
  • 请教:在Linux下怎么样检测一个进程是否是僵尸进程??
  • 小妹请教各位大哥,在unix下,如何显示进程,和kill掉进程?
  • Linux下请教一个父进程杀死子进程的问题.
  • 各位大侠,请教一个LINUX存储管理的问题,在页换出时系统要锁住正在被换出的进程,若系统不锁住该进程,会发生什么状况?
  • 请教一个多进程编程问题
  • 请教怎么根据进程输出的日记文件内容判断来重起进程?
  • 请教:子进程关闭
  • 请教进程问题
  • 请教2.6内核下如何进行文件的读写? iis7站长之家
  • 请教一个父子进程控制的问题
  • 请教进程与变量的问题
  • 请教进程通信
  • 请教:如何利用shell script 去 kill 某个进程
  • 请教下linux达人 相关版本2.6的进程调度
  • 新手,请教一个linux线程调度问题
  • 大家好!请教一个关于LINUX进程调度的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • 请教一个linux进程内核栈的问题
  • 【请教】怎么修改linux内核参数
  • 请教,linux内核协议栈中,从内核往驱动发送的报文(注意是下行,不是上行),如何从sk_buff判断是组播数据报文还是组播协议报文????
  • 万能的CSDN啊,100分请教高手一个编译内核传参的问题!
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 80分请教关于内核的module机制
  • 请教内核ppp代码的内容——在线等
  • 请教高手:如何学习内核编程?
  • 请教内核编译的问题!
  • 请教Linux内核编译的问题
  • 初学Linux内核编译,几个问题请教一下
  • 请教:想学LINUX内核编程,请指点
  • 内核安装错误,请教!
  • 请教内核树的问题
  • 请教部分内核参数的意义
  • 100分请教高手一个Linux内核ARM汇编的问题
  • 请教linux的学习,怎么学? 内核开发找什么样的工作?
  • 内核相关项目请教
  • 请教2.6内核下如何进行文件的读写?
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


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

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

    浙ICP备11055608号-3