`
highsky
  • 浏览: 275071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux核心数据结构--mem_map_t

阅读更多
用来保存每个物理页面的信息。

typedef struct page {
/* these must be first (free area handling) */
struct page        *next;

  struct page        *prev;

  struct inode       *inode;

  unsigned long      offset;

  struct page        *next_hash;

  atomic_t           count;

  unsigned           flags; 
   /* atomic flags, some possibly

                                   updated asynchronously */

  unsigned           dirty:16,

                     age:8;

  struct wait_queue  *wait;

  struct page        *prev_hash;

  struct buffer_head *buffers;

  unsigned long      swap_unlock_entry;

  unsigned long      map_nr;  
/* page->map_nr == page - mem_map */
} mem_map_t;

分享到:
评论

相关推荐

    Linux内核分析-内存篇

    为了有效地跟踪和管理物理内存页面,Linux内核使用了特定的数据结构: - **mem_map**:这是一个位于`memory.c`文件中定义的静态数组(`static unsigned char mem_map[PAGING_PAGES] = {0,};`),用于记录每一页物理...

    psb-bootinfo.rar_Linux/Unix编程_Unix_Linux_

    这个数据结构记录了系统内存的不同区域,包括可用内存、保留内存和预留内存等。`boot_mem_map`在内核早期阶段创建,用于后续内存分配策略的决策。它涉及到物理地址空间的管理和内存的初始化,比如内存检测、内存区域...

    linux数据结构[汇编].pdf

    9. **mem_map_t** 和 **mm_struct**:mem_map_t记录了内存中的物理页面信息,而mm_struct则描述了一个进程的虚拟内存布局。 10. **pci_bus** 和 **pci_dev**:这两个数据结构用于管理PCI总线和PCI设备,包括PCI-PCI...

    Linux虚拟存储技术的主要数据结构分析.pdf

    在物理内存管理方面,Linux内核使用mem_map_t结构来描述所有物理页面的信息,系统中的物理页面由一个mem_map_t类型的数组mem_map表示。该数组的每个元素对应物理内存的一个页面,数组大小由实际物理内存大小决定。...

    Linux内核内存池实现研究

    内存池的核心数据结构`mempool_t`包含了以下几个关键成员: - `spinlock_t lock`: 用于同步多个CPU对内存池的访问。 - `int min_nr`: 表示内存池中至少应该保持的可用对象数量。 - `int curr_nr`: 当前内存池中空闲...

    Code Commentary On The Linux Virtual Memory Manager

    启动映射是一种数据结构,用于记录系统启动时可用物理内存的分布情况。它是通过一系列位图来表示的,每个比特位对应一段固定大小的内存区域。例如,如果比特位为1,则表示该段内存是可用的;如果比特位为0,则表示...

    Linux DMA meory 及一致性简述.docx

    在MIPS平台上,`dma_alloc_coherent`函数从`__get_free_pages`获取内存,然后使用`plat_map_dma_mem`映射内存。如果设备不支持一致性,函数会执行`dma_cache_wback_inv`以刷新缓存,并使用`UNCAC_ADDR`转换地址。 ...

    Linux数据结构电子书.pdf

    《Linux数据结构》一书详尽地介绍了在Linux操作系统中使用的关键数据结构,这些数据结构是内核功能的基础。在Linux内核中,数据结构扮演着至关重要的角色,因为它们被用来组织和管理系统的资源,如文件、内存、设备...

    linux内存管理总结

    `struct page`数据结构表示每个物理页,并保存在全局数组`mem_map`中。 6. **内存分配和映射**: - 内存分配不仅涉及物理页面的分配,还包括虚拟地址空间的映射。Linux使用多种分配策略,如伙伴系统(Buddy System...

    linux 内存池 的实现原理 --- 论文

    Linux内存池的数据结构定义在`include/linux/mem_pool.h`文件中。其中,内存池的主要数据结构如下所示: ```c typedef struct mempool_s { spinlock_t lock; // 互斥锁 int min_nr; // elements 数组中的成员数量...

    Linux中进程创建和内存空间申请

    `move_to_user_mode()`确保了安全的权限切换,`mem_map`数组和相关数据结构则提供了精细的内存资源管理,使得系统能够高效地调度和分配内存,支持多进程并发执行。理解和掌握这些概念对于深入理解Linux操作系统至关...

    Linux 数据结构

    Linux操作系统的核心在于其内核,而内核的高效运行离不开一系列关键的数据结构。这些数据结构在Linux中扮演着至关重要的角色,它们是操作系统理解和管理硬件、文件系统、进程、网络等核心功能的基础。以下是根据标题...

    Linux数据结构电子书整理.pdf

    13. **mem_map_t**: 用于管理物理内存页,记录了内存页面的使用情况。 14. **mm_struct**: 代表进程的虚拟内存管理,包含进程的地址空间信息。 15. **pci_bus**: 表示系统中的PCI总线,管理连接在PCI总线上的设备...

    Linux设备驱动之mmap设备操作

    void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); ``` **参数说明**: - **addr**:表示映射起始地址。通常设置为 NULL,此时由操作系统自动选择一个合适的起始地址。 - **len**...

    armlinux的bootmem分配器

    4. `NODE_DATA(node)`返回对应节点的数据结构`pg_data_t`,这是管理节点内存的核心数据结构,后续的内存操作会频繁用到它。 5. `init_bootmem_node`是创建bootmem分配器的关键步骤。它会设置bootmem分配器的数据...

    uclinux内核的存储管理_v0.2.pdf

    ### uCLinux内核的存储管理 ...综上所述,uCLinux内核的存储管理机制复杂而高效,通过精细的数据结构设计和算法优化,能够在资源受限的环境下提供强大的内存管理能力。这对于嵌入式系统开发来说是非常重要的。

    Linux内核DMA机制

    为了满足这一需求,Linux内核在引导时会预先保留一部分物理RAM作为DMA缓冲区,可以通过传递"MEM="参数来控制这部分内存的大小。 #### 分配DMA空间 在Linux内核中,分配DMA空间通常通过调用`kmalloc()`函数实现,...

    linuxvm.pdf

    Linux维护一个全局数组`mem_map`,其中包含系统中每个物理页面的条目。每个条目都是一个`page`结构体,包含了页面的各种属性,例如引用计数(`refcount`)、地址空间索引(`addrspace index`)、标志(`flags`)以及...

Global site tag (gtag.js) - Google Analytics