请大家帮我完成这个实验(老师一共留了3个,只会做前两个......)

luckytim 2004-12-25 05:27:59
一、实验目的
掌握操作系统中的设备缓冲区管理算法。
二、实验内容
假设系统中有两个分别名为P1、P2的进程及两台均可进行输入、输出操作的设备d1、d2。两个进程可以从两台设备中的任何一台输入数据,并可以向其中的任何一台设备输出数据。编写C程序,模拟操作系统中使用的设备缓冲区管理算法,完成上述进程的输入、输出操作及数据处理任务。
1定义一个由10个元素构成的结构数组buffer[10],作为系统中的缓冲区。
struct buffer
{ int count; //缓冲区中现在的字符个数
char databuf[100]; //数据区
struct buffer *p; //用作队列指针
} buffer1[10];
2. 定义下列队列的队首指针
空缓冲区队列
设备1的输入队列
设备1的输出队列
设备2的输入队列
设备2的输出队列
3. 编写函数init( )完成缓冲区和各个队列的初始化操作。
4编写函数getbuf( )与putbuf( ),分别完成从队列中取出一个缓冲区及队列中放入一个缓冲区的操作。
5编写函数devrw(devnum , flag)完成设备的读写操作。其中参数devnum指出需要进行I/O操作的设备,flag为操作类型。
读操作:
从空队列中取出一个缓冲区;
从终端读入一行字符串,放入缓冲区的数据区;
按照指定的设备号将缓冲区放入相应的设备输入队列。
写操作
按照指定的设备号,从设备的输出队列中取出一个装满数据的缓冲区;
将缓冲区中的数据在终端上显示;
将空缓冲区放入空缓冲区队列。
6. 编写函数process(procnum,inputdev,outputdev),完成进程的数据处理。其中procnum为进程号,用于指定不同的数据处理操作;inputdev与outputdev分别为输入、输出设备号。
process()在执行时完成下列操作:
按照inputdev指定的设备号从该设备的输入队列中取出一个缓冲区;
按照procnum的序号对缓冲区中的数据进行指定的数据处理操作;
按照outputdev指定的设备号将缓冲区放入该设备的输出队列。
在上述数据处理操作中,应在输出数据的头部插入相应进程的标志,如“PROC1”,并可在下列算法中选用所需的算法。
颠倒字符串的顺序;
大、小写字母转换;
在字符串中进行某些代换或添加某些信息;
其他算法。
7. 编写main( )函数完成下列操作:
调用init()函数完成初始化操作;
从终端输入命令,对设备的“输入、输出”及进程的“运行”进行控制。
三、实验要求
在程序运行的结果中应包含设备1与设备2的输入、输出信息,并能对这些信息加以区别。
在程序执行过程中,当访问的某一个队列为空时,应输出相应的信息。在程序执行过程中,至少应包含空缓冲区队列与某个设备队列各有一次为空的信息。
...全文
293 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhm_jb302 2004-12-25
  • 打赏
  • 举报
回复
这是清华的实验啊?光看题就用了N分钟。。。。
还是自己做吧。等以后我学会了。在告诉你。:)
jk88811 2004-12-25
  • 打赏
  • 举报
回复
有点难度!!!!!!!
jinxin19840808 2004-12-25
  • 打赏
  • 举报
回复
课设还是自己做吧,不然不会有提高的

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧