update ch01/ch02

dev
Yu Chen 5 years ago
parent 97f837850a
commit 4eeb775c7e

@ -1,4 +1,4 @@
# 对象管理器Process 对象
#### 对象管理器Process 对象
## 句柄和权限

@ -1 +1,11 @@
# Zircon 任务管理体系
线程Thread表示包含进程Proess所拥有的地址空间中的多个执行控制流CPU寄存器堆栈等。进程属于作业Job作业定义了各种资源限制。作业一直由父级作业parent Jobs拥有一直到根作业Root Job为止根作业是内核在启动时创建并传递给[`userboot`(第一个开始执行的用户进程)](https://fuchsia.dev/docs/concepts/booting/userboot)。
如果没有作业句柄Job Handle则进程中的线程无法创建另一个进程或另一个作业。
[程序加载](https://fuchsia.dev/docs/concepts/booting/program_loading)由内核层以上的用户空间工具和协议提供。
一些相关的系统调用:
[`zx_process_create()`](https://fuchsia.dev/docs/reference/syscalls/process_create), [`zx_process_start()`](https://fuchsia.dev/docs/reference/syscalls/process_start), [`zx_thread_create()`](https://fuchsia.dev/docs/reference/syscalls/thread_create), [`zx_thread_start()`](https://fuchsia.dev/docs/reference/syscalls/thread_start)

@ -1,11 +1,58 @@
# 进程管理Process 与 Job 对象
## Process 与 Job
> 介绍 Process 与 Job 的整体设计
>
> 实现 Process 和 Job 对象的基本框架,支持树状结构
>
## 作业Job
### 概要
作业是一组进程可能还包括其他作业。作业用于跟踪执行内核操作的特权即使用各种选项进行各种syscall以及跟踪和限制基本资源例如内存CPU的消耗。每个进程都属于一个作业。作业也可以嵌套并且除根作业外的每个作业都属于一个作业。
### 描述
作业是包含以下内容的对象:
- 对父作业的引用
- 一组子作业(每个子作业的父作业既是这个作业)
- 一组成员进程
- 一套策略Policy
由多个进程组成的“应用程序”可作为单个实体,被作业基于一套策略进行控制。
### 作业策略Job Policy
[策略policy](https://fuchsia.dev/fuchsia-src/concepts/settings/policy/policy_concepts?hl=en) 可在Kernel运行时动态修改系统的各种配置setting。作业策略主要涉及作业安全性和资源使用的条件Condition限制。
#### 策略的行为PolicyAction
策略的行为包括:
- Allow 允许条件
- Deny 拒绝条件
- AllowException 通过 debugt port 生成异常,异常处理完毕后可恢复执行且运行条件
- DenyException 通过 debugt port 生成异常,异常处理完毕后可恢复执行
- Kill 杀死进程
#### 应用策略时的条件 PolicyCondition
应用策略时的条件包括:
- BadHandle 此作业下的某个进程正在尝试发出带有无效句柄的syscall。在这种情况下`PolicyAction::Allow`并且`PolicyAction::Deny`是等效的如果syscall返回它将始终返回错误ZX_ERR_BAD_HANDLE。
- WrongObject此作业下的某个进程正在尝试发出带有不支持该操作的句柄的syscall。
- VmarWx此作业下的进程正在尝试映射具有写执行访问权限的地址区域。
- NewAny代表上述所有ZX_NEW条件的特殊条件例如NEW_VMONEW_CHANNELNEW_EVENTNEW_EVENTPAIRNEW_PORTNEW_SOCKETNEW_FIFO和任何将来的ZX_NEW策略。这将包括不需要父对象来创建的所有新内核对象。
- NewVMO此作业下的某个进程正在尝试创建新的vm对象。
- NewChannel此作业下的某个进程正在尝试创建新通道。
- NewEvent此作业下的一个进程正在尝试创建一个新事件。
- NewEventPair此作业下的某个进程正在尝试创建新的事件对。
- NewPort此作业下的进程正在尝试创建新端口。
- NewSocket此作业下的进程正在尝试创建新的套接字。
- NewFIFO此工作下的一个进程正在尝试创建一个新的FIFO。
- NewTimer此作业下的某个进程正在尝试创建新的计时器。
- NewProcess此作业下的进程正在尝试创建新进程。
- NewProfile此作业下的一个进程正在尝试创建新的配置文件。
- AmbientMarkVMOExec此作业下的某个进程正在尝试使用带有ZX_HANDLE_INVALID的zx_vmo_replace_as_executable作为第二个参数而不是有效的ZX_RSRC_KIND_VMEX。
## Job Policy 策略
> 实现 JobPolicy
## 进程Process
Loading…
Cancel
Save