嵌入式每日八股1.29

为什么会有上下文这种概念?

在计算机系统中,上下文是指当前程序或进程执行的环境和状态,包括程序的执行位置、寄存器内容、堆栈信息、打开文件等。操作系统需要在多个进程之间进行快速的切换,这就需要在进程间保存和恢复上下文信息。

在一个计算机系统中,只有一个CPU,但是可能有多个进程或线程在同时运行。当操作系统需要将CPU从一个进程切换到另一个进程时,必须保存当前进程的上下文信息,并加载下一个进程的上下文信息,从而让它继续执行。这种切换称为上下文切换

上下文的概念也在操作系统的其他方面得到了应用,例如在中断处理中,需要保存当前执行的进程上下文,以便中断处理程序执行完毕后能够恢复到之前的状态。在多线程编程中,线程切换也需要保存和恢复上下文信息。

内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。

其中,处理器总处于以下状态中的一种:

  • 内核态,运行于进程上下文,内核代表进程运行于内核空间;

  • 内核态,运行于中断上下文,内核代表硬件运行于内核空间;

  • 用户态,运行于用户空间。

系统的两种不同运行状态,才有了上下文的概念。用户空间的应用程序,如果想请求系统服务,比如操作某个物理设备,映射设备的地址到用户空间,必须通过系统调用来实现。通过系统调用,用户空间的应用程序就会进入内核空间,由内核代表该进程运行于内核空间,这就涉及到上下文的切换,用户空间和内核空间具有不同的地址映射,通用或专用的寄存器组,而用户空间的进程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等,以便系统调用结束后回到用户空间继续执行。

上下文概念的引入,保证了系统的并发性和可靠性,提高了系统的性能和效率。

【嵌入式八股】精华版(免费216问精华八股) https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

全部评论

相关推荐

投递阿里巴巴控股集团等公司7个岗位 >
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务