自考《操作系统》实验环节实施方案根据《操作系统》课程教学要求,实验环节应要求完成五个实验项目。
考虑到自考课程教学实际情况,结合我院实验室的条件,经任课教师、实验指导教师、教研室主任和我院学术委员会认真讨论,确定开设三个实验项目。
实验项目、内容及要求详见我院编制的《操作系统》课程实验大纲。
一、实验环境目前,我院根据编制的《操作系统》课程实验大纲,实验环境基本能满足开设的实验项目。
实验环境主要设备为:硬件:一台能正常启动的计算机软件:VisualC++ 6.0, Windows2003等二、实验报告要求与成绩评定学生每完成一个实验项目,要求独立认真的填写实验报告。
实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩。
成绩的评定按百分制评分。
三、实验考试学生在完成所有实验项目后,再进行一次综合性考试。
教师可以根据学生完成的实验项目,综合出3套与实验相似的考试题,由学生任选一套独立完成。
教师给出学生实验考试成绩作为最终实验成绩上报。
四、附件附件1 《操作系统》课程实验大纲附件2实验报告册样式以上对《计操作系统》课程实验的实施方案,妥否,请贵校批示。
重庆科创职业学院2009年3月20日附件1 《操作系统》课程实验教学大纲实验课程负责人:赵志斌开课学期:第四学期实验类别:专业基础课程实验类型:应用性实验实验要求:必修适用专业:通信工程课程总学时:12学时课程总学分: 1分《操作系统》课程实验项目及学时分配实验一页式存储管理一、实验目的掌握页面存储管理的内存分配方法,位视图的表示。
二、实验内容1、运行程序,由检查教师给出文件名,该文件中存有内存目前状况的位示图的数据(0和1的文件)。
(程序应做提示,界面友好)。
2、你所编制的程序应读入数据,存放在相应的数据结构中。
3、显示友好的用户界面,由检查教师输入内存申请(总块数)。
4、根据申请和位示图状态,为用户分配内存,并建立页表。
5、输出位示图和页表。
三、实验环境1、一台能正常启动的P4 1.5G HZ以上个人计算机2、安装有Visual C++6.0软件四、实验原理与方法内存被划分成2048块(页)。
用32位字长的字存放位示图,为0的位表示该块尚未分配,为1的位表示该块已分配。
五、实验步骤1、启动Visual C++ 6.0,创建一个新的C++源程序2、输入相应的代码。
3、保存程序4、运行程序主要的程序代码如下:#include<stdio.h>#include<iostream.h>#include<string.h>constint PAGES=256; //定义总块数const int WORD=32; //定义字长const int WORDNUM=PAGES/WORD;//定义总字数typedef struct node{char jobname[20];intnum;int nums[PAGES];struct node *next;}jobs;int table[WORDNUM][WORD]; int freenum=0;jobs *head;//初始化函数void initial(){int i,j;jobs *p;//初始化位示图for(i=0;i<WORDNUM;i++){for(j=0;j<WORD;j++){table[i][j]=0;}}//初始化作业表头p=new jobs;strcpy(p->jobname,"null"); p->num=0;p->next=NULL;head=p;}//读入位示图初始数据void readData(){int i,j;FILE *fp;char fname[20];cout<<"请输入初始位示图数据文件名:"<<endl; cin>>fname;if((fp=fopen(fname,"r"))!=NULL){for(i=0;i<WORDNUM;i++){for(j=0;j<WORD;j++){fscanf(fp,"%d",&table[i][j]);if(table[i][j]==1)freenum++;}}cout<<"初始位示图"<<endl; for(i=0;i<WORDNUM;i++){for(j=0;j<WORD;j++){cout<<table[i][j]<<" ";}cout<<endl;}cout<<"总空闲块数:"<<freenum;}else{cout<<"文件不能打开"<<endl;}}//新加入作业函数void add(){char jobname[20];int num;jobs *p;int i,j,k=0;cout<<"请输入新增的作业名:";cin>>jobname;cout<<"新增作业所需页数:";cin>>num;if(num<=freenum){freenum-=num;p=newjobs;strcpy(p->jobname,jobname);p->num=num;for(k=0;k<num;k++){i=0;j=0;while(table[i][j]==1){ j=0;while(table[i][j]==1)j++;if(table[i][j]==1)i++;}p->nums[k]=i*WORD+j;table[i][j]=1;}p->next=head->next;head->next=p;}else{cout<<"错误,当前剩余页数小于所需页数,请稍候再试:)"<<endl;}}//完成作业函数void finish(){char jobname[20];jobs *p,*q;intn,i,j,num,k;cout<<"请输入完成的作业名:";cin>>jobname;p=head->next;q=head;while(p!=NULL){if(strcmp(p->jobname,jobname)){ q=q->next;}p=p->next;}p=q->next;num=p->num;for(k=0;k<num;k++){n=p->nums[k];i=n/WORD;j=n%WORD;table[i][j]=0;}freenum+=num;q->next=p->next;delete p;}//显示当前位示图函数void view_table(){int i,j;cout<<"当前位示图"<<endl;for(i=0;i<WORDNUM;i++){ for(j=0;j<WORD;j++){cout<<table[i][j]<<" "; }cout<<endl;}cout<<"总空闲块数:"<<freenum<<endl;}//显示所有页表函数void view_pages(){jobs*p;inti;p=head->next;if(p==NULL)cout<<"当前没有用户作业"<<endl;elsecout<<"当前所有的用户作业页表情况"<<endl;while(p!=NULL){cout<<"作业名:"<<p->jobname<<"所用块数:"<<p->num<<endl;cout<<"本作业所点块的序列是:"<<endl;for(i=0;i<p->num;i++){cout<<p->nums[i]<<" ";}cout<<endl;p=p->next;}}//显示版权信息函数void version(){cout<<endl<<endl;cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<" ┃页式内存管理系统模拟程序┃"<<endl;cout<<" ┠───────────────────────┨"<<endl;cout<<" ┃重庆科创职业学院┃"<<endl;cout<<"┃1.0版┃"<<endl;cout<<" ┃2009年3月19日┃"<<endl;cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;cout<<endl<<endl;}void main(){intt=1,chioce;version();initial();readData();while(t==1){cout<<endl<<"==========================================="<<endl;cout<<" 页式内存管理系统模拟程序"<<endl; cout<<"==========================================="<<endl;cout<<"1.加入新作业 2.完成作业 3.显示当前内存位示图 4.显示所有作业页表0.退出"<<endl;cout<<"请选择:";cin>>chioce;switch(chioce){case 1:add();break;case2:finish();break;case 3:view_table();break;case 4:view_pages();break;case 0:t=0;break;default:cout<<"选择错误"<<endl;}}}六、思考题1.页面的分配和回收是如何操作的.七、实验报告要求认真填写试验报告,程序代码清单要完整,准确。