标签: kernel

用户空间和内核空间有什么区别?

当内核代表用户程序(即系统调用)执行时是否使用内核空间?或者它是所有内核线程(例如调度程序)的地址空间?

如果是第一个,那么是否意味着普通用户程序的内存不能超过3GB(如果划分为3GB + 1GB)?另外,在这种情况下,内核如何使用高端内存,因为高端内存中的页面将映射到哪个虚拟内存地址,因为 1GB 的内核空间将被逻辑映射?

linux drivers kernel

98
推荐指数
2
解决办法
14万
查看次数

什么是内核IP转发?

我在很多博客上看到,在linux上使用许多网络安全/嗅探工具的同时,使用此命令启用IP转发

echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)

任何人都可以用外行的术语解释我,这个命令本质上是做什么的?它能把你的系统变成路由器吗?

linux routing ip kernel

91
推荐指数
2
解决办法
10万
查看次数

当我运行命令 cat /proc/cpuinfo 时会发生什么?

我写的时候会发生什么cat /proc/cpuinfo。这是通向操作系统的命名管道(或其他东西),它会动态读取 CPU 信息并在我每次调用它时生成该文本?

filesystems kernel proc

90
推荐指数
3
解决办法
4万
查看次数

在 GRUB 中设置默认内核

如何选择默认情况下应加载哪个内核 GRUB2?我最近安装了一个 linux 实时内核,现在它默认加载。我想默认加载常规的。

到目前为止,我只设法选择了默认操作系统..并且出于某种原因/boot/grub.cfg已经假设我想加载 rt-kernel 并将其放入通用 linux 菜单条目(在我的情况下为 Arch Linux)。

linux grub boot kernel

89
推荐指数
4
解决办法
24万
查看次数

如何使用单个命令引起内核恐慌?

是否有可能使用单个命令行导致内核崩溃?

对于 sudoing 用户来说,最直接的此类命令是什么,对于普通用户来说又是什么(如果有的话)?

建议将某些内容作为命令的一部分进行下载的情况不算在内。

command-line kernel kernel-panic

87
推荐指数
4
解决办法
15万
查看次数

内核驱动程序和内核模块有什么区别?

当我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_currentnouveaunvidiafb

现在我想知道内核驱动程序和内核模块之间可能有什么区别?

linux drivers kernel kernel-modules

83
推荐指数
4
解决办法
8万
查看次数

每个伪终端 (PTY) 组件(软件、主端、从端)的职责是什么?

我试图弄清楚tty如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。

这是我到目前为止的理解:

  • 仿真终端/dev/ptmx对伪终端的主控部分进行不同的系统调用。
  • 伪终端的master部分分配了一个文件/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。
  • 从伪终端保存会话ID、前台作业、屏幕大小等信息。

以下是我的问题:

  1. ptmx除了分配从属部分之外还有什么用途吗?它是否提供某种“智能”,或者模拟终端(例如 xterm)具有像终端一样运行的所有智能?
  2. 为什么 xterm必须与 master 部分交互,因为它只转发 slave 部分的 stdout 和 stdin?为什么不能 直接读写pts文件
  3. 会话 ID 是否总是附加到一个 pts 文件,反之亦然?我可以输入 ps 命令并找到2 个 sessionId 的相同 /dev/pts/X吗?
  4. pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?

1. 我的理解基于Linus Akesson 揭秘TTYAndries BrouwerLinux Kernel帖子,以及这些网站上的其他几个问题

kernel terminal-emulator terminal tty pty

77
推荐指数
3
解决办法
2万
查看次数

延迟将数据写入磁盘背后的理念是什么?

在 Linux 中,诸如cp或之类的命令的完成执行dd并不意味着数据已写入设备。例如,必须调用sync或调用驱动器上的“安全删除”或“弹出”功能。

这种方法背后的哲学是什么?为什么不一次写入数据?是否存在因 I/O 错误而导致写入失败的危险?

drivers kernel io unix-philosophy

71
推荐指数
7
解决办法
2万
查看次数

禁用透明大页面

我们正在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文件中添加上面的行吗?

linux kernel sysctl

70
推荐指数
5
解决办法
14万
查看次数

什么定义了命令单个参数的最大大小?

我的印象是,单个参数的最大长度在这里不是问题,而是整个参数数组的总大小加上环境的大小(仅限于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)

kernel echo arguments

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