试题五 阅读以下说明,根据要求回答下列问题。 [说明] 某连锁酒店提供网上预订房间业务,流程如下: (1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息。 (2)客户输入预订的起始日期、结束日期、房间类别和数量,并提交。 (3)系统将用户提交的信息写入预订表(身份证号,起始日期,结束日期,房间类别,数量),并修改空房表的相关数据。 针对上述业务流程,回答下列问题。
引入如下伪指令:将预订过程作为一个事务,将查询和修改空房表的操作分别记为R(A)和W(A,x),插入预订表的操作记为W(B,a),其中x代表空余房间数,a代表预订房间数,则事务的伪指令序列为:x=R(A),W(A,x-a),w(B,a)。
在并发操作的情况下,若客户1、客户2同时预订相同类别的房间时,可能出现的执行序列为:x1=R(A),x2=R(A),W(A,x1-a1),W(B1,a1),W(A,x2-a2),W(B2,a2)。
(1)此时会出现什么问题,请用100字以内的文字简要叙述。
(2)为了解决上述问题,引入共享锁指令SLock(X)和独占锁指令XLock(X)对数据X进行加锁,解锁指令Unlock(X)对数据X进行解锁,请补充上述执行序列,使其满足2PL协议,不产生死锁且持有锁的时间最短。
试题五 阅读以下说明,回答下列问题。 [说明] 在某嵌入式处理器上,编写以下两段程序(编译选项中,存储采用4字节对齐方式)。 程序段1: struct student1{ char name[10]; long sno; char sex; float score[4]; } *p1, a1, b1; 程序段2: union student2{ char name[10]; long sno; char sex; float score[4]; } *p2, a2, b2; 汉诺塔问题说明:有n个盘子在A处,盘子从小到大,最上面的盘子最小,程序要把这n个盘子从A处搬到C处,可以在B处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。 下列是一段求解汉诺塔问题的C语言程序。 #include <stdio.h> void move(int n, char a, char c) { static int Step=1; printf("Step %2d: Disk %d %c---> %c/n",Step,n,a,c); Step++; } void Hanoi(int n, char a, char b, char c) { if (n>1) { Hanoi(n-1, a, c, b); move(n, a, c); Hanoi(n-1, b, a, c) ; } else move(n, a, c); } void main( ) { Hanoi(3,’A’, ’B’, ’C’); }
C语言函数的一般格式为:
<函数类型><函数名>(<参数列表>)
{
<函数体>;
}
简答下述问题。
(1)<函数类型>的含义是什么
(2)<参数列表>的含义是什么
(3)C语言函数之间的参数如何传递
Access数据表结构
请根据上表的项目描述,完成如下图所示的项目里程碑甘特图。(注:里程碑甘特图上时间中每方格为一天。) [*] 项目里程碑甘特图(不完整)
我来回答: 提交
|