谈谈程序、进程和线程的关系
目录
一、什么是程序
程序是计算机系统中存储的数据文件,大可分为两种:
(1)源代码程序--描述程序的行为和功能,属于文本文件;
(2)可执行程序--该文件是由源代码程序通过编译器编译得到的二进制文件,可以直接加载并运行。
二、什么是进程
1、广义角度:程序关于某个数据集合的一次运行活动;
2、狭义角度:程序被加载到内存中并执行而得到的运行实体。
三、程序和进程的关系
1、程序和进程的区别
(1)程序是计算机硬盘中的静态文件,存储在内存中的一段由二进制表示的文件;
(2)进程是内存中动态的运行实体,比如PC指针,代码段等。
2、程序和进程的联系
(1)一个程序可能对应多个进程:同一个可执行程序,被同时加载运行,每次运行产生一个进程;
(2)一个进程可能存在多个程序:一个程序的运行,可能需要依赖多个lib或者dll动态库(也属于可执行程序)。
四、什么是线程
1、线程概念
(1)进程中的一个执行单位;
(2)操作系统中一个可以调度的实体;
(3)进程中相对独立的一个控制流序列;
(4)执行时的现场数据和其他调度所需的信息。
2、线程和main函数关系
main()函数其实就是进程里主线程的入口地址,可以通过以下的关系图进行了解:
五、进程和线程的关系
在当代操作系统中,进程是操作系统分配资源的基本单位,线程是操作系统CPU调度执行的基本单位。
1、进程中可以存在多个线程,并且多个线程共享进程资源;
2、线程是被调度的基本单元,而进程不是调度的基本单元;
3、线程不能脱离进程而独立存在,必须依赖于进程运行;
4、线程有生命周期,有诞生和死亡;
5、任意线程都可以创建其他新的线程。