简介 pstore文件系统(是的,这是个文件系统)是Persistent Storage的缩写,最早在2010年由 Tony Luck 设计并合入Linux主分支,设计的初衷是在内核Panic/Oops...在linux 2.6的安卓的内核中找到,却没有提交到社区,后来被放弃维护了。网上找不到放弃的原因,我自己猜测是因为其只适用于mtd nand,然而现在的Android基本用的都是emmc。...常见的挂载是这样的: mount -t pstore pstore /sys/fs/pstore 挂载后,通过mount能看到类似这样的信息: mount...pstore on /sys/fs/pstore...迁移pstore/ram 在当前pstore的目录结构是这样的: $ tree fs/pstorefs/pstore/├── blk.c # pstore/blk 后端的实现├── ftrace.c...但是后来发现不管pstore/ram还是pstore/blk,他们对于存储空间的分配和管理极度相似,我就提炼出了pstore/zone。
作者简介 廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO全栈研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者、大客户存储技术支持.../linux.git(见参考链接[1]),而且发现国内外对pstore的介绍都好少好少,干脆来一波科普。...简介 pstore文件系统(是的,这是个文件系统)是Persistent Storage的缩写,最早在2010年由 Tony Luck 设计并合入Linux主分支,设计的初衷是在内核Panic/Oops...在linux 2.6的安卓的内核中找到,却没有提交到社区,后来被放弃维护了。网上找不到放弃的原因,我自己猜测是因为其只适用于mtd nand,然而现在的Android基本用的都是emmc。...迁移pstore/ram 在当前pstore的目录结构是这样的: $ tree fs/pstore fs/pstore/ ├── blk.c # pstore/blk 后端的实现 ├── ftrace.c
其中,注意linux-5.4内核上暂未支持pstore功能。 1.3 相关人员 适用Tina平台的广大客户与开发人员。...此方案在全志释放的Linux-4.9及之后的内核版本中支持,暂时不兼容Linux-3.4/3.10/4.4等 旧内核版本。...pstore/blk 模块及其衍生的 pstore/zone , mtdpstore 模块已合并进Linux社区。详细的 使用文档可参考社区内核文档。...在pstore中,kmsg前端基于kmsg_dump的机制,在最新的版本中支持所有的kmsg_dump_reason。...kmsg_dump机制可以在特定时机出发回调,把内核的日志缓存log_buf导出。 在pstore中,pmsg是pstore提供的用户空间转存信息的方法。
从Linux 2.4版本开始,操作系统底层提供了scatter/gather这种DMA的方式来从内核空间缓冲区中将数据直接读取到协议引擎中,而无需将内核空间缓冲区中的数据再拷贝一份到内核空间socket...参考: 浅谈 Linux下的零拷贝机制 TCP TCP的TIME_WAIT有两个作用: 防止前一个TCP连接的残留数据(在序列号恰好正确的情况下)进入后续的TCP连接中 防止TCP挥手过程发出去的最后一个...Linux实现了大量QDisc来满足各个QDisc对应的的报文队列和行为。该接口允许QDisc可以在没有IP栈和NIC驱动修改的前提下实现队列管理。...TCP rtt和rto TCP拥塞避免算法,目前主流Linux的默认拥塞避免算法为cubic,可以使用ss -i命令查看。...可以看到reno算法在发生拥塞避免时不会将cwnd变为1,这样提高了传输效率,快速重传和快速恢复机制也有利于更快探测到拥塞。 ?
在Linux内核中,"backport printk"和"front printk"都是用于记录内核消息和调试信息的机制,但它们的工作方式和使用场景有一些区别。..."backport printk"是一种在内核中记录消息和调试信息的机制,可以将这些信息输出到控制台、串口、网络等目标。它通常用于在内核启动过程中的早期阶段,或者在没有其他可用的调试机制时使用。"...backport printk"不依赖于其他内核模块或机制,因此可以在不同的环境中使用。 相比之下,"front printk"是一种将打印消息转发到用户空间的机制。...它需要一个名为"pstore"的内核机制,用于将消息保存到文件系统中的pstore文件夹中。"front printk"通常用于在内核中发生崩溃或错误时记录相关的信息。...总结来说,"backport printk"主要用于早期的内核启动阶段和没有其他调试机制的情况下,而"front printk"主要用于记录内核崩溃和错误时的信息,并将其转发到pstore机制中。
其中,注意linux-5.4内核上暂未支持pstore功能。...此方案在全志释放的Linux-4.9及之后的内核版本中支持,暂时不兼容Linux-3.4/3.10/4.4等 旧内核版本。...pstore/blk 模块及其衍生的 pstore/zone , mtdpstore 模块已合并进Linux社区。详细的 使用文档可参考社区内核文档。...在pstore中,kmsg前端基于kmsg_dump的机制,在最新的版本中支持所有的kmsg_dump_reason。...kmsg_dump机制可以在特定时机出发回调,把内核的日志缓存log_buf导出。 在pstore中,pmsg是pstore提供的用户空间转存信息的方法。
而若需要将pstore数据保存到新的存储设备上,也可以通过向其添加后端设备的方式完成。 除此之外,pstore还设计了一套pstore文件系统,用于查询和操作上一次重启时已经保存的pstore数据。...文件中,因为采用console机制,该文件中的日志信息也受printk level控制,并不一定是全的。...pstore_register ramoops负责把message write到某个ram区域上,platform负责从ram读取存到/sys/fs/pstore,ok,先来看机制代码platform.c...fail_init_cprz; err = ramoops_init_prz(dev, cxt, &cxt->fprz, &paddr, cxt->ftrace_size, LINUX_VERSION_CODE...DDR,不能掉电,只能依靠自动重启机制来查看,故而要配置:CONFIG_PANIC_TIMEOUT,让系统在 panic 后能自动重启。
RELRO(RELocation Read Only) 在Linux中有两种RELRO模式:Partial RELRO 和 Full RELRO。Linux中Partical RELRO默认开启。
这还是和RCU的机制有关,RCU能够容忍数据的短时间不同步,并且写者能保证原子地更新数据。...如果存在多个写者,并且它们修改的是同一个数据结构(例如同一个链表节点),那么就需要额外的同步机制(互斥锁、自旋锁等等)来防止并发修改同一个共享数据。...或者说必然需要一种机制能够让写者"知道"宽限期已经结束了,我们可能会想到使用信号量、通知链之类的方法,但是这些机制又会引入其他的锁,那这就和RCU无锁的设计初衷相悖了。...深入理解 Linux 的 RCU 机制 RCU锁原理与实现 再谈Linux内核中的RCU机制 Non-Preemptible RCU soft lockup: zap_pid_ns_processes...Linux RCU 内核同步机制 深入剖析Linux RCU原理(二)-渐入佳境 【Linux 内核源码分析】RCU机制
缓存机制:Linux引入了buffers和 cached机制,buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件元数据,这样当操作系统需要读取某些文件时,首先在buffers...与cached内存区查找,如果找到,直接读出给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操作系统的性能。...为了方便查找文件,linux引入目录项(dentry)描述目录与文件的关系树,Linux为每一个目录建立一个目录项,也为每个文件建立一个目录项。...根据Linux虚拟内存管理机制,这种行为是正常的。要理解为什么缓存会变得如此之高,以及为什么这不是一个问题,就必须了解I/O在Linux上是如何工作的。...从Linux缓存机制来说,buffers和cached都是系统可用内存,通常情况下看到bufferes和cached占用内存多,这是一个正常现象,它不是一个问题,所以在看到物理内存快要耗尽时,不要惊慌,
/a.out bt 4.开发板上使用core文件调试 ----------------------------- 如果开发板的操作系统也是linux,core调试方法依然适用。...如果开发板上不支持gdb,可将开发板的环境(依赖库)、可执行文件和core文件拷贝到PC的linux下。
1、简介: RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。...RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。...3、相应资料: Linux内核源码当中,关于RCU的文档比较齐全,你可以在 /Documentation/RCU/ 目录下找到这些文件。 Paul E....为此RCU机制提供了相应的API来实现这个功能。...可以通过优化屏障来解决该问题,RCU机制对优化屏障做了包装,提供了专用的API来解决该问题。
作者简介:中年码农,做过电信、手机、安全、芯片等行业,靠Linux混饭吃。...和用户态程序的 coredump 机制类似。...下面就来详细的分析整个 kdump 机制的详细原理。...在现在的 ubuntu 中只需要安装一个 linux-crashdump 软件包就自动帮你搞定: sudo apt-get install linux-crashdump 安装完后,可以通过 kdump-config...所以可以看到 /proc/kcore 和 /proc/vmcore 这两个文件是整个机制的核心,我们重点分析这两部分的实现。
在这里总结一下它的内部机制。也解决一下自己原来的一些疑惑。 Namespace是什么 C++中的Namespace 首先,先提一下Namespace是什么。最早知道这个名词是在学习C++语言的时候。...Linux的Namespasce Linux Namespaces是一种轻量级的虚拟化形式。操作系统在内存,CPU上,已经使用了虚拟化的技术,让每个进程都认为是自己独占了内存和CPU。...Linux Namespace原理 对于内核来说,进程是由task_struct结构体来控制。所以Namespace肯定会和task_struct有关联。...参考 Linux内核的namespace机制分析 Namespaces in operation, part 1: namespaces overview Docker基础技术:Linux Namespace...(上) Docker基础技术:Linux Namespace(下)
OOM分析 oom_killer(out of memory killer)是Linux内核的一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存
中断的历史原因 在聊中断机制之前,我想先和大家聊一聊中断机制出现的前因后果。...又过了几年,Linus Torvalds 基于 UNIX 操作系统开发了 Linux,一直流传至今。...我没有查到中断到底是何时引入的,但是从 Linux 问世以来就已经有了,而且 Linux 是基于 UNIX 开发的,可以认为 UNIX 就已经引入中断机制了,而且换个角度来说,UNIX 作为如此著名的操作系统...,应该会引入中断机制的。...对于 Linux 内核来说,中断信号分为两类:硬件中断和软件中断,每个中断是由 0 - 255 之间的一个数字来标识。
1 页式管理 1.1 分段机制存在的问题 分段,是指将程序所需要的内存空间大小的虚拟空间,通过映射机制映射到某个物理地址空间(映射的操作由硬件完成)。...分段映射机制解决了之前操作系统存在的两个问题: 地址空间没有隔离 程序运行的地址不确定 不过分段方法存在一个严重的问题:内存的使用效率低。...但是Linux并没有采用这种机制 正如前面所述,通过设置页目录项的Page Size标志启用扩展分页功能。在这种情况下,分页单元把32位线性地址分成两个字段: Directory:最高10位。...若这个标志为0,只有当CPL小于3(这意味着对于Linux而言,处理器处于内核态)时才能对页寻址;若该标志为1,则总能对页寻址。...第9~11位由操作系统专用,Linux也没有做特殊之用。 ? 80386的每个页目录项指向一个页表,页表最多含有1024个页面项,每项4个字节,包含页面的起始地址和有关该页面的信息。
上一篇文章写到中断机制,采用了等待队列的方式实现了按键中断。但是你会发现,应用程序在读取按键值的时,当没有按键按下,则一直处于睡眠态。无法继续往下执行。...poll机制的解析:其中poll()函数和select()函数的功能同等。...代码实现: 基本是在上一篇文章《中断机制》的代码实现中修改一些内容。 驱动代码:增加poll的方法。
这篇文章以按键为例子讲解linux的中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux的中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...Linux中断的相关函数: 1、注册中断函数: 中断处理函数结构: typedef irqreturn_t (*irq_handler_t)(int, void*); 注册中断函数:int request_irq...dev:与request_irq的参数dev必须一致,将request_irq指定的dev传递给这个参数; Linux中断处理分析: 第一种方式:应用层的读,不管什么情况下,都会返回。...Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。
1 linux的分页机制 1.1 四级分页机制 前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制,即...1.2 不同架构的分页机制 对于不同的体系结构,Linux采用的四级页表目录的大小有所不同:对于i386而言,仅采用二级页表,即页上层目录和页中层目录长度为0;对于启用PAE的i386,采用了三级页表...Linux 的页全局目录对应80x86 的页目录指针表(PDPT),取消了页上级目录,页中间目录对应80x86的页目录,Linux的页表对应80x86的页表。...1.3 为什么linux热衷:分页>分段 那么,为什么Linux是如此地热衷使用分页技术而对分段机制表现得那么地冷淡呢,因为Linux的进程处理很大程度上依赖于分页。...这就是虚拟内存机制的基本要素。 每一个进程有它自己的页全局目录和自己的页表集。
领取专属 10元无门槛券
手把手带您无忧上云