Linux操作系统内核原理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核基础 第一事业部 王 风 内容 进程管理 内存管理 虚拟文件系统 Linux系统结构 Linux系统执行框架 进程和线程的区别 线程是系统最小的执行流单位,一个线程就是一个执行过程,是任务调度的基本单位。 进程是线程和资源的容器,一个以上的线程组成一个进程,在同一个进程中的线程共享进程资源。 Linux内核进程和线程表示 Linux现行内核淡化了进程和线程的关系,原则上不区分进程和线程。 在Linux内核中使用(struct task_struct)表示一个任务(Linux中称为进程,也可以称为线程) 多个 task_struct 共享资源和进程空间,实际就构成了一个进程(线程组),这些task_struct实际就是这个进程的线程,通常在Linux书上将task_struct直接就称为一个进程。 Linux内核进程和线程表示 Linux进程组织关系 比较Windows进程线程管理 Windows进程使用KPROCESS表示进程对象,能够通过句柄单独操作进程对象 线程是通过ETHREAD线程块来表示,多个线程块链接到KPROCESS的执行体线程块链表头上。(结构如下图) 任务调度 在多任务系统中,任务调度很重要,调度策略决定了系统最终性能和功能。 任务调度有多种策略, 比如基于优先级的调度,ucOS-II上就是这种,谁的优先级高就谁占有CPU 还有基于时间片的,一个任务执行时间结束的就执行下一个 …… 调度过程 进程切换 对于多进程系统,任务调度的过程中伴随进程切换,从真实的一个进程切换到另外一个不共享资源的进程,虚拟内存地址映射表(PGD)必须进行切换,还有其它资源数据也需要跟着切换。 进程切换通常比较耗时,效率很低,需要执行切换TLB,回写Cache等低效率操作。 Linux多线程机制 原子操作 自旋锁 信号量 读写锁 互斥量 死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象;表现为程序假死,不再被调度。 避免死锁有 银行家算法 优先级反转 高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转。 此时高优先级任务和中等优先级任务之间没有任何共享资源但执行顺序却发生了倒置,这种情况称为优先级反转,而高优先级任务因为等待低优先级任务释放资源而阻塞的情况则不称为优先级反转 优先级反转 消除优先级反转 优先级继承策略:继承现有被阻塞任务的最高优先级作为其优先级,任务退出临界区,恢复初始优先级;Linux内核的实时互斥量就是使用这个策略。 优先级天花板策略(封顶策略):指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级;ucOS的互斥量就是使用这个策略。 Linux内存管理 Linux进程空间使用虚拟存储空间方式管理的(通过MMU部件将离散的物理地址拼接成连续的虚拟地址空间)(ucLinux除外) Linux内核使用伙伴管理页式内存 并在伙伴的基础上发展了slab/slob/slub算法,用于内核小内存的分配,以弥补页式分配浪费内存的不足 Linux进程虚存空间划分 Linux内存空间数据结构表示 分页式内存管理 Linux系统中使用了同时用于64位和32位系统的通用分页模型。 模型中使用四级页表,32位系统只使用PGD和PTE两项 Linux物理内存管理 Linux内核为了适应不同的硬件架构,对不同性能的内存分成不同的节点(Node),内存模型如下图: 物理页面管理 物理页面使用伙伴(Buddy)算法进行管理 算法核心是将页面按 1,2,4,8,16,2i 个连续页进行分割,放在11个链表上,i也就是通常所说的order; slab分配器 因为基于Buddy算法的内存管理,只能精确到页面大小,对于内核中需要大量申请的小内存块,为了满足这个需求,在Buddy的基础上增加了slab分配器 Linux文件系统核心VFS VFS(虚拟文件系统)为具体文件系统提供抽象出一组通用的接口来表示具体的文件系统。 万物皆文件,硬件设备也是文件 VFS包含下面几种数据类型 file_system_type 文件系统类型 vfsmount 挂在点对象,也就是文件系统类型实例 super_block 超级块,描述文件系统的控制信息、参数等 inode 索引节点,保存文件的相关信息,是文件的元数据 dentry 目录项,就是文件夹 file 文件对象 file_struct 打开的文件对象 VFS各数据对象之间的关系 The End * 了解Linux内核核心功能的基本原理结构,引导源码阅读 计算机硬件 体系结构相关代码 进程管理 内存管理 文件系统 模块 模块 接口 设备 驱动 驱动 接口 系统

文档评论(0)

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

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

1亿VIP精品文档

相关文档