zoukankan      html  css  js  c++  java
  • 2019-2020-1 20199301《Linux内核原理与分析》第六周作业

    第五章

    系统调用的三层机制(下)

    1.给MenuOS增加命令

    • 代码如下:
    rm -rf menu
    git clone http://github.com/mengning/menu.git
    make rootfs
    

    2.使用gdb跟踪系统调用内核sys_time

    • 返回LinuxKernel的目录下启动内核
    cd ..
    qemu -kernel linux3-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
    

    • 打开一个新的命令窗口,启动gdb,加载内核建立连接cd LinuxKernel/ gdb file linux-3.18.6/vmlinux target remote:1234

    • 设置断点b sys_time,按c继续运行,运行到断点停止。time系统调用的是sys_time函数,因此在sys_time函数处设置断点,我们可以看到的就是输入time命令后没有反应

    • sys_time是在宏中实现的,无法直接看到。用`list命令列出sys_time对应代码

    • 单步执行gdb调试

    • system_call代码分析

    实验中遇到的问题:

    • 上周实验是做的rename和rename_asm的,在给menuos增加这两条命令时,函数一直在报错,也没有找到解决的办法,于是只能先做time和time_asm的命令添加。
    • 分析system_call代码时,不会找systime_call中哪个位置调用了sys_time(),不过这个问题在云班课视频中有解释讲解清楚。
    • 由于宿舍网不好,实验楼环境比较卡顿,一个实验反反复复做了很久。
  • 相关阅读:
    C#获取本地IP地址
    C#中将字符串转换成数值
    JavaScript实现基于对象的双端队列
    Java网络编程
    JavaScript实现基于对象的队列
    JavaScript实现基于对象的栈
    JavaScript实现基于数组的栈
    发送短信按钮倒计时案例
    JavaScript动态显示时间
    html
  • 原文地址:https://www.cnblogs.com/lsqz/p/11729645.html
Copyright © 2011-2022 走看看