HDU 操作系统实验二 -设计一个系统调用,返回指定进程的相关时间信息

本文详细指导如何从Linux内核编译开始,设计并实现系统调用,获取指定进程的时间信息,包括创建时间、运行时间和子进程时间。涉及关键函数如find_get_pid、pid_task和copy_to_user,以及内核结构task_struct和list_for_each_entry的使用。

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

目录

一、实验思路

二、准备工作——Linux内核编译步骤

1.实验环境配置

2.下载内核源码

3.解压缩内核源码文件

4.清除残留的.config和.o文件

5.配置内核

6.编译内核,生成启动映像文件

7.编译模块

8.安装内核

9.配置grub引导程序

10.重启系统

三、设计系统调用,返回指定进程的相关时间信息

1.分配系统调用号,修改系统调用表

2.申请系统调用服务例程原型

3.实现系统调用服务例程

4.重新编译内核

5.编写用户态程序测试新系统调用

四、函数详解

(1)find_get_pid(pid)

(2)pid_task()

(3)copy_to_user()

(4)list_for_each_entry(pos, head, member)

五、关于验收


一、实验思路

题目:返回指定进程的相关时间信息,如进程创建时间、进程在用户态及内核态的运行时间、进程的所有子孙进程在用户态的运行时间及在内核态的运行时间等。

本实验要求设计系统调用,而系统调用的实质是调用内核函数,于内核态中运行。 所以要先编译好内核,再来进行系统调用:

789aa49dbb0d4695bffe5f81257f3e5e.png

图2.1 实验流程

编译内核的步骤:

e3e7c43eac274ab8bad62e21a8356839.png

                                                                 图2.2 编译内核步骤

二、准备工作——Linux内核编译步骤

1.实验环境配置

2.下载内核源码

点击进入Linux官方网站下载

3.解压缩内核源码文件

1.将下载的新内核压缩文件复制到/home中

10e16b1e3db7413ab0a9645235fdc52e.png

2.进入压缩文件所在子目录

cd /home

 3.分两步解压缩:

xz -d linux-6.0.8.tar.xz

(别急,等着它运行完)

tar -xvf linux-6.0.8.tar

 运行完啦:

d3fcbb70ee494c928c273199fac53168.png

 

 

4.清除残留的.config和.o文件

 注:一定要先进入linux-6.0.8子目录哟

4c5f95be825d4d6e820fcd45fa6e69a4.png

 

 不然会报错:

963585e2bce84b218ea6aed6ca1d9c66.png

1.安装ncurses包命令(Ubuntu中为:libncurses5-dev):

apt-get install libncurses5-dev

2.在开始完全重新编译之前,执行如下命令来清除残留的.config和.o文件:

make mrproper

 

5.配置内核

  运行命令:

make menuc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值