《计算机操作系统课程设计》由会员分享,可在线阅读,更多相关《计算机操作系统课程设计(36页珍藏版)》请在人人文库网上搜索。

1、操作系统课程设计实验报告姓 名: 李文孝 班 级: 12计科2班 学 号: 5 指导老师: 王燕红、汤可宗 景德镇陶瓷学院目录任务一、进程创建、控制与撤消1一、目的:1二、内容:1三、程序框图2四、源代码3五、运行结果7任务二、单处理机系统的进程调度11一、目的:11二、程序框图11三、源代码12四、实验结果17任务五、死锁的避免19一、目的19二、内容19三、程序框图19五、实验结果25任务六、磁盘空间的分配与回收26一、目的:26二、内容26三、进程框图27四、源代码28四、实验结果31任务一、进程创建、控制与撤消一、目的:1、 加深对进程概念的理解,明确进程和程序的区别;2、 进一步认识。

2、并发执行的概念,区别顺序执行和并发执行;3、 分析进程争用临界资源的现象,学习解决进程互斥的方法;二、内容:1、编写一程序,来模拟进程的创建和撤消,要求通过终端键盘输入三、四作业的名称、大小、优先级等。系统为它创建进程,并把进程控制块PCB的内容送到终端显示器上输出。2、同时模拟内存空间为作业分配内存空间,并把结果用图形形象地表示出来,同样通过终端输出。3、按进程的优先级的顺序撤消进程,同时通过终端显示PCB的撤消过程和内存的释放过程。三、程序框图四、源代码#include conio.h#include stdio.h#include stdlib.hstruct jincheng_type。

3、 int pid;int youxianji;int daxiao;int msg;int live;struct jincheng_type neicun20,waicun20;int shumu=0,pid_1;create()if(shumu=20)printf(n 内存已满,请先结束或换出进程n);elseprintf(n 请输入第%d个进程n,shumu+1); printf(n 请输入进程的pidn);scanf(%d,&neicunshumu+1.pid); printf(n 请输入新的进程的优先级n); scanf(%d,&neicunshumu+1.youxianji);pr。

4、intf( 请输入新的进程的大小n);scanf(%d,&neicunshumu+1.daxiao);printf( 请输入新的进程的消息n);scanf(%d,&neicunshumu+1.msg); neicunshumu+1.live=1; shumu+;return neicunshumu-1.live;void viewrun()int vpid;printf(n 请输入进程的pidn);scanf(%d,&vpid);if(vpid0&vpid0&pid1neicunpid2.youxianji) waicun20.pid=neicunpid1.pid;waicun20.youxi。

5、anji=neicunpid1.youxianji;waicun20.daxiao=neicunpid1.daxiao;waicun20.msg=neicunpid1.msg;neicunpid1.pid=neicunpid2.pid;neicunpid1.youxianji=neicunpid2.youxianji;neicunpid1.daxiao=neicunpid2.daxiao;neicunpid1.msg=neicunpid2.msg;neicunpid2.pid=waicun20.pid; neicunpid2.youxianji=waicun20.youxianji; neic。

6、unpid2.daxiao=waicun20.daxiao; neicunpid2.msg=waicun20.msg;printf(n 替换完成n);printf(n 被替换进程的pid是:%dn,waicun20.pid);printf(n 被替换进程的youxianji是:%dn,waicun20.youxianji);printf(n 被替换进程的daxiao是:%dn,waicun20.daxiao);printf(n 被替换进程的msg是:%dn,waicun20.msg);elseprintf(n进程优先级不够大);elseprintf(所查看运行进程不存在); printf(请按。

7、回车退出换出进程n);c=getch();void kill()int kpid;printf(n 请输入进程的pidn);scanf(%d,&kpid);if(kpid0&kpid #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 pcb* link; *ready=NULL,*p; typedef struct p。

8、cb 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) /*若插入进程比当前进程优先数大,*/ /*插入到当前进程前面*/ p-link=se。

9、cond; 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-super); printf(n 输入进程运行时间:); scanf(%d,&p-nt。

10、ime); 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( %st,pr-name); printf( %ct,pr-state); printf。

11、( %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();while(pr!=NULL) disp(pr); pr=pr-link; voi。

12、d 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=0; char ch; input(); len=space(); while(len。

13、!=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(); 四、实验结果任务五、死锁的避免一、目的在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源。

14、而造成的一种僵局(DeadlyEmbrace),当进程处于这种状态时,若无外力作用,他们都无法在向前推进。我们可以在分配资源时加上限制条件就可以预防死锁,但是,在每一种预防死锁的方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。二、内容利用银行家算法来避免死锁的发生开始计算剩余资源量显示信息show()初始化Init()主函数main()结束已分配资源Allocation判断是否安全Safe程序所需济源Need三、程序框图四、源代码#include#include#includeusing namespace std;int Sign1。

15、00;/标记数组int Progress100;/进程执行顺序标记数组string Number100;/进程号class BankerArithmeticpublic:BankerArithmetic(int a,int b); /构造函数int Safe(int grac);/判断是否安全void Show();/显示相关信息void Bank();/计算剩余资源量BankerArithmetic();/析构函数private:BankerArithmetic();void Init(int a,int b);/初始化int ID;/记录成功申请资源的进程号int n; /包含的进程数in。

16、t m; /资源种类数int *Available;/可提供的资源总数int * Allocation;/以分配的资源int * Need;/仍需要的资源int *Left;/剩余的资源;BankerArithmetic:BankerArithmetic(int a,int b):n(a),m(b)Init(n,m);BankerArithmetic:BankerArithmetic()int i;deleteAvailable;deleteLeft;for(i=0;iAvailablei;coutNumberi;coutAllocationij;coutNeedij;/计算剩余的资源for(。

17、i=0;i=Needij)temp*=1;elsetemp*=0;if(temp=1)break;ID=i;Signi=1;Progressgrac=ID;if(temp)return ID;elsereturn -1;void BankerArithmetic:Bank()for(int i=0;iprocess;coutsource;BankerArithmetic banker(process,source);while(ians1;if(ans1=y|ans1=Y)banker.Show();result=banker.Safe(i);if(result=0)Progressi=res。

18、ult;elsesum=0;cout ; cout#include void Initbitmap(int map88)int cylinder,track,sector;char choice=Y;printf(初始化位视图.n);while(choice=y|choice=Y)printf(柱面号:);scanf(%d,&cylinder);printf(磁道号:);scanf(%d,&track);printf(物理记录号:);scanf(%d,&sector);mapcylinder4*track+sector=1;printf(contiune?);getchar();scanf(%。

19、c,&choice);void allocate(int map88)int i,j;int flag=0;int cylinder,track,sector;for(i=0;i8;i+) for(j=0;j8;j+)if(mapij=0) mapij=1;flag=1;break;if(flag=1) break;if(flag=1)cylinder=i;track=j/4;sector=j%4;printf(分配到的柱面号、磁道号、物理记录数);printf(%dt%dt%d,cylinder,track,sector);printf(n);else printf(空间不足,分配失败!);。

20、void reclaim(int map88) int cylinder,track,sector;printf(柱面号:);scanf(%d,&cylinder);printf(磁道号:);scanf(%d,&track);printf(物理记录号:);scanf(%d,&sector);if(mapcylinder4*track+sector=0)printf(此块为未分配块!回收出错!);getchar();elsemapcylinder4*track+sector=0;printf(回收块对应的字节号:%4dt位数:%4dn,cylinder,4*track+sector);void 。

21、main()int bitmap88;int i,j;int choice;for(i=0;i8;i+)for(j=0;j8;j+)bitmapij=0;Initbitmap(bitmap);while(1)printf(n请输入选择:);printf(1-分配,2-回收,3-显示位示图,0-退出n); scanf(%d,&choice);switch(choice)case 1:allocate(bitmap);break;case 2:reclaim(bitmap);break;case 3:for(i=0;i8;i+)for(j=0;j8;j+)printf(%8d,bitmapij);printf(n);break;case 0:exit(0);default:printf(错误选择!);break;四、实验结果。

计算机操作系统课设总结,计算机操作系统课程设计相关推荐

  1. 可编程计算机控制器课设,可编程控制器课程设计.doc

    可编程控制器课程设计 中央空调的设计 一.前言 我国是一个人均能源相对贫乏的国家,人均能源占有量不足世界水平的一半,随着我国经济的快速发展,我国已成为世界第二耗能大国,但能源使用效率普通偏低, 造成电 ...

  2. 计算机组成课设sbb,计算机组成原理课设(完成版).doc

    计算机组成原理课设(完成版) 计算机组成原理课程设计报告 --16 位机微程序控制器指令系统的设计与实现 院(系.部): 信 息 工 程 学 院 小组成员姓名: 班 级: 计-10 指导教师: 秦彩云 ...

  3. 计算机组成原理课设总线,计算机组成原理课程设计(全).doc

    文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...

  4. 计算机组成原理课设参考文献,计算机组成原理课程设计(全)..doc

    沈阳理工大学课程专用纸 成 绩 评 定 表 学生姓名 刘建成 班级学号 1103050115 专 业 计算机科学与技术 课程设计题目 多寄存器减法\右移位\输入输出等指令实验计算机设计 评 语 组长签 ...

  5. 江苏大学计算机组成原理课设6,计算机组成原理课程设计报告江苏大学适用于软件工程...

    计算机组成原理课程设计报告江苏大学适用于软件工程 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 江苏大学<计算机组成原理&g ...

  6. 厦门理工计算机课设,厦门理工c++课程设计.doc

    厦门理工c课程设计 <C++面向对象程序设计> 课程设计报告 (2012- 2013学年 第 3学期) 题 目: 学校人员信息管理系统 专 业: 计算机科学与技术 班 级: 计算机科学与技 ...

  7. 计算机组成原理课设模板,计算机组成原理课程设计模板.doc

    课程设计(论文)任务书 软件学院 学 院 软件+信息工程 专 业 3 班 一.课程设计(论文)题目 个人网站设计与实现 二.课程设计(论文)工作自 2011年 6 月 26 日起至 2011 年 7 ...

  8. 计算机组成原理课设移位,计算机组成原理课设(多寄存器减法、右移位、输入输出、转移指令实验计算机设计)...

    目录 1课设目的 ................................................... 1 2课设内容 ............................... ...

  9. 计算机组成原理课设 alu,计算机组成原理课设报告.pdf

    计算机组成原理课程设计报告 班级:物联网 1301 班 姓名: 石杰元 学号: 完成时间: 2016/1/10 一. 课程设计目的 1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进 ...

最新文章

  1. 三十六亿的《哪吒》历时五年,如何用AI解决动画创作难题?
  2. JSP笔记-JavaBean
  3. mac 上搭建gitlabel_在mac终端中使用git(适用于github、gitlabel)
  4. golang 库 go-restful 中 https basic authentication 基础认证实例
  5. Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
  6. 30个HTML标签,HTML常用标签的使用 --2019年8月30日
  7. android Formatter 的使用
  8. php数组循环便利,浅析PHP中for与foreach两个循环结构遍历数组的区别
  9. python支持向量机_支持向量机(SVM)Python实现
  10. python keystone_keystone命令与client接口学习
  11. 怎么让背景铺满整个页面_PPT背景太单调,教你这3种实用的技巧!
  12. da8da八字排盘官方下载_da8da六爻排盘
  13. 进制转换和2的幂次方表示
  14. 判断魔方阵c语言程序设计_魔方阵原理及十种解法(C语言)
  15. python运行环境怎么配置_python配置环境 菜鸟教程,python的运行环境怎么配置
  16. Domoticz 接入苹果的 HomeKit 实现 Siri 控制
  17. 渗透测试--medium_socnet
  18. 程序员创业:小程序开发费用报价表,包含项目工期和费用明细
  19. 电影《名侦探柯南:万圣节的新娘》观后感
  20. 高新技术企业补贴如何申请?

热门文章

  1. 多进程对 MySQL update的影响
  2. Vue 全家桶 + Electron 开发的一个跨三端的应用
  3. maven进行junit测试时报错(二)
  4. InputStream、OutputStream、String的相互转换(转)
  5. 初涉c#设计模式-proxy pattern-从中国足球黑哨开始
  6. 一种在网络层清理机器假死时TCP连接的方案介绍
  7. FileSystem close Exception
  8. tomcat7在eclipse中,调试时断点频繁停在threadpoolexecutor
  9. telegram 搭建 私聊机器人 转发私聊信息 保护隐私
  10. Dependency Walker PE模块依赖性分析工具