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

    系统调用的三层机制

    首先是为系统增加新的命令

    运行脚本自动生成文件系统

    其中有一个显示时间的功能

    编辑test.c文件,增加一个hello函数用来显示学号,再次使用make roofts自动编译,调用新增的函数

    使用gdb跟踪系统调用内核函数sys_time

    启动内核,水平分割shell,并使用gdb建立连接

    在 start_kernel 处设置断点,在gdb中按c会在设置断点的 start_kernel 处停下来,使用list可以查看这段代码。

    用b sys_time设置一个断点,启动MenuOS后执行time命令,程序会停到 sys_time 这个函数的位置,time命令执行到一半卡在那里。

    单步执行,进入get_seconds() 中所在的 linux-3.18.6/kernel/time/timekeeping.c 文件,一直到 return i,获得的就是当前系统时间time的数值。


    设置一个断点system_call,继续执行,观察time函数的返回值

    Linux内核编译

    首先采用的内核版本为5.3.7,按照教程操作,许多文件的位置并不完全对应,在为系统添加系统调用号的时候,需要按如下添加

    否则会报错

    另外缺少libssl-dev与bison等内容,从ubuntu默认源下载十分缓慢,可以更换阿里的源或者清华源,但是update需要较长时间。
    最后经过许多尝试之后

  • 相关阅读:
    Python格式化输出
    每天写点shell脚本 (持续更新)
    linux limits.conf 配置
    ELK 日志分析系统
    开源大数据处理工具
    glusterFS分布式存储部署流程
    glusterFS的部署流程
    parted命令详解
    /proc文件系统
    /proc文件系统(二):/proc/<pid>/stat
  • 原文地址:https://www.cnblogs.com/besti-20199303/p/11748574.html
Copyright © 2011-2022 走看看