• 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(),不过这个问题在云班课视频中有解释讲解清楚。
    • 由于宿舍网不好,实验楼环境比较卡顿,一个实验反反复复做了很久。
  • 相关阅读:
    jQuery插件编写步骤详解
    原生JavaScript实现JSON合并(递归深度合并)
    js原型链继承及调用父类方法
    codefind.pl
    如何为属性是disabled的表单绑定js事件
    平假名、片假名转换
    #和##在宏替换中的作用
    Perl实用中文处理步骤(修改版)
    Perl Unicode全攻略
    nio DirectByteBuffer如何回收堆外内存
  • 原文地址:https://www.cnblogs.com/lsqz/p/11729645.html
Copyright © 2020-2023  润新知