78 - 内核级命令实现示例

---- 整理自狄泰软件唐佐林老师课程

查看所有文章链接:(更新中)深入浅出操作系统 - 目录

1. 问题

  • 内核级命令如何实现?

1.1 内核级命令的本质

  • 命令所对应的功能需要 内核协助 才能实现
    • 在内核中实现命令的功能(如:获取硬件信息)
    • 创建系统调用接口连接内核功能
    • Shell任务通过 系统调用 实现命令

1.2 命令示例:获取系统物理内存容量(mem)

解决方案:

  1. 系统启动时,在实模式下获取物理内存容量( int 0x15,此时的还是BIOS中断 )
  2. 将物理内存容量暂存于共享内存区
  3. 内核执行时,从共享内存区获取物理内存容量(存入全局变量)
  4. 实现系统调用uint GetMemSize()
  5. Shell任务通过GetMemSize()实现命令mem并打印容量大小

1.2.1 物理内存容量大小获取

在这里插入图片描述

1.2.2 物理内存容量大小修正

在这里插入图片描述

1.2.3 uint GetMemSize()的实现

在这里插入图片描述

1.2.4 mem命令的实现

在这里插入图片描述

1.3 编程实验:内核级命令的实现

  1. 测试物理内存容量结果

【参看链接】:78 - 内核级命令实现示例 / 00测试物理内存容量结果

在这里插入图片描述
在这里插入图片描述

  1. 内核级命令mem的实现

【参看链接】:78 - 内核级命令实现示例 / 01mem命令

在这里插入图片描述

2. 小结

  • shell的 本质是一个任务(执行于用户态)
  • shell是 命令解释器,解释用户输入的命令
  • shell的命令可分为3种类型:
    • 启动型命令:启动其它任务(一个或多个)实现功能
    • 应用级命令:shell任务自身实现命令功能
    • 内核级命令:shell依赖内核实现命令功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uuxiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值