访问内核链表的多个用户进程

时间:2017-12-14 17:02:07

标签: linux multithreading linked-list linux-kernel system-calls

我有10个用户空间应用程序可以调用对内核的相同系统调用。例如,10个用户空间程序可以调用绑定系统调用。

收到系统调用后,我内核中的代码会在内核空间中创建的链表中插入数据。我正在使用内核链表添加,删除和遍历节点。我还在写入之前锁定节点,以防止在不同用户空间进程同时访问时列表未损坏的情况。

我担心当这10个进程中的任何进程调用对内核空间的系统调用时,用户进程的相应内核线程不知道如何访问自定义列表头并更新列表。

这种担忧背后的原因是系统调用不是atmoic,即10个用户应用程序可以同时启动,但不能保证首先启动的那个应用程序将首先运行并完成。相应的内核线程如何知道要更新的内核列表,哪些内核列表也可以由其他内核线程更新。

简而言之,我的关注是否有效?如果是,我如何确保内核线程可以访问相同的内核链表而没有任何并发​​和竞争条件问题?我是否需要在内核中创建共享链接列表,以便内核线程/用户进程需要访问特定列表并仅更新该内容? 如果我的关注有效,请提供有关如何实现共享内核链表的信息?

0 个答案:

没有答案