linux0.11进程共享同一个页目录问题

[复制链接]
查看11 | 回复2 | 2021-1-27 06:27:39 | 显示全部楼层 |阅读模式
linux0.11版本,所有进程共享同一个页目录而各自使用不同的页表,该共享的页目录就放在物理地址最前面的4k。但我有一个疑惑,如果所有进程共享一个页目录的话,为什么不会产生冲突。例如,进程A访问线性地址0X00f59f50,假设这是第一次访问该地址,系统就会根据线性地址(高10位的页目录项和中间10位的页表项)和新申请的物理地址等等,去设置页目录表和页表中相应的项,这个没有问题;但进程B也访问自己的线性地址空间0X00f59f50时,系统按照同样的方法去做,发现对应的页目录项P位为1,继续查看对应的页表项,发现已经被占用,这时,系统会做什么?还是我上面说的不对?如何体现进程A和进程B对各自线性地址0X00f59f50的访问会使用各自页表?因为这个地址都已经确定了页目录表中的项,也确定了页表中的项,怎么会不冲突呢。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:39 | 显示全部楼层
谁说所有进程共享一个页目录的?下面是我写的0.11中的内存布局
内存开始的布局
idt
.
.
.
256*8
gdt(前四项)
NULL0x00
code0x08
data0x10
sys0x18
.
.
.
初始化后页目录中的值
0x00001007
0x00002007
0x00003007
0x00004007
0x00000000
.
.
.
0x00000000页表和页目录刚开始是清0的,所以没用到的页目录都是0,这方便刚开始分配内存
以上是页目录,其实页目录里面存的是页表的地址,后12位存的是页表的属性
回复

使用道具 举报

千问 | 2021-1-27 06:27:39 | 显示全部楼层
页目录是和线性地址对应的,nr×64M
应该是几个页目录对应一个进程,不是所有的页目录都用于一个进程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行