(2023-2024-1)20232811《Linux内核原理分析与设计》第七周作业
目录
一、阅读理解 task_struct 数据结构
1、进程描述符
task_struct具有非常庞大的数据结构,400多行代码。包括对进程链表的管理,控制台,文件系统描述,文件描述符,内存管理描述,信号描述等,其结构示意图如下图所示:

2、进程状态
当使用fork()创建一个新的进程时,进程的状态是TASK_RUNNING(就绪态),新进程被调度运行时,就切换到TASK_RUNNING(运行态)。对于一个正在运行的进程,调用用户库函数exit()会陷入内核执行该内核函数do_exit(),也就是终止进程,就会进入TASK_ZOMBIE状态(僵尸进程)。一个正在运行的进程在等待特定的事件和资源时会进入阻塞态。阻塞态也分两种:TASK_INTERRUPTIBLE和TASK_UNINTERRUPTLBLE。TASK_INTERRUPTIBLE可以被信号和wake_up唤醒的,当信号到来时,进程会被设置为TASK_RUNNING(就绪态),而TASK_UNINTERRUPTLBLE只能被wake-up()唤醒。
二、 分析Linux内核创建一个新进程的过程
2.1 启动MenuOS
cd LinuxKernel
rm -rf menu
git clone https://github.com/mengning/menu.git
cd menu
mv test_fork.c test.c
make rootfs

测试folk

2.2 调试MenuOS
通过增加-s -S启动参数打开调试模式:
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

打开gdb进行调试:
gdb
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
执行fork命令,停在了断点SyS_clone处,单步执行,定在了断点do_fork处;之后就是依次设置的断点

三、总结
创建一个新进程在内核中的执行过程大致如下:
使用系统调用Sys_clone(或fork,vfork)系统调用创建一个新进程。这些系统调用会通过调用do_fork函数来实现进程的创建。Linux通过复制父进程的进程控制块(PCB)中的task_struct结构来创建一个新进程,并为新进程分配一个新的内核堆栈。需要修改复制过来的进程数据,例如进程ID(pid)、进程链表等。这一步通过执行copy_process和copy_thread函数来完成。设置新进程的内核栈顶,即p->thread.sp = (unsigned long) childregs。这个值表示当调度到子进程时,使用的内核栈的顶部位置。设置子进程的第一条指令地址,即p->thread.ip = (unsigned long) ret_from_fork。这个地址表示当调度到子进程时,执行的第一条指令。
相关推荐
科技中介服务机构如何快速生成高质量科技成果推介书?.docx
科技中介服务机构如何快速生成高质量科技成果推介书?
制造企业AI智能体平台规划方案.pptx
制造企业AI智能体平台规划方案.pptx
【顶刊TAC复现】事件触发模型参考自适应控制(ETC+MRAC):针对非线性参数不确定性线性部分时变连续系统研究(Matlab代码实现)
内容概要:本文提出了一种结合事件触发控制(Event-Triggered Control, ETC)与模型参考自适应控制(Model Reference Adaptive Control, MRAC)的先进控制策略,用于解决具有非线性参数不确定性及时变特性的线性连续系统的控制问题。该方法通过引入事件触发机制有效减少了控制器与执行器之间的通信频率,降低了资源消耗,同时利用MRAC在线估计并补偿系统中的未知参数和外部扰动,确保闭环系统的稳定性与优异的跟踪性能。文中详细阐述了控制律的设计过程、自适应律的构造以及基于李雅普诺夫稳定性理论的系统收敛性分析,并提供了完整的Matlab代码实现,便于读者复现并验证该方法在顶刊IEEE Transactions on Automatic Control(TAC)级别研究中的有效性。; 适合人群:具备扎实的自动控制理论基础、熟悉现代控制方法与李雅普诺夫稳定性分析,熟练掌握Matlab/Simulink仿真工具的研究生、高校教师及科研人员,特别适用于从事事件触发控制、自适应控制、鲁棒控制及智能控制等前沿方向的研究者。; 使用场景及目标:①复现并深入理解高水平控制领域期刊(如IEEE TAC)中关于ETC与MRAC融合的先进控制算法;②掌握事件触发机制在资源受限系统(如无线传感网络、嵌入式系统)中的设计与分析方法;③应用于航天器姿态控制、工业机器人、智能电网等存在参数时变、外部扰动及通信成本高昂的实际工程系统的控制设计与仿真验证。; 阅读建议:建议读者结合所提供的Matlab代码逐模块分析其实现逻辑,重点关注事件触发阈值的设计、自适应参数更新律的离散化处理以及李雅普诺夫函数的构造过程,并尝试在不同系统参数和扰动条件下进行仿真实验,以全面掌握该方法的性能边界与工程适用性。
国央企创新负责人在推动内部创新成果转化时,如何实现技术成果与外部市场需求的高效对接?.docx
国央企创新负责人在推动内部创新成果转化时,如何实现技术成果与外部市场需求的高效对接?
科技中介服务机构如何提升服务的智能化与专业化水平?.docx
科技中介服务机构如何提升服务的智能化与专业化水平?


