(王道408考研操作系统)第二章进程管理-第一节1:进程PCB及其特征
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(王道408考研操作系统)第二章进程管理-第一节1:进程PCB及其特征相关的知识,希望对你有一定的参考价值。
注意:
- 本章内容涉及进程,测试环境选在Linux下,因为我们可以阅读其源代码,有助于理解
- Linux中的命令不会涉及太专业,需要说明的地方都会说明,读者只需关注其功能,无需过于操心原理
- 有兴趣的读者可以移步【README】Linux系统编程必读:本专栏内容提要以及系统调用接口总结再做研究
一:进程和进程实体
(1)进程的引入
前面说过,在多道程序环境下,多个程序是并发执行的,因此它们可能存在争夺系统资源的问题,并且各自运行时程序的封闭性也无从谈起
为此我们引入进程这个概念,大家一定要从抽象的角度理解,这里的进程是为了更好管理、描述程序
- 就像大学生一样,在校学生彼此之间都一样,都是学生。但是学校为了更好的管理我们,采用一些抽象的东西去描述我们(例如学号、学习成绩),把与我们相关的东西全部整合在一起,这样一个学生就更具体,更方便的描述和管理。和进程一样,它本质就是程序,但是如果没有进程这样的概念进行描述,那么它的有些东西是无法被很好的管理的,例如优先级,通信等等
如下是一段C语言程序,将其运行在Linux下
#include <stdio.h>
#include <unistd.h>
int main()
{
while(1)
{
printf("Hello\\n");
sleep(1);
}
}
- 当按下回车键后,该程序将会被加载进内存,与其相关的指令和数据会构成进程
(2)进程如何管理——先描述、再组织
先描述、再组织:这是学习操作系统的一个核心理解。正如描述学生一样,有其年龄、学号等诸多信息,这些信息由很多指针指向,所有与你有关的指针均保存在一个结点内,然后你这个节点后面连接了下一个节点,下一个节点保存的又是另外一个同学的属性。老师管理时,只需要手握这张链表,增删查改,管理非常方便
那么对于操作系统也是一样,操作系统想要管理这诸多进程,也必须为其配备专门的数据结构,这样的数据结构我们称之为——进程控制块(Process Control Block,PCB)
- 需要注意的是PCB只是进程控制块的控制,每个操作系有其独特的PCB,比如在Linux中它的进程控制块叫做task_struct
PCB是进程存在的唯一标识,所谓创建进程,实则是创建描述进程的PCB,然后把PCB这样的数据结构连接到统一的进程队列中交由CPU进行调度;撤销进程实则就是在释放PCB
(3)进程实体
进程实体:PCB+程序段(存放程序代码)+数据段(存放程序运行时产生的数据)组成这三部分组成了进程实体
这里一定要区分进程实体和进程这组概念的区别,引入进程实体后,进程可以被定义为 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。对于初学者这句话可能理解的不是那么透彻,但是请放心,在学习完线程之后,大家对于这句话会有一个全新的体会的
- 进程是动态概念,进程实体是静态概念
- 就像班级和班上的同学一样,这个班的同学就是这个班的“进程实体”,班级的运行反映的就是同学们的运行过程,班级是一个独立的单位(比如说打扫卫生,分配工具等都是一个班级为单位的)
二:进程的组成
一个进程包含三部分,每部分大致信息如下
- 进程标识符:用于标识各个进程,每个进程都有唯一一个标识号
- 进程控制和管理信息:例如当前进程的状态、进程的优先级等
- 资源分配清单:用于说明有关内存地址空间或虚拟地址空间的状况、所打开文件的列表和所使用的输入/输入设备信息
- 处理机处理机相关信息:主要指处理机中各寄存器的值
我们看看具体的,Linux中的task_struct核心信息包含如下
种类 | 包含 |
---|---|
标识符 | 描述本进程的唯一标识符,类似于身份证 |
状态 | 任务状态,退出代码,退出信号 |
优先级 | 相对于其他进程的优先级 |
程序计数器 | 程序中即将被执行的下一条指令地址 |
内存指针 | 包括程序代码和进程相关数据的指针等 |
上下文数据 | 进程执行时处理器的寄存器中的数据 |
I/O状态信息 | 包括显示的输入输出请求等 |
…
三:进程的组织
前面就说过单个进程可以用PCB描述,但如果有成百上千个PCB该如何管理呢,这就涉及到多个进程如何组织的问题了
进程的组织方式主要有:
-
链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针
-
索引方式:根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针
四:进程的特征
进程具有如下特征
- 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的
- 并发性:内存中有多个进程实体,各进程可以并发执行
- 独立性:进程能独立运行、独立获得资源、独立接受调度的基本单位
- 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
- 结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB三部分组成
以上是关于(王道408考研操作系统)第二章进程管理-第一节1:进程PCB及其特征的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研操作系统)第二章进程管理-第一节1:进程PCB及其特征
(王道408考研操作系统)第二章进程管理-第一节5:线程概念和多线程模型
(王道408考研操作系统)第二章进程管理-第一节3:进程控制(配合Linux讲解)
专栏必读王道考研408操作系统万字笔记(有了它不需要你再做笔记了):各章节内容概述导航和思维导图