博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux并发与同步专题
阅读量:5361 次
发布时间:2019-06-15

本文共 771 字,大约阅读时间需要 2 分钟。

并发访问:多个内核路径同时访问和操作数据,就有可能发生相互覆盖共享数据的情况,造成被访问数据的不一致。

临界区:访问和操作共享数据的代码段。

并发源:访问临界区的执行线程或代码路径。

 

在内核中产生并发访问的主要有如下4种:

  • 中断和异常:中断发生后,中断处理程序和被中断的进程之间有可能产生并发访问。中断<==>被中断的线程
  • 软中断和tasklet:软中断或者tasklet随时可能会被调度执行,从而打断当前正在执行的进程上下文。软中断<==>进程上下文
  • 内核抢占:调度器支持可抢占特性,会导致进程和进程之间的并发访问。进程<==>进程
  • 多处理器并发执行:多处理器上可以同时运行多个进程。A处理器进程<==>B处理器进程

对于单处理器系统,主要有一下并发源:(硬中断 > 软中断和tasklet > 进程上下文)

  • 中断处理程序可以打断软中断、tasklet和进程上下文。
  • 软中断和tasklet之间不会并发,但是可以打断进程上下文的执行。
  • 在支持抢占的内核中,进程上下文之间会并发。
  • 在不支持抢占的内核中,进程上下文之间不会产生并发。

对于SMP系统,有如下并发情况:

  • 同一类型的中断处理程序不会并发,但是不同类型的中断有可能送达到不同的CPU上,因此不同类型的中断处理程序可能会存在并发执行。
  • 同一类型的软中断会在不同的CPU上并发执行。
  • 同一类型的tasklet是串行执行的,不会在多个CPU上并发。
  • 不同CPU上的进程上下文会并发。

并发保护的是资源或者数据,而不是保护代码;包括静态局部变量、全局变量、共享的数据结构、缓存、链表、红黑树等各种形式的资源数据。

下面是本专题展开的章节:

《》

《》

《》

《》

《》

《》

《》

《》

 

 

转载于:https://www.cnblogs.com/arnoldlu/p/9236297.html

你可能感兴趣的文章
mysql view
查看>>
hadoop超租约报错:
查看>>
spring mvc重定向问题
查看>>
Android生命周期
查看>>
Eclipse 00: 安装教程 + 汉化 + 简单创建java项目
查看>>
题解【bzoj2733 [HNOI2012]永无乡】
查看>>
bitmap学习
查看>>
如何在Windows上搭建Android开发环境
查看>>
mysql函数操作-增加自定义函数
查看>>
Ubuntu 16.04安装Matlab 2016b教程
查看>>
sort大法好———自定义的注意事项!!!!!!
查看>>
指针遍历vector向量
查看>>
hdoj_2066一个人的旅行
查看>>
IOC基础
查看>>
jmeter简单录制脚本
查看>>
xcode7 创建pch文件
查看>>
seajs
查看>>
Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)
查看>>
Matlab给曲线添加加参考线
查看>>
共享内存与存储映射(mmap)
查看>>