一. 为什么需要进程
1. 什么是程序
对人类而言:
程序是为了实现一个特定的功能而设计的一组可操作的工作步骤
对计算机而言:
程序就是计算机系统可以识别的一组有序的指令。程序能指挥计算机执行我们想要它做的动作
2. 程序怎么指挥计算机执行相应的动作
程序储存在磁盘上,在执行时从磁盘到内存再到寄存器,最后被CPU执行。
3. 程序设计语言又有哪些呢
- 在计算机最初诞生的时候,程序是一段一段的二进制语言,称为机器语言
- 由于二进制语言的编程实在是不方便,不适合编写、阅读,于是慢慢有了汇编语言,汇编语言就是将机器语言中的一些关键的指令用一些符号来代替,与机器语言相比,汇编确实有了一些可读性
- 高级语言离机器越来越远,相反,语法接近人类的自然语言,而且,高级语言执行的不再是指令,而是语句,一行语句对应多个指令,因此,它的开发效率越来越高。但是,高级语言必须编译成机器码
4. 高级程序设计语言分类
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译和解释
由此高级语言也分为:编译型语言和解释型语言
编译型语言
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
特点
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
比如:Java、C、C++等
解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
特点
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
比如:JavaScript、Python等
5. 计算机程序处理的对象
数据是计算机程序处理的对象,可以是整数、实数、字符、也可以是图像、声音等的编码表示。
6. 使用前趋图来描述程序的顺序和并发执行
前趋图:指一个又向无循环图,描述进程之间执行的先后顺序。
图中的每一个节点用来表示一个进程或程序段,甚至是一条语句,节点间的有向边存在前趋关系
(1). 程序的顺序执行
(2). 程序的并发执行
由于程序的顺序执行系统资源利用率太低,并且效率也低,而引入了多道程序技术,使程序或程序段能够并发执行
总结:在早期未配置OS的系统和单道批处理系统中,程序的执行方式是顺序执行,即在内存中仅装入一道用户程序。
后来为了提高资源利用率和效率,采用了多道程序技术,将多个程序同时装入内存,使之并发运行
因为一般的普通程序,一旦进行并发执行,其结果就不可预知了,运行也就失去了意义。
这时候为了使程序能并发执行,并且可以对并发执行的程序加以控制和描述。这就引入了进程:来作为资源分配和独立运行的基本单位
二. 什么是进程
1. 我们一般把进程实体(进程映像)叫做进程
2. 进程实体由三部分构成:
- 程序段:一个程序的代码片段
- 数据段:程序执行过程中所需的数据
- 进程控制块(Process Control Block ,PCB)
3. 什么是PCB呢?
OS中配置的一个专门的数据结构,叫进程控制块,用来描述进程的基本运行情况和活动过程,进而来控制和管理进程
4. 所谓创建进程,实质上就是创建进程实体中的PCB,而撤销进程,实质上就是撤销进程实体中的PCB
PCB是进程存在的唯一标志
5. 进程的多种定义(强调动态性)
- 进程是程序的一次执行过程
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
引入进程实体概念之后,可把进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程是动态的
一般不区分两种的差别,把它们认为是一样的,所有进程也就是由程序段、数据段、PCB构成
三. 进程(进程实体)的组成
1. 进程控制块PCB的作用
为了便于OS的管理和描述进程的运行,在OS的核心为每个进程专门定义了一个数据结构——进程控制块。
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是OS最重要的记录型数据结构
PCB的具体作用
- 作为独立运行基本单位的标志
- 能实现间断性运行方式
- 提供进程管理所需要的的信息
- 提供进程调度所需的信息
- 实现与其他进程的同步和通信
2. 进程控制块PCB的组织方式
在一个系统中,通常可拥有数十个、数百个、甚至数千个PCB,那么OS怎么对他们进行有效的组织和管理呢?
方式:
-
线性方式
将系统中所有的PCB都组织在一张线性表中,将该表的首地址存放在内存的一个专用区域中
-
链接方式
按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
-
索引方式
根据进程状态的不同,建立几张索引表
操作系统持有指向各个索引表的指针
四. 进程的特征
五. 进程的状态及状态间的转换
1. OS为什么需要划分多种状态
进程是程序的一次执行,在这个执行过程中,有时进程正在被CPU处理,有时有需要等待CPU服务,可见,进程的状态是会有各种变化的。
为了方便对各个进程的管理,操作系统需要将进程合理的划分为几种状态。
3. 进程的三种基本状态
4. 进程的另外两种状态
-
进程的创建
-
进程的终止