计算机操作系统汤子瀛设置什么来记录计算机系统所配置的独占

君,已阅读到文档的结尾了呢~~
 第6章 设备管理  内容详尽,但请以实际操作为准,欢迎下载使用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
 第6章 设备管理 
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口操作系统练习题六设备管理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
操作系统练习题六设备管理
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢16秋西南交《操作系统》在线作业一_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
16秋西南交《操作系统》在线作业一
||暂无简介
高级烹调营养师|
总评分2.9|
浏览量1142481
你可能喜欢操作系统(10)
独占设备的分配、回收等主要算法的原理。&
为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。 &为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。&
(1) 数据结构&
操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图:&
(2) 设备分配&
&当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。&
(3) 设备回收&
当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。
下面是程序;本人在LINUX下用C语言写的:因为是在虚拟机下写的,所以注释在windows下会变成乱码,但代码不影响
/*****************************************
Description:
Called by:
*****************************************/
#include&/root/process4/include/head.h&
void save(Link head)
Link p = head-&
if((fp = fopen(&/root/Address_book/address.txt&,&wt&)) == NULL)
printf(&cannot open file\n&);
while(p != NULL)
fprintf(fp,&%d %s %s %s\n&,p-&ID,p-&name,p-&num,p-&ad);
fclose(fp);
void read(Link head)
int i = 1;
p-&next = NULL;
if((fp = fopen(&/root/Address_book/address.txt&,&rt&)) == NULL)
printf(&cantnot open file\n&);
while(i & 0)
newnode = (Link)malloc(sizeof(Stu));
i = fscanf(fp,&%d %s %s %s\n&,&newnode-&ID,newnode-&name,newnode-&num,newnode-&ad);
if(i == EOF)
free(newnode);
newnode = NULL;
newnode-&next = p-&
fclose(fp);
void init_Link(Link *head)
*head = (Link)malloc(sizeof(Eqt));
(*head)-&next = NULL;
void print()
printf(&*****************************************\n&);
4.閫EUR鍑?
printf(&*****************************************\n&);
璇疯緭鍏ヤ綘鐨勯EUR夋嫨(1~4)\n&);
void choose(Link *thead)
Link head = *
create(head);
scanf(&%d&,&i);
while(i & 1||i & 4)
printf(&error number,please input again\n&);
scanf(&%d&,&i);
case 1:allocate(head);
// choose(&head);
//input(head);
case 2:delete1(head);
case 3:display(head);
case 4:exit(1);
int main()
init_Link(&head);
read(head);
create(head);
system(&clear&);
choose(&head);
头文件/**************************************************
Functon: head.h
Description:
Called By:
*************************************************/
#ifndef HEAD_H_
#define HEAD_H_
#include &stdlib.h&
#include &stdio.h&
#include &string.h&
#include &malloc.h&
#define INSERT 0
/*瀹忓畾涔夋彃鍏ョ殑鍔ㄤ綔涓?*/
#define DISPLAY 1
/*瀹忓畾涔夋煡鐪嬬殑鍔ㄤ綔涓?*/
#define DELETE 2
/*瀹忓畾涔夊垹闄ょ殑鍔ㄤ綔涓?*/
#define SEARCH 3
/*瀹忓畾涔夋煡鎵剧殑鍔ㄤ綔涓?*/
#define NUM_MAX
/*瀹忓畾涔夐EUR氳?褰曚腑瀛樻斁鏈EUR澶氫汉鏁?/
#define NAME_SIZE
/*瀹忓畾涔夊?鍚嶆渶澶ч暱搴?/
#define PHONE_SIZE 11
/*瀹忓畾涔夋墜鏈哄彿鐮佹渶澶ч暱搴?/
#define EMAIL_SIZE 100
/*瀹忓畾涔夐偖绠辨渶澶ч暱搴?/
#define ADDRESS_SIZE 200
/*瀹忓畾涔変綇鍧EUR鏈EUR澶ч暱搴?/
struct equipment
//缁濆?鍙?//鐩稿?鍙?//鐘舵EUR?//鏄?惁瀹屽ソ
char jobname[NUM_MAX];//鍗犵敤浣滀笟鍚?};
struct equiptype
char type[NUM_MAX];//璁惧?绫诲悕
//璁惧?鍙版暟
//绌洪棽鍙版暟
struct equipment equipment[NUM_MAX];
struct equiptype *
typedef struct equiptype E
typedef Eqt* L
extern void create(Link head);
extern void display(Link head);
extern void delete1(Link head);
#endif /* HEAD_H_ */
/*****************************************
Description:
Called by:
*****************************************/
#include&/root/process4/include/head.h&
void create(Link head)
Link q = p-&
Link newnode2;
Link newnode3;
newnode = (Link)malloc(sizeof(Eqt));
strcpy(newnode-&type,&print&);
newnode-&count = 2;
newnode-&remain = 1;
newnode-&equipment[0].number = 1001;
newnode-&equipment[1].number = 1002;
newnode-&equipment[0].lnumber = 1;
newnode-&equipment[1].lnumber = 2;
newnode-&equipment[0].state = 1;
newnode-&equipment[1].state = 0;
newnode-&equipment[0].remain = 1;
newnode-&equipment[1].remain = 1;
strcpy(newnode-&equipment[0].jobname,&Job4&);
strcpy(newnode-&equipment[1].jobname,&null&);
newnode-&next = NULL;
newnode2 = (Link)malloc(sizeof(Eqt));
strcpy(newnode2-&type,&input&);
newnode2-&count = 3;
newnode2-&remain = 2;
newnode2-&equipment[0].number = 1003;
newnode2-&equipment[1].number = 1004;
newnode2-&equipment[2].number = 1005;
newnode2-&equipment[0].lnumber = 1;
newnode2-&equipment[1].lnumber = 2;
newnode2-&equipment[2].lnumber = 3;
newnode2-&equipment[0].state = 0;
newnode2-&equipment[1].state = 0;
newnode2-&equipment[2].state = 0;
newnode2-&equipment[0].remain = 1;
newnode2-&equipment[1].remain = 1;
newnode2-&equipment[2].remain = 0;
strcpy(newnode2-&equipment[0].jobname,&null&);
strcpy(newnode2-&equipment[1].jobname,&null&);
strcpy(newnode2-&equipment[2].jobname,&null&);
newnode-&next = newnode2;
newnode2-&next = NULL;
newnode3 = (Link)malloc(sizeof(Eqt));
strcpy(newnode3-&type,&drawing&);
newnode3-&count = 2;
newnode3-&remain = 2;
newnode3-&equipment[0].number = 1006;
newnode3-&equipment[1].number = 1007;
newnode3-&equipment[0].lnumber = 1;
newnode3-&equipment[1].lnumber = 2;
newnode3-&equipment[0].state = 1;
newnode3-&equipment[1].state = 0;
newnode3-&equipment[0].remain = 1;
newnode3-&equipment[1].remain = 1;
strcpy(newnode3-&equipment[0].jobname,&Job7&);
strcpy(newnode3-&equipment[1].jobname,&null&);
newnode2-&next = newnode3;
newnode3-&next = NULL;
/*****************************************
Description:
Called by:
*****************************************/
#include&/root/process4/include/head.h&
void allocate(Link head)
Link p = head-&
int j = 0;
char name[NUM_MAX];
char job_name[NUM_MAX];
system(&clear&);
printf(&璇疯緭鍏ヨ?鍒嗛厤鐨勮?澶囩被鍚峔
&);
scanf(&%s&,name);
while(p != NULL)
if((0 == strcmp(p-&type,name)))
if(p-&remain == 0)
printf(&璁惧?鏃犵┖闂瞈
&);
printf(&璇疯緭鍏ヨ?澶囨墍瑕佸崰鐢ㄧ殑浣滀笟杩涚▼\n&);
scanf(&%s&,job_name);
for(i = 0; i & p-& ++i)
if((p-&equipment[i].remain == 1)&&(p-&equipment[i].state == 0))
p-&equipment[i].state = 1;
p-&remain = p-&remain-1;
strcpy(p-&equipment[i].jobname,job_name);
printf(&杈撳叆鎴愬姛\n&);
if(j == 0)
printf(&鏃犳墍杈撳叆鐨勮?澶囩被鍚峔
&);
// choose(&head);
回收函数/*****************************************
Description:
Called by:
*****************************************/
#include&/root/process4/include/head.h&
void delete1(Link head)
Link p = head-&
int j = 0;
char name[NUM_MAX];
system(&clear&);
printf(&璇疯緭鍏ヨ?鍥炴敹鐨勮?澶囩被鍚峔
&);
scanf(&%s&,name);
while(p != NULL)
if((0 == strcmp(p-&type,name)))
for(i = 0; i & p-& ++i)
if((p-&equipment[i].remain == 1))
p-&equipment[i].state = 0;
p-&remain = p-&remain+1;
strcpy(p-&equipment[i].jobname,&null&);
if(j == 0)
printf(&鏃犳墍杈撳叆鐨勮?澶囩被鍚峔
&);
显示函数/*****************************************
Description:
Called by:
*****************************************/
#include&/root/process4/include/head.h&
void display(Link head)
Link p = head-&
Link q = head-&
system(&clear&);
printf(&*****************************************\n&);
璁惧?绫昏〃
printf(&*****************************************\n&);
printf(&璁惧?绫诲悕
璁惧?鎬诲彴鏁?
绌洪棽鍙版暟\n&);
while(p != NULL)
printf(&%s\t\t%d\t\t%d\n&,p-&type,p-&count,p-&remain);
printf(&********************************************************************\n&);
璁惧?鍒嗛厤琛?
printf(&********************************************************************\n&);
printf(&璁惧?鐩稿?鍙?
璁惧?缁濆?鍙?
璁惧?鏄?惁瀹屽ソ
璁惧?鏄?惁鍒嗛厤
鍗犵敤浣滀笟杩涚▼\n&);
while(q != NULL)
for(i = 0; i & q-& ++i)
printf(&%d\t\t%d\t\t%d\t\t%d\t\t%s\n&,q-&equipment[i].lnumber,q-&equipment[i].number,
q-&equipment[i].remain,q-&equipment[i].state,q-&equipment[i].jobname);
Makefile我就不向上面粘贴了,昨天写了一下午,必须吐槽Linux红帽写代码的效率,真的慢,心累。。。。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3140次
排名:千里之外
原创:69篇
转载:20篇
(25)(32)(22)(16)}

我要回帖

更多关于 计算机操作系统 pdf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信