logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux设备树详解(五)设备树的使用

对于Linux来说,一切皆是文件的思想,本章是基于此,来套路设备树与文件系统的关系,在Linux系统起来后,会将解析完成的设备树导出到用户空间。kernel启动在of_init()函数中在sys/firmware/devicetree/base目录下面为设备树展开成sysfs的目录和二进制属性文件,所有的node节点就是一个目录,所有的property属性就是一个二进制属性文件。static ..

linux内存回收(一)---kswapd回收

​正式开始十一之旅,有大量的时间将目前工作中遇到的内存回收进行总结下,主要是对内存回收的整个过程进行重新梳理。在linux操作系统中,当内存充足的时候,内核会尽量使用内存作为文件缓存(page cache),从而提高系统的性能。例如page cache缓冲硬盘中的内容,dcache、icache缓存文件系统的数据,这些内容是为了提升性能而设计的,还可以再次从硬盘中重新读取来构建对象,这部分内容可以

#linux#操作系统
Linux设备树详解(四)kernel的解析

uboot将一些参数,设备树文件传给内核,那么内核如何处理这些设备树文件呢?本章就kernel解析设备树的过程和原理。1. head.S开始从上一章我们已经知道fdt的地址是作为参数传递到kernel。下面看一下kernel阶段怎么获取这个地址值的。bootloader启动内核时,会设置r0,r1,r2三个寄存器,r0一般设置为0;r1一般设置为machine id (在使用设备树时该参...

linux内存回收(二)--直接内存回收机制

以下是几个常见的页面分配函数,可以看到最终都会调用__alloc_pages_nodemask()[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuNvsneK-1633779953086)(D:\学习笔记\内存管理总结\内存回收.assets\bprgzwjybv.png)]核心梳理__alloc_pages_nodemask():上面我们看到__alloc_pa

#linux#操作系统
linux内存管理笔记(二十九)----vmalloc

前面我们学习了linux内核中对于物理上连续的分配方式,采用伙伴系统和slub分配器分配内存,但是我们知道物理上连续的映射是最好的分配方式,但并不总能成功地使用。在分配一大块内存时,可能竭尽全力也无法找到连续的内存块。针对这种情况内核提供了一种申请一片连续的虚拟地址空间,但不保证物理空间连续,也就是vmalloc接口。vmalloc的工作方式类似于kmalloc,只不过前者分配的内存虚拟地址连续,

linux内存管理笔记(三)----TLB

前一章节,我们学习了分页机制的硬件原理,从虚拟内存地址到物理内存地址的转换,我们通过页表来处理。为了节约页表的内存存储空间,我们会使用多级页表。但是,多级页表虽然节约了我们的存储空间,但是却存在问题:原本我们对于只需要进行一次地址转换,只需要访问一次内存就能找到对应的物理页号了,算出物理地址现在我们需要多次访问内存,才能找到对应的物理页号。最终带来了时间上的开销,变成了一个“以时间换空间...

#linux#java
linux内存管理笔记(二十)--------zonelist初始化

在bootmem_init初始化的时候,已经初始化了内存节点的zone成员,该成员是struct zone数组,存放该内存节点的zone信息。在linux的内存管理中,分几个阶段进行抽象,用数据结构来管理。先用结点集合管理内存,然后用zone管理结点,再用页的管理zone。此时使用的数据结构分别为pglist_data、zone、page结构体,本章的主要是来分析内核是如何完成zonelist的初

linux内存管理笔记(十一)---CMA

在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,对于内核如果申请一块连续的内存空间该怎么处理呢?首先向到的是利用内核提供的kmalloc申请,尽管kmalloc可以申请连续的内存空间,但是在长时间的测试中,会出现内存空间可能申请失败的情况,无法保证能成功分配。使用memblock分配器中提供的方法,称为预留内存,但这么预留...

linux内存管理笔记(三十三)-----__do_page_fault处理流程

上一章重点学习了内核对于异常处理的总体的流程,从异常向量为入口,最终调用到真正的异常处理的接口__do_page_fault,本章主要是学习之前提到的内存缺页异常的常见场景中如何实现static int __kprobes__do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,unsigned int f

#操作系统
linux内存回收(三)--OOM Killer

当业务繁忙的服务器里,我们常常发现系统在非常大的内存压力情况下,触发了OOM Killer机制,OOM Killer机制是内存管理中在资源极端缺乏情况下一种迫不得已的进程终止机制,OOM Killer机制会根据算法选择并终止占用内存资源较多的进程,以便释放内存资源。本章的主要内容是了解OOM Killer是如何运转的。1 触发过程根据内存回收的流程,在慢速路径__alloc_pages_slowp

#操作系统
    共 20 条
  • 1
  • 2
  • 请选择