Linux 系统调用实现机制实验报告-内核安装详解
- 格式:doc
- 大小:58.50 KB
- 文档页数:9
操作系统实验一向LINUX内核增加一个系统调用一、背景介绍操作系统是计算机硬件与应用程序之间的接口,负责管理和调度计算机系统的各种资源,并提供用户与计算机系统的交互界面。
内核是操作系统的核心部分,负责管理和分配计算机系统的资源,执行各种任务。
系统调用是操作系统提供给应用程序的一种接口,可以让应用程序访问内核提供的功能,例如文件操作、进程管理、网络通信等。
在一些情况下,我们可能需要在LINUX内核中增加新的系统调用,以满足特定的需求。
本文将介绍如何向LINUX内核增加一个系统调用的具体步骤。
二、增加系统调用的步骤1.编写系统调用的具体实现代码首先,我们需要编写一个具体的系统调用的实现代码。
在LINUX内核中,系统调用的实现代码通常位于内核的/syscalls目录下。
我们可以在该目录下新建一个.c文件,编写我们自己的系统调用代码。
2.修改内核源代码3.更新系统调用表每个系统调用都在内核中有一个唯一的标识符,存储在一个叫做系统调用表的地方。
我们需要更新系统调用表,将新增的系统调用添加到表中。
这样,用户程序才能够通过系统调用号来调用新增的系统调用。
4.重新编译内核在修改完内核源代码后,我们需要重新编译内核。
这通常涉及到一些繁琐的步骤,例如配置内核选项、编译内核、安装内核等。
在重新编译内核之后,我们需要重新启动计算机,使新的内核生效。
5.修改用户程序最后,我们需要修改用户程序,以便能够调用新增的系统调用。
用户程序通常是通过C语言编写的,我们可以在用户程序的代码中添加对新增系统调用的调用代码。
三、实验结果在完成上述步骤后,我们就成功地向LINUX内核增加了一个系统调用。
用户程序可以通过系统调用调用自己新增的系统调用,从而实现特定的功能。
总结:本文介绍了向LINUX内核增加一个系统调用的具体步骤,包括编写系统调用的具体实现代码、修改内核源代码、更新系统调用表、重新编译内核和修改用户程序。
在实施这些步骤之前,我们需要对操作系统和内核的相关概念有一定的了解,并具备一定的编程能力。
课程名称 计算机网络原理与技术 实验项目 Linux 操作系统的安装及使用1、 掌握虚拟机VMware 软件的安装和使用;2、 掌握Linux 系统软件的安装和使用;4、掌握Linux 命令的使用;二、实验设备和环境个人计算机一台、虚拟光驱、 虚拟机 VMware 软件、Linux 系统软件三、实验内容1、 通过虚拟机安装 Linux 系统;2、 熟悉Linux 的基本命令;3、 在Linux 下编译一个C 语言程序;4、 在Linux 环境下配置 TCP/IP 协议;5、 设置Linux 与 Windows 文件夹共享。
四、实验过程1、安装VMware 软件双击安装文件,按照提示逐步安装,完成后的打开软件,如下图这时就可以安装 Linux 系统了。
2 .安装Lniux 系统选择“新建虚拟机”,按“下一步”,选择“典型”,“ Linux ”,“ red hat linux ”,其他按照默认选 择。
得到一个虚拟机界面(如下图所示)。
选中“ CD-ROM 这项,将其设置为:“使用映像文件UselSO image: ”然后导入Linux 系统的安装的第一张盘。
(如下图所示)点击“启动此虚拟机”,按照提示选择默认值,选择“个人工作站”。
其他全部默认即可。
在安装过程中,会提示“插入第二张光盘”,“插入第三张光盘”,这时同样用虚拟光驱加载镜像文件。
重起后进入(如下 图所示)。
选择默认,进入系统。
3 .安装 VMware tools 。
选择VMware 软件的菜单“虚拟机"、“安装VMware 工具",看见如下两个文件。
双击 rpm 格式文件。
完成 后,打开如下图的文件夹。
双击第一个压缩包进行解压到 /usr/bin 目录下。
在终端下运行以下命令(如图所示):专业班级 _____指导教师 _____ 一、实验目的姓 名 __________________ 学号 _____________ 成 绩 __________________ 日期 _____________首先在“系统设置”一“网络”下设置Linux的IP、DNS网关、子网掩码等(如图所示)设置好各项内容后选择击活网络,可以在终端下运行“ ping ”命令检测网络是否已经联通。
第1篇一、实验目的1. 了解系统调用的基本概念和作用。
2. 掌握在Linux内核中增加系统调用的方法。
3. 熟悉系统调用在用户空间和内核空间之间的交互过程。
4. 提高编程能力和系统理解能力。
二、实验环境1. 操作系统:Linux2. 编译器:gcc3. 开发工具:内核源代码、makefile三、实验原理系统调用是操作系统提供的一种服务,允许用户空间程序请求内核空间的服务。
在Linux内核中,系统调用通过系统调用表来实现。
增加系统调用需要修改内核源代码,并重新编译内核。
四、实验步骤1. 创建系统调用函数首先,我们需要创建一个系统调用函数,该函数将实现一个简单的功能,例如打印一条消息。
以下是一个简单的系统调用函数示例:```cinclude <linux/module.h>include <linux/kernel.h>include <linux/init.h>static int __init hello_init(void) {printk(KERN_INFO "Hello, World!\n");return 0;}static void __exit hello_exit(void) {printk(KERN_INFO "Goodbye, World!\n");}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("Your Name");MODULE_DESCRIPTION("A simple system call module");MODULE_VERSION("0.1");```2. 修改系统调用表接下来,我们需要修改内核源代码中的系统调用表,以注册我们创建的系统调用。
Linux系统调用实现机制实验报告实验目的:熟悉Linux系统调用过程,掌握系统调用的基本原理并在实验中实现系统调用的添加。
实验所需软件:实验平台:VMware WorkStation;系统环境:Red Hat Linux9.0;传输工具:Ftp server(Serv USetup);实验过程:一、实验环境的搭建(一)在Window下安装虚拟机VMware WorkStation;(二)在虚拟机上安装Red Hat 9.0系统;(三)在Window下安装Ftp Server,实现Linux与windows文件共享。
1. Ftp服务器的配置打开Ftp Server,在[管理控制台]中选择[新建域],系统会弹出配置域向导的对话框,这里按要求填入相应信息,即可配置成功一个ftp服务器。
步骤1要求用户填入域的[名称]和[说明],[名称]必须填写,[说明]可以不填。
例如:在名称中输入[Linux实验],选择[下一步],便进入到域向导的步骤2。
步骤2是服务器访问协议和端口的配置,默认即可,点击[下一步]进入步骤3。
步骤3是IP地址的配置,输入Windows主机的IP地址(202.112.147.176)。
确认无误后,点击[完成]。
接下来要做的就是为域添加用户,根据添加用户向导,逐个填写[用户名],[密码],[根目录(即共享的文件目录)]以及[访问权限]。
本次实验的配置为:tml(用户名),密码为空,E:\安全操作系统\实验材料(存放config-2.4.18forMP.txt和linux-2.4.18.tar.gz的目录),完全访问(访问权限)。
到此,服务器的配置已经完成。
2. 在Linux下访问服务器,并下载文件启动VMware中的Red Hat9.0系统,打开终端控制台,进入到/home/tml 目录下(接下来就是要把Ftp服务器的共享文件下载到此目录下)。
1) 通过命令ifconfig 设置虚拟机IP 地址,具体为在命令行中输入:ifconfig eth0 202.112.147.175(与服务器同一个段);2) 接下来便可访问ftp服务器,在linux命令行下输入:ftp202.112.147.176;3) 服务器询问你用户名和口令,分别输入tml(密码为空)待认证通过即可;用get命令下载文件,get config-2.4.18forMP.txt config-2.4.18forMP.txt (下载文件config-2.4.18 for MP.txt到/home/tml目录),getlinux-2.4.18.tar.gz linux-2.4.18.tar.gz 。
linux0.11系统调用原理及实验总结第一篇:linux0.11系统调用原理及实验总结Linux0.11系统调用原理及实验总结系统调用的原理1.1 概述系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。
通过int 0x80,就可使用内核资源。
不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中再通过int 0x80进行系统调用。
所以,系统调用过程是这样的:应用程序调用libc中的函数->libc中的函数引用系统调用宏->系统调用宏中使用int 0x80完成系统调用并返回。
另外一种访问内核的方式是直接添加一个系统调用,供自己的应用程序使用,这样就不再使用库函数了,变得更为直接,效率也会更高。
1.2 相关的数据结构在说具体的调用过程之前,这里先要说几个数据结构。
1.2.1 系统调用函数表系统调用函数表sys_call_table是在sys.h中定义的,它是一个函数指针数组,每个元素是一个函数指针,它的值是各个系统提供的供上层调用的系统函数的入口地址。
也就是说通过查询这个表就可以调用软中断0x80所有的系统函数处理函数。
1.2.2 函数指针偏移宏这是一系列宏,它们的定义在unistd.h中,基本形式为#define _NR_name value,name为系统函数名字,value是一个整数值,是name所对应的系统函数指针在sys_call_table中的偏移量。
1.2.3 系统调用宏系统调用宏_syscalln(type,name)在内核的unistd.h文件中定义的,对它展开就是: type name(参数列表){ 调用过程; };其中,n为参数个数,type为函数返回值类型,name为所要调用的系统函数的名字。
在unistd.h中共定义了4个这样的宏(n从0到3),也就是说,0.11核中系统调用最多可带3个参数。
竭诚为您提供优质文档/双击可除linux系统调用实验报告篇一:linux系统调用实验报告西安邮电大学(计算机学院)课内实验报告实验名称:系统调用专业名称:软件工程班级:软件学生姓名:学号(8指导教师:xxxxx实验日期:20XX年5月31日一.实验目的及实验环境实验目的:1)了解系统调用,学习系统调用函数的使用;2)理解调用系统调用与直接调用内核函数的区别;实验环境:ubuntu二.实验内容1)对比调用系统调用和直接调用内核函数的区别;2)跟踪系统调用的执行;三.实验原理1)系统调用系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。
用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。
从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。
总的概括来讲,系统调用在系统中的主要用途无非以下几类:?控制硬件——系统调用往往作为硬件资源和用户空间的抽象接口,比如读写文件时用到的write/read调用。
?设置系统状态或读取内核数据——因为系统调用是用户空间和内核的唯一通讯手段[2]所以用户设置系统状态,比如开/关某项内核服务(设置某个内核变量),或读取内核数据都必须通过系统调用。
比如getpgid、getpriority、setpriority、sethostname ?进程管理——一系统调用接口是用来保证系统中进程能以多任务在虚拟内存环境下得以运行。
比如fork、clone、execve、exit等第二,什么服务应该存在于内核;或者说什么功能应该实现在内核而不是在用户空间。
这个问题并没有明确的答案,有些服务你可以选择在内核完成,也可以在用户空间完成。
LinuxOS实验⼀:内核编译及添加系统调⽤简单整理下上周做的OS的lab1,前半部分主要介绍Linux内核编译和添加系统调⽤的流程,后半部分主要简要探索⼀下添加的系统调⽤中所⽤到的内核函数的源码。
⾸先贴⼀下这次实验的要求和我的实验流程图:Linux内核编译流程实验环境我的实验环境是VMware虚拟机下的Ubuntu 16.04,使⽤uname -a命令查看了⾃⼰的内核版本是4.15.0,于是确定待编译的新内核版本是:4.16.1(这个版本应略⾼于Linux系统的内核版本)。
同时,由于在内核编译过程中会⽣成较多的临时⽂件,如果磁盘空间预留很⼩,会出现磁盘空间不⾜的错误⽽导致内核编译失败;内存太⼩则会影响编译速度。
所以,这⾥建议虚拟机的配置参数:内存2GB以上,磁盘空间40GB以上。
由于我在做内核编译之前的时候就已经安装了linux虚拟机,所以这⾥我需要先扩展磁盘内存,具体参考了以下博⽂:。
下载内核源码并解压在中找到对应版本的内核源码并下载(如上⽂所说,这⾥我选择4.16.10,请视Linux系统的具体情况⽽定):在Linux系统中切换⾄root⽤户(随后的所有步骤都应以root⽤户进⾏操作,⽆法切换的可以尝试passwd命令修改root⽤户密码),然后将压缩⽂件复制到/home或其他⽐较空闲的⽬录中,进⼊压缩⽂件所在⼦⽬录,使⽤以下命令解压:xz -d linux-4.16.10.tar.xztar -xvf linux-4.16.10.tar清楚残留的.config和.o⽂件每次完全重新编译的时候都应从这⼀步开始,为了防⽌出现错误,我们先安装所需要的对应包:apt-get install libncurses5-dev随后执⾏命令:make mrproper配置内核执⾏命令:make menuconfig,随后出现诸如以下界⾯:我们选择默认值:保存配置信息,选⽤默认的⽂件名.config,最后编译内核先安装所需的包以防编译时报错:=>安装openssl:apt-get install libssl-dev=>安装bison:apt-get install bison=>安装flex:apt-get install flex随后执⾏命令:make,强烈建议使⽤命令make -j4或make -j8来加快编译速度,这⾥第⼀次进⾏内核编译的时候需要⽐较长的时间,我的电脑⼤概跑了⼀个多⼩时。
linux系统的安装实验报告《Linux系统安装实验报告》一、实验目的本实验旨在通过实际操作,掌握Linux系统的安装方法和步骤,了解Linux系统的基本特点和使用技巧。
二、实验环境1. 实验工具:虚拟机软件(如VMware、VirtualBox等)2. 实验系统:Ubuntu、CentOS等Linux发行版镜像文件三、实验步骤1. 下载Linux发行版镜像文件在官方网站上下载最新的Linux发行版镜像文件,如Ubuntu、CentOS等,并保存到本地硬盘。
2. 创建虚拟机打开虚拟机软件,点击“新建虚拟机”,选择Linux系统类型和版本,设置虚拟机的内存大小、硬盘大小等参数。
3. 安装Linux系统将下载好的Linux发行版镜像文件挂载到虚拟机中,启动虚拟机,按照提示进行安装操作。
在安装过程中,需要设置系统语言、时区、用户账号密码等信息。
4. 完成安装安装完成后,重启虚拟机,进入新安装的Linux系统。
在系统中进行基本设置,如更新软件源、安装常用软件、配置网络等。
四、实验结果经过以上步骤,成功安装并启动了Linux系统。
在系统中可以进行各种操作和配置,如命令行操作、图形界面操作、网络设置、软件安装等。
五、实验总结通过本次实验,我对Linux系统的安装方法和步骤有了更深入的了解,掌握了基本的操作技巧。
Linux系统具有开放源代码、安全稳定、多样化的特点,适合用于服务器、嵌入式设备等领域。
在未来的学习和工作中,我将进一步深入学习Linux系统的使用和管理,提升自己的技术能力。
六、实验感想通过实际操作安装Linux系统,我对操作系统有了更深入的理解,也增强了对Linux系统的兴趣。
在未来的学习和工作中,我将继续学习和探索Linux系统,不断提升自己的技术水平。
实验报告 linux系统安装实验实验报告:Linux系统安装实验实验目的:通过实际操作,掌握Linux系统的安装步骤及注意事项,了解Linux系统的基本知识。
实验材料:一台个人电脑、Linux系统安装光盘或USB启动盘、安装所需的硬件设备。
实验步骤:1. 准备工作:在进行Linux系统安装之前,首先需要备份好个人电脑中的重要数据,以防在安装过程中数据丢失。
同时,确保安装光盘或USB启动盘的正常性。
2. 设置BIOS:将电脑启动时的引导设备设置为安装光盘或USB启动盘,以便从中启动并进行Linux系统的安装。
3. 启动系统:将安装光盘或USB启动盘插入电脑,重启电脑并按照提示进入系统安装界面。
4. 分区设置:在安装界面中,选择适合自己的磁盘分区方式,可以选择手动分区或者自动分区,根据自己的需求进行设置。
5. 安装系统:选择安装目标,设置主机名和密码等基本信息,然后开始系统的安装过程。
6. 完成安装:安装完成后,根据提示重启电脑,进入新安装的Linux系统。
实验注意事项:1. 在进行安装之前,一定要备份好重要数据,以免在安装过程中造成数据丢失。
2. 在设置BIOS时,确保选择正确的引导设备,以便从安装光盘或USB启动盘中启动系统。
3. 在分区设置时,根据自己的需求选择适合的分区方式,并注意不要误操作导致数据丢失。
4. 在安装过程中,耐心等待系统自动完成安装,不要随意中断或操作,以免造成安装失败。
实验总结:通过本次Linux系统安装实验,我对Linux系统的安装步骤有了更深入的了解,并且掌握了一些安装过程中需要注意的事项。
同时,我也对Linux 系统有了更多的认识,对其使用和管理有了更多的信心和能力。
希望通过今后的实践操作,能够更加熟练地使用Linux系统,为今后的学习和工作打下良好的基础。
Linux系统调用实现机制实验报告
实验目的:
熟悉Linux系统调用过程,掌握系统调用的基本原理并在实验中实现系统调用的添加。
实验所需软件:
实验平台:VMware WorkStation;
系统环境:Red Hat Linux9.0;
传输工具:Ftp server(Serv USetup);
实验过程:
一、实验环境的搭建
(一)在Window下安装虚拟机VMware WorkStation;
(二)在虚拟机上安装Red Hat 9.0系统;
(三)在Window下安装Ftp Server,实现Linux与windows文件共享。
1. Ftp服务器的配置
打开Ftp Server,在[管理控制台]中选择[新建域],系统会弹出配置域向导的对话框,这里按要求填入相应信息,即可配置成功一个ftp服务器。
步骤1要求用户填入域的[名称]和[说明],[名称]必须填写,[说明]可以不填。
例如:在名称中输入[Linux实验],选择[下一步],便进入到域向导的步骤2。
步骤2是服务器访问协议和端口的配置,默认即可,点击[下一步]进入步骤3。
步骤3是IP地址的配置,输入Windows主机的IP地址(202.112.147.176)。
确认无误后,点击[完成]。
接下来要做的就是为域添加用户,根据添加用户向导,逐个填写[用户名],[密码],[根目录(即共享的文件目录)]以及[访问权限]。
本次实验的配置为:tml(用户名),密码为空,E:\安全操作系统\实验材料(存放config-2.4.18forMP.txt和linux-2.4.18.tar.gz的目录),完全访问(访问权限)。
到此,服务器的配置已经完成。
2. 在Linux下访问服务器,并下载文件
启动VMware中的Red Hat9.0系统,打开终端控制台,进入到/home/tml 目录下(接下来就是要把Ftp服务器的共享文件下载到此目录下)。
1) 通过命令ifconfig 设置虚拟机IP 地址,具体为在命令行中输入:ifconfig eth0 202.112.147.175(与服务器同一个段);
2) 接下来便可访问ftp服务器,在linux命令行下输入:ftp
202.112.147.176;
3) 服务器询问你用户名和口令,分别输入tml(密码为空)待认证通过即可;
用get命令下载文件,get config-2.4.18forMP.txt config-2.4.18forMP.txt (下载文件config-2.4.18 for MP.txt到/home/tml目录),get
linux-2.4.18.tar.gz linux-2.4.18.tar.gz 。
以上完成了通过FTP服务器实现Windows与Linux系统资源共享的工作,在Linux系统下获得了实验必备的原材料Linux-2.4.18.tar.gz和
config-2.4.18forMP.txt,只是完成的实验的第一步。
二、Linux内核编译、配置与调试
以下的实验步骤都是在VMware WorkStation 虚拟机和Red Hat Linux V9.0 系统操作环境中进行。
1. 内核配置与编译
1) 使用命令tar zxf 解压缩Linux 内核源代码压缩文件
linux-2.4.18.tar.gz ,并将解压缩后生成的目录linux 拷贝一份,并重新命名为linux-2.4.18(放在/home目录下)。
2) 在/home目录下,利用命令mv /tml/config-2.4.18 forMP.txt
/linux-2.4.18/.config 将位于Linux 内核源代码顶层目录的Linux内核缺省配置文件.config 替换为实验用内核配置文件。
3) 进入Linux 内核源代码顶层目录linux-2.4.18,运行如下命令序列配置和编译Linux 系统内核及其模块:
2. 内核安装与测试
为使虚拟机系统基于上面生成的Linux 内核启动,需要做一下几件事:将Linux 内核映像文件bzImage(根文件系统);将系统映射文件System.map 拷贝和安装到启动分区及目录/boot 下;同时,应在系统启动加载程序GRUB配置文件中添加关于该内核的启动配置项。
注意:本步骤要求用户身份为超级管理员即根用户root,具体的操作如下:
1) 将目录/home/linux-2.4.18/arch/i386/boot/下的映像文件拷贝到
/boot目录下,即在linux-2.4.18目录下执行命令:
2) 拷贝和安装Linux 系统映射文件System.map,并创建其与系统映射文件System.map 之间的符号链接,在boot目录下执行以下命令:
3) 修改系统启动加载程序配置文件grub.conf,在目录/boot/grub/下。
在配置文件中添加关于Linux2.4.18内核的启动配置项:
4) 在Linux2.4.18目录下执行命令make modules_install ,安装可动态加载的内核模块。
安装的内容位于/lib/modules/2.4.18 目录下。
5) 执行命令reboot 重启系统,并便可以选择自制Linux 内核系统(如下图)。
6) 接下来,便可执行命令dmesg 查看启动过程输出信息,详细内容参见附录一。
三、Linux系统调用添加与实现
1. 内核增加系统调用
1) 根据题目要求,要在系统中增加一条系统调用,其作用是获取特定进程标识符PID 所对应的资源使用情况,包括用户态或内核态的执行时间(以秒和微秒为单位)、无需或需要物理输入输出操作的页面错误次数、进程置换出内存的次数等。
2) 此系统调用是Linux 内核系统调用getrusage()的一个变种,所以在添加之前先阅读和分析getrusage()及sys_getrusage()相关源代码,在目录
/home/linux-2.4.18/linux/kernel下的sys.c文件中,详细见附录二。
3) 题目为我们提供好了新添加系统调用的名称get_process_usage,其函数原型为:
4) 根据题目条件,结构体struct tml_rusage的可定义为:.
2. 分析getrusage()和sys_getrusage()的源代码
1) 函数getrusage()的作用是获取系统资源使用情况。
2) 数据结构rusage 在头文件 resource.h中定义,详见附录三。
3) sys_getrusage()只是调用了内核函数getrusage(),是内核提供给用户的接口。
3. 新增系统调用并编写应用程序调用该系统
1) 定义数据结构tml_rusage,定义在目录/home/linux-2.4.18/ include/linux的resource.h中。
2) 在添加sys.c中添加函数get_process_usage()和系统调用函数
sys_get_process_usage()的代码;
3) 连接新的系统调用添加新的系统调用后,下一个任务是使Linux内核的其余部分知道该程序的存在。
为了从已有的内核程序中增加到新的函数的连接,需要编辑两个文件。
第一个要修改的文件是/home/linux-2.4.18/
include/asm-i386/unistd.h,该文件中包含了系统调用清单,用来给每个系统调用分配一个唯一的号码。
应该将新的系统调用名称加到清单的最后,并给它分配号码序列中下一个可用的系统调用号。
第二个要修改的文件是:
/home/linux-2.4.18/arch/i386/kernel/entry.S,该文件中有类似[.long
SYMBOL_NAME()]的清单, 该清单用来对sys_call_table[]数组进行初始化,该数组包含指向内核中每个系统调用的指针。
我们在清单最后添加一行:
4) 重建新的Linux内核,步骤和之前的“二、内核编译、配置与调试”相同。
5) 编写应用程序get_process_usag.c调用该系统调用
sys_get_process_usage()。
6) 编译应用程序get_process_usage.c。
7) 执行应用程序gpu。
四、实验的结果及分析
经过样例测试,实验满足题目要求:正确获取特定进程标识符PID 所对应的资源使用情况,包括用户态或内核态的执行时间(以秒和微秒为单位)、无需或需要物理输入输出操作的页面错误次数、进程置换出内存的次数等。