20155211 课下测试ch12补做

  • 有关线程图,下面说法正确的是()

A.图的原点表示没有任何线程完成一条指令的初始状态

B.向右向上是合法的转换

C.向左向下是合法的转换

D.对角线是合法的转换

E.一个程序执行的历史被模型化成状态空间中的一条轨迹线

F.进度图中,两个临界区的交集形成不安全区

正确答案: A B E F p701 合法的转换是向右或者向上的。对角线转换是不允许的。

  • 下面代码对于并发程序来说逻辑上是()条指令?

for(i=0;i<1000; i++) cnt++;

A.2

B.3

C.4

D.5

E.6

F.1

正确答案: D p699 我们将循环代码分解成五个部分。

  • 有关多线程的说法,正确的是()

A.竞争和死锁是并发程序中出现的难题

B.程序员错误的假设逻辑流该如何调度时就会发生竞争

C.当一个逻辑流等待一个永远不会发生的事件时就会产生死锁

D.程序使用PV的顺序不当,可能引发死锁

E.利用互斥锁加锁顺序规则可以避免互斥死锁

正确答案: A B C D E p721 程序员使用P和V操作顺序不当,以至于两个信号量的禁止区域重叠。死锁,指的是一组线程被阻塞了。

  • 下面Linux函数()是线程安全的?

A.rand()

B.ctime()

C.printf()

D.localtime_r()

E.scanf()

正确答案: C D E p718 可重入函数通常要比不可重入的线程安全的函数高效一些。

  • 线程不安全函数类包括()

A.不保护共享变量的函数

B.保持跨越多个调用的状态的函数

C.返回指向静态变量指针的函数

D.调用线程不安全函数的函数

E.调用可重入函数的函数

正确答案: A B C D p716可重入函数,线程安全函数和线程不安全函数之间的集合关系参照p717页图12-39.

  • 有关并发程序,下面说法正确的是()

A.程序可以分为并发程序和顺序程序两类

B.程序可以分为并行程序和顺序程序两类

C.并发程序是一种特殊的并行程序

D.并行程序是一种特殊的并发程序

正确答案: A D p711参见图12-30,所有程序的集合能够被划分为不相交的顺序程序集合和并发程序的集合。写顺序程序只有一条逻辑流,写并发程序有多条逻辑流。并行程序是一个运行在多个处理器上的并发程序。因此,并行程序的集合是并发程序集合的真子集。

  • 有关“生产者-消费者”和“读者-写者”模型,下面说法正确的是()

A.二者除处理的都是互斥问题

B.二者除处理的都是同步问题

C.二者都要保证对缓冲区的访问是互斥的

D.“生产者-消费者”模型要保证对缓冲区的访问是互斥的

E.“读者-写者”模型要保证读者对缓冲区的访问是互斥的

正确答案: B D p704读者-写者问题是互斥问题的一个概括。生产者和消费者线程共享一个有n个槽的有限缓冲区。

  • 有关使用信号量实现互斥的说法正确的是()

A.互斥是一种特殊的同步

B.使用二元信号量和PV原语可以实现互斥

C.对于信号量sem_t mutex;

Sem_init(&mutex, 0 , 2);把mutex初始化为二元信号量,用作互斥锁

D.对于共享变量volatile long cnt = 0;

for(i=0; i<ntiers; i++){
P(&mutex)
cnt++;
V(&mutex)
}

保证了对cnt的 访问是互斥的,cnt的计数是正确的

正确答案: A B D p704 D代码为p704例代码。

  • 有关信号量(semphore),下面说法正确的是()

A.信号量s是一个非负的全局变量

B.信号量只能通过P,V操作来处理

C.P,V操作确保信号量s非负

D.sem_post()完成P(s)的操作

E.sem_wait()完成V(s)的操作

正确答案: A B C p702 s是具有一个肺腑整数值的全局变量,只能有两种特殊的操作P和V来处理。

  • 有关下面的代码hello.c,编译后的可执行程序为phello,下面说法正确的是()

A.编译命令是:gcc hello.c -o phello

B.编译命令是:gcc hello.c -lpthread -o phello

C.编译命令是:gcc hello.c -pthread -o phello

D.phello运行时有一个线程

E.phello运行时有两个线程

F.phello运行时主线程先执行完

G.phello运行时对等线程先执行完

H.phello运行时对等线程和主线程执行顺序不确定

正确答案: B C E G 为家庭作业12.17

解析:多线程编译需要-lpthread或-pthread参数;pthread_join使得主线程等待对等线程先执行完

  • 有关线程控制,下面说法正确的是()

A.与进程一样,线程也有父子关系

B.与进程控制中fork() 等价的是pthread_create()

C.与进程控制中exit() 等价的是pthread_exit()

D.与进程控制中waitpid()等价的是pthread_join()

E.与进程控制中kill() 等价的是pthread_cancel()

F.与进程控制中getpid() 等价的是pthread_self()

正确答案: B C D E F

解析:线程只有主线程和对等线程,其他与进程的对比要理解。线程就是运行在进程上下文中的逻辑流。

  • 关于线程,下面说法正确的是()

A.线程是运行在进程中的逻辑流

B.每个线程有自己的线程上下文,包括TID、栈、栈指针、PC、通用寄存器和条件码

C.进程是程序级并发,线程是函数级并发

D.一个进程中的线程共享该进程的虚拟地址空间

正确答案: A B C D

解析:p691:注意并发粒度的不同:进程是程序级并发,线程是函数级并发。多线程的执行模型在某些方面和多进程的执行模型是相似的。

  • 一个状态机包含()

A.状态

B.事件

C.自循环

D.转移

正确答案: A B D p687 一个状态机就是一组状态,输入事件和转移。

  • 有关下面代码,编译后的可执行程序是echoserv,下面说法正确的是()

A.第19行中的STDIN_FILENO的值可以用grep -nr STDIN_FILENO /usr/include 查到为1

B.第24行select()会导到致程序阻塞,可以替代accept()

C.程序运行时,输入CTRL+D,可以让select返回

D.以上代码中加入csapp.h就能编译成功

正确答案: C

解析:grep -nr STDIN_FILENO /usr/include STDIN_FILENO为0 p686为图12-6该图展示了可以如何利用select来实现一个迭代echo服务器,它也可以接受标准输入上的用户命令。

  • 有关下面代码,编译后的可执行程序是echoserv,下面说法正确的是()

A.这是一个并发echo服务器

B.这是一个迭代echo服务器

C.第33行关闭已连接描述符

D.第33行关闭监听描述符

E.删除第33行会导致内存泄露

F.

./echoserv 5056 ,5056是连接的客户端进程的端口号

G.

./echoserv 5056 ,5056是连接的服务器进程的端口号

H.删除第30行会导致内存泄露

正确答案: A C E G p682, 习题12.2参考十一章

  • 现代操作系统提供的构造并发程序的方法有()

A.异常

B.进程

C.I/O多路复用

D.信号

E.线程

正确答案: B C E p681emm书上原话

20155211 课下测试ch12补做的更多相关文章

  1. 20155211 课下测试ch11补做

    20155211 课下测试ch11补做 Web服务器的实现基于HTTP协议,有关HTTP协议,下面说法正确的是() A.可以用telnet充当Web服务器的客户端进行调试 B.HTTP请求的GET和P ...

  2. 20155211课下测试ch10补交

    20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...

  3. 20175333曹雅坤MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  4. ###20175311MyCP(课下作业,必做)

    MyCP(课下作业,必做) 作业题目 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  5. 20175314薛勐 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin ...

  6. # 课下测试ch02

    课下测试ch02 1.假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位.下面正确的是(AD) A . 3.5的表示是[01011] B . -1.0的表示[01111] ...

  7. 20175221 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: - java MyCP -tx XXX1.txt XXX2 ...

  8. 迭代和JDB(课下作业,选做)

    迭代和JDB(课下作业,选做) 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图 ...

  9. 20175314薛勐 MyOD(课下作业,选做)

    MyOD(课下作业,选做) 要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 思路 伪代码: 读取命令行输入的参数(文件名) 以16为每个字 ...

随机推荐

  1. 结对编程——四则运算器(UI第十组)

    博客目录: 一.问题描述                   二.设计思路                   三.UI开发过程                       四.对接过程       ...

  2. linux ubuntu 本地镜像 软件源 制作方法

    1.配置当前软件源,镜像非常大,所以首先要配置一下载速度快的软件源http://fffo.blog.163.com/blog/static/2119130682014322104136601/2.安装 ...

  3. ARC中block块作为属性的使用笔记

    ARC中block块作为属性的使用笔记 block较难理解,根据在内存中的分布情况就分为3种类型,根据使用的情形又分为很多很多种.虽然用起来容易,但使用不当会造成内存泄露,虽然都是这么说,但你真的研究 ...

  4. 辉光UIView的category

    辉光UIView的category 本人视频教程系类   iOS中CALayer的使用 效果如下: 源码: UIView+GlowView.h 与 UIView+GlowView.m // // UI ...

  5. Linux head/tail命令详解

    head命令用于显示文件的开头的内容.在默认情况下,head命令显示文件的头10行内容. tail命令用于显示文件的结尾的内容.在默认情况下,taild命令显示文件的后10行内容. head常见命令参 ...

  6. Zabbix日常监控之lvs监控

    参考博文:http://blog.51cto.com/kaibinyuan/1711863 监控环境的搭建请参考:https://www.cnblogs.com/huangyanqi/p/918780 ...

  7. Hadoop HBase概念学习系列之HBase表的一些设置(强烈推荐好好领悟)(十三)

    压缩格式:默认压缩格式是NONE.可选值有GZ.LZO.SNAPPY. 版本数:HBase默认定义为3个版本. 以秒为单位的存活时间TTL:使用对象是行中的列簇,一旦达到过期时间,HBase会删除这些 ...

  8. Scala编写的打印乘法口诀和金字塔

       刚开始接触scala,觉得语法简单,一时兴起就写了两个简单的例子 public class Calculate { public static void test1(){ for(int i=1 ...

  9. MySQL知识总结(二)基本语句总结

    1. 数据库 查看数据库 show databases; 使用数据库 use [数据库名] 如:use mysql 创建数据库 CREATE DATABASE bruce DEFAULT CHARAC ...

  10. HTML5新增和废弃的标签

    一.废弃的标签 以下的 HTML 4.01 元素在HTML5中已经被删除,虽然浏览器为了兼容性考虑都还支持这些标签,但建议使用新的替代标签,矛盾的是老浏览器对新标签的支持度又不够,视项目的受众对象而定 ...