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

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,一经查实,立即删除!

相关文章

SCCM OS播发

SCCM OS播发1.在分发点启用PXE支持2.将启动映像包分发到分发点:需要将x86和x64都分发到分发点,如果只分发x64,在客户端pxe启动时会出现 no response from wds server.3.安装好模板机4.使用驱动精灵将驱动备份出来后,导入到SCCM中5.创建任务序…

crm——stark组件核心原理

关于stark组件的简要介绍:启动后、路由加载前定制一段代码。a. 创建一个 stark app 组件b. 编写ready方法1 from django.apps import AppConfig2 3 4 class StarkConfig(AppConfig):5 name stark6 7 def ready(self):8 from django.utils.module_…

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

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

tplink软件升级有用吗_tp-link路由器固件怎么升级更新

展开全部升级TP-LINK路由器32313133353236313431303231363533e58685e5aeb931333433623061软件方法分为如下三种,请结合实际情况选择升级方法:类型一、云服务器自动推送升级软件路由器WAN口联网成功后,在路由器管理界面登录TP-LINK ID&#xf…

java-多线程操作全(Thread)-Timer简单使用

一、 多线程概念和作用 线程指进程中的一个执行场景,也就是执行流程,那么进程和线程的区别是什么 1.每个进程是一个应用程序,都有独立的内存空间 2.同一个进程中的线程共享其进程中的内存和资源 (共享的内存是堆内存和方法内存,栈…

Apache http强制转为https页面访问(转)

1在httpd.conf文件里使下面模块生效LoadModule rewrite_module modules/mod_rewrite.so2httpd.conf配置文件或者是在httpd-vhost.conf文件里修改<Directory "C:/Apache2.2/docs/1.com">Options Indexes FollowSymLinksAllowOverride All# 上面是http-https时需…

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

虚拟化概述 概念&#xff1a; 在虚拟环境里&#xff0c;虚拟机监控器&#xff08;VMM&#xff09;抢占了操作系统的位置&#xff0c;编程的物理机的管理者&#xff0c;同时向上层的软件呈现出虚拟的硬件平台&#xff0c;欺骗着上层的操作系统 虚拟机可以看做是物理机的一种高…

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

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

java中事物的注解_编程式事务、XML配置事务、注解实现事务

Spring2.0框架的事务处理有两大类:1 编码式事务 , 这个不说.2 声明式事务 , 就说这个.声明式事务又有三种实现方法:1 (第一种) 最早的方法,用TransactionProxyFactoryBean,他是一个有AOP代理功能的FactoryBean.他返回的对象有事务.还要在spring的配置文件XML中配置,比较麻烦,不…

linux命令整理

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

eclipse搭建SSH框架详解

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

龙芯派启用串口3-5

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

vue插槽面试题_关于前端Vue框架的面试题,面试官可能会问到哪些。?

这年头&#xff0c;程序员面试都讲究坐姿&#xff0c;姿势不对&#xff0c;努力白费。参照下图&#xff0c;请同学们对号入座。回想一下&#xff0c;自己平时面试的坐姿&#xff0c;你在面试官眼里&#xff0c;大概是什么形象&#xff0c;可能是工程师&#xff0c;也可能是键盘…

测绘软件使用心得

作为测绘工程专业来说&#xff0c;学习使用测绘软件是每一个学生的必修课。在学校我们主要学习autoCAD和南方CASS。 对于CAD是目前使用最广泛的设计软件&#xff0c;广泛应用于建筑&#xff0c;机械&#xff0c;测绘设计等工作。我们主要学习了如何使用CAD来绘制基本图形。在画…

shell 脚本编程之for语句、if语句(2 )

一、bash条件测试&#xff1a;整数测试 [ expression ]字符测试 expression 条件测试 test expression test 根据表达式求值的结果返回 0&#xff08;真&#xff09;或 1&#xff08;假&#xff09;1、整数测试&#xff1a;数值比较-gt 大于-ge 大于或等于-eq…

龙芯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…

java程序设计精编教程第3版电子版课后答案_[java电子书] Java程序设计教程(第3版) PDF 电子书 百度云 网盘下载...

java自学网(www.javazx.com)-java论坛&#xff0c;java电子书推荐&#xff1a;《 Java程序设计教程(第3版)》- d5 C7 V4 o/ e/ Hjava电子书推荐理由&#xff1a;《Java程序设计教程(第3版普通高等教育十二五*规划教材)》讲解Java程序设计知识及其编程方法&#xff0c;包括Java语…

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…