Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
stormckey committed Dec 14, 2023
1 parent 6ec37c5 commit f7705a3
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 7 deletions.
2 changes: 1 addition & 1 deletion docs/blog/posts/OS_lab5.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ nostatistics: true

## vmas

在kernel终,我们分配了一整页,其中的低地址放了个task_struct,高地址就是栈顶(如下图,来自实验文档)。所以我们要稍微限制一下vmas的大小,不能把分配的一页全给用了,还要留点给栈用。
在kernel中,我们分配了一整页,其中的低地址放了个task_struct,高地址就是栈顶(如下图,来自实验文档)。所以我们要稍微限制一下vmas的大小,不能把分配的一页全给用了,还要留点给栈用。

```
┌─────────────┐◄─── High Address
Expand Down
13 changes: 8 additions & 5 deletions docs/blog/posts/OS_lab6.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ nostatistics: true
- `schedule`: 根据policy选择下一个要调度的线程,调用 switch_to 至该线程
- `switch_to`: 获取先后线程的PCB地址,调用__switch_to
- `__switch_to`: 当前上下文存入 PCB,加载下一个进程的 PCB
- `__dummy`: 切用户栈,sret 返回用户段,而 sepc 是我们初始化的时候就指定的的 USER_START
- `__dummy`: 切用户栈,sret 返回用户段,而 sepc 是我们初始化的时候就指定的的 ENTRY
- `ENTRY`: PC跳转至ENTRY,但是此时该页的映射并未完成,PAGE FAULT
- `_traps`: PAGE FAULT,保存上下文进入trap_handler
- `trap_handler`: 确认是PAGE FAULT后,调用do_page_fault
Expand All @@ -50,14 +50,17 @@ nostatistics: true
- pt_regs: 位于该页高地址,其中内容在子进程从内核态返回用户态时将会被加载,以下项需要改动
- a0: 返回用户态后携带的调用返回值,也就是子进程得到的fork返回值,0
- sepc: fork对应ecall的下一条指令
- `_traps`: 父进程fork完毕,携带子进程pid恢复用户态上下文返回
- `fork`: 回到用户态,继续执行父进程直到被调度走,随后调度算法选择子进程
- `__switch_to`: 保存父进程上下文至父进程task_struct,从子进程task_struct中恢复子进程内核态上下文
- `__return_from_fork`: 子进程从pt_regs中恢复用户态上下文,包括返回值0,从trap返回ecall下一条指令,继续执行
- `_traps`: 父进程fork完毕,携带子进程pid恢复用户态上下文返回ecall下一条指令
- `fork`: 回到用户态,继续执行父进程,打印信息直到被调度走,随后调度算法选择子进程
- `__switch_to`: 保存父进程上下文至父进程task_struct,从子进程task_struct中恢复子进程内核态上下文(2)
- `__return_from_fork`: 子进程从pt_regs中恢复用户态上下文,包括返回值0(3),从trap返回ecall下一条指令,继续执行
```
</div>

1. 正常来说返回用户态的sp应该从pt_regs中恢复(文档中也是这么说的),但我实践上是从sscratch恢复的,这里应该根据具体实现修改。
2. 此处的上下文就是我们在fork中设置的
3. 此处的上下文就是我们在fork中设置的


## 调度算法

Expand Down
2 changes: 1 addition & 1 deletion docs/css/extra.css
Original file line number Diff line number Diff line change
Expand Up @@ -119,5 +119,5 @@ img[src*="pic1"] {
}
/* new code highlight lines*/
span.hll {
width: 145%;
width: 150%;
}

0 comments on commit f7705a3

Please sign in to comment.