许多系统使用 kvm_open、kvm_nlist 和 kvm_read 等例程,通过 /dev/kmem 设备直接访问内核数据结构。 通常,这些程序会打开 /dev/kmem,读取内核的符号表,使用该表在运行的内核中定位数据,并使用这些例程读取内核地址空间中的相应地址。 因为这要求用户程序和内核就以这种方式读取的数据结构的大小和格式达成一致,所以这些程序通常必须针对每个内核版本、CPU 类型等进行重建。