操作系统----内存管理
来源:互联网 发布:飞行仪表显示软件开发 编辑:程序博客网 时间:2024/06/11 00:09
我打算基于一个简单的计算机系统模型,来学习理解一些操作系统的基础概念。
简单的计算机系统模型:CPU执行指令,而存储器系统为CPU存放指令和数据。在简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。
我打算从没有内存管理开始说起,一步步构建起目前的操作系统的内存管理方式出来。
一:无内存管理。
缺少内存抽象,并不一定会导致电脑爆炸,系统奔溃.....一些嵌入式系统和智能卡系统当中,缺少内存抽象的情况,还是很常见的,像我初中时的MP3啊,现在高级一点的洗衣机微波炉啊。这样的设备都已经完全被软件控制,它们的软件是刻写在ROM(read-only memory只读)上的。这样,软件都采用访问绝对内存地址的寻址方式,也能正常工作。原因是所有运行的程序都是可以事先确定的。洗衣机不会放歌,也不会突然让你选择加热模式....
早起的计算机当中,程序都是找物理内存的,也就是说,程序在运行时访问的地址,都是物理地址。
这样的嵌入式系统,和“远古”时期的计算机,之所以能够在缺少内存抽象的情况下,还能如人所愿正常运行。我们可以看出,是因为,所需功能简单。
那么问题来了,现在的计算机,都要求能够“同时”“伪并发or真物理多并发”的运行多道程序,这样CPU的利用率才高,在只能直接访问物理内存地址的情况下,显然存在一些问题。
1;内存使用效率低;
2;地址空间不隔离;
3;程序运行的地址不确定;
举个例子,先人想在没有内存抽象的情况下,强行装逼,运行多个程序。也不是不可能,操作系统只需要将当前内存中所有内容保持到硬盘文件中,然后把下一个程序读入到内存中再运行即可。只要在某一个时间内只有一个程序在内存中,自然就不会有冲突。
IBM 360 的早期模型,尝试采用了特殊硬件
页面置换算法
当发生 缺页中断 时,程序就暂时无法运行下去,需要将下一步所要执行的程序,换到内存中去。当此时 所有页框都已满,就需要叫目前在 页框 中的内容拿出来,将现在导致 缺页中断 的东西拿到 空出来的 页框 里去。
当然,如果要换出的页面在内存(页框)驻留期间被修改过,那么把它给记录下来。如果没有被修改过,那就不用记录了,直接覆盖就OK了。
当发生 缺页中断 时,虽然可以随便选一个 页面 来置换。但为了提高系统效率,我们总是希望,所置换的页面,是最不常用的。试想,如果将一个 频繁使用的页面给置换了,过不了多久,又要置换回来,岂不是造成了效率的浪费??
另外值得一提的是,页面置换,可以视作一类问题的通解来看待。如Web服务器。服务器可以把一定数量的经常访问的Web页面存放在存储器的高速缓存中。如果存储器已满,并且服务器要求访问一个不在高速缓存中的页面时,就必须要置换高速缓存的某个Web页面,那么问题来了,置换哪一个呢?
下面开始介绍页面置换算法:
按这样的逻辑介绍:最容易想到的FIFO(First-In First-Out先进先出)算法,到最理想化最完美的 最优页面置换算法,在解释最优页面置换算法为什么难以实现之后,介绍它的近似算法--LRU(Least Recently Used 最近最少使用)页面置换算法。LRU页面置换算法是 最优置换算法的近似,但它的实现仍然不咋好,就继续近似,有了 Clock算法。
小结一下,有如下页面置换算法:
1.FIFO先入先出页面置换算法
2.最优页面置换算法
3.LRU 最近最少使用算法(最优的近似)
4.Clock算法(LRU的近似)
- 操作系统内存管理
- 操作系统内存管理
- 操作系统内存管理
- 操作系统内存管理
- 操作系统实验-内存管理
- 操作系统八内存管理
- 操作系统内存管理浅见
- 操作系统--内存管理
- 操作系统原理内存管理
- 操作系统内存管理
- 操作系统概念-内存管理
- 操作系统概念-内存管理
- 操作系统内存管理
- 操作系统-------内存管理(1)
- 操作系统 内存管理
- 操作系统 内存管理-虚拟内存
- 操作系统内存管理
- 操作系统内存管理
- 大龄恐惧症 (zz)
- 随堂笔记160225表达式
- UML类图几种关系的总结
- 学长的训诫C++
- Servlet_03_ServletConfig
- 操作系统----内存管理
- UVA 714(p244)----Copying Books
- chart控件的简单使用
- 接口回调-自己理解
- UVA 725(p182)----Division
- 加载内核模块,实现新的系统调用:遍历系统当前所有进程的任务描述符,并将pid组织成树状结构显示
- 欢迎使用CSDN-markdown编辑器
- POJ 3177 Redundant Paths(Tarjan_BCC+缩点)
- leetcode-115-Triangle