OS-虚拟内存

操作系统作业 - 虚拟内存

 

1.简单分页和虚拟分页有何区别?

在简单分页中, 进程运行时,它的所有页必须都在内存中, 除非使用了覆盖技术.

在虚拟分页中, 进程运行时, 并非所有页都须在内存页框中, 而仅在需要时才读入页. 此外, 使用虚拟内存分页时, 把一页读入内存可能需要把另一页写出到磁盘.

 

2.什么是抖动?

       在稳定状态, 内存的几乎所有空间都被进程块占据, 处理器和操作系统能直接访问到尽可能多的进程. 因此, 当操作系统读取一块时,它必须把另一块换出. 如果一块正好在将要用到之前换出, 操作系统就不得不很快地把它取回, 这类操作导致的情况称为系统抖动, 即处理器的大部分事件都用于交换块而非执行指令.

 

3.为何在使用虚拟内存时,局部性原理至关重要?

       在虚拟内存中, 如果出现了系统抖动的情况, 处理器的大部分时间就会用于交换块而非执行指令. 为了避免系统抖动, 就需要一些算法使操作系统能试图根据最近的历史来猜测将来最可能用到的块, 而这类推断基于局部性原理. 局部性原理描述了一个进程中程序和数据引用的集簇倾向. 因此, 假设在很短的时间内仅需要进程的一部分块是合理的, 同时, 还可以对将来可能会访问的块进行猜测, 从而避免系统抖动.

 

4.在虚拟分页存储管理中,页表项有哪些典型元素?

(1) P位: 表示页表项所对应的页当前是否在内存中,若这一位表示该页在内存中,则这个页表项还包括该页的页框号;

(2) M位: 修改位, 表示相应页的内容从上次装入内存到现在是都已改变. 若未改变, 则在需要把该页换出时, 无须用页框中的内容更新该页.

(3) 页框号: 与内存中的页框相对应的页框号.

(4) 其他控制位: 其他的一些可选功能, 如若需要在页一级控制保护或共享, 则需要有用于这些目的的位.

 

5.驻留集和工作集有何区别?

驻留集指进程驻留在内存中的页面所组成的集合,驻留集管理给每个活动进程分配多少页框,和计划置换的页集是局限于那些产生缺页中断的进程,还是局限于所有页框都在内存中的进程。

工作集是提出来用于解决确定驻留集大小和变化时间安排,可变分配、局部范围的策略中的一个概念,进程在虚拟时间 t 的参数为 Δ 的工作集W(t,Δ) ,表示该进程在过去的 Δ 个虚拟时间单位中被访问到的页集。

 

6.假设页面大小为4KB,页表项大小为4B。要映射64位的地址空间,如果顶级页表能在一页中存储,需要多少级页表?

       因为页面大小为4KB,页表项大小为4B,则每个页面可以映射的页面数为 4KB/4B=2^10 个,一级页表标识出 的地址空间。 但要映射64位空间,于是增加一个二层页表,映射 2^{10}\times2^{10}=2^{20} 个页,标志出 , 一次类推可得下表, 因此,需要6级页表

Depth

Address Space

1

2^22B

2

2^32B

3

2^42B

4

2^52B

5

2^62B

6

2^72B

 

7.考虑如下的页面访问序列:7,0,1,2,0,3,0,4,2,3,0,3,2

假设系统为该进程分配了3个页框,并采用局部置换策略。请分别采用先进先出算法、最近最少使用算法、时钟算法和最佳置换算法,画出类似图8.14的图形,并计算每种算法的缺页中断次数和缺页中率?只计算页框初始化后发生的缺页中断

       因为只计算页框初始化后发生的缺页中断,红色的缺页标识位初始化时的,因此不算入

总访问13次

8.对于一个使用快表的虚拟分页存储管理系统,设快表的命中率为70%(访问快表的时间忽略不计),一次内存的存取时间为1ns。缺页处理时(包括更新快表和页表),若内存有可用空间或被置换的页面在内存中未被修改过,则处理一个缺页中断需要8000ns,否则需要20000ns。假设被置换的页面60%是属于后一种情况,则为了保证有效访问时间不超过2ns,求可接受的最大缺页率为多少?

       设缺页率为f,缺页中断处理的平均时间=8000*(1-60%)+20000*60%=?ns

       有效访问时间=(1-f)*1+f*(?+1)=?f+1

       由题意 1+?f<2 ,可得 f < 1/? 

 

9.某32位系统采用二级页表的分页存储管理方式管理内存,按字节编址,页大小为4KB,页表项大小为4字节:

(1)请给出逻辑地址结构,并标明地址结构中各部分的位数;

(2)计算逻辑地址0x10003004的页目录号,页号以及页内偏移值(最后计算结果请以十六进制或十进制表示)。

(1) 逻辑地址结构:

页目录号(10位)

页号(10位)

页内偏移量(12位)

(2)  10003004 十六进制化为二进制: 0001 0000 0000 0000 0011 0000 0000 0100

页目录号 00,01 00,00 00=64

页号        00 0000 0011=3

页偏移量 0000 0000 0100=4

 采用十进制表示,0x10003004的页目录号=64,页号=3,页内偏移量=4

 

10.某计算机采用32位段页式虚拟存储器,按字节编址,每个段最多可以有4K页,页大小为8KB,物理主存容量为1024MB。请回答以下问题:

(1)给出逻辑地址结构并说明理由。

(2)计算逻辑地址0X4EB9FDE3的段号,段内页号及页内偏移值(最后计算结果须用十六进制表示)。

(1) 在段页式虚拟存储器中,虚拟地址的格式为:

段号(12位)

段内页号(13位)

页内地址偏移量(7位)

由题意,每个段最多4K页,所以段表最多可有个项,页面大小为8KB,即B, 所以段内页号=32-12-13=7位,根据在段页式虚拟存储器中物理地址的格式:

物理页号

页内地址

其中,页内地址与虚拟地址中的页内偏移量相同,为13位,因为物理主存容量为1024MB,所以主存地址为30位,物理页号应为30-13=17位.

(2) 逻辑地址0X4EB9FDE3,写为二进制即 0100 1110 1011 1001 111 1 1101 1110 0011

   则段号 (0100 1110 1011) 2= (4EB)16

   段内页号 (100 1 111)2=(4 F)16

   页内偏移量(1 1101 1110 0011)2=(1DE3)16

 

 

  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我可以和你讨论关于模拟OS进程和内存管理的一些基础知识。 操作系统中的进程是指正在运行的程序实例。每个进程都有自己的地址空间,其中包括代码、数据和堆栈。内存管理是操作系统的一个主要功能,其负责管理物理内存和虚拟内存。操作系统通过虚拟内存机制来为每个进程提供独立的地址空间。这样,每个进程可以独立地访问它自己的地址空间,而不必考虑其他进程的影响。 在模拟OS进程和内存管理时,我们需要考虑以下几个方面: 1. 进程调度:操作系统中的调度程序负责选择哪些进程可以运行。在模拟中,我们需要实现一个类似的调度程序来选择哪些进程可以运行,以及它们运行的时间片。 2. 进程创建和销毁:操作系统中的进程管理程序负责创建和销毁进程。在模拟中,我们需要实现类似的程序来创建和销毁进程。 3. 内存分配和释放:操作系统中的内存管理程序负责分配和释放物理内存。在模拟中,我们需要实现类似的程序来分配和释放虚拟内存。 4. 虚拟内存机制:操作系统中的虚拟内存机制负责将虚拟地址转换为物理地址。在模拟中,我们需要实现类似的机制来模拟虚拟内存的使用。 5. 进程通信:操作系统中的进程通信机制负责在不同进程之间传递数据。在模拟中,我们需要实现类似的机制来模拟进程之间的通信。 以上是模拟OS进程和内存管理时需要考虑的一些基础知识。如果你有具体的问题或者需要更详细的解释,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值