26计算机操作系统408考研-操作系统进程与线程篇章(三)

news2024/9/21 0:46:26

操作系统进程与线程篇章

`

文章目录

  • 操作系统进程与线程篇章
  • 前言
  • 一、进程概念
    • 进程控制块
    • 进程创建
    • 进程终止
    • 进程的阻塞和唤醒
      • 进程唤醒
    • 进程挂起和激活
  • 线程
    • 多线程
    • 线程实现与线程模型
  • 总结
    • 互斥和同步
    • 并发原理
    • 硬件同步
    • 信号量机制
    • 信号量的应用
    • 管程
    • 经典同步问题
    • 消息传递


前言


一、进程概念

3.1.1 程序的顺序执行及其特征

  1. 程序的顺序执行
    通常可以把一个应用程序分成若干个程序段,各程序段之间必须按照某种先后次序顺序执行,仅当前一程序段(操作)执行完后,才能执行后继程序段(操作)。

  2. 程序的顺序执行
    在这里插入图片描述
    图 3.1 多道程序的顺序执行

3.1.1 程序的顺序执行及其特征

  1. 顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在上一个操作结束之后开始。
  2. 封闭性:程序是在封闭的环境下执行的,即程序运行时独占整个系统资源,资源的状态(除初始状态外)只有本程序可以改变。
  3. 可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它的执行方式如何,是连续执行,还是“走走停停”的执行,其结果都是相同的。

3.1.2 程序的并发执行及其特征

  1. 程序的并发执行
    为了提高计算机的利用率、处理速度和系统的吞吐量,并行处理技术和并发程序设计技术在计算机中已经得到了广泛应用,成为了现代操作系统的基本特征之一。
    在这里插入图片描述

前趋图的引入:前趋图是一个有向无环图(Directed Acyclic Graph, DAG)
考虑具有以下四条语句的一个程序段:

           S1: a:=x+2;
           S2: b:=y+4;
           S3: c:=a+b;
           S4: d:=c+b;

在这里插入图片描述

3.1.2 程序的并发执行及其特征

  1. 间断(异步)性:程序在并发执行时,由于它们共享系统资源,以及为了完成同一任务而相互合作,致使这些并发程序之间形成了相互制约的关系。
  2. 失去封闭性:程序在并发执行时,多个程序共享系统中的各种资源,因此,系统资源的状态将由多个程序来改变,致使程序失去了封闭性。
    3.不可再现性: 程序在并发执行时,由于失去了封闭性,也将导致其失去执行的可再现性。

3.1.3 进程的概念及其特征

使程序能够并发执行,并能够对并发执行的程序进行描述和控制 ——进程

已有的进程定义:

  • 进程是程序的一次执行;
  • 进程是可以和别的计算并发执行的计算;
  • 进程是定义在一个数据结构上,并能够在其上进行操作的一个程序;
  • 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

我们将进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

程序和进程之间的区别与联系:

程序是完成特定任务的一组指令的结合,可以永久保存,具有静态性;

进程是程序在某一数据结构上的一次执行过程,是系统进行资源分配和调度的基本单位,具有动态性;

一个进程可以包含多个程序,一个程序也可以被多个进程执行。

3.1.4 进程状态

包含 运行态(Running)非运行态(Not running) 两种进程状态

创建了一个新进程之后,它会以非运行态加入到系统中,等到操作系统为其分派处理器

当前处于运行态的进程会不时地中断,由系统中的分派器选择处于非运行状中的某一个进程运行

在这里插入图片描述

在这里插入图片描述
2.五状态模型

  • 包括就绪态(Ready)、运行态(Running)、阻塞态(Blocked)、新建态(New)和终止态(Terminate)

进程状态描述:

新建态:刚刚创建的新进程,通常是指进程控制块已经创建,但还没有加载到系统内存中的进程。

就绪态:进程等待系统为其分派处理器,而此时处理器被其它进程占据,所以该状态进程不能执行,但已经具备了除处理器之外的进程执行所需要的所有条件。

运行态:进程已获得所需资源并占据处理器,处理器正在执行该进程。

阻塞态:也称为等待态、挂起态或睡眠态,进程在等待某个事情的发生而暂时不能运行,例如等待某个I/O操作的完成。

终止态:进程或者因为执行结束或者因为被撤销而从可执行进程组中退出。

在这里插入图片描述

进程状态间可能的转换及原因有:

  • 新建→就绪:系统纳入一个新进程。
  • 就绪→运行:进程被调度程序选中,占据处理器而进入运行状态。
  • 运行→终止:进程运行结束或被撤销则退出系统进入终止态。
  • 运行→就绪:进程分配的占据处理器的时间片已经用完,或者是具有更高优先级的进程进入系统,当前正在运行的进程被抢占了处理器,此时进程从运行态转换到就绪态。
  • 运行→阻塞:进程在等待系统分配资源或者等待某些事件的发生,进程让出处理器由运行态转入阻塞态。
  • 阻塞→就绪:处于阻塞队列中的进程等待的资源可用或者等待的事件发生之后,进程从阻塞态转换到就绪态,等待处理器选中它运行。

挂起状态的引入

对于内存中的多个进程,处理器依次选中运行,当一个进程正在等待I/O事件发生时,处理器转移到另一个进程。但是,处理器的速度比I/O要快很多,有可能内存中所有进程都在等待I/O事件的完成,导致处理器处于空闲状态。

引入挂起(Suspend)的概念:内存中没有就绪的进程时,系统将内存中处于阻塞的进程换出到外存中的挂起队列,而将外存中的就绪进程激活,换入到内存.

在这里插入图片描述

进程控制块

进程控制块(Process control block, PCB)是操作系统用来记录进程状态和相关信息,控制进程运行的数据结构,是进程的唯一标识符.

在PCB中,主要包含如下的信息:
在这里插入图片描述

进程控制是进程管理中最基本的功能

在操作系统中,不同功能都是通过执行各种原语(Primitive)操作实现

原语是由若干条指令构成、可完成特定功能的程序段.

进程创建

引起进程创建的事件:
批处理作业
用户登录
提供服务
进程派生

创建一个新进程的具体步骤:

(1)系统为新建进程申请一个空白的进程控制块,获得一个唯一的进程标识符。
(2)系统为新建进程分配运行所需的资源,包括:内存、处理器时间、I/O设备等。
(3)进程控制块(PCB)初始化。
(4)设置链接,如果就绪队列允许新进程插入,则将新进程插入就绪队列。

引起进程终止的事件:

在这里插入图片描述

进程终止

终止原语的具体步骤:

(1)根据需要终止进程的进程标识符,从PCB集合中查找对应的进程,从中读出该进程的状态。
(2)若被终止进程正处在执行状态,则应立即终止该进程的执行,并设置相应的调度信息,用于指示该进程被终止后应重新进行调度。
(3)将被终止进程所拥有的所有资源归还给其父进程,或者归还给系统。
(4)若被终止进程还拥有子孙进程,则将其所有子孙进程一并终止。
(5)归还PCB所占据的空间。

进程的阻塞和唤醒

进程阻塞是指进程在执行过程中因等待某个事件的发生或等待某个操作的完成而不得不让出处理器。

引起进程阻塞的主要事件有:

  1. 请求系统服务。
  2. 启动某种操作。
  3. 新数据尚未到达。
  4. 无新工作可做。

阻塞原语(Block primitive)的具体步骤:

(1)正在执行的进程立即终止执行,把PCB中的进程状态由执行改为阻塞,并将处理机状态写入PCB中。
(2)将PCB插入阻塞队列中,等到事件的发生或操作的完成。
(3)系统将处理机重新分派给另一就绪进程,按照新进程的处理机状态更新处理机环境,

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

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

相关文章

Qt 科目一考试系统(有源码)

项目源码和资源:科目一考试系统: qt实现科目一考试系统 一.项目概述 该项目是一个基于Qt框架开发的在线考试系统,主要实现了考试题目的随机抽取、考试时间限制、成绩统计等功能。用户可以通过界面操作进行考试,并查看自己的考试成绩。 二.技…

清理安卓手机广告

保存脚本另存为 Fuck_AD.sh,在手机执行后体验效果。 echo ""echo " " echo " - 开始执行清理广告库文件" sleep 3files(/data/app/*/*/lib/arm64/libpangleflipped.so/data/app/*/*/lib/arm64/libzeus_direct_dex.so/data/app/*/*/l…

力扣--哈希表13.罗马数字转整数

首先我们可以知道,一个整数,最多由2个罗马数字组成。 思路分析 这个方法能够正确将罗马数字转换为阿拉伯数字的原因在于它遵循了罗马数字的规则,并且对这些规则进行了正确的编码和处理。 罗马数字规则 罗马数字由以下字符组成&#xff1a…

第八届能源、环境与材料科学国际学术会议(EEMS 2024)

文章目录 一、重要信息二、大会简介三、委员会四、征稿主题五、论文出版六、会议议程七、出版信息八、征稿编辑 一、重要信息 会议官网:http://ic-eems.com主办方:常州大学大会时间:2024年06月7-9日大会地点:新加坡 Holiday Inn …

langchian进阶二:LCEL表达式,轻松进行chain的组装

LangChain表达式语言-LCEL,是一种声明式的方式,可以轻松地将链条组合在一起。 你会在这些情况下使用到LCEL表达式: 流式支持 当你用LCEL构建你的链时,你可以得到最佳的首次到令牌的时间(输出的第一块内容出来之前的时间)。对于一些链&#…

C语言.数据结构.顺序表

1.顺序表的概念及结构 1.1线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,…

创建FreeRTOS工程

创建STM32CubeMX工程 配置时钟 配置FreeRTOS 生成Keil MDK的工程 打开工程 结尾 这就是我们用STM32CubeMX创建的最基本的一个FreeRTOS的工程。可以看到,这个与我们使用stm32开发的裸机程序有相同的地方,也有不同的地方,我们可以发现&am…

Redis 哨兵机制的工作原理——Java全栈知识(22)

Redis 哨兵机制的工作原理 在之前的文章我们讲到了 Redis 的三种集群架构:跳转文章:Redis集群模式 接下来我们详细讲哨兵机制的作用以及实现原理 以下是 Redis 哨兵的结构图 1、Redis 哨兵的作用 哨兵的作用如下: 1、监控,2、…

Mysql基础(七)DQL之select 语句(二)

一 select 语句续 WHERE子句后面跟着的是一个或多个条件,用于指定需要检索的行COUNT(): 多少条数据 where 11 和 count(1) 与 count(*) count(1)、count(*)和count(指定字段)之间的区别 ① order by 排序 mysql 之数据排序扩展 1、使用 order by 语句来实现排序2、排序可…

数据迁移利器登场!Elasticdumpv6.110震撼发布,助你轻松搬迁大数据!

简介 Elasticdump 是一个用于导出和导入 Elasticsearch 数据的工具。它能够从一个 Elasticsearch 集群读取数据并写入到另一个 Elasticsearch 集群、文件系统或其他数据存储(例如 S3)。这个工具非常有用,特别是在进行数据迁移、备份和恢复操作…

# AI产品经理的自我修养:既懂用户,更懂技术!

今天上班的时候,发现很多AI社群都在讨论一篇播客《一个顶级AI产品经理的自我修养,对谈光年之外产品负责人Hidecloud》,这篇播客的嘉宾是光年之外的产品负责人——Hidecloud(张涛),聊了许多关于他在做AI产品…

ubuntu20.04 安装系统后-开机黑屏-nvidia显卡驱动没问题_thinkpad-intel-13700H

文章目录 硬件现象原因&解决 硬件 thinkpad p1 gen6笔记本, intel 13代cpu 13700H,nvidia rtx 2000 Ada laptop gpu 13700H应该是有集显的,但可能没装集显驱动or由于Bios设置的缘故,我的win任务管理器只能看到一个gpu(gpu0)&#xff1…

Spring Boot 01:Spring Boot 项目的两种创建方式

一、前言 记录时间 [2024-05-25] 本文讲述 Spring Boot 项目的两种创建方式,分别是 IDEA 和官网。 由 Spring 官网知,当前 Spring Boot 的最新版本为 3.3.0,需要最低 JDK 版本为 17。 Spring 官网项目创建地址JDK 17 版本下载地址 准备工作…

【Linux网络】端口及UDP协议

文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么? 1.再看四层 2.端口号 端口号(Po…

《计算机网络微课堂》1-6 计算机体系结构

常见的计算机网络体系结构 从本节课开始,我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容: 一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系…

MPLS LDP原理与配置

1.LDP基本概念 (1)LDP协议概述 (2)LDP会话、LDP邻接体、LDP对等体 (3)LSR ID 与LDP ID (4)LDP消息 ⦁ 按照消息的功能,LDP消息一共可以分为四大类型:发现…

【UE数字孪生学习笔记】 使用DataSmith对模型快速导入 UE5.3.2使用unreal DataSmith文件

声明:部分内容来自于b站,慕课,公开课等的课件,仅供学习使用。如有问题,请联系删除。 部分内容来自UE官方文档,博客等 UE5.3.2使用 3D Max 导出的unreal DataSmith文件 1. 去UE官网下载DataSmith导出器并导…

QAnything 1.4.1 中的文档解析

2024年初我们开源了QAnything,一个基于检索增强生成式应用(RAG)的本地知识库问答系统。对于本地知识库,QAnything支持多种格式的文档输入,允许用户上传包括PDF、图片、Word、PowerPoint、Excel、TXT,甚至音…

默认路由实现两个网段互通实验

默认路由实现两个网段互通实验 **默认路由:**是一种特殊的静态路由,当路由表中与数据包目的地址没有匹配的表项时,数据包将根据默认路由条目进行转发。默认路由在某些时候是非常有效的,例如在末梢网络中,默认路由可以…

牛客NC334 字典序第K小【困难 10叉树 Java/Go/PHP/C++】,力扣 440. 字典序的第K小数字

题目 题目链接: https://www.nowcoder.com/practice/670c2bda374241d7ae06ade60de33e8b https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/description/ 本答案核心 10叉树, 数学规律Java代码 import java.util.*;public class Solution {…