| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1416 人关注过本帖
标题:操作系统实验
只看楼主 加入收藏
fengkonghuo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-4-10
收藏
 问题点数:0 回复次数:3 
操作系统实验
各位大佬,请问在VC++中如何实现操作第系统中的模拟进程管理这个实验,最好能给我写出代码,小弟不胜感激!!!!!!
搜索更多相关主题的帖子: 操作系统 实验 大佬 进程 
2005-04-10 19:08
Erli11
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-4-5
收藏
得分:0 

好像我写过,给你找找. #include<iostream.h> # include<stdio.h> int m,s,l,u;//全局变量 实现函数间联系

struct table{ int std; int length; char state; }; struct table t[6];

struct tab { int stl; int len; char sta; }; struct tab w[6];

void input()//初始化作业表 {w[0].len=14; w[0].stl=0; w[0].sta='w'; w[1].len=6; w[1].stl=26; w[1].sta='w'; w[2].sta=w[3].sta=w[4].sta=w[5].sta='e';

}

void disp()//打印作业分区表的情况 { int i=0; printf("\n此时作业分区表的状态是:"); printf("\n|起址\t|长度\t|状态"); while(i<6) { printf("\n|%d\t",w[i].stl); printf("|%d\t",w[i].len); printf("|%c\t\n",w[i].sta); i++; } }

void defiction(){ t[0].std=14; t[0].length=12; t[0].state='w'; t[1].std=32; t[1].length=96; t[1].state='w'; t[2].state=t[3].state=t[4].state=t[5].state='e'; }

void print()//打印空闲分区表的情况 { int i=0; printf("\n此时空闲分区表的状态是:"); printf("\n|起址\t|长度\t|状态"); while(i<6) { printf("\n|%d\t",t[i].std); printf("|%d\t",t[i].length); printf("|%c\t\n",t[i].state); i++; } }

void remove(int h) { int a=0;//设置标志位 int k; int i=0; while(i<6) {if(t[i].state=='w'&&t[i].length>=l) { a=1;//分配成功 t[i].length=t[i].length-h; m=t[i].std; if(t[i].length>0) t[i].std=t[i].std+h; else { for(k=i;k<5;k++)//该表项撤销,上移内存空区表 { t[k].std=t[k+1].std; t[k].length=t[k+1].length; t[k].state=t[k+1].state; } t[5].state='e'; } //else break; }//firstif else i++; }//while if(a==1) print(); else printf("作业不能装入内存!"); }

void movein(int x,int y)//装入空闲分区表 { int r,j; for(j=0;j<5;j++) { if(x<t[0].std) { if(t[0].std=x+y) { t[0].std=x;cout<<"t[1].std="<<t[1].std<<endl; t[0].length+=y;return; } else {for(j=4;j>0;j--) {t[j].std=t[j-1].std; t[j].length=t[j-1].length; t[j].state=t[j-1].state; } t[0].std=x; t[0].length=y; t[0].state='w'; } break; }//空区表第一项 if(t[j].state=='w'&&t[j+1].state=='w') { if(x==t[j].std+t[j].length)//与上相临 {t[j].length+=l; printf("%d",t[j].length); if(t[j+1].std==(x+y))//上下相临,实现下移空区表 {t[j].length+=t[j+1].length; printf("%d",t[j].length); for(r=j+2;r<6;r++) {t[r-1].length=t[r].length; t[r-1].state=t[r].state; t[r-1].std=t[r].std; } t[5].std='e';t[5].std=0; cout<<"first t[1].length="<<t[1].length<<endl; } return; } else//确定不与上相临 { if(t[j+1].std=x+y) {t[j+1].std=x; t[j+1].length+=y; } else//上下不相临,实现下移,倒序实现 { for(r=5;r>j+1;r--) { t[r].state=t[r-1].state; t[r].length=t[r-1].length; t[r].std=t[r-1].std; }//for t[j+1].std=x; t[j+1].length=y; } break; } } } if(t[j].state=='w'&&t[j+1].state=='e') {if(x==t[j].std+t[j].length) t[j].length+=y; else {t[j+1].length=y; t[j+1].std=x; t[j+1].state='w';cout<<"second t[1].length="<<t[1].length<<endl; } cout<<"third t[1].length="<<t[1].length<<endl; } }

void outm(int i)//作业撤消,传递长度始址 { int r; if(w[i].sta=='e'||i>6) printf("该作业不存在\n"); else { //撤消作业,作业表上移 l=w[i].len; s=w[i].stl; printf("%d,%d",l,s); r=i; while(r<5) {w[r].len=w[r+1].len; w[r].sta=w[r+1].sta; w[r].stl=w[r+1].stl; r++; } w[5].sta='e'; } }

void inm(int x,int y)//作业进入内存 { int i=0; while(w[i].sta=='w')//找到第一个空状态 {i++;} w[i].len=y; w[i].stl=x; w[i].sta='w'; disp();

}

void main() {

defiction(); print(); input();//初始化作业表 disp(); int i=0; int n,z; while(i<2) { cout<<"Choose your action!";//printf("Choose your action!\n"); cin>>z;//scanf("%d\n",&z); switch(z) { case 1: { cout<<"作业进入内存!"<<endl; cout<<"作业长度"<<endl; cin>>u;//scanf("%d\n",&u); remove(u);//返回该段始址 inm(m,u); break; } case 0: {cout<<"作业撤离!"<<endl; cin>>n;//scanf("%d",&n); cout<<"选择作业"<<n<<endl; outm(n);//传递作业始址 长度至空区表 disp(); movein(s,l); print(); break; }

i++; }//switch }//while }//main

2005-04-13 22:18
LastHeaven
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-4-8
收藏
得分:0 
好复杂

您所拨打的用户正在革命中。。。请您稍候再拨。。。 坚强依然!永不言苦!永不言败!睇透基础C语言先!—— 编程编程再编程! 嘎嘎
2005-04-14 11:27
luyulin
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2004-12-18
收藏
得分:0 
有没有C语言写的啊 我没学过C++    虽然与C只有点不同 但是我不懂!!
有的话 发我的邮箱 luyuling123@
2005-04-24 22:57
快速回复:操作系统实验
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030292 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved