看过一个比喻说计算机的核心就是CPU,把它比作一座工厂,时刻在运行。
假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。
进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。
一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
程序
程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。
通俗一点说就是能让电脑完成特定的动作,比如说QQ就是一个程序。
进程
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。是系统进行资源分配和调度。
特点:
- 进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。
进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。(虚拟技术的支持,将一个CPU变幻为多个虚拟的CPU)
系统资源(如内存、文件)以进程为单位分配。
操作系统为每个进程分配了独立的地址空间。
操作系统通过“调度”把控制权交给进程。
线程
首先我们引入了进程这个概念,虽然进程有利于资源的管理和保护。然而在实际应用中,进程有这样的问题:
- 进程切换的代价、开销比较大;
- 在一个进程内也需要并行执行多个程序,实现不同的功能。
- 进程有时候性能比较低。
- 应用的需要。比如打开一个浏览器,我想一边浏览网页,一边下载文件,一边播放音乐。如果一个浏览器是一个进程,那么这样的需求需要线程机制。
- 性能的考虑。多个线程中,任务功能不同(有的负责计算,有的负责I/O),如果有多个处理器,一个进程就可以有很多的任务同时在执行。