• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






sfzyk

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

随笔分类 -  os ucore

学堂在线课程笔记
 
ucore 地址映射的几个阶段
摘要:第零阶段: 启动之后的实模式阶段 vir = lin = pa 第一阶段 : 启动 bootloader 的段式分页 这里段基址是0 ,所以地址空间维持不变 vir addr = lin addr = pa addr 第二阶段 : 从entry.S enable paging 开始 这时 vir a 阅读全文
posted @ 2018-10-18 16:05 sfzyk 阅读(461) 评论(0) 推荐(0)
Lab 2 内存管理
摘要:常见的操作系统 只使用了 0 和3 段选择子 DPL 是段描述符的内容 段的信息 中断和陷入的 大致特权级的展现 RPL 当前要访问数据段对饮给的特权级 CPL 当前代码段的特权级 DPL 全局的 通过门区访问特权级更高的段 特权级的切换 通过中断切换特权级 基于中断的特权级的转换 中断门 压栈信息 阅读全文
posted @ 2018-10-12 14:21 sfzyk 阅读(248) 评论(0) 推荐(0)
os一些记录
摘要:X86 32 内存机制 寄存器 段寄存器 指令寄存器 标志寄存器 编程技巧 通用格式双向链表 操作的接口 由一个指针找到宿主节点的方法 阅读全文
posted @ 2018-10-11 14:32 sfzyk 阅读(144) 评论(0) 推荐(0)
操作系统 Lab1(2)
摘要:中断很久,一看发现又多了一些内容。 打算完成了 Lab1 challenge 1 中断像量表设置的时候我们需要设置一个用于系统调用的 trap门 也就是 利用中断切换特权级 To kernel 调用 Tokernel 的时候由于由特权及的转换,所以这里会在 Tss 中取出当前函数的内核栈 并且做相应 阅读全文
posted @ 2018-10-04 16:04 sfzyk 阅读(156) 评论(0) 推荐(0)
Lab1 ex1 物理页内存分配算法的实现
摘要:调用流程如下 kern_init pmm_init page_init init_memmap pmm_manager init_memmap 从page_init 说起 先找到 e820map 这个数据结构 读取BISO 设置好的可用内存空间 将空闲内存的最后一个地址分配给 maxpa 如果max 阅读全文
posted @ 2018-05-14 16:35 sfzyk 阅读(162) 评论(0) 推荐(0)
Lab2 新增的细节
摘要:entry.S 新增加了这个入口函数 bootloader 加载完成后 将执行 kern_entry 而非lab1 中的kern_init defs.h 使用了 ({})宏定义的方式,并且执行了一行定义的语句, 首先 将a转换成size_t 然后在转换回去 define ROUNDDOWN(a,n) 阅读全文
posted @ 2018-05-12 14:50 sfzyk 阅读(159) 评论(0) 推荐(0)
Lab2 内存管理(实现细节)
摘要:lab2 中的变动 bootloader 的入口发生了改变 bootloader不像lab1那样,直接调用kern_init函数,而是先调用位于lab2/kern/init/entry.S中的kern_entry函数。kern_entry函数的主要任务是为执行kern_init建立一个良好的C语言运 阅读全文
posted @ 2018-05-12 01:27 sfzyk 阅读(342) 评论(0) 推荐(0)
ucore 物理内存探测 lab2 附录A&B
摘要:探测物理内存分布的大小和方法 bootloader 增加的工作 bootasm.S 中对应了 probe_memory 到 finish_probe 的部分。 通过BIOS 中断 获取内存可调用参数为 e820h 的INT 15h BIOS中断。 BIOS 通过 系统内存映射 地址描述符(Addre 阅读全文
posted @ 2018-05-12 01:19 sfzyk 阅读(224) 评论(0) 推荐(0)
ucore os 前初始化
摘要:BIOS 初始化完成说起 连接的时候指定了 Ttext 0x7c00 也指定了 e start 所以booasm.S 中的start 就呗钦定为程序入口了。 开始就是 屏蔽中断 初始化段寄存器 使能A20 加载段描述符表 使用 ljmp 使用 选择子是0x8 跳转到protcseg (应该也加载到c 阅读全文
posted @ 2018-05-05 10:02 sfzyk 阅读(154) 评论(0) 推荐(0)
第五讲 计算机体系结构 内存层次
摘要:总算搞完Lab1 管理存储介质的东西 cpu 内存 io 设备 内存一次最小单位 8 bit 计算机 总线32bit 有大量的数据要读写,CPU内有高速缓存 内存层次,两级缓存 操作系统的内存管理 内存 以字节为单位进行访问 磁盘 扇区编号 每一个扇区512 字节最小单位 内存管理系统的要求 抽象, 阅读全文
posted @ 2018-05-05 10:01 sfzyk 阅读(458) 评论(0) 推荐(0)
ucore os 初始化
摘要:从bootloader 交出控制权开始 bootloader 最后调用 ((void( ))(void) ()ELF e_entry& 0xffffff)() ; lab2 虽然e_entry 是虚拟地址,但是后面完成了虚拟地址到物理地址的映射。 在 ld 进行连接的时候 钦定了kern_init 阅读全文
posted @ 2018-05-02 09:59 sfzyk 阅读(249) 评论(0) 推荐(0)
操作系统 Lab1
摘要:练习1 1 ucore.img 是如何生成的 使用 make V= 查看详细的步骤 cc kern/init/init.c 使用cc工具进行预处理 gcc Idir 将dir 作为查找目录(头文件) ggdb 符加信息到允许gdb进行debug的程度 gstabs 将符加信息以 stabs form 阅读全文
posted @ 2018-05-01 22:50 sfzyk 阅读(497) 评论(0) 推荐(0)