什么是进程?
狭义上来说进程就是一段程序的执行过程。所谓的进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
进程有三种基本状态:
就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。
运行状态:进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。
阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。
什么是线程?
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是线程组(它可与同属一个进程的其他的线程)之间可以共享资源共享进程所拥有的全部资源。可以把线程理解为进程中的一条执行路径,每一个进程中都包含有至少一个线程,
二者的区别
其根本区别是进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
系统在运行的时候会为每个进程分配不同的内存空间,而线程则不同,系统并不会给他分配自己特有的内存空间,他基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是线程组(它可与同属一个进程的其他的线程)之间可以共享资源共享进程所拥有的全部资源,这样极大的提高了程序的运行效率。
由于操作系统对他们的资源管理方式的不同,进程因为拥有独立的内存地址空间,当一个进程崩溃时并不会对其他进程产生影响。但由于线程并没有自己的地址空间,而是和线程组共享进程所拥有的地址空间,当一个线程崩溃时则导致整个进程的崩溃。