1. linux 内核线程概念的简单表述:内核采用一致的数据结构收集和处理用户进程线程的信息,内核线程依托于这些内核数据结构并依此产生,它的动作受动于进程的明确的要求,信号,软中断,硬中断,内核管理及异常,分别的例子为进程要求系统调用做I/O, signal通知, 除零, 外部异步事件中断,内存页回收或者页交换,内存水印上下限报警或者无页分配等。内核线程也依赖于内核对他具体的编程设置,比如工作队列就是典型的生成内核线程来处理相应事件的,受内核管理并调度的;内核线程不同于用户进程线程的关键是在于内核对内核线程不需要mm结构,但它会使用active_mm结构指向被内核调度出去进程的mm结构,这个active有效内存结构即用来给内核线程做栈使用. 内核线程是不会访问用户空间的,这样所有进程的内核空间都是一样的,并且节省mm空间。
2. RCU(Read-Copy-Update) 无锁机制。其核心思想是将写延迟到没有读再进行数据更新。当可以进行写的时候,内核会创建一段新的内存空间,拷贝原来用指针维护的数据结构生成一个新的副本,再对该副本更新update数据内容,调用rcu_assign_pointer函数修改原来数据结构指针指向这个新的副本空间,注意这个更新的过程是原子的,整个数据更新过程由该原子性修改指针完成。
3.