全部学习汇总: 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的实现分析相关推荐

  1. 1654_MIT 6.828 JOS entry.S实现分析

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 之前分析过JOS中的启动 ...

  2. 1617_MIT 6.828 JOS boot代码分析

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) JOS的这部分boot相 ...

  3. 1655_MIT 6.828 JOS存储分页映射的实现分析

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这是mmu.h的一部分, ...

  4. 1662_MIT 6.828 JOS check_page_free_list实现分析以及boot_alloc问题修复

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续尝试完善分析JOS的 ...

  5. MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments

    Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...

  6. MIT 6.828 JOS学习笔记12 Exercise 1.9

    Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...

  7. 1663_MIT 6.828 JOS页面的分配与回收

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续往下分析JOS的启动 ...

  8. 1660_MIT 6.828 JOS初始化boot_alloc的初步实现

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次的小结有一点没底气 ...

  9. 1658_MIT 6.828 JOS memmap以及一些存储划分定义的解读-第二部分

    全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 之前,花了一晚上时间一个 ...

最新文章

  1. memcache安装
  2. 从0开始搭建编程框架——插件
  3. 如何在 Python 中创建一个简单的神经网络
  4. 争夺基础架构主导权,AI 新一轮战争将打响?
  5. TFF 官方demo解释
  6. 【采用】风控体系的一般架构
  7. matlab能输入铁心参数,基于MATLAB的电力机车110伏直流稳压电源仿真研究
  8. 《leetcode》longest-consecutive-sequence
  9. Angular 下拉菜单实现的一个例子
  10. debug LUW1 - do binding workflow
  11. Hadoop赠品–综述
  12. 【自适应盲均衡2】多径衰落信道的复数常模算法(CMA)的理论推导与MATLAB仿真
  13. Jquery .net MVC
  14. 从零开始学架构2 - 高性能篇
  15. C++Primer学习第四章
  16. 【转】ASP.NET 表单验证实现浅析
  17. meta分析-stata软件使用
  18. 支持断电保护的FAT文件系统
  19. 智能实验室管理系统的现状怎么样
  20. 用计算机专业术语写寄语,教师给计算机专业学生寄语

热门文章

  1. SmartDraw 2010 破解成功
  2. Python学习5(生成器、类、属性、方法、私有化、继承、多态)
  3. 局域网内Linux服务器使用本地Windows代理上网
  4. 数学建模论文六大获奖技巧总结(想得奖的进来看)
  5. 高通ATHEROS AR93XX AP无线驱动介绍2
  6. flex布局的对齐方式
  7. 织梦如何制作install安装文件
  8. 浙大三维视觉团队提出ENeRF:首次实现任意动态场景的实时照片级渲染 | SIGGRAPH Asia 2022...
  9. WIN10使用YOLOX训练自己的数据集(图解超详细)
  10. 全国计算机二级flash,国家计算机二级考试WEB程序复习重点:制作Flash相册