- 1、本文档共86页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课件linux作系统分析
进程0 所有进程的祖先叫做进程0 在系统初始化阶段由start_kernel()函数从无到有手工创建的一个内核线程 存放在init_task_union变量中的一个进程描述符和一个内核态堆栈(回忆一下启动时,堆栈的初始化) 用INIT_MM, INIT_MMAP, INIT_FS, INIT_FILES, INIT_SIGNALS宏初始化进程描述符的各个对应域 页全局目录,swapper_pg_dir变量 进程0最后的初始化工作创建init内核线程,此后运行cpu_idle,成为idle进程 xlanchen@2007.9.25 Linux Operating Systems Analysis * 进程上下文 包含了进程执行需要的所有信息 用户地址空间包括程序代码,数据,用户堆栈等 控制信息进程描述符,内核堆栈等 硬件上下文 xlanchen@2007.9.25 Linux Operating Systems Analysis * 硬件上下文 尽管每个进程可以有自己的地址空间,但所有的进程只能共享CPU的寄存器。 因此,在恢复一个进程执行之前,内核必须确保每个寄存器装入了挂起进程时的值。这样才能正确的恢复一个进程的执行 硬件上下文:进程恢复执行前必须装入寄存器的一组数据 包括通用寄存器的值以及一些系统寄存器 通用寄存器如eax,ebx等 系统寄存器如eip,esp,cr3等等 xlanchen@2007.9.25 Linux Operating Systems Analysis * 在linux中 一个进程的硬件上下文主要保存在thread_struct中 其他信息放在内核态堆栈中 xlanchen@2007.9.25 Linux Operating Systems Analysis * thread_struct xlanchen@2007.9.25 Linux Operating Systems Analysis * 上下文切换 switch_to宏执行进程切换,schedule()函数调用这个宏一调度一个新的进程在CPU上运行 在schedule()中找到调用switch_to宏的位置 switch_to利用了prev和next两个参数: prev:指向当前进程 next:指向被调度的进程 xlanchen@2007.9.25 Linux Operating Systems Analysis * 当前进程仍然是prev 这个push操作针对的是 当前进程的堆栈 保存esi,edi,ebp 保存esp到%0中 嵌入式汇编中 用这种方法表示输入、输出参数,可以从 0开始编号 %0是什么? 保存esp到当前进程的上下文中 从next的上下文中取出堆栈的位置,将其作为当前堆栈 堆栈被切换 在prev进程的上下文中设置返回地址,返回到下面标号为1处 从next进程的上下文中取得该进程的返回地址,放入堆栈中 调用__switch_to函数 xlanchen@2007.9.25 Linux Operating Systems Analysis * 进程切换的关键语句 堆栈的切换从此,内核对next的内核态堆栈操作,因此,这条指令执行从prev到next真正的上下文切换,因为进程描述符和内核态堆栈紧密联系在一起,改变内核态堆栈就意味改变当前进程 xlanchen@2007.9.25 Linux Operating Systems Analysis * 什么时候next进程真正开始执行呢? call=保存返回地址+跳转到target处执行 ret=从堆栈上获得返回地址,并跳转到该返回地址处执行 ?当__switch_to正常返回时,发生了什么事情? xlanchen@2007.9.25 Linux Operating Systems Analysis * 标号为1的执行代码处 一个进程被正常切换出时,保存的eip总是标号为1的那个位置 当这个进程再次被调度运行时,恢复在堆栈上的返回地址总是这个1 1: popl %ebp popl %edi popl %esi xlanchen@2007.9.25 Linux Operating Systems Analysis * __switch_to xlanchen@2007.9.25 Linux Operating Systems Analysis * __switch_to的关键操作 unlazy_fpu() 处理数学协处理器 保存和恢复fs、gs 等等 xlanchen@2007.9.25 Linux Operating Systems Analysis * ?哪里切换了进程的地址空间 从执行switch_to的位置往前找 xlanchen@2007.9.25 L
您可能关注的文档
- 课二气焊工艺知识及技能ppt课件.ppt
- 课分析.ppt
- 课俄向何处去.ppt
- 课分析-----.ppt
- 课复习00001.ppt
- 课繁一时的隋朝.ppt
- 课改背景下课教学研究的新取向.ppt
- 课改背景下的教师专业成ppt课件.ppt
- 课改背下小学数学教师本体知识的缺失与对策.ppt
- 课改背景下的教师业成长.ppt
- 2024年新人教版七年级英语上册全册语法课件.pptx
- 2024年新人教版七年级英语上册全册提分作业课件.pptx
- 《曲径通幽》课件 2024——2025学年桂美版(2024)初中美术七年级上册.pptx
- 中国音乐万花筒之茉莉花 课件 2024—2025学年人教版(简谱)(2024)初中音乐七年级上册.pptx
- 《创意改善生活》课件 2024—2025学年湘美版(2024)初中美术七年级上册.pptx
- 《画中有话:最可爱的人》课件 2024—2025学年岭南美版(2024)初中美术七年级上册.pptx
- 制茶具明茶礼 课件 2024—2025学年岭南美版(2024) 初中美术七年级上册.pptx
- 《培养学习兴趣》课件2024-2025学年苏教版(2023)七年级心理健康全一册.pptx
- 赏服饰知礼仪 课件 2024—2025学年岭南美版 (2024)初中美术七年级上册.pptx
- 多彩的音乐剧——《雪绒花》 课件 2024—2025学年人音版初中音乐八年级上册.pptx
文档评论(0)