进程执行
1.机制:受限直接执行
为了使程序尽快执行,操作系统使程序在受限制的情况下直接在CPU进行执行。为了限制进程的操作,采用引入用户态(目态)与内核态(管态)的方式区分权限。使程序运行在用户态,操作系统运行在内核态。为了满足用户执行特权操作的需求,操作系统提供了系统调用来完成用户进程需要的特权操作。
执行系统调用需要通过陷阱指令实现,以从用户态切换到内核态。执行陷阱时,处理器将进程的相关信息如寄存器,标志位等保存在内核栈,以在进程重新运行时恢复。
陷阱发生时如何执行指令,是由内核在启动时设置陷阱表来实现的。
用户态与内核态转换的三种方式:中断,故障,系统调用
进程切换
协作方式:等待系统调用
非协作方式:利用时钟中断
进程切换需要进行上下文切换。
两种类型的寄存器保存/恢复:
时钟中断时,寄存器被硬件隐式保存在进程的内核栈
操作系统决定做进程切换时,将寄存器内容保存到该进程的进程结构内存中
(:内核在创建进程时会为进程创建相应的堆栈,每个进程有两个栈,用户态运行时使用用户栈,内核态运行时使用内核栈。)