Fork me on GitHub

python多线程多进程相关问题

在线考试 本次考试成绩:55 答题剩余时间0小时43分9秒
考生须知
1.本次周考结束后,剩余补考次数:2次
2.周考时间为60分钟,超时系统自动交卷
3.本次考试满分100分(5*20道),60分通过考试
1.
(单选题)三个进程共享四个同类资源,这些资源的分配与释放只能一次一个。已知每一个进程最多需要两个该类资源,则该系统( )。
A.有些进程可能永远得不到该类资源
B.必然有死锁
C.进程请求该类资源立刻能得到
D.无

正确答案:C
解析:
不会发生死锁。因为每个进程都分得一个资源时,还有一个资源可以让任意一个进程满足,这样这个进程可以顺利运行完成进而释放它的资源
我要反馈
2.
(单选题)一个队列的入队序列是a、b、c、d,则队列的输出序列为()
A.abcd
B.dcba
C.acdb
D.bcda
正确答案:A
解析:
队列是先进先出的
我要反馈
3.
(单选题)下列关于管道通信的叙述中,正确的是 ()
A.一个管道可实现双向数据传输
B.管道的容量仅受磁盘容量大小限制
C.进程对管道进行读操作和写操作都可以被阻塞
D.一个管道只能有一个读写进程或一个写进程对其操作
正确答案:C
解析:
管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)在管道的头部读出数据。数据被一个进程读出后,将被从管道中删除,其它读进程将再不能读到这些数据。管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞。
管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K(这里现在为65536byte)字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。
我要反馈
4.
(单选题)下面有关孤儿进程和僵尸进程的描述,说法错误的是?
A.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
B.僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程
C.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作
D.孤儿进程和僵尸进程都可能使系统不能产生新的进程,都应该避免
正确答案:D
解析:
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上 ,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。 因此孤儿进程并不会有什么危害。
我要反馈
5.
(单选题)对于两个并发进程,设互斥信号量为 mutex ,且初始值为 1 ,若 mutex=1 ,则( )。
A.表示没有进程进入临界区
B.表示有一个进程进入临界区
C.表示有一个进程进入临界区,另一个进程等待进入
D.表示有两个进程进入临界区
正确答案:A
解析:
mutex=1时,表示两个进程皆未进去需要互斥的临界区,mutex=0时表示有一个进程进去临界区运行,另外一个必须等待,挂入阻塞队列,mutex=-1时表示有一个进程正在临界区运行,另外一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程退出时唤醒
我要反馈
6.
(单选题)有关多线程,多进程的描述错误的是?( )
A.子进程获得父进程的数据空间,堆和栈的复制品
B.线程可以与同进程的其他线程共享数据,但是它拥有自己的栈空间且拥有独立的执行序列
C.线程执行开销小,但是不利于资源管理和保护
D.进程是CPU调度和分派的基本单位。
正确答案:D
解析:
解析:线程是CPU调度和分派的基本单位。 进程是操作系统的基本单位。
我要反馈
7.
(单选题)启动线程时不调用start()而使用调用run()方法,会有什么后果
A.不会启动新线程,run方法也不会执行。
B.不会启动新线程,但是run方法会执行。
C.启动了新线程,但是run方法不会被执行。
D.启动了新线程,run方法也会被执行。
正确答案:B
解析:
start()方法执行之后表面上看起来直接执行run()方法,但是两者是有很大差别的:
run()方法只是一个类中的普通方法,直接执行和普通的方法没有上面两样
就相当于对象调用方法,执行方法
我要反馈
8.
(单选题)在多进程的系统里,一个进程已经占有足够的资源,如果还占有更多的资源会引起什么现象?
A.饥饿
B.死锁
C.同步
D.互斥
正确答案:B
解析:
1:饥饿是指一个可运行的进程尽管能继续执行,但被调度程序无限期地忽略,而不能被调度执行的情形。
2:死锁是两个或两个以上的进程其中每个进程都在等待其它进程做完某些事而不能继续执行。
3:互斥是当一个进程在临界区访问共享资源时,其它进程不能进入该临界区访问任何共享资源。
4:同步比较好理解
题目中说一个进程已经占有很多资源了,它还需要更多的资源,所以在没得到这些资源之前,它所占有的这些资源不能得到释放,其它进程就无法获得这些资源,而改程序所需要的资源也很可能被其它进程所占有,因此造成死锁;
我要反馈
9.
(多选题)关于多进程并发和多线程编程,以下哪些说法正确的()
A.对于计算密集型程序,多进程并发优于多线程并发
B.多进程并发即运行多个独立的程序,优势在于并发处理的任务都由操作系统管理
C.多线程并发则由程序员管理并处理并发任务,这种并发方式可以方便地在线程之间共享数据(前提是不能互斥)
D.以上说法均不正确
正确答案:ABC
解析:
本题考查多进程并发多线程并发基础知识
我要反馈
10.
(单选题)可以让多个线程顺序执行的方法是()
A.sleep()
B.wait()
C.interrupt()
D.join()
正确答案:D
解析:
join()方法使调用该方法的线程在此之前执行完毕,也就是等待该方法的线程执行完毕后再往下继续执行。注意该方法也需要捕捉异常。
我要反馈
11.
(单选题)下列几种关于进程的叙述,()最不符合操作系统对进程的理解?
A.进程是在多程序并行环境中的完整的程序
B.进程可以由程序、数据和进程控制块描述
C.线程是一种特殊的进程
D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
正确答案:A
解析:
链接:https://www.nowcoder.com/questionTerminal/3d94695d207f4391895fb4bfd357e941
来源:牛客网

进程 (Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本 区域(text region)、数据区域(data region)和堆栈 (stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理 器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
我要反馈
12.
(单选题)下列不是进程间的通信方式的是()
A.管道
B.回调
C.共享内存
D.socket
正确答案:B
解析:
1.管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
2.信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
3.消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
4.共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

  1. 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信
    6.回调: 是一种编程机制
    我要反馈
    13.
    (单选题)关于程序和进程,以下哪种说法是正确的
    A.程序是动态的,进程是静态的
    B.程序是静态的,进程是动态的
    C.程序和进程都是动态的
    D.程序和进程都是静态的
    正确答案:B
    解析:
    本题考查程序和进程的区别。
    我要反馈
    14.
    (多选题)下列属于事件方法的是()
    A.wait
    B.clear
    C.set
    D.以上都不是
    正确答案:ABC
    解析:
    python线程的事件用于主线程控制其他线程的执行,事件主要提供了三个方法wait、clear、set

事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为 False,那么当程序执行 event.wait 方法时就会阻塞,如果“Flag”值为True,那么event.wait 方法时便不再阻塞。

clear:将“Flag”设置为False
set:将“Flag”设置为True
我要反馈
15.
(多选题)下列关于程序说法正确的是
A.我们写好的软件,存放在磁盘上可以叫做程序
B.一个程序包括,需要执行的指令和数据(0/1)
C.一个程序就是存放到磁盘上的文件
D.程序是磁盘上存在的静态实体
正确答案:ABCD
解析:
此题考查程序的概念,ABCD都为正确选项
我要反馈
16.
(单选题)栈和队列的共同特点是:
A.都是先进先出
B.都是先进后出
C.只允许在端点处插入和删除元素
D.没有共同点
正确答案:C
解析:
遵循原则:
队列:先进先出
栈:先进后出(后进先出)
无论先进先出还是先进后出都是在端点处插入和删除元素.
我要反馈
17.
(多选题)下列关于进程池说法正确的是()
A.python中,进程池内部会维护一个进程序列。当需要时,程序会去进程池中获取一个进程
B.如果进程池序列中没有可供使用的进程,那么程序就会等待,直到进程池中有可用进程为止。
C.apply 从进程池里取一个进程并同步执行
D.apply_async 从进程池里取出一个进程并异步执行
正确答案:ABCD
解析:
此题考查进程池的概念以及方法
我要反馈
18.
(多选题)下列关于共享内存说法正确的是()
A.进程共享同一块内存空间
B.访问共享内存和访问私有内存一样快
C.不需要系统调用和内核出口
D.造成不必要的内存复制
正确答案:ABC
解析:
D选项错误,是不造成不必要的内存复制
我要反馈
19.
(单选题)建立多进程的主要目的是提高( )的利用率
A.文件
B.CPU
C.内存
D.外设
正确答案:B
解析:
想要充分利用多核CPU资源,Python中大部分情况下都需要使用多进程,Python中提供了multiprocessing这个包实现多进程。multiprocessing支持子进程、进程间的同步与通信,提供了Process、Queue、Pipe、Lock等组件。
我要反馈
20.
(单选题)进程的基本特性是()
A.进程是动态的、多个进程可以含有相同的程序和多个进程可以并行运行
B.进程是动态的、多个进程对应的程序必须是不同的和多个进程可以并发运行
C.进程是动态的、多个进程可以含有相同的程序和多个进程不能并发运行
D.进程是静态的、多个进程可以含有相同的程序和多个进程可以并发运行
正确答案:A
解析:
本题考查进程的概念
我要反馈
Copyright(C) 达内时代科技集团有限公司 2011-2013 tarena.com.cn 返回顶部

-------------本文结束感谢您的阅读-------------
Donate comment here