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语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- C#检查网络是否可以连接互联网
添加引用: using System.Runtime.InteropServices; using System.Net.NetworkInformation; [DllImport("wi ...
- Windbg内核调试之二: 常用命令
运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下 ...
- python3小例子:scrapy+mysql
https://blog.csdn.net/u010151698/article/details/79371234
- Poj 2395 Out of Hay( 最小生成树 )
题意:求最小生成树中最大的一条边. 分析:求最小生成树,可用Prim和Kruskal算法.一般稀疏图用Kruskal比较适合,稠密图用Prim.由于Kruskal的思想是把非连通的N个顶点用最小的代价 ...
- 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)
一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...
- 【转】gem install libv8 错误
转自:http://my.oschina.net/moks/blog/200344 [摘要]Because libv8 is the interface for the V8 engine used ...
- [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配
本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp ...
- xcopy 命令行
https://www.cnblogs.com/yang-hao/p/6003308.html xcopy-参数详解 XCOPY——目录复制命令 1.功能:复制指定的目录和目录下的所有文件连同目 ...
- elasticsearch的功能及适用场景(2)
1.Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些:新闻网站,最近 ...
- 34款Firefox渗透测试插件
1:Firebug Firefox的 五星级强力推荐插件之一,不许要多解释 2:User Agent Switcher 改变客户端的User Agent的一款插件 3:Hackbar 攻城师必备工具, ...