笔记 1 :结合 linux 0.11 源码分析为什么 fork 函数会返回两个值

(1)学习资料是这些书
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

以及赵炯博士的完全剖析。谢谢这些大师与网上优秀的文章。

(2)看 linux 0.11 源码是 sourceinlight 4.这里附上一个安装包。fork 函数其实是内联函数,是对 中断调用的封装
在这里插入图片描述
由本图可知, main 函数对 fork 函数的调用。 fork 函数实际是定义在 main.c 文件中的内联函数。编译时候,不存在对 fork 的调用。直接抽取 fork 中的代码就是那些汇编代码,进入了 main 函数,对 中断 int 80 H 的 调用后,返回值存储在 EAX 寄存器里。压入的中断栈帧指向 int 80h 的下一行代码,行号 160 所示。

(3)随着调用链的压栈情况

在这里插入图片描述

(4) 0 号任务的 0 级栈与三级栈在哪里

在这里插入图片描述

(5)在系统转入 0 号任务的 用户态之前,系统代码用的是哪个栈?
在这里插入图片描述
如上图所示,在建立起 0 号任务之前,代码肯定要执行,要建立 GDT 表,IDT表,建立分页,建立 0 号任务所需要的数据结构,以及各种初始化。这时候代码执行肯定要配置栈。源代码显示,此时系统是以全局变量数组, user_stack ,为系统栈。当 0 号任务建立成功以后, 此栈成为了 0 号任务的三级栈。

(6)本文的 1–6 编号与后来的 笔记中的编号不具有连贯性。不同时期看的。大的标题编号是为了标识笔记的顺序。

谢谢,祝好

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值