我对 Highmem 和 Lowmem 之间的区别感兴趣:
当我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
。
现在我想知道内核驱动程序和内核模块之间可能有什么区别?
我正在创建一个 linux 发行版,现在我需要一个 init 程序。我可以很好地用 c 编写代码,而且我对 linux 了解很多(虽然不多,但我已经使用 arch linux 进行了 4 年的开发),所以我想我应该尝试用 C 编写我自己的基本初始化脚本。我是只是想知道,init 做了什么任务来为一个简单的 shell 设置系统?(当我问“init 有什么作用?”时,我确实知道 init 是什么以及它的用途。我只是不知道它做了什么任务。)
我不需要代码,我什至可能不需要基本命令,但我确实需要它们运行的顺序。
我想确切地了解什么是用户空间?我问的每个人都说:“任何不是内核的东西”。但这对我来说不是有形的。当我读到内核可以在用户空间或类似的东西上运行该驱动程序时;我无法想象会发生什么!。因此,如果有人在这方面让我直截了当,我将不胜感激。
在 ps 命令的输出中,如下所示 (kthreadd,ksoftirqd,kworker) ,我可以看到有些进程没有可执行文件,我发现这是因为它们是内核线程,所以我们为什么要处理某些内核线程作为进程或使它们看起来像进程?线程名称后面的这个数字是什么意思?例如,我们可以通过发送信号从用户空间杀死这些线程吗?
root 2 0 0 Nov30 ? 00:00:00 [kthreadd]
root 3 2 0 Nov30 ? 00:00:03 [ksoftirqd/0]
root 5 2 0 Nov30 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Nov30 ? 00:00:41 [rcu_sched]
Run Code Online (Sandbox Code Playgroud)