首页
›
Linux内核与驱动
›
108-xv6内核
›
《xv6内核exec与fork协同创建进程实战》
VIP10
本课程属于:108-xv6内核
Linux内核与驱动 · 共 10 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
xv6内核exec与fork协同创建进程实战
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导论
xv6操作系统概述 · 进程与内存管理基础 · fork与exec的核心地位
课程导论
xv6
02
xv6源码结构
内核源码目录分析 · Makefile构建系统 · 关键头文件与数据结构预览
xv6
源码结构
03
进程控制块(proc)
struct proc结构体详解 · 状态字段 · 上下文
proc
进程控制块
04
进程地址空间
页表与虚拟内存布局 · 用户栈与内核栈 · trapframe结构
进程地址空间
页表
05
系统调用入口
syscall.c与syscall.… · 系统调用编号 · 用户态到内核态的切换流程
系统调用入口
syscall.c
06
fork系统调用(上)
sys_fork入口 · allocproc分配进程槽 · 复制父进程的上下文
fork
系统调用
07
fork系统调用(中)
uvmcopy复制页表与物理内存 · 写时拷贝(COW)思想引入
fork
系统调用
08
fork系统调用(下)
文件描述符复制 · 返回子进程PID · 父子进程调度与执行
fork
系统调用
09
exec系统调用(上)
sys_exec入口 · 解析用户态路径 · 读取ELF文件头
exec
系统调用
10
exec系统调用(中)
loadseg加载程序段 · 分配用户内存 · 设置栈与参数
exec
系统调用
11
exec系统调用(下)
设置trapframe与epc · 释放旧进程资源 · 返回新程序入口
exec
系统调用
12
fork与exec的协同
典型Shell执行流程 · fork创建子进程 · exec加载新程序
fork
exec
13
进程生命周期
从创建到退出 · wait系统调用 · 僵尸进程与资源回收
进程生命周期
从创建到退出
14
文件描述符的继承
fork时文件表复制 · exec时文件描述符保持 · 重定向实现原理
文件描述符的继承
fork
15
管道与进程通信
pipe系统调用 · 管道缓冲区 · fork+pipe实现父子进程通信
管道
进程通信
16
Shell实战(一)
sh.c源码分析 · 主循环 · 读取命令与参数解析
Shell
sh.c
17
Shell实战(二)
fork+exec执行简单命令 · 等待子进程完成
Shell
fork+exec
18
Shell实战(三)
输入输出重定向实现 · 符号处理
Shell
输入输出重定向实…
19
Shell实战(四)
管道命令实现 · 多个进程串联 · pipe与fork结合
Shell
管道命令实现
20
内存管理细节
kalloc与kfree · 物理内存分配器 · 页表操作函数
内存管理细节
kalloc
21
上下文切换
swtch函数 · scheduler调度循环 · 进程切换的完整流程
上下文切换
swtch
22
锁与并发
xv6自旋锁实现 · acquire与release · 锁在fork/exec中的使用
并发
xv6
23
trap与中断
用户态陷入内核 · 系统调用trap流程 · 时钟中断与进程抢占
trap
用户态陷入内核
24
多核支持
xv6 SMP架构 · 每个CPU的进程调度 · 锁竞争优化
多核支持
xv6
25
exec的ELF加载细节
ELF文件格式解析 · program header · 加载到内存
exec
ELF
26
fork的写时拷贝(COW)实现
懒分配 · 缺页处理 · 共享物理页
fork
COW
27
进程退出与清理
exit系统调用 · 关闭文件描述符 · 唤醒父进程
进程退出
清理
28
wait系统调用
等待子进程 · 获取退出状态 · 释放proc结构
wait
系统调用
29
综合实战
编写一个迷你Shell · 支持fork+exec+管道+重定向
综合实战
Shell
30
课程总结
fork与exec设计哲学 · xv6对现代操作系统的启示 · 进一步学习路径
课程总结
fork
所属VIP或分类
同VIP:xv6内核console驱动字符输入输出缓冲区设计
同VIP:xv6内核console驱动轮询模式与中断模式切换设计
同VIP:xv6内核page-table多级页表遍历与TLB刷新优化