(2023-2024-1)20232811《Linux内核原理分析与设计》第七周作业

202328 2023-11-04 15:39:54

目录

一、阅读理解 task_struct 数据结构

1、进程描述符

​2、进程状态

二、 分析Linux内核创建一个新进程的过程

2.1 启动MenuOS

2.2 调试MenuOS

三、总结


一、阅读理解 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。这个地址表示当调度到子进程时,执行的第一条指令。

...全文
536 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文针对交直流混合数据中心园区的能源供应与算力资源协同问题,提出了一种多源-算力协同供电协调规划方法。该方法深度融合电力系统与信息计算系统,综合考虑光伏、风电、市电等多种能源形式与算力负载的时空耦合特性,通过构建多目标优化模型实现能源供给与算力需求的动态匹配与联合优化。研究设计了兼顾经济性、能效性与供电可靠性的综合评价体系,并采用Matlab进行建模仿真,对不同运行场景下的规划方案进行了对比分析,有效验证了所提方法在降低综合运营成本、提升能源利用效率和增强系统韧性的优越性能。; 适合人群:具备电力系统、能源管理、计算机系统或自动化等相关专业背景,从事数据中心、综合能源系统(IES)、新能源优化、算力网络等交叉领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为交直流混合架构的数据中心园区提供科学合理的多能协同供电与算力资源联合规划方案;②实现算力任务调度与多源供电策略的深度协调优化,最大化可再生能源消纳,提升整体能源效率与系统运行可靠性;③为其他涉及“能源-信息”深度融合的综合能源系统优化调度研究提供理论参考与Matlab代码实现基础。; 阅读建议:本文是典型的跨学科交叉研究,阅读时应重点关注其多目标优化建模的构建逻辑、多源-算力协同机制的设计原理以及目标函数与约束条件的数学表达。建议结合所提供的Matlab代码,动手复现仿真过程,深入理解模型求解细节,从而更好地掌握该方法的核心思想,并尝试将其迁移应用于自身相关的优化问题研究中。

39

社区成员

发帖
与我相关
我的任务
社区描述
北京电子科技学院 《Linux内核原理与分析》课程
linuxarm开发系统安全 高校 北京·丰台区
社区管理员
  • rocflytosky
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧