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

操作系统进程与线程篇章

`

文章目录

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


前言


一、进程概念

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)系统将处理机重新分派给另一就绪进程,按照新进程的处理机状态更新处理机环境,

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

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

相关文章

清华新突破||新研究揭示多智能体协作的秘密武器

获取本文论文原文PDF,请在公众号【AI论文解读】留言:论文解读点击订阅:人工智能论文解读合集 引言:多智能体协作中的挑战与机遇 在多智能体系统中,智能体需要通过协作来完成复杂的任务,这种协作涉及到通信…

Python高级进阶--slice切片

slice切片⭐⭐ 在 Python 中,切片操作是一种常见且方便的方式,用于从字符串、列表或元组中获取部分元素。这种操作通过指定起始索引、结束索引和步长来实现。下面我们来看一些关于切片的简单介绍以及一些常见用法。 1. 切片简介 取一个str、list、tup…

kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路

MM2简介 KIP-382: MirrorMaker 2.0 - Apache Kafka - Apache Software Foundation 有四种运行MM2的方法: As a dedicated MirrorMaker cluster.(作为专用的MirrorMaker群集) As a Connector in a distributed Connect cluster.&#xff08…

单片机设计注意事项

1.电源线可以30mil走线,信号线可以6mil走线 2.LDO推荐 SGM2019-3.3,RT9013,RT9193,1117-3.3V。 3.单片机VCC要充分滤波后再供电,可以接0.1uf的电容 4.晶振附件不要走其他元件,且放置完单片机后就放置晶振,晶振靠近X1,X2。

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

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

如何利用GitHubAction来发布自己的Python软件包

我们开发的python软件包如果想发布到网上,可以让其他人通过pip install下载,一般是把软件包发布到PYPI平台。 PYPI准备 我们要现在pypi注册登录一下 文件组织架构 一般的python软件包的文件组织架构为包名文件夹__init__.py程序,包文件夹的…

VBA即用型代码手册:删除Excel中空白行Delete Blank Rows in Excel

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建…

Spring Cloud学习笔记(Nacos):配置中心基础和代码样例

这是本人学习的总结,主要学习资料如下 - 马士兵教育 1、Overview2、样例2.1、Dependency2.2、配置文件的定位2.3、bootstrap.yml2.4、配置中心新增配置2.5、验证 1、Overview 配置中心用于管理配置项和配置文件,比如平时写的application.yml就是配置文件…

计算机网络套接字知识(非常详细)从零基础入门到精通

本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 学习socket api的基本用法; 一、预备知识 1.理解源IP地址和目的IP地址 ⭐在IP数据包头部中,有两个IP地址,分别叫做源IP地址和目的IP地址。 思考: 我们光有IP地址就可以完成通信了…

Linux Tcpdump抓包入门

Linux Tcpdump抓包入门 一、Tcpdump简介 tcpdump 是一个在Linux系统上用于网络分析和抓包的强大工具。它能够捕获网络数据包并提供详细的分析信息,有助于网络管理员和开发人员诊断网络问题和监控网络流量。 安装部署 # 在Debian/Ubuntu上安装 sudo apt-get install…

基于Perfetto 解读一帧的生产消费流程 Android >= S Qualcomm

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 1.这个流程里面的东西如果展开其实是有很多的 内容其实还是比较浅显的 sf处就不贴源码了 关一个Vsync就有的解释 当然笔者在流程上先形成一个思维闭环 2.如有小伙伴需要 笔…

C++完成特色旅游管理信息系统

背景: 继C完成淄博烧烤节管理系统后,我们来到了特色旅游管理信息系统的代码编写,历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述: 为了更好的管理各个服务小组,开发相应的管…

C# 拓展方法(涉及Linq)

拓展方法 定义一个扩展方法使用扩展方法例如再举个例子终极例子 注意事项与Linq 在C#中,扩展方法是一种特殊的静态方法,允许开发者向现有类型“添加”新的方法,而无需修改该类型的源代码或创建新的派生类型。这种机制提供了一种更为灵活的方式…

结构化开发方法(数据流图)

一、系统设计基本原理 二、系统总体结构设计 三、数据流图 数据流图

出口加工园区gis三维可视化系统全面整合了企业线上线下资源与服务

园区作为产业协同和经济推动的关键节点,承载着企业生产、物流和服务等多种功能,数字孪生三维可视化技术的出现,通过数字孪生和3D可视化的方式,对园区情况和运营实现实时监测和管理,提高了运营效率和协同性。 园区数字孪…

STM32 学习——1. STM32最小系统

这是一个最小系统的测试,LED灯会进行闪烁。选用PC13口,因为STM32F103C8T6 硬件开发板中,这个端口是一个LED 1. proteus8.15 原理图 2. cubemx 新建工程 3. keil 代码 while (1){HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);HAL_Delay(100);…

Css 提高 - 获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标:能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法: document.querySelector(css选择…

一套MES系统源码,技术架构springboot + vue-element-plus-admin

一、系统概述 MES全称Manufacturing Execution System,即制造执行系统,它是一套面向生产车间的管理系统。MES系统可用于实现制造业自动化和数字化转型,它可以帮助车间管理人员监控、跟踪、记录和控制从原材料到成品的产品制造流程&#xff0…

掌握Python基本语法的终极指南【基本语法部分】

一、基本语法部分 1.简单数据类型 1.1字符串类型及操作 字符串访问: 1.索引访问 mystr"Hello world" #索引访问 print(mystr[0]) #H print(mystr[-1]) #d print(mystr[-7]) #o print(mystr[6]) #w 2.切片访问 [头下标:尾下标] &#x…

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案,旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发,使用SpringBoot框架简化企业级应用…