内存或 kmem 特殊文件
用途
提供特权限定的虚拟内存的读和写访问权。
描述
/dev/mem 和 /dev/kmem 字符 特殊文件 提供对伪设备驱动程序的访问,该驱动程序允许对系统内存或 I/O 地址空间进行读写访问。 通常,这些特殊文件由操作系统实用程序和命令 (例如 sar, iostat) 使用。 和 vmstat) 以获取有关系统的状态和统计信息。
使用注意事项
kmem 特殊文件访问
kmem 特殊文件提供对当前进程的虚拟内存地址空间的访问,正如内核所看到的那样。 由 lseek 子例程设置的寻道偏移量用于指定读或写的目标虚拟地址。 kmem 伪设备驱动程序仅支持 open, close, read, readx, writex, 和 write 子例程。
knlist 系统子例程通常用于获取要通过 kmem 特殊文件提供的访问来读取或写入的内核符号的地址。
在发出读或写操作之前,必须使用 lseek 子例程来指定虚拟内存中的相关起始地址。 如果此地址在前两个千兆字节的地址空间内,那么可以使用 read 或 write 子例程调用。 但是,如果要访问地址空间的上限为 2 千兆字节,那么必须使用子例程调用的 readx 和 writex 格式。 在这种情况下,必须将 ext (扩展) 参数设置为值 True。 这将导致相对于地址空间的 2 千兆字节上限来解释 lseek 偏移量。
内存特殊文件访问
mem 特殊文件访问特定于运行操作系统的系统。
请参阅 实现内存特殊文件访问 部分,以获取有关此特殊文件提供的功能的详细信息。
/dev/kmem 特殊文件的进程地址空间区域
| 项 | 描述 |
|---|---|
| 较低的 2 千兆字节地址空间: 使用读或写子流 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 地址空间的上限 2 千兆字节: 使用带有 ext 参数 = TRUE 的 readx 或 writex 子例程。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
实现内存特殊文件访问
传统上, mem 特殊文件提供对物理内存的直接访问。 此功能及其接口需求特定于机器。 但是,对于此操作系统,此函数是通过在 读 和 写 子例程调用上使用 扩展 (扩展) 参数间接提供的。 当发出与 /dev/mem 特殊文件相关联的 readx 或 writex 子例程调用时, ext 参数必须包含有效的段寄存器值,如 POWERstation and POWERserver Hardware Technical Reference-General Information 文档中针对将运行程序的平台类型所定义。 这允许程序访问由页表映射的所有物理内存以及特定于平台的 I/O (T=1) 段。
由 lseek 子例程调用设置的寻道偏移量用于指定由 ext 参数描述的段中的地址偏移量。 不使用偏移量的上四个位。 伪设备驱动程序仅支持 open, close, read, readx, write, 和 writex 子例程调用。 在发出 readx 或 writex 子例程调用之前,还必须使用 lseek 子例程调用,以便指定地址偏移量。
如果将 read 或 write 子例程调用与此特殊文件配合使用,那么对内存的访问与 /dev/kmem 特殊文件提供的访问相同。
mem 特殊文件是基本操作系统 (BOS) 运行时的一部分。
文件
| 项 | 描述 |
|---|---|
| /dev/mem | 提供特权限定的虚拟内存的读和写访问权。 |
| /dev/kmem | 提供特权限定的虚拟内存的读和写访问权。 |