并发控制课后答案
智慧树 计算机操作系统 网课章节测试答案

计算机操作系统在线学堂•得分:8••评语:••名称计算机操作系统•成绩类型百分制•截止时间2022-07-22 23:59•题目数5•总分数10说明第二次见面课课后测验提示:选择题选项顺序为随机排列•第1部分•总题数:51【单选题】 (2分)关于同步和互斥关系,以下叙述错误的是:A.并发进程推进过程中由于共享互斥资源可能形成互斥关系B.互斥表现的是一种竞争关系,互斥进程不能同时使用互斥资源C.并发进程推进过程中围绕共享资源可能形成合作关系D.同步表现的是进程之间的合作关系,同步进程可以同时使用临界资源2【单选题】 (2分)关于临界区和临界资源的说法,错误的是A.并发进程体中关于同一临界资源的临界区称为相关临界区B.临界区指的是进程体中使用临界资源的代码段C.一个进程体中只能有一块临界区D.临界资源指的是并发进程并发推进过程中需要共享但是不能同时共享的资源3【多选题】 (2分)PV操作可用来实现A.并发进程间的互斥B.进程间少量信息的传递C.并发进程间的同步D.进程间大量信息的传递4【判断题】 (2分)为了让用户进程互斥地进入临界区,可以把整个临界区实现成不可中断的过程,即让用户具有屏蔽所有中断的能力。
每当用户程序进入临界区的时候,屏蔽所有中断。
当出了临界区的时候,再开放所有中断A.对B.错5【判断题】 (2分)互斥是指不但不能同时用,谁先用谁后用也有严格约束A.错B.对总分8第1部分12345Copyright © 2003-现在Zhihuishu. All rights reserved.沪ICP备10007183号-5沪公网备31010402003974号电子营业执照计算机操作系统在线学堂•得分:10••评语:••名称计算机操作系统•成绩类型百分制•截止时间2022-07-22 23:59•题目数5•总分数10说明第一次见面课课后测验提示:选择题选项顺序为随机排列•第1部分•总题数:51【单选题】 (2分)以下关于进程的表述错误的是A.进程具有独立性,进程是分配资源和参与CPU调度的独立单位B.进程具有动态性,操作系统为了描述和管理程序动态的执行过程才引入了“进程”C.进程是一个程序的一次动态执行过程,进程由要执行的代码和要处理的数据组成D.进程具有并发性和异步性,每个进程的推进速度都是不可预知的2【单选题】 (2分)下列哪一种进程状态转换是不可能的A.阻塞态→运行态B.就绪态→运行态C.运行态→就绪态D.运行态→阻塞态3【判断题】 (2分)进程是按异步方式运行的,即,它的推进速度是不可预知的A.对B.错4【判断题】 (2分)一个进程由程序代码、数据集和进程控制块TCB组成。
数据库原理及应用第7章课后习题答案

习题71、试述事务的概念及事务的四个特性。
事务(Transaction)是用户定义的一个数据库操作序列,这些操作是一个完整的工作单元,一个事务内的所有语句被作为一个整体,这些操作要么全做,要么全不做。
事务是数据库环境的中的逻辑单元,相当于操作系统中的进程。
为了保证数据库中数据的正确性,一个事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability )。
这四个特性简称ACID 特性。
2、试述事务的状态及转换。
3、在数据库中为什么要并发控制并发控制能保证事务的哪些特性数据库的一个明显的特点是多个用户共享数据库资源,尤其是多用户可以同时存取相同的数据。
在这样的系统中,在同一时刻并发运行的事务数可达数百个。
若对事务的并发操作不加以控制,就会造成数据存、取的错误,破坏了数据的一致性和完整性。
并发控制可以防止数据不一致性出现。
4、并发操作可能会产生哪几类数据不一致用什么方法可以避免不一致性的情况并发操作带来的数据不一致性分为四种情况:丢失数修改、读“脏”数据、不可重复读和产生“幽灵”数据。
在数据库环境下,进行并发控制的主要技术有封锁(Locking)、时间戳(Timestamp)和乐观控制法。
商用的DBMS一般都采用封锁方法。
5、什么是封锁基本的封锁类型有哪些试述它们的含义。
封锁机制,即加锁(Locking),是一种并发控制机制,是用来调整对共享目标的并行存取的技术。
事务通过向封锁管理程序的系统组成部分发出请求而对事务加锁。
基本封锁类型有两种:共享锁(Share Locks,简记为S锁或读锁)和排它锁(Exclusive Locks,简记为X锁或写锁)。
6、如何用封锁机制保证数据的一致性在运用X锁和S锁对数据对象加锁时,还需要约定一些规则,这些规则为封锁协议或加锁协议(Locking Protocol)。
对封锁方式加不同的规则,就形成了各种不同级别的封锁协议。
并发控制

第11章 并发控制一、选择题:1、.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:B2、设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据答案:C3、设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是 。
A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:D4、解决并发操作带来的数据不一致性总是普遍采用 。
A .封锁B .恢复C .存取控制D .协商 答案:A5、若事务T 对数据R 已经加X 锁,则其他事务对数据R 。
A.可以加S锁不能加X锁B.不能加S锁可以加X锁 C.可以加S锁也可以加X锁D.不能加任何锁答案:D6、关于“死锁”,下列说法中正确的是。
A.死锁是操作系统中的问题,数据库操作中不存在 B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库C.当两个用户竞争相同资源时不会发生死锁 D.只有出现并发操作时,才有可能出现死锁答案:D7、对并发操作若不加以控制,可能会带来问题。
A.不安全B.死锁C.死机D.不一致答案:D8、并发操作会带来哪些数据不一致性。
A.丢失修改、不可重复读、脏读、死锁 B.不可重复读、脏读、死锁C.丢失修改、脏读、死锁 D.丢失修改、不可重复读、脏读答案:D二、填空题1、DBMS的基本工作单位是事务,它是用户定义的一组逻辑一致的程序序列;并发控制的主要方法是机制。
答案:封锁2、有两种基本类型的锁,它们是共享锁和排它锁。
答案:①共享锁②排它锁三、简答题1、叙述数据库中死锁产生的原因和解决死锁的方法。
答:死锁产生的原因:封锁可以引起死锁。
比如事务T1封锁了数据A,事务T2封锁了数据B。
T1又申请封锁数据B,但因B被T2封锁,所以T1只能等待。
课后练习题及答案

一、填空练习1.程序的执行是现代操作系统的基本特征之一,为了更好地描述这一特征而引入了这一概念。
2.进程存在的标志是。
3.进程的静态实体由、和三部分组成。
4.用于进程控制的原语主要有、、和。
5.进程被创建后,最初处于状态,然后经选中后进入状态。
6.进程创建工作主要完成的是创建进程控制块(PCB),并把它挂到队列中。
7.如果系统中有n个进程,则在就绪队列中进程的个数最多。
8.进程的同步和互斥反映了进程间和的关系。
9.死锁产生的四个必要条件是、、和四种。
10.操作系统中信号量的值与的使用情况有关,它的值仅能由来改变。
11.进程至少有三种基本状态:、和。
12.每执行一次P操作,信号量的数值S减1。
若S>0,则该进程;若S<0,则该进程。
13.每执行一次V操作,信号量的数值S加1。
若,则该进程继续执行;否则从对应的队列中移出一个进程并将状态赋予该进程。
14.利用信号量实现进程的,应为临界区设置一个信号量mutex,其初值为1,表示该资源尚未使用,临界区应置于和原语之间。
15. Windows NT是采用结构的操作系统,它的进程的功能发生了变化,它只是资源分配的单位,不是的单位,后者的功能由完成。
16. 通常,线程的定义是____________________________________。
在现代操作系统中,资源的分配单位是__________________,而处理机的调度单位是________________,一个进程可以有___________线程。
17. 计算机系统一般都设计有两种运行状态,和。
18. 目前,在操作系统设计中采用的结构模型主要有四种:、、和。
参考答案:1、并发,进程2、进程控制块PCB3、程序,数据集合,进程控制块PCB4、建立原语、撤消原语,挂起原语,激活原语5、就绪,进程调度程序,执行6、就绪7、n-18、直接制约,间接制约9、互斥使用,保持和等待,非剥夺性,循环等待10、相应资源,P、V操作11、执行态,就绪态,等待态12、继续执行,等待13、S>0,等待,就绪14、互斥,P(mutex),V(mutex)15、微内核,调度运行,线程16、是进程中执行运算的最小单位,进程,线程,多个17、用户态,核心态18、层次模块模型,整体内核模型,进程模型,对象模型二、选择练习1. 操作系统中,可以并行工作的基本单位是[1],[1]也是系统核心调度及资源分配的基本单位,它是由[2]组成的,它与程序的主要区别是[3]。
数据库基础与应用第二版课后答案王珊李盛恩编著

数据库基础与应用1.数据(DB):数据实际上是描述事物的符号纪录。
2.数据库: 数据库实际上是长期存储在计算机内的有组织的、可共享的数据集合。
3.从文件系统的视角上看去,文件是无结构的,文件只是一个字节流,因此,我们经常把文件叫做流式文件,实际上文件的数据是有结构的,数据的结构需要程序员通过编写程序来建立和维护。
4.数据库应用可以分为两大类:联机事务处理(OLTP),联机分析处理(OLAP).联机事务处理解决了组织结构业务自动化问题,而联机分析处理帮助管理层更好的分析组织结构的运站情况。
5. 数据库管理系统(DBMS):数据库管理系统是一类重要的软件,由一组程序组成。
其主要功能是完成对数据库的定义、数据操作。
提供给用户一个简明的接口,实现事务处理等。
6.数据库管理系统的基本功能:数据的定义功能数据操作功能数据库的运行和管理数据库的建立和维护功能7.数据库管理系统由两大部分组成:查询处理器存储管理器8.层次结构:应用层语言翻译层数据存取层数据存储层操作系统数据库9. 数据库系统:数据库系统是基于数据库的计算机应用的系统,有四部分组成数据库数据管理系统应用系统用户。
10. 数据库管理员的职责:(1)决定数据库中要存储的数据及数据结构(2)决定数据库的存储结构和存取策略(3)保证数据的安全性和完整性(4)监控数据库的使用和运行(5)数据库的改进和重组重构11.数据模型的三要素:数据结构数据操作完整性约束12. 数据结构是所研究的对象的类型的集合,这些对象是数据库的组成成分,他们包含两类:一类是与数据之间联系有关的对象。
一类是与数据之间联系有关的对象。
13. 数据操作:数据库主要有检索和更新(插入、删除、修改)两大类操作。
14.在关系模型中任何关系都要满足实体完整性和参照完整性。
15.三种数据模型:概念模型逻辑模型物理模型逻辑模型中有:层次模型网状模型关系模型面向对象模型对象关系模型其中层次模型和网状模型统称为非关系模型。
数据库事务处理与并发控制试卷

数据库事务处理与并发控制试卷(答案见尾页)一、选择题1. 数据库事务的基本特性包括()。
A. 原子性B. 一致性C. 隔离性D. 持久性2. 在数据库系统中,事务必须满足的条件有()。
A. 原子性B. 一致性C. 隔离性D. 持久性3. 下列哪些选项是数据库事务的正确隔离级别?()A. 读未提交B. 读已提交C. 可重复读D. 串行化4. 在并发控制中,死锁是指两个或多个事务在互相等待对方释放资源的情况下,无法继续执行的状态。
请判断以下哪些情况可能导致死锁?()A. 先请求资源R1,再请求资源R2B. 先请求资源R1,再请求资源R2,然后释放资源R1C. 先请求资源R1,再请求资源R2,然后请求资源R3D. 先请求资源R1,再请求资源R2,然后释放资源R1,接着请求资源R25. 什么是ACID属性?()A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)6. 数据库事务具有哪些特性?(ACID)A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)7. 在数据库系统中,如何实现事务的隔离性?(ABC)A. 使用锁机制(Locking Mechanism)B. 使用多版本并发控制(Multi-Version Concurrency Control, MVCC)C. 使用时间戳(Timestamp)D. 使用死锁检测(Deadlock Detection)8. 什么是死锁?(D)A. 两个或多个事务互相等待对方释放资源B. 一个事务无法完成执行C. 数据库系统崩溃D. 以上都不是9. 如何解决死锁问题?(AB)A. 避免长时间持有锁B. 使用锁超时(Lock Timeout)C. 回滚事务(Rollback Transaction)D. 重新启动事务10. 什么是并发控制?(C)A. 确保数据库系统的安全性B. 确保数据库系统的完整性C. 确保数据库系统的并发性和性能D. 确保数据库系统的可靠性11. 在数据库系统中,如何处理并发访问冲突?(ABC)A. 使用锁机制(Locking Mechanism)B. 使用乐观锁(Optimistic Locking)C. 使用悲观锁(Pessimistic Locking)D. 使用时间戳(Timestamp)12. 什么是乐观锁?(B)A. 一种并发控制策略,通过假设冲突很少发生来减少锁的使用B. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突C. 一种并发控制策略,通过在提交事务时检查数据是否被其他事务修改来判断是否存在冲突D. 一种并发控制策略,通过在写入数据时检查数据是否被其他事务修改来判断是否存在冲突13. 什么是悲观锁?(C)A. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突B. 一种并发控制策略,通过在提交事务时检查数据是否被其他事务修改来判断是否存在冲突C. 一种并发控制策略,通过在写入数据时检查数据是否被其他事务修改来判断是否存在冲突D. 一种并发控制策略,通过在读取数据时检查数据是否被其他事务修改来判断是否存在冲突14. 在数据库系统中,如何优化查询性能?(ABCD)A. 使用索引(Indexing)B. 使用分区(Partitioning)C. 使用缓存(Caching)D. 使用连接查询(Join Query Optimization)15. 在数据库系统中,如何确保数据的完整性?(ABD)A. 使用约束(Constraints)B. 使用触发器(Triggers)C. 使用存储过程(Stored Procedures)D. 使用事务(Transactions)16. 数据库事务的基本特性包括哪些?A. 原子性B. 一致性C. 隔离性D. 持久性17. 在数据库系统中,如何实现事务的隔离性?A. 使用锁机制B. 使用多版本并发控制(MVCC)C. 使用时间戳排序D. 使用行级锁18. 什么是死锁?如何避免死锁?A. 死锁是指两个或多个事务互相等待对方释放资源的情况B. 避免死锁的方法包括按照固定顺序访问资源、使用锁超时、检测并解决死锁C. 死锁只发生在并发事务中D. 死锁是数据库系统的正常现象19. 什么是事务的持久性?如何确保事务的持久性?A. 持久性是指事务处理结束后,其结果仍然存在于数据库中B. 确保事务持久性的方法是使用日志记录和恢复技术C. 持久性只适用于本地数据库D. 持久性与并发控制无关20. 在数据库系统中,如何处理事务的回滚操作?A. 回滚操作是将事务的所有更改撤销,使数据库回到事务开始前的状态B. 回滚操作通常由用户手动执行C. 回滚操作只在发生错误时才需要D. 回滚操作总是自动执行21. 什么是并发控制?为什么需要并发控制?A. 并发控制是指在多个事务同时运行时,确保它们不会相互干扰的技术B. 并发控制可以防止数据不一致和破坏C. 并发控制只适用于数据库系统D. 并发控制与操作系统性能无关22. 在数据库系统中,如何实现并发控制中的安全性控制?A. 使用访问控制列表(ACL)来限制用户对资源的访问B. 使用加密技术来保护数据的机密性C. 使用时间戳排序来避免冲突D. 使用多版本并发控制(MVCC)来提高并发性能23. 在数据库系统中,如何实现并发控制中的完整性控制?A. 使用约束条件来限制用户的输入B. 使用触发器来强制数据的一致性C. 使用事务来保证数据的一致性D. 使用存储过程来限制用户的操作24. 在数据库系统中,如何实现并发控制中的可靠性控制?A. 使用备份和恢复技术来恢复丢失的数据B. 使用日志记录和恢复技术来保证数据的一致性C. 使用事务的原子性和一致性来保证数据的可靠性D. 使用多副本技术来提高数据的可靠性25. 在数据库系统中,如何实现并发控制中的可用性控制?A. 使用缓存技术来提高查询性能B. 使用负载均衡技术来分配系统资源C. 使用索引优化技术来提高查询速度D. 使用分布式技术来扩展系统容量26. 数据库事务必须具备的特性中,哪个不是?A. 原子性(Atomicity)B. 一致性(Consistency)C. 隔离性(Isolation)D. 持久性(Durability)27. 在数据库系统中,事务的隔离级别由低到高依次是什么?A. 读未提交、读已提交、可重复读、串行化B. 读未提交、读已提交、串行化、可重复读C. 读未提交、读已提交、可重复读、串行化D. 读已提交、读未提交、可重复读、串行化28. 下面哪个不是数据库事务处理的关键要素?A. 隔离性(Isolation)B. 持久性(Durability)C. 原子性(Atomicity)D. 一致性(Consistency)29. 在数据库系统中,实现事务的隔离性需要考虑哪些因素?A. 数据库锁机制B. 数据库索引C. 数据库设计D. 数据库性能30. 什么是事务的ACID属性?请简要解释每个属性的含义。
数据库原理与技术课后答案

数据库原理与技术课后答案1. 简述数据库管理系统(DBMS)的作用和优点。
数据库管理系统是一种软件工具,用于管理和控制数据库的创建、维护、访问和使用等各个方面。
其主要作用如下:- 数据组织:DBMS通过定义数据结构和类型,实现数据的有序组织和存储,提高数据的组织性和结构性。
- 数据共享:DBMS可以为多个用户提供并发访问数据库的能力,实现数据共享和协同工作。
- 数据安全:DBMS提供了权限管理、数据备份和恢复等功能,保护数据库的安全性和一致性。
- 数据一致性:DBMS能够确保数据的一致性,维护数据库中各个数据之间的联系和完整性。
- 数据查询和处理:DBMS提供了灵活的查询语言和数据处理功能,方便用户对数据库进行查询、分析和操作。
DBMS的优点包括:- 数据共享和协作:多个用户可以同时访问和使用数据库,提高了工作效率和资源利用率。
- 数据一致性和完整性:DBMS确保数据库中的数据一致性和完整性,避免了数据冗余和错误。
- 数据安全和可靠性:DBMS提供了权限管理、数据备份和恢复等功能,保护数据库的安全和可靠性。
- 数据的易管理性和可维护性:DBMS提供了管理和维护数据库的工具和功能,简化了数据管理和维护的工作。
- 数据的高效访问和处理:DBMS提供了高效的数据访问和处理能力,提高了数据的查询和处理效率。
2. 简述关系型数据库和非关系型数据库的特点和应用场景。
关系型数据库特点:- 数据存储:关系型数据库使用表格形式存储数据,表格由行和列组成,每行表示一个记录,每列表示一个字段。
- 结构化数据:关系型数据库要求数据先定义表结构,再进行数据录入,确保数据的一致性和完整性。
- 支持SQL查询:关系型数据库使用结构化查询语言(SQL)进行数据查询和操作,具有较高的查询灵活性和表达能力。
- ACID特性:关系型数据库支持ACID(原子性、一致性、隔离性和持久性)特性,保证数据的一致性和可靠性。
关系型数据库应用场景:- 需要严格的数据一致性和完整性的应用,如金融系统、电子商务系统等。
数据库简答题答案

一、简答题1、简述数据库系统的特点。
(P9)答:数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由DBMS统一管理和控制。
2、数据库管理系统的主要功能有哪些?(P11)(1)数据的安全性保护(2)数据的完整性保护(3)并发控制(4)数据库恢复3、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?(P10)物理独立性:是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。
逻辑独立性:是指用户的应用程序与数据的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。
为什么:数据独立性是由DBMS的二级映像功能来保证的(外模式/模式映像,模式/内模式映像),这两层映像机制保证了数据库系统中数据的逻辑独立性和物理独立性。
4、试述数据库系统的组成。
(P5)数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员。
5、简述文件系统与数据库系统的区别和联系。
(P6)区别:数据的管理者:文件系统;数据库管理系统数据面向的对象:某一应用;现实世界数据的共享程度:共享性差,冗余度大;共享性高,冗余度小数据的独立性:独立性差;具有高度的物理独立性和逻辑独立性数据的结构化:记录内有结构,整体无结构;整体结构化,数据模型描述数据的控制能力:应用程序自己控制;由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力联系:(1)均为数据组织的管理技术(2)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换(3)数据库系统是在文件系统的基础上发展而来的6、DBA的职责是什么?(P35)(1)决定数据库中的信息内容和结构(2)决定数据库中的存储结构和存取策略(3)定义数据库的安全性要求和完整性约束条件(4)监控数据的使用和运行(5)数据库的改进和重组重构7、什么是基本表?什么是视图?两者的区别和联系是什么?(P81)基表:是本身独立存在的表,在SQL中一个关系就对应一个基表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
~第八章并发控制习题解答和解析1. 1.在数据库中为什么要并发控制答:数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2. 2.并发操作可能会产生哪几类数据不一致用什么方法能避免各种不一致的情况答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。
(1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。
(2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
不可重复读包括三种情况:详见《概论》(P266)。
|(3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3. 3.什么是封锁答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4. 4.基本的封锁类型有几种试述它们的含义。
答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。
排它锁又称为写锁。
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称为读锁。
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
:5.如何用封锁机制保证数据的一致性答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。
这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值进行运算。
这样就不会丢失T1的更新。
…DBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。
6.什么是封锁协议不同级别的封锁协议的主要区别是什么答:在运用封锁技术对数据加锁时,要约定一些规则。
例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。
这些约定或者规则称为封锁协议(locking Protocol)。
对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
《三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
7.不同封锁协议与系统一致性级别的关系是什么答:不同的封锁协议对应不同的一致性级别。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。
在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读"脏"数据。
二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。
在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。
在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束才释放封锁。
所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。
下面的表格清楚地说明了封锁协议与系统一致性的关系。
—X锁S锁一致性保证、8.什么是活锁什么是死锁答: TI T2 T3 T4lock R . . .¥. lock R . .. 等待 lock R .Unlock 等待 . lock R. 等待 . 等待. 等待 . 等待. 等待 Unlock 等待. 等待 . lock R. 等待 . .\如果事务T1封锁了数据R,事务T2飞又请求封锁R,于是T2等待。
T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。
然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁的情形。
活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
如果事务Tl封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。
接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放Rl上的锁。
这样就出现了T1在等待T2,而T2又在等待Tl的局面,T1和T2两个事务永远不能结束,形成死锁。
T1 T2lock R1 .. lock R2、. .lock R2 .等待 .等待 lock R1等待等待9.试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
…避免活锁的简单方法是采用先来先服务的策略。
当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
10.请给出预防死锁的若干方法。
答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
防止死锁的发生其实就是要破坏产生死锁的条件。
预防死锁通常有两种方法:(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;(2)顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》。
11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁(答:数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。
DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。
若时限设置得太长,又不能及时发现死锁发生。
DBMS并发控制子系统检测到死锁后,就要设法解除。
通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。
当然,对撤销的事务所执行的数据修改操作必须加以恢复。
12.什么样的并发调度是正确的调度答:可串行化(Sertalizable)的调度是正确的调度。
可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
13.设T1,T2,T3是如下的3个事务:T1:A:=A+2;,T2:A:=A*2;T3:A:=A**2;设A的初值为0。
(1)若这3个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。
答:A的最终结果可能有2、4、8、16。
因为串行执行次序有T1 T2 T3、T1 T3 T2、T2 T1 T3、T2 T3 T1、T3 T1 T2、T3 T2 T1。
对应的执行结果是16、8、4、2、4、2。
(2)请给出一个可串行化的调度,并给出执行结果&答:T1 T2 T3slock AY=A=OUnlock AXlock ASlock AA=Y+2 等待>写回 A(=2) 等待Unlock A 等待Y=A=2Unlock AXlock ASlock AA=Y*2 等待写回 A(=4) 等待[Unlock A 等待Y=A=4Unlock AXlock A写回 A(=16)Unlock A最后结果A为16,是可串行化的调度。
…(3)请给出一个非串行化的调度,并给出执行结果。
答:T1 T2 T3Slock AY=A=0Unlock ASlock AY=A=0—Xlock A等待 Unlock AA=Y+2写回 A(=2) Slock AUnlock A 等待Y=A=2Unlock AXlock A,Xlock A等待 A=Y**2等待写回 A(=4)等待 Unlock AA=Y*2写回 A(=0)Unlock A最后结果 A 为 0, 为非串行化的调度。
…(4)若这3个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
答: T1 T2 T3Slock AY=A=OXlock AA=Y+2 Slock A写回 A(=2) 等待Unlock A 等待<Y=A=2Xlock A等待 Slock AA=Y*2 等待写回A(=4) 等待Unlock A 等待Y=A=4Xlock A)A=Y**2写回 A(=16)Unlock A(5)若这3个事务都遵守两段锁协议,请给出一个产生死锁的调度。
答:T1 T2 T3Slock A,Y=A=0Slock AY=A=0Xlock A等待Xlock A等待Slock A…Y=A=0Xlock A等待14.试述两段锁协议的概念。
答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
•在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;•在释放一个封锁之后,事务不再申请和获得任何其他封锁。
"两段"的含义是,事务分为两个阶段:(第一阶段是获得封锁,也称为扩展阶段,在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;第二阶段是释放封锁,也称为收缩阶段,在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。