计算机操作系统课程设计(共43页).docx
《计算机操作系统课程设计(共43页).docx》由会员分享,可在线阅读,更多相关《计算机操作系统课程设计(共43页).docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上景德镇陶瓷学院计算机操作系统课程设计学院:信息工程学院专业:计算机科学与技术班级:13级二班学号:2姓名:张旸任务一、进程创建、控制与撤消一、实验目的:通过进程的创建和控制的设计来达到如下目的:1、加深对进程概念的理解,明确进程和程序的区别2、进一步认识并发执行的概念,区别顺序执行和并发执行3、分析进程争用临界资源的现象,学习解决进程互斥的方法二、实验内容:在WINDOWS环境下模拟实验:1、编写一程序,来模拟进程的创建和撤消,要求通过终端键盘输入三、四作业的名称、大小、优先级等。系统为它创建进程,并把进程控制块PCB的内容送到终端显示器上输出2、同时模拟内存空间为作
2、业分配内存空间,并把结果用图形形象地表示出来,同样通过终端输出3、按进程的优先级的顺序撤消进程,同时通过终端显示PCB的撤消过程和内存的释放过程三、结构框图:开始主函数main ()查看进程viewrun()撤销进程kill()创建进程create()替换进程huanchu()结束退出exit(0)四、实验代码:#include #include #include struct jincheng int pid;int youxian;int daxiao;int msg;int live;struct jincheng neicun20,waicun;int shumu=1;create()
3、if(shumu=20)printf(n 内存已满,请先结束或换出进程n);elseprintf(n 请创建第%d个进程,shumu);printf(n 请输入新进程的 pidn); scanf(%d,&neicunshumu.pid);printf(n 请输入新的进程的优先级n); scanf(%d,&neicunshumu.youxian);printf(n 请输入新的进程的大小n); scanf(%d,&neicunshumu.daxiao);printf(n 请输入新的进程的消息n);scanf(%d,&neicunshumu.msg); neicunshumu.live=1; shu
4、mu+;return neicunshumu-1.live;void viewrun()int vpid;printf(n 请输入想显示第几个创建的进程n); scanf(%d,&vpid);if(vpid0&vpid0&pid1neicunpid2.youxian) waicun.pid=neicunpid1.pid;waicun.youxian=neicunpid1.youxian;waicun.daxiao=neicunpid1.daxiao;waicun.msg=neicunpid1.msg;neicunpid1.pid=neicunpid2.pid;neicunpid1.youxia
5、n=neicunpid2.youxian;neicunpid1.daxiao=neicunpid2.daxiao;neicunpid1.msg=neicunpid2.msg;neicunpid2.pid=waicun.pid; neicunpid2.youxian=waicun.youxian; neicunpid2.daxiao=waicun.daxiao; neicunpid2.msg=waicun.msg;printf(n 替换完成n);printf(n 被替换进程的pid是:%dn,waicun.pid);printf(n 被替换进程的youxian是:%dn,waicun.youxi
6、an);printf(n 被替换进程的daxiao是:%dn,waicun.daxiao);printf(n 被替换进程的msg是:%dn,waicun.msg);elseprintf(n进程优先级不够大);elseprintf(所查看运行进程不存在); printf(请按回车退出换出进程n);c=getche();void kill()int kpid; printf(n 请输入要撤销第几个创建的进程n); scanf(%d,&kpid);if(kpid0&kpid20&neicunkpid.live=1)neicunkpid.live=0;printf(n 已撤销第%d个创建的进程,kpi
7、d);else printf(n 所查看运行进程不存在n);printf(请按回车退出查看n);kpid=getch();void main ()int n,m,i;char a;n=1;while(n=1)system(cls);printf(n*); printf(n* 进程演示系统 *);printf(n*);printf(n 1.创建新的进程 2.查看运行进程 );printf(n 3.换出某个进程 4.杀死运行进程 ); printf(n 5.退出 ); printf(n*);printf(n请选择(15)); a=getch();switch(a) case1:create();b
8、reak;case2:viewrun();break;case3:huanchu();break;case4:kill();break;case5:exit(0);default:n=0; 五:实验结果:任务二、单处理机系统的进程调度一、实验目的:1、加深对进程概念的理解,明确进程和程序的区别2、深入了解系统如何组织进程,创建进程3、进一步认识如何实现处理机调度二、实验内容:从下面四个调度算法中,选择一个调度算法来实现进程调度:1、先来先服务调度算法2、优先数调度算法3、时间片轮法调度算法4、多级反馈队列轮转调度算法三、结构框图:While循环遍历就绪队列调用check()函数,打印所有队列将
9、就绪队列中的首进程由“就绪状态”转为执行状态调用running()函数调用destroy()函数,释放进程调用input()函数;用户输入测试数据输入的同时建立好就绪序列初始化运行时间是否等于服务开始结束四、实验代码:#include stdio.h #include #include #define getpch(type) (type*)malloc(sizeof(type) #define NULL 0 struct pcb /* 定义进程控制块PCB */ char name10; char state; int super; int ntime; int rtime; struct
10、pcb* link; *ready=NULL,*p; typedef struct pcb PCB; void sort() /* 建立对进程进行优先级排列函数*/ PCB *first, *second; int insert=0; if(ready=NULL)|(p-super)(ready-super) /*优先级最大者,插入队首*/ p-link=ready; ready=p; else /* 进程比较优先级,插入适当的位置中*/ first=ready; second=first-link; while(second!=NULL) if(p-super)(second-super)
11、/*若插入进程比当前进程优先数大,*/ /*插入到当前进程前面*/ p-link=second; first-link=p; second=NULL; insert=1; else /* 插入进程优先数最低,则插入到队尾*/ first=first-link; second=second-link; if(insert=0) first-link=p; void input() /* 建立进程控制块函数*/ int i,num; printf(n请输入进程数量:); scanf(%d,&num); for(i=1;iname); printf(n 输入进程优先数:); scanf(%d,&p-
12、super); printf(n 输入进程运行时间:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-state=w; p-link=NULL; sort(); /* 调用sort函数*/ int space() int l=0; PCB* pr=ready; while(pr!=NULL) l+; pr=pr-link; return(l); void show()printf(nqnametstatetsupertndtimetruntimen); void disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/ printf(
13、%st,pr-name); printf( %ct,pr-state); printf( %dt,pr-super); printf( %dt,pr-ntime); printf( %dt,pr-rtime); printf(n); void check() /* 建立进程查看函数 */ PCB* pr; printf(n*当前正在运行的进程是:%s,p-name); /*显示当前运行进程*/ show();disp(p); pr=ready; if(pr=NULL)printf(n*当前就绪队列为空!);else printf(n*当前就绪队列状态为:); /*显示就绪队列状态*/show(
14、);while(pr!=NULL) disp(pr); pr=pr-link; void destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ printf(n 进程%s已完成.n,p-name); free(p); void running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/ (p-rtime)+; if(p-rtime=p-ntime) destroy(); /* 调用destroy函数*/ else (p-super)-; p-state=w; sort(); /*调用sort函数*/ void main() /*主函数*/ int len,h=
15、0; char ch; input(); len=space(); while(len!=0)&(ready!=NULL) ch=getchar(); h+; printf(n 当前运行次数为:%d n,h); p=ready; ready=p-link; p-link=NULL; p-state=R; check(); running(); printf(n 按任一键继续.); ch=getchar(); printf(nn 进程已经完成.n); ch=getchar(); 五:实验结果:任务三、基本存储器管理一、实验目的:一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主
16、存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现与主存储器的管理方式有关的,通过本实验帮助学生理解在不同的存储管理方式下怎样实现主存的分配和回收二、实验内容:从下两种存储管理方式的主存分配和回收中,选择一种管理方式来实现本次实验任务:1、在可变(动态)分区管理方式下,采用最先适应算法2、在分页式管理方式下,采用位示图来表示主存的分配情况和回收情况开始j:=0j:=j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 课程设计 43
限制150内