同步机制应该遵循哪些通常可以通过哪些方法实现?


由于各进程要求使用共享资源(變量、文件等)而这些资源需要排他性使用,各进程之间竞争使用这些资源这一关系称为进程互斥。

系统中某些资源一次只允许一个進程使用称这样的资源为临界资源或互斥资源或共享变量。

而各个进程中对某个临界资源(共享变量)实施操作的程序片段称为临界区戓互斥区

  • 没有进程在临界区时,想进入临界区的进程可进入
  • 不允许两个进程同时处于其临界区中
  • 临界区外运行的进程不得阻塞其他进程進入临界区
  • 不得使进程无限期等待进入临界区


如果由于CPU调度使得两个进程都执行完了第一行语句也就是pturn和qturn都为true了,那么就都会在下一行while語句上死循环互相都在谦让对方执行,也就不满足了临界区的使用原则—不得使进程无限期等待进入临界区

Dekker互斥算法是由荷兰数学家Dekker提出的一种解决并发进程互斥与同步的软件实现方法。假设有p和q两个进程变量pturn、qturn表示p和q进程是否想要资源(可以想象为举手示意想要),变量turn表示安排资源给谁:



如果两个进程都执行完了第一行语句也就是pturn和qturn都为true了,那么会根据变量turn进一步查看究竟是把资源安排给了谁如果安排给了另一个进程,那么自己就先把手放下等待安排资源给自己。

与之前的错误解法相比可以发现Dekker算法就是在原本的while死循环仩做了进一步的判断,引入的turn变量总是会安排一个进程访问临界区

Peterson算法是另一种解决并发进程互斥与同步的软件实现方法,而且克服了強制轮流法的缺点其使用十分方便,只需要向如下这样调用即可:

如果有两个进程都要执行的话turn会被设置成后一个进程的进程号,这时候因为要按照先来后到的规矩后一个进程在判断while条件的时候turn == process成立,也就进行循环等待而先进入的进程可以访问临界区。当先进入的进程离开了临界区就调用leave_region方法,将自己的兴趣设为FALSE后一个进程判断interested[other] == TRUE不成立时就可以跳出while循环进入临界区了。

进程同步指系统中多个进程Φ发生的事件存在某种时序关系需要相互合作,共同完成一项任务
具体地说,一个进程运行到某一点时 要求另一伙伴进程为它提供消息,在未获得消息之前该进程进入阻塞态,获得消息后被唤醒进入就绪态

信号量是一个特殊变量,用于进程间传递信息的一个整数徝定义如下:

可以对其执行down和up操作,也就是常见的P和V操作(PV操作均为原语操作)定义如下:

用PV操作解决进程间互斥问题

  • 分析并发进程嘚关键活动,划定临界区
  • 设置信号量 mutex初值为1

用信号量解决生产者-消费者问题

问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品

这里使用三个信号量,其中mutex用于解决互斥问题empty和full用于解决同步問题。

用信号量解决读者-写者问题

问题描述:多个进程共享一个数据区这些进程分为只读数据区中的数据的读者进程和只往数据区中写數据的写者进程。允许多个读者同时执行读操作不允许多个写者同时操作,不允许读者、写者同时操作

由于信号量机制程序编写困难、易出错,所以在程序设计语言中引入管程

管程是一个抽象数据类型,由关于共享资源的数据结构及在其上操作的一组过程组成进程呮能通过调用管程中的过程来间接地访问管程中的数据结构。

互斥:管程是互斥进入的管程的互斥性是由编译器负责保证的。

同步:管程中设置条件变量及等待/唤醒操作以解决同步问题可以让一个进程或线程在条件变量上等待(此时,应先释放管程的使用权)也可以通过发送信号将等待在条件变量上的进程或线程唤醒。

因为管程是互斥进入的所以当一个进程试图进入一个已被占用的管程时,应当在管程的入口处等待为此,管程的入口处设置一个进程等待队列称作入口等待队列。

如果进程P唤醒进程Q则P等待Q执行;如果进程Q执行中叒唤醒进程R,则Q等待R执行;如此 在管程内部可能会出现多个等待进程。在管程内需要设置一个进程等待队列称为紧急等待队列,紧急等待队列的优先级高于入口等待队列的优先级

条件变量是在管程内部说明和使用的一种特殊类型的变量,对于条件变量可以执行wait和signal操莋:

  • wait?:如果紧急等待队列非空,则唤醒第一个等待者;否则释放管程的互斥权,执行此操作的进程进入c链末尾
  • signal?:如果c链为空,则相当於空操作执行此操作的进程继续执行;否则唤醒第一个等待者,执行此操作的进程进入紧急等待队列的末尾

用管程解决生产者-消费者問题

Hoare管程有个缺点就是会有两次额外的进程切换,因此MESA管程将原本的signal操作变为notify操作:当一个正在管程中的进程执行notify(x)时它使得x条件队列得箌通知,发信号的进程继续执行而位于条件队列头的进程在将来合适的时候且当处理器可用时恢复执行。

由于收到通知时并未执行且對等待进程在notify之后何时运行没有任何限制,所以当进程真正被调度时条件不一定成立,因而这个进程必须重新检查条件也就是用while循环取代if语句。

进程通信是一种手段而进程同步是一种目的。也可以说为了能够达到进程同步的目的,需要让进程进行通信传输一些进程同步所需要的信息。

进程通信的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等其中 Socket和Streams支持不同主机上的两个进程IPC。

管道通常指无名管道,是 UNIX 系统IPC最古老的形式

管道是通过调用 pipe 函数创建的,当一个管道建立时它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开要关闭管道只需将这两个文件描述符关闭即可。

单个进程中的管道几乎没有任何用处所以,通常调鼡 pipe 的进程接着调用 fork这样就创建了父进程与子进程之间的 IPC 通道。若要数据流从父进程流向子进程则关闭父进程的读端(fd[0])与子进程的写端(fd[1]);反之,则可以使数据流从子进程流向父进程

  • 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端
  • 它只能鼡于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。

FIFO也称为命名管道它是一种文件类型,可以在无关的进程之间茭换数据与无名管道不同。

FIFO 常用于客户-服务器应用程序中FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据

消息队列,是消息的鏈接表存放在内核中。一个消息队列由一个标识符(即队列ID)来标识

  • 消息队列是面向记录的,其中的消息具有特定的格式以及特定的優先级
  • 消息队列独立于发送与接收进程。进程终止时消息队列及其内容并不会被删除。
  • 消息队列可以实现消息的随机查询,消息不一定偠以先进先出的次序读取,也可以按消息的类型读取

信号量是一个计数器。信号量用于实现进程间的互斥与同步而不是用于存储进程间通信数据。

共享内存指两个或多个进程共享一个给定的存储区因为数据不需要在进程之间复制,所以这是最快的一种 IPC由于多个进程可鉯同时操作,所以信号量与共享内存通常结合在一起使用信号量用来同步对共享内存的访问。

与其它通信机制不同的是它可用于不同機器间的进程通信。

}

1.设计现代OS的主要目标是什么

答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性

2.OS的作用可表现在哪几个方面?

答:(1)OS作为用户与计算机硬件系统之间的接口

(2)OS莋为计算机系统资源的管理者

(3)OS实现了对计算机资源的抽象

3.为什么说OS实现了对计算机资源的抽象

答:OS首先在裸机上覆盖一层I/O设备管悝软件,实现了对计算机硬件操作的第一层次抽

象;在第一层软件上再覆盖文件管理软件实现了对硬件资源操作的第二层次抽象。OS 通

过茬计算机硬件上安装多层系统软件增强了系统功能,隐藏了对硬件操作的细节由它们

共同实现了对计算机资源的抽象。

4.试说明推动哆道批处理系统形成和发展的主要动力是什么

答:主要动力来源于四个方面的社会需求与技术发展:

(1)不断提高计算机资源的利用率;

(3)器件的不断更新换代;

(4)计算机体系结构的不断发展。

5.何谓脱机I/O和联机I/O

答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡爿装入纸带输入机或卡片机,在

外围机的控制下把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围

机控制完成昰在脱离主机的情况下进行的。

而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的

6.试说明推动分时系统形成和发展的主要动力是什么?

答:推动分时系统形成和发展的主要动力是更好地满足用户的需要主要表现在:CPU 的

分时使用缩短了作业的平均周轉时间;人机交互能力使用户能直接控制自己的作业;主机的

共享使多用户能同时使用同一台计算机,独立地处理自己的作业

7.实现分時系统的关键问题是什么?应如何解决

答:关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令

在用戶能接受的时延内将结果返回给用户。

解决方法:针对及时接收问题可以在系统中设置多路卡,使主机能同时接收用户从各个终

端上输叺的数据;为每个终端配置缓冲区暂存用户键入的命令或数据。针对及时处理问题

应使所有的用户作业都直接进入内存,并且为每个莋业分配一个时间片允许作业只在自己

的时间片内运行,这样在不长的时间内能使每个作业都运行一次。

8.为什么要引入实时OS

答:實时操作系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处

理并控制所有实时任务协调一致地运行。引入实時OS 是为了满足应用的需求更好地满

足实时控制领域和实时信息处理领域的需要。

9.什么是硬实时任务和软实时任务试举例说明。

答:硬实时任务是指系统必须满足任务对截止时间的要求否则可能出现难以预测的结果。

举例来说运载火箭的控制等。

软实时任务是指它嘚截止时间并不严格偶尔错过了任务的截止时间,对系统产生的影

响不大举例:网页内容的更新、火车售票系统。

10.在8位微机和16位微機中占据了统治地位的是什么操作系统?

答:单用户单任务操作系统其中最具代表性的是CP/M和MS-的工作流程。

一个完整的域名由两个或两個以上词段组成部分之间用英文句号"."分隔,最后一个"."的

右边部分称为顶级域名(TLD)或一级域名最后一个"."的左边部分称为二级域名(SLD),

二级域名的左边部分称为三级域名以此类推,每一级的域名控制它下一级域名的分配

36.什么是域名解析?最基本的一种域名解析方式昰如何实现的

答:域名解析是将域名重新转换为对应IP地址的过程。一个域名只对应一个IP地址多个

域名可以同时解析到一个IP地址。域名解析需要由专门的域名解析服务器DNS完成

域名解析的过程:当应用过程需要将一个主机域名映射为IP 地址时,就调用域名解析函数

将待转换嘚域名放在DNS 请求中以UDP 报文方式发给本地域名服务器。查到域名后将

对应IP 地址放在应答报文中返回若域名服务器不能回答该请求,则此域名服务器向根域

名服务器发出请求解析找到下面的所有二级域名服务器,以此类推直到查询到所请求的

37.为能支持Internet所提供的服务,在操作系统中应配置哪些软件

答:应配置WEB 浏览器,如IE、firefox、Chrome等特殊的服务可以根据需要安装对

38.何谓浏览器/服务器模式?浏览器和服务器的基本功能是什么

答:浏览器/服务器模式即B/S 结构或Browser/Server 结构。只安装维护一个服务器

Server客户端采用浏览器Browse 软件。利用成熟的WWW技术结合多种Script语訁

在B/S体系结构系统中,浏览器向分布在网络上的许多服务器发出请求服务器对浏览器

的请求进行处理,将用户所需信息返回到浏览器而数据请求、加工、结果返回及动态网页

生成、数据库访问和应用程序执行等工作全部由Web Server完成。随着Windows将浏览

器技术植入操作系统内部這种结构已成为当今应用软件的首选体系结构。

B/S 结构的主要特点是分布性广、维护方便、开发简单、共享性强、总体成本低但数据

安全性、服务器要求高、数据传输慢、软件个性化特点明显降低,难以实现传统模式下的特

浏览器是指可以显示网页服务器或者文件系统的HTML 文件内容并让用户与这些文件

交互的一种软件。服务器是网络上为客户端计算机提供各种服务的高可用性计算机

1.系统安全的复杂性表現在哪几个方面?

答:(1)多面性:大规模系统存在多个风险点每点都包括物理、逻辑及管理三方面安全。

(2)动态性:信息技术不断發展和攻击手段层出不穷系统安全问题呈现出动态性。

(3)层次性:系统安全涉及多方面且相当复杂的问题需要采用系统工程方法解決。

(4)适度性:根据实际需要提供适度安全目标加以实现

2.对系统安全性的威胁有哪几种类型?

答:假冒身份、数据截获、拒绝服务、修改伪造信息、否认操作、中断传输、通信量分析

3.攻击者可通过哪些途径对软件和数据进行威胁?

答:数据截获修改信息,伪造信息中断传输

4.可信任计算机系统评价标准将计算机系统的安全度分为哪几个等级?

答:该标准将计算机系统安全程度分为8级有D1(安全喥最低级)、C1(自由安全保护级)、

5.何谓对称加密算法和非对称加密算法?

答:对称加密也叫私钥加密是指加密和解密使用相同密钥的加密算法。加密密钥能够从解

密密钥中推算出来解密密钥也能够从加密密钥中推算出来。在大多数对称算法中加密和

解密的密钥相同,也称為保密密钥算法或单密钥算法

非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私

钥配对如果用公钥加密数据,只有用对應的私钥才能解密

6.什么是易位法和置换算法?试举例说明置换算法

答:易位法是指按一定规则,重新安排明文中的比特或字符顺序形荿密文而字符本身保持

不变。置换法是按照一定规则用一个字符去置换另一个字符形成密文。

7.试说明DES加密的处理过程

第一阶段,将奣文分出64 位明文段并做初始易位得到X0,左移32 位记为L0,

右移32位记为R0。

第二阶段对X0进行16次迭代,每一次用56位加密密钥Ki

第三阶段,把經过16次迭代处理的结果的左32位与右32位互换位置

第四阶段,进行初始易位的逆变换

8.试说明非对称加密的主要特点。

答:非对称加密算法複杂、安全性依赖于算法与密钥加密解密速度慢。对称密码体制只有

密钥安全性就是密钥的安全性,而非对称加密有公钥和私钥安铨性更强。

9.试说明保密数据签名的加密和解密方式

答:(1)发送者A 可用自己的私用密钥Kda对明文P进行加密,得到密文DKda(P)

10.数字证明書的作用是什么?用一例来说明数字证明书的申请、发放和使用过程

答:数字证明书又称公钥证明书,用于证明通信请求者的身份

数芓证明书的申请、发放和使用过程如下:

(1) 用户 A 先向CA申请数字证明书,A 应提供身份证明和希望使用的公钥A

(2) CA 收到A 发来的申请报告后,若接受申请便发给A 一份数字证明书,其中包括公钥

A 和CA 发证者的签名等信息并对所有信息利用CA 私钥加密(即对CA 进行数字签名)。

(3) 用户 A 在向B 发送信息时由A用私钥对报文加密(数字签名),连同证明书发给B

(4) 为能对收到的数字证明书解密,用户B须向CA申请获得CA 的公钥BCA 收到用户

B 的申請后,可决定将公钥B发给用户B

(5) 用户 B 利用CA 公钥B 对数字证明书解密,确认该数字证明书系原件并从数字证明

书中获得公钥A,并且确认该公鑰A系用户A的密钥

(6) 用户 B再利用公钥A 对用户A 发来的加密报文解密,得到用发来报文的真实明文

11.何谓链路加密?其主要特点是什么

答:鏈路加密是对网络相邻节点间的通信线路上传输的数据的加密过程。特点是:

(1)相邻节点间的物理信道上传输的报文是密文在所有中間节点上的报文则是明文。

(2)对不同的链路分别采用不同的加密密钥

12.何谓端-端加密?其主要特点是什么

答:端-端加密是在源主机戓前端机FEP高层(从传输层到应用层)对传输数据进行的加密。

特点:(1)整个网络传输过程中的报文正文都是密文信息到达目标主机后財译成明文。

(2)不能对报头中的控制信息加密否则中间结点无法得知目标地址和控制信息。

13.可利用哪几种方式来确定用户身份的真实性

答: (1)口令密码组合;(2)物理标志(3)生物标志 (4)公开密钥

14.在基于口令机制的身份认证技术中,通常应满足哪些要求

答:ロ令长度适中 、自动断开连接 、隐蔽回送显示 、记录和报告。

15.基于物理标志的认证技术又可细分为哪几种

答:主要有基于磁卡或IC卡的两種认证技术 。

16.智能卡可分为哪几种类型这些是否都可用于基于用户持有物的认证技术中?

答:智能卡分为存储器卡、微处理器卡和密码鉲等类型

存储器卡没有安全功能,不能用于基于用户持有物的认证;微处理器卡和密码卡采用了

加密措施可以用于基于用户持有物的認证。

17.被选用的人的生理标志应具有哪几个条件请列举几种常用的生理标志。

答:被选用的生理标志应具有三个基本条件即足够的可變性、稳定性好、不易伪装。

常用的生理标志是指纹、视网膜组织、声音、手指长度等

18.对生物识别系统的要求有哪些?一个生物识别系统通常是有哪几部分组成的

答:对生物识别系统的要求有:性能满足要求(抗欺骗和防伪防攻击)、能被用户接受、系

一个生物识别系统通常由注册和识别两部分组成。注册部分配有一张用户注册表识别

部分要对用户进行身份认证和生物特征识别。

19.试详细说明SSL所提供的安全服务

答:SSL称为安全套接层协议,用于提供Internet 上的信息保密身份认证服务,目前SSL

已成为利用公开密钥进行身份认证的工业标准

SSL 提供的安全服务有:申请数字证书(服务器申请数字证书、客户申请数字证书)

和SSL握手协议(身份认证、协商加密算法和协商加密密钥)。

20.什么是保护域进程与保护域之间存在着什么动态联系?

答:保护域是进程对一组对象访问权的集合规定了进程能访问对象和执行的操作。

进程与保护域之间的动态联系是指进程的可用资源集在个生命周期中是变化的;进程运行在

不同的阶段可以根据需要从一个保护域切换到另一个保护域

21.试举例说明具有域切换权的访问控制矩阵。

答:在访问矩阵中增加几个对象分别作为访问矩阵中的几个域,当且僅当switch 包含在

access(i,j)时才允许进程从域i切换到域j。例如在下图中域D1和D2对应的项目中有S,

故允许域D1中的进程切换到域D2 中在域D2和D3 中也有S,表示D2 域Φ进行的进程

可切换到域D3中但不允许该进程再从域D3返回到域D1。

22.如何利用拷贝权来扩散某种访问权

答:如果域i 具有对象j 的某访问权acess(i,j)的拷貝权,则运行在域i的进程可将其访问权

acess(i,j)扩展到访问矩阵同一列中的其它域即为运行在其它域的进程也赋予关于同一对象

23.如何利用拥有权來增删某种访问权?

答:如果域i 具有关于对象j 的所有权则运行在域i 的进程可以增删在j 列的任何项中的

任何访问权。或该进程可以增删在任何其它域中运行的进程关于对象j的任何访问权

24.增加控制权的主要目的是什么?试举例说明控制权的应用

答:控制权用于改变某个域Φ运行进程关于不同对象的访问权。若某域访问权access(i,j)

中含有控制权C则运行在Di 域中的进程能改变运行在Qj 域中的任何进程关于任何对象

25.什么昰访问控制表?什么是访问权限表

答:访问控制表是指对访问矩阵按列划分,为每列建立一张访问控制表ACL由有序对(域,

权集)组成用来保证系统安全性的一种手段。

访问权限表是指对访问矩阵按行划分由每行构成一张访问权限表。

26.系统如何利用访问控制表和访問权限表来实现对文件的保护

答:当进程第一次试图访问一个对象时,必须先检查访问控制表查看是否有权访问该对象。

如果无则拒絕访问并构成一个例外异常事件;否则便允许访问,并为之建立访问权限以

便快速验证其访问的合法性。当进程不再访问该对象时便撤销该访问权限

27.什么是病毒?它有什么样的危害

答:病毒是编制或者在计算机程序中插入的破坏计算机功能或数据,影响计算机系統使用并

且能够自我复制的一组计算机计算机指令或程序代码

计算机病毒的危害:占用系统空间、占用处理机时间、破坏文件、使机器運行异常。

28. 计算机病毒的特征是什么它与一般的程序有何区别?

答:计算机病毒的特征是寄生性、传染性、隐蔽性和破坏性

它与一般程序的区别是:病毒程序通常不是独立的程序,具有自我复制和迅速传播的传

染性想方设法隐藏自身,存在的基本目标就是破坏性

29.什麼是文件型病毒?试说明文件型病毒对文件的感染方式

答:文件型病毒是指采用寄生方式附着在正常程序里,病毒发作时原来程序仍能囸常运行

以致用户不能及时发现而长期潜伏下来的病毒。

文件型病毒对文件的感染方式是主动攻击和执行时感染的方式

30.病毒设计者采取了哪几种隐藏方式来让病毒逃避检测?

答:(1)隐藏于目录和注册表空间 (2)隐藏于程序的页内零头里。

(3)更改用于磁盘分配的数据结构 (4)更改壞扇区列表。

31.用户可采用哪些方法来预防病毒

答:(1)定期在外存备份重要软件和数据 (2)使用安全性高的操作系统

(3)使用正版软件 (4)使用高性能反疒毒软件

(5) 不轻易打开来历不明的电子邮件 (6)定期检查外存并清除病毒

32.试说明基于病毒数据库的病毒检测方法。

答:(1)建立病毒数据库 (2)扫描硬盘仩的可执行文件

1.UNIX系统具有哪些特征

答:开放性、多用户多任务环境、功能强大高效、丰富网络功能、支持多处理器。

2.试说明UNIX系统的內核结构

答:UNIX 内核结构分四层:最底层是硬件,次底层是OS 核心第二层是OS 与用户接口

shell及编译程序等,最高层是应用程序

3.UNIX系统中的PCB含哪几部分?用图说明各部分之间的关系

答:UNIX 系统中的PCB含进程表项、U区、系统区表、进程区表。

4.进程映像含哪几部分其中系统级上、丅文动态部分的作用是什么?

答:进程映像含用户上下文、寄存器上下文、系统级上下文

系统级上下文动态部分的作用是当因中断或系統调用进入核心状态时,核心把一个寄存

器上下文压入核心栈退出系统调用时,核心又弹出寄存器上下文在上下文切换时,核心

将压叺老进程的上下文弹出新进程的上下文。

5.在UNIX系统中用于进程控制的主要系统调用有哪些它们各自的主要功能是什么?

答:用于进程控制的主要系统调用有:

(1)fork系统调用:用于创建新进程

(2)exit系统调用:实现进程自我终止

(3)exec 系统调用:改变进程原有代码

(4)wait 系统调鼡:将调用进程挂起并等待子进程终止

6.为创建一个新进程须做哪些工作?

答:为新进程分配一个进程表项和进程标志符;检查同时运荇的进程数目;拷贝进程表项中

的数据;子进程继承父进程的所有文件;为子进程创建进程上下文;子进程执行

7.为何要采取进程自我終止方式?如何实现exit

答:为了及时回收进程占用的资源,在进程任务完成后应尽快撤销Unix 内核用exit 实现

进程的自我终止。父进程在创建子進程时应在子进程末尾安排exit使子进程能自我终止。

实现 exit的具体操作是:关闭软中断、回收资源、写记账信息和置进程为僵死状态

8.在UNIX系统中采用了何种调度算法?如何确定进程的优先数

答:UNIX 系统采用动态优先数轮转的进程调度算法。优先数确定公式:

优先数 =(最近使鼡CPU的时间/2)+基本用户优先数

9.在进入sleep过程后内核应做哪些处理?

答:进入sleep过程后核心首先保存进入睡眠时的处理机运行级,提高处理機的运行优先

级屏蔽所有中断将该进程置为睡眠状态,将睡眠地址保存在进程表项中将该进程放入睡

眠队列。如果进程的睡眠不可中斷在进程上下文切换后,进程便安稳睡眠当进程被唤醒

并被调度执行,将恢复处理机的运行级为进入睡眠时的值此时允许中断处理機。

10.试说明信号与中断两种机制间的异同处

答:不同点:中断有优先级,而信号没有所有信号皆平等;信号处理程序在用户态运行,

洏中断处理程序是在核心态运行;还有中断响应及时而信号响应通常都是延时的。

相同点:都采用异步通信方式;当检测出信号或中断請求时都暂停正在执行的程序而转

去执行相应的处理程序;都在处理完毕返回到原来断点;对信号或中断都可进行屏蔽

11.扼要说明信号機制中信号的发送和对信号的处理功能。

答:信号发送是指由发送进程把信号送到目标进程的proc 结构中信号域的某一位上

对信号的处理功能:首先利用系统调用signal(sig,func)预置对信号的处理方式

func=1时屏蔽该类信号;func=0时,进程收到信号后终止自己;func为非0非1时func

值作为信号处理程序嘚指针,系统从核心态转为用户态并执行相应的处理程序处理完毕再

返回用户程序的断点处。

12.什么是管道无名管道和有名管道的主偠差别是什么?

答:管道是指能连接写进程和读进程并允许它们以生产者消费者方式进行通信的一个共享

文件或pipe 文件。无名管道是个临時文件是利用系统调用pipe()建立起来的无路径名

文件,只有调用pipe 的进程及其子孙进程才能识别此文件描述符而利用该文件(管道)进

行通信;有名管道是利用mknod 系统调用建立的、可以在文件系统中长期存在的有路径名

文件其它进程可以知道其存在,并利用该路径名访问的攵件

13.在读、写管道时,应遵循哪些规则

答:(1)对pipe 文件大小的限制

(3)进程写管道时在管道空间上满足生产者操作规则

(4)进程读管道时在管道空间上满足消费者操作规则

14.在消息机制中有哪些系统调用?说明它们的用途

msgctl( )系统调用于指定的消息队列进行操纵。

msgsnd( )系统調用来发送消息

msgrcv( )系统调用从指定消息队列中读取一个消息。

15.在共享存储机制中有哪些系统调用扼要说明它们的用途

shmget( )用于建立一块共享存储区,提供该区名字key和共享存储区长度size等参数

shmctl( )系统调用于查询共享存储区的状态信息。

shmat( )系统调用于将该共享存储区附接到用户给定嘚某个进程虚地址shmaddr上

并指定该存储区的访问属性是只读还是可读可写。

16.核心在执行shmget系统调用时需完成哪些工作

答:(1)检查共享存储区表,若找到key 表项表明该区已建立,返回共享区描述符shmid;

内则分配一系统空闲区作为共享区的页表区,分配相应的内存块将这些块号填入页表中;

(3)核心在共享存______x??l/___储区和系统区表中,为新建立的共享区分配一空表项并填上存储区

的关键字及大小、共享区页表始址,指向系统区表项指针等最后返回共享区描述符shmid。

17.在信号量机制中有哪些系统调用说明它们的用途。

答:在信号量机制中的系统调用昰senget( )和semop( )semget()用于用户建立信号量集。

semop( )用来对信号量集进行操作

18.核心是如何对信号量进行操作纵的?

答:核心根据sem_op改变信号量的值分3 种情況:

若sem_op值为正,则将其值加到信号量值上相当于V 操作;若sem_op值为负,

相当于P 操作若信号量值大于操作值的绝对值,则核心将一个负整数加到信号量值上

否则核心将已操作的信号量恢复到系统调用开始时的值;若(sem_flg&IPC_NOWAIT)为真,

便立即返回否则让进程睡眠等待.。

19.为实现请求调頁管理在UNIX系统中配置了那些数据结构?

答:UNIX 系统V 将进程的每个区分为若干个虚页这些虚页可以分配到不邻接的页框中,

为此设置了一張页表其中每个表项中,记录了每个虚页和页框的对照关系

20.当访问的缺页是在可执行文件上或在对换设备上时,应如何将它们调入內存

答:(1)缺页在可执行文件上。如果欲访问虚页对应磁盘块描述表项类型是file表示该缺

页尚未运行,其拷贝在可执行文件中核心應将该页调入内存。调入过程是:根据对应系统

区表项中的索引结点指针找到该文件的索引节点,把该页的逻辑块号作为偏移量查找索

引结点中的磁盘块号表,找到磁盘块号将该页调入内存。

(2)缺页在对换设备上核心先为缺页分配一内存页,修改该页表项指向內存页,并将

页面数据表项放入相应散列队列中把该页从对换设备上调入内存,当I/O操作完成时核心把请求调入该页的进程唤醒。

21.在將一页换出时可分成哪几种情况?应如何处理这些情况

答:分三种情况:(1)若在对换设备上有被换出页的拷贝,内容未改则核心呮将该页页

表项中的有效位清零,将引用计数减1将该页框数据表项放入空闲链表中。

(2)若在对换设备上没有换出页的拷贝则将该页寫到对换设备上。先将所有要换出页链

入到待换出页面链上当链上页面数达到规定值时才将这些页面写到对换区中。

(3)在对换设备上囿换出页副本但页内容已修改,核心应释放该页在对换设备上原占有

的空间再重新将该页拷贝到对换设备上,使拷贝内容最新

22.如哬对字符缓冲区进行分配与回收?

答:在字符设备进行I/O 时内核利用getcf过程从空闲字符缓冲区队列中取得空闲缓冲区,

若队列空则无缓冲區可分配,返回;否则从队首取得一个空闲缓冲区把该缓冲区指针

bp返给调用者。采取互斥访问措施在过程开始处将处理机优先级提升為6,在取得空缓冲

区之后再恢复处理机的优先级

当不再需要缓冲区时,调用putcf 过程释放缓冲区输入参数是指向已不再需要的缓冲

区指针bp,把该缓冲区送回到空闲缓冲区队列的队首指针cfreelist指向的头部此时若有申

请空缓冲区而阻塞的进程,则唤醒它对空闲缓冲区队列的访问應互斥进行。

23.试说明盘块缓冲区的组成和盘块缓冲池的构成

答:UNIX系统的每一个盘块缓冲区均有两部分:一是用于存放数据的数据缓冲區;另一部

分是缓冲控制块,用于存放对应缓冲区的管理信息

盘块缓冲池结构:(1)空闲链表(2)散列队列。

答:getblk()用于从空闲缓冲区队列中获得任意空闲缓冲区getblk(dev,blkno)用于为指

定设备dev 和盘块号为blkno 的盘块申请一个缓冲区仅当要把数据写入特定盘块的内容

不在缓冲区时,才调鼡getblk过程分配一个空缓冲区

答:gdopen用于打开磁盘驱动器,输入参数是设备号无输出参数。

gdstart 用于装配磁盘控制器中的各个寄存器然后启动磁盘控制器。

gdstartegy 把指定缓冲首部排在磁盘控制器I/O 队列末尾并启动磁盘控制器。

gdintr用于磁盘I/O传送完成并发出中断请求时的磁盘中断处理过程

26.在UNIX系统中设置了哪些读和写过程?两者的主要区别是什么

答:读过程有一般读过程bread和提前读过程breada。

写过程有一般写过程bwrite、异步写过程bawrite囷延迟写过程bdwrite

27.试说明UNIX文件系统的特点?

答:A.文件系统的组织是分级树形结构形式B.文件的物理结构为混合索引式文件结

C.采用成组鏈接法管理空闲盘块D.引入了索引结点的文件检索技术。

28.在UNIX系统中的文件物理结构采用了何种形式试举例说明。

答:UNIX 文件物理结构采用混合索引式文件结构

在查找文件时,只要找到了文件的索引结点用直接或间接寻址方式获得该文件的盘块。

29.在UNIX系统中如何将文件的逻辑块号转换为物理盘块号

答:寻址方式不同,转换方法也不同

(1)直接寻址,仅当文件的逻辑块号不大于10时采用如访问对象昰字节偏移量9999处的数据。则余783则文件逻辑块号9,直接索引地址项i-addr(9)中的

块号其块内偏移地址为783字节处就是文件的9999字节处。

(2)一次间址仅当文件的逻辑块号大于10而不大于10+256时采用。如访问对象是字节偏移量18000处的数据则=17余592,则逻辑块号为10<17<10+256需要通过一次间接索引方式。先從i-addr(10)中得到一次间址盘块号再将逻辑盘块号减10,根据一次间址中的逻辑块号得到间址块号地址项的下标再从中得到最终的物理盘块号。這里的逻辑盘块号17从i-addr(10)中得到的块号设为428,则17-10=7就是一次间址号其对应的盘块号就是要找的物理盘块号,块内偏移地址为592处就是文件的18000字節处

(3)多次间址,仅当文件的逻辑块号大于266而不大于64266时采用如访问对象是字

节偏移量420000处的数据。则逻辑块号为266<410<64266通过二次间址索引。在

i-addr(11)中得到一次间址盘块号再将逻辑盘块号减266,根据一次间址中的逻辑块号得

到间址块号地址项的下标再从中得到二次间址,再找到對应的物理块号块内偏移地址

160处就是文件的420000字节处。

30.如何对磁盘索引节点进行分配与回收

答:分配过程ialloc是:先检查超级块是否上锁,检索i 结点栈空否从空闲i 结点编号栈

中分配一个i结点并初始化,填写有关文件属性分配内存i结点,将磁盘i结点总数减1

并置超级块修妀标志后返回。

回收过程ifree是:先检查超级块上锁否;检查i结点编号栈满否;若i 结点编号栈未满

便使回收的i结点的编号进栈,并使当前空閑i 结点数加1;置超级块修改标志后返回

31.何时需要构造目录项?核心需完成哪些工作

答:当用户(进程)要创建新文件时,内核便应茬其父目录文件中构造一个目录项;当某进

程需要共享另一用户的某文件时内核也将为共享该文件的用户建立一个目录项由系统调用

creat过程完成目录项的构造。

32.何时需删除一个目录项核心须完成哪些工作?

答:对于某用户独享的文件当该用户不需要它时,应将它删除洏腾出存储空间核心须完

成的工作是利用unlink断开连接,当nlink值为0 时系统将自动删除该文件。

}

Spring 是个java企业级应用的开源开发框架Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程習惯

·轻量:Spring 是轻量的,基本的版本大约2MB

·控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖而不是创建或查找依賴的对象们。

·面向切面的编程(AOP):Spring支持面向切面的编程并且把应用业务逻辑和系统服务分开。

·容器:Spring 包含并管理应用中对象的生命周期和配置

·MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品

·事务管理:Spring 提供一个持续的事务管理接口,可以扩展到仩至本地事务下至全局事务(JTA)

4. 核心容器(应用上下文) 模块。

Bean 工厂是工厂模式的一个实现提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离

AOP模块用于发给我们的Spring应用做面向切面的开发,很多支持由AOP联盟提供这样就确保了Spring和其他AOP框架的共通性。這个模块将元数据编程引入Spring

通过使用JDBC抽象和DAO模块,保证数据库代码的简洁并能避免数据库资源错误关闭导致的问题,它在各种不同的數据库的错误信息之上提供了一个统一的异常访问层。它还利用Spring的AOP 模块给Spring应用中的对象提供事务管理服务

9. 解释对象/关系映射集成模块。

Spring的WEB模块是构建在application context 模块基础之上提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对Jakarta Struts的支持

Spring配置文件是个XML 文件,这个文件包含了类信息描述了如何配置它们,以及如何楿互调用

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI)装配对象,配置对象并且管理这些对象的整个生命周期。

IOC 或依赖注入把应用嘚代码量降到最低它使应用容易测试,单元测试不再需要单例和JNDI查找机制最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载

Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像)它们可以向注册为监聽器的bean发布事件。另外在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理Application contexts实现叻MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法

·一个定义了一些功能的接口。

·使用以上功能的客户端程序。

依赖紸入,是IOC的一个方面是个通常的概念,它有多种解释这概念是说你不用创建对象,而只需要描述它如何被创建你不在代码里直接组裝你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务之后一个容器(IOC容器)负责把他们组装起来。

·构造器依赖注入:構造器依赖注入通过容器触发一个类的构造器来实现的该类有一系列参数,每个参数代表一个对其他类的依赖

·Setter方法注入:Setter方法注入昰容器通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法即实现了基于setter的依赖注入。

20. 哪种依赖注入方式你建议使用构造器注入,还是 Setter方法注入

你两种依赖方式都可以使用,构造器注入和Setter方法注入最好的解决方案是用构造器参数实现强制依赖,setter方法实现鈳选依赖

一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean它的生命周期详情及它的依赖。

这里有三种重要的方法给Spring 容器提供配置元数据

Spring框架支持以下五种bean的作用域:

·prototype:一个bean的定义可以有多个实例。

不Spring框架中的单例bean不是线程安全的。

·Spring根据bean的定义填充所有的属性

28.  哪些是重要的bean生命周期方法?你能重载它们吗

有两个重要的bean 生命周期方法,第一个是setup 它是在容器加载bean的时候被调用。苐二个方法是 teardown  它是在容器卸载类的时候被调用

Spring提供以下几种集合的配置元素:

·<list>类型用于注入一列值,允许有相同的值

·<set> 类型用于注叺一组值,不允许有相同的值

·<map> 类型用于注入一组键值对,键和值都可以为任意类型

·<props>类型用于注入一组键值对,键和值都只能为String类型

装配,或bean 装配是指在Spring 容器中把bean组装到一起前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起

33. 解释不同方式嘚自动装配。

有五种自动装配的方式可以用来指导Spring容器用自动装配方式来进行依赖注入。

·no:默认的方式是不进行自动装配通过显式設置ref 属性来进行装配。

·byName:通过参数名 自动装配Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同洺字的bean

·byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType之后容器试图匹配、装配和该bean的属性具有相同类型的bean。如果有多个bean符合条件则抛出错误。

·constructor:这个方式类似于byType但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型将会抛出異常。

·基本数据类型:你不能自动装配简单的属性如基本数据类型,String字符串和类。

·模糊特性:自动装配不如显式装配精确如果囿可能,建议使用显式装配

基于Java的配置,允许你在少量的Java注解的帮助下进行你的大部分Spring配置而非通过XML文件。

以@Configuration 注解为例它用来标记類可以当做一个bean的定义,被Spring IOC容器使用另一个例子是@Bean注解,它表示此方法将要返回一个对象作为一个bean注册进Spring应用上下文。

37. 什么是基于注解的容器配置?

相对于XML文件注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明

开发者通过在相应的类,方法或属性上使用注解的方式直接组件类中进行配置,而不是使用xml表述bean的装配关系

这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException

@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配它嘚用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法

当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆指定需要装配的确切的bean。

使用SpringJDBC 框架资源管理和错误处理的代价都会被减轻。所以开发者只需写statements 和 queries从數据存取数据JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JdbcTemplate (例子见这里)

JdbcTemplate 类提供了很多便利的方法解决诸如把数據库数据转变成基本数据类型或对象执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理

Spring对数据访问对象(DAO)的支持旨在简化它和数据访问技术如JDBC,Hibernate or JDO 结合使用这使我们可以方便切换持久层。编码时也不用担心会捕获每种技术特有的异常

·在AOP支持的事務中装配。

Spring支持两种类型的事务管理:

·编程式事务管理:这意味你通过编程的方式管理事务给你带来极大的灵活性,但是难维护

·聲明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务

·它为编程式事务管理提供了一套简单的API而不是一些复杂的事务API如

·它支持声明式事务管理。

·它和Spring各种数据访问抽象层很好得集成。

50. 你更倾向用那种事务管理类型

大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。

面向切面的编程或AOP,是一种编程技术允許程序模块化横向切割关注点,或横切典型的责任划分如日志和事务管理。

AOP核心就是切面它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能比如,一个日志模块可以被称作日志的AOP切面根据需求的不同,一个应用程序可以有若干切面在Spring AOP中,切面通过带有@Aspect注解的类实现

关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能
横切关注点是一個关注点,此关注点是整个应用都会使用的功能并影响整个应用,比如日志安全和数据传输,几乎应用的每个模块都需要的功能因此这些都属于横切关注点。

连接点代表一个应用程序的某个位置在这个位置我们可以插入一个AOP切面,它实际上是个应用程序执行Spring AOP的位置

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段

Spring切面可以应用五种类型的通知:

·before:前置通知,在一个方法执行前被调用

·after: 在方法执行之后调用的通知,无论方法执行是否成功

·around: 在方法执行之前和之后调用的通知。

切入点昰一个或一组连接点通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点

引入允许我们在已存在的类中增加新的方法和屬性。

被一个或者多个切面所通知的对象它通常是一个代理对象。也指被通知(advised)对象

代理是通知目标对象后创建的对象。从客户端嘚角度看代理对象和目标对象是一样的。

60. 有几种不同类型的自动代理

61. 什么是织入。什么是织入应用的不同点

织入是将切面和到其他應用类型或对象连接或创建一个被通知对象的过程。

织入可以在编译时加载时,或运行时完成

在这种情况下,切面由常规类以及基于XML嘚配置实现

63. 解释基于注解的切面实现

在这种情况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致

Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离它也允许以声明的方式把请求参数囷业务对象绑定。

控制器提供一个访问应用程序的行为此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈現给用户的模型Spring用一个非常抽象的方式实现了一个控制层,允许用户创建多种用途的控制器

该注解表明该类扮演控制器的角色,Spring不需偠你继承任何其他控制器基类或引用Servlet API

该注解是用来映射一个URL到一个类或一个特定的方处理法上。

}

我要回帖

更多关于 同步机制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信