一个操作系统的实现(2.3)页式存储及中断异常的处理

主要内容

1.页式存储介绍
2.中断和异常

1.分页机制中的页,就是一块内存,在80386中为4096字节(4KB)。
2.当分页机制启动时,逻辑地址转化为物理地址的过程也会变化(逻辑地址-》线性地址-》物理地址——。
3.在两级页表中,第一级叫做页目录,大小为4KB,有1024个表项(PDE),每个表项对应一个二级页表,第二级的页表也有1024个表项(PTE),每个表项对应一个物理页。
4.转化规则:从寄存器cr3指定的页目录中根据线性地址高10位得到页表地址,然后在页表中根据线性地址的第12到21位得到物理页首地址,将这个地址加上线性地址低12位就能得到物理地址。
5.通过cr0的PG位来启动分页机制,PG=1时生效。
6.处理器会将常用的页保存在缓冲区中,当在其中找不到转化信息时才会去内存中找。
7.出于节约内存的目的,可以选择性的初始部分页表,因为是二级页表所以一个页表可以映射4MB的内存空间。
8.通过分页机制,不同进程可以通过不同的虚拟地址映射关系访问相同的地址。

; 首先初始化页目录
	mov	ax, SelectorPageDir	; 此段首地址为 PageDirBase
	mov	es, ax
	mov	ecx, 1024		; 共 1K 个表项
	xor	edi, edi
	xor	eax, eax
	mov	eax, PageTblBase | PG_P  | PG_USU | PG_RWW
.1:
	stosd
	add	eax, 4096		; 为了简化, 所有页表在内存中是连续的.
	loop	.1

	; 再初始化所有页表 (1K 个, 4M 内存空间)
	mov	ax, SelectorPageTbl	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值