From e136447443153f7a5f95948daea75a9a4f19f79e Mon Sep 17 00:00:00 2001 From: Xleine <919143384@qq.com> Date: Fri, 21 Apr 2023 12:14:01 +0800 Subject: [PATCH] Update 3os-hw-abstract.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整部分语句 --- source/chapter0/3os-hw-abstract.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/chapter0/3os-hw-abstract.rst b/source/chapter0/3os-hw-abstract.rst index 1d20425e..71b28e9b 100644 --- a/source/chapter0/3os-hw-abstract.rst +++ b/source/chapter0/3os-hw-abstract.rst @@ -92,7 +92,7 @@ 如果一个控制流属于某个函数,那么这个控制流的上下文简称为函数调用上下文。如果一个控制流属于某个应用程序,那么这个控制流的上下文简称为应用程序上下文。如果把某 :ref:`进程 ` 看做是运行的应用程序,那么这个属于某个应用程序的控制流可简称为某进程上下文。如果一个控制流属于操作系统,那么这个控制流的上下文简称为操作系统上下文。如果一个控制流是属于操作系统中处理中断/异常/陷入的那段代码,那么这个控制流的上下文简称为中断/异常/陷入的上下文。 -在 CPU 不断执行指令个过程中,各种前缀的上下文(执行环境的状态)会在不断的变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前的正确的执行环境,继续正常的普通控制流的执行。 +在 CPU 不断执行指令的过程中,各种前缀的上下文(执行环境的状态)会不断地变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前正确的执行环境,继续正常的普通控制流的执行。 对于异常控制流的上下文保存与恢复,主要是通过 CPU 和操作系统(手动编写在栈上保存与恢复寄存器的指令)来协同完成;对于函数转移控制流的上下文保存与恢复,主要是通过编译器(自动生成在栈上保存与恢复寄存器的指令)来帮助完成的。 @@ -111,7 +111,7 @@ 异常控制流:中断 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -外设 **中断** (Interrupt) 由外部设备引起的外部 I/O 事件如时钟中断、控制台中断等。外设中断是异步产生的,与处理器的执行无关。产生中断后,操作系统需要进行中断处理来响应中断请求,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。 +外设 **中断** (Interrupt) 是指由外部设备引起的外部 I/O 事件,如时钟中断、控制台中断等。外设中断是异步产生的,与处理器的执行无关。产生中断后,操作系统需要进行中断处理来响应中断请求,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。 .. image:: interrupt.png :align: center -- GitLab