进程跟线程的理解
进程(英语:process),是计算机中已运行程序的实例,是系统进行资源分配和调度(若不支持线程机制,进程的系统调度的单位。否则,线程是系统调度的单位)的独立单位。
为了更好的介绍进程这个概念,先从多道程序设计说起,多道程序设计技术是操作系统最早引入的技术,它的设计思想是允多个程序同时进入内存并运行,其目的是为了CPU的利用率,进而提高系统效率。多道程序设计技术允许多个程序同时进入内存并运行,在这样的并发环境下,如何描述、刻画这样执行的程序呢?因此引入了“进程”。
程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或异步(平行)的方式独立运行。
进程特点:
进程是是正在运行程序的抽象。
有状态(新生、运行、等待、就绪、结束),切换耗时。
系统资源(如内存、文件)以进程为单位分配。
操作系统为每个进程分配了独立的地址空间
操作系统通过“调度”把控制权交给进程。
线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位,线程是进程中的一个执行路径。
线程特点:
有标识符ID
有状态(产生、中断、非中断、结束)及状态转换,所以需要提供一些状态转换操作
不运行时需要保存上下文环境,所以需要程序计数器等寄存器
有自己的栈和栈指针
共享所在进程的地址空间和其它资源
进程与线程区别
定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。(进程可以创建多个线程)
角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是CPU调度的单位。
资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
开销方面。进程切换的开销较大。线程相对较小。
重点
面试其实如果没把握,只需要回答:进程是系统资源分配的单位,线程是CPU调度的单位,进程可以创建多个线程