下载此文档

华南理工大学《操作系统》大作业报告.docx


文档分类:高等教育 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
华南理工大学《操作系统》大作业报告题目:高级操作系统与分布式系统大作业学院计算机科学与工程专业计算机科学与技术(全英创新班)学生姓名xxxxxx学生学号2012********联系方式_(Tel)/(QQ)_指导教师吴一民课程编号S课程学分2分起始日期2016年1月11日实验概述【实验目的及要求】内核版本要求:Linux-:(),使内核能够记录每一个系统调用被使用的次数。同时,为了使应用程序能够查询到这些数据,本实验要求实现两个系统调用,一个供应用程序来查询某个特定系统调用被使用的次数,另一个系统调用将系统调用计数清零。编制一个用户态程序调用你所增加的这两个系统调用,统计在一段时间内各系统调用被调用的次数。。同样,本实验也要求实现两个系统调用,一个供应用程序查询缺页次数,另一个系统调用将缺页计数清零。编制一个用户态程序你所增加的这两个系统调用,统计在一段时间内你的进程缺页的次数。【实验环境】操作系统:Centos--i386(-308)编译的内核::VMware 【虚拟机账号密码】★★★★账号:root密码:aaasss实验一实验内容【实验原理】linux系统调用是linux在其内核里都有一些内建的函数,这些函数可以用来完成一些系统级别的功能。这些函数代表了从用户空间到内核空间的一种转换,例如在用户空间调用open函数,则会在内核空间调用sys_open。Linux中每个系统调用都有相应的系统调用号,这样,通过这个独一无二的号就可以关联系统调用。当用户空间的进程执行一个系统调用的时候,这个系统调用号就被用来指明到底是要执行哪个系统调用。进程不会提及系统调用的名称。在这次试验采用的linux-,他们储存在sys_call_table的数据结构当中,。sys_call_table是一张由指向实现各种系统调用的内核函数的函数指针组成的表。在用户空间无法直接调用系统调用来执行内核代码,所以需要通过软中断的方式来实现系统调用。通过int$0x80指令产生系统软中断,触发异常使得系统切换到内核态执行128号异常处理程序,调用system_call()函数。但是仅仅陷入内核空间是不够的,还需要通过eax寄存器把相应的系统调用号传递给内核。在陷人内核之前,用户空间就把相应系统调用所对应的号放入eax中了。这样系统调用处理程序一旦运行,就可以从eax中得到数据。system_call()函数通过将给定的系统调用号与NR_syscalls做比较来检查其有效性。如果它大于或者等于NRsyscalls,该函数就返回一ENOSYS。否则,就执行相应的系统调用。由于系统调用表中的表项是以32位(4字节)类型存放的,所以内核需要将给定的系统调用号乘以4,然后用所得的结果在该表中查询其位置。Linux系统本身并未有记录系统调用次数的数据结构,因此我们需要在内核中定义一个全局数组来记录每个系统调用被执行的次数。从调用的原理上看,要记录每个系统调用被执行的次数,我们可以在system_call()参数检查成功后,对相应的系统调用次数做一次增量操作,这样就完成了执行次数记录的工作。为了能得到该数组信息和对该数组进行操作,我们还需要定义自己的系统调用。,并重新编译内核,使用该函数。实验过程:内核安装安装vmwareworkstation,。安装vmware-tools,设置共享文件夹。并把内核文件linux-(/mnt/hgfs/sharedFiles)。登录root,把内核文件压缩包解压至/usr/src目录下:#tar -xvf linux--C /usr/src/和ncurses包:yum-  yuminstallncursesncurses-deve进行内核配置:makemenuconfig进入usr/src/linux-:cdusr/src/linux-:makeinstall内核版本验证:vim/boot/grub/,,修改default=0,默认启动新安装的内核。重启,查看内核版本:uname–-308变为2.

华南理工大学《操作系统》大作业报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人bai1968104
  • 文件大小1.03 MB
  • 时间2020-05-08