X86 os介绍

来源:互联网 发布:柠檬水淘宝 编辑:程序博客网 时间:2024/05/29 23:44

1、os

  os作为硬件平台上的最重要团建,对下负责管理平台硬件,对上向应用程序提供接口。操作系统中最重要的部分称为操作系统内核,运行在CPU最高的特权级,称为内核态。应用程序通常智能访问部分资源,这种状态称为用户态。

2、x86内存架构

地址空间:像是一个大数组,是所有可用资源(包括内存和其他硬件资源)的集合,地址是这个数组的索引。分为:

  • 物理地址空间:物理地址空间的大小,由CPU实现的物理地址位数所决定,物理地址位数与CPU处理能力(即CPU位数)无关。例如16位8086CPU具有20位地址空间。
  • 线性地址空间:一个平台只有一个物理地址空间,但每个程序都认为自己独享整个平台的硬件资源,为了让多个程序能够有效地相互隔离和使用物理地址空间的资源,引入现象地址空间,和物理地址空间一样,线性地址空间的大小取决于CPU实现的线性地址位数。
  • 关系:线性地址空间会被映射到物理地址空间。CPU负责将线性地址转换成物理地址,使程序能够正确访问到该线性地址空间所映射到的物理地址空间。

地址:是访问地址空间的索引,根据访问的地址空间不同,索引分为线性地址和物理地址,但由于x86特殊的段机制,还有一种额外的地址——逻辑地址。

  • 逻辑地址:程序直接使用的地址,由一个16位的段地址+32位的偏移地址组成。eg:int a=1;int *p=&a;这里指针变量p存储的即是一个逻辑地址。

  • 线性地址:又称虚拟地址,是逻辑地址转换后的结果,用于索引线性地址空间。当CPU使用分页机制时,线性地址必须转换成物理地址才能访问内存或硬件资源;当分页机制未启用时,线性地址等于物理地址。
  • 物理地址:用来索引物理地址空间。
  • 关系:逻辑地址——>线性地址——>物理地址,当分页未启用时,线性地址等于物理地址。

x86内存管理机制:

  • 分段机制:将内存划分成以起始地址(Base)和长度描述的块,这些内存块就称为“段”,段可以与程序最基本的元素联系起来,例如程序可以简单的分为代码段、数据段和栈,段机制中就有对应的代码段、数据段和栈段。分段机制由4个部分构成:逻辑地址、段选择寄存器、段描述符和段描述符表。借用图片如下:原图链接: http://blog.chinaunix.net/uid-26126915-id-2981205.html     核心思想:使用段描述符描述段的基地址、长度以及各种属性(例如读写属性、访问权限)。当程序使用逻辑地址访问内存的某个部分时,CPU通过逻辑地址中的段选择符索引段描述符表,以得到该内存对应的段描述符,并检测程序的访问是否合法,如合法,根据段描述符中的基地址将逻辑地址转换成线性地址,也就是虚拟地址

  • 分页机制:分页是更加粒度化的内存管理机制,与分段机制将内存划分成以基地址和长度描述符的多个段进行管理不同,分页机制是用粒度化的单位“页”来管理线性地址空间和物理地址空间。分页机制的核心思想:通过页表将线性地址转换成物理地址,并配合旁路缓冲区(TLB)来加速地址转换过程。
  • 页:将线性地址空间划分成若干大小相等的片,称为页(page

    页面:对应页的划分将物理地址空间分成与页大小相等的若干存储块,就称为页面或块。

    3、x86运行模式

  • 实模式:当CPU加电并经历最初的混沌状态后,首先进入的就是实模式。在该模式下,逻辑地址转换后即为物理地址,CPU可以访问1MB的物理地址空间(实际是1MB+64KB)。操作系统或BIOS通常在该模式下准备必要的数据结构和初始化关键的寄存器,然后切入到保护模式。
  • 保护模式:操作系统运行时最常用的模式。在该模式下,CPU所有的功能几乎都能得到使用,可以访问架构允许的所有物理地址空间。
  • 虚拟8086模式:为了使早期的8086程序能在保护模式下运行,x86提供了虚拟8086模式。该模式可以让CPU在保护模式下为8086程序虚拟实模式的运行环境,使这些程序在执行时无须真正的从保护模式切换到实模式。

参考:

《系统虚拟化——原理与实现》






    0 0
    原创粉丝点击