...
 
Commits (7)
    https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/9aed849f8e546e46052789c8fad3e8e4904ca851 Update 2os-interface.rst 2023-03-11T22:50:42+08:00 Sakura 95874936+Sakura125809@users.noreply.github.com Display the wrong number. https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/013f28016ed95df7dce32f7eaebc8bd6d1766ad4 Update 2os-interface.rst 2023-03-11T23:54:25+08:00 Sakura 95874936+Sakura125809@users.noreply.github.com https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/35a5fbdf76628dfb7e53d86d595c004b0e971822 去除重复语句 2023-04-21T10:33:14+08:00 Xleine 919143384@qq.com https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/e136447443153f7a5f95948daea75a9a4f19f79e Update 3os-hw-abstract.rst 2023-04-21T12:14:01+08:00 Xleine 919143384@qq.com 调整部分语句 https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/04d6b90af8f65588e5030f907ec142e47faa0a51 Merge pull request #178 from loveloki/patch-1 2023-04-20T21:40:53-07:00 Yifan Wu shinbokuow@163.com 去除重复语句 https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/9cb2a463797366a514a7545701c929804df7ef1b Merge pull request #179 from loveloki/patch-2 2023-04-20T21:41:36-07:00 Yifan Wu shinbokuow@163.com Update 3os-hw-abstract.rst https://gitcode.net/rcore-os/rCore-Tutorial-Book-v3/-/commit/8872a72c5f157bbc8542cd9bde2bd90e8c918501 Merge pull request #174 from Sakura125809/patch-1 2023-04-21T22:28:11-07:00 Yifan Wu shinbokuow@163.com
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
系统软件是为计算机系统提供基本功能,并在计算机系统范围内使用的软件,其作用可涉及到整个计算机系统。系统软件包括操作系统内核、驱动程序、工具软件、用户界面、软件库等。操作系统内核是系统软件的核心部分,负责控制计算机的硬件资源并为用户和应用程序提供服务。驱动程序是操作系统用于控制硬件设备的软件,如显卡驱动、声卡驱动和打印机驱动等。一般情况下,驱动程序是操作系统内核的一部分。 系统软件是为计算机系统提供基本功能,并在计算机系统范围内使用的软件,其作用可涉及到整个计算机系统。系统软件包括操作系统内核、驱动程序、工具软件、用户界面、软件库等。操作系统内核是系统软件的核心部分,负责控制计算机的硬件资源并为用户和应用程序提供服务。驱动程序是操作系统用于控制硬件设备的软件,如显卡驱动、声卡驱动和打印机驱动等。一般情况下,驱动程序是操作系统内核的一部分。
工具软件是操作系统提供的用于维护、调试和优化计算机系统的软件,如磁盘碎片整理工具、系统信息工具和病毒查杀工具等。用户界面可以是图形用户界面 (GUI) 或命令行界面 (CLI)。图形用户界面是操作系统的一种常见用户界面,它使用图形元素(如图标、菜单和按钮)来帮助用户使用操作系统。通常,图形用户界面提供了一个桌面环境,其中包含可以打开和关闭的窗口,用户可以在其中运行应用程序和执行其他操作。图形用户界面是操作系统的一种常见用户界面,它使用图形元素(如图标、菜单和按钮)来帮助用户使用操作系统。通常,图形用户界面提供了一个桌面环境,其中包含可以打开和关闭的窗口,用户可以在其中运行应用程序和执行其他操作。 工具软件是操作系统提供的用于维护、调试和优化计算机系统的软件,如磁盘碎片整理工具、系统信息工具和病毒查杀工具等。用户界面可以是图形用户界面 (GUI) 或命令行界面 (CLI)。图形用户界面是操作系统的一种常见用户界面,它使用图形元素(如图标、菜单和按钮)来帮助用户使用操作系统。通常,图形用户界面提供了一个桌面环境,其中包含可以打开和关闭的窗口,用户可以在其中运行应用程序和执行其他操作。
.. chyyuu .. chyyuu
如果这样来看,编辑类软件,如 Vi、Emacs、MS Word等,只涉及到对文本文件的编辑,它们就不能算是系统软件。 如果这样来看,编辑类软件,如 Vi、Emacs、MS Word等,只涉及到对文本文件的编辑,它们就不能算是系统软件。
......
...@@ -134,7 +134,7 @@ API与ABI ...@@ -134,7 +134,7 @@ API与ABI
0 0
} }
这个程序的功能就是显示一行字符串(重点看第8行的代码)。注意,这里的 `println!` 一个宏。而进一步跟踪源代码 (位于 `user/src/console.rs` ),可以看到 `println!` 会进一步展开为 `write` 函数: 这个程序的功能就是显示一行字符串(重点看第4行的代码)。注意,这里的 `println!` 一个宏。而进一步跟踪源代码 (位于 `user/src/console.rs` ),可以看到 `println!` 会进一步展开为 `write` 函数:
.. code-block:: rust .. code-block:: rust
:linenos: :linenos:
......
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
如果一个控制流属于某个函数,那么这个控制流的上下文简称为函数调用上下文。如果一个控制流属于某个应用程序,那么这个控制流的上下文简称为应用程序上下文。如果把某 :ref:`进程 <term-process>` 看做是运行的应用程序,那么这个属于某个应用程序的控制流可简称为某进程上下文。如果一个控制流属于操作系统,那么这个控制流的上下文简称为操作系统上下文。如果一个控制流是属于操作系统中处理中断/异常/陷入的那段代码,那么这个控制流的上下文简称为中断/异常/陷入的上下文。 如果一个控制流属于某个函数,那么这个控制流的上下文简称为函数调用上下文。如果一个控制流属于某个应用程序,那么这个控制流的上下文简称为应用程序上下文。如果把某 :ref:`进程 <term-process>` 看做是运行的应用程序,那么这个属于某个应用程序的控制流可简称为某进程上下文。如果一个控制流属于操作系统,那么这个控制流的上下文简称为操作系统上下文。如果一个控制流是属于操作系统中处理中断/异常/陷入的那段代码,那么这个控制流的上下文简称为中断/异常/陷入的上下文。
在 CPU 不断执行指令个过程中,各种前缀的上下文(执行环境的状态)会在不断的变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前的正确的执行环境,继续正常的普通控制流的执行。 在 CPU 不断执行指令的过程中,各种前缀的上下文(执行环境的状态)会不断地变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前正确的执行环境,继续正常的普通控制流的执行。
对于异常控制流的上下文保存与恢复,主要是通过 CPU 和操作系统(手动编写在栈上保存与恢复寄存器的指令)来协同完成;对于函数转移控制流的上下文保存与恢复,主要是通过编译器(自动生成在栈上保存与恢复寄存器的指令)来帮助完成的。 对于异常控制流的上下文保存与恢复,主要是通过 CPU 和操作系统(手动编写在栈上保存与恢复寄存器的指令)来协同完成;对于函数转移控制流的上下文保存与恢复,主要是通过编译器(自动生成在栈上保存与恢复寄存器的指令)来帮助完成的。
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
异常控制流:中断 异常控制流:中断
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
外设 **中断** (Interrupt) 由外部设备引起的外部 I/O 事件如时钟中断、控制台中断等。外设中断是异步产生的,与处理器的执行无关。产生中断后,操作系统需要进行中断处理来响应中断请求,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。 外设 **中断** (Interrupt) 是指由外部设备引起的外部 I/O 事件,如时钟中断、控制台中断等。外设中断是异步产生的,与处理器的执行无关。产生中断后,操作系统需要进行中断处理来响应中断请求,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。
.. image:: interrupt.png .. image:: interrupt.png
:align: center :align: center
......