Linux操作系统内存管理的源码实现
发布时间:2016-01-25 15:11:36 所属栏目:Linux 来源:网络整理
导读:最近一段时间在阅读Linux的源代码,想把看到的东西写出来,觉得内存这一部分最简单,就先写了出 来。请指正! 内存最低4K的地址是一张页目录(page_dir),页目录
程序运行了,问题又来了。终于读到了“写时复制”和请求调页的部分。当程序访问的线性地址没有 被映射到一个物理页面,或欲写操作的线性地址映射的物理页面仅是只读,都会产生一个页异常,然后就 会转去页异常中断处理程序(int 14)执行,页异常中断处理程序(page.s)如下: 14 _page_fault: 15 xchgl %eax,(%esp) 16 pushl %ecx 17 pushl %edx 18 push %ds 19 push %es 20 push %fs 21 movl x10,%edx 22 mov %dx,%ds 23 mov %dx,%es 24 mov %dx,%fs 25 movl %cr2,%edx 26 pushl %edx 27 pushl %eax 28 testl ,%eax 29 jne 1f 30 call _do_no_page 31 jmp 2f 32 1: call _do_wp_page 33 2: addl ,%esp 34 pop %fs 35 pop %es 36 pop %ds 37 popl %edx 38 popl %ecx 39 popl %eax 40 iret (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |