Operating system 什么情况下从内核空间向用户空间读取数据?
我知道内核空间专用于运行内核,而用户空间专用于用户应用程序 但是在阅读了一篇关于操作系统的文章后,我感到困惑 假设我们有手势识别系统,并且设计将系统分解为四个组件,作为单独的程序实施:Operating system 什么情况下从内核空间向用户空间读取数据?,operating-system,gpu,gpgpu,computer-architecture,Operating System,Gpu,Gpgpu,Computer Architecture,我知道内核空间专用于运行内核,而用户空间专用于用户应用程序 但是在阅读了一篇关于操作系统的文章后,我感到困惑 假设我们有手势识别系统,并且设计将系统分解为四个组件,作为单独的程序实施: catusb:从连接在USB总线上的摄像头捕获图像数据 xform:使用图像处理算法(如噪声过滤和几何变换)变换相机中的图像 屏幕坐标系中点云的透视图 或用户。固有的数据并行 检测:检测点云中的手势,并具有显著的数据并行性 HIDIPUT:接受检测程序找到的手势,并将其作为人机界面发送到操作系统 设备(HID)
- catusb:从连接在USB总线上的摄像头捕获图像数据
- xform:使用图像处理算法(如噪声过滤和几何变换)变换相机中的图像 屏幕坐标系中点云的透视图 或用户。固有的数据并行
- 检测:检测点云中的手势,并具有显著的数据并行性
- HIDIPUT:接受检测程序找到的手势,并将其作为人机界面发送到操作系统 设备(HID)输入
- 如果相机缓冲区是内存空间,则在读取时 摄像头数据为什么要从内核空间读取它我不明白,是因为缓冲区本身驻留在内核空间中吗(换句话说,硬件设备的内存映射到RAM是否驻留在内核空间中)
- 即使相机缓冲区位于相机芯片上 读取是通过内核将缓冲区从相机芯片复制到 直接访问用户空间,对吗?如果是,为什么在 将缓冲区从内核复制到用户空间的段落
这里没有什么不寻常的。我想他们只是在解释,因为手势识别是时间关键的,这样做会有一些开销。我现在很清楚,但你还说了一件事,“内核中的地址&0x1000和程序中的地址&0x1000实际上是RAM中物理上不同的位置”地址&0x1000不是表示内核或用户区内的offest吗?换句话说,地址&0x1000被添加到基址寄存器以给出物理地址。在这种情况下&0x1000是指绝对地址。它可以是虚拟地址,也可以是物理地址。在您的userland程序中,内存管理单元将把地址的最高有效位转换为页面在内存中的物理位置。地址的最低有效位将用作该物理页内的偏移量。