进程控制块|学习笔记

简介: 快速学习进程控制块

开发者学堂课程【物联网开发- 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)文件描述符表

接下来讲文件描述符表等一个信息,文件描述符的作用范围是进程,在进程当中一个文件描述符代表一个文件,它有一个文件描述符的表等等一些信息,所以知道此概念就行。

 

三、本节小结

总结一下什么是进程控制块,进程控制块其实就是一个结构体,操作系统在创建进程的时候会申请一个结构体,结构体当中存储了进程的信息,操作系统根据结构体来管理进程,这被称为进程控制块,了解这个概念就行了,这类似于人的档案。

相关文章
|
Kubernetes Ubuntu Cloud Native
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
271 0
|
消息中间件 Shell Linux
计算机操作系统学习笔记(7)——进程通信
计算机操作系统学习笔记(7)——进程通信
186 0
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理
119 0
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
134 0
Go语言学习笔记-进程和线程
|
安全 算法 调度
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
301 1
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
|
算法 调度 C++
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
483 1
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
|
算法 调度
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(二)
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
611 1
409操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(二)
|
存储 消息中间件 程序员
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(一)
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
893 1
408操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(一)
|
Linux
计算机操作系统学习笔记(6)——进程和线程
计算机操作系统学习笔记(6)——进程和线程
225 0
|
存储 算法 程序员
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)

热门文章

最新文章