SPOOLING技术
来源:互联网 发布:大鱼端口查看器 编辑:程序博客网 时间:2024/05/17 22:41
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
struct info_PCB
{
long ID;//进程标识
long status;//状态
long po;//输出指针
long head;//信息块首地址
long count;//输出长度
long len;//输出长度
long wait[128];
}block[128];
struct info_wall
{
long num[10000];//输出内容
long open,closed;//队列指针
}wall[3];
long K[3],L1,L2[3]; long n;
void input()//输入函数
{
printf("输入用户1要求输入的文件数(0~9):");
scanf("%ld",&K[1]);
getchar();
printf("输入用户2要求输入的文件数(0~9):");
scanf("%ld",&K[2]);
getchar();
}
void init()//初始化函数
{
L1=10;
L2[1]=L2[2]=100;
memset(block,0,sizeof(block));
block[1].ID=1;
block[2].ID=2;
block[3].ID=3;
block[3].status=2;
memset(wall,0,sizeof(wall)); n=0;
}
void work()//模拟进程调度
{
long r;
long k;
long a,b;
long i;
while (block[1].status!=3 || block[2].status!=3 || block[3].status!=3)
{
r=rand()%100+1;//用随机数模拟进程执行概率
if (r<=45)
{
k=1;
}
else
{
if (r<=90)
k=2;
else
k=3;
}
if (block[k].status!=0)
continue;
switch (k)
{
case 1: case 2:
//输出进程k
a=rand()%10;
++block[k].po;
block[k].wait[block[k].po]=a;
if (a==0)
{
b=wall[k].closed+1;
for (i=1;i<=block[k].po;i++)
{
wall[k].num[++wall[k].closed]=block[k].wait[i];
}
block[k].po=0; block[k].count++;
if (block[k].count==K[k])
//进程执行完毕后应置成"结束状态"。
{
block[k].status=3;
}
if (block[3].status==2)
//要求输出进程在输出信息到输出井并形成信息块后,应将 Spooling 进程置成"可运行状态"。
{
block[3].status=0;
}
if (L2[k]==0 && block[k].status==0)
//如果输出井满,将进程置为"不可运行状态 1"
{
block[k].status=1;
}
n++;
block[n].ID=k;
block[n].head=b;
block[n].len=wall[k].closed-b+1;
printf("Process %ld produces a block %ld!\n",k,n);
}
break;
case 3:
//Spooling 进程
block[3].po++;
a=block[3].po;
for (i=1;i<=block[a].len;i++)
{
printf("%ld ",wall[block[a].ID].num[i+block[a].head-1]);
}
printf("\n");
if (block[3].po==n)
{
block[3].status=2;
//Spooling 进程在输出井空时应置成"不可运行状态 2"。
{
block[3].status=3;
}
}
break; }
}
}
int main()
{
srand(time(NULL));
input();
init();
work();
return 0;
}
- SPOOLing技术
- SPOOLing技术
- SPOOLING技术
- Spooling技术
- SPOOLing技术
- SPOOLing技术
- SPOOLing技术
- SPOOLING技术
- 什么是SPOOLing技术?
- 实验四、SPOOLing技术
- 操作系统Spooling技术
- 操作系统Spooling技术
- Spooling技术简单熟悉
- SPOOLING假脱机技术
- 计算机的SPOOLing技术
- SPOOLing技术的再思考
- SPOOLing
- SPOOLING
- 【转】微软CRM 2013 New Features 系列汇总
- 从数据库(mysql)存取图片
- 字符串函数注意事项
- 分页存储过程(Sql Server) (表名、当前页索引、每页显示行数,则返回 数据集和总页数)
- hibernate 查询时 对日期的比较
- SPOOLING技术
- myeclipse快捷键大全
- 【FTP服务器之】客户端c语言代码
- 2013-10-28,文件编码初探(留给自己看)
- 二叉树中找出和为某一值的所有路径
- linux ubuntu中文输入法安装
- Riding the Fences
- quartz 的简单应用
- strstr函数