![](https://img-blog.csdnimg.cn/20200831171248789.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ucore
最近想写一个清华ucore的实验,放到这里面了。
github链接:https://github.com/King8611/ucore_lab
Xiao菜瓜
这个作者很懒,什么都没留下…
展开
-
ucore lab2练习1
实现 first-fit 连续物理内存分配算法在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合并操作。提示:在建立空闲页块链表时,需要按照空闲页块起始地址来排序,形成一个有序的链表。可能会修改default_pmm.c中的default_init,default_init_memmap,default_alloc_pages, default_free_pages等相关函数。请仔细查看和理解default_pmm.c中的注释。完成这个练习之前,应该首先学习一下uco原创 2020-09-10 18:00:16 · 370 阅读 · 1 评论 -
ucore lab1练习6
完善中断初始化和处理问题1:中断描述符表(也可简称为保护模式下的中断向量表)中一个表项占多少字节?其中哪几位代表中断处理代码的入口?中断描述符表有8个字节,有以下定义://kern/mm/mmu.h/* Gate descriptors for interrupts and traps */struct gatedesc { unsigned gd_off_15_0 : 16; // low 16 bits of offset in segment unsign原创 2020-09-08 09:09:46 · 408 阅读 · 0 评论 -
ucore lab1练习5
实现函数调用堆栈跟踪函数coding:完成kdebug.c中函数print_stackframe的实现void print_stackframe(void) { /* LAB1 YOUR CODE : STEP 1 */ /* (1) call read_ebp() to get the value of ebp. the type is (uint32_t); * (2) call read_eip() to get the value of eip. the t原创 2020-09-05 16:10:44 · 279 阅读 · 0 评论 -
ucore lab1练习4
通过阅读bootmain.c,了解bootloader如何加载ELF文件。通过分析源代码和通过qemu来运行并调试bootloader&OS,问题1:bootloader如何读取硬盘扇区的?参考手册上说明这里用的是PIO方式读取磁盘的,但是网上查阅资料说这种方式CPU利用率比较低,现在都用的DMA方式。这里我们跟着源码一步一步来:第一步在main函数的第89行: readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0);这里调用了一个函数,我原创 2020-09-04 16:48:50 · 211 阅读 · 0 评论 -
ucore lab1练习3
分析bootloader进入保护模式的过程BIOS将通过读取硬盘主引导扇区到内存,并转跳到对应内存中的位置执行bootloader。请分析bootloader是如何完成从实模式进入保护模式的。提示:需要阅读小节“保护模式和分段机制”和lab1/boot/bootasm.S源码,了解如何从实模式切换到保护模式。问题1:为何开启A20,以及如何开启A20先回答第一个问题,为了兼容早起的版本,x86在开机的时候是实模式状态,寻址空间是1m。寄存器只有16位,为了模拟1m的寻址空间,用cs和ip来寻址原创 2020-09-04 10:13:48 · 208 阅读 · 0 评论 -
ucore实验报告
已经大四秋招在即,手里还没有offer,还有一些其他原因压力甚大。按道理来说这个时间应该好好秋招多投几个岗位多面试学习的,可是因为一些原因还是想静下心写个东西吧。这个lab我好早之前都想写了,奈何中间真的是有一些事。最近立了个flag,三个月内完成最少5个lab,加油!github地址:https://github.com/King8611/ucore_lablab1:练习1:https://blog.csdn.net/King8611/article/details/108325376原创 2020-09-02 10:47:55 · 267 阅读 · 0 评论 -
ucore lab1练习2
从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行。修改tools/gdbinit的内容如下:set architecture i8086target remote :1234然后make clean一下,执行make debug。(这段makefile代码没看,根据百度学的)。顺利运行后,会出现这个,这时候执行指令位于0x0000fff0处(BIOS第一条指令):onof GDB. Attempting to continue with the default i8086 s.原创 2020-09-02 10:42:17 · 306 阅读 · 0 评论 -
ucore lab1练习1
练习1:理解通过make生成执行文件的过程。(要求在报告中写出对下述问题的回答)问题1:操作系统镜像文件ucore.img是如何一步一步生成的?(需要比较详细地解释Makefile中每一条相关命令和命令参数的含义,以及说明命令导致的结果)执行make v=后的结果(做了过滤处理)#编译kern+ cc kern/init/init.c+ cc kern/libs/stdio.c+ cc kern/libs/readline.c+ cc kern/debug/panic.c+ cc ker原创 2020-08-31 17:13:50 · 337 阅读 · 0 评论