操作系统实验指导
总实验学时:12学时 实验1:(4学时)
题目:.linux系统环境的熟练使用
目的要求:1.linux桌面环境的熟悉
2.linux各种命令的熟练掌握包括:文件操作命令、系统管理命令、用户管理命令 3.给出实验过程内容
实验2:(4学时)
题目:FCFS进程调度算法的实现或编程实现银行家安全算法
目的要求:1通过实验加强对进程调度算法的理解和掌握
2通过实验加强对银行家安全算法的理解和掌握 3理解和掌握进程管理的方法
4.给出实验过程内容和运行结果截图
实验3:(4学时)
题目:存储管理的模拟实现
目的要求:1通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,
掌握请求页式管理的页面置换算法 2.给出实验过程内容和运行结果截图
附:算法代码参考
FCFS进程调度算法的实现步骤:
1 建立一个结构体数组pro[100],每个结构体中都存有各进程相关信息,然后输入进程数N确定进程数,并输入各进程的相关信息。通过fcfs算法对按照所输入进程的arrivetime的大小进行排序,排好的序即为进程调度的执行顺序。最后再通过对个进程的其他数据进行简单处理即可 2 FCFS进程调度算法实现代码例子: #include
a[0].d_circle_time=a[0].circle_time/a[0].servetime;//计算第一个进程的相关信息 for(i=1;i 编程实现银行家安全算法步骤: 1将5个进程的所有信息放在一个对应的结构体struct pro【i】中,系统资源数和进程请求资源分别存放在available和request数组中,同时通过建立一个finishi布尔数组来控制和标识5个进程的完成情况,如果最后finish值都为真,则说明分配资源后系统是安全的,否则,不安全并将资源回收。 2银行家算法实现代码: #include } for(j=0;j<3;j++) printf(\ printf(\ for(j=0;j<3;j++) printf(\ printf(\ for(j=0;j<3;j++) printf(\ printf(\ if(i==0){ for(j=0;j<3;j++) printf(\ } printf(\} printf(\scanf(\ printf(\for(i=0;i<3;i++){ scanf(\} for(j=0;j<3;j++) if(request[j] <= pro[m].need[j]) count++; if(count == 3){ for(i=0;i<3;i++) if(request[i] <= available[i]) number++; if(number == 3){ for(k=0;k<3;k++){ available[k]=available[k]-request[k]; pro[m].allocation[k]=pro[m].allocation[k]+request[k]; pro[m].need[k]=pro[m].need[k]-request[k]; } else { printf(\请求资源不能满足!\ exit(0); } } else { printf(\请求资源超过所需!\ } exit(0); } for(j=0;j<3;j++) work[j]=available[j]; L: count = 0; for(i=0;i<5;i++){ if(!finish[i]){ for(j=0;j<3;j++) if(pro[i].need[j]<=work[j]) count++; if(count == 3){ finish[i]=1; rank[r++]=i; for(k=0;k<3;k++) work[k]=work[k]+pro[i].allocation[k]; goto L; } else count=0; } number=0; for(k=0;k<5;k++) if(finish[k]==1) number++; if(number==5){ printf(\系统处于安全状态!\\n\ printf(\安全序列为:\\n\ for(i=0;i<5;i++) printf(\else printf(\系统处于不安全状态!\ printf(\姓名:XXX\\n\\t\\t\\t学号:XXXXXXXXX\return 0; 存储器管理实验内容及步骤实例: 1.通过随机数产生一个指令序列,共320条指令。其地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分;