深入理解Linux内核-内核同步

内核基本的同步机制:

抢占内核的主要特点:一个在内核态运行的进程,可能在执行内核函数期间被另外一个进程取代。

内核抢占:Linux 2.6允许用户在编译内核的时候配置十分启用

进程临界区:每个进程中访问临界资源(一次仅允许一个进程使用的共享资源)的那段代码称为临界区。

优化屏障:保证编译程序不会混淆放在原语操作之前的汇编指令和放在原语之后的汇编指令。

内存屏障:确保原语之后的操作开始执行之前,原语之前的操作已经完成。

自旋锁:在多处理器环境中工作的一种特殊的锁。如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径锁着,就在周围‘旋转’,反复执行,直到锁呗释放。因为内核资源很多只锁1毫秒的时间片段,所以不会浪费太多时间。

顺序锁:自旋锁的读写具有相同的优先级。顺序锁中,写被赋予了更高的优先级。即使正在读对时候,也允许写;好处是写者不用等待读者,缺点时读者反复读取多次数据,对比相同,才能确认有效。

信号量:1、内核信号量,由内核控制路径使用;2、System V IPC 信号量,由用户态进程使用。

内核信号量:和自旋锁类似,内核信号量保护大资源内核控制路径不能访问,并且相应的进程被挂起。另外,1、只有可睡眠待函数才能获取内核信号量;2、中断处理程序和可延迟函数都不能使用内核信号量。

系统的高并发度取决于:1、同时运行的I/O设备数2、进行有效工作多CPU数

大内核锁:
时间: 2024-08-26 06:36:27

深入理解Linux内核-内核同步的相关文章

Linux 内核的同步机制,第 1 部分 + 第二部分(转)

http://blog.csdn.net/jk198310/article/details/9264721  原文地址: Linux 内核的同步机制,第 1 部分 一. 引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问.尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问.在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作

【深入理解Linux内核】《第一章 绪论》笔记

1.商用Unix操作系统包括: - AT&T公司开发的(System V Release 4) SVR4. - 加州伯克利分校发布的4.4BSD - Dec公司(现属于HP)的Digital Unix - IBM公司的AIX - HP公司的HP-UX - Sun公司的Solaris   - Apple公司的Mac OS X 所有商业版本都是SVR4或4.4BSD的变体,并且都趋向于遵循某些通用标准:如IEEE的POSIX(Portable Operating Systems based on U

20150514我读《深入理解linux内核》之虚拟文件系统笔记

20150514我读<深入理解linux内核>之虚拟文件系统笔记 2015-05-14 Lover雪儿 虚拟文件系统所隐含的思想就是把很多不同种类的文件系统的共同信息放入内核,其中有一个字段或者函数来支持Linux所支持的所有实际文件系统所提供的任何操作.对所调用的每个读.写或者其他函数,内核都能把他们替换成支持本地Linux文件系统.NTFS文件系统,或者文件所在的任何其他文件系统的实际函数. 虚拟文件系统可以称为虚拟文件系统转换,是一个内核软件层,用来处理与Unix标准文件系统相关的所有系

【笔记】深入理解Linux内核--内存寻址(一)

<深入理解Linux内核>中关于内存管理一共有三章,这是其中的一章,还有第八章,讨论内核怎样给自己分配主存,以及第九章,考虑怎样给进程分配线性地址. 内存地址 -- (P40) 以下三种地址是相对与8086处理器来说的. 逻辑地址(logical address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址.比如下面反汇编代码中最左边的地址即逻辑地址. 1 40052d: 55 push %rbp 2 40052e: 48 89 e5 mov %rsp,%rbp 3 400531:

【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)

2.1 内存地址 逻辑地址:段+偏移 线性地址(虚拟地址) 物理地址 2.2硬件中的分段 2.2.1 段选择符和段寄存器 15                                                3  2  1   0 ------------------------------------------------|                                                    |TI |RPL  ||         索引号 

【读书笔记::深入理解linux内核】内存寻址

我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器了??? 我发现网上也有人和我问了同样的问题,看这个问题 这句话太让人费解了,让人费解到以至于要怀疑

理解 Linux backlog/somaxconn 内核参数

Shihu https://jaminzhang.github.io/linux/understand-Linux-backlog-and-somaxconn-kernel-arguments/ 各参数的含义:https://www.alibabacloud.com/help/zh/faq-detail/41334.htm 理解 Linux backlog/somaxconn 内核参数 By 12月08日 2016 Linux LinuxTCPSocketbacklogsomaxconn 引言

Linux进程/内核模型

内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道. Linux内核主要由以下5个子系统组成:进程调度.内存管理.虚拟文件系统.进程间通信以及设备驱动. 在这个组成中,最核心的就是进程管理->进程调度和进程间通信. 在Linux系统中,我们编写的任何应用层程序,不管是上层还是属于中间框架层的代码,甚至是最底层的驱动代码,都可以以进程的形式在系统上运行.CPU可以运行在用户态和内核态. 在Linux 进程/内核模型中,每个进程就是执行在机器上的唯一的镜像,它们对系

Windows内核原理-同步IO与异步IO

目录 Windows内核原理-同步IO与异步IO 背景 目的 I/O 同步I/O 异步I/O I/O完成通知 总结 参考文档 Windows内核原理-同步IO与异步IO 背景 在前段时间检查异常连接导致的内存泄漏排查的过程中,主要涉及到了windows异步I/O相关的知识,看了许多包括重叠I/O.完成端口.IRP.设备驱动程序等Windows下I/O相关的知识,虽然学习到了很多东西,但是仍然需要自顶而下的将所有知识进行梳理. 目的 本片文章主要讲解同步I/O与异步I/O相关知识,希望通过编写本篇

Linux有内核级线程吗?

线程通常被定义为一个进程中代码的不同执行路线.从实现方式上划分,线程有两种类型:"用户级线程"和"内核级线程". 用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建.同步.调度和管理线程的函数来控制用户线程.这种线程甚至在象 DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似 Windows 3.x 的协作式多任务.另外一种则需要内核的参与,由内核完成线程的调度.其依赖于操作系统核心,由内核的