开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:进程控制块】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10983
进程控制块
内容简介:
一、进程控制块的概念
二、进程控制块的内容
三、本节小结
一、进程控制块的概念
什么是进程控制块?
举例:在以前学的jdk 时,创建了一个控件(创建一个按钮),即返回一个地址,返回的指针它就指向一个结构体,这个结构体里边有那个按钮的一些属性、按钮的信息,那此结构体是用来干什么的?
是用来管理按钮的,比如打开一个文件, fopen 打开一个文件,它会申请一个大写的 fzle 类型的结构体,结构体里面存储了一些此文件相关的信息,有一个文件指针大写的 fzle 循环类型的文件指针,定义一个 *fp ,让它指向结构体,那么结构体是用来干什么的?
是为了管理打开的文件,读写进程文件关闭文件是通过结构体来的,同样的在 Linux 当中创建一个进程,比如当创建一个进程的时候,操作系统也会开辟一个结构体,结构体当中有好多成员,这些好多个成员里边保存着什么?
此进程的一些信息,比如进程的进程号、进程的组号、进程创建的时间等等一些信息,就类似于人的档案,一旦一个人出生之后,国家就会为这一个人建一个档案,这个档案里边就有这个人的一些信息,国家通过档案室去管理这个人,其实在程序当中,这个档案就是一个结构体变量,存储了一些信息。进程控制块其实就是一个结构体,存储进程的信息。
二、进程控制块的内容
1、PCB 的概念
OS 就是操作系统,根据 PCB 来对并发执行的进程进行控制和管理,注意 PCB 是什么意思?
P 是 process , C 是 control ,然后 B是 block ,和大学的时候学的 PCB 画板子不一样,是进程控制块,Process control block 进程控制块,然后来对并发执行的进程进行控制和管理,操作系统是根据进程控制块来控制进程的,系统在创建一个进程的时候,就会开辟一段内存来存放与此进程相关的 PCB 数据结构,就是进程控制块数据结构,也就是一个结构体, PCB 是操作系统最重要的记录型数据结构,其实就是进程控制块这个结构体,是操作系统最重要的记录型数据结构,它保存了进程的一些信息,它记录了用于描述进程进展情况及控制进程运行所需要的全部信息,所以进程控制块就类似于人的档案,在程序当中它就是一个结构体变量,存储一个进程的信息,注意进程控制块是进程存在的唯一标志,什么意思?好比人的档案是这个人存在的唯一标志,档案没了,国家就认为这个人不存在了,就不承认此人的存在。
2、调度数据
然后在 Linux 当中进程控制块存放在一个 task_struct 类型的结构体当中,有空的时候可以搜一下这个结构里面有什么东西,这个结构体当中有些调度数据,比如进程的状态标志、进程的优先级、进程调度策略、还有一些时间数据,那创建该进程的时间,它在用户态运行的时间、在内核态运行的时间,比如是个人,会有一个睡觉的时间,以及不睡觉的时间、什么时候出生的、什么时候上的小学、什么时候上的高中、大学上了几年等等,就类似的意思。
3、文件系统数据
(1)umask 掩码
有些文件系统相关的数据,还有一个 umask 掩码,此 umask 回头再进行补充,上节有讲到open ,没有就创建一个文件,创建一个文件的时候,假设设的权限是0778,可读可写可执行,其实它有几个权限被屏蔽掉了,就是通过 umask 掩码被屏蔽的,这是什么意思?
看以下代码:
[01_day]1s
Aaa.txt dest.txt my_cp my_cp read read.c test.txt wanqi.txt
[01_day]umask
0002
[01_day]000 000 010
可以看到 umask 亚马是002,002应该是化成二进制的,化成二进制就应该是000 000,然后其它组用户是010,意思是什么?
假如1被设成077就是全1了,其中1就被屏蔽成零,其他用户没有写权限,它就会把写权限的给屏蔽掉,这是 umask 掩码。
(2)文件描述符表
接下来讲文件描述符表等一个信息,文件描述符的作用范围是进程,在进程当中一个文件描述符代表一个文件,它有一个文件描述符的表等等一些信息,所以知道此概念就行。
三、本节小结
总结一下什么是进程控制块,进程控制块其实就是一个结构体,操作系统在创建进程的时候会申请一个结构体,结构体当中存储了进程的信息,操作系统根据结构体来管理进程,这被称为进程控制块,了解这个概念就行了,这类似于人的档案。