任务:编写一个有两个进程并发运行的程序,并在结尾设定一个死循环,编译完成后让其在后台运行,然后在前台用cat 命令查看/proc目录下的文件/proc/meminfo (当前内存信息)、/proc/vmstat (虚拟内存统计信息)、/proc/vmallocinfo(虚拟内存分配息)、/proc/filesystems(目前系统支持的文件系统)、/proc/locks(当前被内核锁定的文件)、/proc/cpuinfo ( cpu相关信息)和/proc/modules(当前系统已经加载的模块(lsmod))中信息,分析其含义。
编写一个简单的程序,满足两个进程并发运行,额,很简单,就不放代码了,只要最后进入死循环就可以。
让程序在后台一直运行,另开一个终端,进行命令输入。
cat /proc/meminfo
cat /proc/meminfo
命令会显示当前系统中内存的详细信息,包括总内存、空闲内存、已用内存等。当一个程序进入死循环,更多的内存被标记为“正在使用”,因为死循环程序可能会不断地分配内存而不释放。这可能导致MemFree
减少,Buffers
和Cached
也可能会受到影响。
cat /proc/vmstat
cat /proc/vmstat
命令会显示虚拟内存统计信息,包括页面交换、内存压缩、内存回收等因为陷入死循环,一些与内存分配、交换、回收等相关的统计数据会不断增加,比如
pgpgin
(从磁盘读入页的次数)、pgfault
(页面错误的次数)等。这反映了死循环程序对系统内存的持续影响。
sudo cat /proc/vmallocinfo
/proc/vmallocinfo
文件包含有关虚拟内存分配情况的信息。这些信息通常用于调试和分析内核驱动程序或模块的内存使用情况。然而,在一般情况下,该文件可能并不包含实际的信息,因为虚拟内存分配情况可能会受到许多因素的影响,如内核版本、正在运行的进程等。由于虚拟内存分配的动态性质,该文件内容可能会随着时间和系统状态的变化而变化。
sudo cat /proc/filesystems
包含了当前系统支持的文件系统类型的列表,一系列文件系统类型,每个类型占据一行。常见的文件系统类型包括ext4、ntfs、vfat、iso9660等。这些文件系统类型反映了当前系统内核编译时所支持的不同文件系统。
文件系统的支持是由内核在启动时加载的,并且一般不会因为用户空间程序的运行状态而改变。所以在程序陷入死循环不会有改变。
sudo cat /proc/locks
包含了当前系统上所有文件锁的信息。在这个文件中,可以看到哪些进程持有了文件锁,以及这些锁的类型和位置等信息。
/proc/locks
文件的输出可能会比较庞大,特别是在繁忙的系统上。因为它记录了系统中所有的文件锁信息,所以会包含大量的数据。当一个进程持有文件锁并陷入死循环时,其在
/proc/locks
文件中的条目可能会持续存在,显示出该进程持有的锁以及相关的信息。
sudo cat /proc/cpuinfo
当一个并发运行的程序陷入死循环时,
/proc/cpuinfo
文件通常不会有直接的变化。/proc/cpuinfo
文件包含了有关 CPU 的信息,例如 CPU 型号、速度、缓存大小、支持的特性等,这些信息通常是静态的,不会因为程序的运行状态而有所改变。即使某个程序陷入死循环导致 CPU 使用率升高,
/proc/cpuinfo
中的信息也不会随之改变。因为cat /proc/cpuinfo
命令显示的是CPU的静态信息,仅在系统启动时读取一次,之后不再更新。
sudo cat /proc/modules
当一个并发运行的程序陷入死循环时,
/proc/modules
文件通常不会有直接的变化。/proc/modules
文件包含了当前加载的内核模块的信息,这些信息在程序陷入死循环时通常不会有变化。内核模块一般是在系统启动时加载的,并且在运行时很少会发生变化。即使某个程序陷入死循环,已加载的内核模块的信息也不会受到影响。