进程与程序
代码通过编译器编译会变成可执行程序,当这个可执行程序运行起来时,就成为了一个进程
程序是存放在存储介质上的一个可执行文件,而进程是程序执行的过程,进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,而进程是动态的。
主要区别:
-
静态vs动态:程序是静态的代码和数据的集合,而进程是程序执行的动态过程;
-
资源分配:程序本身不占用资源,它只是存储在磁盘上的文件;进程是操作系统资源分配的基本单元,包括了CPU时间、内存空间、文件描述符等资源
-
执行:程序需要通过被操作系统加载到内存中,并创建一个进程来执行,进程是程序指令的实际执行过程。
单道、多道程序设计
单道程序设计
所有进程一个一个排队执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现是必然的。所有这种模型在系统资源利用上及其不合理,在计算机发展历史上存在不久,大部分便被淘汰了。
多道程序设计
在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。
在计算机中时钟中断即为多道程序设计模型的理论基础。并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。时钟中断有硬件基础作为保障,对进程而言不可抗拒。 操作系统中的中断处理函数,来负责调度程序执行。
在多道程序设计模型中,多个进程轮流使用CPU (分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令。由于人眼的反应速度是毫秒级,所以看似同时在运行。
并行和并发
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
MMU
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是