JOS LAB2,Memory and Paging.PART 2

JOS LAB2,Memory and Paging.PART 1

asd posted @ Wed, 24 Nov 2010 06:17:31 -1100 in OSE6.828 , 2616 readers

和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.

 

Avatar_small
AAA said:
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

Avatar_small
civaget said:
Wed, 13 Dec 2023 08:06:17 -1100

백링크하이 truly transformed my SEO game! Quality over quantity – exactly what my website needed.

Avatar_small
civaget said:
Tue, 19 Dec 2023 22:56:50 -1100

Recharge your body and soul at 천안오피's serene sanctuary.

Avatar_small
civaget said:
Thu, 21 Dec 2023 02:39:42 -1100 I've become a 스포츠중계 evangelist among my friends.
Avatar_small
civaget said:
Fri, 22 Dec 2023 23:04:56 -1100

Whether you're into massages or meditation, 오피뷰 has you covered. A comprehensive guide for relaxation seekers.

Avatar_small
civaget said:
Sun, 31 Dec 2023 02:55:51 -1100

Indulge in relaxation at "평택휴게텔." With a variety of massages, it's the ultimate wellness destination in

Avatar_small
civaget said:
Sun, 07 Jan 2024 03:34:38 -1100

I felt like a new person after my visit to 부천출장마사지. Their massages are incredibly rejuvenating.


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter