操作系统课程设计

上传人:hs****ma 文档编号:471575755 上传时间:2023-08-15 格式:DOC 页数:41 大小:433.50KB
返回 下载 相关 举报
操作系统课程设计_第1页
第1页 / 共41页
操作系统课程设计_第2页
第2页 / 共41页
操作系统课程设计_第3页
第3页 / 共41页
操作系统课程设计_第4页
第4页 / 共41页
操作系统课程设计_第5页
第5页 / 共41页
点击查看更多>>
资源描述

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

1、任务一、进程创建、控制与撤消一、 目的:通过进程的创建和控制的设计来达到如下目的:1、 加深对进程概念的理解,明确进程和程序的区别;2、 进一步认识并发执行的概念,区别顺序执行和并发执行;3、 分析进程争用临界资源的现象,学习解决进程互斥的方法;二、 内容:在WINDOWS环境下模拟实验:1、 编写一程序,来模拟进程的创建和撤消,要求通过终端键盘输入三、四作业的名称、大小、优先级等。系统为它创建进程,并把进程控制块PCB的内容送到终端显示器上输出。2、 同时模拟内存空间为作业分配内存空间,并把结果用图形形象地表示出来,同样通过终端输出。3、 按进程的优先级的顺序撤消进程,同时通过终端显示PCB

2、的撤消过程和内存的释放过程程序流程图:源代码如下:#include;using namespace std;struct PCBint pid;int priority;int size;int detail;int isrun;PCB running20, ready20;int sum = 0, pid_1;void choose();void menu();int create()if (sum = 20)cout 内存已满,请先结束或换出进程 endl;elsecout 请输入第 sum + 1 个进程endl;cout 请输入进程的pid runningsum + 1.pid;cou

3、t 请输入新的进程的优先级 runningsum + 1.priority;cout 请输入新的进程的大小 runningsum + 1.size;cout 请输入新的进程的详情 runningsum + 1.detail;runningsum + 1.isrun = 1;sum+;return runningsum - 1.isrun;choose();void display()int pid;cout 请输入进程的pid pid;if (pid 0 & pid = 20 & runningpid.isrun = 1)cout 进程的pid是: runningpid.pidendl;cou

4、t 进程的优先级是: runningpid.priorityendl;cout 进程的大小是: runningpid.sizeendl;cout 进程的相关信息: runningpid.detailendl;elsecout 所查看运行进程不存在 endl;choose();void replace()int pid1, pid2;cout 请输入第一个替换进程的pid pid1;cout 请输入第二个替换进程的pid pid2;if (pid1 0 & pid1 runningpid2.priority)ready20.pid = runningpid1.pid;ready20.priori

5、ty = runningpid1.priority;ready20.size = runningpid1.size;ready20.detail = runningpid1.detail;runningpid1.pid = runningpid2.pid;runningpid1.priority = runningpid2.priority;runningpid1.size = runningpid2.size;runningpid1.detail = runningpid2.detail;runningpid2.pid = ready20.pid;runningpid2.priority =

6、 ready20.priority;runningpid2.size = ready20.size;runningpid2.detail = ready20.detail;cout 替换完成 endl;cout 被替换进程的pid是: ready20.pidendl;cout 被替换进程的优先级是:, ready20.priority;cout 被替换进程的大小是: ready20.sizeendl;cout 被替换进程的详情是: ready20.detailendl;elsecout 进程优先级不够大endl;elsecout 所查看运行进程不存在endl;choose();void kil

7、l()int kpid;cout kpid;if (kpid 0 & kpid 20 & runningkpid.isrun = 1)runningkpid.isrun = 0;choose();void choose() int choose;cout 是否继续操作?继续,请输入1,退出:按任意键 endl;cout choose;if (choose = 1) menu();else exit(0);void menu() int n, i;n = 1;while (n = 1)system(cls);cout 进程模拟 endl;cout 1.创建进程 2.查看进程信息 endl;cou

8、t 3.撤销进程 4.终止进程 endl;cout 5. 退出 endl;cout i;switch (i)case 1:create(); break;case 2:display(); break;case 3:replace(); break;case 4:kill(); break;case 5: exit(0);default:n = 0;int main()menu();return 0;运行结果如下:任务三、基本存储器管理一、 目的:一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管

9、理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现与主存储器的管理方式有关的,通过本实验帮助学生理解在不同的存储管理方式下怎样实现主存的分配和回收。二、 内容:从下两种存储管理方式的主存分配和回收中,选择一种管理方式来实现本次实验任务:1、在可变(动态)分区管理方式下,采用最先适应算法。2、在分页式管理方式下,采用位示图来表示主存的分配情况和回收情况。程序流程图:源代码如下:#include#include#define n 10 /系统最大作业

10、数#define maxsize 20 /空闲区最大内存 #define minisize 100 using namespace std;struct float addr; /已分配分区起始地址 float size; /已分配分区长度,单位为字节 int flag; useedn; /已分配区表 struct float addr; /空闲区起始地址 float size; /空闲区大小int flag; /0为空,1未分配freesmaxsize; void allo(char a,float xk) int i,k; float ad; k=-1; for(i=0;i=xk&free

11、si.flag=1) if(k=-1|freesi.sizefreesk.size) k=i; if(k=-1) cout无可用空闲区endl; return; if(freesk.size-xk=minisize) freesk.flag=0; ad=freesk.addr; xk=freesk.size; else freesk.size=freesk.size-xk; ad=freesk.addr+freesk.size; i=0; while(useedi.flag!=0&i=n) couterror,未初始化endl; if(freesk.flag=0) freesk.flag=1; else freesk.size=freesk.size+xk; return; else useedi.addr=ad; useedi.size=xk; useedi.flag=a; return; void findc(char x) int i,k,a,s,t; float S,L; s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号