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

本文介绍了通过shell操作和内核调试学习Linux内核中的task_struct数据结构,以及sys_clone函数如何创建新进程的过程。实验涉及删除原有菜单,克隆目录,设置断点并单步执行,重点在于理解进程创建时的数据结构操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验过程

打开shell终端,删掉原menu目录,从git克隆一个menu目录,启动MenuOS

运行

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

命令打开调试模式

另启一个终端进入LinuxKernel目录进入gdb模式进行调试,并在

b sys_clone

b do_fork

b dup_task_struct

b copy_process

b copy_thread

b ret_from_fork

处设置断点

按c继续运行,并一直输入n单步执行

二、学习内容

(1)理解 task_struct 数据结构

task_struct是Linux内核中用于表示进程和线程的数据结构。它定义在`<linux/sched.h>头文件中。

task_struct数据结构包含了进程/线程的各种属性和状态信息,此外,task_struct还包含了用于调度的字段,如调度策略、优先级等。

task_struct是一个非常庞大的数据结构,它保存了进程和线程的所有必要信息,通过对该数据结构的操作,内核可以对进程和线程进行管理和调度。

(2)分析 fork 函数对应的内核处理过程 sys_clone,理解创建一个新进程如何创建和修改 task_struct 数据结构

三、实验总结

本次实验,了解了进程的创建过程,进程的创建过程涉及资源的复制、内核堆栈的初始化和执行起点的切换。这些步骤保证了子进程能够独立运行,并拥有与父进程相似的环境和状态。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值