操作系统实习Word格式文档下载.docx
- 文档编号:13285456
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:13
- 大小:17.99KB
操作系统实习Word格式文档下载.docx
《操作系统实习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统实习Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
(1)进程的创建
(2)编写一段程序,使用系统调用fork()创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让没一个进程在屏幕上显示一个字符:
父进程显示字符“a”;
子进程分别显示字符“b”和字符“c”。
试观察记录屏幕上的显示结果,并分析原因。
4.实验程序
#include<
stdio.h>
Main()
{
intp1,p2;
while((p1=fork())==-1);
if(p1==0)
putchar(‘b’)
else
while((p2=fork())==-1);
if(p2==0)
putchar(‘c’);
elseputchar(‘a’);
}
putchar(‘\n’);
}
5.实验结果
程序运行后出现bac、bca、abc等多种情况。
实验2进程间通信
一、实验目的
Linux系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据。
本实验的目的是了解和熟悉Linux支持的消息通信机制、共享存储区机制及信息机制。
二、实验预备内容
阅读Linux系统的msg.c\sem.c等源码文件,熟悉Linux的三种通信机制。
三、实验内容
(1)消息的创建,发送和接收。
1.使用系统调用msgget(),msgsnd(),msgrev()j及msgctl()编制一长度1k的消息的发送和接收程序。
2.观察上面程序,说明控制消息队列系统msgctl()在此起什么作用?
3.实验程序
#include<
stdlib.h>
sys/types.h>
sys/msg.h>
sys/ipc.h>
#defineMSGKEY75
structmsgform
{longmytype;
charmtext[1030];
}msg;
intmsgqid,i;
voidCLENT()
{inti;
msgqid=msgget(MSGKEY,0777);
for(i=10;
i>
=1;
i--)
{msg.mytype=i;
printf(“(client)sent\n”);
msgsnd(msgqid,&
msg,1024,0);
/*发送消息msg入msgqid消息队列*/
}
exit(0);
voidSERVER()
{msgqid=msgget(MSGKEY,0777LIPC_CREAT);
/*由关键字获得消息队列*/
do
{msgrcv(msgqid,&
msg,1030,0,0);
/*从msgqid队列接受消息msg*/
printf(“(server)received\n”);
}while(msg.mytype!
=1);
msgctl(msgqid,IPC-RMID,0);
/*消息队列为1时释放队列*/
Exit(0);
voidmain()
{while((i=fork())==-1);
if(!
i)SERVER();
while((i=fork())==-1;
i)CLIENT();
wait(0);
4、实验结果:
user@user-desktop:
~$gcc-0shiyan2shiyan2.c
~$./shiyan2
(client)sent
(server)received
~$
实验3存储管理
1.实验目的:
存储管理的主要功能之一是合理地分配空间。
请求页式管理式一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
2.实验内容:
(1)通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:
1.50%的指令是顺序执行的;
2.25%的指令是均匀分布在前地址部分;
3.25%的指令是均匀分布在后地址部分。
3.实验程序
#include<
#defineTRUE1
#defineFALSE0
#defineINVALID-1
#defineNULL0
#definetotal_instruction320
#definetotal_vp32
#defineclear_period50
typedefstruct
{intpn,pfn,counter,time;
pl_type;
pl_typepl[total_vp];
structpfc_struct*next;
};
typedefstructpfc_structpfc_type;
Pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;
intdisaffect,a[total_instruction],offset[total_instruction];
inttotal_pf;
voidinitialize(total_pf)
disaffect=0;
for(i=0;
i<
total_vp;
i++)
{pl[i].pn=I;
pl[i].pfn=INVALID;
pl[i].counter=0;
pl[i].time=-1;
for(i=1;
total_pf;
{pfc[i-1].next=&
pfc[i];
Pfc[i-1].pfn=i-1;
pfc[total_pf-1].next=NULL;
pfc[total_pf-1].pfn=total_pf-1;
freepf_head=&
pfc[0];
voidFIFO(total_pf)
{intI,j;
pfc_type*p,*t;
initialize(total_pf);
busypf_head=busypf_tail=NULL;
total_instruction;
if(pl[page[i]].pfn==INVALID)
{disaffect+=1;
If(freepf_head==NULL)
{p=busypf_head->
next;
pl[busypf_head->
pn].pfn=INVALID;
freepf_head=busypf_head;
freepf_head->
next=NULL;
busypf_head=p;
p=freepf_head->
pn=page[i];
pl[page[i]].pfn=freepf_head->
pfn;
if(busypf_tail==NULL)
busypf_head=busypf_tail=freepf_head;
else{
busypf_tail->
next=freepf_head;
busypf_tail=freepf_head;
freepf_head=p;
printf(“FIFO:
%6.4f”,1-(float)diseffect/320);
voidLRU(total_pf)
{intmin,minj,i,j,present_time;
initialize(total_pf);
present_time=0;
{if(pl[page[i]].pfn==INVALID)
{diseffect++;
if(freepf_head==NULL)
{min=32767;
for(j=0;
j<
j++)
if(min>
pl[j].time&
&
pl[j].pfn!
=INVALID)
{min=pl[j].time;
minj=j;
pfc[pl[minj].pfn];
pl[minj].pfn=INVALID;
pl[minj].time=-1;
pl[page[i]].pfn=freepf_head->
pl[page[i]].time=present_time;
freepf_head=freepf_head->
present_time++;
printf(“LRU:
voidNUR(total_pf)
{inti,j,dp,cont_flag,old_dp;
pfc_type*t;
initiallze(total_pf);
dp=0;
for(i=o;
{if(pl[page[i]].pnf==INVALID)
{disaffect++;
if(freep_head==NULL)
{cont_flag=TURE;
old_dp=dp;
while(cont_flag)
if(pl[dp].counter==0&
pl[dp].pfn!
cont_flag=FALSE;
{dp++;
if(dp==total_vp)
for(j=0;
pl[j].counter=0;
pfc[pl[dp].pnf];
pl[dp].pnf=INVALD;
freep_head->
next=NULL);
freepf_head=freepf_head->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实习