用户空间的应用程序,内核空间访问硬件控制的时候使用,以下三个手段解说
proc文件系统和sys文件系统mmap()系统调用硬件资源共享管理(排他控制)mmap是UNIX的系统调用之一,是将文件或设备等操作系统上的部分或全部资源映射到连续的虚拟地址空间的函数。
Linux应用程序被困在虚拟CPU环境中并运行,称为具有完全独立内存空间的进程。这是一个安全措施,确保即使程序中出现错误,也不会停止其他应用程序。
当应用程序使用硬件时,您需要请求设备驱动程序(实际上调用)并从内核空间进行操作。这是因为内核隐藏了硬件资源,以免直接从每个应用程序操作硬件,以确保系统的一致性。
每个进程中的应用程序都认为自己可以独立所有硬件资源,但在某些情况下,多个应用程序可能会合并相同的硬件。为此,内核包含了硬件资源使用的仲裁管理。
接下来将解释内核如何在用户空间中展示硬件控制手段。
现在PC和智能手机都是GUI(Graphical User Interface)操作,以前通过从键盘输入命令的CUI(Character User Interface)操作启动程序。接受CUI操作键盘输入的程序称为shell。Linux中标准使用称为bash的shell。Linux的shell不是键盘输入,也可以从记述了shell脚本的批处理步骤的简易程序中调用使用。shell本来的意思是贝壳,bash是为了让用户能看到被包在壳里的内核的程序。Shell包含与内核对话的解释器功能。当您从shell执行命令时,您可以交互访问内核管理信息,而不通过设备驱动程序。
这一次,将关注文件系统根目录中的/proc和/sys两个目录。/proc和/sys乍一看似乎是一个普通的目录,但目录中的文件并不是HDD上的数据实体。这些文件是内核临时在RAM上部署的文件,以便向应用程序展示硬件信息。与普通文件不同,由于存储设备上没有数据实体,也可以将/proc和/sys称为伪文件。
在Linux环境中,虚拟文件和远程文件(如通过网络访问的NFS)都会平坦地放置在目录中。这允许应用程序在不知道文件实际放置的位置的情况下访问文件。文件所在的位置和驱动信绑定的Windows是想法不同的部分。
正如从名称中推断的,/proc是内核向应用程序展示进程信息的机制。/proc目录下面有许多数字名称的子目录。它将当前存在于Linux系统上的所有进程的内部信息存储在进程号(=PID)名称的子目录中。
例如,如果您从shell使用cat命令查看名为/proc/1/status的文件,您可以查看PID=1的init进程的内部信息。/proc目录下的大部分信息是只读的。文件的时间戳总是读取文件的时间,因为内核正在顺序更新数据。另外,根据数据的不同,有root权限的用户可以看到内容的访问权限被设定的东西。
/proc以下存储的信息也可以从应用程序中读取为普通文件。