文章 2022-12-04 来自:开发者社区

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(三)

修改fork()系统调用现在需要将新建进程的用户栈、用户程序地址和其内核栈关联在一起,因为TSS没有做这样的关联fork()要求让父子进程共享用户代码、用户数据和用户堆栈虽然现在是使用内核栈完成任务的切换(基于堆栈的进程切换),但是fork()的基本含义不应该发生变化。综合分析:修改以后的fork()要使得父子进程共享同一块内存空间、堆栈和数据代码块。fork() 系统调用的代码放在 syste....

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(三)
文章 2022-12-04 来自:开发者社区

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(二)

schedule 与 switch_to目前 Linux 0.11 中工作的 schedule() 函数是首先找到下一个进程的数组位置 next,而这个 next 就是 GDT 中的 n,所以这个 next 是用来找到切换后目标 TSS 段的段描述符的,一旦获得了这个 next 值,直接调用上面剖析的那个宏展开 switch_to(next);就能完成如图 TSS 切换所示的切换了。现在,我们不....

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(二)
文章 2022-12-04 来自:开发者社区

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(一)

实验5 基于内核栈切换的进程切换实验目的深入理解进程和进程切换的概念;综合应用进程、CPU 管理、PCB、LDT、内核栈、内核态等知识解决实际问题;开始建立系统认识。实验内容现在的 Linux 0.11 采用 TSS 和一条指令就能完成任务切换,虽然简单,但这指令的执行时间却很长,在实现任务切换时大概需要 200 多个时钟周期。而通过堆栈实现任务切换可能要更快,而且采用堆栈的切换还可以使用指令流....

操作系统实验五 基于内核栈切换的进程切换(哈工大李治军)(一)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

龙蜥操作系统

龙蜥社区(OpenAnolis)是面向国际的 Linux 服务器操作系统开源根社区及创新平台,秉承“平等、开放、协作、创新”的原则,理事会由阿里云、统信软件、龙芯、Arm 、Intel 等 24 家国内外头部企业共同组成,有超过 1000 家来自芯片厂商、软件厂商、整机厂商、操作系统厂商等覆盖操作系统全产业链的合作伙伴参与生态共建。

+关注
相关镜像