五、Pentium 微处理器保护模式存储管理,《微机系统》第一版,赵宏伟

一、分段存储管理

Pentium支持分段存储管理、分页存储管理和段页式存储管理。

1.1 分段存储管理的基本思想

一个程序由多个模块组成。

每一个模块都是一个特定功能的独立的程序段。

段式管理:把主存按段分配的存储管理方式。

程序模块→段→段描述符→段描述符表一段描述符表寄存器

1.2 分段存储管理工作过程

每一个程序段都会有一个段描述符

在这里插入图片描述

1.3 虚拟地址和虚拟地址空间

Pentium 微处理机在保护模式下的存储器管理单元使用48位的存储器指针。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

高16位为段选择符,其中INDEX字段是索引字段,即可以从 2 13 2^{13} 213个段描述符的段描述符表中选出一个段描述符

TI为段描述符表选择字段,来说明是GDT还是LDT(即全局描述符表还是局部描述符表)

RPL则是请求特权级字段。

因此,Pentium 的实际寻址范围是46位(去掉了特权级字段)

1.4 虚实地址转换

转换过程:

段选择符 -> 段描述符表 -> 段描述符 -> 段基址 -> 偏移量 -> 物理地址

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.5 段描述符

段描述符:用于描述段的基本信息。

由8个字节组成。

段描述符保存段的属性、段的大小、段在存储器中的位置以及控制和状态信息。

分类如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.5.1 程序段描述符

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基地址:32位,规定一个段在4GB物理地址空间中的起始位置

段界限:20位,决定了段的长度,该字段的值的单位出“G”位决定。

“G”位称作粒度位,用来确定段界限所使用的长度单位

  • G = 0时,单位为一个字节

  • G = 1时,单位为4KB

分类S:区分是系统段描述符还是非系统段述符。

  • 当S=0时,是系统段描述符
  • 当S=1时,是非系统段描述符。

段存在位P:该段是否在内存中。

  • 当P=1时,表示该段在内存中。
  • 当P=0时,表示该段不在内存中。

系统可用位AVL:表示系统软件是否可用本段。

  • 当AVL=1时,表示系统软件可用本段。
  • 当AVL=0时,表示系统软件不能用本段。

特权级DPL:定义段的特权级。

  • 2位,有4个特权级:00、01、10、11,称作0级、1级、2级、3级。0级的特权最高,1级次之,3级的特权最低。
  • 用这个字段定义的特权级去控制对这个段的访问。

D位/B位:32/16大小选择。D/B=1,选32位;D/B=0,选16位。

  • 在代码段描述符中,指示操作数长度和有效地址长度,D位。
  • 在堆栈段描述符中,指示ESP或SP,B位。
  • 在数据段描述符中,指示操作数长度。B位

类型TYPE:在不同的段描述符中有不同的格式。

数据段或堆栈段描述符中的类型TYPE字段

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

E可执行位:当E=0时,是数据段或堆栈段。

ED扩展方向位:当ED=0时,向上扩展(地址增加方向),通常用于数据段。

当ED=1时,向下扩展(地址减小方向),通常用于堆栈段。

W可写位:当W=0时,不允许写入。当w=1时,允许写入

A访问位:当A=0时,该段尚未被访问。当A=1时,该段已被访问

代码段描述符中的类型TYPE字段

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

E可执行位:当E=1时,是代码段。

C一致性位:一致性检查就是采用特权级进行控制。C-0,表示非一致性代码段,此时忽视段描述符的特权值。C=1,表示一致性代码段,需要进行特权级检查。

R可读位:当R=0时,不允许读。当R=1时,允许读。

A访问位:当A=0时,该段尚未被访问;当A=1时,该段已被访问

1.5.2 系统段描述符

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.6 门描述符

一种关卡,用来控制从一段程序到另一段程序或从一个任务到另一个任务的转移。

门描述符:用于控制转入目标代码段的入口点。

门描述符包括调用门、任务门、中断门和陷阱门

调用门用于改变特权级别。

任务门用于任务切换。

中断门和陷阱门用于确定中断服务程序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

段选择符:16位,指出段描述符位置,索引值。

任务门送TR,其他门则送CS。

类型TYPE:确定门的分类:调用门、任务门、中断门和陷阱门。

类型TYPE字段的规则与系统段描述符中的类型TYPE字段的格式完全相同。

P字段:表示描述符内容是否有效。

当P=0时,表示描述符内容无效。

当P=1时,表示描述符内容有效。

1.7 全局描述符表及寄存器

全局描述符表GDT:保存系统使用、各任务共享的段描述符,只有一个

全局描述符表寄存器GDTR:指定了GDT的起始地址

48位=32位基地址+16位界限

GDT保存的描述符类型:除中断门、陷阱门外的各类描述符。

GDT寻址可归纳为

1.段选择符 * 8 + GDTR基址 = 段描述符地址

2.段描述符内容(包括基址) → 相应段cache

3.cache中段基址 + 虚地址偏移量 = 物理地址

由GDTR确定GDT存储位置和界限

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.8 局部描述符表及寄存器

  • 局部描述符表LDT:保存某任务使用的段描述符,每个任务一个。
  • LDTR:指出LDT的基址
    • 16位选择符 + (32位基址 + 20位界限 + 12位属性)
  • LDTR的段选择符确定LDT描述符在GDT中的位置
  • 如果LDTR中装入了段选择符,处理器自动地将相应的LDT描述符从全局描述符表GDT中读出来,并装入LDTR中的cache部分,其中包括LDT基址,从而为当前任务创建一个LDT

1.9 中断描述符表及寄存器

  • 中断描述符表IDT:保存门描述符,整个系统一个,包括中断门、陷阱门、任务门(通常没有调用门)
  • 门提供了一种将程序控制转移到中断服务程序入口的手段。每个门8个字节,包含服务程序的属性和起始地址。
  • 中断描述符表寄存器IDTR
    • 48位 = 32位基地址 + 16位界限
    • IDT按字节计算大小,IDT最大可达64KB(但是Pentium微处理机只能够支持256个中断和异常,最多占用2KB)。
  • 中断描述符表IDT中存放的描述符类型均是门描述符。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.10 任务状态段及寄存器

  • 任务状态段TSS:保存现有任务的机器状态(指处理器的工作环境,比如各个寄存器的状态)及其任务间的关联信息。
  • 没有数据和代码,每个任务一个。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • (1)返回链BACK LINK:是一个段选择符,把前一个任务的TSS描述符的段选择符(即原来TR中的16位可见部分)转入新任务TSS中,供任务返回时使用。

    • 比如我们平时从QQ切换到vscode,又从vscode切换回QQ,其实就是BACK LINK保存了QQ的段选择符
  • (2)由返回指令IRET将其装入TR寄存器,从而回到前一个TSS

  • 寄存器保存区域,用于保存通用寄存器、段寄存器、指令指针和标志寄存器。

  • 每当任务切换时,处理器当前所有寄存器的内容都被保存在TSS的这些单元中,然后又将新任务TSS所对应的单元内容装入所有的寄存器。

1.11 段选择符及寄存器

在实模式下,段寄存器的16位值是基地址。

在保护模式下,每一个段寄存器由两部分组成

可见部分 不可见部分(高速缓存)
16位 64位

段选择符

选择符分为3个字段:

INDEX TI RPL
索引字段 描述符表选择字段 请求特权级字段
13位 1位 2位

  • 索引值乘以8就是相对于GDT或LDT首址的偏移量,这个偏移量再加上描述符表的基地址(来自全局描述符表寄存器GDTR,或者局部描述符表寄存器就是段描述符在LDTR)描述符表中的地址。

  • 当TI=0时,选择的是全局描述符表GDT。

  • 当TI=1时,选择的是局部描述符表LDT。

  • 有4个特权级,00、01、10、11,称作0级、1级、2级、3级

  • 0级的特权最高,1级次之,3级的特权最低。

段选择符装入段寄存器的操作

装入段寄存器的指令有2类

**直接的装段寄存器指令:**例如MOV DS,AX等。

**隐含的装段寄存器指令:**例如CALL FAR SUB1,JMP FAR AA6等。

二、保护模式下的访问操作与保护机制

2.1 保护机制的分类

1.任务间存储空间的保护

任务间的保护是通过每一个任务所专用的LDT描述符实现的。根据LDT描述符,每个任务都有它特定的虚拟空间,因而避免各任务之间的干扰,起到隔离、保护的作用。

2.段属性和界限的保护

当段寄存器进行加载时,需要进行段存在性检查以及段限检查

在段描述符中给出了20位的段界限值,每当产生一个逻辑地址时,都要比较偏移量和段限值。一旦偏移地址大于段限值,CPU就终止执行命令,并发出越限异常。由此限制每个程序段只在自己的程序、数据段内运行,不相互干扰。

最后,还要对该段的读写权限进行检查

3.特权级与特权级保护

特权级与特权保护是为了支持多用户多任务操作系统,使系统程序和用户的任务程序之间、各任务程序之间五不干扰而采取的保护措施。

3种形式的特权管理:

(1)当前特权级CPL

  • CPL是当前正在执行的代码段所具有的访问特权级
  • 每一项任务都是在其代码段描述符所确定的特权级中运行。当前特权级就是任务执行时所处的特权级。例如,一个正在运行的任务的CPL,就是其描述符中访问权限字节的DPL。当前特权级的值一般就是代码段描述符中的DPL。

(2)描述符特权级DPL

DPL是段被访问的特权级,保存在该段的段描述符的特权级DPL位。

(3)请求特权级RPL

RPL是新装入段寄存器的段选择符的特权级,存放在段选择符的最低两位

特权管理规定:特权级为P的段中存储的数据,只能由特权级高于或等于P的段中运行的程序使用;特权级为P的代码段/过程,只能由在低于或等于P的特权级下执行的任务调用。

为记忆方便,特权级规则可以不严格地归纳为

  • 高特权级可以访问低(等于)特权级的数据;
  • 低特权级可以调用高(等于)特权级的程序。

2.2 数据段访问

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3 分页存储管理

分页是虚拟存储器多任务操作系统另一种存储器管理方法。**段的长度是可变的,而页的长度是固定的,**比如每页4KB。

分页:将程序分成若干个大小相同的页,各页与程序的逻辑结构没有直接的关系。

Pentium微处理器采用二级页表方法对页面进行管理,第1级页表称作页目录,页目录中的页目录项指明第2级页表中各页表的基址。

页目录基地址寄存器CR3保存页目录的基地址,该基地址起始于任意4KB的边界。

页目录:由页目录项组成,页目录项包含下一级页表的基址和有关页表的信息。Pentium微处理器中,页目录最多包含1024个页目录项,每个页目录项为4个字节,所以,页目录白身占用一个4KB的页面(存储页)

页表:由页表项组成,页表项包含页面(存储页)的基和有关页面的信息。Pentium微处理器中,页表最多包含1024个页表项,每个页表项为4个字节,所以,页表自身也占用一个4KB的页面(存储页)。

2.4 段页式存储管理寻址过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

地址寄存器CR3**:保存页目录的基地址,该基地址起始于任意4KB的边界。

页目录:由页目录项组成,页目录项包含下一级页表的基址和有关页表的信息。Pentium微处理器中,页目录最多包含1024个页目录项,每个页目录项为4个字节,所以,页目录白身占用一个4KB的页面(存储页)

页表:由页表项组成,页表项包含页面(存储页)的基和有关页面的信息。Pentium微处理器中,页表最多包含1024个页表项,每个页表项为4个字节,所以,页表自身也占用一个4KB的页面(存储页)。

2.4 段页式存储管理寻址过程

[外链图片转存中…(img-kSzrAPLh-1719744231622)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/759557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

热题系列章节7

剑指 Offer 04. 二维数组中的查找 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数…

Chrome浏览器web调试(js调试、css调试、篡改前置)

目录 1. 打开开发者工具(Dev Tool) 2. 打开命令菜单 截图 3. 面板介绍 4. CSS调试 右键检查快速到达元素处 查找DOM数 利用面板Console查找DOM节点 内置函数查找上一个选择点击的元素 5. 调试JS代码(Javascript调试) 日志调试 选择查看日志等级 眼睛观测变量 …

创新前沿:Web3如何颠覆传统计算机模式

随着Web3技术的快速发展,传统的计算机模式正面临着前所未有的挑战和改变。本文将深入探讨Web3技术的定义、原理以及它如何颠覆传统计算机模式,以及对全球科技发展的潜在影响。 1. 引言:Web3技术的兴起与背景 Web3不仅仅是技术创新的一种&…

可编程定时计数器8253/8254 - 8253入门

时钟-给设备打拍子 概述 在计算机系统中,为了使所有设备之间的通信井然有序,各通信设备间必须有统一的节奏,不能各干各的,这个节奏就被称为定时或时钟 时钟并不是计算机处理速度的衡量,而是一种使设备间相互配合而避…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件,它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持,用户无需重新启动电脑即可在Mac上运行Windows应用程序,实现了真正的无缝切换。 二…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)

48全连接卷积神经网络(FCN) 1.构造函数 import torch import torchvision from torch import nn from torch.nn import functional as F import matplotlib.pyplot as plt import liliPytorch as lp from d2l import torch as d2l# 构造模型 pretrained…

Class Constructors and Destructors (类的构造函数和析构函数)

Class Constructors and Destructors [类的构造函数和析构函数] 1. Declaring and Defining Constructors (声明和定义构造函数)2. Using Constructors (使用构造函数)3. Default Constructors (默认构造函数)4. Destructors (析构函数)5. Improving the Stock Class (改进 Sto…

香港回归庆典开序幕,蝴蝶效应集团齐献礼

6月29日,香港各界庆典委员会庆祝香港回归祖国27周年活动启动礼在维多利亚公园举行。香港特区行政长官李家超、中央政府驻港联络办主任郑雁雄、香港各界庆典委员会主席谭锦球和筹委会主席陈鸿道等出席并致辞。 作为香港物流行业推广的领军企业,香港蝴蝶效应集团也以优秀企业代表…

Go 语言切片遍历地址会发生改变吗?

引言:今天面试的时候,面试官问了一道学 Go 语言的同学都会的简单代码,是关于 Go 语言 for 循环问题的,他询问了一个点,循环中共享变量的地址会发生改变吗? 相信听到这个问题的你,第一反应肯定是…

分享屏幕坐标和窗口通信

简介 实现功能&#xff0c;通过url传参选择扑克牌&#xff0c;桌面同时打开两个以上该窗口&#xff0c;扑克牌可以在窗口之间移动。 在线演示 屏幕坐标和窗口通信 实现代码 <!DOCTYPE html><html><head> <meta http-equiv"Content-Type" co…

Linux_动、静态库

目录 一、静态库 1、静态库的概念 2、制作静态库的指令 3、制作静态库 4、链接静态库 二、动态库 1、动态库的概念 2、制作动态库的指令 3、制作动态库 4、链接动态库 5、动态库的加载 三、静态库与动态库的区别 结语 前言&#xff1a; 在Linux下大部分程序进…

学习笔记——动态路由——OSPF(报头信息、报文信息、三张表)

六、OSPF协议的报头信息、报文信息、三张表 OSPF的协议报文在一个广播域内进行传递&#xff0c;是直接封装在IP报文中的&#xff0c;协议号为89。 OSPF本身5种类型&#xff1a;分别是Hello报文、DD报文、LSR报文、LSU报文、LSAck报文&#xff0c;各种不同类型的LSA其实只是包含…

Jedis、Lettuce、RedisTemplate连接中间件

jedis就像jdbc一样&#xff0c;用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

昇思25天学习打卡营第12天|ShuffleNet图像分类

1. 学习内容复盘 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&a…

C++ 数据库MySQL 学习笔记(3) - 数据库操作

C 数据库MySQL 学习笔记(3) - 数据库操作 视图操作 视图是从一个或多个表中导出来的表&#xff0c;是一种虚拟存在的表。视图就像一个窗口&#xff0c;通过这个窗口可以看到系统专门提供的数据&#xff0c;这样用户可以不看整个数据库表中的数据&#xff0c;而只关心对自己有…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

【Linux】Linux系统配置,linux的交互方式

1.Linux系统环境安装 有三种方式 裸机安装或者双系统 -- 不推荐虚拟机安装 --- 不推荐云服务器/安装简单&#xff0c; 维护成本低——推荐&#xff0c; 未来学习效果好 我们借助云服务器 云服务器&#xff08;Elastic Compute Service&#xff0c;ECS&#xff09;的标准定义…

昇思25天学习打卡营第7天|网络构建

昇思25天学习打卡营第7天|网络构建 前言函数式自动微分函数与计算图微分函数与梯度计算Stop GradientAuxiliary data神经网络梯度计算 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型&#xff01;从今…

基于SpringBoot的超市进销存系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 首页界面图 个人中心 个人中心…