查看所有文章链接:(更新中)深入浅出操作系统 - 目录
文章目录
1. 问题
- 内核级命令如何实现?
1.1 内核级命令的本质
- 命令所对应的功能需要 内核协助 才能实现
- 在内核中实现命令的功能(如:获取硬件信息)
- 创建系统调用接口连接内核功能
- Shell任务通过 系统调用 实现命令
1.2 命令示例:获取系统物理内存容量(mem)
解决方案:
- 系统启动时,在实模式下获取物理内存容量( int 0x15,此时的还是BIOS中断 )
- 将物理内存容量暂存于共享内存区
- 内核执行时,从共享内存区获取物理内存容量(存入全局变量)
- 实现系统调用uint GetMemSize()
- Shell任务通过GetMemSize()实现命令mem并打印容量大小
1.2.1 物理内存容量大小获取
1.2.2 物理内存容量大小修正
1.2.3 uint GetMemSize()的实现
1.2.4 mem命令的实现
1.3 编程实验:内核级命令的实现
- 测试物理内存容量结果
【参看链接】:78 - 内核级命令实现示例 / 00测试物理内存容量结果
- 内核级命令mem的实现
【参看链接】:78 - 内核级命令实现示例 / 01mem命令
2. 小结
- shell的 本质是一个任务(执行于用户态)
- shell是 命令解释器,解释用户输入的命令
- shell的命令可分为3种类型:
- 启动型命令:启动其它任务(一个或多个)实现功能
- 应用级命令:shell任务自身实现命令功能
- 内核级命令:shell依赖内核实现命令功能