diff --git a/404.html b/404.html index 93390ad..a299161 100644 --- a/404.html +++ b/404.html @@ -91,7 +91,7 @@ diff --git a/ch01-00-object.html b/ch01-00-object.html index 64ecc99..565f8f8 100644 --- a/ch01-00-object.html +++ b/ch01-00-object.html @@ -89,7 +89,7 @@ @@ -163,7 +163,7 @@

Zircon 是一个基于内核对象的系统。系统的功能被划分到若干组内核对象中。

作为一切的开始,本章首先构造了一个内核对象框架,作为后面实现的基础。 然后我们实现第一个内核对象 —— Process,它是所有对象的容器,也是将来我们操作对象的入口点。 -最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信(IPC)的基础设施,也是传送对象的唯一管道。

+最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信(IPC)的基础设施,也是传送对象的唯一管道。

diff --git a/ch01-01-kernel-object.html b/ch01-01-kernel-object.html index 93c9e58..ca3278f 100644 --- a/ch01-01-kernel-object.html +++ b/ch01-01-kernel-object.html @@ -3,7 +3,7 @@ - 初识内核对象 - 简明 zCore 教程 + ✅ 初识内核对象 - 简明 zCore 教程 @@ -89,7 +89,7 @@ diff --git a/ch01-02-process-object.html b/ch01-02-process-object.html index b2a53b6..952ea5f 100644 --- a/ch01-02-process-object.html +++ b/ch01-02-process-object.html @@ -3,7 +3,7 @@ - 对象管理器:Process 对象 - 简明 zCore 教程 + 🚧 对象管理器:Process 对象 - 简明 zCore 教程 @@ -89,7 +89,7 @@ @@ -161,9 +161,23 @@

对象管理器:Process 对象

句柄和权限

+
+

介绍并实现 Handle,Rights

+

实现第一个内核对象

+
+

使用上一节的方法,实现一个空的 Process 对象

+

存储内核对象句柄

+
+

添加成员变量 handles: BTreeMap<HandleValue, Handle>

+

实现 create,add_handle,remove_handle 函数

+

根据句柄查找内核对象

+
+

实现 get_object_with_rights 等其它相关函数

+

实现 handle 单元测试

+
diff --git a/ch01-03-channel-object.html b/ch01-03-channel-object.html index dca1beb..de884c7 100644 --- a/ch01-03-channel-object.html +++ b/ch01-03-channel-object.html @@ -3,7 +3,7 @@ - 对象传送器:Channel 对象 - 简明 zCore 教程 + 🚧 对象传送器:Channel 对象 - 简明 zCore 教程 @@ -89,7 +89,7 @@ @@ -161,7 +161,14 @@

对象传送器:Channel 对象

创建一对内核对象

+
+

实现 Channel::create

+

讲一下互相持有对方 Weak 指针的目的,这里有不可避免的 unsafe

+

实现数据传输

+
+

实现 read, write 函数,read_write 单元测试

+
diff --git a/ch02-00-task.html b/ch02-00-task.html index 51a4e6c..44c0065 100644 --- a/ch02-00-task.html +++ b/ch02-00-task.html @@ -89,7 +89,7 @@ @@ -160,6 +160,13 @@

任务管理

+

本章我们来实现第一类内核对象:任务管理(Tasks)。

+

任务对象主要包括:线程 Thread,进程 Process,作业 Job。以及一些辅助性的对象,例如负责暂停任务执行的 SuspendToken 和负责处理异常的 Exception

+

为了能够真实表现线程对象的行为,我们使用 Rust async 运行时 async_std 中的用户态协程来模拟内核线程。 +这样就可以在用户态的单元测试中检验实现的正确性。 +考虑到未来这个 OS 会跑在裸机环境中,将会有不同的内核线程的实现,我们创建一个特殊的硬件抽象层(Hardware Abstraction Layer,HAL),来屏蔽底层平台的差异,对上提供一个统一的接口。 +这个 HAL 的接口未来会根据需要进行扩充。

+

本章中我们只会实现运行一个程序所必需的最小功能子集,剩下的部分则留到跑起用户程序之后再按需实现。

diff --git a/ch02-01-zircon-task.html b/ch02-01-zircon-task.html index 3d6bfa2..395e9d0 100644 --- a/ch02-01-zircon-task.html +++ b/ch02-01-zircon-task.html @@ -3,7 +3,7 @@ - Zircon 任务管理体系 - 简明 zCore 教程 + 🚧 Zircon 任务管理体系 - 简明 zCore 教程 @@ -89,7 +89,7 @@ @@ -172,7 +172,7 @@ - @@ -190,7 +190,7 @@ - diff --git a/ch02-02-hal-async.html b/ch02-02-process-job-object.html similarity index 71% rename from ch02-02-hal-async.html rename to ch02-02-process-job-object.html index ddf489f..41da780 100644 --- a/ch02-02-hal-async.html +++ b/ch02-02-process-job-object.html @@ -3,7 +3,7 @@ - 硬件抽象层与异步运行时 - 简明 zCore 教程 + 🚧 进程管理:Process 与 Job 对象 - 简明 zCore 教程 @@ -89,7 +89,7 @@ @@ -159,7 +159,16 @@
-

硬件抽象层与异步运行时

+

进程管理:Process 与 Job 对象

+

Process 与 Job

+
+

介绍 Process 与 Job 的整体设计

+

实现 Process 和 Job 对象的基本框架,支持树状结构

+
+

Job Policy 策略

+
+

实现 JobPolicy

+
diff --git a/ch02-03-thread-object.html b/ch02-03-thread-object.html index 7926c9e..c697558 100644 --- a/ch02-03-thread-object.html +++ b/ch02-03-thread-object.html @@ -3,7 +3,7 @@ - 线程管理:Thread 对象 - 简明 zCore 教程 + 🚧 线程管理:Thread 对象 - 简明 zCore 教程 @@ -89,7 +89,7 @@ @@ -160,19 +160,38 @@

线程管理:Thread 对象

+

线程状态

+
+

状态转移:创建 -> 运行 -> 暂停 -> 退出,最好有个状态机的图

+

实现 ThreadState,最好能加一个单元测试来验证转移过程

+
+

线程寄存器上下文

+
+

定义 ThreadState,实现 read_state,write_state

+
+

Async 运行时和 HAL 硬件抽象层

+
+

简单介绍 async-std 的异步机制

+

介绍 HAL 的实现方法:弱链接

+

实现 hal_thread_spawn

+
+

线程启动

+
+

将 HAL 接入 Thread::start,编写单元测试验证能启动多线程

+