信号量初值
Semaphore A_full=x; //A信箱初始有x个邮件
Semaphore A_empty=M-x; //A信箱初始还有M-x个邮件的容量
Semaphore B_full=y; //B信箱初始有y个邮件
Semaphore B_empty=N-y; //B信箱初始还有N-y个邮件的容量
Semaphore A_mutex=1; //对A信箱必须要互斥访问
Semaphore B_mutex=1; //对B信箱必须要互斥访问
A(){
while(true){
P(A_full);
P(A_mutex);
从A的信箱中取一个邮件;
V(A_mutex);
V(A_empty);
回答一个问题并提出一个新问题;
P(B_empty);
P(B_mutex);
将新邮件放入B的新信箱;
V(B_mutex);
V(B_full);
}
}
B(){
while(true){
P(B_full);
P(B_mutex);
从B的信箱中取一个邮件;
V(B_mutex);
V(B_empty);
回答一个问题并提出一个新问题;
P(A_empty);
P(A_mutex);
将新邮件放入A的新信箱;
V(A_mutex);
V(A_full);
}
}
(1)页的大小有2^12B=4KB,页框大小2^12B=4KB,进程的虚拟地址空间大小为2^20=1M页
(2)页目录的大小为4B*2^10=2^12B=4KB,则页目录一共占一页,一个页目录对应着2^10=1024个页表,一个页表大小为2^10*4B=4KB占1页,则进程的页目录和页表一共占1024+1=1025页
(3)进行地址转换时,访问虚拟地址0100 0000H和0111 2048H,两个地址的页目录号均为0000 0001 00B,则进行地址转换时只访问了一个二级页表.