首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核30-读写自旋锁

1 读/写自旋锁概念 自旋锁解决了多核系统在内核抢占模式下的数据共享问题。但是,这样的自旋锁一次只能一个内核控制路径使用,这严重影响了系统的并发性能。...为此,Linux内核提出了读/写自旋锁的概念。也就是说,没有内核控制路径修改共享数据的时候,多个内核控制路径可以同时读取它。...(1)使用独占指令ldrex标记相应的内存位置已经被独占,并将其值存储到tmp变量。 (2)判断tmp是否等于0。...通过上面的分析可以看出,读写自旋锁使用bit31表示写自旋锁,bit30-0表示读自旋锁,对于读自旋锁而言,绰绰有余了。...成员break_lock 对于另一个成员break_lock来说,同自旋锁数据结构的成员一样,标志锁的状态。 rwlock_init宏初始化读写锁的lock成员。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核34-读写信号量

1 读/写信号量的工作原理 读/写信号量和读/写自旋锁类似,不同的地方是进程在等待读/写信号量的时候处于挂起状态,而在等待读/写自旋锁的时候是处于忙等待,也就是自旋的状态。...那也就是说,读/写信号量同读/写自旋锁一样,对于读操作,多个内核控制路径可以并发请求一个读写信号量;而对于写操作,每个内核控制路径必须独占访问受保护的资源。...读/写信号量提高了内核的并发数量,也同时提高了系统的整体性能。 内核严格按照先进先出(FIFO)的原则处理等待读/写信号量的进程。读进程或者写进程一旦请求信号量失败,就被写到信号量等待队列的队尾。...当信号量被释放后,队列的第一个进程先被执行,因为它先被唤醒。如果唤醒的是一个写进程,那么队列其它进程继续休眠。...高16位的计数器以2的补码形式表示非等待写进程和等待内核控制路径的数量,低16位表示非等待读进程和非等待写进程的总数。 wait_list 等待进程的列表。

1.3K10

Linux内核设备驱动之proc文件系统笔记整理

/***************** * proc文件系统 *****************/ (1)/proc文件系统的特点和/proc文件的说明 /proc文件系统是一种特殊的、由软件创建的文件系统.../proc/filesystems 列出了可供使用的文件系统类型,通常是编入内核文件系统类型,但可以通过模块加入新的类型 /proc/interrupts 显示使用的中断号,中断名称,以及这些中断从系统启动后产生的次数...与物理内存大小完全一样,但不实际占用这么多内存;(记住:除非拷贝到文件,/proc下没有任何东西占用任何磁盘空间) /proc/kmsg 内核输出的消息。也被送到syslog。.../proc/slabinfo 系统slab缓存的分配信息 /proc/stat 系统的一些状态信息 /proc/swaps 系统采用的交换区信息 /proc/sysrq-trigger 用于启动sysRq...供uptime使用 /proc/version 内核版本 (2)自行实现一个/proc文件 需包含头文件,函数定义在/fs/proc/generic.c a.在/proc

3.5K21

详解Linux内核编译配置(menuconfig)、文件系统制作

目录 详解Linux内核编译配置(menuconfig)、文件系统制作 一、Linux内核配置原理 Linux内核的配置系统由三个部分组成, Linux 内核的编译菜单有3方法: Menuconfig...配置内核原理: 二、Menuconfig主要功能选项介绍: 三、编译配置内核步骤 四、文件系统制作步骤 五、文件系统和根文件系统区别联系 博主热门文章推荐: ---- 详解Linux内核编译配置(menuconfig...)、文件系统制作 Linux内核配置原理 Menuconfig主要功能选项介绍 编译配置内核步骤 制作文件系统步骤 文件系统和根文件系统区别联系 ---- 一、Linux内核配置原理 Linux内核的配置系统由三个部分组成..., 分别是: 1、Makefile:分布在 Linux 内核源代码根目录及各层目录,定义 Linux 内核的编译规则; 2、配置文件(config.in):给用户提供配置选择的功能; 3、配置工具...Linux 内核的编译菜单有3方法: 1)make config:进入命令行,可以一行一行的配置,这不方便使用,但用命令执行一遍会对编译过程有更深了解,这里不具体介绍。

4.7K20

Linux 内核Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )

包括 进程创建 , 销毁 , 线程组管理 , 内核线程管理 , 队列等待 ; 进程调度 位于 下图 Linux 内核整体架构图 内核空间 ; 二、内存管理 ---- 内存管理 涉及到 物理内存管理...处理器执行时 , 检测 异常条件 , 处理器需要停止当前执行的栈 , 处理异常 ; 中断管理 位于 下图 Linux 内核整体架构图 内核空间 ; 四、设备管理 ---- Linux 内核 支持的外设类型...是最多的 , 设备树 PCI 总线设备 设备模型 Kobject ACPI 网络设备驱动 块设备驱动 字符设备驱动 设备管理 位于 下图 Linux 内核整体架构图 内核空间 ; 五、文件系统...---- 文件系统应用场景 : F2FS EXT 2/3/4 XFS Linux 内核 为了支持各种文件系统 , 抽象出一个 虚拟文件系统 VFS , 这是一个文件系统的软件层 , 这样 Linux...内核可以很方便的集成各种文件系统 ; 文件系统 位于 下图 Linux 内核整体架构图 内核空间 ;

1.8K30

Linux内核设备驱动之虚拟文件系统笔记整理

/******************** * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核的子系统,为用户空间程序提供了文件系统的相关接口...对于不基于磁盘的文件系统,比如基于内存的文件系统sysfs,linux会在使用现场创建超级块并将其保存到内存。 超级块的结构体为super_block,定义在。...在文件系统安装时,内核会调用alloc_super()函数从磁盘读取文件系统超级块,并将其信息填充到内存的超级块对象。...dentry结构体定义在,对应的目录项操作函数结构体dentry_operations也定义在。...文件对象由file结构体表示,定义在。file对象的操作函数结构体为file_operations,定义在

2.1K20

Linux 内核Linux 操作系统结构 ( Linux 内核在操作系统的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

文章目录 一、Linux 内核在操作系统的层级 二、Linux 内核子系统 三、Linux 内核子系统之间的关系 一、Linux 内核在操作系统的层级 ---- Linux 内核 所在层级 : 整个计算机系统..., 由下到上介绍 : 计算机硬件 处于最底层 ; 计算机硬件 上面一层是 Linux 内核 , 计算机的所有硬件操作都要经过内核 , 内核是 抽象资源操作 与 具体硬件操作细节 之间的接口 ; Linux...; 最上层是 应用程序 , 应用程序 是 运行于操作系统上的 软件集合 ; 如下图所示 : 二、Linux 内核子系统 ---- Linux 内核的 5 个子系统 : 进程调度 ( Process...( Virtual File System ) : 为所有类型的 设备/逻辑文件系统 ( EXT2/3/4 , NTFS ) 提供统一接口 ; 该子系统可以分为 设备驱动程序 和 逻辑文件系统 ; 网络管理...内核子系统之间的关系 ---- 进程调度 依赖于 内存管理 模块 , 内存管理 依赖于 虚拟文件系统 和 进程调度 两个模块 , 虚拟文件系统 依赖于 内存管理 , 内存调度 , 网络管理 模块 ,

3.3K20

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址.../pub/linux/kernel/v5.x/linux-5.6.18.tar.gz 下载完 Linux 源码后 , 如果在 Windows 系统解压 , 需要使用管理员权限在 命令行终端 解压 ,...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需的特权 | Windows 配置 7z 命令行执行解压操作 ) 博客 ;...按钮 , 此时就可以在 VSCode 阅读 Linux 内核源码 ; 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163620.html原文链接:https

23.2K32

Linux proc 文件系统内容详述

Linux 下的 /proc 文件系统中提供了许多有用的信息,除了基本的CPU使用率、版本号等,你甚至还可以在这里直接看到内核的输出。...; mounts -> self/mounts 在内核2.4.29版本以前,此文件的内容为系统当前挂载的所有文件系统,在2.4.19以后的内核引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向...) zoneinfo 内存区域(zone)的详细信息列表,信息量较大 参考文献 深入理解linux系统下proc文件系统内容 使用 /proc 文件系统来访问 Linux 内核的内容 /proc/acpi...详细介绍 linux cgroups 简介 Linux之proc详解 /proc/irq和/proc/interrupts详解 内核符号表和kallsyms 管理密钥的内核 API 我的博客即将同步至腾讯云...invite_code=21yjpwt8mhhc0 --------------------- Author: Frytea Title: Linux /proc 文件系统内容详述 Link

3.3K10

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址.../pub/linux/kernel/v5.x/linux-5.6.18.tar.gz 下载完 Linux 源码后 , 如果在 Windows 系统解压 , 需要使用管理员权限在 命令行终端 解压 ,...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需的特权 | Windows 配置 7z 命令行执行解压操作 ) 博客 ;...按钮 , 此时就可以在 VSCode 阅读 Linux 内核源码 ;

21.2K30

​聊聊内核虚拟文件系统

linux会实现多种基于磁盘的文件系统,比如ext4/xfs等,为了支持不同的磁盘文件系统,且多个磁盘文件系统互相访问,Linux内核在用户进程和磁盘文件系统系统之间引入一个臭小抽象层,这个就是虚拟文件系统...目前文件系统基本可以分为三类,第一类是基于磁盘的文件系统,例如xfs.第二类是内核虚拟文件系统,是一种使用应用程序与用户进程通信的方法,内核的proc文件系统就是典型实现;第三种是网络文件系统,计算机通过网络连接到本地计算机...,具体的数组组织和处理都是由远程计算机内核进行。...,是由一个inode表示,该inode的数据段不包含普通文件的数据,而是根目录下面的各个目录项,这些目录项可能代表文件或者目录,每个目录项(dentry)是由一个inode和文件或者目录名组成.目录项的...根据/目录inode查找子目录user的inode,这会读取/目录的inode的数据段,直到找到usr目录项(如果查找失败,返回错误即可)。

72610

「干货」linux文件系统的“锁”

在多进程共享的应用程序,通过“锁”来对同一个计算资源进行协同是非常常见的做法,无论在单机或多机的系统、数据库、文件系统,都需要依赖“锁”机制来避免并发访问导致的不确定结果,今天我们就来讲讲文件系统的...我们都知道 rm -rf /在 Linux 是非常危险的命令。如果我们以 root 用户身份执行该命令,它甚至可以删除正在运行的系统的所有文件。...进程 B 开始其逻辑,并将结果 260(180 + 80)写回到文件。 进程 B 释放锁,以便其他协作进程可以继续读写该文件。...要在 Linux 启用强制性文件锁定,必须满足两个要求: 我们必须使用 mand 选项挂载文件系统(挂载-o mand FILESYSTEM MOUNT_POINT)。...检查系统的所有锁 slocks 命令 lslocks 命令是 util-linux 软件包的一个组件,在所有 Linux 发行版中都可用,通过这个命令可以列出系统中所有当前持有的文件锁。

2.9K10

linux内核编程_linux内核是什么

Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Linux 的每个进程享有4GB的内存空间,0~3GB属于用户空间,3~4GB属于内核空间 虚拟文件系统有什么作用?...Linux 虚拟文件系统(VFS)隐藏各种了硬件的具体细节,为所有设备提供了统一的接口。而且,它独立于各个具体的文件系统,是对各种文件系统的一个抽象 虚拟文件系统如何描述文件相关信息?...Makefile:分布在Linux 内核源代码的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...记录哪些部分被编译入内核、哪些部分被编译为内核模块。 在Linux 内核增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。

18.8K30

Linux内核的递归漏洞利用

6月1号,我提交了一个linux内核的任意递归漏洞。如果安装Ubuntu系统时选择了home目录加密的话,该漏洞即可由本地用户触发。...背景知识 在Linux系统,用户态的栈空间通常大约是8MB。如果有程序发生了栈溢出的话(比如无限递归),栈所在的内存保护页一般会捕捉到。...Linux内核栈(可以用来处理系统调用)和用户态的栈很不一样。...Linux上的大多数文件系统既不用底层设备(伪文件系统,比如sysfs, procfs, tmpfs等),也不用块设备(一般是硬盘上的一块)作为备用存储设备。...可是,现实这是不可行的,“mem”,“environ”,“cmdline ”文件只能用VFS函数读写,mmap无法使用: staticconst struct file_operations proc_pid_cmdline_ops

2K60
领券