yznu操作系统实验报告1:hx

实验目的:

  1. 熟悉JBACI实验环境
  2. 了解程序顺序执行及并发执行方式的区别;
  3. 熟悉如何利用gannt图描述线程组执行特征。

实验内容:

  1. 比较图1-1和图1-2程序的执行结果,绘制图1-2至少两种不同执行序列的gannt图 ;

图1-1 incr.cm                                                                                图 1-2 currencyincy.cm

1-1执行结果:

1-2执行结果:

  1. 执行图1-3程序,观察所有可能出现的输出结果,分析得出这些结果的执行顺序。

                              

图1-3 aandb.cm             

1-3的三种可能的执行结果:

执行顺序为:x=1;x=x+5;y=4;y=y+x

执行顺序为:x=1;y=4;y=y+x;x=x+5;

执行顺序为:y=4;y=y+x;x=1;x=x+5;

图1-4程序说明了如何使用信号量控制程序的执行顺序,请参考该程序并实现下列执行顺序:

    1. x=1; y=y+x; y=4; x=x+5;
    2. y=4; x=1; y=y+x; x=x+5;
    3. x=1; y=4; x=x+5; y=y+x;
    4. y=4; x=1; x=x+5; y=y+x;

        

图1-4 信号量控制

程序[1]:semaphore sx = 0, sy = 0;

void a(){x = 1; y = y + x; v(sx);}

void b(){p(sx); y = 4; x = x+5;}

void main(){

                          cobegin{a(); b();}

                        cout<<"x="<<x<<"\ty="<<y<<endl;

}

运行结果:

程序[2]:semaphore sx = 0, sy = 0;

void a(){p(sx);  x = 1; y = y + x; v(sy);}

void b(){y = 4; v(sx); p(sy); x = x+5;}

void main(){

                        cobegin{a(); b();}

                        cout<<"x="<<x<<"\ty="<<y<<endl;

}

运行结果:

程序[3]:semaphore sx = 0, sy = 0;

void a(){x = 1; v(sx); p(sy); y = y + x;}

void b(){p(sx); y = 4; x = x+5; v(sy);}

void main(){

                          cobegin{a(); b();}

                        cout<<"x="<<x<<"\ty="<<y<<endl;

}

运行结果:

程序[4]:semaphore sx = 0, sy = 0, sz = 0;

void a(){p(sx); x = 1;v(sy); p(sz); y = y + x;}

void b(){y = 4; v(sx); p(sy); x = x+5; v(sz);}

void main(){

                        cobegin{a(); b();}

                        cout<<"x="<<x<<"\ty="<<y<<endl;

}

运行结果:

甘特图:

图1-2-1的gannt图:

图1-2-2的gannt图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值