操作系统覆盖技术和交换技术
2016-05-22 19:56
155 查看
覆盖技术
为什么提出覆盖技术?倘若我有一个进程要运行,它需要10k的内存分配,但是现在拥有的资源是内存大小只有6k,那我们该怎么办?覆盖技术就可以解决这样一个问题。即在较小的可用内存中运行较大的程序。
看图:
覆盖技术又是怎么实现的呢?
依据整个程序的逻辑结构,把不相关,不会相互调用的模块划分一组来进行内存的共享。
#代码如图所示,左边图片为代码逻辑结构例如可以看出a,b之间没有相互调用关系,其他的关系自己可以看懂,左边是代码实际的分布。
我们可以进行分组。(main)/3k,(a,b)/2k,(c,d)/2k这是一种分法(后面的/3k,2k,代表分组获得的内存大小,以最大的一个为实际分配大小)这样一分在一个组内的函数就可以共用一片代码块。因为他们之间没有相互调用关系。
如图:
除了以上分组还可以有以下分组(main)/3k,(a,d)/2k,(b,c)/2k,两种分组哪种能提高内存的利用率,这是我们开发人员要考虑的事情。
那覆盖技术又存在着那些问题:
因为覆盖技术中的分配是由程序员自己分配,自己考虑进程间的逻辑结构,哪些是无关的,哪些是有关的,把无关的分在一组,把有关的分开,还要考虑不同分组的优差别,这无疑会增加编程的难度。
交换技术
那为什么又提出交换技术?看图:假若内存里的A程序不止一个>=1,而且这里的程序A是处于暂停状态的进程,可以把它提出内存暂时保存到外存取,把内存空间让b来使用。
交换技术就是在上面这种情况下提出。
交换技术又是如何实现的?
前面已经说了,是把符合一定条件的程序踢到外存去也就是进程挂起,这里的一定条件是由操作系统来筛选,通俗的就是没有运行但是仍然在内存中的进程。让后把需要运行的程序加载到内存中来。
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 页面缓存:内存和文件之间的那些事
- Lua的内存管理浅析
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- 跟我学习JScript的Bug与内存管理
- js获取本机操作系统类型的两种方法
- 跟我学习javascript的垃圾回收机制与内存管理
- Linux操作系统添加新硬盘方法
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- Windows 操作系统的安全设置
- 深入探讨PHP中的内存管理问题
- php判断当前操作系统类型
- PHP获取用户的浏览器与操作系统信息的代码