![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Ucore
文章平均质量分 79
酷酷的猪
这个作者很懒,什么都没留下…
展开
-
ucore物理内存管理
物理内存管理(1)编译运行 uCore Lab2的工程代码(2)完成uCore Lab2 练习 1-3的编程作业思考如何实现Core Lab2扩展练习1-2提交uCore Lab2实验报告的具体要求,包括必要的运行截图实验目的:理解基于段页式内存地址的转换机制理解页表的建立和使用方法理解物理内存的管理方法实验内容:了解如何发现系统中的物理内存了解如何建立对物理内存的初步管理,即了解连续物理内存管理了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式原创 2021-07-11 14:12:04 · 876 阅读 · 0 评论 -
Ucore------Lab1_Practice6
完善中断初始化和处理请完成编码工作和回答如下问题:中断描述符表(也可简称为保护模式下的中断向量表)中一个表项占多少字节?其中哪几位代表中断处理代码的入口?表项的结构定义: + 一个表项占8个字节。+ 哪几位代表中断处理代码的入口:16:32的段选择字加上0~ :15 和 48:63构成终端代码的处理代码的入口。请编程完善 kern/trap/trap.c 中对中断向量表进行初始化的函数 idt_init。在 idt_init 函数中,依次对所有中断入口进行初始化。使用 mmu.h 中的原创 2021-04-13 14:40:45 · 116 阅读 · 0 评论 -
Ucore------Lab1_Practice5
实现函数调用堆栈跟踪函数我们需要在 lab1 中完成 kdebug.c 中函数 print_stackframe 的实现,可以通过函数 print_stackframe 来跟踪函数调用堆栈中记录的返回地址。在如果能够正确实现此函数,可在 lab1 中执行 “make qemu”后,在 qemu 模拟器中得到类似如下的输出:……ebp:0x00007b28 eip:0x00100992 args:0x00010094 0x00010094 0x00007b58 0x00100096 kern/d原创 2021-04-13 13:31:22 · 141 阅读 · 0 评论 -
Ucore------Lab1_Practice4
分析 bootloader 加载 ELF 格式的 OS 的过程。通过阅读 bootmain.c,了解 bootloader 如何加载 ELF 文件。通过分析源代码和通过 qemu 来运行并调试 bootloader&OSbootloader 如何读取硬盘扇区的?所有的IO操作是通过CPU访问硬盘的IO地址寄存器完成的。IO地址功能0x1f0读数据,当0x1f7不为忙状态时,可以读。0x1f2要读写的扇区数,每次读写前,你需要表明你要读写几个扇区。最小是1原创 2021-04-12 22:19:45 · 66 阅读 · 0 评论 -
Ucore------Lab1-Practice3
分析 bootloader 进入保护模式的过程bootasm.S从16-56行:实现了:开启A20,初始化GDT表,使能并进入保护模式(1) 实模式在 bootloader 接手 BIOS 的工作后,当前的 PC 系统处于实模式(16 位模式)运行状态,在这种状态下软件可访问的物理内存空间不能超过 1MB,且无法发挥 Intel 80386 以上级别的 32 位 CPU 的 4GB 内存管理能力。实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,操作系统和用户程序并没有区别对待,而且每原创 2021-04-12 21:36:08 · 88 阅读 · 0 评论 -
Ucore------Lab1_Practice2
从 CPU 加电后执行的第一条指令开始,单步跟踪 BIOS 的执行。题目要求从CPU加电后执行的第一条指令开始单步跟踪BIOS执行,所以应该将continue命令去掉。然后执行make lab1-mon命令,接下来只需要一直next进行单步调试即可。. 在初始化位置 0x7c00 设置实地址断点,测试断点正常。因为在tools文件夹中,初始调试代码已经写好,并且执行了continue指令,所以如果要在初始化位置0x7c00设置时地址断点,必须也在初始调试代码中写好在初始位置0x7c00处设置..原创 2021-04-12 20:34:31 · 142 阅读 · 0 评论 -
Ucore学习笔记-Lab1基础知识
系统软件启动过程前言:通过bootloader(引导装置)来完成操作系统的加载和运行。下面的实验提供了一个小的bootloader和Ucore OS,注意bootloader执行代码需要小于512个字节才能放到硬盘的主引导扇区中。主要学习内容有:计算机原理CPU的编址与寻址:基于分段机制的内存管理CPU的中断机制外设:串口/并口/CGA,时钟,硬盘Bootloader软件编译运行bootloader的过程调试bootloader的方法PC启动bootloader的过程EL原创 2021-04-12 13:39:09 · 292 阅读 · 0 评论 -
Ucore------Lab1_Practice1
操作系统镜像文件 ucore.img 是如何一步一步生成的?(需要比较详细地解释 Makefile 中每一条相关命令和命令参数的含义,以及说明命令导致的结果)大致流程:使用make V=命令,由终端的输出结果得知:makefile先调用了gcc,将ucore的源代码编译为目标文件也就是.o文件,再使用ld命令将目标文件链接成可执行程序,最后使用dd命令将bootloader放进一个虚拟硬盘中,生成虚拟硬盘ucore.img.Qemu再在硬盘中的数据的基础上来执行相应的代码。详细地解释 Make.原创 2021-04-12 13:38:01 · 194 阅读 · 0 评论 -
uCore学习笔记-Lab0
uCore实验笔记Bash Shell常用指令ls:查询文件列表ls 命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:ls / # 将列出根目录'/'下的文件清单.如果给定一个参数,则命令行会把该参数当作命令行的工作目录。换句话说,命令行不再以当前目录为工作目录。ls -l # 将给你列出一个更详细的文件清单.ls -a # 将列出包括隐藏文件原创 2021-04-10 15:35:21 · 746 阅读 · 1 评论