美文网首页
程序的上下文

程序的上下文

作者: Myth52125 | 来源:发表于2017-10-13 16:29 被阅读0次

通俗点讲,就是进程需要的额外信息。参考文章

进程上下文

由多任务(线程)引出的进程上下文

现代计算机绝大多数都可以执行多任务(进程)。通常cpu数少于某一段时间要执行的任务(进程)总数。这必将导致,进程轮流执行。进程的一些信息存储在寄存器中,内核中,内存中。当cpu在不同的进程之间调度的时候,上一个进程需要将这些信息存储起来(不存储就会丢失啊),以备下次执行的时候使用,同时即将要执行的进程需要将他之前执行时(假设不是首次执行)的信息,加载进cpu。
这些需要临时存储起来的信息就是上下文。
这些信息包括:

  1. 用户级上下文
    包括:正文,数据,用户堆栈,共享内存
  2. 寄存器上下文
    包括:通用寄存器,程序寄存器(PC),处理器状态,栈指针
  3. 系统级上下文
    包括:进程控制块,内存管理信息内核栈

可以简单的归纳为:CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

在linux中PCB数据结构存储了所有进程信息。

中断上下文

参考文章硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

中断发生的时候,从用户态进入内核态,这时候需要将中断进程的信息传给内核,同时还有硬件传递过来的和中断有关的信息,这些信息就是中断上下文。
同时进程也需要保存这些信息,以便再次运行进程。

这个涉及到内核了?有些看不懂

相关文章

  • 单例模式

    ServletContext:servlet表示服务程序、context表示上下文。一起就是应用程序的上下文。这个...

  • 利用pycharm学习flask(三)

    本文主要内容: 1.程序和请求上下文2.请求调度3.响应 1.程序和请求上下文 这里我理解的上下文就是对于一个程序...

  • flask中的上下文

    在 Flask 中有两种上下文:程序上下文和请求上下文。下表 列出了这两种上下文提供的 变量。Flask上下文全局变量

  • Spring中的ApplicationContextAware接

    ApplicationContextAware接口帮助我们的程序去获取spring的上下文 定义上下文 priva...

  • 进程的概念

    进程的经典定义是一个执行中的程序实例 系统中的每个程序都运行在某个进程的上下文中。 上下文是由程序正确运行所需的状...

  • 进程vs线程

    from知乎: 进程就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文。 线...

  • 二、OpenGL专业名词解析

    1.OpenGL上下文 在应用程序调用任何OpenGL的指令前,都需要先创建一个OpenGL的上下文。这个上下文是...

  • 程序的上下文

    通俗点讲,就是进程需要的额外信息。参考文章 进程上下文 由多任务(线程)引出的进程上下文 现代计算机绝大多数都可以...

  • [FreeRTOS学习] 内核控制

    上下文切换 taskYIELD 在中断服务程序中的等价版本为portYIELD_FROM_ISR,用于强制上下文切...

  • 高效程序员工作方式(三)---为什么你解决了很多技术问题,仍然无

    今日总结: 努力扩大自己工作的上下文,别把自己局限在一个“程序员”的角色上。 上下文盲区 程序员总喜欢用技术去解决...

网友评论

      本文标题:程序的上下文

      本文链接:https://www.haomeiwen.com/subject/vpjayxtx.html