2020-2021-1 20199311《Linux内核原理与分析》第七周作业

2020-2021-1 20199311《Linux内核原理与分析》第七周作业

作业信息

这个作业属于哪个课程
<2020-2021-1Linux内核原理与分析)>
这个作业要求在哪里
<2020-2021-1Linux内核原理与分析第七周作业>
这个作业的目标
分析Linux内核创建一个新进程的过程
作业正文
本博客链接

作业正文

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

1.实验过程

1.初始化MenuO,向MenuOS中增加fork命令:

cd ~/LinuxKernel
rm menu -rf
git clone https://github.com/mengning/menu.git
cd menu 
mv test_fork.c test.c
make rootfs


输入fork,查看fork命令:

2.使用gdb进行调试,在相关函数处设置断点

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
file linux-3.18.6/vmlinux
target remote:1234
b sys_clone
b do_fork
b dup_task_struct
b copy_process
b copy_thread
b ret_from_fork


3.开始调试



二、Linux知识学习

1.操作系统内核实现操作系统的三大管理功能:

  • 进程管理
  • 内存管理
  • 文件系统

2.进程的三种基本状态:

  • 就绪态
  • 运行态
  • 阻塞态

在Linux内核中,当进程是TASK_RUNNING状态时,它是可运行的,处于就绪态。当进程获得CPU的控制权,在CPU中实际执行时,它处于运行态。当进程被内核调度出去,在等待队列里就是就绪态。一个正在运行的进程在等待特定的事件或资源时会进入阻塞态。

3.创建一个进程是复制当前进程的信息,即fork一个进程就是创建了一个新进程。父进程和子进程的绝大部分信息是完全一样的,但是pid的值和内核堆栈等信息是不能一样的。在fork一个子进程的过程中,复制父进程的资源时采用Copy On Write技术,不需要修改进程资源,父子进程共享内存存储空间。

posted @ 2020-11-20 21:43  dkkk7  阅读(71)  评论(0编辑  收藏  举报