程序、进程和线程的概念
程序:在计算机中,程序是一组指令及指令参数的组合,指令按照既定的逻辑控制计算机运行。
进程:是计算机运行着的程序,是操作系统执行的基本单位。
线程:在计算机中为了节省资源而可以在同一个进程中共享资源的一个执行单位。
程序与进程的区别:
进程是操作系统系统环境中的基本概念、是系统资源分配的最小单位。通过C++语言编写的源程序经相应的编译器编译成可执行文件后,提交给计算机处理器运行。应用程序运行状态称为进程。进程从用户角度来看是应用程序的一个可执行过程。从操作系统核心角度来看,进程代表是操作系统分配的内存、CPU时间片等资源的基本单位,是为正在运行的程序提供运行环境。
总结:
- 进程是动态的,而程序是静态的。
- 进程有一定的生命期,而程序是指令的集合,本身无‘运动’的含义。没有建立进程的程序不能作为1个独立的单位得到操作系统的认可。
- 一个进程只能对应一个程序一个程序,一个程序可以对应多个进程。进程和程序的关系就像戏剧和剧本之间的关系。
进程之间的通信有多种方式,其中管道、共享内存和消息队列是最常用的方式。
进程和线程的区别:
- 进程是操作系统进行资源分配的基本单位,进程拥有完整的虚拟环境。进行系统资源分配的时候,除了CPU资源之外,不会给线程分配独立的资源,线程所需要的资源需要共享。
- 线程是进程的一部分,如果没有进行显示的线程分配,可以认为进程是单线程的;如果进程中建立了线程,则可以认为系统是多线程的。
- 多线程和多进程是两种不同的概念,虽然两者都是并行完成功能。但是,多个线程之间像内存、变量等资源在多个线程之间可以通过简单的办法共享,多线程则不同,进程间的共享方式有限。
- 进程有进程控制表PCB,系统通过PCB对进程进行调度;线程有线程的控制表TCB。但是,TCB所表示的状态比PCB要少多的。