操作系统实验报告4Word格式.docx
《操作系统实验报告4Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告4Word格式.docx(37页珍藏版)》请在冰豆网上搜索。
1
【实验名称】
进程的控制
【实验目的】通过进程的创建,撤销和运行加深对进程概念和进程并发的执行的理解,明确进程与程序的区别。
【实验内容】1.进程的创建
2.进程的控制
【实验步骤】1.编写一段程序,使用系统调用fork()创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:
父进程显示字符“a”;
子进程分别显示字符“b”和字符“c”。
试观察记录屏幕上的显示结果,并分析原因。
<
程序>
#include<
stdio.h>
main()
{
intp1,p2;
while((pl=fork())==-1);
/*创建子进程p1*/
if(pl==0)/*子进程创建成功*/
putchar(‘b’);
else
while((p2=fork())==-1);
/*创建另一个子进程*/
if(p2==0)/*子进程创建成功*/
putchar(‘c’);
elseputchar(‘a’);
/*父进程执行*/
}
2.修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。
如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
程序1>
stdio.h>
intpl,p2,i;
while((p1=fork())==-1);
if(p1==0)
for(i=0;
i<
500;
i++)
printf("
child%d\n”,i);
while((p2=fork())==-1);
if(p2==0)
for(i=0;
500;
i++)
printf(“son%d\n”,i)
for(i=0,i<
500;
printf("
daughter%d\n”,i);
程序2>
main()
intp1,p2,i;
while((pl=fork())==-1);
if(pl==0)
lockf(1,1,0),
for(i=0;
i++)printf((“child%d/n”,i);
lockf(1,0,0);
while((p2=fork())==-1);
lockf(1,1,0);
for(i=0;
i++)printf(“son%d\n”,i);
i++)printf(“daughter%d\n”,i);
}
【实验结果】1的运行结果:
bca(有时会出现bac)
2中程序1的运行结果:
2中程序2的运行结果:
大致与未上锁的输出结果相同,也是随着执行时间不同,输出结果的顺序有所不同。
2
使用动态优先权的进程调度算法的模拟
【实验目的】通过动态优先算法的模拟加深对进程概念和进程调度过程的理解。
【实验内容】通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。
【实验步骤】1.用C语言来实现对N个进程采用动态优先权算法的进程调度;
2.每个用了标志进程的pcb用结构来描述;
3.优先数改变原则:
进程在就绪队列中呆一个时间片,优先数增加1;
进程每运行一个时间片,优先数减3.
4.源程序代码:
【实验结果】如图:
3
动态分区分配方式的模拟
【实验目的】了解动态分区分配方式中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。
【实验内容】了解动态分区分配方式中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。
【实验步骤】1.用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free()。
2.假设初始状态下可用内存空间为640KB,并有下列的请求序列:
作业1申请130kb空间
作业2申请60kb空间
作业3申请100kb空间
作业2释放60kb空间
作业4申请200kb空间
作业3释放100kb空间
作业1释放130kb空间
作业5申请140kb空间
作业6申请60kb空间
作业7申请50kb空间
3.用首次适应算法实现的源代码:
1)选择算法
2)实现过程
4
请求调页存储管理方式的模拟
【实验目的】通过对页面,页表,地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。
【实验内容】通过对页面、页表、地址转换和页面置换过程的模拟,加深对轻佻雕也系统的远离和实现过程的理解。
【实验步骤】1.假设每个页面中可存放10条指令,分配给以作业的内存块数是4.
2.用C语言模拟一作业的执行过程,改作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。
在模拟过程中,若访问的指令已经在内存中,则显示其物理地址,并转下一条指令,若访问之林还未装入内存,则发生却也,此时需要记录却也的次数,并将相应页调入内存。
如果4个内存块中均已装入该作业,则需要进行页面置换;
最终显示其物理地址,并转下一条指令。
在320条指令执行完毕,请计算并显示作业运行过程中发生的缺页率。
3.置换算法请分别考虑OPT、FIFO和LRU算法。
4.程序源代码:
【实验结果】