版权归原作者所有,如有侵权,请联系我们

[科普中国]-常驻操作系统

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

常驻操作系统是指开机以后操作系统一直都在内存中,直到关机才退出。操作系统一般所需要内存空间都比较大,如果操作系统所有功能常驻内存,会大大降低系统资源的利用率和吞吐量。因为计算机系统中内存大小是有限的。这里常驻操作系统不是广义上操作系统,而是微内核操作系统。微内核操作系统需要内存较小,同时能实现与硬件有关的功能,符合系统性能和内存空间大小的要求。

内存空间地址空间(address space)表示任何一个计算机实体所占用的内存大小。源程序经过汇编或编译后再经过链接编辑程序加工形成的程序的装配模块,及转换为相对地址编址的模块,它是以0为基址顺序进行编址的。相对地址也称为逻辑地址或虚拟地址,把程序中由相对地址组成的空间叫做逻辑地址空间。相对地址空间通过地址再定位机构转换到绝对地址空间,绝对地址空间也叫物理地址空间1。内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。

微内核操作系统微内核由一群尽可能将数量最小化的软件程序组成,它们负责提供实现一个操作系统所需要的各种机制与功能,微内核操作系统就是一种基于微内核架构的操作系统。

组成够小的内核

在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分,它通常用于:

① 实现与硬件紧密相关的处理;

② 实现一些较基本的功能;

③ 负责客户和服务器之间的通信。

它们只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。

基于客户/服务器模式

由于客户/服务器(Client/Server)模式,具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。

应用“机制与策略分离”原理

在现代操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。

采用面向对象技术

操作系统是一个极其复杂的大型软件系统,我们不仅可以通过结构设计来分解操作系统的复杂度,还可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。

基本功能进程(线程)管理

大多数的微内核 OS,对于进程管理功能的实现,都采用“机制与策略分离”的原理。例如, 为实现进程(线程)调度功能, 须在进程管理中设置一个或多个进程(线程)优先级队列;能将指定优先级进程(线程)从所在队列中取出,并将其投入执行。由于这一部分属于调度功能的机制部分,应将它放入微内核中。应如何确定每类用户(进程)的优先级,以及应如何修改它们的优先级等,都属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。由于进程(线程)之间的通信功能是微内核 OS 最基本的功能,被频繁使用,因此几乎所有的微内核 OS 都是将进程(线程)之间的通信功能放入微内核中。此外,还将进程的切换、线程的调度,以及多处理机之间的同步等功能也放入微内核中。

低级存储器管理

通常在微内核中,只配置最基本的低级存储器管理机制。如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于机器的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法,采用何种内存分配与回收策略等,应将这部分放在微内核外的存储器管理服务器中去实现。

中断和陷入处理

大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理。此时微内核的主要功能,是捕获所发生的中断和陷入事件,并进行相应的前期处理。如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关的服务器。由服务器根据中断或陷入的类型,调用相应的处理程序来进行后期处理。