读《系统虚拟化-原理与实现》-第二章

x86构架及操作系统概述

x86内存构架

  • 地址空间和地址

    • 物理地址空间:内存和其他硬件资源组合到一起,分布在CPU的物理地址空间内,CPU使用物理地址索引这些资源
    • 线性地址空间:一个平台只有一个物理地址空间,但每个程序都认为自己独享整个平台的硬件资源,每个进程都有自己的私有线性地址空间
    • 逻辑地址:
    • 物理地址:是CPU提交导总线用于访问平台内存或硬件设备的最终地址
    • 线性地址: 又叫虚拟地址,当分页机制开启时,线性地址必须转换为物理地址才能访问平台内存或硬件设备
  • 分页机制

    • 分页机制是更加粒度化的内存管理机制,典型页大小是4KB页。其核心思想是通过页表将线性地址转换为物理地址。
    • 相关的寄存器:CR0的PG置1开启分页机制、CR3存储页表基地址
  • 页表

    • 页目录项: 包含页表的物理地址。CPU使用线性地址的22~31为索引页目录。每个页目录大小为4B
    • 页表项: 包含该线性地址对应的PFN(physical frame number)CPU使用线性地址的12~ 22位索引,每项大小为4B,PFN+线性地址0~11位得到物理地址。

X86构建的基本运行环境

  • 三种基本模式

    • 实模式:CPU上电首先进入的就是此模式,无权限分级。
    • 保护模式: 操作系统运行时常用的模式,有特权分级。
    • 虚拟8086模式
  • 基本寄存器

    • 通用寄存器:有8个32位通用寄存器
    • 内存管理寄存器: 包括端寄存器和描述符表寄存器
    • EFLAGS寄存器:32位的用来保存程序运行中的一些标志信息(如异常、开启终端与否)
    • EIP寄存器: 32位的,用来保存想当前指令的地址,也叫PC指针
    • 浮点运算寄存器
    • 控制寄存器: CR0~CR4,决定了CPU运行的模式和特征
  • 中断与异常

PIC:programmable interrupt controller 可编程中断控制器
IRR: interrupt request register 中断请求寄存器
ISR:in service register 服务中寄存器
IMR:interrupt mask register 中断屏蔽寄存器

  • PIC向中断提交中断流程:
  1. IR管脚上有触发电平,若对应中断没有被屏蔽则IRR中对应位被置1
  2. PIC拉高INT管脚通知CPU中断发生
  3. CPU通过INTA管脚银达PIC
  4. PIC收到INTA应答后,将IRR中最高优先级中断位清0,并设置对应的ISR位
  5. CPU通过INTA管脚第二次发出脉冲,PIC收到后计算最高优先级的中断vector,并提交到数据线上
  6. PIC等待CPU写EOI,收到EOI后,ISR中优先级最高的位被清0
  • 多处理器平台出现后APIC应运而生,其结构如下图(摘自百度百科)
  • APIC结构

概念

  • 异常: 异常最大的不同在于它是在程序的执行过程中同步发送的
  • 进程: 是一个容器,其中包含了当执行一个程序的特定实例时所用到的各种资源
  • 上下文:是程序运行时所需要的寄存器的最小集合
    • 上下文切换
    1. 用户态切换、内核态的切换
    2. 进程切换
    3. 中断上下文切换

I/O构架

  • Port I/O:通过I/O端口访问设备寄存器,X86有65536个8位的I/O端口(64K)可以使用IN/OUT命令访问端口
  • MMIO: Memory Map IO,通过访问内存的方式来访问设备寄存器或设备RAM

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能家居 (4) ——工厂模式火焰报警

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

智能家居 (5) —— LD3320语音模块二次开发

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

linux命令整理

1. mkdir ##创建目录 命令 【参数】 路径文件 参数: mkdir -p ##递归创建 mkdir -v ##显示创建目录的过程 示例: [rootXM ~]# mkdir /data [rootXM ~]# mkdir -pv test/{1..3}/{4..6} ##同时创建多个目录及子目录 mkdir: created di…

eclipse搭建SSH框架详解

2019独角兽企业重金招聘Python工程师标准>>> SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题。下面我介绍一下SSH框架搭建的全过程。 第一步:准备工作。 下载好eclipse,Struts2,Spring,Hibernate。…

龙芯派启用串口3-5

硬件平台:龙芯派二代 内核版本:linux-3.10 这几天在龙芯派上加了一个无线串口,决定采用串口3来连接串口,在龙芯派上执行 #ls /dev/ttyS* 发现只有ttyS0,查看设备树后发现其他串口的设备树节点都是有的&#xff0c…

智能家居 (7) ——网络服务器线程控制

目录网络线程控制代码inputCommand.hmainPro.csocketControl.c代码测试往期文章网络线程控制代码 inputCommand.h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wiringPi.h> #include <wiringSerial.h> #include &l…

龙芯3A4000 VNC配置

安装 yum install tigervnc-server -y 拷贝配置文件 cp /lib/systemd/system/vncserver\.service /lib/systemd/system/vncserver:1.service修改配置文件 vim /lib/systemd/system/vncserver:1.service替换< USER>为用户名 配置、启动vnc systemctl enable vncs…

智能家居 (6) ——语音识别线程控制

目录语音识别线程控制代码inputCommand.hmainPro.cvoiceControl.c代码测试往期文章语音识别线程控制代码 inputCommand.h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wiringPi.h> #include <wiringSerial.h>struc…

MIPS结构体传参

本文讲解了C语言运行在MIPS体系中结构体传参的情况 硬件平台&#xff1a;Loongson 3A3000 系统&#xff1a;uos 在《see MIPS run》中11.2.5中描述到&#xff0c;会将结构体成员压缩到各个arg寄存器中进行传递 “we have to pack the register with data to mimic the arran…

对象创建过程之二(类加载器)

2019独角兽企业重金招聘Python工程师标准>>> JAVA为我们提供了两种动态加载机制。 第一种是隐式机制。其实new一个对象和调用类的静态方法时&#xff0c;就是隐式机制在工作。 第二种是显示机制。显示的机制又有两种策略 第一种是用public static Class<?> …

Python_堆栈和队列

堆栈和队列 (1)堆栈&#xff0c;新放进去的先取出 #encodingutf-8 >>> stack [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> print (stack) [3, 4, 5, 6, 7] >>> print (stack.pop()) 7 >>> print (stack) […

智能家居 (10) ——人脸识别祥云平台编程使用(编译libcurl库支持SSL,安装SSL依赖库libssl、libcrypto)

目录说明人工智能OCR识别平台介绍人脸识别接口购买编程打通OCR后台实现人脸识别&#xff08;ubuntu上实现&#xff09;问题发现编译libcurl库支持SSL安装SSL依赖库openSSL(使用工具wget)curl库重新配置&#xff0c;编译&#xff0c;安装开启SSL后重新编译人脸识别.C文件传入图片…

srs 服务关闭命令_【经验总结】如何做到网络版工作站与服务器时间同步?

随着行业发展&#xff0c;越来越多的实验室色谱数据工作站由原来的单机版&#xff0c;升级为网络版。升级后带来的益不必多说&#xff0c;那么升级带来的困难你遇到过吗&#xff1f;快来跟小析姐一起看看牛人是如何解决问题的吧。最近公司将色谱工作站进行了升级&#xff0c;采…

oss图片尺寸调用方式_是时候来一场轰轰烈烈的OSS升级了

【摘要】伴随5G和云网部署的持续推进&#xff0c;运营商OSS升级建设都已经在不断加速。| 科 | 技 | 杂 | 谈 |中国通信行业第一自媒体【1】运营商的IT支撑系统&#xff0c;正迫切需要新一轮的调整转型。今天&#xff0c;中国移动在2020全球合作伙伴大会上宣布&#xff0c;全球最…

由C过渡到C++-入门知识点

从C语言过渡到C&#xff0c;这些知识点应该是比较重要的。 目录 第一个C程序名称空间特性coutcin 缺省参数重载提问&#xff1a;为什么C语言不支持重载而C支持 引用常引用 引用与函数返回值对于指针和引用的区别引用的底层实现两者在语法上两者在物理上两者的不同之处 内联函数…

gdb pwndbg插件安装

环境&#xff1a; gdb 9.2ubuntu 20(x64) 连接 pwndbggdb9.2gdb9.2网盘连接 密码: kaq4GDB中文教程 编译gdb 由于发行的gdb比较老&#xff0c;pwndbg建议使用高版本GDB&#xff0c;因此我们下载最新的GDB9.2 安装依赖 #apt install texinfo解压GDB,卸载自带GDB #tar -vxf…

Android--UI之DatePicker、TimePicker...

前言 这一篇博客分别讲解Android平台下&#xff0c;关于日期和时间的几个相关控件。包括DatePicker&#xff08;日期选择控件&#xff09;、TimePicker&#xff08;时间选择控件&#xff09;、DatePickerDialog&#xff08;日期选择对话框&#xff09;、TimePickerDialog&#…

递归和迭代路由_静态路由在以太网接口中的不同书写会导致路由器怎样的操作结果?...

各位小伙伴们&#xff1a;大家好&#xff01;上一节和大家分享了在不同类型的网络中应该使用什么样的静态路由配置命令&#xff1b;今天我们再来看看在常见的多路访问(MBA)网络——以太网中&#xff0c;静态路由的不同书写方式将导致路由器执行那些不同的操作。如下图&#xff…

实验报告三

学 号 201521440010 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验三 密码破解技术 学生姓名 邱景丛 年级 2015 区队 四 指导教师 高见 信息技术与网络安全学院 2016年11月7日 实验任务总纲 2016—2017 学年 第 一 …

设计前沿:25个设计师向您展示 iOS 7 界面

我们中的许多人都对新发布的 iOS 7 用户界面有点失望。扎眼的颜色搭配&#xff0c;难看的图标和可疑的设计决策&#xff0c;导致很多的设计师在 Dribbble 和 Behance 等社交网站分享自己对 iOS 界面设计的诠释。这篇文章集合了一些伟大的想法&#xff0c;改进苹果 iOS 7 的界面…