第二章 进程的描述与控制

news2024/9/21 16:39:52

目录

一、进程的概念、组成、特征

1.1 进程的概念

1.1.1 程序

1.1.2 进程

1.2 进程的组成

1.3 进程控制块PCB

1.4 进程的特征

二、进程的状态与转换

2.1 进程的状态

2.2 创建态、就绪态

2.3 运行态

2.4 阻塞态

2.5 终止态

2.6 进程状态的转换

2.7 进程的组织

三、进程控制 

3.1 如何实现进程控制

3.2 如何实现原语的“原子性”

3.3 进程控制相关的原语

3.3.1 创建原语

3.3.2 撤销原语 

3.3.3 阻塞原语和唤醒原语 

3.3.4 切换原语 ​编辑

3.4 程序是如何运行的

四、线程的概念

4.1 什么是线程,为什么要引入线程

4.2 引入线程机制后,有什么变化

4.3 线程的属性

五、线程的实现方式和多线程模式

5.1 线程的实现方式

5.1.1 用户级线程

5.1.2 内核级线程

5.2 多线程模型

5.2.1 一对一模型

5.2.2 多对一模型

5.2.3 多对多模型

六、线程的状态与转换

6.1 线程的状态与转换

6.2 线程的组织与控制


一、进程的概念、组成、特征

1.1 进程的概念

1.1.1 程序

是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。

1.1.2 进程

  • Process,是动态的,是程序的一次执行过程。
  • 同一个程序多次执行会对应多个进程。
  • 当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”—— PID (Process ID,进程ID)。

1.2 进程的组成

1.3 进程控制块PCB

以上信息都被保存在一个数据结构PCB ( Process Control Block)中,即进程控制块。操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。

1.4 进程的特征

二、进程的状态与转换

2.1 进程的状态

2.2 创建态、就绪态

2.3 运行态

2.4 阻塞态

2.5 终止态

2.6 进程状态的转换

2.7 进程的组织

三、进程控制 

3.1 如何实现进程控制

3.2 如何实现原语的“原子性”

正常情况下,CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。

3.3 进程控制相关的原语

3.3.1 创建原语

3.3.2 撤销原语 

3.3.3 阻塞原语和唤醒原语 

3.3.4 切换原语 

3.4 程序是如何运行的

四、线程的概念

4.1 什么是线程,为什么要引入线程

  • 线程是一个基本的CPU执行单元,也是程序执行流的最小单位。可以把线程理解为“轻量级进程”。
  • 引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)。
  • 引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

4.2 引入线程机制后,有什么变化

4.3 线程的属性

五、线程的实现方式和多线程模式

5.1 线程的实现方式

5.1.1 用户级线程

5.1.2 内核级线程

5.2 多线程模型

在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分为几种多线程模型:

  • 一对一模型
  • 多对一模型
  • 多对多模型

5.2.1 一对一模型

5.2.2 多对一模型

5.2.3 多对多模型

六、线程的状态与转换

6.1 线程的状态与转换

6.2 线程的组织与控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++篇】C++字符串:标准库string类

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…

python3.9 安装 pyspider

安装pyspider pip install pyspider 直接报错 Please specify --curl-dir/path/to/built/libcurl 于是从PythonLibs官网 中获取依赖并自行下载到本地 下载与3.9对应的 执行安装 pip install D:\下载\ad3-2.2.1-cp39-cp39-win32.whl 安装成功之后 执行 pip install p…

1748_Perl中使用通配符处理文件

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) 使用通配符处理文件一般是用于文件的拷贝、删除以及对文件逐个分析等功能。在Perl中遇到的相应的功能基本上也是如此。通配符匹配处理文件(文件名)需要使…

前端JavaScript入门-day01

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 JavaScript 介绍 1 JavaScript 是什么 1. JavaScript (是什么?) 2. 作…

H. Don‘t Blame Me(DP)

Problem - 1829H - Codeforces 很遗憾,这道题目的出题人没有想到一个有趣的故事,所以他只是让你解决以下问题。 给定由n个正整数组成的数组a,计算具有子序列中元素的按位AND在其二进制表示中恰好有k个设置位的非空子序列的数量。答案可能很大…

Winwebmail搭建邮件服务器

配置环境 角色系统IP地址DNS邮件服务器WindowServer2016192.168.1.1/24192.168.1.1客户端1Window10192.168.1.10/24192.168.1.1客户端2Window10192.168.1.20/24192.168.1.1 Winwebmail介绍 WinWebMail是安全高速的全功能邮件服务器,融合强大的功能与轻松的管理为…

macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布,ISO、IPSW、PKG 下载

macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布,ISO、IPSW、PKG 下载 本站下载的 macOS Ventura 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安…

C++ 指针常量与常量指针

指针常量与常量指针的翻译就好比机器学习中Regularization翻译成正则化一样,讲真,正则化这个说法确实要比规则化显得高端些,但是到了理解的时候,还是要按照规则化理解。 指针常量与常量指针这个概念是一样的,英文里没…

【STM32】软件I2C(支持多字节)

I2C简介 I2C总线是一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。 在一个i2c通讯总线中,可连接多个i2c通讯设备&a…

Linux国产操作系统,UCA-系统工程师学习必备技能,系统状态查询和进程管理,uname命令last命令 top命令和 ps命令 kill命令

目录 ​编辑 1.系统状态查询 1. 1.uname命令 1.2. last命令 1.3. top命令 2.进程管理 2.1. ps命令 2.2. kill命令 1.系统状态查询 1. 1.uname命令 rootuos~#: uname rootuos~#: uname -r 4.19是内核,0-6-amd64是架构。 rootuos~#: uname -a eagle操作系统的…

【深入浅出 Spring Security(十一)】授权原理分析和持久化URL权限管理

授权原理分析和持久化URL权限管理 一、必须知道的三大组件(Overview)二、FilterSecurityInterceptor 源码分析SecurityMetadataSource 分析 三、自定义 FilterSecurityMetadataSource 对象(实战)自定义表CustomSecurityMetadataSo…

【C++】构造函数调用规则

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。 1、缘起 (1)默认情况下,C 编译器至少给一个类添加 3 个函数 ① 默认构造函数(无参&#…

多无人车自动编队

matlab2016b可运行 Kaveh Fathian - Distributed Formation Control of Cars with Collision Avoidance (google.com)

极致呈现系列之:Echarts桑基图的流动旋律

目录 什么是桑基图桑基图的特点及应用场景Echarts中桑基图的常用属性Vue3中创建桑基图美化桑基图 在各种复杂系统中,我们经常需要了解不同流量之间的关系和流动情况。这种信息的可视化呈现对于我们理解系统的结构和转移过程至关重要。桑基图作为一种强大的可视化工具…

Lambda and Collections

我们先从最熟悉的Java集合框架(Java Collections Framework, JCF)开始说起。 为引入Lambda表达式,Java8新增了java.util.funcion包,里面包含常用的函数接口,这是Lambda表达式的基础,Java集合框架也新增部分接口,以便与…

tf卡打不开怎么办?tf卡数据丢失怎么恢复

TF卡打不开怎么办?当TF卡中的数据丢失后,又如何恢复呢?下面小编已为您梳理和归纳了答案!请继续阅读下文。 一、TF卡打不开怎么办? 首先,我们需要了解导致TF卡读不出来的具体原因,这可能包括没…

ch8_4中断系统

为什么需要中断? 输入,输出。 计算机程序调试;发生异常事件; 都需要由中断系统进行处理. 引发中断的各种因素包括:人为设置中断,程序性事故, 硬件故障,I/O设备,外部事件等…

英伟达驱动安装

https://zhuanlan.zhihu.com/p/60307377 https://www.nvidia.cn/Download/index.aspx?langcn

路由器的工作原理详解

什么叫路由? 路由器的英文是 Router,也就是「找路的工具」。找什么路?寻找各个网络节点之间的路。 换句话说,路由器就像是快递中转站,包裹会经过一个个的中转站,从遥远的地方寄到你家附近,数据…

驱动开发:内核远程线程实现DLL注入

在笔者上一篇文章《驱动开发:内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过NtCreateThreadEx这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中…