当前位置:文档之家› 多核多线程-期末考试-选择题

多核多线程-期末考试-选择题

选择题1.计算机的硬件发展顺序是(A) A:电子管,晶体管,集成电路,大规模集成电路2.下面关于Intel8086芯片与8088芯片的描述,不正确的(D)D:8088每周期能传送或接收8位。

3.针对内存的速度瓶颈,英特尔为80386设计了(B)来解决这个速度瓶颈B:高速缓存(cache)4.对一个具体问题做性能优化时,可以同时在这多个层次上考虑可能优化手段,一般说来(AB)A:在越高层次上进行优化,可能或效益越高。

B:在越低层次上优化时相对越容易实现。

5.vtune性能分析器中的取样功能有哪几种方式(AC)A:基于时间取样C:基于事件取样6.Inter调优助手能够给我们自动推荐改进认识,主要有哪些方向(BCD)B:处理器瓶颈以及改进C:取样向导增强D:超线程7.使用-03编译选项所得的程序,执行效率比较-02所得程序(D)D:不一定8.对于函数调用的边际效应,以下表述不正确(B)B:存在边际效应函数调用,其调用次数不同会对整个程序的行为产生不同的影响。

9.对于一个优化编译器,不正确的是(D)D:优化的编译器能够改进算法的计算复杂度。

10.以下不正确(D)D:由一个进程中的线程切换到另一进程中的线程时,也不会引起进程切换11.以下表述正确(AC)A:在引入线程操作系统进程之间可以并发执行C:进程是拥有系统资源一个对立单位,它可以拥有自己的资源。

12.以下不正确的是(A)A:用户级线程在用户层通过线程库实现,对它的创建,撤销和切换都要利用系统的调用。

13.对于操作系统中线程,不正确(D)D:在处理IO阻塞线程的时候,要依次地等到每个请求完成才继续处理下一个请求。

14.I/O阻塞线程(不会)引发时间片切换开销,计算非阻塞线程(会)引起时间片切换的开销。

15.以下错误(D)D:对于有优先级的线程,也可以使用线程池。

16.调用exit会使(整个)进程终止,调用pthread-exit会使(调用)进程终止。

17.如果多个线程同时执行函数的多个活动请求而不会相互干扰,那么这个函数是(线程安全),如果会干扰,这个函数是(非线程安全)18.用户级线程开销很(低),内核线程开销很(高)19.不正确(A)A:应用程序可以再内存中找到内核对象的数据结构并直接改变他们的内容。

20.正确的是(AB)A:每个进程被初始化时,系统为它分配一个句柄表,用于保存该进程使用的内核对象信息。

B:相同的句柄值在不同的进程中可能标识不同的内核对象。

21.不正确(C)C:进程中不一定有线程。

22.OpenMP标准诞生(1997)年23.不正确(C)C:openMP规范由ANSI发起,由一组主要的计算机硬件和软件厂家共同制定并认可。

24.在OpenMP并行编程模型中,所有的处理器连接到(一个共享)的内存单元上,处理器在访问内存是使用时(相同)的内存地址空间。

25.一个指令操作数地址,可以有(ABCD)个A:0 B:1 C:2 D:3简答题1.弗林根据指令流和数据流的不同组织方式,把计算机系统的结构分为以下四类:(1)单指令流单数据流(Single Instruction stream Single Data stream,SISD)(2)单指令流多数据流(Single Instruction stream Multiple Data stream,SIMD)(3)多指令流单数据流(Multiple Instruction stream Single Data stream,MISD)(4)多指令流多数据流(Multiple Instruction stream Multiple Data stream,MISD)其中指令流指机器执行的指令序列;数据流指指令流调用的数据序列,包括输入数据和中间结果。

2.在单核处理器中,常见的调度策略?先到先服务(FCFS),最短作业调度(SJF),优先级调度(priority-scheduling algorithm),轮转法调度(round-robin,RR),多级队列调度(multilevel queue-schedule algorithm)3.Jackson优化定律:定律1:不要进行优化。

定律2:(仅针对专家)“除非你已经有了一个相对清晰可靠的非优化版本的实现,否定你不要试图对程序进行优化”。

4.一个好的测试数据集必须要具备以下一些特点:(1)可衡量性(Measurable)。

该测试数据集运行后必须要能有一些性能指标,并且这些性能指标必须是可以量化比较的。

(2)可重复性(Reproducible)。

对该测试数据集的重复运行必须要能产生相同,一致的结果。

(3)静态的(static)。

该测试数据集不会随着时间的变化而变化。

(4)有代表性(Representaticve)。

该测试数据集必须能够代表你的程序在典型计算环境下的典型应用。

5.Amdahl加速定律的基本出发点是:对于整个程序优化后可能达到的加速比取决于程序可优化部分占程序执行时间总体的比例。

Amdahl定律告诉程序员,如果要使得程序或得更高的性能,就要对程序中更大的部分进行性能调优,Amdahl定律也告诉我们,无论你花费多大的时间对程序进行性能优化,总有一部分程序,其性能是很难被提高的。

而整个程序可能达到的性能上限却恰恰受制于这一小部分。

换句话说,你的程序的性能受限于程序中性能最差的部分。

6.编译器优化有一些因素的限制:(1)编译器永远不能改变程序在任何情况下的行为。

(2)编译器很难进行过程间,全局性的优化。

(3)编译时间必须尽可能的短。

7.体系结构无关的性能调优方法?(1)消除循环不变量(2)减少过程调用(3)消除不必要的内存存取。

8.总结来说,只要函数在调用的过程中改变了某些全局变量的值,我们就称函数调用中有边际效应,存在边际效应的函数调用,其调用次数的不同会对整个程序的产生不同的影响。

9.Intel处理器对代码优化的手段?(1)取指和预解码的优化(2)指令队列的优化(3)解码的优化(4)执行核心的优化(5)内存的优化10.线程在不同的操作系统中不同的实现方式的区别?(1)用户级线程。

在用户层通过线程库来实现。

对它的创建,撤销和切换都不利用系统的调用。

(2)核心级线程。

由操作系统直接支持,即无论是在用户进程中的线程,还是系统进程中的线程,他们的创建,撤销和切换都由核心实现。

(3)硬件线程。

就是线程在硬件执行资源上的实现形式。

11.线程的生命周期?系统中的每个线程都有一个从创建到消亡的过程,我们把这一过程称作该线程的生命周期。

(1)就绪状态。

该线程运行所需的一切条件都得到满足,已获得必要的资源和设备。

但因处理器资源个数少于线程个数,所有该线程不能运行,而必须位于队列中等待分配处理器资源。

(2)运行状态。

线程在处理器上处于运行的状态,该线程已获得必要的资源和设备,也获得了CPU,用户程序正在处理器上运行。

(3)等待状态。

线程等待某种事件完成而暂时不能运行的状态,处于该状态的线程不能参加竞争处理器资源,此时,即使系统分配给该线程处理器也不能运行。

12.优先级倒置:由于多个线程共享资源,在采用基于优先级调度策略时会出现较低优先级的线程先于高优先级线程执行的情况,即优先级倒置,问题,优先级倒置可能使实时性要求高的线程错过临界期限,从而导致系统崩溃。

13.优先级倒置通常有两种方法:一种是优先级继承,另一种是优先级顶置。

优先级继承技术强令低优先级的线程继承与之共享资源并被挂起的高优先级线程的优先级。

优先级顶置方案为每个临界资源都分配一个优先级。

14.非阻塞算法的特征?(1)无阻塞。

只要没有竞争,线程就可以持续执行。

(2)无锁。

系统整体持续执行。

(3)无等待。

每个线程都可以持续执行,即使遇到竞争也是如此,只要极少数的非阻塞算法实现了这一点。

15.什么是伪共享?解决方法?正在进行缓存代码行更新的时候,禁止访问该代码行中的元素。

这种情况称为伪共享。

通常可以通过以下方式减少伪共享:(1)尽可能多地使用专用数据。

(2)利用编译器的优化功能来消除内存加载和存储。

Windows编译器有一条指令-declspec(align(n)),可以用于指定按n个字节进行对齐。

16.进程通常被定义为两个组成部分?(1)操作系统用来管理进程的内核对象。

内核对象也是系统用来存放关于进程的统计信息的地方。

(2)地址空间。

它包含所有可执行模块或DLL模块的代码和数据。

它还包含动态内存分配的空间,如线程堆栈和堆分配空间。

17.线程的两个构成部分?(1)线程的内核对象。

操作系统用它来对线程实施管理。

(2)线程堆栈。

它用于维护线程在执行代码是需要的所有函数参数和局部变量。

18.线程函数的几个问题作一下说明:(1)主线程的进入点函数的名字必须是main,wmain,WinMain或wWinMain,而其他线程函数可以使用其他的任何名字。

(2)线程函数必须返回一个值,它将成为该线程的退出代码。

(3)线程函数应该尽可能使用函数参数和局部变量。

19.创建线程API函数原型?Windows为创建线程提供了名为CreateThread的API函数,如果想要创建一个或多个线程,只要在一个已经在运行的线程中调用这个函数即可。

CreateThread函数的格式如下:HANDLE CreateThread(PSECURITY-ATTRIBUTES psa,DWORD cbStack,PTHREAD-START-ROUTINE pfnStartAddr,PVOID pvParam,DWORD fdwCreate,PDWORD pwdThreadID);各个参数的含义和作用?(1)psa。

Psa参数是指向SECURITY-ATTRIBUTES结构的指针。

(2)cbStack。

cbStack参数用于设定线程可以将多少地址空间用于它自己的堆栈。

(3)pfnStartAddr和pvParam。

pfnStartAddr参数用于指明想要心线程执行的线程函数的地址。

(4)fdwCreate。

fdwCreate参数可以设定用于控制创建线程的其他标志。

(5)pdwThreadID。

pdwThreadID是CreateThread的最后一个参数,它必须是DWORD 的一个有效地址,CreateThread使用这个地址来存放系统分配给新线程的ID。

20.线程池的作用?P214(书)。

相关主题