操作系统课后习题第二.pptVIP

  • 25
  • 0
  • 约3.99千字
  • 约 25页
  • 2019-07-19 发布于浙江
  • 举报
进程和线程的关系 线程是进程的一个组成部分,一个进程可以有多个线程,而且至少有一个可执行线程。 进程的多个线程都在进程的地址空间内活动。 资源是分给进程的,而不是分给线程的,线程需要资源时,系统从进程的资源配额中扣除并分配给它。 处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。 线程在执行过程中,需要同步。 例题1 解:设信号量初值S=1 汽车进程Pi(i=1,2,3,…) 到达桥头 P(s) 上桥行驶 到达桥另一端 V(s) 例题二 若有一售票厅只能容纳300人,当少于300人时,可以进入。否则,需在外等候, 若将每一个购票者作为一个进程,请用P、V操作编程。 解:信号量初值S=300 购票者进程Pi(i=1,2,3,…) P(s) 进入售票厅 购票 退出售票厅 V(s) 例题三 有三个进程PA、PB、PC合作解决文件打印问题:PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC打印缓冲区2中的记录,每执行一次打印一个记录。每个缓冲区只能存放一个记录。请用信号量机制实现文件的正确打印。 解:设置四个信号量empty1、empty2、full1、full2,其中empty1、empty2分别表示缓冲区1和2是否为空,初值为1; full1、full2分别表示缓冲区1和2是否有记录,初值为0。 PA进程 PB进程 PC进程 读一个记录 P(full1) P(full2) P(empty1) 从缓1取一个记录 从缓2取一个记录 存入缓冲区1 V(empty1) V(empty2) V(full1) P(empty2) 打印输出记录 存入缓冲区2 V(full2) 例题四 有一只铁笼子,每次只能放入一只动物,猎手向笼中放入老虎,农民向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪,试用P、V操作写出能同步执行的程序。 解:两个生产者和两个消费者共享了一个仅能存放一件产品的缓冲器,生产者各自生产不同的产品,消费者各自取自己需要的产品,P、V操作编程为: 猎手进程 农民进程 动物园进程 饭店进程 P(s) P(s) P(s1) P(s2) 放入虎 放入猪 买老虎 买猪 V(s1) V(s2) V(s) V(s) 其中S初值=1,S1=S2=0 例题五 桌上有一只盘子,每次只能放入一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,女儿专等吃盘中的苹果,儿子专等吃盘中的桔子。用P、V操作写出它们能正确同步的程序。 解:信号量初值S1=0,S2=0,S=1 爸爸进程 妈妈进程 女儿进程 儿子进程 repeat repeat repeat repeat P(s) P(s) P(s1) P(s2) 放苹果 放桔子 取苹果 取桔子 V(s1) V(s2) V(s) V(s) until false until false until false until fa

文档评论(0)

1亿VIP精品文档

相关文档