什么是进程?什么是线程?
进程是资源分配的最小单位,它是程序执行的一个实例,在程序运行时创建。
线程是程序执行的最小单位,是进程的一个执行流,一个线程由多个线程组成的。
进程和线程由什么区别?
1.进程是资源分配的最小单位。
2.线程是程序执行的最小单位,也是处理器调度的基本单位。但进程不是,两者均可并发执行。
3.进程有自己的独立地址空间,每启动一个进程。系统就回为它分配地址空间,建立数据表来维护代码段,堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据,使用相同的地址空间,因此。CPU切换一个线程的花费远比进程小的多,同时创建一个线程的开销也比进程小很多。
4.线程间的通信更方便,同一个进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(ipc)进行。不过如何处理好同步和互斥是编写多线程程序的难点。但是多进程程序更健壮,多线程只需要有一个线程死掉,整个进程也跟着死掉,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
5.进程切换时,消耗的资源大,效率低,所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行又要共享某些变量的并发操作,只能用线程不能用进程。
6.执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
7.线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。进程执行开销大,但是能够很好的进行资源管理和保护,可以跨机器迁移。
何时使用多线程,何时使用多线程?
对资源的管理和保护要求高,不限制开销和效率时,使用多进程。
要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程。
进程有几种状态?画一下进程状态转换图?
进程可以分为五个状态,分别是:
1.创建状态、就绪状态、运行状态、阻塞状态、终止状态
2.创建状态:一个应用程序从系统上启动,首先就是进入创建状态,需要获取系统创建进程管理块(PCB)完成资源分配。
3.就绪状态:在创建状态完成之后,进程就已经准备好了,但是还未获得处理器资源,无法运行。
4.运行状态:获取处理器资源,被系统调度,开始运行状态。如果进程的时间片用完了就进入就绪态。
5.阻塞状态:在运行状态期间,如果进行了阻塞的操作,如耗时的I/O操作,此时进程暂时无法操作就进入到阻塞状态,在这些操作完成后就进入就绪状态。
6.终止状态:进程结束或者被系统终止,进入终止状态。
进程的状态转换图
创建进程的方式有哪些?
创建进程的多种方式但凡是硬件,都需要有操作系统去管理,主要有操作系统,