linux实验(系统调用)

2020-05-23 15:40

系统调用

一、 实验内容

1)设计并实现一个新的系统调用pedagogictime( ) ,该函数通过使用一个引用参数的调用返回当前的系统时间。 2)编写一个用户空间程序来测试pedagogictime( ) 二、 实验目的

学习如何产生一个系统调用,以及怎样通过往内核中增加一个新函数,从而在内核空间

中实现对用户空间的读/写。学习重建内核,通过以上学习更进一步了解Linux的工作。 三、

实验过程

本次实验过程主要可分为以下几个部分:修改系统文件、编译内核、修改Grub启动管理器等。

1)修改系统文件

1.在系统调用表中添加相应表项

# cd /usr/src/linux-2.4/arch/i386/kernel # vi entry.S

添加.long SYMBOL_NAME(sys_pedagogictime) 2. 添加系统调用号

# cd /usr/src/linux-2.4/include/asm

# vi unistd.h

添加# define __NR_pedagogictime 259 3. 在文件最后添加一个系统服务例程 # cd /usr/src/linux-2.4/kernel # vi sys.c

添加sys_pedagogictime 如图一

图一 添加系统服务例程 2)编译内核(此步时间比较长) # cd /usr/src/linux-2.4 # make mrproper

# make xconfig

Block devices ? Loopback device support 选Y

SCSI support ? SCSI low-level drivers ? BusLogic SCSI support 选Y File systems ? Ext3 journallingfile system support 选Y

NTFS file system support 选 Y Save and exit

# make dep # make clean # make bzImage # make modules

# make modules_install

从/etc/modules.conf中删除BusLogic的加载项#alias scsi_hostadapter BusLogic

# cd /usr/src/linux-2.4 # make install

3)将新内核和System.map拷贝到/boot目录下

# cp /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20 # cp /usr/src/linux-2.4/ System.map /boot/System.map-2.4.20 # cd /boot

# rm –f System.map

# ln –s System.map-2.4.20 System.map 4)修改Grub启动管理器 # cd /boot/grub

# vi menu.lst

修改menu.lst文件,将Red Hat Linux (2.4.20-8custom)部分中的 root=LABEL=/改为root=/dev/sda2 如图二

图二 修改后的Grub启动管理器 5)重新启动系统

# reboot

重启后显示如图三所示界面,此时选择第一个菜单。 6)编辑用户空间的测试程序:

编译运行即可。 四、

实验总结

通过这次的实验,我觉得自身有很大的收获,同时也得到了不少的提高,许多在课

堂上遗漏了的东西在做这个试验的过程中都得到了具体的落实,很多只是将其来很抽象在经过时间之后才能真正的明白其间的奥妙,学会了很多时间上的小技巧。

在Windows操作系统的时代,操作系统很多底层的东西都被掩盖了,幸亏我们有Linux,它可以让我们更深入地了解操作系统的工作原理等等各方面。本次实验就是一次让我们了解操作系统的系统调用的很好的机会。

在本次实验过程中,遇到的问题还是比较多的,比如在添加系统调用服务例程时,不小心的输入错误导致后面的实验无法正常进行,偶尔输入一个错误的指令产生错误让人费解,这也从另一方面说明了Linux系统的严密性,因为涉及到内核的东西将直接影响到系统的运行。


linux实验(系统调用).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:企业经营战略阶段模拟1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: