gpt4 book ai didi

operating-system - 什么时候从内核空间读取数据到用户空间?

转载 作者:行者123 更新时间:2023-12-04 08:35:00 26 4
gpt4 key购买 nike

我知道内核空间专用于运行内核,而用户空间用于用户应用程序。

但是在阅读了一篇与操作系统相关的论文中的以下段落后,我感到困惑,

假设我们有手势识别系统,设计将系统分解为四个组件,作为单独的程序实现:

  • catusb:从连接在 USB 总线上的相机捕获图像数据。
  • xform:使用噪声过滤和几何变换等图像处理算法对相机中的图像进行变换透视到屏幕坐标系中的点云或用户。本质上是数据并行的。
  • 检测:检测点云中的手势并具有显着的数据并行性。
  • hidinput:接受检测程序发现的手势并将它们作为人机界面发送到操作系统设备 (HID) 输入。

next they mentioned the following flow of execution :

enter image description here

“从相机读取数据需要将图像缓冲区从内核空间复制到用户空间。写入将 catusb 连接到 xform 的管道会导致将相同的缓冲区写回内核空间。要在 GPU 上运行 xform系统必须将缓冲区从内核空间读取到用户空间,其中用户模式运行时如 CUDA随后必须将缓冲区写回内核空间并将其传输到 GPU 并返回。”

so what i want to know is:

  • 如果相机缓冲区是驻留在 RAM 中的内存空间,那么在读取时来自相机的数据为什么要从内核空间读取它我不明白,是因为缓冲区本身驻留在内核空间内吗(换句话说,硬件设备的内存是否映射到 RAM驻留在内核空间内)?,

  • 即使相机缓冲区驻留在相机芯片上,读取是通过内核将该缓冲区从相机芯片复制到直接使用用户空间,对吗?如果是这样,为什么在将缓冲区从内核复制到用户空间的段落。

最佳答案

操作系统的工作是让许多组件(包括硬件和软件)相互配合良好。一般来说,用户态程序不能直接操作外设,也不能相互干扰。我不熟悉您引用的具体设置,但这听起来并不异常。

USB 摄像头通知操作系统它有一个新帧。当内核(驱动程序)注意到这一点时,会将带有 I/O 命令的帧复制到 RAM 中。由于此 RAM 是由驱动程序分配的,因此由于虚拟内存,用户空间程序将无法查看或读取它。快速总结一下,内核中的地址 &0x1000 和程序中的地址 &0x1000 实际上是 RAM 中物理上不同的位置。然后,内核会将帧复制到任何需要从相机输入的进程的内存中,然后通知它(在本例中为 catusb)。

同样,由于xformdetecthdinput 作为单独的进程存在,它们必须使用进程间通信。由于操作系统必须确保程序的隔离,每个进程将利用内核来实现这一点。

这里没有什么不寻常的。我想他们只是拼写出来,因为手势识别是时间关键的,而且这样做会产生一些开销。

关于operating-system - 什么时候从内核空间读取数据到用户空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23292717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com