栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux学习总结

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux学习总结

        虽然工作中一直在写用户层代码,但也凭兴趣看下kernel代码,提高自己,毕竟懂得越多,对工作和业务了解、架构设计就越有帮助,而且很多东西看到最后都是借助kernel实现,所以掌握kernel也是非常必要。从业以来也陆陆续续看过,解决一些疑问,但没有记录,也没想的特别明白,现在有时间认真思考下,本文相当于十万个为什么,记录我对linux内核和驱动的一些学习。

内核概述

linux内核分为进程管理系统 、 内存管理系统 、 i/o管理系统 和文件管理系统四个子系统。

linux内核主要由哪几个部分组成:

Linux内核的主要模块分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,系统的初始化(引导)、系统调用

文件

    一切皆文件是linux的高级抽象,Linux中“一切皆文件”是什么意思? - 知乎

    之前面试的时候遇到过read的流程,当时自己的回答可能就是说系统调用陷入内核态啥的,没有描述更多的信息,那详细的读写流程是怎样的 从内核文件系统看文件读写过程 - 胡潇 - 博客园

      工作中可能出现多个线程同时读写相同文件的问题,多个线程同时读没有问题,如果存在写,那就可能存在问题了。

    系统调用

        系统调用是通过软件中断的方式进入内核。Linux 系统调用和中断(查漏补缺版)_A.iguodala的博客-CSDN博客_linux 系统调用 软中断

    虚拟文件系统     inode模块

        inode模块,管理一个具体的文件,是文件的唯一标识,一个文件对应一个inode。通过inode可以方便的找到文件在磁盘扇区的位置

    struct file结构体

     已经打开的文件对象由open系统调用在内核中创建,也叫文件句柄。打开文件列表模块中包含一个列表,每个列表表项是一个结构体struct file,结构体中的信息用来表示打开的一个文件的各种状态参数

    进程 vs 文件列表 vs Inode

    多个进程可以同时指向一个打开文件对象(文件列表表项),例如父进程和子进程间共享文件对象;一个进程可以多次打开一个文件,生成不同的文件描述符,每个文件描述符指向不同的文件列表表项。但是由于是同一个文件,inode唯一,所以这些文件列表表项都指向同一个inode。通过这样的方法实现文件共享(共享同一个磁盘文件)。

内存     内存布局

 Linux进程地址空间与进程内存布局详解 - 哔哩哔哩

     从大的方面来说,首先要有内核空间和用户空间的概念,它们都是虚拟地址,用户代码不能访问内核空间地址,但是内核是直接能访问用户空间地址的(但实际也不会直接访问,而是通过copy_from_user和copy_to_user接口,增加内存地址校验)。所有进程共享内核虚拟地址空间,每个进程有独立的用户虚拟地址空间,同一个线程组的用户线程共享用户虚拟地址空间。Linux内核机制总结内存管理之虚拟地址空间布局(九)_张衡天的博客-CSDN博客_内核虚拟地址空间

    malloc、vmalloc、kmalloc     

    用户程序使用的malloc是将物理地址映射到用户空间的虚拟地址,内核程序使用的vmalloc、kmalloc是将物理地址映射到内核空间的虚拟地址

世上最强最全Linux 内存总结(用户空间:malloc、内核空间:vmalloc kmalloc slab buddy )_小卷怡情的博客-CSDN博客_malloc和kmalloc的原理不同

    mmap

      内核和用户空间交互需要相互拷贝,mmap是将物理地址同时映射到内核和用户空间,实现零拷贝深入理解mmap 0拷贝技术_内核        

    dma-buf 

    这篇文章非常经典,介绍了dma buffer如何被CPU内核空间、CPU用户空间、DMA硬件使用、通过和file绑定实现进程间共享dma-buf 由浅入深(一) —— 最简单的 dma-buf 驱动程序_何小龙的博客-CSDN博客_dmabuf

    ION buffer 

    高通使用ION buffer实现dma buffer以高通camera 申请ion内存看dma-buf_checode的博客-CSDN博客

     SMMU

     SMMU全称System Memory Management Unit,其实SMMU和MMU具有同样的作用,区别是供使用DMA的外设使用,同样提供页表转换工作,外设可通过页表转换访问物理地址,达到devices设备和进程一样使用虚拟地址4.8.1 SMMU介绍(1)——背景&应用 - 知乎

     SMMU本质上就是一个MMU设备,它的内存转换逻辑与CPU的MMU采用相同的逻辑,都允许将物理上非连续的页虚拟为连续的内存页。SMMU和IOMMU可以交替使用。 

    关于MMU有个疑问就是,它是将VA->PA,那VA是怎么来的?应该就是虚拟内存管理技术生成的。

     高通camera SMMU  qcom camera smmu学习(1)_checode的博客-CSDN博客_camera smmu

这里面提到的IOVA是通过 gen_pool_alloc分配出来的,然后将IOVA和phys address传给SMMU建立起映射关系,那后面设备就可以使用IOVA了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号