第二章多线程分布式计算课后答案

合集下载

计算机操作系统第二章课后答案(完整版)

计算机操作系统第二章课后答案(完整版)

第二章1. 什么是前趋图?为什么要引入前趋图?答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。

2. 画出下面四条语句的前趋图:S1=a:=x+y; S2=b:=z+1; S3=c:=a – b; S4=w:=c+1;答:其前趋图为:3. 什么程序并发执行会产生间断性特征?答:程序在并发执行时,由于它们共享系统资源,为完成同一项任务需要相互合作,致使这些并发执行的进程之间,形成了相互制约关系,从而使得进程在执行期间出现间断性。

4.程序并发执行时为什么会失去封闭性和可再现性?答:程序并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态由多个程序改变,致使程序运行失去了封闭性,也会导致其失去可再现性。

5.在操作系统中为什么要引入进程概念?它会产生什么样的影响?答:为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程概念。

影响: 使程序的并发执行得以实行。

6.试从动态性,并发性和独立性上比较进程和程序?答:(1)动态性是进程最基本的特性,表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤销而消亡。

进程有一定的生命期,而程序只是一组有序的指令集合,是静态实体。

(2)并发性是进程的重要特征,同时也是OS 的重要特征。

引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。

(3)独立性是指进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。

对于未建立任何进程的程序,不能作为独立单位参加运行。

7.试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志?答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。

作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。

习题册第二章参考答案

习题册第二章参考答案

习题集第二章参考答案一、单项选择题1、 D2、 D3、 B4、 D5、 C6、 B7、 A 8、 B9、 C10、 B11、 C12、 B13、 D14、 C15、 D16、 A17、 B18、 A19、 B20、 D21、 C22、 D23、 B24、 D25、 D26、 B27、 C28、 B29、 A30、 B31、 A32、 B33、 A34、 C二、填空题1 进程2 就绪执行阻塞3 等待的事件发生的4 进程控制块5 进程控制块(或PCB)6 99 1 1007 就绪8 静止阻塞9 阻塞就绪10 共享存储器,管道通信,消息传递11 信号量12 [1-n,1]13 进程控制块(PCB)14 同步互斥信号量15 wait(mutex)signal(mutex)16 顺序性,封闭性,可再现性17 并发18 临界区19 wait, signal20 1,(1-n)或-(n-1)21 722 wait signal23 阻塞就绪三、判断题×√1×2√3×4×5×6×7√8×9×10√11√12×13√四、简答题1、解释进程的顺序性和并发性。

答:进程的顺序性是指进程在顺序的处理器上的执行是严格按序的,只有在前一个操作结束后才能开始后继操作。

进程并发性是指一组进程可以轮流占用处理器,一个进程的工作没有全部完成之前,另一个进程就可开始工作。

把这样的一组进程看做是同时执行的,把可同时执行的进程称为并发进程。

所以,进程的顺序性是对每个进程而言的,进程的并发性是对一组具有顺序性的进程而言的。

一组进程并发执行时各进程轮流占用处理器交替执行,占用处理器的进程按各自确定的顺序依次执行指令。

2、简述进程与程序的区别和联系。

答:区别:(1)进程能真实地描述并发,而程序不能。

(2)动态性是进程的基本特征,进程实体具有创建、执行和撤销的生命周期,而程序只是一组有序指令的集合,存放在某种介质上,是静态的。

林子雨大数据技术原理与应用第二章课后题答案

林子雨大数据技术原理与应用第二章课后题答案

大数据第二章课后题答案黎狸1. 试述Hadoop 和谷歌的MapReduce 、GFS 等技术之间的关系。

Hadoop 是Apache 软件基金会旗下的一-个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。

①Hadoop 的核心是分布式文件系统( Hadoop Ditributed FileSystem,HDFS ) 和MapReduce 。

②HDFS是对谷歌文件系统( Google File System, GFS ) 的开源实现,是面向普通硬件环境的分布式文件系统,具有较高的读写速度、很好的容错性和可伸缩性,支持大规模数据的分布式存储,其冗余数据存储的方式很好地保证了数据的安全性。

③MapReduce 是针对谷歌MapReduce 的开源实现,允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,采用MapReduce 来整合分布式文件系统上的数据,可保证分析和处理数据的高效性。

2. 试述Hadoop 具有哪些特性。

Hadoop 是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性。

①高可靠性。

采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务。

②高效性。

作为并行分布式计算平台,Hadoop 采用分布式存储和分布式处理两大核心技术,能够高效地处理PB 级数据。

③高可扩展性。

Hadoop 的设计目标是可以高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点。

④高容错性。

采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配。

⑤成本低。

Hadoop 采用廉价的计算机集群,成本比较低,普通用户也很容易用自己的PC 搭建Hadoop 运行环境。

⑥运行在Linux 平台上。

Hadoop 是基于Java 语言开发的,可以较好地运行在Linux 平台上。

多线程题目及答案

多线程题目及答案

35. 并行和并发有什么区别?•并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

••并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

••在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。

如hadoop分布式集群。

•所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

36. 线程和进程的区别?简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。

进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。

线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。

同一进程中的多个线程之间可以并发执行。

37. 守护线程是什么?守护线程(即daemon thread),是个服务线程,准确地来说就是服务其他的线程。

38. 创建线程有哪几种方式?①. 继承Thread类创建线程类•定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。

因此把run()方法称为执行体。

••创建Thread子类的实例,即创建了线程对象。

••调用线程对象的start()方法来启动该线程。

•②. 通过Runnable接口创建线程类•定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

••创建Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。

••调用线程对象的start()方法来启动该线程。

•③. 通过Callable和Future创建线程•创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。

••创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

分布式课后习题答案

分布式课后习题答案

第一章分布式数据库系统概述1.1请用自己的语言定义下列分布式数据库系统中的术语:(1)局部数据:只提供本站点的局部应用所需要的数据。

全局数据:虽然物理上存储在个站点上,但是参与全局应用(2)全局/局部用户:局部用户:一个用户或一个应用如果只访问他注册的那个站点上的数据称为本地或局部用户或本地应用;全局用户:如果访问涉及两个或两个以上的站点中的数据,称为全局用户或全局应用。

全局/局部DBMS:1)LDBMS(Local DBMS):局部场地上的数据库管理系统,其功能是建立和管理局部数据库,提供场地自治能力,执行局部应用及全局查询的子查询。

(2)GDBMS(Global DBMS):全局数据库管理系统,主要功能是提供分布透明性,协调全局事物的执行,协调各局部DBMS以完成全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能等。

(3)全局外模式:全局应用的用户视图,也称全局视图。

从一个由各局部数据库组成的逻辑集合中抽取,即全局外模式是全局概念式的子集。

对全局用户而言,都可以认为在整个分布式数据库系统的各个站点上的所有数据库都如同在本站点上一样,只关心他们自己所使用的那部分数据(4)全局概念模式:描述分布式数据库中全局数据的逻辑结构和数据特性,是分布式数据库的全局概念视图。

采用关系模型的全局概念模式由一组全局关系的定义(如关系名、关系中的属性、每一属性的数据类型和长度等)和完整性定义(关系的主键、外键及完整性其他约束条件等)组成。

(5)分片模式:描述全局数据的逻辑划分。

每个全局关系可以通过选择和投影的关系操作被逻辑划分为若干片段。

分片模式描述数据分片或定义片段,以及全局关系与片段之间的映像。

这种映像是一对多的。

(6)分配模式:根据选定的数据分布策略,定义各片段的物理存放站点,即定义片段映像的类型,确定分布式数据库是冗余的还是非冗余的,以及冗余的程度。

如果一个片段分配在多个站点上,则片段的映像是一对多的,分布式数据库是冗余的,否则是不冗余的。

操作系统概念(第九版)答案

操作系统概念(第九版)答案

操作系统概念(第九版)答案简介《操作系统概念(第九版)答案》是一本针对《操作系统概念(第九版)》教材的答案集合。

本文档旨在提供读者对操作系统相关概念的理解和应用基础。

目录1.引论2.进程管理3.处理机调度4.进程同步5.死锁6.内存管理7.虚拟内存8.文件系统9.输入与输出10.磁盘存储管理11.安全性和保护12.分布式系统13.多媒体操作系统14.实时系统第一章引论本章的目标是介绍操作系统的概念和功能,包括定义了什么是操作系统、操作系统的历史和发展、操作系统的分类以及操作系统的基本组成部分。

问题1:操作系统是什么?答案:操作系统是一个管理计算机硬件和软件资源的软件系统。

它为用户提供一个在硬件和软件之间进行交互的接口,同时协调和控制计算机的各个组件,以实现有效和可靠的计算机操作。

问题2:操作系统的历史和发展?答案:操作系统的历史可以追溯到大约20世纪50年代,当时计算机的使用范围相对较小,操作系统也比较简单。

随着计算机技术的发展,操作系统逐渐变得复杂而且功能强大。

在20世纪60年代,随着多道程序设计的发展,操作系统开始支持同时运行多个程序。

这就导致了对资源的合理分配和进程调度的需求。

同时,操作系统的文件系统和输入输出功能也得到了改进和扩展。

在20世纪70年代,个人计算机的出现使得操作系统变得更加普及。

同时,分时操作系统和分布式操作系统的概念也开始出现。

到了20世纪80年代和90年代,图形用户界面(GUI)的引入和互联网的普及使得操作系统更加用户友好和功能丰富。

现在,操作系统已经成为计算机系统中不可或缺的一部分,为计算机用户提供各种功能和服务。

问题3:操作系统的分类有哪些?答案:操作系统可以根据不同的标准进行分类。

以下是国际上常用的操作系统分类方法:1.目标计算机系统:大型机操作系统、小型机操作系统、微型机操作系统、嵌入式系统操作系统。

2.处理方式:批处理系统、分时操作系统、实时操作系统。

3.用户数量:单用户操作系统、多用户操作系统。

分布式课后习题答案

分布式课后习题答案

第一章分布式数据库系统概述请用自己的语言定义下列分布式数据库系统中的术语:(1)全局/局部数据:(详见课本第9页所谓的局部数据是指……;所谓的全局数据是指……)(2)全局/局部用户(应用):(3)全局/局部DBMS:(4)全局/局部DB:(5)全局外模式:(详见课本第13页)由全局用户视图组成,是全局概念模式的子集。

(6)全局概念模式:(详见课本第13页)定义分布式数据库系统中所有数据的整体逻辑结构,是全局应用的公共数据视图。

(7)分片模式:(详见课本第13页)是全局数据整体逻辑结构分割后的局部逻辑结构,是DDBS 的全局数据的逻辑划分视图.(8)分配模式:(详见课本第13页)用于根据选定的数据总体分配方案,定义各片段的物理存放地点.(9)局部概念模式:(详见课本第13-14页)是全局概念模式被分片和分配到局部场地上的映像的逻辑结构及特征的描述,是全局概念模式的子集。

其逻辑结构与局部DBMS所支持的数据模型有关,当全局数据模型与局部数据模型不同时,局部概念模式还应包括数据模型转换的描述。

(10)局部内模式:描述局部概念模式涉及的数据在局部DBMS中的物理结构及物理存储细节,完全与非分布式系统相同。

1.2采用分布式数据库系统的主要原因是什么?(P1)1.3分布式数据库系统可分为哪些类?(课件第1章。

课本P6,7,8)1.4什么是分布式数据库系统?它具有哪些主要特点?怎么样区别分布式数据库系统与只提供远程数据访问功能的网络数据库系统?(分布式数据库系统的定义、特点详见课件第1.课本P6)1.5分布式DBMS具有哪些集中式DBMS不具备的功能?(课件第1章。

课本P15)用自己的语言解析“什么时候需要进行数据分片和数据复制”?(课本第10,11页)式数据库系统中,为什么要对数据进行分片?什么是关系的片段?关系的片段有哪些主要类型?(课本第9-10页。

数据分片是指数据存放单位不是全部关系,而是关系的一个片段。

《现代操作系统第四版》 第二章 答案

《现代操作系统第四版》 第二章 答案

现代操作系统第二章进程与线程习题1. 图2-2中给出了三个进程状态,在理论上,三个状态可以有六种转换,每个状态两个。

但是,图中只给出了四种转换。

有没有可能发生其他两种转换中的一个或两个?A:从阻塞到运行的转换是可以想象的。

假设某个进程在I/O上阻塞,而且I/O 结束,如果此时CPU空闲,该进程就可以从阻塞态直接转到运行态。

而另外一种转换(从阻塞态到就绪态)是不可能的。

一个就绪进程是不可能做任何会产生阻塞的I/O或者别的什么事情。

只有运行的进程才能被阻塞。

2.假设要设计一种先进的计算机体系结构,它使用硬件而不是中断来完成进程切换。

CPU需要哪些信息?请描述用硬件完成进程切换的工作过程。

A:应该有一个寄存器包含当前进程表项的指针。

当I/O结束时,CPU将把当前的机器状态存入到当前进程表项中。

然后,将转到中断设备的中断向量,读取另一个过程表项的指针(服务例程),然后,就可以启动这个进程了。

3.当代计算机中,为什么中断处理程序至少有一部分是用汇编语言编写的?A:通常,高级语言不允许访问CPU硬件,而这种访问是必需的。

例如,中断处理程序可能需要禁用和启用某个特定设备的中断服务,或者处理进程堆栈区的数据。

另外,中断服务例程需要尽快地执行。

(补充)主要是出于效率方面的考量。

中断处理程序需要在尽量短的时间内完成所需的必要处理,尽量减少对线程/程序流造成的影响,因此大部分情况下用汇编直接编写,跳过了通用编译过程中冗余的适配部分。

4.中断或系统调用把控制转给操作系统时,为什么通常会用到与被中断进程的栈分离的内核栈?A:内核使用单独的堆栈有若干的原因。

其中两个原因如下:首先,不希望操作系统崩溃,由于某些用户程序不允许足够的堆栈空间。

第二,如果内核将数据保留在用户空间,然后从系统调用返回,那么恶意的用户可能使用这些数据找出某些关于其它进程的信息。

5.一个计算机系统的内存有足够的空间容纳5个程序。

这些程序有一半的时间处于等待I/O的空闲状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章
1. 选择题
12345678910
D A B C C
E C A B B 1112131415161718
B B B
C A
D A A
2. 程序/方法与进程/线程有什么不同?(53页第四段)
答:一个程序/方法是由程序员写的一段代码,它是静态的。

进程/线程是由执行的程序/方法、当前值、状态信息和用于支持它执行的资源构成,资源是它执行时的动态因素。

换言之,一个进程/线程是一个动态实体,只有当程序或函数执行时才会存在。

3. 比较多进程(多任务)操作系统和多线程编程环境。

(53页5、
6、7段)
答:为了真正并行执行多个进程/线程,必须存在多个处理器。

如果系统中只有一个处理器,表面上多个进程/线程执行,实际上实在分时模式下顺序执行。

从同一代码块可以创建多个进程/线程。

默认情况下,包含在不同进程/线程中的代码和数据是分离的,每一个都有它自己执行代码的副本、局部变量的栈、对象数据区以及其他数据元素。

通常情况下,一个分布式操作系统可以由不同电脑上的多个实例或副本构成,每一个实例或副本都可以管理多个进程。

同样,每个进程可以是由多个线程组成的一个多线程程序。

4. 什么是临界操作?用什么方法可以来保护临界操作?(54页第1
段)
答:对共享资源的访问称为临界操作。

虽然一个简单的锁定可以防止共享资源被访问,但是也消除了并行处理的可能性。

更理想的方法是不锁定并行读操作,而锁定并行读-写和写-写组合。

5. 什么是死锁?哪些策略可以用来解决死锁问题?(55页)
答:死锁的情况是两个或多个竞争操作等待对方完成,导致都不能完成。

解决方法:
(1) 死锁预防:使用一种算法可以保证不会发生死锁。

(2) 死锁避免:使用一种算法,能够遇见死锁的发生从而拒绝资源请求、
(3) 死锁检测和恢复:用一种算法来检测死锁的发生,强迫线程释放资源、挂起等待。

6. 改进哲学家就餐问题使其不会产生死锁?
答:每一次最多只能有4个哲学家(共有5个哲学家)申请就餐,这样其中的一个哲学家就能申请到两只筷子,就能够进餐,再将筷子释放给其他哲学家就餐,直到所有哲学家就餐完毕。

7. Java中睡眠使用:sleep()方法;等待使用wait()方法;挂
起使用join()方法。

l sleep()
调用sleep()方法使线程暂时停止一段执行时间,该时间由给定的毫秒数决定 ,线程在指定时间内不会运行,会自动唤醒,不会让出控制权。

l join()
方法使线程挂起,使当前执行的线程停下来等待,直至join()方法所调用的那个线程结束,再恢复执行 。

例如:当有a和b两个线程,启用b.join();方法时,a线程就会被挂起,直到b线程结束,a线程才继续执行。

l wait()
使线程等待,直到线程得到了notify()和notifyAll()消息,线程才会进入“可执行”状态。

wait()、notify()、notifyAll()不同于其他线程方法,这3个方法是ng.Object类的一部分,所以在定义自己类时会继承下来。

8. 创建子进程:int fork();
启动子进程:exec(参数列表);
9. 在java中,几个线程方法wait(),notify(),
notifyALL()用于协调对共享资源的访问。

C#的Monitor类具
有执行相同功能的方法,它们是
Monitor.Wait(),Monitor.Pulse(),Monitor.PulseALL()。

完全等价的有:start();run()。

独有的是:sleep()方法。

10. C#和java启动线程是一样的,都使用:Thread.Start()方
法。

C#中创建线程:Thread t = new Thread(new
ThreadStart(FunctionName));
java中创建线程:
方法一:继承Thread类创建线程
(1)继承Thread类;
(2)覆盖run()方法;
(3)用new MyThread(...)创建一个线程
(4)通过调用start()方法启动线程
方法二:实现Runnable接口创建线程
(1)实现Runnable接口;
(2)覆盖run()方法;
(3)用new MyThread(...)创建一个线程
(5)通过调用start()方法启动线程
11. 解释monitor是怎么实现的?为什么
monitor.enter/monitor.exit不能通过自动装箱拆箱的方式获
得值类型变量?(P79)
答:
(1) 在进入一个buffer对象引用之前,运行时环境检查锁的开关状态。

如果锁是开的(true),线程告诉Monitor.Enter阻塞。

堆内存中的对象锁被存储在叫做同步阻塞的表中;如果锁是关的(false),线程告诉Monitor.Enter解锁。

在访问缓冲区引用的对象时阻止其它线程进入。

(2) 如果monitor.enter/monitor.exit通过自动装箱拆箱的方式获得值类型变量,可能会出现语义错误。

12. 为什么C#中的reader/writer锁比Monitor锁更有效率?(P84)答:ReaderWriterLock类允许读-读重叠,而Monitor类阻止任何重叠;
ReaderWriterLock类的锁定方法有一个超时的参数,指定放弃前等待多长时间。

而如果对象被锁定,Monitor.Enter永远等待,
Monitor.TryEnter立刻放弃。

13. 当线程正在执行被锁操作保护的代码时,是否可以中断?(从
执行状态转换到就绪状态)?为什么?
答:不能。

因为被加锁的代码段就是一段互斥段,互斥段在一个时刻内只允许一个线程进入执行,其它线程必须等待。

14. 如何通过同步/监视机制保护共享对象?
(1) lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。

lock 确保当一个线程位
于代码的临界区时,另一个线程不进入临界区。

如果其他线
程试图进入锁定的代码,则它将一直等待(即被阻止),直
到该对象被释放
(2) 与 lock 关键字类似,监视器防止多个线程同时执行代码块。

Enter 方法允许一个且仅一个线程继续执行后面的语
句;其他所有线程都将被阻止,直到执行语句的线程调用
Exit。

这与使用 lock 关键字一样。

事实上,lock 关键字就
是用 Monitor 类来实现的
15. 什么是事件?事件与锁之间的主要区别是什么?
AutoResetEvent与ManualResetEvent之间的区别是什么?(P86
和P87)
答:在C#中,事件是某一受关注的事件发生后的通知,每一个事件包含了关于这一特定事件的信息。

16. 异常处理与事件驱动编程的主要区别是什么?
答:异常处理用于处理计算过程中发生的异常情况,是用来处理非正常情况的;而基于事件驱动的编程时用于处理特殊的令人关注的事件,比如单击鼠标。

17. 基于控制流的编程与事件编程的主要区别是什么?(P95)答:控制流驱动方法有唯一的程序入口,输入数据来自不同时间不同地点,只有当控制流返回这一地点时输入数据才被处理;在基于事件驱动的方法中,提供了事件板和报警板机制,事件板记录少量的紧迫请求,报警板负责更加迫切的请求。

在事件驱动中,方法作为事件处理,而不是控制流的一部分。

18. 代理与类有什么不同?(P96)
答:代理是类型安全的,不执行隐式类型转换。

(1) 代理允许方法名作为参数……
(2) 通过把事件处理的名字……
19. 代理与方法有什么不同?
答:代理声明定义了一个引用类型,它可以封装一个带有特定签名的方法。

代理类似于C++中的函数指针。

方法是一个可以被其它程序调用或者重用的代码块,方法通过名字、参数列表和返回类型来定义,编程时,方法作为程序的一个构件和控制流的一部分。

相关文档
最新文档