Ucore
文章平均质量分 79
酷酷的猪
这个作者很懒,什么都没留下…
展开
-
ucore物理内存管理
物理内存管理 (1)编译运行 uCore Lab2的工程代码 (2)完成uCore Lab2 练习 1-3的编程作业 思考如何实现Core Lab2扩展练习1-2 提交uCore Lab2实验报告的具体要求,包括必要的运行截图 实验目的: 理解基于段页式内存地址的转换机制 理解页表的建立和使用方法 理解物理内存的管理方法 实验内容: 了解如何发现系统中的物理内存 了解如何建立对物理内存的初步管理,即了解连续物理内存管理 了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式原创 2021-07-11 14:12:04 · 855 阅读 · 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 · 103 阅读 · 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 · 124 阅读 · 0 评论 -
Ucore------Lab1_Practice4
分析 bootloader 加载 ELF 格式的 OS 的过程。 通过阅读 bootmain.c,了解 bootloader 如何加载 ELF 文件。通过分析源代码和通过 qemu 来运行并调试 bootloader&OS bootloader 如何读取硬盘扇区的? 所有的IO操作是通过CPU访问硬盘的IO地址寄存器完成的。 IO地址 功能 0x1f0 读数据,当0x1f7不为忙状态时,可以读。 0x1f2 要读写的扇区数,每次读写前,你需要表明你要读写几个扇区。最小是1原创 2021-04-12 22:19:45 · 56 阅读 · 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 · 77 阅读 · 0 评论 -
Ucore------Lab1_Practice2
从 CPU 加电后执行的第一条指令开始,单步跟踪 BIOS 的执行。 题目要求从CPU加电后执行的第一条指令开始单步跟踪BIOS执行,所以应该将continue命令去掉。然后执行make lab1-mon命令,接下来只需要一直next进行单步调试即可。 . 在初始化位置 0x7c00 设置实地址断点,测试断点正常。 因为在tools文件夹中,初始调试代码已经写好,并且执行了continue指令,所以如果要在初始化位置0x7c00设置时地址断点,必须也在初始调试代码中写好在初始位置0x7c00处设置..原创 2021-04-12 20:34:31 · 126 阅读 · 0 评论 -
Ucore学习笔记-Lab1基础知识
系统软件启动过程 前言:通过bootloader(引导装置)来完成操作系统的加载和运行。下面的实验提供了一个小的bootloader和Ucore OS,注意bootloader执行代码需要小于512个字节才能放到硬盘的主引导扇区中。 主要学习内容有: 计算机原理 CPU的编址与寻址:基于分段机制的内存管理 CPU的中断机制 外设:串口/并口/CGA,时钟,硬盘 Bootloader软件 编译运行bootloader的过程 调试bootloader的方法 PC启动bootloader的过程 EL原创 2021-04-12 13:39:09 · 279 阅读 · 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 · 183 阅读 · 0 评论 -
uCore学习笔记-Lab0
uCore实验笔记 Bash Shell常用指令 ls:查询文件列表 ls 命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息: ls / # 将列出根目录'/'下的文件清单.如果给定一个参数,则命令行会把该参数当作命令行的工作目录。换句话说,命令行不再以当前目录为工作目录。 ls -l # 将给你列出一个更详细的文件清单. ls -a # 将列出包括隐藏文件原创 2021-04-10 15:35:21 · 716 阅读 · 1 评论