【Linux从入门到精通】上下文概念详解

news2024/11/28 20:41:25

 

  上篇文章(进程的基本概念)我们讲解了进程后,还留下了一个上下文数据概念还没有解释。本篇文章会对上下文概念进行详解。在理解上下文概念时,同时会引出很多新的概念。我们都会对此进行详细解释,希望本篇文章会对你有所帮助。 

文章目录

 一、什么是上下文呢?

1、1 进程上下文

1、2 中断上下文

1、3 举例理解进程上下文和中断上下文

1、4 进程上下文和中断上下文的对比区别

二、结合实例理解上下文概念

2、1 时间片

2、1、1 时间片用完后等同是该进程发生了中断吗?

2、2 上下文数据

2、2、1 上下文和上下文数据的区别


🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️

👀 专栏:Linux从入门到精通 👀

💥 标题:上下文概念详解 💥

 ❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️

 一、什么是上下文呢?

  上下文是指程序或者系统当前所处的执行环境和状态,它包括了程序的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。上下文是一个抽象的概念,它描述了程序或者系统的执行环境和运行状态。在操作系统中,上下文通常分为进程上下文中断上下文两种类型。

1、1 进程上下文

  进程上下文是指进程当前的执行环境和状态,包括了进程的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。

  进程上下文是操作系统中用于管理进程的重要概念,它决定了进程的执行环境和运行状态。当一个进程被中断或者时间片用完时,操作系统会将当前进程的上下文数据保存到进程控制块(Process Control Block,PCB)中,并加载下一个进程的上下文数据。当下一个进程的时间片用完时,操作系统会将当前进程的上下文数据保存到PCB中,并加载下一个进程的上下文数据。这个过程会不断地重复,直到所有进程都执行完毕。

  这里引出了许多新的概念:进程中断时间片上下文数据。我们会在下文举实例将他们串联起来并对其进行解释。

1、2 中断上下文

  中断上下文是指中断处理程序当前的执行环境和状态,包括了中断处理程序的状态、寄存器值、中断向量、中断源等信息。当发生中断事件时操作系统会立即中断当前进程的执行转而执行中断处理程序。此时,中断处理程序需要保存当前进程的上下文数据,并加载中断处理程序的上下文数据。当中断处理程序执行完毕后,操作系统会恢复之前被中断的进程的上下文数据,并继续执行该进程。 

1、3 举例理解进程上下文和中断上下文

  假设有一个操作系统正在运行多个进程,其中一个进程正在执行一个计算任务,需要占用CPU资源。此时,一个外部设备发生了中断事件,需要操作系统立即响应并处理中断事件。

  在这个例子中,进程上下文是指当前正在执行计算任务的进程的执行环境和状态,包括了进程的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。当中断事件发生时,操作系统需要保存当前进程的上下文数据,以便在下一次调度时,能够恢复进程的执行环境和状态。

  中断上下文是指中断处理程序当前的执行环境和状态,包括了中断处理程序的状态、寄存器值、中断向量、中断源等信息。当中断事件发生时,操作系统需要立即中断当前进程的执行,转而执行中断处理程序。此时,中断处理程序需要保存当前进程的上下文数据,并加载中断处理程序的上下文数据,以便能够正确地处理中断事件。

1、4 进程上下文和中断上下文的对比区别

  我们详细对比一下两者可能更容易理解:

  • 执行环境不同:进程上下文是指进程当前的执行环境和状态,包括了进程的状态、寄存器值、内存映射、文件描述符、信号处理器等信息;而中断上下文是指中断处理程序当前的执行环境和状态,包括了中断处理程序的状态、寄存器值、中断向量、中断源等信息。进程上下文和中断上下文的执行环境不同,进程上下文是进程在用户态下的执行环境,而中断上下文是中断处理程序在内核态下的执行环境
  • 触发方式不同进程上下文是在进程被中断或者时间片用完时,操作系统会将当前进程的上下文数据保存到进程控制块(Process Control Block,PCB)中,并加载下一个进程的上下文数据;而中断上下文是在发生中断事件时,操作系统会立即中断当前进程的执行,转而执行中断处理程序。
  • 保存位置不同进程上下文数据通常保存在进程控制块(PCB)中,而中断上下文数据通常保存在操作系统内存中的特定位置
  • 处理方式不同:进程上下文和中断上下文的处理方式也不同。在进程上下文中,操作系统需要保存当前进程的上下文数据,并加载下一个进程的上下文数据。在中断上下文中,操作系统需要保存当前进程的上下文数据,并加载中断处理程序的上下文数据。当中断处理程序执行完毕后,操作系统会恢复之前被中断的进程的上下文数据,并继续执行该进程。 

  总结:上下文是指程序或者系统当前所处的执行环境和状态,它包括了程序的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。在操作系统中,上下文通常分为进程上下文和中断上下文两种类型。进程上下文是用于管理进程的重要概念,决定了进程的执行环境和运行状态;中断上下文是用于处理中断事件的重要概念,决定了中断处理程序的执行环境和处理方式。

  我们了解到上面的概念后,可能还是很模糊。毕竟概念都是抽象的。接下里会举一些例子再来解释和理解上述的概念。 

二、结合实例理解上下文概念

  我们上篇文章讲到,我们所写的代码,运行的程序本质上都是在内存上创建进程。 我们将程序运行起来后,就会产生很多临时数据。临时数据是保存在和寄存器当中的。寄存器有很多种,都是存储不同的数据,如下图:

  假如我们内存中有若干个进程,如下图:

   CPU需要从内存中读取数据。我们知道,不是所有的进程都可以在很短的时间的运行完毕的。假如进程1需要10s才能运行完毕,那CPU是只读取进程1的数据而花费10s吗?现在我们的计算机中大多是只有一个CPU的。CPU花费10s只去读一个进程时,这就意味着其他的进程是不在运行的。事实是我们的计算机是同时可运行多个进程,如下图:

  那CPU到底是怎么读取数据的呢?这里我们引出时间片和上下文数据的概念。 

2、1 时间片

  时间片(Time Slice)是操作系统中用于实现多任务调度的一种技术。在多任务系统中,操作系统需要将CPU时间分配给多个进程或线程,让它们交替执行,以达到同时运行多个任务的效果。时间片就是将CPU时间划分为若干个小的时间段,每个时间段称为一个时间片,每个进程或线程在一个时间片内执行一定的指令,然后切换到下一个进程或线程,以此实现多任务调度。

  结合上面例子,我们通俗来讲:一个进程并不是一次就运行完毕的,时间片就是规定了每个程序的运行时间。时间片的大小通常是几十毫秒到几百毫秒之间,具体大小取决于操作系统的设计和实现。当一个进程的时间片用完以后,即使程序没有运行完毕,也不在运行该程序,而是加载下一个进程的数据。

2、1、1 时间片用完后等同是该进程发生了中断吗?

  我们知道当一个进程的时间片用完后,就不再执行该进程,操作系统会将CPU的执行权转移到另一个进程上 。那么当一个进程的时间片用完后,等同是该进程发生了中断而执行中断处理程序吗?

  在某种程度上,当一个进程的时间片用完后,可以看作是该进程发生了中断而执行中断处理程序。因为当一个进程的时间片用完后,操作系统会将CPU的执行权转移到另一个进程上,这个过程就类似于中断处理程序的执行。在这个过程中,操作系统需要保存当前进程的上下文数据并加载下一个进程的上下文数据,以便继续执行。这个过程和中断处理程序的执行过程非常相似,都需要保存当前上下文数据,并加载新的上下文数据。
  但是,需要注意的是,当一个进程的时间片用完后,操作系统并不会真正地执行中断处理程序。中断处理程序是在发生中断事件时才会被执行的,例如硬件故障或者用户按下了中断键。当一个进程的时间片用完后,操作系统只是将CPU的执行权转移到另一个进程上,这个过程并不是真正的中断处理程序。

  总结:当一个进程的时间片用完后,可以看作是该进程发生了中断而执行中断处理程序,但是这个过程并不是真正的中断处理程序。

2、2 上下文数据

  通过上面对时间片进行了解后,那么问题来了:进程1的时间片用完后,就不再执行进程1,操作系统会将CPU的执行权转移到进程上2,并没有运行完的进程1在CPU的寄存器上产生的许多临时数据需要我们保存下来吗?

  CPU的执行权再次回到进程1时,肯定不是从新开始运行进程1的。所以进程1的时间片用完后,所产生的许多临时数据是需要保存下的。而这个临时数据我们又称它为上下文数据。通俗讲,上下文数据就是进程执行时处理器的寄存器中的数据

  问题又来了: CPU和寄存器只有一套,进程有很多个,因此会产生很多份上下文数据(临时数据),进程的时间片用完后,上下文数据又保存在哪里呢?

  上下文数据保存在操作系统内存中的特定数据结构中,这个数据结构通常被称为上下文块(Context Block)或者上下文记录(Context Record)。上下文块包含了进程或者中断处理程序的所有上下文数据。上下文块又是保存在进程控制块(Process Control Block,PCB)中的。

   到这里我想大家应该知道为什么在计算机只有一个CPU的情况下,同时还能多进程运行。我们用户感受到的多个进程在同时运行,本质上是CPU的时间片的快速切换完成的

2、2、1 上下文和上下文数据的区别

  学到这里,有很多同学分不清楚上下文和上下文数据的概念了。在这里给大家对比理解一下两者的概念区别。

  上下文是指程序或者系统当前所处的执行环境和状态,它包括了程序的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。上下文是一个抽象的概念,它描述了程序或者系统的执行环境和运行状态。

  上下文数据是指具体的上下文信息,它包括了程序或者系统的状态、寄存器值、内存映射、文件描述符、信号处理器等具体数据上下文数据是上下文的具体表现形式,它是程序或者系统当前状态的具体描述。

  举个例子,当一个进程正在执行一个计算任务时,它的上下文包括了进程的状态、寄存器值、内存映射、文件描述符、信号处理器等信息。这些信息构成了进程的上下文,描述了进程的执行环境和运行状态。而这些具体的信息,就是进程的上下文数据。

  总而言之,上下文和上下文数据是两个不同的概念,它们之间存在一定的区别。上下文是指程序或者系统当前所处的执行环境和状态,是一个抽象的概念;而上下文数据是指具体的上下文信息,包括了程序或者系统的状态、寄存器值、内存映射、文件描述符、信号处理器等具体数据,是上下文的具体表现形式。 

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

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

相关文章

7款产品经理必备的交互软件

作为UI/UX设计师,我相信你或多或少接触过很多交互设计软件。 为您整理总结了几款流行的交互软件。如果您在上述交互设计软件中确实存在选择困难,希望通过阅读本文帮助您快速做出正确的选择。 即时设计 即时设计是一款「专业UI设计工具」,不…

redis从零开始(1)----基本类型:string/hash/list

认识redis NoSQL Nosql not only sql,泛指非关系型数据库,与之相对的是RDBMS(Relational Database Management System),即关系型数据库 关系型数据库:列行,同一个表下数据的结构是一样的。 非关系型数据库&#xff…

企业有必要对三方应用进行安全管控吗?

什么是三方应用? 三方应用是指由第三方开发者创建的软件应用程序,与操作系统或其他主要平台的开发公司无关。这些应用程序通常被设计为在特定平台上运行,并且具有特定的功能或服务,例如社交媒体应用程序、游戏和生产力工具等。 简…

IntersectionObserver“替代”滚动条监听

概要 IntersectionObserver 接口提供了一种异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的方法。其祖先元素或视口被称为根(root)。 当一个 IntersectionObserver 对象被创建时,其被配置为监听根中…

Blender渲染分辨率如何优化设置?这些渲染技巧你要知道!

尽管 Blender不断改进其功能,随着硬件的不断进步而变得越来越复杂,该软件最好的是允许很多人免费试用它。但即使所有人都可以访问,这并不意味着Blender可以克服低端GPU的局限性。 并非所有PC都是平等的,也不是每个3D设计师都可以使…

Aho-Corasick automaton,ac自动机实现

文章目录 写在前面算法概述trie树的构建trie树的节点结构插入P串到trie树中fail指针的创建 搜索过程测试程序 写在前面 原作者的视频讲解链接:[算法]轻松掌握ac自动机_哔哩哔哩_bilibili 原作者的代码实现:data-structure-and-algorithm/aho_corasick.c…

机器视觉表面划痕检测流程

表面缺陷检测常见的检测主要有物体表面的划痕、污渍、缺口、平面度、破损、边框对齐度、物体表面的亮度、皱纹、斑点、孔等。 表面缺陷检测设备凝聚了机器视觉领域的许多技术成果,吸取了许多创新的检测理念,可以与现有生产线无缝对接检测,也…

制定进度计划是成功项目管理的必由之路

项目经理王斌接到一个新项目,与各项目干系人没有建立有效的联系,他们无法了解项目进展情况。甚至连项目团队的参与人员自身对项目整体情况也没有清楚的认识,而只管自己那一部分,整个开发过程完全是一种黑盒模式,项目组…

电视盒子哪个好?内行盘点2023最具性价比电视盒子推荐

电视盒子跟有线机顶盒相比不用每年缴费,资源也更丰富,可下载各种APP。作为电视盒子从业人员,身边亲友在选购电视盒子之前会咨询我的意见,不懂电视盒子哪个好,可以看看我总结的2023最具性价比电视盒子推荐,非…

手慢无,阿里巴巴最新出品的高并发终极笔记到底有多强?

前几天收到一位粉丝私信,说的是他才一年半经验,去面试却被各种问到分布式,高并发,多线程之间的问题。基础层面上的是可以答上来,但是面试官深问的话就不会了!被问得都怀疑现在Java招聘初级岗位到底招的是初…

MySQL-图形化界面工具 (下)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

springboot+mybatis+redis实现二级缓存

Mybatis提供了对缓存的支持,分为一级缓存和二级缓存,其查询顺序为:二级缓存>一级缓存->数据库,最原始是直接查询数据库,为了提高效率和节省资源,引入了一级缓存,为了进一步提高效率&#…

计算机网络(四下)——网络层

接上篇,这篇文章主要来写路由选择 五、路由协议 1>动态路由 1.距离向量算法(RIP协议);适用于小型网络 1》规定: 1>记录跳数(Hop count)最少的路径。 2>RIP允许一条路由最多15个路由器,距离为…

LitCTF2023 wp re最后一道 cry misc

本来不打算放了,但是比赛打都打了留个纪念社工有佬,与我无关,misc只会隐写虽然我是逆向手,但因为队友tql,所以只留给我最后一道~~我的wp向来以简述思路为主,习惯就好 Crypto Hex?Hex&#xff…

【项目设计】 负载均衡在线OJ系统

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录 一、项目介绍项目技术栈和开发环境 二、项目的宏观结构三、compile_server模块①日志模块开发,Util工具类,供所以模…

NVIDIA再现谜之刀法,RTX 4060Ti新增16G版

随着上一代库存逐渐清理到位,苏妈与老黄终于要把新一代主流级显卡掏出来了。 根据外网消息,AMD 这边主要是 RX 7600XT 与 7600 等型号,发布日期定为 5 月 25 日。 AMD 保密措施做得挺到位的,目前除了部分厂商爆出的包装与产品图…

[MYAQL / Mariadb] 数据库学习-数据导入导出

数据库学习-数据导入导出 数据导入导出(批量处理数据)查看默认检索目录模糊查询:show variables like %XXXX%;修改检索目录路径(!!文件一定要有MySQL用户的 7的RWX 权限!)默认的检索…

前端-02 CSS基础

1 简介 1.1 CSS语法 语法 选择器&#xff1a;HTML元素 生命块&#xff1a;用;隔开的各种声明 {a;b} 每条声明有CSS属性名称和值&#xff0c;用冒号分割{属性:值;属性:值} 案例 整块代码 <!DOCTYPE html> <html><head><style>body {background…

同一个IP可以安装配置多个SSL证书吗?

如何在同一IP地址上运行多个SSL证书? 服务器名称指示SNI&#xff0c;可以帮助您实现同一IP运行多个SSL证书&#xff0c;这样虚拟主机网站也能用上SSL证书了。 什么是SNI 服务器名称指示SNI是SSL的一个重要组成部分&#xff0c;SNI允许多个网站存在于同一个IP地址上&#xff…

CVPR目标检测经典作:HOG特征

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 HOG特征 HOG特征( Histogram of Oriented Gradients 方向梯度直方图&#xff09;是一种在图像上找到特征描述子&#xff0c;主要通过计算和统计图像局部区域的梯度方向直方图来构成特征。来源于cvpr2015 年…