unix内核概述.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unix内核概述

Unix内核概述 进程/内核模式 CPU既可以运行在用户态下,也可以运行在内核态下。 进程是动态的实体,在系统内通常只有有限的生存期。创建、撤销及同步现有进程的任务都委托给内核中的一组例程来完成。 内核本身并不是一个进程,而是进程的管理者。 每个系统调用都设置了一组识别进程请求的参数,然后执行与硬件相关的CPU指令完成冲用户态到内核太的转换。 Unix系统还包括几个所谓内核线程的特权进程,它具有以下几个特点: 它们以内核态运行在内核地址空间; 它们不与用户交互,因此不需要终端设备; 它们通常在系统启动时创建,然后一直处于活跃状态知道系统关闭。 用户态与内核之间的切换: 处于用户态的进程A发出系统调用之后,进程切换到内核态,系统调用被执行。然后,知道发生定时中断切调度程序在内核态被激活,进程A才恢复在用户态下执行。进程切换发生,进程B在用户态开始执行,知道硬件设备发出中断请求。中断的结果是,进程B切换到内核态并处理中断。 几种方式激活内核例程: 进程调用系统调用; 正在执行进程的CPU发出一个异常信号,异常是一些反常情况,例如一个无效的指令。内核代表产生异常的进程处理异常。 外围设备箱CPU发出一个中断信号以通知一个时间的发生,如一个要求注意的请求、一个状态的变化或一个I/O操作已经完成等。每个中断信号都是由内核的中断处理程序来处理的。因为外围设备与CPU异步操作,因此,中断在不可预知的时间发生。 内核线程被执行。因为内核线程运行在内核态,因此必须认为其相应程序是内核的一部分。 进程实现 每个进程由一个进程描述符表示,这个描述符包含有关进程当前状态的信息。 当内核暂停一个进程时,就把几个相关处理器、寄存器的内容保存在进程描述符中。这些寄存器包括: 程序计数器和栈指针寄存器; 通用寄存器; 浮点寄存器; 包含CPU状态信息的处理器控制寄存器; 用来跟踪进程对RAM访问的内存管理寄存器。 当内核决定恢复一个进程时,它用进程描述符中合适的字段来装卸CPU寄存器。因为程序计数器中所存的值指向下一条将要执行的指令,所以进程从它停止的地方恢复执行。 当一个进程不在CPU上执行时,它正在等待某一事件。Unix内核可以区分很多等待状态,这些状态通常由进程描述符队列实现。每个(可能为空)队列对应一个等待特定事件的过程。 可重入内核 所有的unix内核都是可重入的,这意味着若干个进程可以同时在内核态下执行。在单处理器系统上只能有一个进程真正运行,但是有许多进程可能在等待CPU或者某一个I/O操作完成时在内核态下被阻塞。 提供可重入的一种方式是编写函数,以便这些函数只能修改局部变量,而不能改变全局数据结构,这样的函数叫可重入函数。 可重入内核可以包含非重入函数,并且利用锁机制保证一次只有一个进程执行一个非重入函数。 如果一个硬件中断发生,可重入内核能挂起当前正在执行的进程,即使 进程处于内核态。因为这样能够提高中断设备控制器的吞吐量。 内核控制路劲表示内核处理系统调用、异常或中断所执行的指令序列。 在最简单的情况下,CPU发出一条指令到最后一条指令顺序地执行内核控制路劲。然后,当下述时间发生时,CPU交错执行内核控制路径: 运行在用户态下的进程调用一个系统调用,而相应的内核控制路径证实这个请求无法立即得到满足;然后内核控制路径调用调度程序选择一个新的进程投入运行。结果,进程发生切换。第一个内核控制路径还没有完成,而CPU又重新开始执行 其他的内核控制路径。在这种情况下,两条控制路径代表两个不同的进程在执行。 当运行一个内核控制路径时,CPU检测一个异常。第一个控制路径被挂起,而CPU开始执行合适的过程。当这个过程结束时,第一个进程恢复执行。在这种情况下,两个控制路径代表同一个进程在执行。 当CPU正在运行一个启用了中断的内核控制路径时,一个硬件中断发生。第一个内核控制路径还没有执行完,CPU开始执行另一个内核控制路径来处理这个中断。当这个中断处理程序终止时,第一个内核控制路径恢复。在这种情况下,两个内核控制路径运行在同一进程的可执行上下文中,所花费的系统CPU时间都算给了这个进程。然而,中断处理程序无需代表这个进程运行。 在支持抢占式调度内核中,CPU正式运行,而一个更高优先级的进程加入就绪队列,则中断发生。在这种情况下,第一个内核控制路径还没有执行完,CPU代表高优先级进程又开始执行另一个内核控制路径。只有把内核编译成支持抢占式调度之后,才能出现这种情况。 进程地址空间 每个进程运行在它的私有地址空间。在用户态下运行的进程涉及到私有栈、数据区和代码区。在内核态运行时,进程访问内核的数据区和代码区,但是使用另外的私有栈。 因为内核是可重入的,因此几个内核控制路径(每个都与不同的进程相关)可以轮流执行。在这种情况下,每个内核控制路径都引用它自己

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档