- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
原来是全局的hash表,现改为以address_space(文件、设备、共享段等)为单位建立radix tree,由find_get_page()在树中查找页面。 取消原核心线程bdflash和kupdated,增加多个pdflush(每个设备一个)进行page刷新:在空闲页帧低于某阈值及定时激活pdflush。 第十七章 页swap out与页帧回收 系统必须随时确保有一定量的空闲页帧供申请使用。 可回收页帧: page cache中的未用页; 各种存储对象caches中的空闲页(如:umount时释放许多dentry和inode存储对象空间,相应存储对象cache空闲页增多); 进程用户空间memory region(以及多进程共享region)所占页,但这些页被swap out后才可回收。这些页在page cache中。 mmap的进程共享页面如何swap out? 由kswapd线程或申请页帧无空闲页帧时调用swap_out(),扫描各进程的各个region决定swap out的页面。Kswapd激活kpiod进行dirty页回写. 2.6改进:内核在物理页面描述符page结构中添加一个匿名union成员,该成员用来追踪所有映射到该物理页面的各进程页表对象,称之为反向映射。利用该结构,可以通过扫描物理页快速swap out共享页) 图表示匿名页反向映射。与文件相关的页反向映射到文件address_space结构中连接所有共享及私有映射区的树根(由i_mmap指出) 算法考虑 回收前需确保页帧数据没在使用(正在I/O、被页表项引用等)且磁盘有副本,或页帧内容已无用; 采用LRU回收策略,明确最近最少使用; 定位回收页帧应该快速(2.4后在每个zone引入inactive和active页队列,分散确定inactive页,只回收inactive 页); 应仔细权衡各种用途页帧回收次序。 页帧回收时机 当申请free页帧发现页帧很少时; 定时运行的kswapd发现free页帧数到下限时。 讨论页面swap out、页面刷新及页帧回收的区别 2.? read()/writer()系统调用实现 由sys_read()/sys_writer()实现,大致过程: 由fd获得file结构; 判是否符合file结构中说明的操作; 检查是否要访问的文件数据区域已加锁; 如果是写,则申请i_sem锁,保证串行处理对同一个文件写操作,但多进程对同一文件的多个写系统调用可交叉。 调用file-f_op-read()/file-f_op- write()进行数据传输,(通常是调generic_file_read()/ generic_file_write())。同时file结构中的当前读写指针被修改; 返回实际传输Byte 。 3.close()系统调用 open()的逆过程。 第七讲 访问普通文件处理 缓存实现技术 页面swap out与页帧回收 第十五章??访问普通文件 read/writer系统调用方法 Canonical mode(常规) Synchronous mode(写穿透) Asynchronous mode (异步) Direct I/O mode (不经过缓冲) mmap系统调用方法 ? ?15.1 读写一个普通文件 read/write系统调用处理中都会按file结构中f_op指向的操作表,调用表中对应函数。 大部分文件系统Driver提供的读写函数为: generic_file_read(); generic_file_write(); 按照要读写的起始Byte和Byte个数,循环地按页读写。 generic_file_read()循环处理所涉及页: 在page cache中查找; 如果page cache中没有,则分配新空闲页帧,插入page cache,将页锁住,调用操作表readpage方法读入(将页帧使用计数+1,…;计算要传输的文件数据页号,调bmap方法将其页号转化为相对文件分区的设备块号;生成“I/O”请求); 请求预读后续文件数据到page cache; 调wait_on_page()等I/O完成; 将page中数据拷入用户空间(调用_ _copy_to_user( )); 最后修改file结构中有关下次读/写指针,修改inode中的访问时间域,并说明inode 已经dirty。 注意: 2.4版后原普通文件inode_operations操作表中与普通文件页面读写相关的readpage和bmap等方法改放到address_space_operations, 内存inode的address_space子结构中a_ops指向
您可能关注的文档
最近下载
- 幼儿园接送免责协议书范本(2025版).docx VIP
- 2025年最新人教版八年级(初二)数学上册教学计划及进度表(新课标,新教材).docx
- 静脉输液护理创新案例演讲ppt.pptx
- 3.1水循环课件(共22张PPT).pptx VIP
- 国际学校中方教职员工薪酬设计方案.pdf
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 2025-2026学年岭美版(2024)小学美术二年级上册教学计划及进度表.docx
- 《放射性肠炎》课件:放射性治疗后的肠道并发症.ppt VIP
- 科力达kts-440系列全站仪说明书.pptx
- 昌平区流研所路百善六号路原规划一路百沙路工程环评报告.pdf VIP
文档评论(0)