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(用来标识进程)

  • 相关阅读:
    notepad++插件 small
    js中面向对象 small
    #九阴真经#优选配置渲染流程简要分析[Flexi引擎]
    gkENGINE HDR流程简析
    新的开始
    以前的一些画
    gkENGINE 开发两年半总结(上)
    gkENGINE跨平台的问题总结
    win7下安装xp双系统
    Hadoop0.20.2+ Nutch1.2+Tomcat7——分布式搜索配置
  • 原文地址:https://www.cnblogs.com/houyunzhe/p/14015583.html
Copyright © 2011-2022 走看看