什么是程序
程序是一个静态的概念,是一组计算机能识别和执行的指令.比如:windows中我们要启动网易云,则对应的可执行程序。当我们双击,则加载程序到内存中,开始执行该程序,于是产生了“进程”。
什么是进程
执行中的程序叫做进程(Process),是一个动态的概念。现代的操作系统都可以同时启动多个进程。比如:可以一边用网易云听音乐,同时一边用浏览器看小视频。
进程具有的特征:
- 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
- 并发性:任何进程都可以同其他进程一起并发执行;
- 独立性:进程是系统进行资源分配和调度的一个独立单位;
- 结构性:进程由程序、数据和进程控制块三部分组成。
线程:
进程可以产生多个线程. 同多个进程可以共享操作系统的某些资源一样,同一进程的多个线程也可以共享此进程的某些资源(比如:代码、数据),所以线程又被称为轻量级进程(lightweight process)。
进程与线程的区别
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
进程和线程是抽象的概念,可以把进程看作是一列火车,线程看作是一节节车厢
包含关系:如一条线果一个进程内有多个线程,则执行过程不是的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。(一列火车可以有多节车厢,多节车厢都在运动)
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的(一辆火车上的乘客很难换到另外一辆火车,但是可以在每节车厢走动)
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行(单纯的车厢无法运行要依靠火车来提供动力)