1656_MIT 6.828 JOS i386_init的实现分析
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)
在BootLoader调用kernel之后,先执行一段entry.S的汇编代码,之后调用的i386_init函数进入到C语言的处理过程。这里对这个函数所作的处理做一个大概的梳理。
首先,软件先对需要清零的存储区域进行清零操作。这个处理过程在嵌入式中也有,我接触到的软件设计中一般是在启动代码中做这部分工作。但是,处理的机制其实是差不多的。存储的区间范围信息的获取,其实是通过链接文件来实现的。
这个是这个项目相关的链接文件,通过在链接文件中增加两个标签来获取.bss段的起始地址。之后,借助于C语言的库函数来实现清零。
之后的处理是终端的初始化。
终端的初始化其实是操作了显示器、键盘以及串口的初始化。这个硬件的处理细节暂时不去做深入的了解了,对应的知识可重用性不是特别高。
继续往下,其实是对cprintf的一个测试,是否支持八进制的输出。这个之前已经测试过了,而通过前面的终端初始化中的错误处理其实是能够看得出来这个cprintf已经就绪了的。
继续往下是存储的初始化,这部分已经做了一个初步的了解,主要的工作就是对存储的分页管理机制进行相应的配置准备。这是后面接下来需要重点关注的部分。
继续往下,通过无限循环的方式实现了一个终端的响应处理。这个一直是我感兴趣的地方,可能会涉及到shell的解析等工作。后面可以对这个框架做一个简单的分析。
这是这个循环中的一个循环体的实现,看得出来循环之中套循环。其实,最终软件应该是用这个循环取代掉另一个了。从这里的信息看,能够看到之前JOS启动时候的提示信息的来源点。而这个无限循环的循环体,应该就是shell处理的过程,大概率跟我之前看到过的shell例程是相似的。如何在这个小型的JOS中实现这样的交互,接下来我刚好是可以去了解一下。
这样,这次的这段代码函数分析基本就是到此结束了。整体的启动动作以及接下来的响应模式,也算是有一个基本的了解了。
1656_MIT 6.828 JOS i386_init的实现分析相关推荐
- 1654_MIT 6.828 JOS entry.S实现分析
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 之前分析过JOS中的启动 ...
- 1617_MIT 6.828 JOS boot代码分析
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) JOS的这部分boot相 ...
- 1655_MIT 6.828 JOS存储分页映射的实现分析
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这是mmu.h的一部分, ...
- 1662_MIT 6.828 JOS check_page_free_list实现分析以及boot_alloc问题修复
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续尝试完善分析JOS的 ...
- MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...
- MIT 6.828 JOS学习笔记12 Exercise 1.9
Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...
- 1663_MIT 6.828 JOS页面的分配与回收
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续往下分析JOS的启动 ...
- 1660_MIT 6.828 JOS初始化boot_alloc的初步实现
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次的小结有一点没底气 ...
- 1658_MIT 6.828 JOS memmap以及一些存储划分定义的解读-第二部分
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 之前,花了一晚上时间一个 ...
最新文章
- memcache安装
- 从0开始搭建编程框架——插件
- 如何在 Python 中创建一个简单的神经网络
- 争夺基础架构主导权,AI 新一轮战争将打响?
- TFF 官方demo解释
- 【采用】风控体系的一般架构
- matlab能输入铁心参数,基于MATLAB的电力机车110伏直流稳压电源仿真研究
- 《leetcode》longest-consecutive-sequence
- Angular 下拉菜单实现的一个例子
- debug LUW1 - do binding workflow
- Hadoop赠品–综述
- 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真
- Jquery .net MVC
- 从零开始学架构2 - 高性能篇
- C++Primer学习第四章
- 【转】ASP.NET 表单验证实现浅析
- meta分析-stata软件使用
- 支持断电保护的FAT文件系统
- 智能实验室管理系统的现状怎么样
- 用计算机专业术语写寄语,教师给计算机专业学生寄语
热门文章
- SmartDraw 2010 破解成功
- Python学习5(生成器、类、属性、方法、私有化、继承、多态)
- 局域网内Linux服务器使用本地Windows代理上网
- 数学建模论文六大获奖技巧总结(想得奖的进来看)
- 高通ATHEROS AR93XX AP无线驱动介绍2
- flex布局的对齐方式
- 织梦如何制作install安装文件
- 浙大三维视觉团队提出ENeRF:首次实现任意动态场景的实时照片级渲染 | SIGGRAPH Asia 2022...
- WIN10使用YOLOX训练自己的数据集(图解超详细)
- 全国计算机二级flash,国家计算机二级考试WEB程序复习重点:制作Flash相册