并发进程的正确性
执行过程是不确定性和不可重现的 程序错误可能是间歇性发生的
- 独立进程
- 不和其他进程共享资源或状态
- 确定性 输入状态决定结果
- 可重现 能够重现起始条件
- 调度顺序不重要
- 并发进程
- 在多个进程间有资源共享(都要CPU 内存)
- 不确定性
- 不可重现
请把你做的实验2/3/4/5的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”“LAB5”的注释相应部分。并确保编译通过。注意:为了能够正确执行lab6的测试应用程序,可能需对已完成的实验1/2/3/4/5的代码进行进一步改进。
1 | 复制以下文件 其中 proc.c 和 trap.c 需要进行修正 |
本实验依赖实验1/2/3。请把你做的实验1/2/3的代码填入本实验中代码中有“LAB1”,“LAB2”,“LAB3”的注释相应部分。
1 | vmm.c trap.c default_pmm.c pmm.c swap_fifo.c 这几个补上去就完事了 |
alloc_proc函数(位于kern/process/proc.c中)负责分配并返回一个新的struct proc_struct结构,用于存储新建立的内核线程的管理信息。ucore需要对这个结构进行最基本的初始化,你需要完成这个初始化过程。
【提示】在alloc_proc函数的实现中,需要初始化的proc_struct结构中的成员变量至少包括:state/pid/runs/kstack/need_resched/parent/mm/context/tf/cr3/flags/name。
在练习开始之前 先讲讲 两个数据结构
1 | struct mm_struct { // 描述一个进程的虚拟地址空间 每个进程的 pcb 中 会有一个指针指向本结构体 |