Xv6
写代码的秃头少女
这个作者很懒,什么都没留下…
展开
-
Xv6相关编译调试环境配置6.828
6.828中使用的工具 你将在这个课程中使用两套工具:一个x86模拟器,QEMU,用于运行你的内核; 和一个编译器工具链,包括汇编器,链接器,C编译器和调试器,用于编译和测试你的内核。此页面提供您需要下载并安装自己的副本的信息。这个课程假定你熟悉Unix命令。 我们强烈建议使用Debathena机器,例如athena.dialup.mit.edu来实验室。如果您使用运行...翻译 2018-07-24 19:39:22 · 1432 阅读 · 0 评论 -
6.828 Xv6实验工具指导
6.828实验工具指南 熟悉您的环境对于高效开发和调试至关重要。 本页简要介绍了JOS环境以及有用的GDB和QEMU命令。 阅读GDB和QEMU手册,这些是让你知道如何使用的强大工具。调试提示:内核用户环境参考:JOS makefile JOS obj / GDB QEMU调试提示内核 GDB是你的朋友。使用qemu-gdb(或其qemu-gdb-nox...翻译 2018-07-24 19:40:22 · 2039 阅读 · 0 评论 -
Xv6源代码之boot
一 基本原理 计算机加电启动后,CPU一开始会执行称为BIOS(基本输入/输出系统)的程序,该程序存储在主板上的非易失性存储器(ROM)中。 BIOS的工作是准备硬件,然后将控制权交给操作系统。具体来说,计算机系统的 BIOS 在完成一系列的初始化后会选择一个启动设备(例如硬盘、光盘、软盘等),并且读取该设备的第一扇区(磁盘最开始的 512 个字节),如果发现它以 0xaa55 结...原创 2018-07-24 19:41:23 · 771 阅读 · 0 评论 -
GDT加载过程分析
# Bootstrap GDT.p2align 2 # force 4 byte alignment 向后移动位置计数器置为4字节的倍数 为了内存对齐gdt: SEG_NULLASM # null seg SEG_ASM(STA_X|STA_R, 0x0, 0xfff...原创 2018-07-24 19:41:00 · 2215 阅读 · 1 评论 -
Xv6源码分析——内存管理
内存管理主要分为两大部分,第一部分是内核的物理内存分配程序,以便内核可以分配内存并稍后释放它。 分配器将以4096字节为单位进行操作,称为页面。内核会维护记录哪些物理页面是空闲的和哪些已分配的数据结构,以及每个页面的进程数量,以及如何分配和释放内存页面。内存管理的第二个组成部分是虚拟内存,它将内核和用户软件使用的虚拟地址映射到物理内存中的地址。 当指令使用内存时,x86硬件的内存管...原创 2018-07-24 19:41:41 · 3536 阅读 · 0 评论 -
xv6源码分析—第一个用户进程
关于进程 进程是一个抽象概念,它让一个程序可以假设它独占一台机器。进程向程序提供“看上去”私有的,其他进程无法读写的内存空间,以及“看上去”仅执行该程序的CPU。xv6使用页表(硬件)来为每个进程提供其独有的地址空间,页表将虚拟地址映射为物理地址。 xv6为每个进程虚拟出一个0xFFFFFFFF的内存地址,包含了从虚拟地址0开始的用户内存。它的地址最低处放置进程...原创 2018-07-24 19:42:24 · 4036 阅读 · 1 评论