当前课程知识点:Linux 内核分析与应用 >  第2章 内存寻址 >  2.1 内存管理之内存寻址 >  Video

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

Video在线视频

Video

下一节:Video

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

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

大家好 我们今天开始讲第二章内容 内存寻址

这一讲我们开始对内存寻址进行概要的介绍

那么为什么首先讲内存寻址

就从图灵机说起

图灵机是一种通用自动的机器模型

它的理念是

有一个二端无限延伸的纸带作为存储装置

输入 输出和状态转移函数呢

是机器的三要素

这三要素组合并变形可成为一切机器的原型

可解决一切图灵机能解决的问题

那么紧接着介绍冯诺伊曼结构

冯诺依曼体系结构与图灵机有什么样的关系呢

图灵机听起来是纸上谈兵

但它却是当代冯诺依曼计算机体系的理论鼻祖

它带来的数据连续存储和选择读取思想

是目前我们使用的几乎所有机器运行背后的灵魂

计算机体系结构中的核心问题之一就是如何有效地进行内存寻址

因为所有运算的前提都是先要从内存中取得数据

所以内存寻址技术从某程度上

代表了计算机技术

刚才我们说图灵机是冯诺依曼计算机体系的鼻祖

而目前的大多数CPU的体系鼻祖呢

又是冯诺伊曼体系

那么我们看这张图 Intel的x86结构 AMD

当然ARM的体系结构 它源于哈佛结构

这张图呢给出了Linux内核源代码的结构

Linux在内核的设计中呢

目前几乎支持所有主流的CPU架构

其设计理念遵循了分离体系结构相关代码的原则

在上图中呢Linux支持的众多的CPU体系结构中

与体系结构相关的代码

专门存放在arch目录下

那么其中呢大家最熟悉的就是X86

因此我们所介绍的内存寻址

也是以此为背景的

而且是以32位的寻址为主

下面我们介绍一下x86内存寻址的不同时期

我们把它分为四个时期

分别为石器时期 青铜时期

白银时期和黄金时期

那么我们先看一下石器时期

石器时期其实就是八位的寻址

在微处理器的历史上

第一块微处理器芯片是4004

是由Intel推出的4位的机器

在4004之后呢 Intel推出了一款八位的处理器

叫8080

那时还没有段的概念

访问内存都要通过绝对地址

因此程序中的地址 必须进行硬编码

也就是说你要给出具体的物理地址

而且难以重定位

那么紧接着呢就到了青铜时期

那么这个时期呢也就是8086的时代

引入了段的概念

那么8086处理器的目标定位呢

寻址空间要达到1M

于是它的地址总线扩大到了20位

可是呢数据总线只有16位

也就是说它要把1M大的空间呢

分为数个64k的段来进行管理

那么段呢描述了一块有限的内存区域

区域的起始位置呢

存在专门的寄存器中 也就是我们说的段寄存器中

我们看一下8086的寻址方式

如何把一个16位的地址能寻址到

1M的地址空间

实际上它是把16位的段地址呢

移4位以后再与16位的偏移量相加

便获得一个20位的内存地址

也就实现了从16位内存地址到20位实际地址的转换

或者呢我们叫做映射

那么这种模式呢也叫做”实模式”

下面我们到了第三个阶段 也就是保护模式的引入

80286的地址总线增加到了24位

从此开始引入了一个全新的理念 也就是保护模式

这个时候访问内存时不能直接从段寄存器中获得段的起始地址

而需要经过额外的转化或检查

现在到了黄金时期

内存寻址的飞跃 386是一个32位的CPU

其寻址能力达到了4GB

Intel选择了在段寄存器的基础上构置保护模式

并且保留段寄存器依然是16位

在保护模式下它的段范围呢

不再受限于64K而是可以达到了4个GB

这真正的解放了软件工程师

他们不必再费心的去压缩程序的规模

软件功能也因此迅速得到了提升

从80386以后从32位到目前的64位

Intel的CPU经历了各种型号

但基本上属于同一种体系结构的改进和加强

而无本质的变化所以我们把

386以后的处理器通称为X86

那么实模式或保护模式下

它们寄存器有什么样的差异

通过这张图 我们看到了它们寄存器有相当的差异

在保护模式下的寄存器有很大的变化

一些寄存器是专门属于操作系统使用的

比如用于分页的控制器

CR0到CR3

一般普通用户是不能使用的

有一些寄存器是系统的地址寄存器

那么还有一些寄存器呢专门用于

调试或测试 分别有七个寄存器

那么这些呢都是保护模式下所特有的寄存器

在这里呢我们特别介绍一下保护模式下的几个页表寄存器

那么这里面有4个页表寄存器

CR0到CR3

我们主要的介绍一下CR0寄存器

CR0中包含了六个预定义的标志

这里介绍内核中用到的0位和31位

0位是保护允许位

主要用于启动保护模式

如果PE位置1则保护模式启动

如果为0则在实模式下运行

CR0的第31位是分页允许位

它表示芯片上的分页部件是被允许工作

由于PG位和PE位定义的操作方式呢

可以由下面这个图可以看出

这个我们看到呢00组合呢

它是实模式 也就是8080的操作

那么01组合呢是保护模式 但不允许分页

10组合呢就是出错

11组合就是允许分页的保护模式

这也是我们操作系统所要讲的模式

下面我们来介绍一下Linux内核代码中

所使用的C语言和汇编语言

那么C语言用的是GNU的扩展C

汇编语言使用的是AT&T的汇编格式

与Intel的汇编格式稍有差异

那么在C语言中也可以嵌入汇编语言

叫做GCC嵌入式汇编

关于这些语言的差异性

以及在内核代码中的使用呢

我们具体的参见教材的2.5节

这节的参考资料呢 介绍大家

来参考《深入理解Linux内核》 的第二章

以及英特尔的手册

那么最后呢给大家抛出一个问题

就是说为什么要引入保护模式

保护模式到底保护了什么

为什么能达到保护这些对象的目的

这一讲就讲到这里 谢谢大家

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笔记与讨论

也许你还感兴趣的课程:

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