进程与线程面试复习

  1.什么是进程,线程,有什么区别?

答:进程就是程序的一次动态执行过程。

线程是进程的一个实体,是进程的一条执行路径,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

区别:(1)调度:线程为调度和分派的基本单位,进程为拥有资源的基本单位。

(2)并发性:不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行。

(3)拥有资源:线程拥只拥有一点必不可少的资源(例如栈)--》轻量级的进程,但可访问隶属进程的 资源。

(4)系统开销:控制进程明显大于控制线程的开销。

2.多线程,多进程得到优缺点。

多进程优点

1、每个进程相互独立,不影响主程序的稳定性,子程序崩溃没关系;

2、通过增加CPU,就可以扩充性能;

3、可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;

4、每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。

多进程缺点

1、逻辑控制复杂,需要和主程序交互;

2、需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算。多进程调度开销比较大;

3、最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理。当然你也可以利用多线程+多CPU+轮询方式来解决问题;

4、方法和手段的多样的,关键是自己看起来实现方便又能够满足要求,代价也合适。

多线程优势:

  1. 无需跨进程边界;
  2. 程序逻辑和控制方式简答;
  3. 所有线程可以直接共享内存和变量等;
  4. 线程方式消耗的总资源比进程方式好。

多线程缺点

1、每个线程与主程序公用地址空间,受限于2GB地址空间;

2、线程之间的同步和加锁控制比较麻烦;

3、一个线程的崩溃可能影响到整个程序的稳定性;

4、到达一定的线程数程度后,即使再增加CPU也无法提高性能。

5、线程能够提高的总性能有限,而且流程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU。

3.什么时候用进程,什么时候用线程。

:1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。

2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应

3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;

4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;

5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

4.多进程,多线程同步(通讯)的方法。

多进程

  1. 有名管道/无名管道
  2. 信号
  3. 共享内存
  4. 消息队列
  5. 信号量
  6. 套接字

多线程

  1. 信号量
  2. 读写锁
  3. 条件变量
  4. 互斥锁
  5. 信号

5.进程线程的状态转换图。

6.父进程,子进程。

答:

父进程:

是指创建其他进程的进程。当一个进程创建了一个新的进程,新进程就成为了父进程的子进程。父进程可以创建多个子进程,但是每个子进程只有一个父进程。

子进程:

是由父进程创建的进程。子进程继承了父进程的一些属性和资源,并且可以执行不同的代码。子进程可以创建自己的子进程,形成进程树的结构。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值