Linux内核学习9——内核多任务并发实例(上)

这里我们来看看Linux中是如何使用同步机制来实现复杂的多任务同步的

首先来介绍一下这个例子

在这里插入图片描述

有一个内核共享资源(链表),同时有三种不同类型的内核任务会访问该链表,并对其进行插入或者删除节点的操作,内核线程负责向链表加入新节点,内核定时器负责定时/删除节点,而系统调用负责在某个时刻销毁整个链表。这三种内核任务并发执行时,有可能会破坏链表数据的完整性,所以我们必须对链表进同步访问保护,以确保数据的一致性。在这样一个多任务并发访问的模型中,我们需要选用合适的内核同步机制来管理这些任务,使得它们能够有条不紊的执行。主要用到的工具有:信号量/自旋锁/工作队列/内核定时器

在这里插入图片描述
在这里插入图片描述

当用户初始化一个工作队列时,内核就开始为用户分配一个workqueue工作队列对象,并且将其链到一个全局的workqueue队列中,然后linux会根据当前CPU的情况为工作队列对象分配与CPU个数相同的cpu_workqueue_struct,也就是CPU工作队列对象,每个CPU工作队列对象都会有一条任务队列,linux会为每一个cpu工作队列对象分配一个内核线程ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值