操作系统学习总结三

1.windows操作系统内存管理方式

固定分区

  • 使用大小固定的分区,小于或等于分区的进程都可以装入到内存中。优点:实现简单,系统开销少。缺点:程序可能太大无法放入分区,内部碎片。
  • 使用大小不等的分区,有两种方法将进程放入分区,选择所能容纳进程的最小分区,这样可以减少内部碎片。但是因为分区的数目是固定的,它限制了最大活动进程的数目。而且分区大小事先固定,不利于小作业,在知道作业主存需求的前提下还行,否则是很低效的。

动态分区

为进程分配所需的内存,分区长度和数目是可变的,但是动态分区会产生外部碎片,内存利用率下降。

分页

将主存分成大小固定且相等的块,块相对比较小,每个进程也被分成同样大小的块,进程中成为页,主存中成为帧。每个内部碎片不超过页的大小,且没有外部碎片。操作系统需要为每一个进程维护一个页表,页表记录进程每一页在主存中的位置。进程内存不用连续存放。缺点是需要硬件支持,增加了系统开销,虽然减少了碎片,但是每一个作业或进程的最后一页还是会产生碎片,这依然是一部分损失。需要将整个程序装入内存

分段

将进程或作业分为若干个段,段的大小可以不等,主存为段动态分配内存,这些段地址不需要连续存储。优点解决了内部碎片,减少了外部碎片,程序的代码段可以分别编写编译。缺点同样是需要硬件支持,进程必须全部被载入内存。

段页式

一个进程中具有逻辑功能的程序或数据依旧分为段,并有各自的段号,这个事分段式特征,在每个段里,按照一定大小划分为页,最后不足一页的仍占一页。所以段页式需要一个段号,页号和页内偏移量来寻址。优点就是段式和页式的优点,缺点是需要硬件支持,寻址变得相对复杂,cpu执行速度会下降。

2.静态链接与动态链接

应用程序的两种链接方式,静态链接是在编译链接时将链接的代码直接拷贝过来,这样做程序保证程序不再依赖库,可独立运行发布的时候不需要将库一并发布,缺点是代码量会比较大。动态链接是在编译链接时,不直接拷贝代码,而是记录下链接的相关信息,在执行程序时,系统根据动态链接将相应的动态库加载到共享内存,程序运行到指定代码时去共享区寻找。优点是多个程序共享一段代码,不需要重复拷贝代码。缺点是动态库在运行时加载,影响点性能。

3.几种页面置换算法

地址映射到页面的过程中,如果所要访问的页面不在,产生缺页中断,系统需要选取一个页面移出内存,从而为新的作业提供空间,选取页面的算法叫页面置换算法。

最佳置换算法OPT(理想置换算法)

选取页面中最长时间内不会被访问的页面,但是这是不可能实现的,因为系统无法知道某个页面何时被访问。这个算法可用来对其他可行算法做性能比较。

先进先出算法FIFO,这种算法就是每次选取在主存中使用最久的页面,它由一个队列来控制,每当加入一个新的页面,就将它添加进队尾。缺点是有些页面正因为频繁被使用,所以才使用得最久,这样导致效率下降了。

最近最久未使用算法LRU

结合了OPT与FIFO的思想,虽然无法知道那个页面是最长时间内不会被访问的,但是可以根据访问的结果做一个推测,来假定某个页面会是最久不会被访问的。简单的说就是选择最近最久没有被用过的页面。如何记录页面使用时间,有两种方法。一是通过在页表中加一项内容来记录使用的时间,但是在查找和维护需要较大的开销。另一种是使用一个棧来存储页面,当某个页面被使用后,就将它放到棧顶。由于要从中间移动,所以需要双向链。

最少用置换算法LFU

选取使用频率最低的页面,需要为每一个页面提供一个移位寄存器,因为存储器能在短时间内访问多次页面,所以记录访问次数不现实,这里采用每访问一次将最高位置为1,在每隔一段时间(100ns)右移一位。缺点是并不能真正反应页面使用情况,因为在一个时间间隔内,访问1次和n次结果是一样的。

4.什么是虚拟内存

系统中的程序需要在内存中完成,如果执行的程序很大或很多,就会将内存消耗殆尽,windows下系统拿出一部分硬盘当作内存,当内存占用完后,就会调用虚拟内存来使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值