但凡在近几年的很多搞软件开发的面试中,进程和线程可谓是必考的两项,因此作如下的总结:
从计算机发展至今,进程的概念众说纷纭,然而进程就是强调并发性和动态性
1.进程
概念:进程是程序的一次执行,该程序可与其他程序并发执行
组成:程序、数据集合、进程控制块
进程控制块:进程标识名或标识数、位置信息、状态信息、进程优先级、进程现场保护区、资源清单、队列指针和链接字、其他
基本调度状态:运行、就绪、阻塞
调度方式:非剥夺方式、剥夺方式
2.线程
概念:进程内的一个执行单位或者进程内的一个可调度的实体
3.二者的关系
线程是进程的一个组成部分
进程的多线程都在进程的地址空间活动
资源是分给进程的而不是分给线程的处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程
线程在执行过程中需要同步
4.二者的区别
进程的执行过程是线状的
进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在,反之,线程是进程的一部分,没有自己的地址空间,与所属进程内的其他线程共享进程所有资源
线程的改变只代表了CPU执行过程的改变,而没有发生进程所拥有资源的变化
除了CPU之外,计算机内的所有软硬件资源的分配与线程无关,线程是处理器调度的基本单位,也是分配的基本单位
总的来说,可从调度、并发、拥有资源
系统开销:在创建和撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销,但是进程有独立的地址空间,一个进程奔溃后,在
保护模式下不会对其他进程产生影响。而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有独立的地址空间,一个线程死掉就等于整个进 程死掉,所以多进程的程序比多线程的程序健壮