进程创建:
1.给新进程分配一个唯一的进程号
(主进程表中增加一个新项目,表中的每个项目指向一个进程)
2.给进程分配空间
3.初始化进程控制块
4.设置正确的连接
5.创建或扩充其他数据结构
进程切换:
三种有可能发生进程切换使得把控制权交给操作系统的事件:
(1)中断 当前指令的外部执行 对异步外部事件的反应
(2)陷阱 与当前指令的执行相关 处理一个错误或异常条件
(3)系统调用 显式请求 调用操作系统函数
进程切换的步骤
1.保存处理器上下文,包括程序计数器和其他寄存器
2.更新当前处于运行态的进程的进程执行块。
3.把进程的进程控制块移到相应的队列
4.选择另一个进程执行
5.更新所选择的进程的进程控制块,包括把进程的状态变为运行态。
6.更新内存管理的数据结构,这取决于如何管理地址的转换
7.回复处理器在被选择的进程最近一次切换出运行态时的上下文,这可以通过载入程序计数器和其他寄存器以前的值来实现。
UNIX中的进程由三部分组成
(1)用户上下文p106(129)详细介绍
(2)寄存器上下文
(3)系统级上下文
进程控制:
当一个进程产生一个fork请求时,操作系统执行以下功能:
1.为新进程在进程表中分配一个空项
2.为子进程赋一个唯一的进程标识号
3.做一个父进程上下文的逻辑副本,不包括共享内存区
4.增加父进程拥有的所有文件的计数器,以表示有一个另外的进程现在拥有这些文件
5.把子进程置为就绪态
6.向父进程返回子进程的进程号对子进程返回0
内核操作结束后进行以下三步之一
1.在父进程中继续执行
2.处理器控制权转交给子进程。
3.控制权转交给另一个进程,父子进程都置于就绪态。