我有10个用户空间应用程序可以调用对内核的相同系统调用。例如,10个用户空间程序可以调用绑定系统调用。
收到系统调用后,我内核中的代码会在内核空间中创建的链表中插入数据。我正在使用内核链表添加,删除和遍历节点。我还在写入之前锁定节点,以防止在不同用户空间进程同时访问时列表未损坏的情况。
我担心当这10个进程中的任何进程调用对内核空间的系统调用时,用户进程的相应内核线程不知道如何访问自定义列表头并更新列表。
这种担忧背后的原因是系统调用不是atmoic,即10个用户应用程序可以同时启动,但不能保证首先启动的那个应用程序将首先运行并完成。相应的内核线程如何知道要更新的内核列表,哪些内核列表也可以由其他内核线程更新。
简而言之,我的关注是否有效?如果是,我如何确保内核线程可以访问相同的内核链表而没有任何并发和竞争条件问题?我是否需要在内核中创建共享链接列表,以便内核线程/用户进程需要访问特定列表并仅更新该内容? 如果我的关注有效,请提供有关如何实现共享内核链表的信息?