1 / 23
文档名称:

实验七:同步机构实验报告.docx

格式:docx   大小:81KB   页数:23页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验七:同步机构实验报告.docx

上传人:sssmppp 2020/12/10 文件大小:81 KB

下载得到文件列表

实验七:同步机构实验报告.docx

相关文档

文档介绍

文档介绍:实验七:同步机构实验报告
一、 实****内容
模拟实现用同步机构避免发牛进程执行时可能出现的与时间有关的错误。
二、 实****目的
进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统屮 的多个进程轮流地占用处理器运行。
我们把若干个进程都能进彳亍访问和修改的那些变量称为公共变量。由于进程 是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产牛“与 吋间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。为 了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。一般说, 同步机构是由若干条原语——同步原语——所组成。本实****要求学牛模拟PV操 作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。
三、 实****题目
模拟PV操作同步机构,且用PV操作解决牛产者——消费者问题。
[提不]:
P V操作同步机构,由P操作原语和V操作原语组成,它们的定义如下:
P操作原语P(S):将信号量s减去1,若结果小于0,则执行原语的进程被置 成等待信号量s的状态。
V操作原语V(s):将信号量s加1,若结果不大于0,则释放一个等待信号 量s的进程。
这两条原语是如下的两个过程:
procedure p (var s: semaphore);
begin s: = s-1;
讦 s<0 then W (s)
end {p}
procedure v (var s: semaphore);
egin s: = s+1;
if s£0 then R (s)
end {v} 其屮W (s)表示将调用过程的进程置为等待信号量s的状态;R (s)表示释放 一个等待信号量s的进程。
在系统初始化吋应把semaphore定义为某个类型,为简单起见,在模拟实****中可把上述的semaphore直接改成integero
牛产者——消费者问题。
假定有一个生产者和一个消费者,牛产者每次牛产一件产品,并把牛产的产 品存入共享缓冲器以供消费者取走使用。消费者每次从缓冲器内取出一•件产品去 消费°禁止牛产者将产品放入已满的缓冲器内,禁止消费者从空缓冲器内以产品。 假定缓冲器内可同吋存放10件产品。那么,用PV操作来实现牛产者和消费者 之间的同步,牛产者和消费者两个进程的程序如下:
B: array [0..9] of products;
Si, S2; semaphore;
S|:二 10, S2: =0;
IN, out: integer;
TN: =0; out: =0;
cobegin procedure producer; c: products;
begin
LI:
Produce (c);
P(Sl);
B[IN]: =C;
IN: =(IN+l)mod 10;
V (S2);
goto L]
end;
procedure consumer; x: products;
begin
l2:
P (S2); x: =B[out]; out: =(out+1) mod 10; V(S|); consume (x); goto L2
end;
coend.
啲semaphore和products是预先定义的两个类型,在模拟实现屮semaphore 用 integer 代替,products 可用 integer 或 char 等代替。
进程控制块PCB。
为了记录进程执行吋的情况,以及进程让出处理器后的状态,断点等信息, 每个进程都有一个进程控制块PCB。在模拟实****屮,假设进程控制块的结构如 图12-1 c其屮进程的状态有:运行态、就绪态、等待态和完成态。当进程处于等 待态时,在进程控制块PCB小要说明进程等待原因(在模拟实****小进程等待原 因是为等待信号量y或S2);当进程处于等待态或就绪态吋,PCBH*保留了断 点信息,一旦进程再度占有处理器则就从断点位置继续运行;当进程处于完成状 态,表示进程执行结束。
进程名 状态 等待原因
|断点 |
图12-1进程控制块结构
处理器的模拟。
计算机硬件提供了一组机器指令,处理器的主要职责是解释执行机器指令。 为了模拟牛产者和消费者进程的并发执行,我们必须模拟一组指令和处理职能。
模拟的一组指令见图12・2,其屮每条指令的功能由一个过程来实现。用变量 PC来模拟“指令计数器”,假设模拟的指令长度为1,每执行一条模拟指令后,
PC加I,提出下一•条指令地址。使用模拟的指令,可把牛产者和消费者进程的 程序表示为图12・3的形式。
定义两个一维数组PA[0..4]和SA[0..4],每一个PA[i]存放牛产者程序屮的一 条模拟指令执行的入口地址;每个SA[i]存放消