linux优先级继承和优先级天花板,关于Linux操作系统内核原理.ppt

《铁机》Linux操作系统内核原理

Linux内核基础 第一事业部 王 风 内容 进程管理 内存管理 虚拟文件系统 了解Linux内核核心功能的基本原理结构,引导源码阅读 Linux系统结构 计算机硬件 体系结构相关代码 进程管理 内存管理 文件系统 模块 模块 接口 设备 驱动 驱动 接口 系统调用 应用程序 标准函数库 kernel Linux系统执行框架 地址空间 内核功能函数 内核线程1 内核线程2 内核线程3 内核线程4 内核线程5 内核线程n 进程1 进程2 进程3 进程n 用户态 内核态 …… …… 进程和线程的区别 线程是系统最小的执行流单位,一个线程就是一个执行过程,是任务调度的基本单位。 进程是线程和资源的容器,一个以上的线程组成一个进程,在同一个进程中的线程共享进程资源。 资源 线程1 线程2 线程n Linux内核进程和线程表示 Linux现行内核淡化了进程和线程的关系,原则上不区分进程和线程。 在Linux内核中使用(struct task_struct)表示一个任务(Linux中称为进程,也可以称为线程) 多个 task_struct 共享资源和进程空间,实际就构成了一个进程(线程组),这些task_struct实际就是这个进程的线程,通常在Linux书上将task_struct直接就称为一个进程。 Linux内核进程和线程表示 tasks tasks tasks tasks tasks 进程1 进程2 进程3 创建进程有几个函数fork exec clone struct list_head *group_leader struct list_head thread_group Linux进程组织关系 init 子进程1 子进程2 子进程3 子进程4 子进程5 子进程6 父进程 children 子进程 slibing 子进程 slibing 子进程 slibing 通过pstree命令可以显示出进程树 比较Windows进程线程管理 Windows进程使用KPROCESS表示进程对象,能够通过句柄单独操作进程对象 线程是通过ETHREAD线程块来表示,多个线程块链接到KPROCESS的执行体线程块链表头上。(结构如下图) KPROCESS ETHREAD ETHREAD ETHREAD 任务调度 在多任务系统中,任务调度很重要,调度策略决定了系统最终性能和功能。 任务调度有多种策略, 比如基于优先级的调度,ucOS-II上就是这种,谁的优先级高就谁占有CPU 还有基于时间片的,一个任务执行时间结束的就执行下一个 …… 调度过程 中断或异常 进入关中断执行区 保存中断前所有的寄存器的内容到SP 原则上是保存程序使用的所有寄存器 a0-a4 …… v0-v1 EPC …… 将当前的SP保存到任务结构体上 任务状态段TSS 任务上下文 通过调度器策略算法求得下一个要执行的任务 从任务结构体上取下SP指针 从SP上恢复所有的寄存器的内容 打开中断并返回恢复的位置执行 进程切换 对于多进程系统,任务调度的过程中伴随进程切换,从真实的一个进程切换到另外一个不共享资源的进程,虚拟内存地址映射表(PGD)必须进行切换,还有其它资源数据也需要跟着切换。 进程切换通常比较耗时,效率很低,需要执行切换TLB,回写Cache等低效率操作。 Linux多线程机制 原子操作 自旋锁 信号量 读写锁 互斥量 线程A 线程B a = i i = 0 a = i i=1 临界区 死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象;表现为程序假死,不再被调度。 避免死锁有 银行家算法 获取B资源 获取A资源 获取A资源 获取B资源 任务A 任务B 优先级反转 高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转。 此时高优先级任务和中等优先级任务之间没有任何共享资源但执行顺序却发生了倒置,这种情况称为优先级反转,而高优先级任务因为等待低优先级任务释放资源而阻塞的情况则不称为优先级反转 优先级反转 任务1 任务2 任务3 获取资源 释放资源 获取资源 后果,任务1将一直等待任务2运行完才能运行,实时性差 消除优先级反转 优先级继承策略:继承现有被阻塞任务的最高优先级作为其优先级,任务退出临界区,恢复初始优先级;Linux内核的实时互斥量就是使用这个策略。 优先级天花板策略(封顶策略):指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级;ucOS的互斥量就是使用这个策略。 Linux内存管理 Linux进程空间使用虚拟存储空间方式管理的(通过MMU部件将离散的物理地址拼接成连续的虚拟地址空间)(ucLinux除外) Linu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值