1.权限控制
分为两类,段保护和页保护的权限级别控制。
段保护:
段保护的权限控制,组成部分有3:当前权限级别,描述符权限级别,所要求权限级别。
CPL,当前权限级别,由CS寄存器的0~1确定;
DPL,描述符权限级别,DPL。表示这个段所需要的最低权限。
RPL,所要求权限级别,存在于段寄存器的0~1,注意,这里不包含CS,因为它代表的是当前权限级别。
要求: CPL<= DPL; RPL<= DPL.
页保护:
页保护的思想更简单。在页目录项和页表项中引入一个User/Supervisor位,将页面分成User和Supervisor两个特权级。该位为0对于Supervisor情况,对应CPL = 0,1,2 . 该位为1表示User情况,对应CPL = 3 的情况。前者可以访问所有页面,后者只能访问User页面。
2.中断与异常
可编程中断控制器,是中断发生传送给CPU的中间部件,有PIC和APIC两种。
PIC: 有三个最重要的寄存器: IRR,中断请求控制器;ISR,服务中寄存器; IMR,中断屏蔽寄存器。
发生中断后一般会涉及到进程上下文的切换。这里有三种方式: 用户态到内核态的切换,进程切换,中断上下文的切换。
3.IO架构
x86的IO一般分为两类,端口IO和内存映射IO。
端口IO地址是空间独立的,也就是说它并不是线性地址空间或者物理地址空间的一部分,使用的是IN和OUT指令来操作。
内存映射IO将设备的RAM和设备寄存器映射到物理地址空间的某段,那么使用MOV等指令就可以完成外部设备的访问。
当然还有一种是 DMA,即不通过CPU就可以直接向内存中复制数据。