Linux内核对于内存的管理摒弃了i386复杂的段式管理,而是采用了页式管理。Linux把整个的物理内存空间化为成一个个单独的页面,每页占4K空间大小。Linux把所有页面链接到一个全局的数组mem_map[]中,mem_map的每一个元素都是一个指针指向page数据结构。系统中的每个物理页面都对应着一个page数据结构,并根据需要把这些页面划分为不同的管理区:ZONE_DMA,ZONE_NORMAL和ZONE_HIGHMEM(用于物理内存超过1G空间的地址)。
typedef struct page {
struct list_head list; /* ->mapping has some page lists. */
struct address_space *mapping; /* The inode (or ...) we belong to. */
unsigned long index; /* Our offset within mapping. */
struct page *next_hash; /* Next page sharing our hash bucket in
the pagecache hash table. */
atomic_t count; /* Usage count, see below. */
unsigned long flags; /* atomic flags, some possibly
updated asynchronously */
struct list_head lru; /* Pageout list, eg. active_list;
protected by pagemap_lru_lock !! */
struct page **pprev_hash; /* Complement to *next_hash. */
struct buffer_head * buffers; /* Buffer maps us to a disk block. */
/*
* On machines where all RAM is mapped into kernel address space,
* we can simply calculate the virtual address. On machines with
* highmem some memory is mapped into kernel virtual memory
* dynamically, so we need a place to store that address.
* Note that this field could be 16 bits on x86 ... ;)
*
* Architectures with slow multiplication can define
* WANT_PAGE_VIRTUAL in asm/page.h
*/
#if defined(CONFIG_HIGHMEM) || defined(WANT_PAGE_VIRTUAL)
void *virtual; /* Kernel virtual address (NULL if
not kmapped, ie. highmem) */
#endif /* CONFIG_HIGMEM || WANT_PAGE_VIRTUAL */
} mem_map_t;
DMA管理区是单独进行管理的,不经过MMU映射,而一般的外设都对地址空间有一定的限制。地址空间不能太大,而且要求地址连续。
每个管理区都对应着一个zone_struct结构,这个结构体中有一组空闲队列free_area_t。这些队列中要有一个队列保持一些离散的物理页面,另一个队列要保持长度为2的指数的连续物理页面。
typedef struct zone_struct {
/*
* Commonly accessed fields:
*/
spinlock_t lock;
unsigned long free_pages;
unsigned long pages_min, pages_low, pages_high;
int need_balance;
/*
* free areas of different sizes
*/
free_area_t free_area[MAX_ORDER];
/*
* wait_table -- the array holding the hash table
* wait_table_size -- the size of the hash table array
* wait_table_shift -- wait_table_size
* == BITS_PER_LONG (1 << wait_table_bits)
*
* The purpose of all these is to keep track of the people
* waiting for a page to become available and make them
* runnable again when possible. The trouble is that this
* consumes a lot of space, especially when so few things
* wait on pages at a given time. So instead of using
* per-page waitqueues, we use a waitqueue hash table.
*
* The bucket discipline is to sleep on the same queue when
* colliding and wake all in that wait queue when removing.
* When something wakes, it must check to be sure its page is
* truly available, a la thundering herd. The cost of a
* collision is great, but given the expected load of the
* table, they should be so rare as to be outweighed by the
* benefits from the saved space.
*
* __wait_on_page() and unlock_page() in mm/filemap.c, are the
* primary users of these fields, and in mm/page_alloc.c
* free_area_init_core() performs the initialization of them.
*/
wait_queue_head_t * wait_table;
unsigned long wait_table_size;
unsigned long wait_table_shift;
/*
* Discontig memory support fields.
*/
struct pglist_data *zone_pgdat;
struct page *zone_mem_map;
unsigned long zone_start_paddr;
unsigned long zone_start_mapnr;
/*
* rarely used fields:
*/
char *name;
unsigned long size;
} zone_t;
分享到:
相关推荐
matlab
操作系统课程设计基于C++实现的操作系统仿真虚拟页式存储管理项目源代码
内容概要:本文详细介绍了西门子S7-1500 PLC与V90伺服在定长切断应用中的具体实现方法和技术要点。首先,文章展示了如何利用TIA Portal V16平台配置工艺对象“CuttingAxis”,并解释了关键参数如每转脉冲数、丝杆导程、减速比等的作用。接着,针对可能出现的问题,如轴运行抖动、控制字状态丢失等进行了深入探讨,并提供了相应的解决措施,比如调整前馈参数、修改报文配置等。此外,还分享了一些提高系统性能的小技巧,例如启用动态限制选项、优化速度前馈与位置环配合等。最后,强调了该方案在包装机械和线材加工领域的广泛应用前景及其优势所在。 适合人群:从事工业自动化相关工作的工程师和技术人员,尤其是那些希望深入了解和掌握西门子PLC与伺服系统集成应用的专业人士。 使用场景及目标:适用于需要实现高精度定长切断操作的企业或项目,旨在帮助用户构建稳定可靠的控制系统,确保生产效率和产品质量。 其他说明:文中不仅涵盖了理论知识讲解,还包括大量实际案例分析以及代码示例,便于读者更好地理解和应用所学内容。同时提醒读者关注硬件配置、软件编程、参数调节等多个方面,以达到最佳效果。
2023年计算机二级Office选择题考前模拟.docx
目前可以新建目录,具体自己看代码
基于SpringBoot网上超市,系统包含两种角色:用户、管理员,系统分为前台和后台两大模块,主要功能如下: 1 管理员功能实现 商品信息管理 管理员可以通过提交商品名称查询商品,并查看该商品的用户评论信息。 用户管理 管理员通过提交用户名来获取用户资料,对有异常情况的用户信息进行修改,并可以详细查看用户资料。 商品评价管理 管理员审核用户对商品的评价,经过审核的评价才会显示,并可以统计商品评价信息。 已支付订单 管理员查看已支付的订单,并逐个进行订单发货。 2 用户功能实现 商品信息 用户可以收藏、立即购买商品,或对商品进行评价,同时将商品添加到购物车。 购物车 用户可以直接下单购买购物车中的商品,或删除购物车中的商品。 确认下单 用户选择地址,查看支付金额信息,以确认订单之前的所有细节。 已支付订单 用户查看已支付的订单,若对购买商品产生后悔,可以申请退款。 二、项目技术 开发语言:Java 数据库:MySQL 项目管理工具:Maven Web应用服务器:Tomcat 前端技术:Vue、 后端技术:SpringBoot框架 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上版本都可以 开发工具:IDEA、Ecplise都可以 数据库: MySQL 5.7/8.0版本均可 Tomcat:7.x、8.x、9.x版本均可 Maven:任意版本都可以
1_媒工十佳决赛RUNDOWN 2.xlsx
c#联合opencvsharp开发的视觉源码程序 包含模板匹配,找线找圆,预处理等功能 全部源码,包含图像显示控件,绘制roi
基于STC89C52单片机的信号发生器20172086102何雨莉_3.zip
2023年西南大学网络与继续教育学院楼宇自动化作业答案.docx
内容概要:本文详细介绍了基于SpringBoot和Vue构建的智慧养老手表管理系统的关键技术和实现细节。系统主要由家长和养老院管理员两种角色组成,家长可以通过智能手表实时查看老人的健康数据,而管理员则可以进行更全面的数据管理和权限控制。文中重点讨论了家庭树功能的实现,包括使用MyBatis的动态SQL处理复杂的家庭关系查询,以及前端用Vue的el-tree组件展示家庭树结构。健康数据监控方面,系统利用SpringBoot的@Scheduled定时任务生成日报,并通过ECharts进行数据可视化。此外,还涉及了权限控制、加好友功能、熔断机制等多个方面的技术实现。 适合人群:具有一定编程经验的开发者,尤其是熟悉SpringBoot和Vue框架的工程师。 使用场景及目标:适用于开发类似智慧养老系统的项目,旨在提高老年人健康管理的效率和安全性。目标是通过智能手表实时监测老人健康状况,提供及时的健康报告和预警,同时确保系统的稳定性和安全性。 其他说明:文中提到的技术细节对于理解和实现类似的前后端分离架构非常有帮助,特别是关于MySQL 5.7的使用和优化,以及如何处理第三方设备接口的不稳定问题。
2023年计算机二级资料.doc
2023年电大数据结构形成性考核册.doc
网络工程师易错100题 2025年
2023年电子商务技能竞赛方案.doc
2024年大数据软件项目深度研究分析报告.docx
内容概要:本文详细介绍了利用Matlab/Simulink构建输电线路单相接地故障测距模型的方法。首先,通过建立110kV输电线路的Simulink模型,采用Bergeron模型作为线路参数。接着,利用小波变换提取故障行波的模极大值点,结合凯伦布尔变换消除工频分量,从而精确计算故障位置。文中提供了详细的代码实现步骤,包括信号预处理、小波分解、模极大值检测以及时间差计算等。此外,还讨论了常见调试经验和避坑指南,如采样率设置、接地电阻限制等。最后,通过多个测试案例验证了模型的有效性和准确性。 适合人群:从事电力系统故障诊断的研究人员和技术人员,尤其是对小波变换和凯伦布尔变换感兴趣的工程师。 使用场景及目标:适用于输电线路单相接地故障的精确定位,旨在提高电力系统的可靠性和维护效率。通过掌握本文提供的方法,技术人员能够快速准确地找到故障点,减少停电时间和维修成本。 其他说明:本文不仅提供了理论解释,还包括具体的代码实现和调试建议,有助于读者更好地理解和应用所学知识。
内容概要:本文详细介绍了基于牛拉法的含分布式电源(如风能和太阳能)的IEEE33节点配电网潮流计算程序。首先解释了分布式电源的节点类型转换,将光伏处理为PQ节点,风机处理为PV节点。接着阐述了导纳矩阵的构建方法及其对分布式电源的影响,特别是变压器分接头的处理。然后深入探讨了牛拉法的核心迭代过程,包括功率不平衡量的计算、雅可比矩阵的构建以及修正方程的求解。此外,文章还讨论了风光出力波动的处理方法,并分享了一些常见的陷阱及解决方案,如PV节点振荡、孤岛检测和并行计算优化。最后,通过具体实例展示了程序的运行结果,强调了分布式电源接入位置的重要性。 适合人群:从事电力系统仿真、配电网规划与设计的研究人员和技术人员。 使用场景及目标:适用于研究分布式电源对接入配电网的影响,帮助理解和优化含分布式电源的配电网运行特性,提高潮流计算的准确性。 其他说明:文中提供了详细的代码片段和实践经验,有助于读者更好地理解和应用相关理论和技术。同时,文章指出了实际应用中的一些注意事项,如节点类型切换、变压器变比处理等,使读者能够避免常见错误。
单片机最小工作系统构建概述.pptx
2023年全国计算机二级c语言考试真题详细解答系列一.doc