深入理解Linux内核-内核同步
内核基本的同步机制:
抢占内核的主要特点:一个在内核态运行的进程,可能在执行内核函数期间被另外一个进程取代。 内核抢占:Linux 2.6允许用户在编译内核的时候配置十分启用 进程临界区:每个进程中访问临界资源(一次仅允许一个进程使用的共享资源)的那段代码称为临界区。 优化屏障:保证编译程序不会混淆放在原语操作之前的汇编指令和放在原语之后的汇编指令。 内存屏障:确保原语之后的操作开始执行之前,原语之前的操作已经完成。 自旋锁:在多处理器环境中工作的一种特殊的锁。如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径锁着,就在周围‘旋转’,反复执行,直到锁呗释放。因为内核资源很多只锁1毫秒的时间片段,所以不会浪费太多时间。 顺序锁:自旋锁的读写具有相同的优先级。顺序锁中,写被赋予了更高的优先级。即使正在读对时候,也允许写;好处是写者不用等待读者,缺点时读者反复读取多次数据,对比相同,才能确认有效。 信号量:1、内核信号量,由内核控制路径使用;2、System V IPC 信号量,由用户态进程使用。 内核信号量:和自旋锁类似,内核信号量保护大资源内核控制路径不能访问,并且相应的进程被挂起。另外,1、只有可睡眠待函数才能获取内核信号量;2、中断处理程序和可延迟函数都不能使用内核信号量。 系统的高并发度取决于:
1、同时运行的I/O设备数
2、进行有效工作多CPU数 大内核锁:
深入理解Linux内核-内核同步的更多相关文章
- 24小时学通Linux内核--内核探索工具类
寒假闲下来了,可以尽情的做自己喜欢的事情,专心待在实验室里燥起来了,因为大二的时候接触过Linux,只是关于内核方面确实是不好懂,所以十天的时间里还是希望能够补充一下Linux内核相关知识,接下来继续 ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 深入理解linux网络技术内幕读书笔记(三)--用户空间与内核的接口
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sy ...
- 深入理解Linux内核 学习笔记(1)
1.用户和用户组 每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识.每个文件的相关权限也恰好与一个组相对应. root为超级用户, 2.模块 为了达到微内 ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- 【读书笔记::深入理解linux内核】内存寻址
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...
- 理解 Linux backlog/somaxconn 内核参数
https://jaminzhang.github.io/linux/understand-Linux-backlog-and-somaxconn-kernel-arguments/ 各参数的含义:h ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- Linux进程/内核模型
内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道. Linux内核主要由以下5个子系统组成:进程调度.内存管理.虚拟文件系统.进程间通信以及设备驱动. 在这个组成中 ...
随机推荐
- 6、java5线程池之固定大小线程池newFixedThreadPool
JDK文档说明: 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程.在任意点,在大多数 nThreads 线程会处于处理任务的活动状态.如果在所有线程处于活动状态时提交附加任务,则 ...
- MYSQL数据库注释
//修改注释 alter table user comment = '我要修改注释'; //新建表设定表注释及解释说明. create table AuthUser( ID ) primary key ...
- 【转】Jenkins怎么启动和停止服务
笔者没有把Jenkins配置到tomcat中,每次都是用命令行来启动Jenkins.但是遇到一个问题:Jenkins一直是开着的,想关闭也关闭不了.百度了一些资料,均不靠谱(必须吐槽一下百度).于是进 ...
- 六大主流开源SQL引擎总结
本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以及2个 ...
- linux-shell脚本高并发对文本url批量下载
实践出真知 样例 http://xxxx.file.myqcloud.com/yyy/xxxxx/xxxx.jpg #注意xxx,yyy都是马赛克 需求: 1.url条数130万左右,图片都说16kB ...
- mtr网络连通性测试
01.mtr命令 yum install -y mtr [root@jiao ~]# mtr --helpusage: mtr [-hvrwctglspniu46] [--help] [--ver ...
- javascript 的 jasmine 的測试语句
首先建立环境场景: 一般三个文件夹 lib jasmine的系统文件存放文件夹 spec 写測试用例的文件夹 src 存放源码的文件夹(被測对象) specRunner.html 測试入口文件. 入口 ...
- ubuntu中查看各种设备和资源的命令汇总
一.系统信息 1.查看内核信息: $uname -a 2.查看操作系统版本: ...
- KVM虚拟机的创建、管理与迁移
[日期:2012-06-01] KVM虚拟机管理 一.环境 role hostname ip OS kvm_server target ...
- 【RS】CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Collaborative Filtering-CoupledCF:在推荐系统深度协作过滤中学习显式和隐式的用户物品耦合
[论文标题]CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Colla ...