问题标签 [kernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1097 浏览

windows - Windows进程结构:如何存储用户信息?

我想在windows NT内核进程的EPROCESS结构中存储一些信息。我的目标是,当调用 winlogon 时,我想根据哪个用户登录为下一个进程分配一个唯一值。但我不知道在哪里存储这个唯一 ID。我已经尝试并成功地通过直接内核对象修改的方法修改了进程的 EPROCESS 块中的一些信息(如令牌),我想知道这个 EPROCESS 块中是否有任何结构可以存储一些其他信息。

ps 为了修改 EPROCESS 块,我使用了设备驱动程序。

0 投票
3 回答
12854 浏览

linux - Linux 内核中的队列

我一直在寻找有关队列的通用内核实现的信息,即先进先出数据结构。我认为可能有一个,因为它可能是常用的东西,并且有一个链接列表的标准(以 list_head 结构的形式)。是否有一些我找不到的标准队列实现,或者只是使用链表作为队列并希望最好的做法可能是常见的做法?

0 投票
2 回答
16350 浏览

linux - 如何编写 Linux 驱动模块调用/使用另一个驱动模块?

我正在开发一个 Linux 驱动程序可加载模块,我必须在我的驱动程序中使用另一个设备。(一种堆叠在另一个驱动程序上的驱动程序)

如何在我的驱动程序中调用/使用另一个驱动程序?我认为它们都在内核中,因此可能有一种方法可以直接使用另一个驱动程序。

0 投票
4 回答
6371 浏览

linux - 运行多线程应用程序的新四核处理器中的 linux 内核有多好

这里有没有人在新的四核处理器中运行多线程应用程序的 linux 线程调度程序方面有经验?如果有这样的人,您可以在这里写下您对内核管理不同线程的性能如何的经验,您是否经历过任何线程饥饿或其中一个内核的饥饿?

谢谢你。

0 投票
3 回答
3829 浏览

x86 - SMP多线程如何共享内存和中断?

我正在为我的内核做一些输入缓冲区的工作,我有一些问题。在双核机器上,我知道可以同时运行多个“进程”。我不知道操作系统和各个程序如何保护数据冲突。

关于这个话题,我想知道两件事:

(1) 中断发生在哪里?它们是否保证发生在一个核心上而不是另一个核心上,这是否可以用来确保一个核心上的实时操作不会被另一个核心上可以处理的文件 IO 中断?(我从逻辑上假设中断会发生在第一个核心上,但这总是正确的,你怎么知道?或者也许每个核心都有自己的中断设置?这不会导致每个核心都发生中断吗?核心可以同时对同一个中断做出反应,可能以不同的方式?)

(2) 双核处理器如何处理操作码内存冲突?如果一个核心正在读取内存中的地址,而另一个核心正在写入内存中的同一地址,会发生什么?是抛出异常,还是读取了值?(我假设写入会以任何一种方式工作。)如果读取了一个值,是否保证它是碰撞时的旧值或新值?

我知道理想情况下应该编写程序以避免这些并发症,但操作系统当然不能指望这一点,并且需要能够处理此类事件而不会自己窒息。

0 投票
6 回答
4344 浏览

linux - 如何向 Linux 内核提交潜在的补丁?

我们有一些软件依赖于另一个(非常常用的)应用程序的某些行为,这些应用程序现在已经改变,使我们当前的实现可行,但不是最优的。

我们相信这一变化可能影响了许多其他应用程序,特别是在性能监控领域,我们已经找到了一个我们认为可以改善一系列其他潜在问题的解决方案。

不幸的是,上述解决方案是内核更改(相对简单但如果我们把它塞进去会产生很大影响),我们没有提交内核补丁以供审查的经验。

SO上有没有人真的提交了一个补丁(虽然我很感激所有的答案,但我怀疑最好的答案来自那些已经通过这个过程的人,即使是不成功的)?您是否已接受它(Alan Cox 等人在 SO 上徘徊的机会有多大)?

正确的流程是什么?我不打算向 Linus 发送电子邮件,因为我知道他有一群保护者,你应该在它到达他之前通过这些保护者。我如何找出谁负责内核的特定部分。

可能是我过于乐观地认为内核世界从未听说过的人可以做出贡献,但我很想知道。


编辑更多细节:

更改实际上并不是针对性能错误,而是(在我看来)对进程终止时写入的进程会计条目(当前)的改进。

Websphere App Server(啊,IBM,祝福他们的小心脏)已经改变了它的工作;JVM 过去常常定期退出,以便写入它们的条目,我们可以将其用于退款。现在它让 JVM 闲置了几个月,这意味着除非我们定期强制关闭 WAS,否则无法及时获得数据。不知何故,我认为 IBM 的软件部门不会为我们修复他们的软件 :-)。无论如何,我相信它对于其他长期存在的进程来说可能是一个有用的特性。

当前类型 3 进程记帐记录是在进程退出时写入的,我们正在研究的是一种在进程仍处于活动状态时定期写入类型 N 记录的机制,给出自上次写入以来的数字(或进程启动,如果这是第一次)。计费或性能监控应用程序可以选择使用类型 3 记录(完全未更改)或临时类型 N 记录。我们目前的解决方法是监视特定进程的 /proc/PID/stat ,但这是一个可怕的问题,因为它不能很好地与实际进程记帐集成。

不需要经常(我们很高兴有 24 小时),但可能会对性能产生影响,因为当前仅在进程 exit() 上完成的工作将不得不偶尔在进程上下文切换时完成。Linus 等人可能不喜欢这个想法,因为它可能是代码的高影响区域(即使检查自上次写入以来是否有 24 小时可能对他们来说太慢了)。

不过,感谢到目前为止所有的答案,我会看看我怎么走。给我几天,我会接受最好的答案。

0 投票
3 回答
30044 浏览

linux - 强制驱动程序与设备匹配

我有一块 USB 硬件,我知道它的驱动程序。但是,vendor id 和 product id 与驱动程序中注册的 VID、PID 对不匹配。linux中有没有办法强制驱动程序与已知设备相关联,不涉及内核模块重新编译以添加PID / VID对?

0 投票
1 回答
5001 浏览

linux - 从小任务中唤醒_up_interruptible() 是否安全?

我有一个内核模块,它通过 read() 向用户态进程提供数据。在数据可用之前,该进程会阻塞读取。我通过 read 方法中的 wait_event_interruptible() 实现了这一点。

数据来自一个中断处理程序,它把它吸入内存,然后安排一个小任务来处理它。原始代码调度 tasklet,然后调用 wake_up_interruptible() 重新激活被阻塞的读取。但是,这会导致竞争条件,因为在读取尝试将数据提供给用户进程之前,tasklet 可能尚未完成处理数据。

所以问题是,将我对 wake_up_interruptible() 的调用移到 tasklet 的末尾是否安全?

0 投票
6 回答
16799 浏览

amazon-web-services - Amazon EC2 实例如何选择其内核?

我有一个使用 Amazon 提供的 Fedora 8 64 位 AMI 的 Amazon EC2 实例,我想将其升级到 Fedora 10。

我尝试通过运行“yum update”来升级内核和所有软件包。这似乎工作正常,我看到我现在已经安装了 fc10 内核,并且我安装的所有软件包也都更新到了 Fedora 10 版本。

然而,我也注意到 fc8 内核仍然安装,当我重新启动我的映像时,它会返回运行 fc8 内核,而不是 fc10 内核(我从“uname -a”的输出推断出这一点)。

是否需要采取一些额外的步骤才能让我的映像在 fc10 内核下启动,或者这是否可能?亚马逊文档没有发现任何对我有用的东西。

0 投票
7 回答
62386 浏览

linux - 有没有办法弄清楚什么是使用 Linux 内核模块?

如果我加载一个内核模块并用 列出加载的模块lsmod,我可以获得模块的“使用计数”(引用该模块的其他模块的数量)。不过,有没有办法弄清楚什么在使用模块?

问题是我正在开发的一个模块坚持它的使用计数是 1,因此我不能rmmod用来卸载它,但它的“by”列是空的。这意味着每次我想重新编译和重新加载模块时,我都必须重新启动机器(或者,至少,我想不出任何其他方法来卸载它)。