ucore Lab2学习:Virtual Memory

我觉得这个lab最主要就是理解好Virtual memory是怎么map到physical memory的。在CSAPP里面了,通过MMU和TLB电路来实现转换。x86中是用的2级page table。

还要理解stack frame(譬如lab1的project 4.1.1):switch_to_u2k和swith_to_k2u.有2种方法。一个是通过改写stackframe的TSS。一个是直接用asm改写gate descriptor。

CSAPP讲了:每一个process有一个对应的VM和Page table.

不过为什么BIOS在xv6和ucore的位置不同呢?(kernal.ld)都是指定了entry在0x100000处(物理地址)。

在csapp里面很好的解释了user/kernal stack以及process直接如何share 全局变量和kernel (xv6 book: each process has 2 stacks: user stack, and kernel stack)

在xv6中提到:像右图这样把2段VM映射到同一个物理地址是page table一个惯用伎俩!

// return address
return &((pte_t*)KADDR(PDE_ADDR(*pdepage)))[PTX(la)];

ucore Lab2学习:Virtual Memory

时间: 2024-08-06 16:02:54

ucore Lab2学习:Virtual Memory的相关文章

Linux Process Virtual Memory

目录 1. 简介 2. 进程虚拟地址空间 3. 内存映射的原理 4. 数据结构 5. 对区域的操作 6. 地址空间 7. 内存映射 8. 反向映射 9.堆的管理 10. 缺页异常的处理 11. 用户空间缺页异常的校正 12. 内核缺页异常 13. 在内核和用户空间之间复制数据 1. 简介 用户层进程的虚拟地址空间是Linux的一个重要抽象,它向每个运行进程提供了同样的系统视图,这使得多个进程可以同时运行,而不会干扰到其他进程内存中的内容,此外,它容许使用各种高级的程序设计技术,如内存映射,学习虚

[hadoop] - Container [xxxx] is running beyond physical/virtual memory limits.

当运行mapreduce的时候,有时候会出现异常信息,提示物理内存或者虚拟内存超出限制,默认情况下:虚拟内存是物理内存的2.1倍.异常信息类似如下: Container [pid=13026,containerID=container_1449820132317_0013_01_000012] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.7 GB o

虚拟内存 Virtual Memory

物理地址和虚拟地址 把主存看成是由连续字节单元组成的大数组,并且用物理地址(PA)来标识每个数组的单元.CPU需要加载存储器中一个字都时候,就指定这个字的物理地址的首地址,从而将存储器中的数据返回给CPU,通过物理地址来访问存储器的方式就是物理寻址.所以很直观,物理寻址方便很多,然而对于系统来说,直接物理寻址对存储器的管理很不合理.  所以有了虚拟地址(VA),通过虚拟地址访问存储器的方式就叫做虚拟寻址,其实这种说法不是很恰当,因为虚拟地址最终还是会被翻译(这个翻译由硬件和系统协同完成的)成物理

virtual memory exhausted: Cannot allocate memory

问题描述: 购买的Linux服务器,Linux服务器的内存为512MB. 在编译PHP的时候会提示:virtual memory exhausted: Cannot allocate memory,编译失败. 解决方法: 发生该问题的原因是服务器的内存不够,从而导致编译失败. 而购买的Linux服务器,未给你分配虚拟内存,所以可以通过自行增加虚拟内存的方法予以解决 [[email protected] ~]# free -m total used free shared buffers cach

LDAP实例异常停止日志提示虚拟内存virtual memory不足

[05/Oct/2014:20:50:37 +0800] - ERROR<5135> - Resource Limit - conn=-1 op=-1 msgId=-1 - Memory allocation error calloc of 9420 bytes failed; errno 12The server has probably allocated all available virtual memory. To solve this problem, make more virt

virtual memory exhausted: Cannot allocate memory 解决方法

在阿里云买了个云服务器,内存1G.编译kudu时出现下面的错误: virtual memory exhausted: Cannot allocate memory 问题原因:由于物理内存本身很小,且阿里云服务器并没有分配swap空间,当物理内存不够用时, 物理内存中暂时不用的内容没地方转存. 解决方法:手动分配一个swap空间 dd if=/dev/zero of=/swap bs=1024 count=1M    #创建一个大小为1G的文件/swap             mkswap /s

Cache and Virtual Memory

Cache存储器:电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(DynamicRandonAccessMemory)之间,规模较小,但速度很高的存储器,通常由SRAM(StaticRandomAccessMemory静态存储器)组成.它是位于CPU与内存间的一种容量较小但速度很高的存储器.CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避

virtual memory、swap、mount point

1.virtual memory =  physical memory + swap 2. page fault :a type of interrupt, called trap, raised by the hardware when a running program accesses a memory page that is mapped into the virtual address space, but not loaded in physical memory. 3.mount

DEMAND PAGING Virtual Memory - The avoidance of thrashing was a major research area in the 1970s and led to a vari- ety of complex but effective algorithms.

COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION With the use of paging, truly effective multiprogramming systems came into being. Furthermore, the simple tactic of breaking a process up into pages led to the development