固定式分区是在处理作业之前存储器就已经被划分成若干个分区,每个分区的大小可以相同,也可以不同。但是,一旦划分好分区后,主存储器中的分区的个数就固定了,且每个分区的大小固定不变。系统中有一张分区说明表,每个表目记录一个分区的大小、起始地址和分区的状态,当系统为某个作业分配主存空间时,根据所需要的内存容量,在分区表中找到一个足够大的空闲分区分配给它,然后将此作业装入内存。
为了体现其特色在设计程序是建立内存使用表来观察。
分配流程如图5.7所示
图5.7固定分区分配模块流程图
5.6 页面置换模拟实现
在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法
系统通过模拟页面调入顺序的载入,分别设置了三种不同的置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法)为了使观察的更加容易此系统为物理块尽心排序。将其出站的可能性排序。
最佳置换算法是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,置换那些以后永远不能使用的或者在最长时间以后才会用到的页面。本系统通过字符串定位(string.indexof())来实现。
先进先出是的最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面给予淘汰。该算法实现简单,只需要把一个进程已调入内存的页面,按先后次序连接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。本系统通过堆栈实现。
最近最久未使用是基于使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到的想法所产生的。其每次缺页中断就会置换出最久没使用的置换而出。本系统采用数组存储类堆栈来实现。
页面置换流程图如图5.8所示
图5.8页面置换流程图
6. 遇到的问题及解决方法
6.1 系统安全性
6.1.1 系统异常
正如许多OOP语言一样,C#也能处理可遇见的,反常条件(丢失网络连接,文件丢失)下的异常。当应用程序遇到异常情况,它将“抛”出一个异常,并终止当前方法,直到发现一个异常处理,那个堆栈才会清空。
这意着如果当前运行方法没有处理异常,那么将终止当前方法,并调用方法,这样会得到一个处理异常的机会。如果没有调用方法处理它,那么该异常最终会被CLR处理,它将终止程序
可以使用try/catch块来检测具有潜在危险的代码,并使用操作系统或者其他代码捕捉任何异常目标。Catch块用来实现异常处理,它包含一个执行异常事件的代码块,理想情况下,如果捕捉并处理了异常,那么应用程序可以修复这个问题并继续运行下去。即使应用程序不能继续运行,也可以捕捉这些异常,并显示有意义的错误信息,使应用程序安全终止。同时,你也有机会将这些错误书写入日志中。
如果在方法中有一段代码无论是否碰到异常都必须运行(例如,释放已经分配的资源,关闭一个打开的文件)那么可以把代码放在finally块中。这样甚至在存在异常的代码中也能保证其运行。
本系统在数据处理方面运用此功能进行判断。为了防止连接数据库失败 C#操作系统课件设计算法模拟模块算法模拟系统(12):http://www.751com.cn/jisuanji/lunwen_1414.html