相关疑难解决方法(0)

管道在 Linux 中的工作原理

我一直在阅读有关如何在 Linux 内核中实现管道的信息,并希望验证我的理解。如果我不正确,将选择具有正确解释的答案。

  • Linux 有一个名为 pipefs 的 VFS,它安装在内核中(不是在用户空间中)
  • pipefs 有一个超级块,安装在它自己的根 ( pipe:) 上,旁边是/
  • 与大多数文件系统不同,pipefs 不能直接查看
  • pipefs 的入口是通过pipe(2)系统调用
  • pipe(2)shell 用于与|操作员(或从任何其他进程手动)进行管道传输的系统调用在 pipefs 中创建一个新文件,该文件的行为与普通文件非常相似
  • 管道运算符左侧的文件已stdout重定向到在 pipefs 中创建的临时文件
  • 管道运算符右侧的文件已stdin设置为 pipefs 上的文件
  • pipefs 存储在内存中,通过一些内核魔法,不应该被分页

这是对管道(例如ls -la | less)如何运作的解释非常正确吗?

我不明白的一件事是像 bash 这样的东西如何设置一个进程stdinstdoutpipe(2). 我还没有找到任何关于它的信息。

kernel pipe

28
推荐指数
1
解决办法
1万
查看次数

内核是否真的使用了所有内核参数?

为什么 Linux 允许 'init=/bin/bash'?

我读了这个,答案是说它是运行这个初始化程序的内核。

然后我开始怀疑,Linux通常带有一个initramfs,它最终会mount和pivot_root到真正的根文件系统。那么这个init论点是什么意思呢?initramfs中的路径?或者就像我猜的那样,它不是由内核读取,而是由 initramfs 的 init 来执行真正的 init。

另外,root=UUID=xxxx论点,是真正由内核读取还是仅由 initramfs 的 init 读取以找到真正的根文件系统?

似乎我可以将我想要的任何参数作为内核参数传递,那么它们是否都被内核读取,或者至少其中一些只对用户空间程序有意义?

linux-kernel

11
推荐指数
1
解决办法
1849
查看次数

没有文件系统,文件可以存在吗?

我正在阅读有关文件系统的内容,并想到了一些问题。

问:如果文件是 unix/linux 的一个组成部分(即代表 中的进程/proc或设备文件/dev),如一句名言'一切都是文件”,它们是否存在于文件系统的上下文之外?我觉得像网络套接字文件或块设备文件这样的文件是独立于文件系统的,更像是操作系统本身的一部分。

后续 Q. unix/linux 可以在没有文件系统的情况下运行吗?例如,Linux 系统是否可以通过手动访问二级存储来工作?

linux filesystems files

1
推荐指数
1
解决办法
162
查看次数

标签 统计

files ×1

filesystems ×1

kernel ×1

linux ×1

linux-kernel ×1

pipe ×1