程序 Program
进程 Process
线程 Thread
传统的操作系统中使用程序这个概念来描述计算机系统的计算过程,程序可以顺序执行,也可以并发的执行
那么为什么要引入进程呢?
操作系统的重要特征是并发与共享,为了提高计算机系统的效率,增强计算机系统内各种硬件的并行操作能力,操作
系统要求程序结构适应并发处理的需要,也就是使计算机系统中能同时存在两个以上正在执行的程序,而传统的程序
设计方法所涉及的程序概念和顺序程序的结构已经不适应于操作系统的需要,为了描述操作系统的并发性,就引入了
新的概念 , 进程
进程是处理机活动的一个抽象的概念
所谓的进程,就是一个程序在给定的活动空间和初始环境下,在一个处理机上的执行过程
一个程序可以作为多个进程的运行程序,一个进程也可以运行多个程序
程序和进程还是有很大的区别的
1.程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念
而进程是程序在处理机上的一次执行过程,它是一个动态的过程
2.程序可以作为一种软件资料长期的保存,而进程则是有一定生命周期的,能够动态的产生和消亡
进程可以由创建而产生,由调度而执行,因得不到资源而暂停,以致最后由撤销而消亡
3.进程是一个能独立运行的单位,能与其他进程并行地活动
4.进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位
为了描述操作系统的并发性,提出了进程这个概念,为了进一步提高系统的并行处理能力,提出了线程这个概念
线程是比进程更小的活动单位,它是进程中的一个执行路径,一个进程可以有多条执行路径,即线程
在一个进程内部就有多个可以独立活动的单位,可以加快进程处理的速度,进一步提高系统的并行处理能力
进程是任务调度的单位,也是系统资源的分配单位
当一个系统支持多线程处理时,线程是人物调度的单位,但是不是系统资源的分配单位
真正的多线程是多CPU的,比如服务器就是多核多CPU的,但是我们这里用pc实现的多线程其实是模拟出来的,
在CPU调度中,有时间片这个概念,每个线程都有对应的时间片,如果我同时有3个线程在运行,注意这里说的同时
运行并不是CPU同时在运行在三个线程,只是这三个线程都开始计算并且都没有结束计算,宏观上的同时运行,那么
此时假设A线程时间片到了,但是A线程计算还没有完成,此时就会把这个线程挂起,然后让B,C线程先运行
这就是宏观上的并行,微观上的串行,由于时间片的时间单位非常非常小,所以给人的感觉就是这三个进程是同时运
行的,其实进程的并发也是这个道理