JOS LAB2,Memory and Paging.PART 1
和JOS的内存管理分页等等完了那么多天,终于可以勉强跑起来了,有必要写点啥。主要是针对JOS kern/pmap.c的一些体会理解,有不对的地方欢迎留言!先按照系统启动的进度来对一些重要的函数进行说明吧。
在开始之前,先说明几种地址
liner address(线性地址) 代码中使用较多的地址
virtual address(虚拟地址)
physical address(物理地址)也就是内存实际地址,基本在代码中很少直接出现
三者一个比较简单的关系就是
linear address 经过 分段机制得到 virtual address
vitural address 经过 分页机制(paging) 得到 physical.
分页机制是可选的在80286之后才有。如果分页机制没有启用 则可以说va = pa
pmap.c的重点则是对分页机制的实现,在开始实际讨论代码之前 先大体地说说分页机制是怎么工作的。
在系统中,有1个页目录(page directory)本身是一个有1024个元素,每个元素4byte(32位)的数组。其中的每个元素称为页目录项(page directory entry)。每个页目项录对应着着一个page table(页表)。页表大体与页目录相似,也是每个页表有1024个元素,称为页表项(page table entry),每个元素4byte。而不同的地方则是每个页表项对应着一块4kb的页。(内存的储存单位。在分页机制中,内存被分成一页一页的,JOS中每页4kb,以后也会有4MB为一页的).通过这种分页机制,让软件对内存地址的访问达到了 4GB(1024 * 1024 * 4kb)。即使系统的物理地址达不到4GB,通过分页机制,仍然可以让程序访问到高端内存。
程序中一般使用的线性地址是这样,分为3部分
31~~~~~~22~~~~~~11~~~~~0
|PDE-INDEX|PTE-INDEX|OFFSET| ; 最高10位是对页目录的索引范围位0~1024,中间10位是对页表的索引,最后十位是偏移
32位的PDE,实际上分为2部分
31~~~~~~~~12~~~~~~~0
|PTE--ADDRESS|ATTRIBUTE| ; 高20位组成了一个地址,低12位中包含一些属性位。
32位的PTE,是这样
31~~~~~~~~~12~~~~~~~0
|PAGE-ADDRESS|ATTRIBUTE| ; 同样,高20位是一个地址,低12位包含一些属性位。
理解这些地址之后,我们看看系统是怎么完成这个二级寻址的(0-4GB).
在这里,页目录为pgdir,对于给定的la,先取前10位。JOS中用了个宏PDX(la);则pgdir[PDX(la)]则为la对应的页目录项,
该页目录项中的高20位则是对应的页表的地址。则PTX(la)则是对应的页表项。最后,页表项对应的地址(4KB的倍数)再加上便宜则可以得到最终的物理地址。
如图:
注意看000C8000H这个地址是怎么转移到0011000的。弄清楚之后我们继续:D
取000C8000H的高10位地址。为0,来到页目录的第0项,页目录项为00003003H.
取页目录项的高20位地址,为00003H(页表项的地址)。取000C8000H的12-21位(0011001000B = C8H),注意一个页的大小是位4KB,所以此时得到的C8H还需乘以4。C8H * 4 = 320H。即页表的第C8项的地址为00003000+320H = 00003320H.
而该页表项的内容则为对应的页地址如图,00110000H.由于此处的000C8000的偏移(低12位为0)所以最终000C8000H对应的地址为0011000H + 0 = 0011000H.
Wed, 04 May 2022 02:07:24 -1100
If you happen to could email me some ideas about how well you made your websites appear to be this , I’d be appreciative! Tips on Selling Merchant Services
=======================================================================
i think that RSS FEEDS should also be included on the list of the best inventions because it makes life easier for bloggers like us,. Credit Card Processing Reseller
==============================================================
Thank you very much for your post! I am very interested in your points. How to Start a Merchant Processing Company
Wed, 13 Dec 2023 08:06:17 -1100
백링크하이 truly transformed my SEO game! Quality over quantity – exactly what my website needed.
Tue, 19 Dec 2023 22:56:50 -1100
Recharge your body and soul at 천안오피's serene sanctuary.
Thu, 21 Dec 2023 02:39:42 -1100 I've become a 스포츠중계 evangelist among my friends.
Fri, 22 Dec 2023 23:04:56 -1100
Whether you're into massages or meditation, 오피뷰 has you covered. A comprehensive guide for relaxation seekers.
Sun, 31 Dec 2023 02:55:51 -1100
Indulge in relaxation at "평택휴게텔." With a variety of massages, it's the ultimate wellness destination in
Sun, 07 Jan 2024 03:34:38 -1100
I felt like a new person after my visit to 부천출장마사지. Their massages are incredibly rejuvenating.