TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网互联网干货内核同步思维导图

内核同步思维导图

  收藏
  分享
免费下载
免费使用文件
U67362080 浏览量:72022-09-14 15:23:32
已被使用0次
查看详情内核同步思维导图

Linux中有关内核同步的思维导图,包括内核同步的概念、信号量、原子操作、算术操作

树图思维导图提供 内核同步思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 内核同步思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ad1dfbb504b43b1afbb54d340b44e0db

思维导图大纲

内核同步思维导图思维导图模板大纲

内核同步的概念

内核中的很多操作在执行的过程中都不允许受到打扰

队列的操作

如果两个进程都要将一个数据结构链入到同一个队列的尾部,要是在第 1 个进程完成了一半的时候发生了调度,让第 2 个进程插了进来,就可能造成混乱

信号量

进程间对共享资源的互斥访问是通过“信号量”机制来实现的

Linux 内核中提供了两个函数 down()和 up(),分别对应于操作系统教科书中的 P、V 操作

count 域就是“信号量”中的那个“量”,它代表着可用资源的数量

如果该值大于 0,那么资源就是空闲的,也就是说,该资源可以使用

如果 count 小于 0,那么这个信号量就是繁忙的,也就是说,这个受保护的资源现在不能使用

count的绝对值表示了正在等待这个资源的进程数

该值为 0 表示有一个进程正在使用这个资源,但没有其他进程在等待这个资源题

原子操作

避免干扰的最简单方法就是保证操作的原子性,即操作必须在一条单独的指令内执行

位图操作

内存管理中对空闲页的管理

简单的加锁

提供对打开设备的互斥访问

参数函数

void set_bit(int nr, volatile void *addr)

设置位图的第 nr 位

void clear_bit(int nr, volatile void *addr)

清位图的第 nr 位

void change_bit(int nr, volatile void *addr)

 改变位图的第 nr 位

int test_and_set_bit(int nr, volatile void *addr)

设置第 nr 位,并返回该位原来的值,且两个操作是原子操作,不可分割

int test_and_clear_bit(int nr, volatile void *addr)

清第 nr 为,并返回该位原来的值,且两个操作是原子操作

int test_and_change_bit(int nr, volatile void *addr)

改变第 nr 位,并返回该位原来的值,且这两个操作是原子操作

算术操作

位操作是不方便的,取而代之的是需要执行算术操作

函数

atomic_read(v)

返回*v

atomic_set(v,i)

把*v 设置成 I

Atomic_add(i,v)

给*v 增加 I  

Atomic_sub(i,v)

从*v 中减去 I  

Atomic_inc(v)

给*v 加 1

Atomic_dec(v)

从*v 中减去 1

Atomic_dec_and_test(v)

从*v 中减去 1,如果结果非空就返回 1;否则返回 0

Atomic_inc_and_test_greater_zero(v)

给*v 加 1,如果结果为正就返回 1;否则就返回 0

Atomic_clear_mask(mask,addr)

清除由 mask 所指定的 addr 中的所有位

Atomic_set_mask(mask,addr) 

设置由 mask 所指定的 addr 中的所有位

相关思维导图模板

执行函数思维导图思维导图

树图思维导图提供 执行函数思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 执行函数思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6fa6d5a6f25276068bc7a36624cca0cb

程序执行思维导图思维导图

树图思维导图提供 程序执行思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 程序执行思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b2c03df9afd131772df55f29fcbc1f0b