Skip to content

Commit 66b5601

Browse files
committed
update ch1-3:0 for os arch
1 parent a2b888a commit 66b5601

File tree

3 files changed

+41
-7
lines changed

3 files changed

+41
-7
lines changed

source/chapter1/0intro.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,19 +99,19 @@
9999
本章代码树
100100
------------------------------------------------
101101

102-
LibOS操作系统的总体结构如下图所示
102+
三叶虫LibOS操作系统的总体结构如下图所示
103103

104104
.. image:: ../../os-lectures/lec2/figs/lib-os-detail.png
105105
:align: center
106106
:scale: 30 %
107107
:name: lib-os-detail
108108
:alt: LibOS总体结构
109109

110-
通过上图,大致可以看出Qemu把包含app和LibOS的image镜像加载到内存中,RustSBI(bootloader)完成基本的硬件初始化后,跳转到LibOS起始位置,LibOS首先进行app执行前的初始化工作,即建立栈空间和清零bss段,然后跳转到app去执行。app在执行过程中,会通过函数调用的方式得到LibOS提供的OS服务,如输出字符串等,避免了app与硬件直接交互的繁琐过程。
110+
通过上图,大致可以看出Qemu把包含app和三叶虫LibOS的image镜像加载到内存中,RustSBI(bootloader)完成基本的硬件初始化后,跳转到三叶虫LibOS起始位置,三叶虫LibOS首先进行app执行前的初始化工作,即建立栈空间和清零bss段,然后跳转到app去执行。app在执行过程中,会通过函数调用的方式得到三叶虫LibOS提供的OS服务,如输出字符串等,避免了app与硬件直接交互的繁琐过程。
111111

112112
注: 图中的S-Mode和M-Mode是RISC-V 处理器架构中的两种特权级别。S-Mode 指的是 Supervisor 模式,是操作系统使用的特权级别,可执行特权指令等。M-Mode是 Machine模式,其特权级别比S-Mode还高,可以访问RISC-V处理器中的所有系统资源。关于特权级的进一步描述可以看第二章的 :doc:`../chapter2/1rv-privilege` 中的详细说明。
113113

114-
LibOS操作系统的源代码如下所示
114+
位于 ``ch1`` 分支上的三叶虫LibOS操作系统的源代码如下所示
115115

116116
.. code-block::
117117

source/chapter2/0intro.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,17 @@
157157
本章代码树
158158
-------------------------------------------------
159159

160-
BatchOS操作系统的总体结构如下图所示
160+
邓式鱼BatchOS操作系统的总体结构如下图所示
161161

162162
.. image:: ../../os-lectures/lec3/figs/batch-os-detail.png
163163
:align: center
164164
:scale: 30 %
165165
:name: batch-os-detail
166166
:alt: BatchOS总体结构
167167

168-
通过上图,大致可以看出Qemu把包含多个app的列表和BatchOS的image镜像加载到内存中,RustSBI(bootloader)完成基本的硬件初始化后,跳转到BatchOS起始位置,BatchOS首先进行正常运行前的初始化工作,即建立栈空间和清零bss段,然后通过 `AppManager` 内核模块从app列表中依次加载各个app到指定的内存中在用户态执行。app在执行过程中,会通过系统调用的方式得到BatchOS提供的OS服务,如输出字符串等。
168+
通过上图,大致可以看出Qemu把包含多个app的列表和BatchOS的image镜像加载到内存中,RustSBI(bootloader)完成基本的硬件初始化后,跳转到邓式鱼BatchOS起始位置,邓式鱼BatchOS首先进行正常运行前的初始化工作,即建立栈空间和清零bss段,然后通过 `AppManager` 内核模块从app列表中依次加载各个app到指定的内存中在用户态执行。app在执行过程中,会通过系统调用的方式得到邓式鱼BatchOS提供的OS服务,如输出字符串等。
169169

170-
BatchOS操作系统的源代码如下所示
170+
位于 ``ch2`` 分支上的邓式鱼BatchOS操作系统的源代码如下所示
171171

172172
.. code-block::
173173

source/chapter3/0intro.rst

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,41 @@
242242
本章代码树
243243
-----------------------------------
244244

245-
这里以位于 ``ch3`` 分支上的分时多任务系统为例。
245+
锯齿螈多道程序操作系统 - Multiprog OS的总体结构如下图所示:
246+
247+
.. image:: ../../os-lectures/lec4/figs/jcy-multiprog-os-detail.png
248+
:align: center
249+
:scale: 30 %
250+
:name: jcy-os-detail
251+
:alt: 锯齿螈多道程序操作系统 -- Multiprog OS总体结构
252+
253+
通过上图,大致可以看出Qemu把包含多个app的列表和MultiprogOS的image镜像加载到内存中,RustSBI(bootloader)完成基本的硬件初始化后,跳转到MultiprogOS起始位置,MultiprogOS首先进行正常运行前的初始化工作,即建立栈空间和清零bss段,然后通过改进的 `AppManager` 内核模块从app列表中把所有app都加载到内存中,并按指定顺序让app在用户态一个接一个地执行。app在执行过程中,会通过系统调用的方式得到MultiprogOS提供的OS服务,如输出字符串等。
254+
255+
256+
始初龙协作式多道程序操作系统 -- CoopOS的总体结构如下图所示:
257+
258+
.. image:: ../../os-lectures/lec4/figs/more-task-multiprog-os-detail.png
259+
:align: center
260+
:scale: 20 %
261+
:name: more-task-multiprog-os-detail
262+
:alt: 始初龙协作式多道程序操作系统 -- CoopOS总体结构
263+
264+
通过上图,大致可以看出相对于MultiprogOS,CoopOS进一步改进了 `AppManager` 内核模块,可以通过 `task` 任务控制块来管理应用程序的执行过程,支持应用程序主动放弃 CPU 并切换到另一个应用继续执行,从而提高系统整体执行效率。应用程序在运行时有自己所在的内存空间和栈,确保被切换时相关信息不会被其他应用破坏。如果当前应用程序正在运行,则该应用对应的任务处于运行(Running)状态;如果该应用主动放弃处理器,则该应用对应的任务处于就绪(Ready)状态。操作系统进行任务切换时,需要把要暂停任务的上下文(即任务用到的通用寄存器)保存起来,把要继续执行的任务的上下文恢复为暂停前的内容,这样就能让不同的应用协同使用处理器了。
265+
266+
267+
腔骨龙分时多任务操作系统 -- TimesharingOS的总体结构如下图所示:
268+
269+
.. image:: ../../os-lectures/lec4/figs/time-task-multiprog-os-detail.png
270+
:align: center
271+
:scale: 20 %
272+
:name: time-task-multiprog-os-detail
273+
:alt: 腔骨龙分时多任务操作系统 -- TimesharingOS总体结构
274+
275+
通过上图,大致可以看出相对于CoopOS,TimesharingOS最大的变化是改进了 `Trap_handler` 内核模块,支持时钟中断,从而可以抢占应用的执行。并通过进一步改进 `AppManager` 内核模块,提供任务调度功能,这样可以在收到时钟中断后统计任务的使用时间片,如果任务的时间片用完后,则切换任务。从而可以公平和高效地分时执行多个应用,提高系统的整体效率。
276+
277+
位于 ``ch3`` 分支上的腔骨龙分时多任务操作系统 -- TimesharingOS 的源代码如下所示:
278+
279+
这里
246280

247281
.. code-block::
248282
:linenos:

0 commit comments

Comments
 (0)