Linux内核
文章平均质量分 78
KAZIMIYA
这个作者很懒,什么都没留下…
展开
-
【Kernel】proc/pid/smaps
【Kernel】proc/pid/smaps转自:https://www.jianshu.com/p/8203457a11cc一、基本介绍/proc/PID/smaps 文件是基于 /proc/PID/maps 的扩展,他展示了一个进程的内存消耗,比同一目录下的maps文件更为详细。值得说明一下的是,每一个VMA(虚拟内存区域,即一个 vm_area_struct 结构指向的内存区域)都有如下的一系列数据:08048000-080bc000 r-xp 00000000 03:02 13130转载 2022-05-19 00:30:19 · 1045 阅读 · 0 评论 -
【kernel】proc/pid/maps
【kernel】proc/pid/maps解析首先从https://blog.csdn.net/shenfengchen/article/details/117020725这位博主这里借来一份带注释的表格,大体上描述了maps文件的一个基本构成。起始地址-结束地址 属性 偏移地址 主从设备号 inode编号 文件名00008000-00590000 r-xp 00000000 b3:01 1441836 /root/xxx----------------------------可执行文件原创 2022-05-19 00:08:50 · 794 阅读 · 0 评论 -
【Kernel】内核数据结构之映射(v5.15.10)
【Kernel】内核数据结构之映射(v5.15.10)内核源码快捷查看一、概念映射常称为关联数组,是一个由唯一键组成的集合,而每个键必然关联一个特定的值。键到值的关联关系称为映射。映射至少支持三个操作:add(key,value) remove(key) value = Lookup(key) 映射可以通过散列表和二叉搜索树实现。二、IDR简介系统许多资源都用整数 ID 来标识,如进程 ID、文件描述符 ID、IPC ID 等;资源信息 通常存放在对应的数据结构中 (如进程信息存放在 task原创 2022-02-22 11:16:53 · 1140 阅读 · 0 评论 -
【Kernel】内核数据结构之链表(v5.15.10)
【Kernel】内核数据结构之链表(v5.15.10)内核源码快捷查看一、概念与特点链表是一种存放和操作可变数量元素(节点)的数据结构。元素动态创建并插入链表无需占用连续存储区二、单向链表、双向链表、环形链表单向链表:数据域 + 后向指针双向链表:数据域 + 前向指针 +后向指针环形链表:在单向链表OR双向链表基础上,对头尾指针进行修改,使链表成环。三、内核链表:list_headlist_head 结构体定义,/inclue/linux/types.h 如下stru原创 2022-02-22 11:15:39 · 600 阅读 · 0 评论 -
【Kernel】内核数据结构之二叉树(v5.15.10)
【Kernel】内核数据结构之二叉树(v5.15.10)内核源码快捷查看一、概念与特点树结构是一个能提供分层的树型数据结构的特定数据结构。在数学意义上,树是一个无环的、连接的有向图,其中任何一个顶点(在树里叫节点)具有0个或多个出边以及0个或1个入边。一个二叉树是每个节点最多只有两个出边的树,也就是一个树其节点具有0个、1个或者2个子节点。二、二叉搜索树(BST)、自平衡二叉树二叉搜索树:一个BST是一个节点有序的二叉树,满足以下条件根的左分支节点值都小于根节点值根的右分支节点值都大原创 2022-02-22 11:13:50 · 832 阅读 · 0 评论 -
【Kernel】内核数据结构之队列(v5.15.10)
【Kernel】内核数据结构之队列(v5.15.10)内核源码快捷查看一、概念与特点先进先出的链表结构。二、队列、循环队列队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。循环队列:在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进:无论插入或删除,一旦rear指针增1或front指针增1 时超原创 2022-02-22 11:12:32 · 543 阅读 · 0 评论 -
[Kernel]微内核、单内核
[Kernel]微内核、单内核一、从应用层面直观说明采用各种内核的系统微内核:华为鸿蒙系统、Windows系统、塞班系统单内核:Unix、Linux、FreeBSD、安卓系统二、各自的特点这里两种起始类似与RISC和CISC的比较,可以对比的看一下。微内核微内核是内核的一种精简模式,通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、原创 2022-02-21 10:08:46 · 2505 阅读 · 0 评论 -
【Kernel】页高速缓存和页回写
【Kernel】页高速缓存和页回写一、页高速缓存页高速缓存是Linux内核实现磁盘缓存。它主要用来减少对磁盘的I/O操作。具体而言,通过把磁盘的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。二、页高速缓存的价值磁盘高速缓存的价值在两方面:访问磁盘的速度远低于访问内存的速度;数据一旦被访问,就很有可能在短期内再次被访问(时间局部性原理),这些数据会被暂存在高速缓存中,实现快速命中。三、页高速缓存的实现页高速缓存由RAM中的物理页组成。缓存中每一页对应着磁盘中的多个块。读缓存原创 2022-02-21 09:58:10 · 648 阅读 · 0 评论 -
【Kernel】虚拟文件系统
【Kernel】虚拟文件系统一、概念虚拟文件系统(VFS)作为内核子系统为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件不但依赖VFS共存,而且也依靠VFS系统协同工作。通过虚拟文件系统,程序可以利用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。(把各种不同的文件系统抽象后采用统一的方式进行操作)。VFS定义了所有文件系统都支持的、基本的、概念上的接口和数据结构。下图是进行一次write系统调用所涉及vfs的具体流程。总的来说,vfs是一种文件系统的抽象,它原创 2022-02-21 09:57:33 · 457 阅读 · 0 评论 -
【Kernel】文件系统
【Kernel】文件系统一、软链接与硬链接硬链接硬链接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个原创 2022-02-21 09:56:02 · 402 阅读 · 0 评论 -
【Kernel】设备与模块
【Kernel】设备与模块一、设备块设备系统中能够随机访问固定大小数据片的硬件设备称作块设备,这些固定大小的数据片就称作块。常见的块设备是硬盘,除此之外还有软盘驱动器、蓝光光驱、和闪存等许多其他块设备。它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。块设备中最小的可寻址单元是扇区,扇区大小一般是2的整数倍并且小于页面大小,最常见是512字节,还有1KB或4KB。字符设备字符设备按照字符流的方式被有序访问,像串口和键盘就属于字符设备。网络设备网络设备最常见类型有时也以以太网设备原创 2022-02-21 09:54:04 · 378 阅读 · 0 评论 -
【Kernel】内核同步
【Kernel】内核同步内核源码快捷查看一、什么是内核同步同步是指用于实现控制多个进程按照一定的规则或顺序访问某些系统资源的机制。内核同步这里有一个官方形式的说法,但个人认为这一解释对理解其实际功能没什么帮助,这里仅仅对其进行引用。为了便于理解,这里介绍两个概念,临界区和竞争条件。临界区:访问和操作共享数据的代码段。竞争条件:两个执行线程在同一临界区中同时执行。使用内核同步解决共享资源并发访问的问题。如果多个执行线程同时访问和操作数据,就有可能发生各线程之间相互覆盖共享数据的情况,造成被访问数原创 2022-02-21 09:53:05 · 1099 阅读 · 0 评论 -
【Kernel】内存管理
【Kernel】内存管理内核源码快捷查看一、页内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常为字(甚至字节),但是,内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。内核中用struct page结构表示系统中的每个物理页,位于linux/mm_types.h。二、区由于硬件的限制,内核并不能对所有的页一视同仁。有些页位于内存中特定的物理地址上,所以不能将其用于一些特定的任务。由于存在这种限制,所以内核把页划分为不同的区。内核使用区对具有原创 2022-02-21 09:51:17 · 645 阅读 · 0 评论 -
【Kernel】定时器和时间管理
【Kernel】定时器和时间管理内核源码快捷查看一、相关概念时间管理在内核中占有非常重要的地位,相对于事件驱动而言,内核中有大量的函数都是时间驱动,包括很多周期执行函数、推后执行函数等等。接下来这里要提及几个相关的概念:相对时间:时间的偏移量绝对时间:固定的时刻(以上两条是笔者理解)节拍率(tick rate):系统定时器以某种频率自行触发(经常被称为击中或射中)时钟中断,该频率可通过编程预定。节拍率越高解析度和准确度越高。节拍(tick):连续两次时钟中断的间隔时间(节拍率的倒数)。墙上原创 2022-02-21 09:49:40 · 480 阅读 · 0 评论