提交 d5a85e4a 编写于 作者: chyyuu1972's avatar chyyuu1972

update ch5 title, ch5/sec1

上级 cd807e74
......@@ -57,7 +57,8 @@
进程模型与重要系统调用
------------------------------------------------------------
目前,我们只介绍一种我们的内核实现中所采用的一种非常简单的进程模型。前面我们并没有给出进程需要管理哪些类型的硬件资源或是如何管理,这取决于内核提供给应用的接口以及内核的具体实现。由于我们实现的进程模型需要支持一些重要的系统调用,它需要建立在地址空间抽象之上:每个进程都需要管理一个地址空间,它涵盖了它选择的可执行文件的内存布局,还包含一些其他的逻辑段。
目前,我们只介绍一种我们的内核实现中所采用的一种非常简单的进程模型。这个进程模型有三个运行状态:就绪态、运行态和等待态;有基于独立的页表的地址空间;可被操作系统调度来分时占用CPU执行;可以动态创建和退出;可通过系统调用获得操作系统的服务。
前面我们并没有给出进程需要使用哪些类型的资源,这其实取决于内核提供给应用的系统调用接口以及内核的具体实现。我们实现的进程模型建立在地址空间抽象之上:每个进程都需要一个地址空间,它涵盖了它选择的可执行文件的内存布局,还包含一些其他的逻辑段。且进程模型需要操作系统支持一些重要的系统调用:创建进程、执行新程序、等待进程结束等,来达到应用程序执行的动态灵活性。接下来会介绍这些系统调用的基本功能和设计思路。
fork 系统调用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -142,7 +143,7 @@ exec 系统调用
应用程序示例
-----------------------------------------------
我们刚刚介绍了 ``fork/waitpid/exec`` 三个重要系统调用,借助它们我们可以开发功能更为强大的应用程序。下面我们通过描述两个重要的应用程序 **用户初始程序-init** 和 **外壳程序-shell** 的开发过程来展示这些重要系统调用的使用方法。
我们刚刚介绍了 ``fork/waitpid/exec`` 三个重要系统调用,借助它们我们可以开发功能更为强大的应用程序。下面我们通过描述两个重要的应用程序: **用户初始程序-init** 和 **外壳程序-shell** 的开发过程,来展示这些重要系统调用的使用方法。
系统调用封装
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -384,6 +385,6 @@ exec 系统调用
- 如果用户输入退格键(第 53 行),首先我们需要将屏幕上当前行的最后一个字符用空格替换掉,这可以通过输入一个特殊的退格字节 ``BS`` 来实现。其次,user_shell 进程内维护的 ``line`` 也需要弹出最后一个字符。
- 如果用户输入了一个其他字符(第 61 行),它将会被视为用户的正常输入,我们直接将它打印在屏幕上并加入到 ``line`` 中。
当内核初始化完毕之后,它会从可执行文件 ``initproc`` 中加载并执行用户初始程序-initproc,而用户初始程序-initproc中又会 ``fork`` 并 ``exec`` 来运行外壳程序- ``user_shell`` 。这两个应用虽然都是在 CPU 的 U 特权级执行的,但是相比其他应用它们要更加基础,原则上应该将它们作为一个组件打包在操作系统中。但这里为了实现更加简单,我们并不将它们和其他应用进行区分。
当内核初始化完毕之后,它会从可执行文件 ``initproc`` 中加载并执行用户初始程序-initproc,而用户初始程序-initproc中又会 ``fork`` 并 ``exec`` 来运行外壳程序- ``user_shell`` 。这两个应用虽然都是在 CPU 的 U 特权级执行的,但是相比其他应用,它们要更加基础。原则上应该将它们作为一个组件打包在操作系统中。但这里为了实现更加简单,我们并不将它们和其他应用进行区分。
除此之外,我们还从 :math:`\mu\text{core}` 中借鉴了很多应用测例。它们可以做到同一时间 **并发** 多个进程并能够有效检验我们内核实现的正确性。感兴趣的读者可以参考 ``matrix`` 和 ``forktree`` 等应用。
\ No newline at end of file
第五章:进程及重要系统调用
第五章:进程及进程管理
==============================================
.. toctree::
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册