linux 内核线程

一、概述

内核线程是一种在内核空间实现后台任务的方式,该任务可以进行繁忙的异步事务处理,也可以睡眠等待某事件的发生。

二、调度策略

1. SCHED_NORMAL

非实时调度策略,由nice值决定什么时候被调用,默认nice值为100~139。

2. SCHED_FIFO

实时调度策略,先到先调度。一旦占用CPU则一直运行,直到有更高优先级任务,或者自己任务执行完成。

3. SCHED_RR

实时调度策略,时间片轮转。当时间片使用完了,系统将重新分配时间片,并将线程重新排队在队尾。同样可以被高优先级抢占。

三、数据结构

struct task_struct;

四、创建并启动内核线程

1. 创建内核线程

/*  fnc:内核线程的回调函数;
 * data:传给内核线程的私有数据;
 * name:内核线程的名字
 * 返回值不为空时为有效内核线程结构
 */
struct task_struct *kthread_create(int (*fnc)(void *data), void *data, const char *name, …);

2. 启动内核线程

void wake_up_process(struct task_struct

猜你喜欢

转载自blog.csdn.net/u010704053/article/details/105367738