Skip to content

Commit 72baf7b

Browse files
authored
lec07-p4 updating
1 parent f3b1d98 commit 72baf7b

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

lec7/p4-labs.md

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ Process OS(POS)
2727

2828
---
2929

30+
### 问题
31+
32+
- 如何实现进程管理的系统调用服务?
33+
- 完善和扩展进程控制块数据结构
34+
- 实现对应的系统调用服务
35+
36+
---
37+
3038
**提纲**
3139
<style>
3240
.container{
@@ -584,9 +592,9 @@ pub fn exec(&self, elf_data: &[u8]) {...}
584592

585593
等待子进程退出`sys_waitpid`
586594

587-
- 不存在进程 ID 为 pid(pid==-1 或 > 0)的子进程时,返回 -1
588-
- 存在进程 ID 为 pid 的僵尸子进程时,正常回收子进程,返回子进程pid,更新退出码参数为 exit_code
589-
- 子进程还没退出时,返回 -2,用户库看到是 -2 后,就进一步调用 sys_yield 系统调用,让父进程进入等待状态
595+
- **不存在**进程 ID 为 pid(pid==-1 或 > 0)的子进程时,返回 -1
596+
- 存在进程 ID 为 pid **僵尸子进程**,正常回收子进程,返回子进程pid,更新退出码参数为 exit_code
597+
- 子进程**还没退出**,返回 -2,用户库看到是 -2 后,就进一步调用 sys_yield 系统调用,让父进程进入等待状态
590598
- 返回前,释放子进程的进程控制块
591599

592600
---
@@ -615,15 +623,13 @@ pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize {
615623

616624
### 小结
617625

618-
**提纲**
619-
620-
1. 实验目标和步骤
621-
2. 代码结构
622-
3. 应用程序设计
623-
4. 内核程序设计
624-
- 应用的链接与加载支持
625-
- 核心数据结构
626-
- 进程管理机制实现
626+
- 进程管理数据结构
627+
- TCB
628+
- TaskManager
629+
- Processor
630+
- 进程管理服务
631+
- TCB初始化:initproc、exec()中的TCB修改
632+
- 新进程资源分配和回收
627633

628-
![bg right:57% 100%](figs/process-os-detail.png)
634+
![bg right:53% 100%](figs/process-os-detail.png)
629635

0 commit comments

Comments
 (0)