Linux内核常量定义

在Linux内核中,常量定义对于理解操作系统的底层操作至关重要。
关键常量及其功能详细说明:1.

phys:phys宏phys定义了地址转换函数__virt_to_phys(),用于将虚拟地址转换为物理地址。
基本计算公式为phys=virt-PAGE_OFFSET。

2.

ZTEXTADDR:电子代码解压缩器的解压缩,通常在MMU关闭时使用。

3.

ZBSSADDR:RAM中工作区的起始地址必须初始化为0,解压器将被初始化。

4.

ZRELADDR:最后执行的内核地址必须满足__virt_to_phys(TEXTADDR)==ZRELADDR。

5.

INITRD_PHYS:初始RAM磁盘的物理地址,仅在使用bootpImage时使用。

6.

INITRD_VIRT:必须将初始RAM盘的正确地址插入INITRD_PHYS。

7.

PARAMS_PHYS:param_struct的物理地址,内核执行环境中的参数。

8.

PAGE_OFFSET:启动期间第一个BRANCHBANK的正确地址变形为PHYS_OFFSET,等于TASK_SIZE。

9.

TASK_SIZE:用户进程的最大内存,向下扩展用户堆栈空间的限制。

10.

TEXTADDR:核心的正确起始地址,通常是PAGE_OFFSET+0x8000,核心映射结束的地方。

11.

DATAADDR:不使用解压器时定义的内核数据段的正确地址。

12.

VMALLOC_START、VMALLOC_END:虚拟地址区域vmalloc的末尾,位于核心段。

13.

VMALLOC_OFFSET:通常设置为8MB,用于在vmalloc和虚拟RAM之间留出空间,以避免内存溢出错误。

14.

BOOT_MEM:宏,起始物理RAM地址(等于PHYS_OFFSET)。

15.

pio/vio:用于调试arch/arm/kernel/debug-armv.S中的宏,包括IO区域的物理地址和虚拟地址。

16.

BOOT_PARAMS:参考PARAMS_PHYS。

17.

FIXUP(func):初始化相关引擎,必须在容器子系统初始化之前运行。

18.

MAPIO(func):机器相关函数,描述IO区域,包括调试区域。

19.

INITIRQ(func):与机器相关的函数,将初始化中断。

这些常量定义在Linux内核中发挥着关键作用,提供轻量级的内存开发和系统启动。
基本信息Linux是一种流行的免费计算机内核操作系统。
它是一个用C语言编写的、符合POSIX标准的类Unix操作系统。
Linux最初由芬兰黑客LinusTorvalds开发,试图在Intelx86架构上提供免费的类Unix操作系统。
该项目始于1991年,Minix黑客在该项目的早期阶段提供了帮助,如今世界各地无数的程序员免费为该项目做出贡献。
从技术上讲,它是Linux内核。
“内核”是指提供硬件抽象层、磁盘和文件管理、多任务处理等功能的系统软件。
核心操作系统并不完美。
集成到Linux内核中的操作系统称为Linux操作系统,简称GNU/Linux。

mem是什么

MEM代表不同的事物。
这些是常见的定义。
内存操作函数:编程语言,特别是C语言中的memcpy;记忆移动mem数组用于内存操作,包括memset和memcmp。
设备文件:Linux系统上的/dev/mem是一个特殊的设备文件,允许用户模式访问内核模式内存。
mmap方法可以让你将/dev/mem映射到用户空间并直接访问内核空间的内存区域。
汇编语言:在汇编语言中,MEM可以指内存或存储器。
在编写汇编程序时,程序员使用mov[mem]将寄存器值存储在内存中。
会用到axe等指令。

Linux常用系统管理命令

1.top

1、功能

top命令用于显示正在执行的程序进程,使用权限为所有用户。

2.格式

top[-][ddelay][q][c][S][s][i][n]

3.主要参数

d:指定更新间隔,以秒为单位。
q:立即更新。
如果用户有超级用户,top命令会以最高优先级执行。
c:显示进程的完整路径和名称。
问:收集模式将收集完成或丢失的子行程的CPU时间。
s:安全模式。
i:不要显示任何闲置或浪费的旅程。
n:显示Top更新完成后将退出的数量。

4.说明

top命令是Linux系统管理的主要命令,通过它可以获取很多信息。
在这里,我们结合图1来说明它提供的信息。

top命令显示如图1

在图1中,第一行表示的项目是当前时间、系统启动时间和系统登录用户当前、平均负载。
第二行显示所有已启动、正在运行、睡眠和僵尸进程。
第三行显示当前CPU使用率,包括系统利用率、用户利用率和空闲(Idle)率。
第四行显示物理内存使用情况,包括可用内存量、已用内存量、空闲内存量和缓冲区占用的内存量。
第五行显示交换分区使用情况,包括交换分区数量、已用、空闲和缓存大小。
第六行显示了最多的项目,下面列出了详细的解释。

PID(ProcessID):进程标识号。
USER:进程所有者的用户名。
PR:进程优先级。
NI:进程优先级值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存的值。
S:进程状态,其中S表示睡眠,R表示运行,Z表示僵尸状态,N表示进程的优先级值为负数。
%CPU:进程占用的CPU使用率。
%MEM:进程占用的物理内存与总内存的百分比。
TIME+:进程启动后所占用的CPU时间量。
Command:启动进程的启动命令名,如果不能显示这一行,则进程将有完整的命令行。

在使用上述命令的过程中,还可以通过一些交互命令来完成其他参数的功能。
该命令通过热键启动。

空格:立即刷新。
P:按CPU使用率排序。
M:按使用的内存大小排序。
T:按时间和累计时间排序。
q:退出上述命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换命令名称和完整命令行的显示。
W:将当前设置写入~/.toprc文件。
这是编写顶层配置文件的推荐方法。

正如你所看到的,top命令是一个非常强大的系统监控工具,这对于系统管理员来说尤其重要。
然而,它的缺点是它会占用大量的系统资源。

5.应用示例

使用top命令监控特定用户。
如果想查看特定用户的状态,在终端中按“U”键,输入用户名,系统就会切换到指定用户运行的进程界面,如图2所示。

图2使用top命令监控特定用户

2free

free该命令用于显示内存使用情况,以及使用权限是对于所有用户。

2.格式

free[-b|-k|-m][-o][-sdelay][-t][-V]

3.主要参数

-b-k-m:以字节为单位显示内存使用情况(KB、MB)。
-sdelay:显示内存使用情况的秒数。
l-t:显示总内存列。
-o:不显示缓冲区调整栏。

4.应用示例

free命令是用于检查内存使用情况的主要命令。
与top命令相比,它的优点是使用方便,只占用少量的系统资源。
通过-S参数,你可以使用free命令来持续监控内存使用量。
你可以把它看成一个简单的实时监控。

#free-m-s3

使用此命令后,终端将继续报告内存使用情况(以MB为单位),每3秒更新一次。

3.Kill

1.功能

kill命令用于终止一个进程。

2.格式

kill[-ssignal|-p][-a]pid...

kill-l[signal]

3.参数

-s:指定要发送的信号。
-p:模拟发送信号。
-l:指定信号名称列表。
pid:要终止的进程的ID号。
信号:显示信号。

4.说明

进程是Linux系统中一个非常重要的概念。
Linux是一个多任务操作系统,系统上经常同时运行多个进程。
我们不关心这些进程是如何分配的,也不关心内核如何管理分配的时间片。

Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。
交互式进程是由Shell启动的进程。
交互式进程可以在前台或后台运行。
批处理过程与终端没有连接,是一系列过程。
监控进程(也称为系统守护进程)是Linux系统启动时启动的进程,并在后台运行。
例如,httpd是一个众所周知的Apache服务器监控进程。

kill命令的工作原理是向Linux系统内核发送系统操作信号和特定的程序进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。
例如,在上面的命令中,我们看到系统运行了很多进程,有时需要使用kill来终止某些进程以增加系统资源。
在解释安装和登录说明时,提到了系统中多个虚拟控制台的作用是当程序错误导致系统死锁时,可以切换到另一个虚拟控制台来关闭程序。
目前使用的命令是kill,因为kill可以被大多数shell内部命令直接调用。

5.应用示例

(1)强制终止(常用于杀死)进程标识号为324的进程:

#kill-9324

(2)释放Linux系统死锁

在Linux中有时会出现一种情况:程序崩溃,处于死锁状态。
这时,一般不需要重新启动计算机,只需终止(或关闭)有问题的程序即可。
当kill在X-Window界面时,主程序(崩溃的程序除外)一般都能正常启动。
现在打开一个终端并终止有问题的程序。
例如,如果Mozilla浏览器程序被锁定,您可以使用kill命令终止所有包含Mozilla浏览器的程序。
首先使用上面的命令查看该程序的PID,然后使用kill命令停止该程序:

#kill-SIGKILLXXX

其中,XXX是该程序的进程标识符该计划包含Mozolla浏览器编号。

(3)使用命令回收内存

我们知道内存对于系统来说非常重要,回收内存可以增加系统资源。
Kill命令可以立即终止一些“异常”的程序或长时间没有对应的程序。
例如,如果使用上述命令查找无用进程(Zombie),则可以使用以下命令:

#kill-9XXX

其中,XXX是无用的进程标识号。

然后使用以下命令:

#free

这时候你会发现可用内存容量增加了。

(4)killall命令

Linux还提供了killall命令,可以直接使用进程名来代替进程标识号,例如:

#killall-HUPin等

4.检查剩余磁盘空间df(df-h)

用法:df[选项]…[文件]…

显示每个文件所在文件系统的信息默认显示所有文件系统。

使用短选项时,也需要长选项所需的参数。

-a,--all包含块大小为0的文件系统-B,--block-size=块大小以指定大小的字节为单位。
-h,--人类可读打印文件系统大小易于理解的格式(例如1K234M2G)-H,--si与-h类似,但为1000次方而不是1024-i,--inodes显示inode信息不使用block-k即–blocksize=1k-l,–Local只显示本机的文件系统–在获取总数据数据之前不进行同步(默认)-p,–portable使用POSIX输出格式~synchronization执行同步动作获取使用数据之前-t,--type=type只打印指定类型的文件系统信息-T,--print-type打印文件系统类型-x,--exclude-type=type只打印指定类型的文件系统信息不是系统信息文件类型-v指定(该选项不处理)

总结:

top-c

free-m

kill-92312(说明:强制关闭kill进程-9pid)

df-h