- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核学习方法 学习目的:了解内核的实现架构,以及相应的内部流程和数据结构,为学习内核编程做好准备。 学习内核三部曲 从使用者的角度,了解内核的功能 从实现者的角度,了解内核实现的思想 阅读相应的代码,核心源代码 Linux进程管理 进程介绍 进程控制块 进程的创建 线程在linux中的实现 进程中止 进程的系统调用 进程调度 进程介绍 程序与进程 程序是机器指令和数据组成的可执行文件. 进程是程序关于某个数据集合的动态执行过程。动态的概念。随着程序机器指令的执行,进程包含不断变化的程序指令,数据,程序计数器,CPU寄存器以及进程栈等. 进程是在内存中存在的,包括程序、数据、进程控制块。 进程介绍 进程层次结构 进程介绍 进程状态 进程控制块 内核对进程的管理就是通过该数据结构进行。 每个进程都有一个进程控制块,内核怎么管理这些进程控制块? 内核使用循环双向链表task_list组织所有进程控制块,表头就是init_task控制块。 按照进程所处的状态,组织成多个相应的链表,将他们分类管理起来。 全局变量current指向当前进程的task_struct。 进程控制块 进程控制块 进程的状态。State 保存进程的状态。系统中的每个进程必然处于5种进程状态中的一种。 TASK_RUNNING ?? 0?? 正在运行的或在running队列中等待运行的进程 TASK_INTERRUPTIBLE ?? 1 进程正在睡眠,等待某些条件的达成,条件成立才把进程状态设置为运行。能被信号、中断唤醒而投入运行。 TASK_UNINTERRUPTIBLE ?2 进程正在睡眠,等待某些条件的达成,条件成立才把进程状态设置为运行。不能被信号、中断唤醒。 TASK_ZOMBIE ?? ? ? 4 ??? 进程已经结束,但是父进程还没有调用wait4系统调用释放进程控制块。 TASK_STOPPED ?? ? 8 ?? 进程停止运行;进程没有投入运行也不能投入运行。 进程控制块 与进程家族树相关的域 Real_parent 指向进程的父进程的进程控制块。 Parent 指向父进程的进程控制块。当进程被跟踪时,指向跟踪进程的task_struct。 Children 指向子进程链表 Sibling 指向兄弟进程链表 Group_leader 指向进程(线程)组的头进程。 进程控制块 与进程家族树相关的域 进程控制块 与调度相关的域 进程控制块 与调度相关的域 当多个进程准备好等待运行时,这些进程组成可运行队列,由调度程序决定那个进程先运行、运行多长时间。调度程序通过给每个进程分配一个时间片、优先级来实现公平、高效的调度。 Run_list 指向进程所属的运行队列中的下一个和前一个元素,进程通过它链入可运行队列。 prio 进程的动态优先权 static_prio 进程的静态优先权 array 指向包含进程所在运行队列的结构 prio_array_t policy 进 程 的 调 度 类 型(SCHED_NORMAL, SCHED_RR, 或 SCHED_FIFO) rt_priority 进程的实时优先权 进程控制块 文件系统相关的域 fs 指针指向文件系统结构体fs_struct files指针指向files_struct,该结构体描述进程的打开文件信息表,包含进程的打开文件对象数组fd_array。 进程空间相关域 mm指向进程地址空间以及内存管理的相关信息。 Active_mm包含最近最长使用的地址空间的指针。 进程控制块 文件系统和地址空间相关的域 进程的创建 Linux除了第一个进程外,任何进程都是由其他进程创建的。通过fork、vfork、clone系统调用完成进程创建。 fork,创建子进程。 clone:创建LWP(轻量级进程),允许父子进程共享进程的很多内核数据结构。 Vfork创建的进程能共享父进程的内存地址空间,并且将父进程阻塞。 通过调用do_fork()函数完成主要工作 进程的创建 C库提供这三个系统调用对应的函数,在unistd.h中声明。下图说明进程如何调用这三个函数实现创建进程。 进程调度 Linux与任何分时系统一样,通过一个进程到另一个进程的快速切换,达到表面上看来多个进程同时执行的神奇效果。多进程并发执行,让每个进程觉得自己独享处理器。 也就是通过进程调度实现,微观上进程交替执行,宏观上并发执行。 进程调度 课程思路:进程调度分三部分内容, “调度策略”一节从理论上介绍Linux进行进程调度所做的选择。 “调度算法”一节讨论实现调度所采用的数据结构和相应的算法。 最后描述调度程序所使用的数据结构,以及调度程序所使
您可能关注的文档
最近下载
- 初中历史2022版新课程标准测试卷及答案.docx VIP
- 消化内科护理敏感指标.pptx
- 包装生产线的-PLC控制.doc VIP
- 《实验动物学》全套教学课件.pptx VIP
- 2025至2030中国惯性导航行业投资现状与前景预测分析报告.docx VIP
- 湖南长沙历年中考作文题与审题指导(2008—2024).docx
- 2025国投生物制造创新研究院有限公司招聘(31人)考试参考题库附答案解析.docx VIP
- 2025年国投生物制造创新研究院有限公司招聘(31人)笔试参考题库附答案解析.docx VIP
- NO1学前儿童音乐教育概述 《学前儿童艺术教育(音乐分册)》教学课件.ppt VIP
- 2025年国投生物制造创新研究院有限公司招聘(31人)考试备考试题及答案解析.docx VIP
文档评论(0)