操作系统IR,SP,PC,PSW,SR基础理解

您所在的位置:网站首页 计算机sp是什么意思 操作系统IR,SP,PC,PSW,SR基础理解

操作系统IR,SP,PC,PSW,SR基础理解

2024-07-01 01:49| 来源: 网络整理| 查看: 265

IR(Instruction Register,指令寄存器)

什么是指令:

指令通常分为操作码和操作数,是一些01序列。

例如,当执行“a+b”这个操作时,操作码为"+";操作数为“a”"b"。在计算机系统中,操作码与操作数由二进制数值或十进制数值表示,例如,0001可能表示加操作,0010可能表示乘操作。

指令存储在指令寄存器(IR)中,IR通常有32位或64位,某一时刻IR中只有一条指令,表示当前正在执行该指令。

SP(Stack Pointer,堆栈指针寄存器)

堆栈是一个用于存储临时数据和函数调用信息的数据结构。SP 指向堆栈的当前顶部,当数据被推入或弹出堆栈时,SP 会相应地递减或递增。

用户态和内核态各自拥有独立的堆栈!

堆栈用途不同:用户态和内核态的代码具有不同的功能和用途。用户态堆栈主要用于用户程序的函数调用、局部变量和用户级别的堆栈帧。内核态堆栈则用于内核函数的调用和执行,其中包括系统调用处理、中断处理、异常处理等。这些不同的用途需要不同的堆栈来管理函数调用和局部数据。

PC(Program Counter,程序计数器):

概念:程序计数器通常有32位或64位,能表示2^32或2^64个内存地址,程序计数器某一时刻只能存储一个地址,该地址指向下一条将要执行的指令。

功能:是控制指令执行流程的关键,确保指令按照正确的顺序执行。

工作方式 顺序执行

在大多数情况下,当处理器按照程序的顺序执行指令时,PC 会自动递增,指向下一条指令的地址。这意味着处理器按照指令的顺序一个接一个地执行,不需要额外的干预。

分支和跳转指令

分支和跳转指令通常不需要切换到内核态。

当接受到 jmp 跳转指令时(该指令本身会包含新的地址信息,指令的操作码是jmp,操作数就是新的地址),PC不再按顺序执行,而是保存跳转指令中的地址信息,确保指令按照正确的顺序执行。

中断和异常指令

以下是一个中断指令的伪代码:INTERRUPT 0x10  

操作码INTERRUPT表示该指令是一个中断指令;

操作数0x10表示处理器需要执行中断号为 0x10 的中断处理例程。

中断指令的操作数一般包含中断号或其他附加信息,以指示具体的中断类型或处理程序,具体的中断号和中断处理程序的地址将在中断向量表(IVT)中进行映射。

具体的流程:

当处理器遇到中断(interrupt)或异常(exception)时,

1、处理器暂停当前的执行流程,CPU切换到内核态(以下的所有操作都是在内核态下进行的)。

2、用户态的SP和PC 值保存到内核堆栈中,内核态下的操作都在内核栈上进行的。

3、根据中断指令的操作数跳转到一个与中断或异常相关的处理程序。处理程序的地址通常是预定义的,并且也存储在中断向量表中。

4、执行完内核态程序后,堆栈指针和程序计数器的值恢复到之前存储的用户态的SP和PC值。

5、内核执行返回指令(例如,RET或 IRET 指令),内核态切换为用户态。

函数调用和返回(这个作者也没太懂- -)

当函数被调用时,当前函数的返回地址(通常是下一条指令的地址)会被推入堆栈中,同时 SP 寄存器会递减以指向堆栈的新顶部。这样,函数的局部变量和状态可以在堆栈中存储。当函数返回时,SP 会递增,以弹出返回地址并恢复到调用函数的上下文,其中包括更新 PC 以继续执行下一条指令。

PSW(Program Status Word, 程序状态字)

PSW和SR的区别:

PSW 通常包含更广泛的状态信息,包括程序执行状态、特权级别、中断使能状态、程序计数器(PC)的值、堆栈指针(SP)的值等。它涵盖了与程序执行和控制相关的多个方面。

SR 通常包含与运算状态相关的标志位,如零标志、溢出标志、进位标志等。它主要用于存储最近一次运算结果的状态信息,以便在条件分支和逻辑判断中使用。

SR(Status Register,状态寄存器)

32bit,一般只使用6bit,分别存储:

Z(zero):一般情况下,程序出错时返回非零值。

V(overflow):是否溢出。

N(negative):是否为负值。

特权位(只有内核态可以修改):

I(Interrupt):是否为中断指令。

S(System mode):存储CPU处于用户态(0)还是内核态(1)。

P(Paging):分页(内存管理,后序会学)

共享内存,进程与线程

不同进程在同一时刻不能同时访问相同的地址空间,但共享内存技术可以实现这一点;

与之相对应的是,同一进程的不同线程可以在同一时刻访问相同的地址空间。

两种不同的虚拟方式:

time sharing : exclusive use, one at a time space sharing : everyone gets a small chunk all the time CPU: time sharing, alternate between tasks Memory: space sharing (more later) Disk: space sharing (more later)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3