欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    Linux操作系统内核原理.ppt

    • 资源ID:174073       资源大小:262.50KB        全文页数:28页
    • 资源格式: PPT        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux操作系统内核原理.ppt

    Linux内核基础内容 进程管理 内存管理 虚拟文件系统了解Linux内核核心功能的基本原理结构,引导源码阅读Linux系统结构计算机硬件体系结构相关代码进程管理内存管理文件系统模块模块接口设备驱动驱动接口系统调用应用程序标准函数库kernelLinux系统执行框架地址空间内核功能函数内核线程1内核线程2内核线程3内核线程4内核线程5内核线程n进程1进程2进程3进程n用户态内核态进程和线程的区别 线程是系统最小的执行流单位,一个线程就是一个执行过程执行过程,是任务调度的基本单位。 进程是线程和资源的容器容器,一个以上的线程组成一个进程,在同一个进程中的线程共享进程资源。资源线程1线程2线程nLinux内核进程和线程表示 Linux现行内核淡化了进程和线程的关系,原则上不区分进程和线程。 在Linux内核中使用(struct task_struct)表示一个任务(Linux中称为进程,也可以称为线程) 多个 task_struct 共享资源和进程空间,实际就构成了一个进程(线程组),这些task_struct实际就是这个进程的线程,通常在Linux书上将task_struct直接就称为一个进程。Linux内核进程和线程表示taskstaskstaskstaskstasks进程1进程2进程3创建进程有几个函数fork exec clonestruct list_head *group_leaderstruct list_head thread_groupLinux进程组织关系init子进程1子进程2子进程3子进程4子进程5子进程6父进程children子进程slibing子进程slibing子进程slibing通过pstree命令可以显示出进程树比较Windows进程线程管理 Windows进程使用KPROCESS表示进程对象,能够通过句柄单独操作进程对象 线程是通过ETHREAD线程块来表示,多个线程块链接到KPROCESS的执行体线程块链表头上。(结构如下图)KPROCESSETHREADETHREADETHREAD任务调度 在多任务系统中,任务调度很重要,调度策略决定了系统最终性能和功能。 任务调度有多种策略, 比如基于优先级的调度,ucOS-II上就是这种,谁的优先级高就谁占有CPU 还有基于时间片的,一个任务执行时间结束的就执行下一个 调度过程中断或异常进入关中断执行区保存中断前所有的寄存器的内容到SP原则上是保存程序使用的所有寄存器a0-a4v0-v1EPC将当前的SP保存到任务结构体上任务状态段TSS任务上下文通过调度器策略算法求得下一个要执行的任务从任务结构体上取下SP指针从SP上恢复所有的寄存器的内容打开中断并返回恢复的位置执行进程切换 对于多进程系统,任务调度的过程中伴随进程切换,从真实的一个进程切换到另外一个不共享资源的进程,虚拟内存地址映射表(PGD)必须进行切换,还有其它资源数据也需要跟着切换。 进程切换通常比较耗时,效率很低,需要执行切换TLB,回写Cache等低效率操作。Linux多线程机制 原子操作 自旋锁 信号量 读写锁 互斥量线程A线程Ba = ii = 0a = ii=1临界区死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象;表现为程序假死,不再被调度。 避免死锁有 银行家算法获取B资源获取A资源获取A资源获取B资源任务A任务B优先级反转 高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转。 此时高优先级任务和中等优先级任务之间没有任何共享资源但执行顺序却发生了倒置,这种情况称为优先级反转,而高优先级任务因为等待低优先级任务释放资源而阻塞的情况则不称为优先级反转 优先级反转任务1任务2任务3获取资源释放资源获取资源后果,任务1将一直等待任务2运行完才能运行,实时性差消除优先级反转 优先级继承策略:继承现有被阻塞任务的最高优先级作为其优先级,任务退出临界区,恢复初始优先级;Linux内核的实时互斥量就是使用这个策略。 优先级天花板策略(封顶策略):指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级;ucOS的互斥量就是使用这个策略。Linux内存管理 Linux进程空间使用虚拟存储空间方式管理的(通过MMU部件将离散的物理地址拼接成连续的虚拟地址空间)(ucLinux除外) Linux内核使用伙伴管理页式内存 并在伙伴的基础上发展了slab/slob/slub算法,用于内核小内存的分配,以弥补页式分配浪费内存的不足Linux进程虚存空间划分操作系统内核环境变量参数堆栈数据(BSS)数据代码4G3G00 xC00000000 x00000000_end_edata_etext内核区用户区Linux内存空间数据结构表示mmcountmmappgd页目录表mm_structvm_startvm_endvm_opsvm_nextvm_startvm_endvm_opsvm_nextvm_area_structvm_area_structtask_structvm_startvm_endvm_opsvm_nextvm_area_structopenclosenopageswapinswaoutvm_operations_structopenclosenopageswapinswaoutvm_operations_struct虚存区虚存区进程虚存空间分页式内存管理 Linux系统中使用了同时用于64位和32位系统的通用分页模型。 模型中使用四级页表,32位系统只使用PGD和PTE两项页全局目录PGD 页上级目录PUD 页中级目录PMD页表PTE页内偏移线性地址 64位cr3页框Linux物理内存管理 Linux内核为了适应不同的硬件架构,对不同性能的内存分成不同的节点(Node),内存模型如下图:pg_data_t内存节点node_zonesZONE_NORMALZONE_DMAZONE_HIGHMEMzonezone_mem_mapzone_mem_mappagepagepagepagepagepagezone_mem_mapZONE_DMAZONE_NORMALZONE_HIGHMEM16M896MPC i386物理页面管理 物理页面使用伙伴(Buddy)算法进行管理 算法核心是将页面按 1,2,4,8,16,2i 个连续页进行分割,放在11个链表上,i也就是通常所说的order;order6order5order4order3order2order1order0free_area pagepagepagepagepagepage例如分配一个页面,直接到order0上找,如果order0上没有空闲页面了,那么就到order1上找,(1)如果order1上有空闲块,那么就将这个双页分成两个单页,一个分配出去,一个挂到order0的链表上。(2)如果order1没有空闲块,就到order2上找,如果找到空闲块,那么就将这块分割为 2:1:1的页面 2的页面挂回order1,1的挂一个回order0,另外一个来分配order2要申请一个order0的页面order1order1order0 order1order0order0 order1slab分配器 因为基于Buddy算法的内存管理,只能精确到页面大小,对于内核中需要大量申请的小内存块,为了满足这个需求,在Buddy的基础上增加了slab分配器cache_chainkmem_cachekmem_cachekmem_cacheslabs_fullslabs_partialslabs_emptyheadtailslabslabslabslabslabpagepagepagepagepageobjectobjectobjectLinux文件系统核心VFS VFS(虚拟文件系统)为具体文件系统提供抽象出一组通用的接口来表示具体的文件系统。 万物皆文件,硬件设备也是文件 VFS包含下面几种数据类型 file_system_type 文件系统类型 vfsmount 挂在点对象,也就是文件系统类型实例 super_block 超级块,描述文件系统的控制信息、参数等 inode 索引节点,保存文件的相关信息,是文件的元数据 dentry 目录项,就是文件夹 file 文件对象 file_struct 打开的文件对象VFS各数据对象之间的关系s_filessuper_blockf_opf_dentryf_opf_dentryf_opf_dentry超级块上各打开文件的file实例d_inoded_sbdentry_operationsd_opsNAMEi_opi_dentryi_fopi_sbinodeinode_operationsfile_operationstask_structfilesfiles_structThe End

    注意事项

    本文(Linux操作系统内核原理.ppt)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开