全球旧事资料 分类
间的同步,生产者和消费者两个进程的程序如下:Barray09ofproductss1s2semaphores110s20INouti
tegerIN0out0cobegi
procedureproducercproductsbegi
L1ProducecPs1BINCININ1mod10Vs2gotoL1e
dprocedureco
sumerxproductsbegi
L2ps2xBoutoutout1mod10vs1co
sumexgotoL2e
dcoe
d其中的semaphore和products是预先定义的两个类型,在模拟实现中semaphore用i
teger代替,products可用i
teger或char等代替。3进程控制块PCB。为了记录进程执行时的情况,以及进程让出处理器后的状态,断点等信息,每个进程都
f有一个进程控制块PCB。在模拟实习中,假设进程控制块的结构如图31。其中进程的状态有:运行态、就绪态、等待态和完成态。当进程处于等待态时,在进程控制块PCB中要说明进程等待原因(在模拟实习中进程等待原因是为等待信号量s1或s2);当进程处于等待态或就绪态时,PCB中保留了断点信息,一旦进程再度占有处理器则就从断点位置继续运行;当进程处于完成状态,表示进程执行结束。进程名状态等待原因断点
图31进程控制块结构
4处理器的模拟。计算机硬件提供了一组机器指令,处理器的主要职责是解释执行机器指令。为了模拟生产者和消费者进程的并发执行,我们必须模拟一组指令和处理职能。模拟的一组指令见图32,其中每条指令的功能由一个过程来实现。用变量PC来模拟“指令计数器”,假设模拟的指令长度为1,每执行一条模拟指令后,PC加1,提出下一条指令地址。使用模拟的指令,可把生产者和消费者进程的程序表示为图33的形式。定义两个一维数组PA04和SA04,每一个PAi存放生产者程序中的一条模拟指令执行的入口地址;每个SAi存放消费者程序中的一条模拟指令执行的入口地址。于是模拟处理器执行一条指令的过程为:取出PC之值,按PAPC或SAPC得模拟指令执行的入口地址,将PC之值加1,转向由入口地址确定的相应的过程执行。模拟的指令psvsputGETproduceco
sumeGOTOLNOP序号01234功执行P操作原语执行V操作原语BINproductININ1mod10xBoutoutout1mod10输入一个字符放入C中打印或显示x中的字符PCL空操作
图32模拟的处理器指令

生产者程序produceps1PUTvs2goto0
图33生产者和消费者程序
消费者程序ps2GETvs1co
sumegoto0
5程序设计本实习中的程序由三部分组成:初始化程序、处理器调度程序、模拟处理器指令执行程序。各部分程序的功能及相互间的关系由图34至图127指出。
f初r
好听全球资料 返回顶部