第二章 进程的描述与控制

目录

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

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 线程的组织与控制

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【状态估计】无迹卡尔曼滤波(UKF)应用于FitzHugh-Nagumo神经元动力学研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【ProNoC】Chap.1 ProNoC生成2x2的mesh型的4核片上网络系统;实现NoC的RTL设计

【ProNoC】Chap.1 ProNoC生成2x2的mesh型的4核片上网络系统;实现NoC的RTL设计 0. NoC多核片上网络生成器ProNoCProNoC的功能实现 1. 生成一个叫做Mor1kx SoC的单个Tile(包含NI网络接口)1.1 打开ProNoC用于生成Tile的GUI界面1.2 为Tile添加时钟…

团体程序设计天梯赛-练习集L1篇①

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

【Servlet学习一】认识Servlet 创建第一个Servlet项目

目录 🌟需要知道: 🌈1、Tomcat是什么? 🌈 2、Maven 🌟一、认识Servlet 🌈1、Servlet是什么? 🌈2、实现第一个Servlet项目。 🌈3、简单了解Postman工具…

LTV-6314-ASEMI代理台湾光宝高速光耦LTV-6314

编辑:ll LTV-6314-ASEMI代理台湾光宝高速光耦LTV-6314 型号:LTV-6314 品牌:台湾光宝 封装:LSOP-6 引脚数量:6 类型:光耦 特性:台湾光宝、IGBT驱动器、储能专用光耦\高速光耦 …

云服务器ECS_云主机_服务器托管_弹性计算-阿里云

阿里云服务器ECS(Elastic Compute Service)是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云服务器网分享阿里云服务器ECS详细介…

基于深度学习的高精度鸽子检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度鸽子检测识别系统可用于日常生活中或野外来检测与定位鸽子目标,利用深度学习算法可实现图片、视频、摄像头等方式的鸽子目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

Java8 List集合如何指定打印分隔符

目录 背景方法一:String.join(推荐)方法二:Collectors.joining总结 背景 无论是在学习还是日常的应用开发过程中,我们经常会需要使用分隔符将 List 集合打印出来。 如下所示: import java.util.Arrays;pub…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

基于flask的web应用开发——搭建一个云盘

目录 0. 前言1. 实现开放下载链接2. 稍加改装3. 效果演示4. 云服务器项目部署 0. 前言 本节利用 flask 开放下载链接 操作系统:Windows10 家庭版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:fla…

CSS基础学习--14 Position(定位)

一、定义 position属性指定了元素的定位类型 position 属性的五个值: staticrelativefixedabsolutesticky 元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有…

leetcode90. 子集 II(java)

子集II leetcode90. 子集 II题目描述解题思路代码演示 回溯算法专题 leetcode90. 子集 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/subsets-ii 题目描述 给你一个整数数组 nums ,其中可能包含重复元素…

服务器配置远程vscode

1 使用sftp同步远程代码 打开vscode,在扩展种搜索sftp,点击安装。   按住快捷键shiftctrlp,可以打开界面顶部的命令行,输入sftp,点击如下图的config选项:   会自动在.vscode目录下创建一个名为sftp.j…

Go语言实现单链表

博主最近在学习Go语言,所以打算更新一期Go语言版本的数据结构。这篇文章将的是Go语言如何实现单链表。 文章目录 前言一、个人见解,为什么学GO?二、Go语言实现单链表1.创建节点2.通过数组创建一个单链表3.遍历单链表4.单链表插入操作4.1 伪代…

基于AutoJs7实现的薅羊毛App专业版源码大分享

源码下载链接:https://pan.baidu.com/s/1QvalXeUBE3dADfpVwzF_xg?pwd0736 提取码:0736 专业版肯定比个人版功能强大并且要稳定。增加了很多功能的同时也测试封号的App,对于封号的App,给予剔除。虽然App数量减少了但是都是稳定的…

图书推荐|Python数据分析与挖掘实战(第2版)

Python数据分析与挖掘实战(第2版)一共分为三个部分,包括基础篇(第1~5章)、实战篇(第6~12章)、提高篇(第13章)。其中基础篇介绍了数据挖掘的基本原…

linux部署rabbitmq开启mqtt插件由于监听1883端口导致重启rabbitmq失败的解决方法

linux部署rabbitmq开启mqtt插件由于监听1883端口导致重启rabbitmq失败的解决方法 第一步:部署rabbitmq 部署rabbitmq请移步(在这里可以找到erlang和rabbitmq适配的版本并下载安装包): https://blog.csdn.net/char1otte/article/de…

Flutter - 命令行工具源码调试环境搭建

文章目录 前言开发环境环境搭建运行测试调试测试最后 前言 开发Flutter项目时难免会遇到各种问题,源码调试对于问题的解决不可或缺。 对于Flutter框架项目的源码调试,如果是Flutter核心库调试,只需要创建一个Flutter项目并在项目中使用需要…

SpringCloud搭建Eureka服务注册中心(六)

前面说过eureka是c/s模式的 server服务端就是服务注册中心,其他的都是client客户端,服务端用来管理所有服务,客户端通过注册中心,来调用具体的服务; 我们先来搭建下服务端,也就是服务注册中心&#xff1b…

ansible-playbook

Ansible 的脚本 — playbook 剧本 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3&a…