当前位置:首页 > 操作系统(02326) > 正文内容

有一对夫妻在某银行申请了一个共同的帐号,办理了正副两张银行卡。每张银行卡都可独立存款和取款,规定每次存款或取款的金额为1000元(约定可透支)。自动存取款机
中为银行卡设置了如下两个进程:
begin
amount:integer;
amount:=0;
cobegin
processSAVE
k:integer;
begin
k:=amount;
k:=k+1000;
amount:=k
end;<

高老师2年前 (2024-03-26)操作系统(02326)9

有一对夫妻在某银行申请了一个共同的帐号,办理了正副两张银行卡。每张银行卡都可独立存款和取款,规定每次存款或取款的金额为1000元(约定可透支)。自动存取款机
中为银行卡设置了如下两个进程:
begin
amount:integer;
amount:=0;
cobegin
processSAVE
k:integer;
begin
k:=amount;
k:=k+1000;
amount:=k
end;
processTAKE
t:integer;
begin
t:=amount;
t:=t-1000;
amount:=t
end;
coend;
end;
回答下列问题:
(1)上述进程执行时会产生怎样的错误?为什么?
(2)为保证系统的安全,可采用PV操作来管理。请完善上述程序,以确保系统的安全。

(1)会产生与时间有关的错误。
因正副卡都可独立存取款,且存取款是随机的,故两进程就可能并发执行。
由于它们都涉及到共享变量amount,当交替访问amount时就会出错。
(2)完善后的程序如下。方框处为应完善的内容。

扫描二维码免费使用微信小程序搜题/刷题/查看解析。

版权声明:本文由翰林刷题小程序授权发布,如需转载请注明出处。

本文链接:https://doc.20230611.cn/post/435966.html

分享给朋友: