![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核调度
文章平均质量分 75
我私人的kernel
这个作者很懒,什么都没留下…
展开
-
内核笔记:内核线程的创建
一 创建内核线程的内核线程 kthreadd. 在内核初始化时,为了后期的内核线程的创建, 内核特地创建了一个新的特殊的内核线程来为后期的内核线程创建服务。 init/main.c rest_init(){ kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);原创 2014-02-14 13:33:34 · 778 阅读 · 0 评论 -
内核线程的实例与摧毁
创建内核线程常见用于两种用途: 1)内核线程创建后便陷入睡眠, 直到有任务要执行。内核线程才会被唤醒, 执行完任务被再次睡眠.(比如说内核线程kevent) 2)内核线程创建后, 进入周期式唤醒/睡眠。 通常来说, 内核线程执行的是无尽循环(死循环)的工作。下面举例用于处理workqueue的内核线程Kevent。 914 static int create原创 2014-02-20 21:16:51 · 874 阅读 · 0 评论 -
内核线程的创建(2)
* 进程A执行执行kthread_create()函数中的wait_for_completion(create->done)后进入睡眠, 一直持续到创建的内核线程的第一次执行才被唤醒。 * 补充: 或者是create_kernel()执行kernel_thread()创建进程描述符时失败,也一样会complete(create->done).触发进程A的唤醒(内核线程创建失败原创 2014-02-14 14:30:55 · 763 阅读 · 0 评论 -
内核笔记:完成变量completion.
一结构体变量定义: 25 struct completion { 26 unsigned int done; //决定进程是否需要睡眠/唤醒 27 wait_queue_head_t wait; //进程在此等待队列睡眠 28 }; 29 二相关函数: 睡原创 2014-02-14 16:45:54 · 1470 阅读 · 0 评论