- 1
- 0
- 约3.76千字
- 约 9页
- 2026-03-08 发布于北京
- 举报
2014【软件研发】笔试——坐标
2015-07-28Katrina
一、简答题(10分*3)
1、静态库与动态库的优缺点。
参:
(1)动态库(DynamicLinkedLibrary):
Windows为应用程序了丰富的函数调用,这些函数调用都包含在动态
库中。其中有3个最重要的DLL,Kernel32.dll、User32.dll和GDI32.dll。
有两种使用方式:一种是静态加载,即在应用程序启动时被加载;一种是动态加
载,即是该动态库在被使用时才被应用程序加载。
优点如下:
a、共享:多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只
需要将动态库加载到内存一次即可;
b、开发模块好:要求设计者对功能划分的比较好。
缺点是不能解决计数等问题。
(2)静态库(StaticLibrary):
函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况
下,在编译可执行文件时,器从库中这些函数和数据并把它们和应
用程序的其它模块组合起来创建最终的可执行文件(.EXE文件)。静态库作为
代码的一部分,在编译时被。
优缺点如下:
代码的装载速度快,因为编译时它只会需要的那部分进去,应用程序相
对比较大。但是如果多个应用程序使用的话,会被装载多次,浪费内存。
2、轮询任务调度与抢占式任务调度的区别。
参:
(1)轮询调度的原理是每一次把来自用户的请求轮流分配给中的服务器,
从1开始,直到N(服务器个数),然后重新开始循环。只有在当前任务主动
放弃CPU控制权的情况下(比如任务挂起),才允许其他任务(包优先级的
任务)控制CPU。其优点是其简洁性,它无需记录当前所有连接的状态,所以
它是一种无状态调度。但不利于后面的请求及时得到响应。
(2)抢占式调度允许高优先级的任务打断当前执行的任务,抢占CPU的控制
权。这有利于后面的高优先级的任务也能及时得到响应。但实现相对较复杂且可
能出现低优先级的任务长期得不到调度。
3、请列出数据库中常用的锁及应用场景。
参:
数据库中的锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下
保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的,
但在具体实现上各有差别。
目前,大多数数据库管理系统都或多或少具有自我调节、自我管理的功能,因此
很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现。在数据库中加
锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多
种模式,SQLServer中锁模式包括:
1)共享锁
SQLServer中,共享锁用于所有的只读数据操作。共享锁是非独占的,允许多
个并发事务其锁定的资源。默认情况下,数据被后,SQLServer立即
释放共享锁。例如,执行查询“SELECT*FROMmy_table”时,首先锁定第一
页,,释放对第一页的锁定,然后锁定第二页。这样,就允许在读操作
过程中,修改未被锁定的第一页。
但是,事务级别连接选项设置和SELECT语句中的锁定设置都可以改变
SQLServer的这种默认设置。例如,“SELECT*FROMmy_tableHOLDLOCK”
就要求在整个查询过程中,保持对表的锁定,直到查询完成才释放锁定。
2)修改锁
修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使
用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先
获得一个共享锁,数据,然后将共享锁升级为独占锁,然后再执行修改操
作。
这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时
候,这些事务都要将共享锁升级为独占锁。这时,这些事务都不会释放共享锁
而是一直等待对方释放,这样就造成了死锁。
如果一个数据在修改前直接申请修改锁,在数据修改的时候再升级为独占锁,就
可以避免死锁。修改锁与共享锁是兼容的,也就是说一个资源用共享锁锁定后,
允许再用修改锁锁定。
3)独占锁
独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能也不能修改。
独占锁不能和其他锁兼容。
4)结构锁
结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操
原创力文档

文档评论(0)