• 2019-2020-1 20199326《Linux内核原理与分析》第四周作业


    第四周学习内容

    庖丁解牛Linux内核分析第三章:MenuOS的构造

    Linux内核分析实验三

    学到的一些知识

    • 操作系统两大宝剑:1.中断上下文的切换--保存现场和恢复现场 2.进程上下文的切换

    • Linux内核版本号命名规则:A.B.C.D,A代表大幅度转变的内核,B指一些重大修改的内核,C是内核的真实版本,D是安全补丁和bug修复

    • linux内核源码目录结构:

      • arch里的内容可以使Linux内核支持不同的CPU和体系结构,我们用的电脑基本都是x86架构,所以只需要关注x86文件目录即可
      • block存放Linux存储体系中关于块设备管理的代码
      • crypto存放长假的呢加密算法的C语言代码,譬如crc32、md5、sha1等
      • document存放一些文档
      • drivers驱动目录,里面存放了linux内核支持的所有硬件的驱动源代码
      • firmware固件
      • fs文件系统,里面列出了Linux支持的各种文件系统的实现
      • include头文件目录,存放公共的头文件
      • init存放Linux内核启动时的初始化代码,其中main.c源文件是整个Linux内核启动的起点
      • ipc是进程间通信,存放的是linux支持的IPC的代码实现
      • kernel内核,存放内核本身需要的一些核心代码文件
      • lib公用库文件,是一些公用的库函数
      • mm是memory management内存管理,存放linux的内核管理代码
      • net存放了网络相关代码,譬如TCP/IP协议栈
      • readme就是个文档,介绍了什么是Linux,Linux能在那些硬件上运行等问题。
    • Linux内核分析中比较重要的是arch目录下的x86目录下的源文件,init目录下的main.c,kernel下和进程调度相关的代码,其他还有内存管理,网络,文件系统等代码

    实验内容

    跟踪分析Linux内核的启动过程

    1.启动menuos

    cd LinuxKernel/
    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
    

    启动效果如图

    2.使用gdb跟踪调试内核

    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
    

    另开shell窗口,进入Linuxkernel目录下输入gdb
    在gdb下设置断点

    file linux-3.18.6/vmlinux  #加载符号表
    target remote:1234  #建立gdb和gdbserver之间的连接
    break start_kernel	#设置断点
    c   #让qemu上的linux继续运行
    break rest_init #设置另一个断点
    c  #继续执行
    

    执行效果如图

  • 相关阅读:
    Oracle记录-Linux JDK与Oracle profile环境配置
    MySQL记录-Lost Connect MySQL Server during query解决方案
    Hive记录-配置远程连接(JAVA/beeline)
    CM记录-Hadoop 分布式文件系统HDFS(登录、配置、监控)
    currentStyle
    封装用className选元素
    event
    jQuery全局函数
    ajax请求
    [Swift-2019力扣杯春季决赛]1. 有序数组中的缺失元素
  • 原文地址:https://www.cnblogs.com/funmary/p/11619990.html
Copyright © 2020-2023  润新知