正好复习到多线程的部分,写一篇小文章,讲讲自己学习这些概念时候的理解。
这种专门去看这些概念的定义,区别,可以很好的建立自己的理解。
1.程序/进程
首先要明白什么是程序,程序存储在某种介质上的二进制代码。这种说法略显官方,我的理解就是程序就是代码。
什么是进程,我的理解就是进行中的程序,他占有一些资源,并且构成了线程的执行环境。
标准的定义是
进程是允许某个并发执行的程序在某个数据集合上的运行过程。
进程是由正文段、用户数据段及进程控制块共同组成的执行环境。正文段存放被执行的机器指令,用户数据段存放进程在执行时直接进行操作的用户数据。进程控制块存放程序的运行环境,操作系统通过这些数据描述和管理进程。
2.程序和进程的区别
程序是静态的,进程是动态的,程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。
程序是永久的,进程是暂时存在的。程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。
我的理解是进程对应程序的运行状态,相比于程序本身,程序的运行(进程)包括了更多的东西,比如从CPU分配的资源等等,并且的随着运行,其进程本身也会处于动态的变化之中。
关于进程和程序的区别,《现代操作系统》中用了一个比喻形象说明:一位有一手好厨艺的计算机科学家正在