资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
1操作系统操作系统实验指导实验指导实验实验 1:进程管理:进程管理实验目的:实验目的:1.熟悉进程管理相关知识;2.熟练掌握 VC6.0、Java 开发工具或其他编程工具;2.C、Java 或其他语言编程实现银行家算法。实验内容:实验内容:银行家算法中的数据结构可利用资源向量Available(n元数组)最大需求矩阵Max(nm矩阵)分配矩阵Allocation(nm矩阵)需求矩阵Need(nm矩阵)Needi,j=Maxi,j-Allocationi,j银行家算法Request是进程Pi的请求向量(1)如果Requestj=Needi,j,便转步骤2;否则出错(2)如果Requestj=Availablej,便转步骤3;否则表示资源不足,进程Pi等待(3)将资源试探的分配给进程 Pi,修改数据Availablej:=Availablej-Requestj;Allocationi,j:=Allocationi,j+Requestj;Needi,j:=Needi,j-Requestj;(4)系统执行安全性算法,处于安全状态则正式分配资源安全性算法(1)设置两个向量:工作向量Work:=Available,表示可用资源数Finish表示是否有足够的资源分配,初值Finishi:=false2(2)找满足条件Finishi:=false,Needi,j=Workj的进程。找到则执行步骤3;否则执行步骤4(3)进程Pi获得资源,执行至完成Workj:=Workj+Allocationi,j;Finishi:=true;转到步骤2(4)如果所有进程 Finishj:=true,则系统处于安全状态;否则处于不安全状态实验步骤:实验步骤:1) 假设系统中有 5 个进程 P0、P1、P2、P3、P4,3 种资源 A、B、C,初始状态为:4 3 10 0 24 3 3P40 1 12 1 12 2 2P36 0 03 0 29 0 2P21 2 22 0 03 2 2P13 3 27 4 30 1 07 5 3P0Available A B CNeed A B CAllocation A B CMax A B C资源情况 进程2) 屏幕输出系统初始状态,同时检测当前状态是否安全,输出安全序列,等待用户输入下一个请求。如下图:33) 输入请求进程的编号,和请求资源的数量,如果安全,输出安全序列,询问是否继续操作。如下图:4) 用户选择“y” ,可继续输入请求进程的编号,和请求资源的数量(这时系统已经是满足上次请求之后的状态) ,如果不安全,输出原因,询问是否继续操作。如下图:5) 用户选择“n” ,退出程序。实验实验 2(选做):存储器管理(选做):存储器管理实验目的:实验目的:1.熟悉存储器管理相关知识2.程序实现页面置换算法4实验内容:实验内容:使用先进先出(FIFO)算法或最近最久未使用(LRU)算法,编写程序,实现页面置换。先进先出(FIFO)算法:淘汰先进入内存的页面,即驻留内存时间最长的页面先被置换掉。最近最久未使用(LRU)算法:选择最近一段时间最久未使用的页面置换。实验步骤:实验步骤:1) 输入页面访问序列。2) 使用先进先出(FIFO)算法或最近最久未使用(LRU)算法计算需要置换的页面。3) 输出页面置换的序列。5一、一个好的程序的评价标准按次序主要有以下一、一个好的程序的评价标准按次序主要有以下 3 3 条:条:1) 可以正确的运行。2) 容易理解。3) 有效率。华为软件编程规范和范例华为软件编程规范和范例.doc.doc1-1 :程序块要采用缩进风格编写,缩进的空格数为 4 个 (不要使用 TAB 键)1-6 :不允许把多个短语句写在一行中,即一行只写一条语句 示例:如下例子不符合规范。 rect.length = 0; rect.width = 0; 应如下书写 rect.length = 0; rect.width = 0; 1-7 :if 、for 、do 、while 、case 、switch 、default 等语句自占一行,且 if 、for 、do 、while 等语句的执行语句部分无论多少都要加括号 示例:如下例子不符合规范。 if (pUserCR = NULL) return; 应如下书写: if (pUserCR = NULL) return; 1-10 :程序块的分界符(如 C/C+ 语言的大括号 和 )应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及 if 、for 、do 、while 、switch 、case 语句中的程序都要采用如上的缩进方式 示例:如下例子不符合规范。 for (.) . / program code if (.) . / program code void example_fun( void ). / program code 应如下书写。 for (.) . / program code if (.) 6. / program code void example_fun( void ) . / program code 2-1 :一般情况下,源程序有效注释量必须在 20 以上 2-8 :注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开 2-12 :注释与所描述内容进行同样的缩排说明:可使程序排版整齐,并方便注释的阅读与理解。 示例:如下例子,排版不整齐,阅读稍感不方便。 void example_fun( void ) /* code one comments */CodeBlock One/* code two comments */CodeBlock Two 应改为如下布局。 void example_fun( void ) /* code one comments */CodeBlock One/* code two comments */CodeBlock Two 3-1 :标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解 3-4 :对于变量命名,禁止取单个字符(如 a 、b 、c. ) ,建议除了要有具体含义外,还能表明其变量类型、数据类型等,但 i 、j 、k 作局部循环变量是允许的 4-1 :注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级 说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。 a | b * + stat_poi += 1; 应分别改为如下: *stat_poi += 1; stat_poi+; / 此二语句功能相当于“ * stat_poi + += 1; ” + stat_poi; *stat_poi += 1; / 此二语句功能相当于“ * + stat_poi += 1; ” 8-2 :在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率 78-8 :在多重循环中,应将最忙的循环放在最内层 (减少 CPU 切入循环层的次数)示例:如下代码效率不高。 for (row = 0; row 100; row+) for (col = 0; col 5; col+)sum += arowcol; 可以改为如下方式,以提高效率。 for (col = 0; col 5; col+) for (row = 0; row 100; row+)sum += arowcol; 二、变量命名的规范性(希望大家学习一下二、变量命名的规范性(希望大家学习一下“匈牙利命名规则匈牙利命名规则” )1、变量前缀 整型: i(整型),n(整型自然数) ,l(长整型) ,u(无符号整型) ,dw(双精度型) 字符型: ch 布尔量: b (Boolean) 浮点数: f(float) 双精度浮点: d (double)字符串:str(String)2、变量名和函数名 按照单词为单位第一个字母大写,并尽量与现时定义一致如strStudentName、nStudentAge、int getStudentAge()等。尽量使用英文名字少使用中文字母缩写。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号