基础(内核情景分析)

8086 ALU宽度16,数据总线宽度20。
段寄存器:CS,DS,ES,SS
内部地址高12位+段寄存器=实际地址高12位,内部地址低4位=实际地址低4位
以段寄存器地址为基址,进程可随意访问内存64K地址,且没有特权保护,为<实地址模式>

80386ALU宽度32,数据总线宽度32。
段寄存器添加:FS,GS。 (16位)
段描述表寄存器出现:GDTR,LDTR,(16位)有特权位。段描述项为8字节数据:
typedef struct {
unsigned int base24_31:8; /* 基地址的最高8位 */
unsigned int g:1; /* granularity表段的长度单位,0表示字节,1表示4kb */
unsigned int d_b:1; /* default operation size 存取方式0=16位1=32位 */
unsigned int unused:1; /*固定设置0 */
unsigned int avl:1; /* avalaible可供系统软件使用 */
unsigned int seg_limit_16_19:4; /* 段长度的最高4位*/
unsigned int p:1; /* segment present为0时表示该段的内容不在内存中 */
unsigned int dpl:2; /* Descriptor privilege level访问本段所需权限 */
unsigned int s:1; /* 描述项类型1表示系统0表示代码或数据*/
unsigned int type:4; /* 段的类型,与上面S标志位一起使用 */
unsigned int base_0_23:24; /* 基地址的低 24位 */
unsigned int seg_limit_0_15:16; /*段长度的低16位*/
} 段描述项;
关注:段长度,段描述结构,越界检查,越权检查 为<保护模式>

flat adress(平面地址) : 把每个段寄存器都指向同一个描述项,该描述项基地址设为0,段长度设为最大,形成一个从0开始覆盖整个32位地址空间的一个整段。由于基地址为0,此时物理地址与逻辑地址相同,cpu放到地址总线上去的地址就是在指令中给出的地址。

------------
  看看ARM:
------------
ARM处理器共有7种运行模式:
用户模式:  正常程序工作模式,不能直接切换到其它模式。
快中断模式:支持高速数据传输及通道处理。FIR异常响应时,进入此模式
中断模式:  通用中断处理。IRQ异常响应时,进入此模式。
管理模式:  操作系统保护代码,系统复位和软件中断时,进入此模式。
中止模式:  支持虚拟内存,存储器保护。
未定义模式:支持硬件协处理器和软件仿真。未定义指令异常响应时,进入此模式。
系统模式:  用于支持OS的特权任务。与用户模式类似,但可以直接切换到其它模式。
   除用户模式外,其它都为特权模式。某些ARM内部寄存器和一些片内外设在硬件设计上只允许特权模式下访问。特权模式可以自由切换处理器模式。但用户模式不能直接切换到别的模式。

中断向量表:
 ——————————————————————————————————————-
 |  中断向量地址    |  异常中断类型   |   异常中断模式   |  优先级(6最低)  |
 |-———————— |—— ——————|—————————|———— ————--|
 |     0x00         |   复位          |     特权模式     |       1           |
 |     0x04         |   未定义的指令  |     UND终止模式  |         6         |
 |     0x08         |   软件中断      |     特权模式     |          6        |
 |     0x0C         |   指令预取终止  |     终止模式     |         5         |
 |     0x10         |   数据访问终止  |     终止模式     |         2         |
 |     0x14         |   保留          |     未使用       |        未使用     |
 |     0x18         |   外部中断请求  |     IRQ模式      |          4        |
 |     0x1C         |   快速中断请求  |     FIQ模式      |          3        |
 ——————————————————————————————————————-


80386的系统结构决定了它的页式存管只能建立在段式存管基础上,页式存管的作用是由段式存管所映射而成的地址上再加一层地址映射.
    逻辑地址 ---- 线性地址 ---- 物理地址
段式存管:连续逻辑地址经映射线性地址连续; 页式存管:连续线性地址经映射物理地址不一定连续.线性地址:
typedef struct {
unsigned int dir:10; /* 用作页面表目录中的下标,该目录项指向一个页面表*/
unsigned int page:10; /* 用作具体页面表中下标,该表项指向一个物理页面*/
unsigned int offset:12; /* 在 4K 字节物理页面内的偏移量 */
} 线性地址;
指向当前页面目录指针寄存器:CR3
CR3+dir ---> (CR3+dir内容)+page --->(((CR3+dir内容)+page)内容)+offset ---> 物理地址
由于一个页为4KB,目录项和页表项起始地址总是4KB边界,低12位永为0,所以目录项和页表项只需要20位用作指针.其他的用作控制,象缺页,脏页,读写权限,系统权限等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值