硬件资源管理
- 从应用程序中看到的内核管理硬件信息
- 从用户应用程序看硬控制装置
- 进程信息和设备信息
- 您可以在不通过设备驱动程序的情况下与内核对话
- 通过伪文件,你可以看到文件访问感觉的硬件信息
- 展示过程信息的机制…/proc文件系统
- 进程以外的内核内部信息也存储在/proc中
- 展示设备相关信息的机制…/sys文件系统
- 物理内存信息
- 不能直接从应用程序接触硬件也是一种障碍
- 如何直接从应用程序访问内核空间…Mmap()系统调用
- 要使用mmap(),物理内存中需要连续的空闲空间
- 硬件资源共享管理(排他控制)信息
- 在同时运行多个程序的Linux环境中,硬件资源的排他控制是不可缺少的
- 信号量…当有两个或两个以上的共享资源时使用
- Mutex(MUTual EXclusion)...在多核环境等中共用一种资源时使用
从应用程序中看到的内核管理硬件信息
用户空间的应用程序,内核空间访问硬件控制的时候使用,以下三个手段解说
- 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是内核向应用程序展示进程信息的机制。/proc目录下面有许多数字名称的子目录。它将当前存在于Linux系统上的所有进程的内部信息存储在进程号(=PID)名称的子目录中。
例如,如果您从shell使用cat命令查看名为/proc/1/status的文件,您可以查看PID=1的init进程的内部信息。/proc目录下的大部分信息是只读的。文件的时间戳总是读取文件的时间,因为内核正在顺序更新数据。另外,根据数据的不同,有root权限的用户可以看到内容的访问权限被设定的东西。
/proc以下存储的信息也可以从应用程序中读取为普通文件。
进程以外的内核内部信息也存储在/proc中
展示设备相关信息的机制…/sys文件系统
物理内存信息
不能直接从应用程序接触硬件也是一种障碍
如何直接从应用程序访问内核空间…Mmap()系统调用
要使用mmap(),物理内存中需要连续的空闲空间
硬件资源共享管理(排他控制)信息
在同时运行多个程序的Linux环境中,硬件资源的排他控制是不可缺少的
信号量…当有两个或两个以上的共享资源时使用
Mutex(MUTual EXclusion)…在多核环境等中共用一种资源时使用