和佳网站建设,中国建设银行卖狗年纪念币官方网站,仓储网站模板,软件开发流程pdf全部学习汇总#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 现在lab1的内容全都学习完了#xff0c;该做的练习也都做了。接下来#xff0c;整理一下自己看这一部分课程讲义的一些笔记。 整理之前#xff0c;先把自己完成… 全部学习汇总 GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 现在lab1的内容全都学习完了该做的练习也都做了。接下来整理一下自己看这一部分课程讲义的一些笔记。 整理之前先把自己完成后进行测试评估的结果show一下。至少是看着已经基本通关了。 这里建议看的资料我基本上不管之前是否了解都大概看了一下。其中这个图解的git工作过程我觉得还是很不错的简短但是很奏效能够快速了解git进行版本管理的一些基本理念。 由于这部分课程得涉及到汇编语言得从底层角度了解系统的一些基本机理。这一份汇编的教程我也去读了一下没有感受到特别难也没有对汇编产生恐惧感。至少我觉得这种语言读起来不会特别痛苦但是表达力上自然是不如高级语言来的爽快。 1. 首先这里给出了学习环境的搭建。由于现在的机器基本上都是64bit的而ubuntu等OS其实是到了最新的版本之后也基本放弃了32bit。因此我第一次的环境搭建尝试是在一个比较新的64bit Ubuntu虚拟机上做的。最终我的编译在修改了文件之后通过了可是运行的时候异常。遇到的这个问题差点让我放弃这个课程还好最终切换了一个方式直接换了32bit的系统结果一切顺利。
2. QEMU我尝试接触学习过一直不顺利各种操作都觉得有难度。退出操作也是当时有些摸不到头脑的地方之一还好当时我基本在GUI模式之下直接杀死进程也来得容易。其实这里提供了一个中止的方式。自然这个在我后来的学习中使用真的是比较频繁的。
3. 命令行的信息其实是输出了一些底层信息至少是硬件相关的。其实这个并不能代表OS内核对硬件的访问最初我理解错误。这些信息其实是在开发过程中工具链给定死了的。 这一页中比较关键的其实是中间的这个图能够让我们理解一下早期PC的存储分配。其实现在的新计算机也有对老计算机的兼容考虑因此这部分信息中的一部分作为一个空洞存在于现代计算机中。 1. 如果要使用gdb调试可以使用课程提供的gdb的配置文件。这个在使用的时候若想生效需要指定gdb可用的配置文件目录。
2. 另外介绍了一下32bit模式下的分页机制中的地址转换规则。 编译的过程中生成了两份反汇编代码分别对应于BootLoader和kernel。在进行调试采用gdb进行打断点的时候这些信息很有用。同时由于这两个文件包含了源代码和汇编代码的对应关系可以辅助理解整个系统设计以及生效的过程。 1. 这里推荐了一些C语言的资料我都跳过了没看。算是对我自己这方面能力的一点自信吧如果有时间或许我也可以去看看这些教程究竟有什么独到之处。
2. 中间写了错别字批注应该是分段。
3. 大概十年前工作需要读过elf的相关文档。现在已经忘得差不多了我又看了一些小短文暂时补充了这次课程所需要的基础。后续关于这个文件的标准可以再研究一下。
4. 在这里又学到了一招GNU objdump的用法。 1. 这一页开始的标注部分依然是工具的使用技巧操作。
2. 关于启动地址的实现其实是通过编译工具链中的链接器实现的。这个在看代码以及工程的时候也去关注过也做了测试。
3. 这里提到了内核的入口点其实也是BootLoader最后的执行点。 1. 这里解释了JOS为什么只能够使用256M空间。
2. 描述了一个常用工具的printf实现其实这部分在各种学习中比较熟悉了。 1. 分析了JOS中cprintf的实现有自己的独到之处。我觉得设计其实是非常巧妙的。
2. 要想顺利完成stack的监控按照试验数据自己总结规律是可以的更好的方式其实是去看一下函数调用call stack的约定设计说明。 上面的标注还是堆栈处理相关的部分下面的这个标注主要是描述了stabs信息如何传递到程序的。 最后这部分要求实现的功能如果纯粹按照注释来做是会出错的不排除这个跟机器环境有关。因为这个信息跟OS以及工具都有一定的关系。如果是在linux环境之下使用了GNU的工具还是得看一下stabs的相关文档。 这就是lab1学习的简单梳理这样这一课算是画上句号了。