补交课下测试(ch12并发编程) 08.第八周

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

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

      B .

      向右向上是合法的转换

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

      D .对角线是合法的转换

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

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

正确答案: A B E F

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

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

      cnt++;

  • 3

    ( 多选题 | 1 分)

    有关多线程的说法,正确的是(A B C D E)

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

    E

    .

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

  • 4

    ( 多选题 | 1 分)

    下面Linux函数(C D E)是线程安全的?

    A

    .

    rand()

    B

    .

    ctime()

    C

    .

    printf()

    D

    .

    localtime_r()

    E

    .

    scanf()

  • 5

    ( 多选题 | 1 分)

    线程不安全函数类包括( A B C D)

    A

    .

    不保护共享变量的函数

    B

    .

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

    C

    .

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

    D

    .

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

    E

    .

    调用可重入函数的函数

  • 6

    ( 多选题 | 1 分)

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

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

  • 7

    ( 多选题 | 1 分)

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

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

    E

    .

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

  • 8

    ( 多选题 | 1 分)

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

    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的计数是正确的

  • 9

    ( 多选题 | 1 分)

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

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

    E

    .

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

  • 10

    ( 多选题 | 1 分)

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

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运行时对等线程和主线程执行顺序不确定

  • 11

    ( 多选题 | 1 分)

    有关线程控制,下面说法正确的是(b.c.d.e.f)

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

    E

    .

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

    F

    .

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

  • 12

    ( 多选题 | 1 分)

    关于线程,下面说法正确的是(A.B.C.D)

    A

    .

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

    B

    .

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

    C

    .

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

    D

    .

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

  • 13

    ( 多选题 | 1 分)

    一个状态机包含(A.B.D)

    A

    .

    状态

    B

    .

    事件

    C

    .

    自循环

    D

    .

    转移

  • 14

    ( 多选题 | 1 分)

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

A

.

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

B

.

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

C

.

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

D

.

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

  • 15

    ( 多选题 | 1 分)

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

A

.

这是一个并发echo服务器

B

.

这是一个迭代echo服务器

C

.

第33行关闭已连接描述符

D

.

第33行关闭监听描述符

E

.

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

F

.

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

G

.

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

H

.

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

  • 16

    ( 多选题 | 1 分)

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

    A

    .

    异常

    B

    .

    进程

    C

    .

    I/O多路复用

    D

    .

    信号

    E

    .

    线程

时间: 2024-07-31 21:12:34

补交课下测试(ch12并发编程) 08.第八周的相关文章

# 课下测试补交(ch01)20155337

课下测试补交(ch01) 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对系统的某个部分加速时,其对整个性能的影响取决于该部分的重要性和加速程度. 2.Linux中,内核虚拟内存在虚拟地址空间的低端.(B) A . 正确 B . 错误 解析:由上图可知内核虚拟内存在虚拟地址空间的最顶端而不是最低端 3.实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作.(A)

第十二章课下测试补交博客

第十二章课下测试补交博客

# 课下测试ch02

课下测试ch02 1.假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位.下面正确的是(AD) A . 3.5的表示是[01011] B . -1.0的表示[01111] C . 0.5的表示是[00011] D . 1.5的表示是[00110] 解析: 1. IEEE浮点表示: 符号:s通过其值1负和0正决定V的正负,对于V=0另作解释. 尾数:M是一个二进制小数,它的范围是1 – 2-ε,或者0 – 1-ε 阶码:E的作用是对浮点数加权,权重是2的E次幂(可能是

20155222卢梓杰 课下测试04补做

20155222卢梓杰 课下测试04补做 1.SEQ+对SEQ的改变有() A . PC的计算挪到取指阶段 B . PC的计算挪到访存阶段 C . 电路重定时 D . 插入流水线寄存器 E . 对信号进行重排和标号 F . 处理流水线冒险 正确答案: A C D E F 解析:在SEQ+中,创建状态寄存器来保存在一条指令执行过程中计算出来的信号.然后,当一个新的时钟周期开始时,这些信号值通过同样的逻辑来计算当前指令的PC. SEQ+中对状态元素的改变称为电路重定时,在SEQ+的各个阶段之间插入了

2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd

2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 在第9周学习总结中,我直接调用了系统调用getcwd()输出当前绝对路径.这次我尝试用c语言实现它的功能. 函数原型 #include <unistd.h> char *getcwd(char *buf, size_t size);

20175314薛勐 程序设计中临时变量的使用(课下测试,选做)

程序设计中临时变量的使用(课下测试,选做) 要求 定义一个数组:int arr[] = {1,2,3,4,5,6,7,8}; 打印原始数组的值:for(int i:arr){System.out.print(i + " "); } System.out.println();// 添加代码删除上面数组中的5 ... 打印出 1 2 3 4 6 7 8 0:for(int i:arr){System.out.print(i + " ");} System.out.pri

python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点

并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型 操作系统工作原理介绍.线程.进程演化史.特点.区别.互斥锁.信号. 事件.join.GIL.进程间通信.管道.队列. 生产者消息者模型.异步模型.IO多路复用模型.select\poll\epoll 高性 能IO模型源码实例解析.高并发FTP server开发 1.请写一个包含10个线程的程序,主线程必须等待每一个子线程执行完成之后才结束执行,每一个子线程执行的时候都需要打印当前线程名.当前活跃线程数量: 1

第十二章:并发程序的测试——Java并发编程实战

并发程序中潜在错误的发生并不具有确定性,而是随机的. 安全性测试:通常会采用测试不变性条件的形式,即判断某个类的行为是否与其规范保持一致 活跃性测试:进展测试和无进展测试两方面,这些都是很难量化的(性能:即吞吐量,响应性,可伸缩性测试) 一.正确性测试 重点:找出需要检查的不变性条件和后验条件 1.对基本单元的测试--串行的执行 1 public class BoundedBufferTests { 2 3 @Test 4 public void testIsEmptyWhenConstruct

[C++11 并发编程] 08 - Mutex std::unique_lock

相对于std::lock_guard来说,std::unique_lock更加灵活,std::unique_lock不拥有与其关联的mutex.构造函数的第二个参数可以指定为std::defer_lock,这样表示在构造unique_lock时,传入的mutex保持unlock状态.然后通过调用std::unique_lock对象的lock()方法或者将将std::unique_lock对象传入std::lock()方法来锁定mutex. #include <mutex> class some