Linux内核--进程-Read.PPT

  1. 1、本文档共168页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核--进程-Read

第六章 Linux内核 6.1 通用内核职责 总体来说,内核负责抽象与管理一台机器的硬件资源以及这些资源在执行程序之间的共享。内核必须支持进程、文件和其他资源,以使它们能够通过传统UNIX系统调用来进行管理。 6.1.1 资源抽象 资源抽象:是指创造软件(通常情况)来简化必须应用于硬件的操作以使该硬件能恰当地工作。例如,一个设备驱动程序就是一个软件资源抽象。 计算机部件被抽象为进程和资源。 进程管理:操作系统中的所有执行进程抽象的所有方面称为进程管理。 资源管理:是创建资源抽象以及在进程执行时为它们分配和回收系统资源的过程。 UNIX试图将除CPU和可执行内存之外的每一种资源都视为一个文件。 6.1.2 共享资源 进程可以请求、使用并且释放资源。当一个进程请求资源时,它通常需要对该资源的独占使用。对一个资源的独占作用意味着当一个资源被分配给一个进程时,没有其他进程能够访问这个资源。 资源管理有两个关键的方面:对获得资源的竞争和对独占使用的确保。 资源管理程序示意图 资源的独占使用 进程对CPU的独占使用--通过确保其他进程无法打断一个进程的执行(除非那些其他进程比当前运行的进程更重要) 内存的独占使用--是通过硬件内存保护机制来保证的。这些机制禁止CPU访问那些没有分配给当前使用CPU的进程的内存。 设备的独占使用是通过以下方式来完成的:禁止CPU对一个设备执行I/O指令,除非是为已分配该设备的进程而执行。 管态与用户态 管态(supervisor mode) :内核执行时CPU处于管态,也称为内核态(kernel mode) 用户态(user mode) :所有其他操作系统部件执行时CPU处于用户态 通过CPU模式位区别 当CPU处于管态时,被认为正在执行信任软件,硬件将会执行在其指令表中的任何指令并且可以访问任何内存地址。 当CPU处于用户态时 ,它被认为在执行非信任软件,硬件将无法执行特权指令(privileged instruction)(例如I/O指令),并且只能访问对当前使用CPU的进程所分配的内存。 6.1.3 操作系统的功能划分 进程与资源管理 存储管理 设备管理 文件管理 6.2 内核的组织结构 单内核结构 一个模块是一个独立的软件单元 6.2.1 中断 中断是一个产生自外部部件(例如,设备)并由CPU硬件捕获的电子信号,它使CPU开始执行一个程序序列,而该程序序列与中断发生时CPU正在执行的程序无关。 6.2.2 使用内核服务 用户程序将内核看作一个大的抽象数据类型(ADT)(类似于一个对象),它保持状态并在其公共接口——系统调用接口上具有大量函数。 内核软件不具有任何内部执行线程或进程,它只是一组保持状态的函数和数据结构的集合。任何使用内核服务的进程——这种进程是一个活动实体——通过(在逻辑上)使用一个对POSIX的过程调用来产生内核请求。 即一个在内核之外执行的进程当它产生系统调用时开始执行内核代码。 内核作为ADT 管态与用户态之间的切换 陷阱指令(trap instruction)是一条用于将CPU转移到一个预定地址(有时作为一个指令操作数的函数)并将其自身切换为管态的指令。 陷阱指令并不是一条特权指令,因此任何程序都可以执行一条陷阱指令。 转移指令的目的地址是由一组地址预先决定的,它们存放在配置为指向内核代码的管理空间中。 陷阱指令操作 完成一个系统调用所需执行操作 1. 对于系统调用F,stub(代码存根)过程用于调用F(该stub也称为F)。 2. stub被链接到(用户空间)正调用的程序。 3. 当一个进程在运行期执行对F的调用,控制被转换到stub过程而不是直接转换到内核。 4. stub过程确认传递到内核过程的参数值。另外,在原则上它可以验证调用stub过程的进程。 5. stub过程执行一条陷阱指令转换CPU到管态,然后它(通过一张包含内核函数入口点的内核表间接)转移到目的内核函数的入口点。 6.2.3 串行执行 通常内核函数执行时处于临界区。也就是说,一旦进程调用一个系统函数,该函数通常要运行到结束并在CPU分配给不同的进程之前返回。这种类型的内核是单线程(single-threaded)的。 IRQ可以中断系统调用的执行来运行ISR。 6.2.4 守护进程 习惯上,守护进程执行名字以字符“d”结尾的程序。 典型守护进程 syslogd、klogd、crond 认识Linux内核 内核源程序目录结构 内核源程序目录结构 内核源程序代码安装在/usr/src/linux目录下 Documentation:文档 arch:体系结构相关的代码 Drivers:外围设备的软件驱动程序 Fs:Linux支持的所有文件系统 include:这个目录包含了Linu

您可能关注的文档

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档