考研帮 > 数学 > 每日一练

1.4 操作系统结构设计

1.4.2 操作系统功能的实现模型

  操作系统本身是一组程序,像其他程序一样也在处理器上执行,那么,操作系统程序是否组织成进程?它是如何控制和怎样执行的呢?下面来讨论这个问题。从操作系统的执行方式来看,可以把它分成:非进程内核模型、OS功能(函数)在用户进程内执行的模型和OS功能(函数)作为独立进程执行的模型3种。
  1.非进程内核模型
  许多老式操作系统的实现采用非进程内核模型,即操作系统的功能都不组织成进程来实现,如 图1-2所示,该模型包括一个较大的操作系统内核程序,进程的执行在内核之外。当中断发生时,当前运行进程的上下文现场信息将被保存,并把控制权传递给操作系统内核。操作系统具有自己的内存区和系统堆栈区,用于控制过程调用和返回。它将在核心态执行相应的操作,并根据中断的类型和具体的情况,或者是恢复被中断进程的现场并让它继续执行,或是转向进程调度指派另一个就绪进程运行。
  在这种情况下,进程的概念仅仅是针对用户程序而言的,操作系统代码作为一个独立实体在内核模式下运行。

  2.OS功能在用户进程内执行的模型
  小型机和工作站操作系统(如UNIX等)往往采用OS的所有功能在用户进程内执行的模型,如图1-3所示,在这种实现模型中,大部分操作系统功能组织成一组例行程序供用户程序调用,认为操作系统例程与用户进程是上下文相关的,操作系统的地址空间被包含在用户进程的地址空间中;因而,操作系统例行程序也在用户进程的上下文环境中执行。图1-4给出了OS的所有功能在用户进程内执行的模型中的进程映像,它既包含进程控制块、用户堆栈、容纳用户程序和数据的地址空间等,还包括操作系统内核的程序、数据和系统堆栈区。
  当发生一次中断或系统调用后,处理器状态将被置成内核模式,控制从用户进程手中被剥夺并传递给操作系统例行程序。此时,发生了模式切换,模式上下文(现场)信息被保存,但是进程上下文切换并没有发生,操作系统仍在该用户进程中执行,提供单独的内核堆栈用于管理进程在核心态下执行时的调用和返回,操作系统例行程序和数据放在共享地址空间,且被所有用户进程共享。

  当操作系统例程完成了工作之后,如果让当前进程继续运行的话,就可以做一次模式切换来恢复执行原先被中断的用户进程。这种技术提供了不必要通过进程上下文切换就可以中断用户进程来调用操作系统例行程序的手段。如果发生进程切换,控制就被传递给操作系统的进程切换例行程序,由它来实现进程切换操作,把当前进程的状态置为非运行状态,而指派另一个就绪进程来占有处理器运行。需要指出的是,一些系统中进程切换例行程序是在当前进程中执行的,而另一些系统则不是。
  3.OS功能作为独立进程执行的模型
  OS 功能作为独立进程执行的模型把操作系统组织成一组系统进程、即操作系统功能是这些系统进程集合运行的结果,这些系统进程也称为服务器或服务器进程,于是与用户进程或其他服务器进程之间构成了Client/Server 关系,Windows 2000/XP采用了这种结构。如图1-5所示,除了极少部分功能在内核模式下运行,大部分操作系统功能被组织在一组分离的独立进程内实现,这组进程在用户模式下运行,而进程切换例行程序的执行仍然在进程之外。

  这一实现模型有很多优点。首先,它采用了模块化的操作系统实现方法,模块之间具有最少和简洁的接口。其次,大多数操作系统功能被组织成独立的进程,有利于操作系统的实现、配置和扩充,如性能监控程序用来记录各种资源的利用率和系统中用户进程的执行速度,由于这些程序并不提供给进程特别的服务,仅仅被操作系统调用,把它设计成一个服务器进程,便可赋予一定的优先级,夹在其他进程中运行。最后,这一结构在多处理器和多计算机的环境下非常有效,一些操作系统服务可指派到专门处理器上执行,有利于系统性能的改进。

关于"最后阶段,真题的正确打开方式_备考经验_考研帮"15名研友在考研帮APP发表了观点

扫我下载考研帮

考研帮地方站更多

你可能会关心:

来考研帮提升效率

× 关闭