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

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

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

相关文章

碌时刻必备!微信自动回复让你告别消息堆积

在忙碌的时候,我们往往会面临消息堆积如山的情况。无法及时回复消息不仅容易造成交流障碍,还可能错过重要的机会。 但是现在,有一个神奇的工具——个微管理系统,可以帮助我们轻松应对这个问题 ,实现微信自动回复。 首…

Mujava 工具的简单使用

首先下载openjava.jar和mujava.jar,以及自己手写一个mujava.config指向存放mujava的目录,并将这些文件放在mujava目录下。此时,基本的mujava环境就搭建好了。 分别创建src(存放源码文件)、classes(存放源码…

每日一题 求和

1.题目解析 求和_牛客题霸_牛客网 (nowcoder.com) 这一题,主要描述的就是求满足和为m的子序列,对与子序列的问题可以使用决策树。 2.思路分析 决策树如下图所示: 递归结束条件: 当当前和 sum 等于目标和 m 时,说明找到了一个满…

如何在华为手机上恢复已删除的视频[4种解决方案]

概括 在数字媒体时代,智能手机已成为我们的个人金库,存储以视频形式捕捉的珍贵记忆。然而,意外删除这些珍贵的文件可能会是一次令人心痛的经历。对于华为手机用户来说,由于删除或其他意外导致视频丢失尤其令人痛苦。但不用担心&a…

Python 拼图游戏

拼图游戏(puzzle)是一种常见的益智游戏,玩家通过拖动图块来正确拼接成完整的图片。 由一张原图,分割成图块,拼图块的大小将会根据行列数自动调整,然后随机打乱,玩家通过拖拽图块,最后复原原图。 &#x1f…

idea使用鼠标滚轮进行字体大小缩放

idea使用鼠标滚轮进行字体大小缩放 使用快捷键CtrlAltS进入到设置页面 在左上角搜索框输入“increase”,在左侧的Keymap中右击“Increase Fort Size”,点击“add mouse shortcut”,然后录入我们要设置的快捷键,比如我是点击ctrl鼠…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

AtCoder Beginner Contest 354 (ABCDEFG题)视频讲解

2024年5月19日补充G题。 A - Exponential Plant Problem Statement Takahashi is growing a plant. Its height at the time of germination is 0 c m 0\,\mathrm{cm} 0cm. Considering the day of germination as day 0 0 0, its height increases by 2 i c m 2^i\,\mat…

看一遍就理解:MVCC原理详解

介绍 MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于实现数据库并发访问控制的机制。它允许多个用户同时读写同一数据项,从而提高了数据库在高并发环境下的性能和响应速度。以下是具体介绍: 基本…

Python代码注释的艺术与智慧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:注释的必要性 二、注释的误区:不是越多越好 过度注释的问题…

服务器端口号怎么看?如何查看服务器端口号呢?有哪些需要注意的?

简单来说,端口号就是计算机与外界通讯交流的出口,每个端口都有不同的编号,也就是“端口号”。它们是唯一的,用于标识不同的服务和应用程序。通过端口号,我们可以知道哪些服务正在运行,以及如何与它们进行通…

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程? 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…

洗地机哪个牌子最好用?2024洗地机排行榜

随着人们生活水平的提升,智能清洁家电已经成为日常生活中的必需品。如今的清洁家电市场上,洗地机、吸尘器和扫地机器人等设备各有其独特的功能和优势。洗地机结合了扫、拖、吸和自清洁等多种功能,不仅可以处理干湿垃圾,还能高效清…

工业路由器在新能源数字化中的应用:重塑能源行业的未来

随着全球对可再生能源和能源效率的追求日益加强,新能源数字化已成为推动行业发展的关键因素。在这一变革的浪潮中,工业路由器以其卓越的性能和独特的功能,成为新能源数字化不可或缺的核心组件。本文将深入探讨工业路由器在新能源数字化中的应…

使用Golang开发一个用于批量删除文件的命令行程序

核心代码 package cmdimport ("fmt""zdpgo_cobra""zdpgo_file" )func init() {rootCmd.AddCommand(deleteFileCmd)deleteFileCmd.Flags().StringVarP(&dirPath, "dir", "d", ".", "指定要删除的目录&qu…

【C语言】整型提升与char取值范围

整型提升介绍 C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中字符、短整型操作数在使用前被转换为普通整型。而这个过程是悄悄发生的。 整型提升的意义: 表达式的整型运算要在CPU…

C++ wasm 使用教程

环境搭建 git clone https://github.com/emscripten-core/emsdk.gitgit pull./emsdk install latest./emsdk activate latestsource ./emsdk_env.sh./emcc -v && ./emcc c11__Thread_local.c -s WASM_WORKERS --threadprofiler --memoryprofiler -v -o test.html &…

Sentinel的授权规则详解

文章目录 1、授权规则1.1、基本规则1.2、如何获取origin1.3、给网关添加请求头1.4、配置授权规则 2、自定义异常结果2.1、异常类型2.2、自定义异常处理 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学…

深度学习中的优化算法一(Pytorch 18)

一 优化和深度学习 优化算法 使我们能够 继续更新模型参数, 并使损失函数的值最小化。这就像在训练集上评估一样。事实上,任何满足于将优化视为黑盒装置,以在简 单的设置中最小化目标函数的人,都可能会知道存在着一系列此类“咒…

STM32 学习——2. PWM

这个项目将会不断改变pwm占空比,使用proteus示波器进行观察。 1. proteus8.15 原理图 2. cubemx 上图是配置外部晶振 上图配置在proteus中没啥作用,注意: 在实际开发板中,一定要配置它,不然下一次你写不进代码。 上图配…