1, 关于指令和寄存器
CPU 包括CISC(复杂指令计算机)和RISC(简单指令计算机)
2,中断机制
CPU 都提供对中断机制的支持,包括基于中断类型的中断向量表,基于中断级别的中断响应和中断屏蔽机制等等。
(1)Intel CPU
Intel CPU 的中断向量表共有256个中断向量和中断描述,中断向量表的大小为1KB~2KB,位于物理内存的前1KB/前1MB,但理论上可以位于物理内存的任何位置,其基地址由IDTR寄存器指定。每个中断向量或中断描述符占4B~8B,其内容为中断处理程序入口地址(例如段基地址和段内偏移地址及特权级别标志等)。
在Inter体系结构中,中断(interrupt)是指一个异步事件,典型地被I/O设备所触发。中断包括两种:1)外部(硬件产生的中断):例如外设产生的中断等;2)软件产生的中断(INT n)。中断在中断向量表中的中断号为2和32~255。
异常是一个同步事件,当处理机在一条指令执行时查到一个或多个预定义的条件(错误时)产生。异常有3种类型:错误(fault),陷入(trap),中止(abort)。错误是通常可以被修正的异常中断,一段修正,允许程序继续执行。中止是指这样的异常:它不总报告引起异常的那条指令的具体位置,不允许程序继续执。中止用于报告严重错误,陷入是在EFLAGS中的TF=1时每执行一条指令后便产生一次的异常。
异常主要包括3类:1)CPU 查到的程序错误:除法错,无效指令,无效TSS,段不存在等等。2)软件产生的异常:3)机器检测测异常。
(2)MIPS CPU
中断和异常的概念在MIPS中与Intel中大不相同。MIPS 中的异常,是Intel 中所述的中断概念的概念范围。当一条指令有多个异常发生时,只有优先级别高的异常才会被报告。另外,与Intel 有很大不同的是,MIPS中没有中断向量表和异常向量表的概念。异常向量的地址是固定在硬件电路中。
(3) 保护机制
CPU 都设有保护机制,以防止低优先级的用户程序越权执行或越权访问数据。典型的保护机制是两态划分(用户态和核心态),但有些CPU划分得更细。其中,MIPS的CPU有3种运行方式,用户态(user mode),管理态(supervisor mode),核心态(kernel mode)。管理态是为分层交换系统设立的,真正的核心在核心态下运行,而操作系统的其它部分是在管理态下运行的。Intel 系列的CPU提供2~4个特权级别,特权指令是指只能在特权级0执行的指令,这些指令在更低特权级执行会产生异常中断。Intel 体系结构中有16条特权指令。
3 进程的三态转换分析
1)进程正在使用CPU——运行态或执行态(run);进程正在等待I/O完成(或其他事情发生)
2)不在使用也不能使用CPU——等待态(wait)
3)进程不在使用CPU,但已准备好使用CPU(不在等待I/O或其他事件)——就绪态或称可运行态。
进程状态切换的几种情况和原因;
运行态——>等待态:当前进程需要等待某类事件的发生。在该事件发生前无法运行下去,如等I/O结束或者结束任务进程的信号。在转换过程中,发生进程切换,当前进程切换为等待状态,并置入等待队列。 发生进程切换, 其他进程由就绪态转入运行态。
等待态——>就绪态:当前等待的事件发生了,由中断导致。该进程改为就绪态,并置入调度队列。 该状态改变过程中不发生进程切换,也不引起其他进程的状态切换。
就绪态——>运行态:该进程被调度选中了,该进程改为运行态,并从调度队列中去掉。该状态改变不发生进程切换和引起其它进程切换。
运行态——>结束:
建立——>就绪态:
建立——>运行态:
一个问题:进程切换可能在用户态下发生么?
答案是不可能,只有在以系统调用或中断方式进入操作系统后,才可能需要和可能进行进程切换。