2022年操作系统课程设计进程管理 2.pdf
《2022年操作系统课程设计进程管理 2.pdf》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计进程管理 2.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include #include #include #include using namespace std; const int maxpcb=1000; const int maxodr=1000; const int maxpid=1000; bool pid_vismaxpid; int cur_pcb=0; int Time=0; struct pcb_task / 进程控制块结构体 int A; /累加器int F; /状态寄存器int pc; /程序寄数器int pid; /进程号int ppid; /父进程号int priority; / 优先级数int runtime; /
2、运行时间int timep; /时间片int odrmaxodr;/ 进程需要执行的指令char statu10;/ 进程的状态void init(); pcbmaxpcb; void pcb_task:init()/ 所有的属性要进行一次初始化 A=pc=0; priority=rand()%32;/ 优先级为0-31 dopid=rand()%maxpid;while(pid_vispid); pid_vispid=true; /确保进程号是唯一的memset(odr,-1,sizeof(odr); strcpy(statu, 就绪 );/ 初始新建的进程状态为“就绪”runtime=3+
3、rand()%10; timep=0; bool cmp(pcb_task a,pcb_task b)return a.pidb.pid; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - void bulid(int ); /case 1: 创建进程void exec() ;/case 2: 执行并创建子进程void Exit(int ) ;/case 3: 进程终止 (把要终止的进程从进程序列中去掉) void output(
4、) ;/case 4: 显示进程序列void output()/ 显示系统的所有进程 cout 系统当前的进程表endlendl; int i; if(cur_pcb=0) cout 系统当前没有进程!endl; return ; printf( 进程号优先级数进程状态累加器时间片需运行时间 n); for (i = 0; i cur_pcb; i+) if (pid_vispcbi.pid) printf(%d %d %s %d %d %dn, pcbi.pid,pcbi.priority,pcbi.statu,pcbi.A, pcbi.timep,pcbi.runtime); printf
5、(n); void bulid(int ppid)/case 1: 创建进程 pcbcur_pcb.init(); pcbcur_pcb.ppid=ppid; cur_pcb+; cout 进程创建成功!新进程号是:pcbcur_pcb-1.pidendlendl; output(); void help()/ 命令解释程序 cout endl endl; cout 指令符数字(参数)指令解释 endl; cout MOV n 把整数 n 赋给累加器A n ADD n 累加器 A 的值加上整数n, 结果送到累加器A。n SUB n 从累加器A 的值减去整数n,结果送到累加器A。n MUL n
6、从累加器 A 的值乘以整数n,结果送到累加器A。n DIV n 从累加器 A 的值除以整数n,结果送到累加器A。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - n OUT 累加器的内容输出到端口(显示器 )n QUIT 退出 endl endl; bool check(char *x)/ 检测命令符是否合法 if(strcmp(x,MOV)=0|strcmp(x,ADD)=0|strcmp(x,SUB)=0|strcmp(x,M
7、UL)=0)return true;/strcmp() 检查是否相等,但两值相等时等于0 else if(strcmp(x,DIV)=0|strcmp(x,OUT)=0|strcmp(x,QUIT)=0)return true; return false; void MOV(int pid,int n)/赋值 int i; for(i=0;icur_pcb&pcbi.pid!=pid;i+);pcbi.A=n; void ADD(int pid,int n)/加 int i; for(i=0;icur_pcb&pcbi.pid!=pid;i+);pcbi.A+=n; void SUB(int
8、pid,int n)/减 int i; for(i=0;icur_pcb&pcbi.pid!=pid;i+);pcbi.A-=n; void MUL(int pid,int n)/乘 int i; for(i=0;icur_pcb&pcbi.pid!=pid;i+);pcbi.A*=n; void DIV(int pid,int n)/除 int i; for(i=0;icur_pcb&pcbi.pid!=pid;i+);pcbi.A/=n; bool done(int pid,char *s,int n)/执行进程指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
9、- - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - if (strcmp(s,MOV) = 0) MOV(pid,n); else if(strcmp(s,ADD) = 0) ADD(pid,n) ; else if(strcmp(s,SUB) = 0) SUB(pid,n) ; else if(strcmp(s,MUL) = 0) MUL(pid,n); else if(strcmp(s,DIV) = 0) if(n=0) cout 除数不能为0!程序中断。 。 。endl; return 0; els
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统课程设计进程管理 2022 操作系统 课程设计 进程 管理
限制150内