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语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- 普通方法实现——远程方法调用RMI代码演示
1.spring_RMI01_server服务端 package com.wisezone.service; import java.rmi.Remote; import java.rmi.Remot ...
- 利用PIL添加水印
转:http://www.jb51.net/article/66542.htm
- case编写的httpd简单启停脚本
case编写的httpd简单启停脚本 #!/bin/bash HTTPD="/etc/init.d/httpd" . /etc/init.d/functions case &quo ...
- Powershell使用SSH
在编写Powershell脚本时,有时会需要和Linux机器进行交互.所以这时就需要在Powershell中使用SSH. 本文将介绍如何在Powershell中安装SSH模块,以及如何使用ssh命令. ...
- laravel 多个where的连接使用
在查询的时候需要用到多个where条件来查询 1.直接多个where连接 ->where()->where() 2.把查询条件 放到where数组$where中 然后 ->where ...
- Angular5学习笔记 - 配置Http(七)
一.引入Http模块 编辑\src\app\app.module.ts文件 import { HttpModule } from '@angular/http'; /* 注册模块 */ imports ...
- 使用批处理自动发布IIS站点,基于IIS7及以上
经过研究,终于使用批处理解决了站点发布步骤多的问题. 完整批处理如下: @set "sitePath=%~dp0" @echo 新建程序池 @C:\Windows\System32 ...
- Oracle存储过程返回
IF IN_DN_NUMBER IS NOT NULL THEN SELECT COUNT(*) INTO V_HAS FROM SALEFROMSTORE WHERE ORDERID = IN_DN ...
- codeforce 510C Fox And Names(拓扑排序)
Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 四 Mixer
Mixer在应用程序和基础架构后端之间提供通过中介层.它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之. Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性.从服务代码中剔除策 ...