UCore-Lab1】的更多相关文章

资源 ucore在线实验指导书 我的ucore实验代码 练习1:理解通过make生成执行文件的过程 详见<ucore lab1 exercise1>实验报告 练习2:使用qemu执行并调试lab1中的软件 详见<ucore lab1 exercise2>实验报告 练习3:分析bootloader进入保护模式的过程 详见<ucore lab1 exercise3>实验报告 练习4:分析bootloader加载ELF格式的OS的过程 详见<ucore lab1 exe…
---恢复内容开始--- 开机流程回忆 以Intel 80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0(由初始化的CS:EIP确定,此时CS和IP的值分别是0xF000和0xFFF0))开始执行.在0xFFFFFFF0这里只是存放了一条跳转指令,通过跳转指令跳到BIOS例行程序起始点.BIOS做完计算机硬件自检和初始化后,会选择一个启动设备(例如软盘.硬盘.光盘等),并且读取该设备的第一扇区(即主引导扇区或启动扇区)到内存一个特定的地址0x7c00处,然后CPU控制权会转移到那…
资源 ucore在线实验指导书 我的ucore实验代码 题目:实现函数调用堆栈跟踪函数 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址.如果能够正确实现此函数,可在lab1中执行 "make qemu"后,在qemu模拟器中得到类似如下的输出: ebp:0x00007b28 eip:0x00100992 args:0x00010094 0x00010094 0x0000…
资源 ucore在线实验指导书 我的ucore实验代码 题目:分析bootloader进入保护模式的过程 BIOS将通过读取硬盘主引导扇区到内存,并转跳到对应内存中的位置执行bootloader.请分析bootloader是如何完成从实模式进入保护模式的. 提示:需要阅读小节"保护模式和分段机制"和lab1/boot/bootasm.S源码,了解如何从实模式 切换到保护模式,需要了解: 为何开启A20,以及如何开启A20 如何初始化GDT表 如何使能和进入保护模式 解答 正如提示所言,…
资源 ucore在线实验指导书 我的ucore实验代码 题目:使用qemu执行并调试lab1中的软件 为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习: 从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行. 在初始化位置0x7c00设置实地址断点,测试断点正常. 从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和bootblock.asm进行比较. 自己找一个bootloader或内核中的代码位置,设置断点并进行测试 解答 问题1:从CPU加…
资源 ucore在线实验指导书 我的ucore实验代码 题目:理解通过make生成执行文件的过程 列出本实验各练习中对应的OS原理的知识点,并说明本实验中的实现部分如何对应和体现了原理中的基本概念和关键知识点. 操作系统镜像文件ucore.img是如何一步一步生成的?(需要比较详细地解释Makefile中每一条相关命令和命令参数的含义,以及说明命令导致的结果) 一个被系统认为是符合规范的硬盘主引导扇区的特征是什么? 解答 题目1的解答 等完成lab1后再回头总结. 题目2的解答 首先具体分析Ma…
一.ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu.内存.磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异:对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度.站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发.I/O.程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的. 另一方面,由于操作系统自身功能的复杂性,整体设计一般会有一个好的模块化架构:操作系统作为基础服务,对性能效率的要求也很高,底层会用到许多关于数据…
练习一 Makefile 1.1 OS镜像文件ucore.img 是如何一步步生成的? + cc kern/init/init.c + cc kern/libs/readline.c + cc kern/libs/stdio.c + cc kern/debug/kdebug.c + cc kern/debug/kmonitor.c + cc kern/debug/panic.c kern/debug/panic.c: In function '__panic': kern/debug/panic…
本练习是qemu结合gdb调试,但是我做实验的时候并不能像视频输入make lab1-mon那样顺利调试,期间有各种error,后来我找到原因,请看解决方法. 请先把ucore_lab文件删除,以下全程使用普通管理员身份操作 切换普通管理员,cd回到Home目录,在git上下载ucore_lab到用户文件夹($ git clone https://github.com/chyyuu/ucore_lab.git),然后切换到lab1_result文件夹 make ,最后make lab1-mon就…
资源 ucore在线实验指导书 我的ucore实验代码 题目:分析bootloader加载ELF格式的OS的过程 通过阅读bootmain.c,了解bootloader如何加载ELF文件.通过分析源代码和通过qemu来运行并调试bootloader&OS,理解: bootloader如何读取硬盘扇区的? bootloader是如何加载ELF格式的OS? 解答 问题1:bootloader如何读取硬盘扇区 分析原理 阅读材料其实已经给出了读一个扇区的大致流程: 等待磁盘准备好 发出读取扇区的命令…