ucore代码分析
lab2:
总共分为四个包一个文件,分别为:
boot: 操作系统加载程序代码
kern: 操作系统内核代码
libs: 相关的库和数据结构
tools: 相关编译链接调试工具
Makefile: 构建脚本
操作系统启动顺序:
CPU启动加载操作系统加载程序到物理地址为0x7c00处,先从上往下执行bootasm.S汇编代码,在bootasm.S里先解决A20问题(参考https://ferryman1st.wordpress.com/2007/07/23/a20%E9%97%AE%E9%A2%98-%E5%85%B3%E4%BA%8Ex86%E5%9C%B0%E5%9D%80%E7%BA%BF%E7%9A%84%E5%8E%86%E5%8F%B2%E9%81%97%E7%95%99%E9%97%AE%E9%A2%98/),然后启动保护模式,并执行部分寄存器初始化,最后跳转到bootasm.c的bootmain函数执行。bootmain做的工作主要是从磁盘加载操作系统内核代码到内存中,具体加载到什么地方,在makefile构建内核镜像时链接时指定了入口地址,可以在tools的kernel.ld里看到加载到了虚拟地址为0xC0100000处,通过kernel.ld里指定entry point和kern包下entry.S文件可以看到执行操作系统内核的第一条指令在entry.S的kern_entry
根据讲义里写的在enable page之前应该会设置一个va - 0xC000000 = pa的一个段映射关系,看代码应该是entry.S中的movl $REALLOC(__boot_pgdir),%eas这句做的,这句意思不是太明白。。。。。????????
ucore代码分析的更多相关文章
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
- pmd静态代码分析
在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...
- [Asp.net 5] DependencyInjection项目代码分析-目录
微软DI文章系列如下所示: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Autofac [ ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)
Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- STM32启动代码分析 IAR 比较好
stm32启动代码分析 (2012-06-12 09:43:31) 转载▼ 最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- SonarQube-5.6.3 代码分析平台搭建使用
python代码分析 官网主页: http://docs.sonarqube.org/display/PLUG/Python+Plugin Windows下安装使用: 快速使用: 1.下载jdk ht ...
- angular代码分析之异常日志设计
angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...
随机推荐
- 【转】Oracle之索引
简介 1.说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录.在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用目录可以不用翻阅整本书即可找到想要的信 ...
- WPF 10天修炼 第九天 - 几何图形
几何图形 使用LineGeometry.RectangleGeometry.EllipseGeometry对象分别绘制直线.矩形.椭圆. 使用GeometryGroup可以绘制组合图形. <Wi ...
- SQLAlchemy使用(三)搭配Flask框架使用
前言 本章应该是SQLAlchemy使用系列的最后一篇了,本章简单讲一下如何搭配Flask使用.下一篇应该是写Flask_restful相关内容了 正文 我们简单使用前两章的model,两张表 # - ...
- Lua模式匹配
Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lu ...
- Navicat之MySQL连接(二)
1.下载Navicat软件包及相应的破解补丁: 2.双击navicat120_premium_cs_x64.exe开始安装,修改安装位置,一般选择安装在非系统盘! 注意:安装完成后,解压破解补丁文件拷 ...
- open file /var/mobile/Media/DCIM 相册中获取到的视频地址使用 报错 视频文件不存在
从相册中获取到的视频地址 例如 file:///var/mobile/Media/DCIM/100APPLE/IMG_9876.MOV 后面再使用的时候报错 视频文件不存在 那是因为在ios10. ...
- thymleaf th:text="|第${user.courseSort}课|" 对于不知道的真的是解渴了
简单描述:最近再做一个课程管理,列表显示第几课,但是后台传递过来的只是数字0~9,意味着,我得自己拼了ヾ(◍°∇°◍)ノ゙ 我最烦的就是这种拼,各种难调,果真和我想的一样,4.5遍了还没出来. 我的 ...
- 微服务杂谈--EureKa及自我保护
时值初夏,各位老官的心也有所悸动,这不,众看官搬好小板凳,沏一壶清茶,待听Jerry话谈Eureka,以此静心.话不多少,且听: 一.微服务的产生 单体应用:一个jar或者一个war包交给运维,运行在 ...
- Spring出现事务代理的原因
JdbcTemplate 在配置事务代理之前,JdbcTemplate 的关闭策略,就是操作完立刻关闭!意味着,默认情况是JdbcTemplate操作是不支持事务的!!! 但是我们的程序是需要支持事务 ...
- MySQL 远程连接问题
使用Workbench 无法远程连接Mysql服务器提示如下错误: 查找原因: 显示只能localhost 访问. 解决方法:修改授权远程访问 create user 'root'@'%' ident ...