返回顶部
首页 > 资讯 > 操作系统 >linux上下文指的是什么
  • 464
分享到

linux上下文指的是什么

2023-07-04 14:07:50 464人浏览 薄情痞子
摘要

本文小编为大家详细介绍“linux上下文指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux上下文指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,上下文又叫CPU上下文,是

本文小编为大家详细介绍“linux上下文指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux上下文指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

在linux中,上下文又叫CPU上下文,是CPU运行任何任务前,必须依赖的环境,包括CPU寄存器和程序计数器;而上下文切换就是先把前一个任务的CPU上下文(也就是CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。

1.什么是上下文?

Linux是一个多任务的操作系统,它支持远大于CPU数量的任务同时运行,当然,这些任务实际上并不是真正的在同时运行,而是系统在很短的时间内,将CPU轮流分配给他们,给用户造成很多任务同时运行的错觉。

在每个任务运行前, CPU 都需要知道任务从哪里加载,又从哪里开始运行。也就是说,需要系统事先给他设置好 CPU 寄存器和程序计数器(Program Counter,PC)

  • CPU 寄存器:是 CPU 内置的容量小、但速度极快的内存

  • 程序计数器:是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置

综上所述,我们就有答案了

什么是上下文:

我们通常说的上下文又叫CPU上下文,是CPU运行任何任务前,必须依赖的环境,包括CPU 寄存器和程序计数器

上下文切换:就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。

2.上下文切换详细介绍

根据CPU切换运行任务的不同,又可以分为进程上下文切换线程上下文切换中断上下文切换

我们先了解下面2个上下文切换涉及的知识点系统调用、进程运行态

进程的运行态:

Linux 按照特权等级,把进程的运行空间分为内核空间用户空间 。在这两种空间中运行的进程状态分别称为内核态用户态

  • 内核空间(Ring 0):具有最高权限,可以直接访问所有资源(读取文件,)

    • 分配内存、io操作、创建子进程……都是内核操作。这也表明,当IO操作频繁时,System参数会很高。

  • 用户空间(Ring 3):只能访问受限资源,不能直接访问内存等硬件设备,必须通过系统调用进入到内核中,才能访问这些特权资源

在linux系统使用top命令查看cpu时,能看到user和system两项,对应的就是用户态和内核态占用的cpu资源

如上,我们的web服务是运行在用户态下的,对文件的io没有权限,当需要读取文件时,就涉及到系统调用

系统调用:

从用户态到内核态的转变,需要通过系统调用来完成。比如查看文件时,需要执行多次系统调用:open、read、write、close等。系统调用的过程如下:

  • 把 CPU 寄存器里原来用户态的指令位置保存起来;

  • 为了执行内核代码,CPU 寄存器需要更新为内核态指令的新位置,最后跳转到内核态运行内核任务;

  • 系统调用结束后,CPU 寄存器需要恢复原来保存的用户态,然后再切换到用户空间,继续运行进程;

所以,一次系统调用的过程,其实是发生了两次 CPU 上下文切换。

进程上下文切换?

  • 进程执行终止,它之前顺颂的CPU就会被释放出来,这时就从就绪队列中取出下一个等待时间片的进程;

  • 当某个进程的时间片耗尽,它就会被系统挂起,切换到其他等待CPU的进程运行;

  • 某个进程因为需要的系统资源比较大(比如内存不足),这时候该进程会被挂起,系统会调度其他进程执行;

  • 当有优先级更高的进程(系统操作进程)需要时间片,为了保证优先级更高的进程能够执行,当前进程会被挂起;

  • 如果当前进程中有sleep函数,他也会被挂起;

线程的上下文切换?

对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。说白了,所谓内核中的任务调用,实际上的调度对象是线程;而进程只是给线程提供了虚拟内存、全局变量等资源。所以,对于现场和进程,我们可以这么理解:

  • 当进程只有一个线程时,可以认为进程就等于线程。

  • 当进程拥有多个线程时,这些线程会共享父进程的资源(即共享相同的虚拟内存和全局变量等资源)。这些资源在上下文切换时是不需要修改的。

  • 另外,线程也有自己的私有数据,比如栈和寄存器等,这些在上下文切换时也是需要保存的。

综上,线程上下文切换有两种情况:

  • 前后两个线程属于不同进程,因为资源不共享,所以切换过程就跟进程上下文切换是一样的;

  • 前后两个线程属于同一个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据。

中断上下文切换?

中断处理会打断进程的正常调度和执行。在打断其他进程时,需要将进程当前的状态保存下来,中断结束后,进程仍然可以从原来的状态恢复运行。

中断上下文切换并不涉及到进程的用户态。所以,即便中断过程打断了一个正处在用户态的进程,也不需要保存和恢复这个进程的虚拟内存、全局变量等用户态资源。中断上下文,其实只包括内核态中断服务程序执行所必须的状态,包括 CPU 寄存器、内核堆栈、硬件中断参数等。

小结

根据Tsuna的测试报告,每次上下文切换都需要几十纳秒到数微妙的CPU时间,这个时间还是相当可观的。

不管是哪种场景导致的上下文切换,你都应该知道:

  • CPU上下文切换,是保证Linux系统正常工作的核心功能之一,一般情况下不需要我们特别关注。

  • 但过多的上下文切换,会把CPU时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,从而缩短进程真正运行的时间,导致系统的整体性能大幅下降。

Linux有哪些版本

Linux的版本有:Deepin、ubuntuKylin、Manjaro、LinuxMint、Ubuntu等版本。其中Deepin是国内发展最好的Linux发行版之一;UbuntuKylin是基于Ubuntu的衍生发行版;Manjaro是基于Arch的Linux发行版;LinuxMint默认的Cinnamon桌面类似windows XP简单易用;Ubuntu则是以桌面应用为主的Linux操作系统。

读到这里,这篇“linux上下文指的是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网操作系统频道。

--结束END--

本文标题: linux上下文指的是什么

本文链接: https://lsjlt.com/news/345639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • linux上下文指的是什么
    本文小编为大家详细介绍“linux上下文指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux上下文指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,上下文又叫CPU上下文,是...
    99+
    2023-07-04
  • linux下gui指的是什么
    这篇文章主要为大家展示了“linux下gui指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux下gui指的是什么”这篇文章吧。在linux中,gui是“Graphical Use...
    99+
    2023-06-29
  • linux下ice指的是什么
    这篇文章主要为大家展示了“linux下ice指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux下ice指的是什么”这篇文章吧。linux下的ice是“The Internet C...
    99+
    2023-06-29
  • CSS块级格式化上下文指的是什么
    这篇文章主要介绍“CSS块级格式化上下文指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS块级格式化上下文指的是什么”文章能帮助大家解决问题。   我...
    99+
    2024-04-02
  • linux swp文件指的是什么
    这篇文章主要介绍了linux swp文件指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux swp文件是一种后缀为“.swp”的文件,该文件是在当使用vi或者...
    99+
    2023-06-25
  • linux sock文件指的是什么
    这篇“linux sock文件指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“li...
    99+
    2023-04-13
    linux sock
  • linux c文件指的是什么
    本篇内容主要讲解“linux c文件指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux c文件指的是什么”吧! li...
    99+
    2023-04-14
    linux
  • linux中.d指的是什么文件
    小编给大家分享一下linux中.d指的是什么文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!linux中“.d”文件表示的是:1、依赖文件,其中d是depend...
    99+
    2023-06-29
  • linux设备文件指的是什么
    本篇内容介绍了“linux设备文件指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,设备文件是设备驱动程序的接口,允许...
    99+
    2023-06-29
  • linux中h文件指的是什么
    这篇文章主要介绍“linux中h文件指的是什么”,在日常操作中,相信很多人在linux中h文件指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中h文件指的是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-30
  • linux镜像文件指的是什么
    本篇内容介绍了“linux镜像文件指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,镜像文件是将特定的一系列文件按照一...
    99+
    2023-06-30
  • linux中o文件指的是什么
    这篇文章主要讲解了“linux中o文件指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中o文件指的是什么”吧!在linux中,“.o”文件指的是目标文件,“.o”是obje...
    99+
    2023-07-02
  • linux中.a文件指的是什么
    这篇文章主要介绍了linux中.a文件指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux中.a文件指的是什么文章都会有所收获,下面我们一起来看看吧。在linux中,“.a”文件是静态链接库文件;...
    99+
    2023-07-02
  • linux文档中option指的是什么
    本篇内容主要讲解“linux文档中option指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux文档中option指的是什么”吧! ...
    99+
    2023-03-07
    linux option
  • linux执行文件指的是什么
    这篇文章主要讲解了“linux执行文件指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux执行文件指的是什么”吧! ...
    99+
    2023-03-09
    linux
  • linux中la文件指的是什么
    这篇文章主要讲解了“linux中la文件指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中la文件指的是什么”吧!在linux中,la是使用libtool编译出的库文件,是...
    99+
    2023-06-30
  • linux下core文件是什么
    这篇文章将为大家详细讲解有关linux下core文件是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。core文件简介:Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进...
    99+
    2023-06-28
  • 什么是上下文管理器
    一、上下文管理器 上下文管理器(Context Manager)是Python中的一种编程模式,用于管理资源的获取和释放。它通过定义一个特定的上下文环境,确保在进入和离开这个环境时,相关资源会被正确地获取和释放。 二、实现方式 在Pytho...
    99+
    2023-10-29
    上下文 管理器
  • Linux下的链接文件是什么
    这篇文章主要介绍“Linux下的链接文件是什么”,在日常操作中,相信很多人在Linux下的链接文件是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下的链接文件是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-12
  • linux中映像文件指的是什么
    今天小编给大家分享一下linux中映像文件指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-04-21
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作