我明白,mmap()允许应用程序将文件映射到内存中,以便文件中的内存地址和单词之间具有一对一的对应关系。
但我的问题是,如果该文件是由设备驱动程序创build的非常规文件? 据我所知,一些非常规文件是可以映射的,有些则不是。 从编程的angular度来看,这意味着什么? 如果我希望非常规文件具有mmap能力,我该怎么办?
我曾经在一个Linux内核模块中实现了mmap函数指针(struct file_operations)。 该模块将在/ dev /目录中创建一个设备项。 现在,我的用户空间应用程序将使用“open”打开此条目,并将进行mmap系统调用。 最终在Linux内核模块里面,我将会调用mmap函数,并执行已执行的处理,并返回到用户空间。
这只是一个例子来表示用户空间对OS(内核)所要求的服务。 当用户想要访问硬件或想要从内核请求服务时(例如将物理内存映射到用户虚拟地址空间),可以使用/ dev /或/ sys /或/ proc /等。这个文件可以被称为内核的“虚拟接口”。