kernel部分数据结构列表一(内存管理)


所属类别:Linux

文章作者:liuweni

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


/** 内核中用page结构表示系统中每个物理页,结构位于linux/mm.h*/struct page {

page_flags_t

flags;

atomic_t

_count;

atomic_t

_mapcount;

unsigned long

private;

struct address_space

*mapping;

pgoff_t

index;

struct list_head

lru;

void

*virtual;};/** 系统的页被划分为区,每个区用struct zone表示,定义在linux/mmzone.h*/struct zone {

spinlock_t

lock;

unsigned long

free_pages;

unsigned long

pages_min;

unsigned long

pages_low;

unsigned long

pages_high;

unsigned long

protection[MAX_NR_ZONES];

spinlock_t

lru_lock;

struct list_head

active_list;

struct list_head

inactive_list;

unsigned long

nr_scan_active;

unsigned long

nr_scan_inactive;

unsigned long

nr_active;

unsigned long

nr_inactive;

int

all_unreclaimable;

unsigned long

pages_scanned;

int

temp_priority;

int

prev_priority;

struct free_area

free_area[MAX_ORDER];

wait_queue_head_t

*wait_table;

unsigned long

wait_table_size;

unsigned long

wait_table_bits;

struct per_cpu_pageset

pageset[NR_CPUS];

struct pglist_data

*zone_pgdat;

struct page

*zone_mem_map;

unsigned long

zone_start_pfn;

char

*name;

unsigned long

spanned_pages;

unsigned long

present_pages;};/**slab描述符strcut slab用来描述每个slab*/struct slab {

struct list_head

list;

/* 满,部分满或者空链表*/

unsigned long

colouroff;

/* slab着色的偏移量 */

void

*s_mem;

/* 在slab中的第一个对象 */

unsigned int

inuse;

/* 已经分配的对象数 */

kmem_bufctl_t

free;

/* 第一个空闲对象,假如有的话 */};

相关信息

· 网络程序设计中的模块化思维

·  视频: 猫和老鼠真实版

· IPC经典入侵 比3389实用

· 用TreeView构建树型目录(C








....

87422 85182