当前课程知识点:Linux 内核分析与应用 >  第4章 内存管理 >  4.5 动手实践-Linux内存映射基础(上) >  Video

返回《Linux 内核分析与应用》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《Linux 内核分析与应用》慕课在线视频列表

Video课程教案、知识点、字幕

大家好 今天给大家带来的是linux内存映射的演示

在开始之前先跟大家一起熟悉几个概念

首先是mmap文件映射 mmap是一种内存映射文件的方法

即将一个文件映射到进程的地址空间

建立文件磁盘地址和进程虚拟地址的一种对应关系

如此 进程就可以通过读写

相应的虚拟地址 而直接读写相应文件中的内容了

这样映射最大的好处是进程可以直接访问内存

避免了频繁的使用read write

等文件系统的系统调用

需要注意的是mmap并不分配物理内存

它所做的最重要的工作就是为进程映射区的虚拟地址建立页表项

从图上可以看出进程的虚拟地址空间 是由多个虚拟内存区域构成的

如图所示的text数据段 初始数据段

BSS数据段 堆和栈

都是一个个独立的虚拟内存区域

而为内存映射服务的地址空间处在堆和栈之间的空余部分

linux内核使用vm_area_struct结构来表示一个

独立的虚拟内存区域

由于每个虚拟内存区域功能和内部机制都不尽相同

因此一个进程会使用多个vm_area_struct结构来分别表示

不同类型的虚拟内存区域

也就是我们在上一页中看到的text数据段

bss数据段等等

每个vm_area_struct都对应虚拟地址空间上一段连续的地址

它们之间使用链表或者树形结构链接

方便进程进行快速的查找 访问

这里我们可以看到vm_area_struct结构中的一些字段

其中包括虚拟内存区的起始和结束的地址

vm_flags是该虚拟内存区的标志位

如果虚存区域映射的是磁盘文件或者设备文件的话

那么vm_inode指向该文件的inode索引节点

这里有一个重要的叫做vm_ops的字段

它是一个指向vm_operations_struct结构体的指针

在vm_operations_struct结构体中

定义了与该虚拟内存区操作相关的接口

其中包括了: open close fault等等这些操作

每个虚拟内存区域都必须在vm_operations

struct结构中实现这些操作

一个进程的全部虚拟地址空间由mm

struct结构体来管理的

它里面包括了进程虚拟空间的一些管理的信息

包括进程pgd页表的地址等等

另外呢它还有有一个指向

虚拟内存区链表的指针mmap

最后在进程描述符中有一个mm字段

指向mm_struct结构

这些共同组成了linux中

进程虚拟地址空间的抽象描述

最后是linux中有关设备驱动的概念

我们都知道 所有的设备在 Linux 里都是以设备文件的形式存在的

设备文件允许应用程序通过标准输入输出系统调用

与驱动程序进行交互

那么既然都是文件 当然也可以进行mmap映射

这也是一种操作设备的方法

有关设备和驱动的东西是一块很大的领域

感兴趣的同学可以下去了解

我们这里以今天要使用的字符设备驱动为例

简单的介绍下它的基本内容

在用户程序来看操控一个设备就是对设备文件的读写

而其具体的实现过程则是由相应的驱动程序来完成的

如图所示 这个方框中就是一个设备驱动的主要的内容

它其中自然少不了对模块的加载和卸载函数

他们是主要完成设备的初始化和删除的

它使用struct_cdev结构体来抽象描述一个字符设备

而每个cdev结构体呢

就由dev_t类型的设备号来唯一指定

设备号分为主(major)设备号和次设备号

主设备号用来表明设备类型 而次设备号用来表明其编号

这里我们可以看到有一个file_operations结构体

该结构体是Linux文件系统中一个非常重要的结构体

linux的VFS虚拟文件系统

它能够将不同类型的文件系统统一管理

并且为用户提供一个统一的接口就是通过

file_operations结构体实现的

而在设备文件中 它主要用来存储驱动模块提供的

对设备进行各种操作的函数的

对于普通文件的read write

驱动需要将其转化为对应的对设备的操作

就是通过该结构体完成的

它其中包含许多的钩子函数

包括read release mmap等等

read是进程在读设备文件时要做的

Release则是在进程调用close时

所要做的工作的 它用来释放一些系统资源 最后呢就是mmap

不同文件有自己定义的mmap钩子

比如ext3文件系统对应了一个叫做

generic_file_mmap的一个钩子函数

而我们今天要做的主要工作呢

就是为一个虚拟字符设备编写其驱动模块

在其驱动中完成设备空间也就是内核空间

到用户空间的内存映射

好了 接下来我们看一下代码

Linux 内核分析与应用课程列表:

第1章 概述

-1.1 Linux操作系统概述

--1.1 Linux 操作系统概述

-1.2 Linux内核结构以及内核模块编程

--Video

-1.3 Linux内核源码中的双链表结构

--Video

-1.4 源码分析-内核中的哈希表

--Video

-1.5 动手实践-Linux内核模块的插入和删除

--Video

-第1章 概述--章节测验

-第1章导学--引领你进入Linux内核的大门

第2章 内存寻址

-2.1 内存管理之内存寻址

--Video

-2.2 段机制

--Video

-2.3分页机制

--Video

-2.4 动手实践-把虚拟地址转换成物理地址

--Video

-第2章 内存寻址--章节测验

-第二章导学-从零打造自己的操作系统

第3章 进程管理

-3.1 进程概述

--Video

-3.2 Linux进程创建

--Video

-3.3 Linux进程调度

--Video

-3.4 动手实践-打印进程描述符task_struct中的字段

--Video

-3.5工程实践-基于内核模块的负载监控

--Video

-第3章 进程管理--章节测验

-第三章导学-进程背后琳琅满目的宝贝到哪里挖?

第4章 内存管理

-4.1 Linux内存管理机制

--Video

-4.2 进程用户空间管理机制

--Video

-4.3 物理内存分配与回收机制(上)

--Video

-4.4 物理内存分配与回收机制(下)

--Video

-4.5 动手实践-Linux内存映射基础(上)

--Video

-4.6 动手实践-Linux内存映射实现(中)

--Video

-4.7 动手实践-Linux内存映射测试(下)

--Video

-4.8 初学者对内存管理的常见疑惑

--初学者对内存管理的常见疑惑(一)

--初学者对内存管理的常见疑惑(二)

--初学者对内存管理的常见疑惑(三)

-第4章 内存管理--章节测验

第5章 中断

-5.1 中断机制概述

--Video

-5.2 中断处理机制

--Video

-5.3 中断下半部处理机制

--Video

-5.4 时钟中断机制

--Video

-5.5 动手实践-中断上半部的代码分析及应用

--Video

-5.6 动手实践-中断下半部的代码分析及应用

--Video

-第5章 中断--章节测验

第6章 系统调用

-6.1 Linux中的各种API

--Video

-6.2 系统调用机制

--Video

-6.3 动手实践-添加系统调用(系统调用日志收集系统)

--Video

-第6章 系统调用--章节测验

第7章 内核同步

-7.1 内核同步概述

--Video

-7.2 内核同步机制

--Video

-7.3 动手实践-内核多任务并发实例(上)

--Video

-7.4 动手实践-内核多任务并发实例(下)

--Video

-第7章 内核同步--章节测验

第8章 文件系统

-8.1 虚拟文件系统的引入

--Video

-8.2 虚拟文件系统的主要数据结构

--Video

-8.3 文件系统中的各种缓存

--Video

-8.4 页高速缓存机制以及读写

--Video

-8.5 动手实践-编写一个文件系统(上)

--Video

-8.6 动手实践-编写一个文件系统(中)

--Video

-8.7 动手实践-编写一个文件系统(下)

--Video

-第8章 文件系统--章节测验

第9章 设备驱动

-9.1 设备驱动概述

--Video

-9.2 I/O空间管理

--Video

-9.3 设备驱动模型

--Video

-9.4 字符设备驱动程序简介

--Video

-9.5 块设备驱动程序简介

--Video

-9.6 动手实践-编写字符设备驱动程序

--Video

-9.7工程实践-编写块设备驱动的基础(上)

--Video

-9.8 工程实践-块设备驱动程序分析(中)

--Video

-9.9 工程实践-块设备驱动程序实现(下)

--Video

-第9章 设备驱动--章节测验

致谢与说明

-致谢与说明

--Video

直播视频:从Linux内核学习到自主操作系统研发

-从Linux内核学习到自主操作系统研发

附录:实验代码、课件以及相关素材

-各章实验代码

-《Linux内核分析与应用》课件

-《Linux操作系统原理与应用》教材课堂视频

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。