进程与线程知识点合集

一、进程与线程的区别

1.进程是系统资源分配的最小单元。

2.线程是系统任务调度的最小单元。

3.进程间的地址空间是相互独立的,因此进程间进行数据交换需要使用IPC(进程间通信)

4.线程共享进程的地址空间,因此线程间进行数据同步是不需要使用IPC的,但是需要使用信号量,互斥量等同步机制

5.多线程消耗的系统资源少于多进程

6.多线程编程时,一旦其中的一个线程崩溃很有可能导致整个进程崩溃,而多进程就不会。

7.多进程占内存多,切换复杂,CPU的利用率低,多线程反之。

二、什么情况下使用多线程,什么情况下使用多进程

1.需要频繁创建与销毁时优先使用多线程

2.需要大量计算时优先使用多线程

3.数据需要频繁进行同步时优先使用多线程

4.任务与任务之间关联性强时优先使用多线程,反之使用多进程

三、进程间通信方式(IPC)比较

 1.管道:半双工通信方式,管道文件是一种特殊的文件,可以使用read,write等系统接口操作文件。管道分为:无名管道和有名管道。

2.消息队列:通讯双方通过内核中维护的一条消息队列进行通信,该方法比较落后。

3.共享内存:进程间通过共享内存进行通信,数据在内核中只拷贝了一次,因此数据交换的速度非常快。由于是共享资源,因此需要使用信号量等同步机制来保持数据的同步。

4.信号量:不是用来传递数据,是用来协调多进程或多线程的工作,是一种保障数据同步的机制,分为system V信号量和posix信号量。

四、什么是僵尸进程,孤儿进程,守护进程(精灵进程)

1.僵尸进程:子进程退出之后,资源还没有被回收,这样的进程就被称为僵尸进程。

2.孤儿进程:父进程在子进程之前退出,这时的子进程就被称为孤儿进程,孤儿进程由init进程(守护进程)托管。

3.守护进程(精灵进程):是一种生存期很长的进程。通常独立于控制终端,不与用户交互,在后台运行。

五、父子进程的执行顺序

1.在Linux中父子进程是并行的,哪个先执行是不确定的。

六、父(主)子线程的执行顺序

顺序进行,如果主线程在子线程前,就先执行主线程,然后再交替执行子线程。如果主线程在子线程后面,那么两者一起抢占CPU,交替执行。

七、多线程,多进程的调度方式

多线程执行时跟进程一样,是来回切换运行的,跟进程的调度机制一样,分为:非抢占式和抢占式(时间片轮询,优先权原则,短作业(进程)优先原则)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值