2023-2024-1 20232808 《Linux内核原理与分析》第七周作业

实验内容

  • 分析 fork 函数对应的内核处理过程 sys_clone,理解创建一个新进程如何创建和修改 task_struct 数据结构;
  • 使用 gdb 跟踪分析一个 fork 系统调用内核处理函数 sys_clone ,验证您对 Linux 系统创建一个新进程的理解,推荐在实验楼 Linux 虚拟机环境下完成实验。 特别关注新进程是从哪里开始执行的?为什么从那里能顺利执行下去?即执行起点与内核堆栈如何保证一致。

步骤

1、进入内核,将fork()写入test.c

cd LinuxKernel
cd menu
vi test.c

代码如下:

//fork函数代码如下
#include <unistd.h> 
 
int Fork(int argc, char *argv[]) {
    int pid;
    /* fork another process */
    pid = fork();                                 
    if (pid<0) { 
       /* error occurred */
       fprintf(stderr,"Fork Failed!");
       exit(-1);
    } else if (pid==0) {
       /*   child process  */
       printf("This is Child Process!\n");
    } else {   
       /*  parent process   */
       printf("This is Parent Process!\n");          
       /* parent will wait for the child to complete*/
       wait(NULL);
       printf("Child Complete!\n");
    }
}
 
//在main函数中写入如下代码
MenuConfig("fork","Fork a new process",Fork);

2、启动

make rootfs

在这里插入图片描述

3、进入调试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ChatGPT

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值