`
waterlife
  • 浏览: 67882 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux内核之外设存贮空间的地址映射

阅读更多

Linux对于外设的访问一般有两种方式:一种叫内存映射,另一种叫I/O映射。随着外设的寄存器和自身存贮空间的增加,采用第二种方式已经远远不能满足外设的需要。Linux看到的外设的地址都是总线地址,相应的存贮空间都在系统空间(3GB以上)。

 

内核为自己保持一个虚存区间队列vmlist,这是由一串vm_struct数据结构组成的一个单链队列。相似于供进程使用的vm_area_struct结构。

struct vm_struct {
	unsigned long flags;
	void * addr;
	unsigned long size;
	struct vm_struct * next;
};

 

内核使用的虚拟地址与物理地址存在一种简单的映射关系,只要在物理地址上加上3G的偏移量就可以得到虚拟地址。high_memory就是对应具体物理内存的上限所对应的虚拟地址。内核需要分配虚存空间的时候,就从这个地址加8MB处分配。

 

每个进程都有一个mm_struct结构,从中可以找到相应的页面目录。但是,内核不属于一个特定的进程,所以设置了一个内核单独的init_mm。

 

另外,kswapd根本看不到init_mm的虚存空间,这些空间会常驻内存。

 

 

分享到:
评论

相关推荐

    嵌入式Linux内核的虚拟地址空间映射的实现.pdf

    嵌入式Linux内核的虚拟地址空间映射的实现 在嵌入式Linux系统中,虚拟地址空间映射是指将物理地址空间映射到虚拟地址空间的过程,这个过程需要硬件和软件的支持。本文将从硬件和软件的角度分析虚拟地址空间映射的...

    Linux内核地址映射机制分析及实现.pdf

    Linux内核通过这些硬件特性构建了一套复杂的地址映射机制,包括页表的管理、地址空间的组织、内存权限控制等。 页式存储管理是Linux内核广泛采用的方法,它将内存划分为固定大小的页,每个进程有自己的页表,记录...

    深入理解linux内核(3)第9章.进程地址空间

    进程地址空间"这一章节,将带你深入探讨Linux内核如何组织和管理进程的虚拟地址空间,这是理解Linux系统性能和调试关键问题的基础。 首先,我们需要了解的是,每个进程都有其独立的地址空间,这是进程隔离的一个...

    linux内核设计与实现 第三版_linux内核设计_

    虚拟内存系统使得每个进程都拥有独立的地址空间,通过页表映射实现物理内存的动态分配和回收。此外,内核还实现了内存交换机制,当物理内存不足时,可以将不活跃的页换出到磁盘上的交换分区。 文件系统是Linux内核...

    Linux内核设计的艺术

    4. 内存管理:Linux内核负责管理物理和虚拟内存,包括内存的分配、回收、共享、映射等,确保系统运行稳定。 5. 文件系统:Linux支持多种文件系统,如ext4、XFS、Btrfs等。文件系统的设计对于数据的组织、访问和存储...

    linux内核图解-linux内核图解

    Linux内核采用虚拟内存技术,使得每个进程都有独立的4GB(32位系统)或128GB(64位系统)地址空间。页表机制将虚拟地址转换为物理地址,同时通过页面缓存和交换机制优化内存使用。 4. 文件系统 Linux支持多种文件...

    linux内核完全注释,linux内核

    4. **文件系统**:Linux内核中的文件系统是管理数据存储的关键部分。它涵盖了文件的创建、打开、读写、关闭等操作,以及目录结构的维护。理解文件系统的工作原理对于系统管理员和开发者都十分必要。 5. **网络协议...

    深入理解Linux内核

    内存管理则确保内存资源被有效利用,Linux内核实现了虚拟内存管理,使得每个进程拥有自己的虚拟地址空间,可以访问比实际物理内存更大的地址范围。虚拟内存管理通过页表、换页算法、内存映射等机制,为进程提供连续...

    linux内核源代码情景分析 pdf版 高清

    再者,内存管理部分讲解了Linux内核如何有效地分配和回收内存,包括物理内存的分配、虚拟地址空间的映射、页表的管理和交换机制。这些内容对于优化系统性能和解决内存泄漏问题至关重要。 然后,设备驱动章节则深入...

    深度剖析linux内核

    在IT领域,Linux内核是操作系统的核心,负责管理和协调计算机硬件资源,为用户空间的应用程序提供服务。本篇文章将深入探讨“深度剖析Linux内核”这一主题,涵盖内核启动流程、内核组成部分、进程调度、内存管理和...

    linux内核分析 0.11版内核完全注释

    这包括内存的分页机制、地址空间布局、内存碎片问题以及 slab 分配器等。 文件系统是操作系统与数据存储交互的关键,书中会深入讨论VFS(虚拟文件系统)层的设计,它为不同的具体文件系统提供了一致的接口。此外,...

    linux内核解析笔记

    它采用了分页技术将物理内存划分为固定大小的块(页),通过页表进行地址转换,实现了虚拟地址到物理地址的映射。 2. **进程管理**:内核管理进程的创建、销毁、调度和同步。它使用调度算法来决定哪个进程应获得CPU...

    深入研究Linux内核

    Linux内核采用分页内存管理系统,将物理内存划分为固定大小的页,并通过虚拟地址映射到物理地址。内核还包含内存分配器(如slab分配器),用于高效地管理内存碎片和内存分配。 四、文件系统 文件系统是Linux内核...

    LINUX内核设计与实现(第2版)

    2. **内存管理**:Linux内核采用虚拟内存技术,将物理内存抽象为逻辑地址空间,使得程序可以在更大的地址空间中运行。内存管理包括页面分配、页面回收、内存映射等功能,这些功能确保了系统的稳定性和效率。 3. **...

    Linux内核代码及解析

    文件系统是Linux内核中用于组织和存储数据的部分。Linux支持多种文件系统,如EXT2、EXT3、EXT4、Btrfs等。文件系统的任务包括文件的创建、删除、读写、权限控制等。VFS(虚拟文件系统)层提供了一致的接口,使内核...

    Linux内核笔试经典30题(带答案)

    以32位系统为例,Linux的内核空间和用户空间是通过虚拟地址空间来划分的。 8. vmalloc()申请的内存有什么特点?vmalloc申请的内存是一块非连续的物理内存,然后把获取到的这些页映射成连续的虚拟地址。 9. 用户...

    Linux内核高级编程

    再者,文件系统是Linux内核中不可或缺的一部分,它负责管理和存储文件。书中会讲解文件系统的层次结构、VFS(虚拟文件系统)接口,以及文件操作的实现。开发者将学习如何挂载、卸载文件系统,以及如何编写自定义的...

    电子科技大学linux内核课程课件:LINUX内核技术(第1份共2份)

    **电子科技大学Linux内核课程课件详解** 在深入学习Linux内核技术的道路上,电子科技大学提供的这门研究生课程课件是一份宝贵的资源。基于Robert Love的著作,这套课件为学生和自学者提供了全面而深入的Linux内核...

Global site tag (gtag.js) - Google Analytics