20169219 《Linux内核原理与分析》 第十周作业
进程地址空间
1、进程地址空间由进程可寻址的虚拟内存组成。Linux系统中的所有进程之间以虚拟方式共享内存。
2、进程只能访问有效内存区域内的内存地址。
内存区域可以包含各种内存对象:
(1) 代码段——可执行文件代码的内存映射。
(2) 数据段——可执行文件的已初始化全局变量的内存映射。
(3) 包含未初始化全局变量,也就是bss段的零页的内存映射。
(4) 用于进程用户空间栈的零页的内存映射。
(5) 每一个诸如C库或动态连接程序等共享库的代码段、数据段和bss也会被载入进程的地址空间。
(6) 任何内存映射文件。
(7) 任何共享内存段。
(8) 任何匿名的内存映射,比如malloc()分配的内存。
3、内核使用内存描述符结构体表示进程的地址空间。
4、mm_users表示使用地址空间的用户数;mm_count表示主使用计数器。只有当mm_users的值减为0时,mm_count的值才变为0。
5、进程与线程的区别内核线程没有进程地址空间,没有相关的内存描述符,也即没有用户上下文。
6、Vm_area_struct结构体中的vm_ops域指向与指定内存区域相关的操作函数表,内核使用表中的方法操作VMA。操作表函数由vm_operations_struct结构体表示。
7、find_vma()可以找到一个给定的内存地址属于哪一个内存区域。该函数在指定的地址空间中搜索第一个vm_end大于addr的内存区域。
find_vma_prev()函数返回第一个小于addr的VMA。
find_vma_intersection()函数返回第一个和指定区间相交的VMA。
8、内核使用do_mmap函数创建一个新的线性地址空间;而用户使用mmap()系统调用创建新的地址空间。
do_munmap()函数从特定的进程地址空间中删除指定地址空间;系统调用munmap()给用户空间程序提供了一种从自身地址空间中删除指定地址空间的方法。
9、 Linux中使用三级页表完成地址转换
页高速缓存和页回写
1、页高速缓存主要用来减少对磁盘的I/O操作,即通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。
缓存策略:
(1) 不缓存——高速缓存不缓存任何写操作。
(2) 写透缓存——写操作自动更新内存缓存,同时也更新磁盘文件。
(3) 回写——写操作直接写到缓存中,后端存储不会立即更新,而是将页高速缓存中被写入的页面标记成“脏”,并且被加入到脏页链表中。然后由一个进程周期性的将脏页链表中的页写回到磁盘,从而让磁盘中的数据和内存中最终一致。
缓存回收策略:
(1) 最近最少使用
(2) 双链策略
2、address_space管理缓存项和页I/O操作。
3、发生以下三种情况时,脏页会被写回磁盘
(1)空闲内存低于一个特定的阈值时
(2)脏页在内存中驻留时间超过一定的阈值时
(3)用户进程调用sync()和fsync()系统调用时
20169219 《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语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- Linux 下如何调试 Python?
一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调试. 但是,有时我们的业务场景,限制只能在 Linux 命令行模式进行调试. 这时该怎么办呢? 今天,就给大 ...
- LightOJ 1224 DNA Prefix
Given a set of n DNA samples, where each sample is a string containing characters from {A, C, G, T}, ...
- LeetCode Shopping Offers
原题链接在这里:https://leetcode.com/problems/shopping-offers/description/ 题目: In LeetCode Store, there are ...
- CentOS下安装Python3.4
系统环境:CentOS 7.2 CentOS7安装Python3.4 ,让Python2和3共存 编译需要的一些包: yum -y groupinstall "Development too ...
- Python 函数之装饰器
1.函数 #### 第一波 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 第二波 #### def foo(): print ...
- composer的安装和使用
由于工作中需要用到leancloud的LeanCloud PHP SDK,支持composer安装,所以就下载composer工具了, 安装之前可以用composer命令检测是否已经安装了,命令是:c ...
- java代码实现通讯录实例,我不知道这有什么用。,
运行显示: Friend:zl,Address:武大樱花美Colleagues:蔡依林,Department:麻城市人民政府 题目: 1.任务描述 完善上面通讯录名片的例子. 2.技能要点 掌握类继承 ...
- java数组复制的几种常见用法
1.1数组复制的几种常见用法 1.1.1System.arraycopy的用法 int[] src = {1,3,5,7,9,11,13,15,17}; int[] dest = {2,4,6,8,1 ...
- Linux打包下载命令
语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些 ...
- AngularJS入门之如何快速上手
概述: AngularJS(ng)是一个纯JS框架,AngularJS易于构建CRUD应用(CRUD意思是增删改查) 适用于以数据操作为主的SPA(Single Page Application) ...