中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2009

Slides:



Advertisements
Similar presentations
国家税务总局关于修改企业所得税年度纳税申报表( A 类, 2014 年版) 部分申报表的公告(国家税务总局公告 2016 年第 3 号) 一、对《企业基础信息表》( A )及填报说明修改如下: (一) “107 从事国家非限制和禁止行业 ” 修改为 “107 从事国家限制或禁止行业 ”
Advertisements

公文处理常见问题分析 2015 年 9 月. Page  2 目 录 公文的定义 1 公文格式和行文规则中常见问题 2 常用文种的注意事项 3 公文写作的步骤方法 4.
教师队伍建设 组员:王英利 赵香媖 侯娟. 主讲内容 2. 中小学教师队伍建设 1. 职业教育师资队伍建设国际比较 3. 高校教师队伍建设与管理.
《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
复 习 下列设备哪些是输入设备,哪些是输出设备,哪些既 是输入设备又是输出设备 ? – 鼠标、音箱、扫描仪、 mp3 随身听、打印机、 – 写字板、键盘、麦克风、显示器、 U 盘。 输出设备: – 音箱、打印机、 显示器 输入设备: – 鼠标、扫描仪、 写字板、键盘、 麦克风 输入输出设备 – mp3.
2014 年 12 月 企业所得税年度纳税申报表 (A 类, 2014 版 ) 辅导材料(二) A 企业基础信息 A 主表.
第一章 微型计算机系统概述 1.1 计算机的发展与应用 微型计算机的发展与分类 微型计算机的应用
提 纲 三次考察与改革的回顾 1 学院三周来的新面貌 及下一步工作思路 2 凝心聚力、团结协作、狠抓落实 3.
——以通渭县图书馆青树小项目“携老上网游”为例
景观水池渗漏的研究 年级专业:12级土木工程 指导教师: ××× 教 学 点: ××××教学点 新疆工程学院继续教育学院 20 年 月 日
计算机硬件设备图片 go 珠海市第四中学 信息技术组.
工程定额与计价方法 教材名称:工程建设定额原理与实务
建设工程施工管理 模拟卷 一、单项选择题 1.下列选项中,除( )以外都属于施工机械使用费。 A.购置费 B.安拆费及场外运费 C.折旧费 D.修理费.
政府採購法規概要 報告人:杜國正 行政院公共工程委員會企劃處.
2013浙江省行测专题 密卷解析及备考冲刺 罗 姮.
阳光工程引导性培训 宁夏自治区盐池县农广校
門神 在傳統觀念中,門是居住環境中與外界相通的出入口,具有重要的屏障作用。門神顧名思義就是護宅守門的神仙,每逢過年,上至天子百官下至普通百姓,家家戶戶必在門上張貼門神,以保一家平安。 門神種類主要有宅第大門上將軍武門神、內室門戶上祈福文門神,還有童子門神、仙子門神等,形象豐富多樣,皇家貴戚還往往在畫上瀝粉貼金,十分吉祥喜慶。
《毛泽东思想和中国特色社会主义体系概论》 第一章马克思主义中国化两大理论成果
之 魔 析 妖 鬼 解 怪 大 沈家仪小组出品.
2010年春季开学学校食堂食品安全知识培训 徐汇区食品药品监督所
进出口食品检验监管 基础讲课内容 我国进出口食品安全管理体系介绍 法律法规 进口食品的检验检疫 出口食品的检验检疫.
授课班级 安全技术管理0605班 第 5 次 课 授课时间 2008年3月10日 星期一 授课地点 科技楼401多媒体教室 课题内容:
2015版《中国地震动参数区划图》 对我市城乡建设的影响
香港普通話研習社科技創意小學 周順強老師.
總務處營繕組簡報 1.業務職掌 2.九十四年度工作績效 3.工程一覽 4.歷年工作成果 5.未來展望 6.困難及建議.
2014年企业所得税汇算清缴相关税收政策 新华区地方税务局 卿继红
第十章 季节施工 ——冬期施工准备.
危险废物环境管理情况 河南省固体废物管理中心  韩晓晗 2007年6月6日.
第三章 心理安全 广西师范大学 罗蕾.
● 计算机组成与维护 外存储器 第5章 本章要点 硬盘、光驱、移动硬盘的组成 硬盘、光驱的性能指标 外存储器的使用.
食品添加剂生产许可审查通则起草说明.
第九章 长期资产及摊销 2017/3/21.
提升课堂质量 助推教师成长 促进教学改革 “一师一优课,一课一名师”活动总结 河南省实验小学.
概述 检索图书的检索工具 检索期刊的检索工具 检索特种文献的检索工具
第四章 存储体系.
时间管理 -----高一团体辅导.
餐饮服务从业人员 食品安全知识培训 孔莉 朔州市食品药品监督管理局.
首次数据采集填报说明 内蒙古自治区校车信息管理系统 靳 丽 内蒙古自治区教育信息中心 2013年5月
防空地下室审批要点 主讲人:陈玉亭.
治超新政相关文件解读 厅执法局 江涛 二零一六年九月.
科技服务业统计 报表填报说明 江苏省科技统计中心 2008年12月 镇江.
关于加强城市排水防涝有关政策解读 吉林省住房和城乡建设厅 臧 锐.
《计算机操作员》精品 课件 淮南市潘集职教中心
也許你很疑惑: 最近升官的同事,專業能力又沒你強! 情場得意的朋友,長的又沒你帥或美! 小曹要交新朋友,為什麼就是比較簡單!
存储器的层次结构 512KB~8MB 400GB/S 1~8GB 12GB/S CPU Cache RAM 500GB DISK
主讲教师:唐大仕 第5讲 计算机硬件 主讲教师:唐大仕
第5课 计算机中数的表示 计算机中数的表示 信息技术 七年级(上).
中国科学技术大学计算机系 陈香兰(0512- ) spring 2011
第3章 ARM体系结构.
第二章 LINUX存储管理 LINUX的分页管理机制.
CH.8 硬體管理.
在專用的嵌入式板子運行 GNU/Linux 系統已經變得越來越流行。一個嵌入式 Linux 系統從軟體的角度看通常可以分為四個層次:
中国科学技术大学计算机系 陈香兰(0512- ) Spring 2011
詩文的形成 有意義的字詞 句子 段落 一首詩文的形成,是由有意義的字詞組成句子,再由句子組成段落。
Ch9 Communicating with Hardware
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
认识计算机 随着科技的发展计算机已经成为人们学习、工作、生活中不可缺少的一部分。但是在享受计算机带来方便的同时人们却经常被各种各样的软件、硬件问题所困扰。 那么你们究竟有多了解计算机呢? 今天我们就一起来认识计算机。
(第2版).
第四章 存 储 器 管 理 4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配存储管理方式
Chapter 7 掌控記憶體.
计算机系统结构(2012年春) ----存储层次: Cache基本概念
熟能生巧、每日一练: 五分钟打字练习.
重估價模式 如果一項不動產丶廠房及設備的公允價值能可靠地衡量,則企業可以選用重估價模式作為後續衡量的會計政策。 採重估價模式其帳面金額為:
知识点六 草原资源保护法及渔业资源保护法.
微机原理与接口技术 课程性质:专业技术必修课程 课程的特点:偏重硬件,软硬件结合 先修课程:导论、数字逻辑、组成原理、汇编语言等
Chapter 7 掌控記憶體.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
電腦硬體(一) 電腦的外觀 電腦的周邊設備 鍵盤 滑鼠 磁碟機 2019/9/9 明誠中學製作.
Presentation transcript:

中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn Autumn 2009 Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn Autumn 2009

内存管理

内存管理 在前面已经提到: RAM的其余部分称为动态存储器(dynamic memory) Linux如何有效地利用x86的分段和分页机制把逻辑地址转换为物理地址 RAM的某些部分永久地分配给内核,用以存放内核代码以及静态数据 RAM的其余部分称为动态存储器(dynamic memory) 2018/12/7 Linux OS Analysis

Linux内核的前512个页框(假定内核所需内存<1MB,from ULK2) 不可用的页框 可用的页框 内核代码 初始化过的内核数据 未初始化过的内核数据 2018/12/7 Linux OS Analysis

动态存储器 进程和内核都需要动态存储器 属于稀缺资源 整个系统的性能取决于如何有效地管理动态存储器 对动态存储器的使用要进行优化 原则: 对于动态存储器要尽可能做到: 按需分配,不需要时释放 2018/12/7 Linux OS Analysis

主要内容 内核如何给自己分配动态存储器 页框管理 小内存管理 非连续存储区管理 2018/12/7 Linux OS Analysis

1、页框管理 Linux采用页作为内存管理的基本单位 Linux采用的标准的页框大小为4KB 例如:512M的物理内存对应于???个页框? 由分页单元引发的缺页异常很容易得到解释 4KB是大多数磁盘块大小的倍数 传输效率高 管理方便 例如:512M的物理内存对应于???个页框? 2018/12/7 Linux OS Analysis

内核必须记录每个页框的当前状态 哪些属于进程,哪些存放了内核代码/数据 对于动态存储器中的页框:是否空闲,即是否可用 如果一个页框不可用,内核需要知道是谁在用这个页框 用户态进程、动态分配的内核数据结构、静态的内核代码、页面cache、设备驱动程序缓冲的数据等等 2018/12/7 Linux OS Analysis

页描述符 内核使用页描述符来跟踪管理物理内存 每个物理页框都用一个页描述符表示 页描述符用struct page的结构描述 参见mm_types.h 所有物理页框的描述符,组织在mem_map的数组中 2018/12/7 Linux OS Analysis

mem_map数组 相当于物理内存的一个缩影 每个物理页框,使用一个struct page表示,它们组织在mem_map数组中 2018/12/7 Linux OS Analysis

页描述符中的各个字段将在用到时再逐步介绍,首先看一下 count:页的使用引用计数器 0:空闲 >0:页已经分配给一个或多个进程或用户某些内核数据结构 flags:页框状态,最多可以有32个,每个使用一个位表示 2018/12/7 Linux OS Analysis

页框状态 2018/12/7 Linux OS Analysis

页描述符将会占用很大的一段空间 由于每个struct page结构小于64个字节,因此1MB的内存需要使用约4个页面来存放mem_map数组 2018/12/7 Linux OS Analysis

关于NUMA 不考虑 物理内存被划分为若干个node 存取时间不等 考虑CPU局部性 Node使用数据结构pg_data_t描述 每个node被划分成若干个zone 2018/12/7 Linux OS Analysis

存储区(Memory Zones) 在一个理想的体系结构中,一个页框就是一个物理存储单元,可以用于任何事情,例如 存放内核数据/用户数据/缓存磁盘数据等 实际上存在硬件制约:一些页框由于自身的物理地址的原因不能被一些任务所使用,例如 ISA总线的DMA控制器只能对ram的前16M寻址 在一些具有大容量ram的32位计算机中,CPU不能直接访问所有的物理存储器,因为线性地址空间不够 2018/12/7 Linux OS Analysis

ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM 为了应付这种限制,Linux把具有同样性质的物理内存划分成——区(zones) Linux把物理存储器划分为4个区 ZONE_DMA ZONE_DMA32 (未见用) ZONE_NORMAL ZONE_HIGHMEM 参见枚举类型zone_type 896MB 16MB MAX ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM 物理内存 2018/12/7 Linux OS Analysis

ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM ZONE_DMA 和ZONE_NORMAL区 包含存储器的“常规”页,通过把它们映射到线性地址空间的3GB以上,内核就可直接访问 而ZONE_HIGHMEN区 中包含的存储器页面不能由内核直接访问 3GB 3GB+16MB 3GB+896MB 4GB <3G 线性空间 × ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM 物理内存 16MB 896MB MAX 2018/12/7 Linux OS Analysis

每个zone使用struct zone表示 关键:free_area 小结: Mem_map、node、zone之间的关系 2018/12/7 Linux OS Analysis

动态内存 内存布局: 动态内存及引用它的一些值 2018/12/7 Linux OS Analysis

请求页框 内核实现了一种底层的内存分配机制,并提供了几个接口供其他内核函数调用。 分配: 释放 alloc_pages/alloc_page/alloc_pages_node/alloc_pages_current/… __get_free_pages/__get_free_page/__get_dma_pages/get_zeroed_page 释放 free_pages/__free_pages/free_page/__free_page 2018/12/7 Linux OS Analysis

调用关键函数:get_page_from_freelist 2018/12/7 Linux OS Analysis 调用关键函数:get_page_from_freelist

类似alloc_pages,但是返回第一个 所分配页框的线性地址 分配一个页框,返回值同上 用来分配适用于DMA的页框 2018/12/7 Linux OS Analysis

这个函数与__get_free_page基本等价, 差别在于它把所分配页框中的页面数据 全部清0。 这在给用户态的空间分配页框时候很有 用。因为这个页框虽然是可被分配的, 但是里面的数据可能包含了内核的一些 敏感信息。 清0,可以避免信息泄露 2018/12/7 Linux OS Analysis

关于unsigned int gfp_mask 指明可在何处并以何种方式查找空闲的页框 GFP_ATOMIC, 这种分配是高优先级的并且不能睡眠。一般在中断处理程序,下半部分和其他不能睡眠的场合下使用 GFP_KERNEL, 这是普通的分配模式,允许睡眠。一般在用户进程可能调用到的内核函数中使用,这个时候进程是可以安全的睡眠的 GFP_DMA, 设备驱动程序需要DMA内存时使用 2018/12/7 Linux OS Analysis

关于gfp_mask的进一步解释 标志位及其含义 2018/12/7 Linux OS Analysis

2018/12/7 Linux OS Analysis

等等 2018/12/7 Linux OS Analysis

释放页框 如果page对应的页框不是被保留的页框(PG_reserved标志为0),就 把描述符的count字段减1。如果count变为0,就调用释放 与上一个函数类似,只是第一个参数是要释放的 第一个页框的线性地址addr 2018/12/7 Linux OS Analysis

在内核中释放页框时要非常小心,必须确保只释放了所请求的页框,否则内核可能会崩溃 page = __get_free_page(GFP_KERNEL,3); If (!page){ /*如果内存不足,分配失败,必须在这里处理这个失败*/ } /*现在’page’变量指向了8个连续页框的起始线性地址*/ free_pages(page,3); /*现在页框被释放,不应该再对page中存放的线性地址进行操作*/ 2018/12/7 Linux OS Analysis

页框的管理 内核要为分配一组连续的页框建立一种稳定、高效的分配策略 这种策略要解决(外部)碎片问题: 频繁的请求和释放不同大小的一组连续页框,必然导致在物理页框中分散许多小块的空闲页框 这样,即使有足够的空闲页框满足请求,但要分配一个大块的连续页框可能就无法满足了 2018/12/7 Linux OS Analysis

基于下面的原因,Linux内核首选第二种方法 有两种办法可以避免这样的碎片 利用MMU把一组非连续的物理空闲页框映射到连续的线性地址空间 使用一种适当的技术来记录现存的空闲连续页框的情况,以尽量避免为满足对小块的请求而把大块的空闲块进行分割 基于下面的原因,Linux内核首选第二种方法 在某些情况下,必须使用连续的页框,如DMA 尽量少的修改内核页表 2018/12/7 Linux OS Analysis

buddy算法(伙伴算法) Linux使用著名的伙伴算法来解决碎片问题。 每个块的第一个页框的物理地址是该块大小的整数倍 例如:大小为16个页框的块,其起址是16×4KB的倍数 2018/12/7 Linux OS Analysis

伙伴的定义 例如:0和1是伙伴,1和2不是伙伴 两个伙伴的大小必须相同,物理地址必须连续 事实上伙伴是通过对大块的物理内存划分获得的 假定伙伴的大小为b 那么第一个伙伴的物理地址必须是2×b×4KB对齐 事实上伙伴是通过对大块的物理内存划分获得的 假如从第0个页面开始到第3个页面结束的内存 每次都对半划分,那么第一次划分获得大小为2页的伙伴 进一步划分,可以获得大小为1页的伙伴,例如0和1,2和3 1 2 3 1 2 3 2018/12/7 Linux OS Analysis

数据结构 Linux为每个zone使用各自独立的伙伴系统 每个伙伴系统使用的主要数据结构为: 空闲内存管理数组free_area 2018/12/7 Linux OS Analysis

mem_map数组 空闲内存管理数组 前面介绍过的页描述符数组 每个页描述符描述一个物理页框 整个mem_map数组描述整个zone中的所有的物理内存 空闲内存管理数组 空闲内存按照伙伴管理的方法进行组织 使用free_area结构 2018/12/7 Linux OS Analysis

伙伴 当两个伙伴都为空闲的时候,就合并成一个更大的块 该过程将一直进行,直到找不到可以合并的伙伴为止 寻找伙伴 给定一个要释放的空闲块 找到其伙伴 查看其状态:合并 or 不合并 2018/12/7 Linux OS Analysis

举例 假设有128MB的ram。 假设要请求一个大小为128个页框的块(0.5MB)。 128MB最多可以分成215=32768个页框,214=16384个8KB(2页)的块 或213=8192个16KB(4页)的块,直至64个大小为512个页的块 假设要请求一个大小为128个页框的块(0.5MB)。 算法先free_area[7]中检查是否有空闲块(块大小为128个页框) 若没有,就到free_area[8]中找一个空闲块(块大小为256个页框) 若存在这样的块,内核就把256个页框分成两等份,一半用作满足 请求,另一半插入free_area[7]中 如果在free_area[8]中也没有空闲块,就继续找free_area[9]中是否有 空闲块。 2018/12/7 Linux OS Analysis

如果free_area[9]也没有空闲块,内存不够,返回一个错误 信号 若有,先将512分成伙伴,一个插入free_area[8]中,另一 个进一步划分成伙伴,取其一插入free_area[7]中,另一个 分配出去 如果free_area[9]也没有空闲块,内存不够,返回一个错误 信号 2018/12/7 Linux OS Analysis

内存的分配与回收 阅读相关代码 关键:nr_free __free_one_page __rmqueue __free_pages __free_pages_ok free_one_page mm/page_alloc.c buffered_rmqueue get_page_from_freelist __alloc_pages_internal __alloc_pages 2018/12/7 Linux OS Analysis

2018/12/7 Linux OS Analysis

2018/12/7 Linux OS Analysis

页框管理小结 页描述符 Mem_map数组 Zone 空闲页框的管理 空闲页框管理 伙伴算法 Zone_dma 空闲页框管理 Zone_normal Zone_highmem 空闲页框管理 Mem_map 数 组 物理内存:highmem 物理内存: DMA 物理内存: Normal 线性空间(<3GB) 线 性 空 间 ( 3GB~4GB) 2018/12/7 Linux OS Analysis

2、内存区管理(memory area) 单单分配页面的分配器肯定是不能满足要求的 内核中大量使用各种数据结构,大小从几个字节到几十上百k不等,都取整到2的幂次个页面那是完全不现实的 早期内核的解决方法是提供大小为2,4,8,16,...,131056字节的内存区域 需要新的内存区域时,内核从伙伴系统申请页面,把它们划分成一个个区域,取一个来满足需求 如果某个页面中的内存区域都释放了,页面就交回到伙伴系统 2018/12/7 Linux OS Analysis

但这种分配方法有许多值得改进的地方: 不同的数据类型用不同的方法分配内存可能提高效率。比如需要初始化的数据结构,释放后可以暂存着,再分配时就不必初始化了 内核的函数常常重复地使用同一类型的内存区,缓存最近释放的对象可以加速分配和释放 对内存的请求可以按照请求频率来分类,频繁使用的类型使用专门的缓存,很少使用的可以使用通用缓存 使用2的幂次大小的内存区域时硬件高速缓存冲突的概率较大,有可能通过仔细安排内存区域的起始地址来减少硬件高速缓存冲突 缓存一定数量的对象可以减少对buddy系统的调用,从而节省时间并减少由此引起的硬件高速缓存污染 2018/12/7 Linux OS Analysis

Linux2.6.26中 SLOB Allocator: Simple List Of Blocks Slab Slub:slab的一个变种 NUMA Slab Slub:slab的一个变种 Kmalloc/kfree 本课介绍基本的slab算法 2018/12/7 Linux OS Analysis

slab分配器 slab分配器体现了这些改进思想 slab分配器把内存区看成对象 slab分配器把对象分组放进高速缓存。 每个高速缓存都是同种类型内存对象的一种“储备” 例如当一个文件被打开时,存放相应“打开文件”对象所需的内存是从一个叫做filp(file pointer)的slab分配器的高速缓存中得到的 也就是说每种对象类型对应一个高速缓存 2018/12/7 Linux OS Analysis

每个高速缓存被分成多个slabs,每个slab由一个或多个连续的页框组成,其中包含一定数目的对象 2018/12/7 Linux OS Analysis

每个slab有三种状态:全满,半满,全空 半满介于两者之间 当内核函数需要一个新的对象时, 优先从半满的slab满足这个请求 否则从全空的slab中取一个对象满足请求 如果没有空的slab则向buddy系统申请页面生成一个新的slab 2018/12/7 Linux OS Analysis

高速缓存描述符和slab描述符之间的关系 2018/12/7 Linux OS Analysis

普通和专用高速缓存 每个高速缓存使用kmem_cache表示 普通高速缓存根据大小分配内存 专用高速缓存根据类型分配 26个,2组(一组用于DMA分配,另一组用于常规分配) 每组13个,大小从25=32个字节,到217=132017个字节 数据结构cache_sizes 数组:malloc_sizes 专用高速缓存根据类型分配 2018/12/7 Linux OS Analysis

阅读文件kmalloc_sizes.h 2018/12/7 Linux OS Analysis

2018/12/7 Linux OS Analysis

slab分配器提供的接口 创建专用高速缓存:kmem_cache_create 撤销专用高速缓存:kmem_cache_destroy 从专用高速缓冲中分配和释放 从高速缓存中分配/释放一个内存对象 kmem_cache_alloc/kmem_cache_free 从普通高速缓存中分配和释放 kmalloc/kfree 举例说明使用情况 2018/12/7 Linux OS Analysis

slab分配器和伙伴系统的接口 slab分配器调用kmem_getpages()来获取一组连续的空闲页框 相应的有kmem_freepages()来释放分配给slab分配器的页框 2018/12/7 Linux OS Analysis

如果编写的内核模块有许多创建和释放数据结构的操作,可以考虑调用前面所述的slab分配器的接口创建一个高速缓存 这样可以大大减少内存的访问时间 2018/12/7 Linux OS Analysis

3、非连续存储区管理 把线性空间映射到一组连续的页框是很好的选择 有时候不得不将线性空间映射到一组不连续的页框 优点:避免碎片 2018/12/7 Linux OS Analysis

为非连续内存区保留的线性地址空间 VMALLOC_START~VMALLOC_END 2018/12/7 Linux OS Analysis

非连续存储区的描述符vm_struct Vmalloc等分配一个非连续存储区 Vfree释放非连续线性区间 include/linux/vmalloc.h mm/vmalloc.c 2018/12/7 Linux OS Analysis

页框管理、内存区管理、非连续存储区管理之间的关系 使用分配到缓冲区 使用分配到线性区 直接使用分配到的 页框,例如进程描述符 使用slab算法,以若干 个字节为单位进行管理 非连续存储区,映射 到非连续的物理页框上 分配出 一些页框 分配出 一些页框 物理内存:页框管理,以页框为单位进行管理 2018/12/7 Linux OS Analysis

作业 Linux的页框管理采用什么算法?简述该算法。 Linux中的slab算法的用途是什么?简述该算法。 什么是非连续内存区? 2018/12/7 Linux OS Analysis