当前课程知识点:操作系统(RISC-V) >  第九讲 进程和线程 >  9.2 进程控制块 >  9.2 进程控制块

返回《操作系统(RISC-V)》慕课在线视频课程列表

9.2 进程控制块在线视频

9.2 进程控制块

下一节:9.3 进程状态

返回《操作系统(RISC-V)》慕课在线视频列表

9.2 进程控制块课程教案、知识点、字幕

接下来我们介绍进程控制块

进程控制块是进程当中的重要信息

它负责控制

由操作系统控制和

管理进程运行的过程

那进程控制块到底是干什么的

然后它如何用

里头到底有些什么样的信息

我们在这儿呢一一来进行讨论

进程控制块是管理和控制进程

运行所需的信息的集合

那在这些信息里头呢它是有些啥呢

进程的基本信息你比如说它的ID

它执行的是哪一个程序

以及它运行变化的过程

那就是进程的状态

那进程控制块呢是

进程存在的唯一标志

也就是说我任何一个进程

只要它创建了它存在了

它一定有一个

跟它相对应的进程控制块

那一个进程结束了

那它进程控制块呢

也就必然被操作系统回收

好那这时候说

我们这进程块怎么来用呢

那在创建的时候

生成该进程的进程控制块

然后结束的时候

回收它的进程控制块

在中间使用的时候呢

那对进程的所有操作都是

通过进程控制块来实现的

那具体进程控制块里都有些什么

它们是如何组织的呢

以及于我们在进程在

执行过程当中它的状态

到底怎么变化呢

都和这个进程控制块是密切相关的

下面我们先来说进程控制块的内容

进程控制块里的内容呢有标识信息

然后再一类呢

就是我多个进程交替运行

如果你不交替运行的话

第二条你是不需要保存的

好交替运行的时候交替的部分

交替完了之后会被

另外的进程使用的部分的内容呢

你都必须保护下来

那这就是处理机的现场保护

然后再一些呢就是进程控制的信息

那这是我们进程在内存当中的印象

好我们加载的时候呢就是在

内存当中形成这样一段存储区域

存储相应的代码和其它的一些内容

好我们在这里进程控制块里是什么

就从这里抽出一部分信息

来放到我的进程控制块里头

实际上这一块呢

也是存到内存里的某个位置

内核当中的

比如说关键的信息就是

当前指令指针这个P

指向的到底是哪个地方

好第二个是说我在这里头

函数调用和返回

当时的栈顶在什么地方

那这是至关重要的

然后再有你比如说它的标识信息ID

然后它的控制信息调度和这里的

其它寄存器就是你现场保护的时候

别的进程执行的时候要用到寄存器

你在这儿都必须保存

那具体说起来在这里头

控制信息有些啥呢

控制信息呢一个是以调度相关的

那就包括调度的信息

和它的进程的状态

因为它依据状态来决定我如何调度

然后进程之间的通讯信息

任何一个进程它在执行过程当中

你一定要跟外界打交道

比如说我处理不同的数据

读入不同的数据来进行处理

如果没有这一条的话

那这个程序的用处也就很小了

好然后再一个是存储的信息

我这个进程占用了哪些存储空间

那对应的位置是什么样的

你在用完之后

你还必须还给操作系统

好再就是进程占用的资源

你比如说我打开的文件

那这些你在结束的时候是要回收的

以及于我的进程状态的变化体现为

进程控制块所在的

各种各样的链表里头

或者说索引表里头

对应的这些连接关系

那在这儿都是通过

相应的进程队列来实现的

这是进程控制的信息

好 那么进程控制块组织呢

有多种多样的方式

你比如说表 链表 索引

和各种各样的数据结构都可能会用到

在我们这里头呢

我们简单的说两种

一种是链表

那一个元素指向下一个元素

下一个元素再指向下一个

以同一类型的构成一个链表

那比如说在这个地方

那我们就有就绪和等待

这两个进程状态的链表

那这个链表分别是就绪

有三个

这个等待的是三个

那分别是它们组织成两个不同的链表

然后第二种呢是说我们可以用索引

把通过指针指向进程控制块的指针

放到索引表里头

那不同的状态的呢

我构成不同的索引表

这个刚才说的链表同样的

我可以用类似的办法来

组织成索引表

那我们实际上在操作系统里头呢

你原来在数据结构当中

学到的各种各样的数据结构

在这个地方

都会在后续里头呢不断得到体现

好那我们到这儿呢就说清楚了

进程控制块它是干什么的

它是如何来用

以及于里头到底

都有一些什么样的信息

那我们这地方介绍呢还都很初步

那下面通过程序里

实现里内容的来看

对进程控制块里头到底准确的来说

哪个系统里都有一些什么

操作系统(RISC-V)课程列表:

第一讲 操作系统概述

-1.1 课程概述

--课程概述

-1.2 教学安排

--视频

-1.3 什么是操作系统

--Video

-1.4 为什么学习操作系统,如何学习操作系统

--Video

-1.5 操作系统实例

--视频

-1.6 操作系统的演变

--视频

-1.7 操作系统结构

--视频

-1.8 OS实验概述

--视频

第二讲 操作系统与系统结构和程序设计语言

-2.1 从OS角度看计算机系统

--2.1 从OS角度看计算机系统

-2.2 从OS角度看RISC-V

--2.2 从OS角度看RISC-V

-2.3 Rust语言与系统编程

--2.3 Rust语言与系统编程

-2.4 RISC-V CPU启动

--2.4 RISC-V CPU启动

-2.5 RISC-V CPU启动进一步分析

--2.5 RISC-V CPU启动进一步分析

第三讲 中断、异常和系统调用

-3.1 基本概念与原理

--3.1 基本概念与原理

-3.2 硬件架构支持

--3.2 硬件架构支持

-3.3 中断处理机制

--3.3.1 中断处理机制–Overview

--3.3.2 中断处理机制–Detail-1

--3.3.3 中断处理机制–Detail-2

--3.3.4 中断处理机制–Detail-3

--3.3.5 中断处理机制–Summary

-3.4 系统调用

--3.4 系统调用

第四讲 物理内存管理: 连续内存分配

-4.1 计算机体系结构和内存层次

--4.1 计算机体系结构和内存层次

-4.2 地址空间和地址生成

--4.2 地址空间和地址生成

-4.3 连续内存分配

--4.3 连续内存分配

-4.4 碎片整理

--4.4 碎片整理

-4.5 伙伴系统

--4.5 伙伴系统

-4.6 SLAB分配器

--4.6 SLAB分配器

第五讲 物理内存管理: 非连续内存分配

-5.1 非连续内存分配的需求背景

--5.1 非连续内存分配的需求背景

-5.2 段式存储管理

-- 5.2 段式存储管理

-5.3 页式存储管理

--5.3 页式存储管理

-5.4 页表概述

--5.4 页表概述

-5.5 快表和多级页表

--5.5 快表和多级页表

-5.6 RISC-V页映射机制

--5.6 RISC-V页映射机制

-5.7 使能RISC-V页表

--5.7 使能RISC-V页表

第六讲 虚拟存储概念

-6.1 虚拟存储的需求背景

--6.1 虚拟存储的需求背景

-6.2 覆盖和交换

--6.2 覆盖和交换

-6.3 局部性原理

--6.3 局部性原理

-6.4 虚拟存储概念

--6.4 虚拟存储概念

-6.5 虚拟页式存储

--6.5 虚拟页式存储

-6.6 缺页异常

--6.6 缺页异常

-6.7 RISC-V缺页异常

--6.7 RISC-V缺页异常

第七讲 虚拟存储:局部页面置换算法

-7.1 页面置换算法的概念

--7.1 页面置换算法的概念

-7.2 最优算法、先进先出算法和最近最久未使用算法

--7.2 最优算法、先进先出算法和最近最久未使用算法

-7.3 时钟置换算法和最不常用算法

--7.3 时钟置换算法和最不常用算法

-7.4 Belady现象和局部置换算法比较

--7.4 Belady现象和局部置换算法比较

-7.5 页表自映射

--7.5 页表自映射

第八讲 虚拟存储:全局页面置换算法

-8.1 工作集置换算法

--8.1 工作集置换算法

-8.2 缺页率置换算法

--8.2 缺页率置换算法

-8.3 抖动和负载控制

--8.3 抖动和负载控制

-8.4 面向缓存的页替换算法

--8.4.1 面向缓存的页替换算法-FBR

--8.4.2 面向缓存的页替换算法-LRU-K 2Q

--8.4.3 面向缓存的页替换算法-LIRS

第九讲 进程和线程

-9.1 进程的概念

--11.1 进程的概念

-9.2 进程控制块

--9.2 进程控制块

-9.3 进程状态

--9.3 进程状态

-9.4 三状态进程模型

--9.4 三状态进程模型

-9.5 挂起进程模型

--9.5 挂起进程模型

-9.6 线程的概念

--9.6 线程的概念

-9.7 用户线程

--9.7 用户线程

-9.8 内核线程

--9.8 内核线程

-9.9 进程地址空间与熔断 (meltdown) 漏洞

--9.9 进程地址空间与熔断 (meltdown) 漏洞

第十讲 进程和线程控制

-10.1 进程切换

--10.1 进程切换

-10.2 进程创建

--10.2 进程创建

-10.3 进程加载

--10.3 进程加载

-10.4 进程等待与退出

--10.4 进程等待与退出

-10.5 rCore进程和线程控制

--10.5 rCore进程和线程控制

第十一讲 处理机调度

-11.1 处理机调度概念

--11.1 处理机调度概念

-11.2 调度准则

--11.2 调度准则

-11.3 先来先服务、短进程优先和最高响应比优先调度算法

--11.3 先来先服务、短进程优先和最高响应比优先调度算法

-11.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

--11.4 时间片轮转、多级反馈队列、公平共享调度算法和ucore调度框架

-11.5 实时调度

--11.5 实时调度

-11.6 优先级反置

--11.6 优先级反置

-11.7 rCore调度框架

--11.7 rCore调度框架

第十二讲 多处理机调度

-12.1 对称多处理与多核架构

--12.1 对称多处理与多核架构

-12.2 多处理器调度概述

--12.2 多处理器调度概述

-12.3 O(1)调度

--12.3 O(1)调度

-12.4 CFS调度

--12.4 CFS调度

-12.5 BFS调度算法

--12.5 BFS调度算法

第十三讲 同步互斥

-13.1 背景

--13.1 背景

-13.2 现实生活中的同步问题

--13.2 现实生活中的同步问题

-13.3 临界区和禁用硬件中断同步方法

--13.3 临界区和禁用硬件中断同步方法

-13.4 基于软件的同步方法

--13.4 基于软件的同步方法

-13.5 高级抽象的同步方法

--13.5 高级抽象的同步方法

第十四讲 信号量与管程

-14.1 信号量

--14.1 信号量

-14.2 信号量使用

--14.2 信号量使用

-14.3 管程

--14.3 管程

-14.4 哲学家就餐问题

--14.4 哲学家就餐问题

-14.5 读者-写者问题

--14.5 读者-写者问题

-14.6 Rust语言中的同步机制

--14.6 Rust语言中的同步机制

第十五讲 死锁和并发错误检测

-15.1 死锁概念

--15.1 死锁概念

-15.2 死锁处理方法

--15.2 死锁处理方法

-15.3 银行家算法

--15.3 银行家算法

-15.4 死锁检测

--15.4 死锁检测

-15.5 并发错误检测

--15.5 并发错误检测

第十六讲 进程通信

-16.1 进程通信概念

--16.1 进程通信概念

-16.2 信号和管道

--16.2 信号和管道

-16.3 Linux信号机制

--16.3 Linux信号机制

-16.4 消息队列和共享内存

--16.4 消息队列和共享内存

-16.5 D-Bus机制

--16.5 D-Bus机制

-16.6 Binder机制

--16.6 Binder机制

第十七讲 文件系统概念

-17.1 文件系统和文件

--17.1 文件系统和文件

-17.2 文件描述符

--17.2 文件描述符

-17.3 目录、文件别名和文件系统种类

--17.3 目录、文件别名和文件系统种类

-17.4 虚拟文件系统

--17.4 虚拟文件系统

-17.5 文件缓存和打开文件

--17.5 文件缓存和打开文件

-17.6 文件分配

--17.6 文件分配

-17.7 空闲空间管理和冗余磁盘阵列RAID

--17.7 空闲空间管理和冗余磁盘阵列RAID

第十八讲 文件系统实例

-18.1 FAT文件系统

--18.1 FAT文件系统

-18.2.1 EXT4文件系统-历史

--18.2.1 EXT4文件系统-历史

-18.2.2 EXT4文件系统-支持大容量存储

--18.2.2 EXT4文件系统-支持大容量存储

-18.2.3 EXT4文件系统-支持恢复异常

--18.2.3 EXT4文件系统-支持恢复异常

-18.3 ZFS文件系统

--18.3 ZFS文件系统

第十九讲 I/O子系统

-19.1 I/O特点

--19.1 I/O特点

-19.2 I/O结构

--19.2 I/O结构

-19.3 I/O数据传输

--19.3 I/O数据传输

-19.4 磁盘调度

--19.4 磁盘调度

-19.5 Linux I/O子系统

--19.5 Linux I/O子系统

第二十讲 内核与程序设计语言

-20.1 Linux内核错误分析

--20.1 Linux内核错误分析

-20.2.1 用rust写操作系统-系统编程语言rust

--20.2.1 用rust写操作系统-系统编程语言rust

-20.2.2 用rust写操作系统-rust与操作系统开发

--20.2.2 用rust写操作系统-rust与操作系统开发

第二十一讲 异步编程 (Asynchronous Programming)

-21.1 Background

--21.1 Background

-21.2 Futures in Rust

--21.2 Futures in Rust

-21.3 Generators and async/await

--21.3 Generators and async/await

-21.4 Self-Referential Structs & Pin

--21.4 Self-Referential Structs & Pin

-21.5 Waker and Reactor

--21.5 Waker and Reactor

第二十二讲 Virtual Machine Monitor

-22.1 Overview

--22.1 Overview

-22.2.1 How VMM works - CPU

--22.2.1 How VMM works - CPU

-22.2.2 How VMM works - memory & I/O

--22.2.2 How VMM works - memory & I/O

9.2 进程控制块笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。