1)非进程内核模型 ●操作系统的功能都不组织成进程来实现。该 模型包括一个较大的操作系统内核程序,进 程的执行在内核之外。当中断发生时,当前 运行进程的上下文现场信息将被保存,并把 控制权传递给操作系统内核。操作系统具有 自己的内存区和系统堆栈区,它将在核心态 执行相应的操作,并根据中断的类型和具体 的情况,或者是恢复被中断进程的现场并让 它继续执行,或是转向进程调度指派另一个 就绪进程运行
1)非进程内核模型 操作系统的功能都不组织成进程来实现。该 模型包括一个较大的操作系统内核程序,进 程的执行在内核之外。当中断发生时,当前 运行进程的上下文现场信息将被保存,并把 控制权传递给操作系统内核。操作系统具有 自己的内存区和系统堆栈区,它将在核心态 执行相应的操作,并根据中断的类型和具体 的情况,或者是恢复被中断进程的现场并让 它继续执行,或是转向进程调度指派另一个 就绪进程运行
图2-20非进程内核模型 P1 操作系统内核
图2-20 非进程内核模型 操作系统内核 P1 P2 … Pn
2)OS功能在用户进程内执行的实现模型 ●操作系统功能组织成一组例行程序供用户程序调用 认为操作系统例程与用户进程是上下文相关的,操 作系统的地址空间被包含在用户进程的地址空间中 因而,操作系统例行程序也在用户进程的上下文环 境中执行。 ●当发生一个中断后,处理器状态将被置成内核状态, 控制被传递给操作系统例行程序。此时发生了模式 切换,模式上下文(现场)信息被保存,但是进程 上下文切换并没有发生,仍在该用户进程中执行,提 供单独的内核堆栈用于管理进程在核心态下执行时 的调用和返回,操作系统例行程序和数据放在共享 地址空间,且被所有用户进程进程切换函数共享
2)OS功能在用户进程内执行的实现模型 操作系统功能组织成一组例行程序供用户程序调用, 认为操作系统例程与用户进程是上下文相关的,操 作系统的地址空间被包含在用户进程的地址空间中, 因而,操作系统例行程序也在用户进程的上下文环 境中执行。 当发生一个中断后,处理器状态将被置成内核状态, 控制被传递给操作系统例行程序。此时发生了模式 切换,模式上下文(现场)信息被保存,但是进程 上下文切换并没有发生,仍在该用户进程中执行,提 供单独的内核堆栈用于管理进程在核心态下执行时 的调用和返回,操作系统例行程序和数据放在共享 地址空间,且被所有用户进程进程切换函数共享
图2-210s功能在用户进程内执行的 实现模型 func 进程切换函数
图2-21 OS功能在用户进程内执行的 实现模型 进程切换函数 OS func OS func OS func P1 P2 … Pn
图2220S在用户进程内执行 实现模型的进程映像 进程控制块 内核堆栈
图2-22 OS在用户进程内执行 实现模型的进程映像 进程控制块 用户堆栈 用户私有地址空间(程序、数据) 共享地址空间 内核堆栈