程序
程序是指令和数据的有序集合,是静态的
进程
进程引入原因:
1) 多道程序同时运行时,由于资源存在共享导致程序在执行过程存在制约关系而间断,这些动态的过程静态的程序概念不足以描述,所以引入了进程的概念,进程是动态的。
2)更好地使多道程序并发执行,以提高资源的利用率和系统吞吐量,增加并发程度。
进程常用的定义有:
1)进程是程序的一次执行过程
2)进程是程序在处理机上顺序执行时发生的活动
3)进程是具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位
进程的组成:
一个进程实体的组成包括:程序段、相关数据段、进程控制块(Process Control Block,PCB)。
(ps.系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程,是进程存在的唯一标识)
进程把能够识别程序运行状态的变量存放在PCB中,系统通过PCB中变量的情况进行进程间的切换,使资源高效利用。
甚至划分更小的调度单位线程(后续细说)提高并发性。
进程的状态:
图片来自网上截图
线程
线程引入的原因:
为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
线程的理解:
可以理解为“轻量级的进程”,是一个基本的CPU执行单元,也是程序执行中最小单元,是独立运行和调度的基本单位。
小结
线程与进程的比较:
1)在传统操作系统中,进程是拥有资源和独立调度的基本单位;
在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本的单位
2)进程是拥有资源的基本单位,而线程几乎不用系统资源
3)线程执行开销比进程小,但是不利于资源的管理和保护。线程适合与SMP(多核处理机)机器上运行,而进程可以跨机器迁移
4)进程有独立的地址空间,一个进程崩溃后,不会对其他进程造成影戏那个,但线程没有独立的地址和空间,一个线程崩溃会导致整个进程崩溃,多进程程序比多线程程序健壮。对于一些要求同时进行并要共享某些变量的并发操作,只能用线程
5)线程不能够独立执行,必须依存在应用程序中
主要通过对教材和https://www.cnblogs.com/fuchongjundream/p/3829508.html博客阅读整理