进程表
为了实现进程模型,操作系统维护了一张进程表。每一个进程占用一个进程表项(又称进程控制块)。进程表项中保存了进程状态切换时所必要的信息,如程序计数器、堆栈指针、内存分配状况、打开的文件、账号和调度信息等。
典型进程表表项字段:
怎么实现进程切换
进程切换一般利用中断。每一个 I/O 类关联一个中断向量(interrupt vector)的位置(靠近内存底部的固定区域),它包含中断服务程序的入口地址。
中断发生后操作系统的底层工作步骤:
- 硬件压入堆栈程序计数器等
- 硬件从中断向量装入新的程序计数器
- 汇编语言过程保存寄存器值
- 汇编语言过程设置新的堆栈
- C 中断程序运行
- 调度程序决定下一个将运行的程序
- C 过程返回至汇编
- 汇编语言过程开始运行新的当前进程