linux操作系统内核原理

linux操作系统内核原理

ID:20793846

大小:135.50 KB

页数:28页

时间:2018-10-15

linux操作系统内核原理_第1页
linux操作系统内核原理_第2页
linux操作系统内核原理_第3页
linux操作系统内核原理_第4页
linux操作系统内核原理_第5页
资源描述:

《linux操作系统内核原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux内核基础第一事业部王风内容进程管理内存管理虚拟文件系统了解Linux内核核心功能的基本原理结构,引导源码阅读Linux系统结构计算机硬件体系结构相关代码进程管理内存管理文件系统模块模块接口设备驱动驱动接口系统调用应用程序标准函数库kernelLinux系统执行框架地址空间内核功能函数内核线程1内核线程2内核线程3内核线程4内核线程5内核线程n进程1进程2进程3进程n用户态内核态…………进程和线程的区别线程是系统最小的执行流单位,一个线程就是一个执行过程,是任务调度的基本单位。进程是线程和资源的容器,一个以上的线程组成一个进程,在

2、同一个进程中的线程共享进程资源。资源线程1线程2线程nLinux内核进程和线程表示Linux现行内核淡化了进程和线程的关系,原则上不区分进程和线程。在Linux内核中使用(structtask_struct)表示一个任务(Linux中称为进程,也可以称为线程)多个task_struct共享资源和进程空间,实际就构成了一个进程(线程组),这些task_struct实际就是这个进程的线程,通常在Linux书上将task_struct直接就称为一个进程。Linux内核进程和线程表示taskstaskstaskstaskstasks进程1进程2进

3、程3创建进程有几个函数forkexecclonestructlist_head*group_leaderstructlist_headthread_groupLinux进程组织关系init子进程1子进程2子进程3子进程4子进程5子进程6父进程children子进程slibing子进程slibing子进程slibing通过pstree命令可以显示出进程树比较Windows进程线程管理Windows进程使用KPROCESS表示进程对象,能够通过句柄单独操作进程对象线程是通过ETHREAD线程块来表示,多个线程块链接到KPROCESS的执行体线

4、程块链表头上。(结构如下图)KPROCESSETHREADETHREADETHREAD任务调度在多任务系统中,任务调度很重要,调度策略决定了系统最终性能和功能。任务调度有多种策略,比如基于优先级的调度,ucOS-II上就是这种,谁的优先级高就谁占有CPU还有基于时间片的,一个任务执行时间结束的就执行下一个……调度过程中断或异常进入关中断执行区保存中断前所有的寄存器的内容到SP原则上是保存程序使用的所有寄存器a0-a4……v0-v1EPC……将当前的SP保存到任务结构体上任务状态段TSS任务上下文通过调度器策略算法求得下一个要执行的任务从任

5、务结构体上取下SP指针从SP上恢复所有的寄存器的内容打开中断并返回恢复的位置执行进程切换对于多进程系统,任务调度的过程中伴随进程切换,从真实的一个进程切换到另外一个不共享资源的进程,虚拟内存地址映射表(PGD)必须进行切换,还有其它资源数据也需要跟着切换。进程切换通常比较耗时,效率很低,需要执行切换TLB,回写Cache等低效率操作。Linux多线程机制原子操作自旋锁信号量读写锁互斥量线程A线程Ba=ii=0a=ii=1临界区死锁所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象;表现为程序假死,不再被调

6、度。避免死锁有银行家算法获取B资源获取A资源获取A资源获取B资源任务A任务B优先级反转高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转。此时高优先级任务和中等优先级任务之间没有任何共享资源但执行顺序却发生了倒置,这种情况称为优先级反转,而高优先级任务因为等待低优先级任务释放资源而阻塞的情况则不称为优先级反转优先级反转任务1任务2任务3获取资源释放资源获取资源后果,任务1将一直等待任务2运行完才能运行,实时性差消除优先级反转优先级继承策略:继承现有被阻塞任务的最高优先级作为其优先级,任务退

7、出临界区,恢复初始优先级;Linux内核的实时互斥量就是使用这个策略。优先级天花板策略(封顶策略):指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级;ucOS的互斥量就是使用这个策略。Linux内存管理Linux进程空间使用虚拟存储空间方式管理的(通过MMU部件将离散的物理地址拼接成连续的虚拟地址空间)(ucLinux除外)Linux内核使用伙伴管理页式内存并在伙伴的基础上发展了slab/slob/slub算法,用于内核小内存的分配,以弥补页式分配浪费内存的不足Linux进程虚存空间划分操作系统内

8、核环境变量参数堆栈数据(BSS)数据代码4G3G00xC00000000x00000000_end_edata_etext内核区用户区Linux内存空间数据结构表示mmcountmmappgd

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。