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语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- numpy、scipy、pandas
以下分别是numpy.Scipy.pandas的简介.虽然这些包提供的一些结构比python自身的“更高级.更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认 ...
- poj 2408 Anagram Groups
Description World-renowned Prof. A. N. Agram's current research deals with large anagram groups. He ...
- .NET MVC 异步提交和返回参数
一.后台页面中的接收方法和返回写法 Jsonresult意味着返回值是json格式,也可以是string或者int等其他类型. Httppost代表只接受Post方法. Mvc中返回Jsonresul ...
- string容器
一.string特性 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的,string与char*都可以用来表示字符串. 说到string的 ...
- PHP开发中的问题
1.echo不输出值,有可能是该值不存在. 2.PHP+MySQL上一条下一条记录查询 id作为自增int SQL语句如下即可:上一条 SELECT * FROM A WHERE id < $i ...
- PCM音量控制
http://blog.jianchihu.net/pcm-volume-control.html 一.声音的相关概念 声音是介质振动在听觉系统中产生的反应.声音总可以被分解为不同频率不同强度正弦波的 ...
- Redis的持久化机制
持久化机制 RDB:快照模式AOF :日志模式 多数据库– 一个redis服务器内部默认有16个数据,编号О0-15– 默认操作是编号为0的数据库– 可以在命令行用select选择数据库127.0.0 ...
- Enable SVM while booted from alternate media (ZT)
http://www.seedsofgenius.net/uncategorized/solaris-tips-enable-svm-while-booted-from-alternate-media ...
- The connection to adb is down and a sever error has occured的解决
1. 打开任务管理器,关掉豌豆夹等手机助手 2. 打开命令行,切换到adb所在目录,如:C:\Users\Jubincn\Downloads\adt-bundle-windows-x86_64-201 ...
- AJAX——Json
一.简介: 客户端利用Ajax请求服务器端时,数据在两者之间通常有两种格式:XML格式的数据:Json(JavaScript Object Notation/JavaScript 对象表示法)格式数据 ...