操作系统课程设计:Linux系统调用/基于模块的文件系统/Linux驱动/统计Linux系统缺页的次数 整合

简介: 操作系统课程设计:Linux系统调用/基于模块的文件系统/Linux驱动/统计Linux系统缺页的次数 整合

一、可选题目

题目1:新增Linux系统调用

采用编译内核法,在Linux中增加一个系统调用。

要求:

(1)系统调用实现的功能:计算一个数字的三次方,并打印出来。

(2)另外写一个程序进行调用。

题目2:实现基于模块的文件系统

修改ext3或ext4的源代码,实现新的文件系统。

要求:

(1)复制ext3或ext4的源代码,修改Makefile文件,使用模块编译方式,需要重新编译Linux内核

(2)可以动态加载和卸载新的文件系统。

(3)至少需要修改文件系统的名称,最好能对文件写操作向系统后台打印出信息。

题目3:新增Linux驱动程序

增加一个驱动程序(使用内存模拟设备),使用模块编译方式。

要求:

(1)可以动态加载和卸载新的驱动。

(2)通过程序或命令行使用该驱动。

(3)至少能通过该驱动保存256MB的数据,还能将这些数据读取出来。

(4)要重新编译Linux内核,可模仿ramdisk的实现方式。

题目4:统计Linux系统缺页的次数

通过在Linux内核中自建变量,并利用/proc文件系统作为中介的方法,统计系统缺页的次数。

要求:

(1)在内核中实现缺页次数统计;

(2)编译并安装新内核;

(3)新建内核模块,并加载到新内核,通过/proc实现用户态下查看缺页次数。

二、操作顺序

题目1与题目4存在的共同点是:在进行内核的编译之前需要修改内核中的文件。题目2、题目3、题目4存在的共同点是:需要编译内核,在编译完成的新内核进行模块的编译。

整合的总体流程如下:首先修改内核源码文件中涉及到题目1与题目4的部分。接下来,进行长达1~2小时的编译内核、编译模块与安装新内核。然后,进入新的内核,传入题目2、题目3、题目4涉及到的源代码文件,安装并卸载相应的模块进行测试。

题目1涉及到的内核源码的文件包括:

arch/x86/entry/syscalls/syscall_64.tbl

kernel/sys.c

include/linux/syscalls.h

题目4涉及到的内核源码的文件包括:

arch/x86/mm/fault.c

include/linux/mm.h

kernel/kallsyms.c

在修改了这几处文件后,对内核进行1-2小时的编译。进入新的内核,在新的内核中,

题目1涉及到的文件testt1.c

题目2涉及到的文件包括:super.c、sysfs.c、file.c、Makefile。将这4个文件放在同一个目录下,进行模块编译。

题目3涉及到的文件包括:zombotany_blkdev.c、Makefile。将这2个文件放在同一个目录下,进行模块编译。

题目4涉及到的文件包括:readpfcount.c、Makefile。将这2个文件放在同一个目录下,进行模块编译。利用模块的形式,对缺页中断次数进行了测试。

附录:参考资料

题1

https://blog.csdn.net/weixin_44191535/article/details/106954861

题2

https://blog.csdn.net/qq_17447307/article/details/103649354

题3

https://blog.csdn.net/qq_46640863/article/details/122952706

题4

https://blog.csdn.net/zouguo1211/article/details/90106347


目录
相关文章
|
3天前
|
负载均衡 Linux 应用服务中间件
Linux系统中前后端分离项目部署指南
Linux系统中前后端分离项目部署指南
|
1天前
|
Unix Linux Shell
Linux系统使用超详细(一)
Linux系统是一种开源的、类Unix操作系统内核的实现,它基于Unix的设计原理和思想,并在全球范围内广泛应用。以下是对Linux系统的详细描述:
|
1天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
1天前
|
Linux Windows
虚拟机添加新硬盘之linux系统篇
虚拟机添加新硬盘之linux系统篇
|
2天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
16 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
2天前
|
监控 安全 Linux
Linux系统入侵排查(三)
本文介绍了Linux系统入侵排查的相关知识。首先解释了进行系统入侵排查的原因,即当企业遭受黑客攻击、系统崩溃或其他安全事件时,需要迅速恢复系统并找出入侵来源。接着,重点讲述了日志入侵排查的重要性,因为日志文件记录了系统的重要活动,可以提供入侵行为的线索。
|
2天前
|
安全 Linux Shell
Linux系统入侵排查(二)
本文介绍了Linux系统入侵排查的步骤,包括检查历史命令记录、可疑端口和进程、开机启动项以及定时任务。作者强调了了解这些技能对于攻防两端的重要性,并提供了相关命令示例,如查看`/root/.bash_history`记录、使用`netstat`分析网络连接、检查`/etc/rc.local`和`/etc/cron.*`目录下的可疑脚本等。此外,还提到了如何查看和管理服务的自启动设置,以判断是否被恶意篡改。文章旨在帮助读者掌握Linux服务器安全维护的基本技巧。
|
2天前
|
缓存 安全 Linux
Linux系统入侵排查(一)
本文探讨了在遭遇黑客入侵或系统异常时进行应急响应和排查的必要性,重点介绍了基于Kali Linux的入侵排查步骤。排查的目标是找出潜在的恶意活动,恢复系统的安全性,并防止未来攻击。总结来说,进行Linux系统入侵排查需要密切关注账号安全,跟踪历史命令,及时识别并消除安全隐患。同时,保持对最新攻击手段和技术的了解,以便更好地防御和应对潜在的网络安全威胁。
|
2天前
|
Linux C语言
【Linux】 拿下 系统 基础文件操作!!!
怎么样,我们的猜测没有问题!!!所以语言层的文件操作函数,本质底层是对系统调用的封装!通过不同标志位的封装来体现w r a+等不同打开类型! 我们在使用文件操作时,一般都要使用语言层的系统调用,来保证代码的可移植性。因为不同系统的系统调用可以会不一样!
13 2
|
3天前
|
关系型数据库 MySQL Linux
在Linux系统上实现高效安装与部署环境的全方位指南
在Linux系统上实现高效安装与部署环境的全方位指南