进程线程问题总结

1.进程,线程的区别?

  • 进程是资源分配的最小单位,线程是系统调度的最小单位。
  • 进程拥有独立的内存空间,线程共享所属进程的内存空间
  • 进程切换开销较大,线程切换开销较小
  • 进程间独立,一个进程崩溃不会影响其他进程,一个线程崩溃,导致整个进程崩溃
  • 进程间通信比较麻烦,线程间共享内存
  • 线程是进程的一部分,一个进程可以包含多个线程

2.多线程,多进程的优缺点?

多进程的优点:稳定性高:每个进程拥有独立的内存空间,一个进程崩溃不会影响其他进程;安全性高:不同进程之间不能访问彼此内部的数据,需要通过IPC机制进行通信。

多进程缺点:创建、销毁、切换等操作开销大,每个进程都需要单独占用一些系统资源,因此创建、销毁、切换操作比较耗时;通信复杂:不同进程间通信需要通过IPC机制通信,增加编写程序的复杂度。

多线程优点:创建、销毁、切换等开销小;共享数据方便:所有进程都可以访问同一进程的的数据;响应速度快。

多线程缺点:稳定性差:所有线程共享一块内存空间,一个线程崩溃可能会影响整个进程。安全性差多个线程访问同一份数据容易引起(死锁、资源抢占等问题)

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

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

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

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

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

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

4.进程间通信方式

管道:有亲缘关系的进程匿名管道。没有亲缘关系命名管道。半双工通信方式,只允许单向数据传输,数据先进先出,写入的数据读取后才能继续写入。

共享内存:进程间可以共享同一段存储空间,将这段存储空间就称为共享内存。

消息队列:全双工,可读可写。在linux内核创建一个队列结构,将需要发送和读取的数据插入到队列,多个不同的进程通过相同的key值找到相同的队列。

信号量:是一个计数器,信号量用于实现进程间的互斥与同步,多个进程在资源竞争的时候,当信号值为0则阻塞,直到信号的值恢复为1才可以继续。常见操作有P和V,P操作将信号量值-1,V操作将信号的值+1.

5.父进程,子进程的关系和区别?

新的进程的创建是通过复制父进程而得到的,子进程复制了父进程的进程表项、文件屏蔽字、根目录、当前工作目录、环境表、进程的资源限制、用户id,组id、控制终端。父子进程的区别有PID、PPID;子进程内核记录的时间会初始化为0、文件锁、未决信号、未决闹钟。

6.子父进程的应用场景?

子父进程执行不同的代码段。主要在网络服务中比较常见,例如服务器父进程接收客户端的请求,创建子进程处理业务。或者子进程执行不同的程序,主要应用在shell。

7.线程的同步和互斥?

互斥,多线程的环境下,当多个线程同时访问同一资源,该资源只允许一个线程访问,其他线程需要等待,直到资源被释放。

同步,多个线程竞争时,按照一定的顺序执行。

8.孤儿进程,僵尸进程,守护进程?

孤儿进程,父进程不等待子进程退出,在子进程之前结束生命,这种子进程叫做孤儿进程。Linux存在避免过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。

僵尸进程,创建子进程后,子进程退出状态不被父进程收集,变成僵尸进程。

守护进程,不与终端交互,在后台执行的程序。

9.守护进程的编程规则?

fork子进程,父进程终止,子进程调用setsid(2),文件屏蔽字设为0,工作目录切换到根目录,文件描述符0,1,2重定向到"/dev/null",关闭没必要的文件描述符。

10.死锁条件,解决方法?

死锁:多线程在竞争资源的时候,出现了僵死的状态

死锁的必要条件:①互斥条件(一个资源每次只能被一个线程或进程使用)②不可剥夺条件(已经分配给线程或进程的资源不能被强制性剥夺,只能持有者主动释放)③循环等待条件(每个线程或进程都在等待下一个进程或线程持有的资源)④请求与保持条件(进程或线程至少需要持有一个资源,等待其他资源时不释放已占有的资源)

避免产生死锁:打破请求与保持--》锁加时效,在时效内没有达到目的则释放资源

打破循环等待--》锁加顺序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值