当内核代表用户程序(即系统调用)执行时是否使用内核空间?或者它是所有内核线程(例如调度程序)的地址空间?
如果是第一个,那么是否意味着普通用户程序的内存不能超过3GB(如果划分为3GB + 1GB)?另外,在这种情况下,内核如何使用高端内存,因为高端内存中的页面将映射到哪个虚拟内存地址,因为 1GB 的内核空间将被逻辑映射?
我在很多博客上看到,在linux上使用许多网络安全/嗅探工具的同时,使用此命令启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)
任何人都可以用外行的术语解释我,这个命令本质上是做什么的?它能把你的系统变成路由器吗?
我写的时候会发生什么cat /proc/cpuinfo。这是通向操作系统的命名管道(或其他东西),它会动态读取 CPU 信息并在我每次调用它时生成该文本?
如何选择默认情况下应加载哪个内核 GRUB2?我最近安装了一个 linux 实时内核,现在它默认加载。我想默认加载常规的。
到目前为止,我只设法选择了默认操作系统..并且出于某种原因/boot/grub.cfg已经假设我想加载 rt-kernel 并将其放入通用 linux 菜单条目(在我的情况下为 Arch Linux)。
是否有可能使用单个命令行导致内核崩溃?
对于 sudoing 用户来说,最直接的此类命令是什么,对于普通用户来说又是什么(如果有的话)?
建议将某些内容作为命令的一部分进行下载的情况不算在内。
当我lspci -k使用 3.2.0-29-generic 内核在我的 Kubuntu 上做一个时,我可以看到这样的东西:
01:00.0 VGA compatible controller: NVIDIA Corporation G86 [Quadro NVS 290] (rev a1)
Subsystem: NVIDIA Corporation Device 0492
Kernel driver in use: nvidia
Kernel modules: nvidia_current, nouveau, nvidiafb
Run Code Online (Sandbox Code Playgroud)
有一个内核驱动程序nvidia和内核模块nvidia_current,nouveau,nvidiafb。
现在我想知道内核驱动程序和内核模块之间可能有什么区别?
我试图弄清楚tty是如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。
这是我到目前为止的理解:
/dev/ptmx对伪终端的主控部分进行不同的系统调用。/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。以下是我的问题:
pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?1. 我的理解基于Linus Akesson 揭秘的TTY和Andries Brouwer的Linux Kernel帖子,以及这些网站上的其他几个问题
在 Linux 中,诸如cp或之类的命令的完成执行dd并不意味着数据已写入设备。例如,必须调用sync或调用驱动器上的“安全删除”或“弹出”功能。
这种方法背后的哲学是什么?为什么不一次写入数据?是否存在因 I/O 错误而导致写入失败的危险?
我们正在RAID机器中安装 SAP HANA 。作为安装步骤的一部分,提到,
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Run Code Online (Sandbox Code Playgroud)
因此,如果我想让它成为永久更改,而不是运行时,我应该在/proc/vmstat文件中添加上面的行吗?
我的印象是,单个参数的最大长度在这里不是问题,而是整个参数数组的总大小加上环境的大小(仅限于ARG_MAX. 因此,我认为类似以下的事情会成功:
env_size=$(cat /proc/$$/environ | wc -c)
(( arg_size = $(getconf ARG_MAX) - $env_size - 100 ))
/bin/echo $(tr -dc [:alnum:] </dev/urandom | head -c $arg_size) >/dev/null
Run Code Online (Sandbox Code Playgroud)
这- 100足以解释 shell 和echo进程中环境大小之间的差异。相反,我收到了错误:
bash: /bin/echo: Argument list too long
Run Code Online (Sandbox Code Playgroud)
玩了一段时间后,我发现最大值小了一个完整的十六进制数量级:
/bin/echo \
$(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) \
>/dev/null
Run Code Online (Sandbox Code Playgroud)
当减一被删除时,错误返回。看似单个参数的最大值实际上是放置在参数数组中字符串末尾的空字节ARG_MAX/16的-1帐户。
另一个问题是,当参数重复时,参数数组的总大小可以接近ARG_MAX,但仍然不完全:
args=( $(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) )
for x in {1..14}; …Run Code Online (Sandbox Code Playgroud)