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

    作业信息

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)>
    这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第七周作业>
    这个作业的目标 <分析Linux内核创建一个新进程的过程>
    作业正文 https://www.cnblogs.com/houyunzhe/p/14015583.html

    一、实验:分析Linux内核创建一个新进程的过程

    1、在MenuOs中增加命令fork,初始化MenuOs,把menu删除,克隆一份新的,把test_fork.c覆盖掉,编译内核,可以看到fork命令;

    输入help即可看到增加的fork命令

    2、按照上次实验的流程,输入如下命令,启动并加载内核,在连接target remote 1234;

    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
    file linux-3.18.6/vmlinux
    target remote:1234
    

    3、在gdb中设置断点sys_clone,设置断点do_fork,设置断点dup_task_struck,设置断点copy_process,设置断点copy_thread,设置断点ret_from_fork,
    设置断点之后在MenuOS中执行fork,就会发现fork函数停在了父进程中

    4、按c继续执行之后,如下图所示,停在了do_fork的位置

    5、按n继续追踪

    6、在copy_thread中,可以看到把task_pg_regs(p)也就是内核堆栈特定的地址找到并初始化

    二、学习收获

    1、进程描述符task_struck数据结构

    (1)操作系统的三大功能:进程管理、内存管理、文件系统。

    (2)进程控制块PCB——task_struck
    tty_struck控制台
    fs_struck文件系统的描述
    files_struck打开的文件描述符
    mm_struck内存的描述
    signal_struck信号的描述

    (3)操作系统原理中的状态:就绪态、运行态、阻塞态
    进程状态转换图:

    (4)内核管理中的进程状态:
    TASK_TUNNING (可运行)获得cpu控制权正在运行,被调度出去就是就绪态
    TASK_ZOMBIE (进程被终止)
    TASK_INTERRUOTIBIE (阻塞态)
    TASK_UNINTERRUOTIBIE (阻塞态)
    (5)进程的标示符:pid(用来标识进程)

  • 相关阅读:
    .net 调用SAP RFC的几种方法
    SAP FI 科目代码
    FI 常用表
    SD 相关表
    20170328 技巧-记事本001
    20170326 ABAP调用外部webservice实例
    20170326 ABAP调用外部webservice 问题
    20170325 ABAP调用webservice
    SAP 第四代增强-BTE
    经济学中的破窗理论
  • 原文地址:https://www.cnblogs.com/houyunzhe/p/14015583.html
Copyright © 2011-2022 走看看