20169207《Linux内核原理与分析》第十周作业
这周除了阅读学习教材「Linux内核设计与实现 (Linux Kernel Development)」第教材第15,16章外.我们还需要接着完成学习MOOC「Linux内核分析」第八讲「Linux系统架构和执行过程概览」,并完成实验楼上配套实验八的任务。
首先阅读课本上的章节,在第十五章进程地址空间章节介绍了如何管理物理内存。
1.其实内核除了管理本身的内存外,还必须管理用户空间中的内存。这个内存我们叫做进程地址空间。进程只能访问有效内存区域内的内存地址。
内核区域可以包含各种内存对象,比如:
1.可执行文件代码的内存映射,称为代码段。
2.可执行文件的已经初始化全局变量的内存映射,称为数据段。
3.包含未初始全局变量,也就是bss段多的零页的内存地址。
4.用于进程用户空间栈的零页的内存映射。
5.每一个诸如C库或动态链接程序等共享库的代码段,数据段和bss也会被载入进程的地址空间。
6.任何内存映射文件。
7.任何共享内存段。
8.任何匿名的内存映射,比如malloc()分配的内存。
2.内核使用内存描述符结构体表示进程的地址空间,改结构包含了和进程地址空间有关的全部信息。
3.内存区域由VM_AREA_STRUCT结构体描述。内存区域在LINUX内核中页经常称作虚拟内存区域。
4.内核时长需要在某个区域内存上执行一些操作,比如某个指定地址是否包含在某个内存区域中。这类操做非常频繁。我们称这个区域为操作内存区域。
5.内核使用mmap()和do _mmap()函数创建一个新的线性地址空间。
6.内核使用munmap()和do_munmap()函数从特定的进程地址空间中删除指定地址区间。
7.虽然应用程序操作的对象是映射到物理内存之上的虚拟内存,但是处理器直接操作的确实物理内存。地址的转换工作需要通过查询页表才能完成。
Linux中使用三级页表完成地址转换。
1.顶级页表是页全局目录。
2.二级页表是中间页目录。
3.最后一级的页表简称页表。
第十六章我们要学习一种用于所有页I/O操作的内存数据缓存,而且还涵盖内核基于页的数据回写。
页高速缓存(cache)是Linux内核时限磁盘缓存。它主要用来减少对磁盘的I/O操作。具体的讲。是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。
1.缓存手段:页面高速缓存是由内存中的物理页面组成的,其内容对应磁盘上的物理块。页高速缓存大小能动态调整-它可以通过占用空闲内存以扩张大小。也可以自我收缩以缓解内存使用压力。
它主要包括写缓存和缓存回收。
2.Linux页高速缓存
页高速缓存缓存的是内存页面。缓存中的页来自对正规文件,块设备文件和内存映射文件的读写。
全局散列表主要存在四个问题:
1.由于使用单个的全局锁保护散列表,所以即使在中等规模的机器中,锁的争用情况也会相对严重,造成性能受损。
2.由于散列表需要包含所有页高速缓存中的页,可是搜索需要的只是和当前文件相关的那些页,所以散列表包含的页面相比搜索需要的页面要大得多。
3.如果散列失败,执行速度比希望的要慢的多,这是因为检索必须遍历指定散列键值对应的整个链表。
4.散列表比其他方法会消耗更多的内存。
*****2.6版本中引入基于基数的页高速缓存来解决这些问题。
3.独立的磁盘块通过块I/O操作也要被存入页高速缓存。
4.flusher线程
以下三种情况发生时,脏页被写会磁盘:
1.当空闲内存低于一个确定的阈值时,内核必须将脏页写会磁盘以便释放内存,因为只有干净的内存才可以回收。
2.当脏页在内存中驻留时间超过一个特定的阈值时,内核必须将超时的脏页写会磁盘,以确保脏页不会无限制的驻留在内存中。
3.当用户进程调用sync()和fsync()x系统调用时,内核会按要求执行回写动作。
本章主要学习了linux的页高速缓存和页回写。了解了内核如何通过页缓存执行页I/O操作以及这些页高速缓存可以利用减少磁盘I/O,从而极大地提升系统的性能。
20169207《Linux内核原理与分析》第十周作业的更多相关文章
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...
- 2019-2020-1 20209313《Linux内核原理与分析》第二周作业
2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 《Linux内核原理与分析》第一周作业 20189210
实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...
- 2018-2019-1 20189221《Linux内核原理与分析》第二周作业
读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- 如何将你拍摄的照片转换成全景图及六面体(PTGui)
在完成全景照片的拍摄之后,接下来,我们需要的是进行全景图的拼接.全景图片分为两种类型1.立方体全景图(6面体)制作全景时通常使用该种格式 如下图 2.球形图(2:1的单张全景图片)2:1全景图宽高比例 ...
- MongoDb进阶实践之九 Mongodb的备份与还原
一.引言 前几天写了MongoDB数据库的聚合.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西,主要是用于对数据分类汇总和统计.大家都知道,做为DBA还有另一个重要的任务,那就是对数据 ...
- Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)
参考文档: 1.https://blog.csdn.net/fishernemo/article/details/27649233 2.http://helgaxu.iteye.com/blog/21 ...
- python基础之Day4
流程判断 一.if 1.语法一 各条件都执行 if条件1: if条件2: if条件3: 2.语法二 if多分支,自上而下执行,一旦满足条件,后面代码即使满足条件也不会执行 if条件1: elif条件2 ...
- Composer 中文镜像 Lavavel-china 公益项目
『Composer 中国全量镜像』是由 Laravel China 社区联合 又拍云 与 优帆远扬 共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务. ...
- How to Set Ckeditor ReadOnly Mode
CKEditor API makes it possible to render the editor content read-only (and thus impossible for the u ...
- zz Alex's BLOG 串口连接
using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using S ...
- ubuntu14上安装nltk
安装nltk 1)在buntu终端命令键入:wget https://bootstrap.pypa.io/ez_setup.py,下载ez_setup.py. 2)下载完成后后,键入:sudo py ...
- 尼克的任务(P1280)
题目链接:尼克的任务 这道题,有点难度,也不是太难,因为我都做出来了. 好,下面分析一下: 这道题,显然的动规,我们这样设计状态. 我们设d[i]为从第i分钟初开始到结束有多少空闲时间. 那么我们的转 ...
- python学习 day1 (3月1日)
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. 飞机 内存:临时存储数据. 8g,16g, 高铁 1,成本高. 2,断电即消失. 硬盘:长期存储大量的数据. 1T 512G等等 ...