进程和线程

Posted zhoul

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程和线程相关的知识,希望对你有一定的参考价值。

1、进程和线程的区别?
解析:

(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。
(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
(4)线程是轻两级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
(5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
(6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志

2、死锁?死锁产生的原因?死锁的必要条件?怎么处理死锁?
解析:

(1)相互等待资源而产生的一种僵持状态,如果没有外力的干预将一直持续这个状态
(2)系统资源不足、相互竞争资源、请求资源顺序不当
(3)互斥、不可抢占、循环等待、请求与保持
(4)因为互斥是不可改变的,所以只能破坏其他三个条件中的一个来解除死锁,方法:剥夺资源、杀死其中一个线程


3、进程的几种状态?
解析:

(1)run(运行状态):正在运行的进程或在等待队列中对待的进程,等待的进程只要以得到cpu就可以运行
(2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态
(3)D(不可中断休眠状态):在磁盘上的进程
(4)T(停止状态):这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中
(5)Z(僵尸状态):子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收

以上是关于进程和线程的主要内容,如果未能解决你的问题,请参考以下文章

进程和线程单线程多线程和多进程

进程和线程,线程安全,python如何实现多进程,多线程

进程与线程的问题

多线程和多进程模式有啥区别

什么是并发和并行?什么是进程和线程?进程和线程的区别

进程和线程的区别和联系