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

Linux驱动之PCI子系统剖析

PCI总线常见于x86体系,本文默认面向的体系为x86,注意x86架构下IO与内存是独立编址的。 附: 本文默认读者熟悉Linux设备驱动模型,不熟悉的可以先阅读这两篇blog。...Linux驱动之I2C子系统剖析 Linux驱动之SPI子系统剖析 PCI寻址 PCI系统总体布局组织为树状,从CPU连接的Host Bridge引出PCI主桥,主桥连接的是PCI总线0,可以直接连接PCI...设备,或者再挂上PCI桥引出下一级PCI总线。...Linux内核启动时会从PCI设备的配置寄存器里读取内存/IO起始地址以及irq,并把这些信息赋值给struct pci_dev的相应成员来生成软件描述的PCI设备。...当linux系统启动时,会探测系统中的所有PCI设备,并为探测到的每个PCI设备做如下操作: 1.分配一个struct pci_dev结构体,用来表示相应的PCI设备 2.为这个结构体填充设备vendor

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

详解Linux内核内存管理架构

内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求...本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理的软硬件架构做一些宏观上的分析总结。...内存管理硬件架构 因为内存管理是内核最为核心的一个功能,针对内存管理性能优化,除了软件优化,硬件架构也做了很多的优化设计。下图是一个目前主流处理器上的存储器层次结构设计方案。 ?...linux的内存映射管理是通过页表来实现的,但是页表是放在内存中的,如果每次地址转换过程都需要访问一次内存,其效率是十分低下的。这里CPU通过TLB硬件单元来加速地址转换。...内存管理软件架构 内核内存管理的核心工作就是内存的分配回收管理,其内部分为2个体系:页管理和对象管理。

3K42

Linux PCI驱动程序之MSI-X实现分析

由于实在找不到MSI-X在x86上实现的教程或文档,只能分析LinuxPCI驱动程序了。希望能得到一些启发。...本文基于linux 5.17.5进行分析 __pci_enable_msix_range static int __pci_enable_msix_range(struct pci_dev *dev,...后面会把描述符交给具体的arch相关的函数去处理,他们读取这个描述符和dev header的内容,就可以去构造与具体体系架构相关的msi-x地址和msi-x数据。...arch_setup_msi_irqs 该方法位于pci/msi/legacy.c中,它会去真正调用每个体系结构的处理器特有的arch_setup_msi_irq方法,真正的生成与具体体系架构相关的msi-x...并且也实现了系统其他模块所需要的中断的信息与具体的处理器架构的解耦。这样的一个抽象,可以减少将来不同架构之间的移植所耗费的时间。

4.1K20

深入理解Linux Kernel内核整体架构(图文详解)

一,前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。...注:本文和其它的“Linux内核分析”文章都基于如下约定:a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维护至少2年)。...b) 鉴于嵌入式系统大多使用ARM处理器,因此涉及到体系结构部分的内容,都以ARM为分析对象二,Linux内核的核心功能如下图所示,Linux内核只是Linux操作系统一部分。...所以为了管理这些设备,Linux内核提出了如下的架构。三,Linux内核的整体架构3.1 整体架构和子系统划分 上图说明了Linux内核的整体架构。...四,Linux内核源代码的目录结构Linux内核源代码包括三个主要部分: 1. 内核核心代码,包括第3章所描述的各个子系统和子模块,以及其它的支撑子系统,例如电源管理、Linux初始化等 2.

1.8K20

Linux架构

我以下图为基础,说明Linux架构(architecture)。...还记得Linux启动。Linux首先启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。...为了方便调用内核,Linux将内核的功能接口制作成系统调用(system call)。系统调用看起来就像C语言的函数。你可以在程序中直接调用。Linux系统有两百多个这样的系统调用。...可以在架构图中看到,shell下通系统调用,上通各种应用,同时还有许多自身的小工具可以使用。Shell脚本可以在寥寥数行中,实现复杂的功能。 UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。...总结  Linux利用内核实现软硬件的对话。 通过系统调用的这个接口,Linux将上层的应用与下层的内核分离,隐藏了底层的复杂性,也提高了上层应用的可移植性。

1.9K111

Linux架构

还记得Linux启动。Linux首先启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。...为了方便调用内核,Linux将内核的功能接口制作成系统调用(system call)。系统调用看起来就像C语言的函数。你可以在程序中直接调用。Linux系统有两百多个这样的系统调用。...Linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能。上面的分配内存的操作,可以定义成一个库函数(像malloc()这样的函数)。...可以在架构图中看到,shell下通系统调用,上通各种应用,同时还有许多自身的小工具可以使用。Shell脚本可以在寥寥数行中,实现复杂的功能。 UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。...总结  Linux利用内核实现软硬件的对话。 通过系统调用的这个接口,Linux将上层的应用与下层的内核分离,隐藏了底层的复杂性,也提高了上层应用的可移植性。

84720

MPP架构详解_大数据中心架构详解

Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量。...大规模并行处理(MPP)架构 例子 Greenplum是一种基于PostgreSQL的分布式数据库。...其采用shared nothing架构(MPP),主机,操作系统,内存,存储都是自我控制的,不存在共享。也就是每个节点都是一个单独的数据库。节点之间的信息交互是通过节点互联网络实现。...,遇到后整个engine的性能下降到该straggler的能力,所谓木桶的短板,这也是为什么MPP架构不适合异构的机器,要求各节点配置一样。...Spark SQL应该还是算做Batching Processing, 中间计算结果需要落地到磁盘,所以查询效率没有MPP架构的引擎(如Impala)高。

2.2K10

深度:一文看懂Linux内核!Linux内核架构和工作原理详解

图2 Linux内核体系结构 Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。...,用户的应用程序,C库 (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码 ?...打好了基础,PCI、USB、TTY驱动,块设备驱动,网卡驱动,需要了解和学习的东西就比较有针对性了。...书上介绍这些子系统的设计和实现的时候,我们读过了,也就知道了,如果再深入考虑一下,为什么整体架构要按照这种方式组织,为什么局部函数要遵循这样的步骤处理,知其然,知其所以然,如果你知道了某个功能的实现是因为芯片就是这么设计的...再深究,就是芯片架构方面的设计与实现,对于程序员来讲,无论是系统还是应用程序员,足迹探究到这里,已经解决了很多疑问,因为我们的工作性质偏软,而这些东西实在是够硬。

2.4K21

深度:一文看懂Linux内核!Linux内核架构和工作原理详解

Linux内核体系结构 Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。.../linux/arch 中找到。 如果 Linux 内核的可移植性和效率还不够好,Linux 还提供了其他一些特性,它们无法划分到上面的分类中。...Linux体系结构和内核结构的区别 1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了...,用户的应用程序,C库; (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码。...4.Linux的内核结构(注意区分Linux体系结构和Linux内核结构) Linux驱动的platform机制 Linux的这种platform driver机制和传统的device_driver机制相比

1.4K30

深度:一文看懂Linux内核!Linux内核架构和工作原理详解

图2 Linux内核体系结构 Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。...,用户的应用程序,C库 (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码 2.Linux体系结构要分成用户空间和内核空间的原因: 1)现代CPU通常都实现了不同的工作模式, 以ARM...打好了基础,PCI、USB、TTY驱动,块设备驱动,网卡驱动,需要了解和学习的东西就比较有针对性了。...书上介绍这些子系统的设计和实现的时候,我们读过了,也就知道了,如果再深入考虑一下,为什么整体架构要按照这种方式组织,为什么局部函数要遵循这样的步骤处理,知其然,知其所以然,如果你知道了某个功能的实现是因为芯片就是这么设计的...再深究,就是芯片架构方面的设计与实现,对于程序员来讲,无论是系统还是应用程序员,足迹探究到这里,已经解决了很多疑问,因为我们的工作性质偏软,而这些东西实在是够硬。

1.2K21

RESTful 架构详解

他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。"...如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。...2. 4 资源的链接 我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。...本文从资源的定义、获取、表述、关联、状态变迁等角度, 试图快速理解RESTful架构背后的概念。...RESTful架构与传统的RPC、SOAP等方式在理念上有很大的不同,希望本文能对各位理解REST有所帮助。

94120

详解“洋葱架构

洋葱架构实现了这一概念,并极大地改善了代码的品质,降低了复杂性,并且支持不断发展的企业系统。 为什么要用洋葱架构? 领域实体是核心和中心部分。...洋葱架构是建立在一个领域模型上的,其中各层是通过接口连接的。其背后的思想是,在领域实体和业务规则构成架构的核心部分时,尽可能将外部依赖性保持在外。 它提供了灵活、可持续和可移植的架构。...洋葱架构层 让我们通过一个创建订单的用例来了解架构的不同层和它们的职责。...总    结 洋葱架构在开始时可能似乎有些困难,但是在业界已经得到了普遍的认可。这是一种让软件易于演进的强有力架构。通过把应用划分为几层,可以使系统更加易于测试、维护和移植。...与其他架构风格类似,如六边形、分层、简洁的架构等,它为常见问题提供了一个解决方案。 作者简介: Ritesh Kapoor,软件工程师,热衷于研究算法、架构设计、敏捷方法。

44020

MySQL架构详解

---title: MySQL架构详解 tag: MySQL excerpt: 了解 MySQL 的架构是使用 MySQL的重要前提。 --- 1....基础架构 图片 第一层:连接层 负责与 MySQL 客户端之间的通信,提供如连接处理,身份验证等功能。 第二层:核心服务层 通常叫做 SQL Layer。...就像 Linux 众多的文件系统 一样。每个存储引擎都有自己的优点和缺陷。服务器是通过存储引擎 API 来与它们交互的。这个接口隐藏了各个存储引擎不同的地方。对于查询层尽可能的透明。...MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎开发者都可以按照自己的意愿来进行开发

2K21

架构原则详解

定义架构原则 一般架构原则是由企业架构师和一些企业关键人物定义,然后由架构委员会进行同意后制度发布。原则应该可被追踪,并且能清晰的表达人员做出决策依据。...定义企业架构原则一般受以下因素影响: 企业的使命和愿景: 企业的战略计划:企业的优势,劣势,机会和威胁。...一些示例 架构原则 基于标准的方法来做,如使用TOGAF架构方法 说不清的不做 没有上层持久推动的不做 达不成意见一致的不做 业务原则 企业利益最大化 业务持久性 对业务发展有长远规划,不能只考虑近期实现范围...业务通用性, 业务是否可以作为一个公用业务架构 业务一致性 合法 数据原则 数据价值性 > 数据正确性 > 数据完整性 数据积累分析需要规范化数据 数据是安全的 数据不只是可以共享的数据,还包含业务规则和策略

75545

架构详解 Nginx 架构

Nginx 在激烈的 Web 服务器竞争中依旧保持良好的发展势头,一度成为 Web 服务器市场的后期之秀,这一切跟 Nginx 的架构设计是分不开的。 一....Nginx 模块化设计 高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。 ?...Nginx 设计架构 Nginx 服务器使用 master/worker 多进程模式。...总结 通过这篇文章,我们对 Nginx 服务器的整体架构有了一个整体的认识。包括其模块化的设计、 多进程和异步非阻塞的请求处理方式、事件驱动模型等。...本文转自开源中国,原文出自:架构详解: Nginx架构

62620
领券