文章目录
在前面 操作系统绪论中有介绍到操作系统的几大部分:处理机管理 存储管理 设备管理 文件管理 用户接口。这篇文章主要是对处理器管理这一部分进行详细说明。
进程的由来
从联机批处理 -> 脱机批处理 -> 多道批处理 -> 多道程序设计技术,很大的原因是cpu和其他硬件资源速度不匹配(cpu太快,其他硬件速度都跟不上),操作系统设计人员为了缓解cpu和硬盘等硬件速度上的差距、提高cpu的利用率而不断改进操作系统的结果。充分体现了物尽其用这个原则。
程序就是一个指令序列。在未出现多道程序设计之前,只支持单道程序,操作系统只是一个一个按顺序执行程序,所以计算机中的所有资源都被当前运行的程序所享有,包括内存。当时内存仅仅被划分为程序段和数据段,程序段用于存放程序代码,数据段则用于存放程序的数据。因为只有一个程序,所以很容易就可以找到相应的程序段和数据段。
多道程序设计技术的出现,支持同一时间内多个程序并发(当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。)。这样内存中就需要存放各个运行程序的相关信息。这样就产生一个问题,操作系统如何才能找到个程序的存放位置?
所以为了方便操作系统管理和完成多个程序并发执行,引入了进程和进程实体的概念。操作系统为每一个运行的程序配置了一个数据结构,进程控制块(PCB)用来描述进程的各种信息,例如代码的存放位置,数据存放位置等。并不是直接存放程序段和数据段的内容,程序段、数据段的内容存放在内存其他地方,但是由于PCB的存中,很容易获取到这些信息。
PCB、程序段、数据段三个部分构成了进程实体,也称进程印象。一般情况下,我们把进程实体简称为进程,例如所谓的创建进程,实质上是创建进程实体的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
进程的定义
进程的定义并没有一个统一的说法,自己比较认同的就是:
进程是具有独立功能的程序在一个数据集合上一次动态执行的过程。
注意
严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。Linux内核通常把进程也叫任务。
该如何去理解进程和进程实体
PCB、程序段、数据段三个部分构成了进程实体。程序本身和进程实体只相差了一个PCB,二者均是静态的,即是存