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

202328 2023-10-29 13:26:53

目录

一、实验过程

1.打开实验楼,进入LinuxKernel,从https://github.com/torvalds/linux/blob/v3.18-rc6/arch/x86/syscalls/syscall_32.tbl中克隆menu

2.修改test.c文件,在test.c中加入getpid和getpidasm函数,重新编译成功后,输入help命令可以看到新增的功能

3.回到LinuxKernel目录下执行

4、在sys_getpid处设置断点,发现在执行getpid_asm时停下了,一直按n进行若干次单步执行进入schedule函数。

二、根据本周所学知识分析系统调用的过程,从 system_call 开始到 iret 结束之间的整个过程,并画出简要准确的流程图

三、总结

四、ChatGPT辅助学习


一、实验过程

1.打开实验楼,进入LinuxKernel,从https://github.com/torvalds/linux/blob/v3.18-rc6/arch/x86/syscalls/syscall_32.tbl中克隆menu

2.修改test.c文件,在test.c中加入getpid和getpidasm函数,重新编译成功后,输入help命令可以看到新增的功能

  getpid和getpidasm函数

int Getpid(int argc,char*argv[]){
    int pid;
    pid = getpid();
    printf("pid=%d\n",pid);
    return 0;
}

int Getpidasm(int argc, char *argv[]){
    int pid;
    asm volatile(
            "mov $0,%%ebx\n\t"
            "mov $0x14,%%eax\n\t"
            "int $0x80\n\t"
            "mov %%eax,%0\n\t"
            :"=m"(pid)
            );
    printf("pid = %d\n",pid);
    return 0;
}

3.回到LinuxKernel目录下执行

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

  再打开另一个终端进行调试

gdb  file linux-3.18.6/vmlinux

gdb  target remote:1234

4、在sys_getpid处设置断点,发现在执行getpid_asm时停下了,一直按n进行若干次单步执行进入schedule函数。

 

 

二、根据本周所学知识分析系统调用的过程,从 system_call 开始到 iret 结束之间的整个过程,并画出简要准确的流程图

三、总结

本次实验中,我使用了gdb工具跟踪分析了Linux内核中的两个系统调用函数:getpid 和 getppid。这帮助我更深入地理解了系统调用的执行过程,包括用户空间和内核空间之间的切换、参数传递、系统调用号的解析等。通过调试和观察寄存器状态的变化,我成功捕获了系统调用的执行步骤,并进一步绘制了流程图,以更清晰地展示系统调用的执行过程。


四、ChatGPT辅助学习

 

 

...全文
460 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 标题中的“mac驱动兼容win11系统驱动适配版本bootcamp_5.1.5640”明确指出这是一个面向苹果Mac电脑用户的产品,其核心目的是协助用户在Windows 11操作系统上完成驱动程序的安装与配置工作。BootCamp作为苹果公司推出的一项工具,赋予Mac用户在不移除原有macOS系统的前提下,安装并执行Windows操作系统的能力。此特定版本的BootCamp 5.1.5640是专门针对Windows 11环境进行优化的驱动适配版本。 描述部分提及的“mac装win11适配的驱动包”,表明这个压缩文件内含了适配Mac硬件在Windows 11操作系统下运行的驱动程序,涵盖显卡、声卡、网卡等关键设备。用户需首先对文件进行解压缩操作,随后在BootCamp文件夹中找到名为"BootCamp.msi"的安装文件,通过双击执行来启动安装流程。这一步骤是BootCamp驱动安装过程中的核心环节,其中msi文件代表Microsoft Installer格式,其功能在于应用程序的分发与管理。 “BootCamp”标签进一步验证了该压缩包的主要功能,即借助BootCamp服务实现Mac设备与Windows系统之间的硬件兼容性。BootCamp的功能不止于提供驱动程序,还集成了一个引导管理器,允许用户在系统启动时选择运行macOS或Windows。 在压缩包的文件清单中: 1. "AutoUnattend.xml":该文件通常作为无人值守安装的配置文档,旨在自动执行Windows安装过程中的部分或全部设置任务,如用户账户的建立、地区设定的调整、网络配置等,从而提升安装的便捷性。 ...
内容概要:本文围绕“面向光储充一体化社区的有序充电策略研究”展开,提供了基于Matlab的代码实现方案。研究旨在构建整合光伏发电、储能系统与电动汽车充电管理的社区综合能源系统,通过设计先进的优化调度算法,对电动车辆的充电行为进行有序引导,从而提升可再生能源的就地消纳能力,降低对主电网的冲击,提高整体能源利用效率。文中详细阐述了系统架构与数学模型,综合考虑了光照强度、居民用电负荷、分时电价机制、用户充电偏好及电池状态等多重因素,建立了以经济成本最低、光伏利用率最高和负荷波动最小为目标的多目标优化模型,并采用高效的优化算法求解最优充电调度方案。通过Matlab平台进行仿真验证,结果表明所提出的有序充电策略能有效削峰填谷,促进能源的本地平衡与高效利用,具有良好的应用前景。; 适合人群:具备一定电力系统、新能源技术、优化理论或自动化控制背景,从事相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入探究光储充一体化系统的协同运行机制与多目标优化调度方法;② 学习并复现基于Matlab的有序充电策略建模、算法实现与仿真分析全过程;③ 为城市社区、商业园区等场景下的微电网能量管理系统(EMS)设计与实际部署提供理论依据和技术参考。; 阅读建议:建议读者结合提供的Matlab代码,深入理解模型构建与算法实现细节,重点关注目标函数的设计思路、各类物理与操作约束的数学表达以及仿真结果的对比分析,以便全面掌握该有序充电策略的核心思想、优化逻辑及其在实际应用中的潜力与局限性。

39

社区成员

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

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