您可以添加到网摘 让更多人关注此文章:
多任务和多用户操作系统
对操作系统,如果按照在一台计算机上同时可为多少个用户服务来区分,可分为单用户和多用户操作系统;如按照其在一台计算机上可同时执行多少个任务(又称为进程,是程序在计算机中的一个执行实例,可以被操作系统调度和管理)来区分,可分为单任务和多任务操作系统。
多任务操作系统不都是多用户操作系统,但多用户操作系统一定是多任务操作系统。多用户操作系统的特征是它可以同时与多个用户终端交互作用,随时响应多个用户终端的服务请求,并且每一个用户在该系统上都有其特定的使用环境以及对资源的控制权限(如对文件的访问、对设备的使用等)。有的操作系统(如 Windows 95)虽然允许用户在这种操作系统上启动多个任务同时运行,但它同时只能与一个用户进行交互,因此,这样的操作系统仍然是一个单用户操作系统。
Hopen OS是一个单用户操作系统。
分时系统和实时系统
从操作系统能否满足时间敏感的应用要求来区分,可把操作系统分为分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,追求某种意义上的公平。分时操作系统由调度程序自动计算进程优先级,而不是由用户控制进程的优先级。自动计算进程的优先级是为追求某种意义上的公平而使用的手段。例如,耗时长的进程和耗时短的进程如不加以区别,对耗时短的进程就不公平,所以需要把耗时长的进程的优先级调得低于耗时短的进程的优先级。分时系统适用于一般的科学计算、办公事务处理等不要求在限定的极短时间内得到结果的场合。分时系统完成一个任务所需时间不仅仅取决于任务及计算机系统本身,还受计算机系统中有正在处理的任务多少的影响,计算机系统中正执行的任务越多,完成其中一个任务所需的时间就越长。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。执行完规定的功能和响应外部异步事件所需时间的长短是衡量实时操作系统实时性强弱的指标。实时操作系统给用户提供控制进程调度的手段,并给用户提供安排实时应用进程的依据。用户可发挥自己的智慧,安排实时应用,使系统在资源有限的情况下,支持尽可能多的实时应用;或者证明在这样的系统资源状况下,不可能实现某些实时应用,要实现这些应用就必须改善系统资源。
实时应用与分时应用不同。一个分时系统上运行的应用增多时,每个应用只是感到慢了一些而已。而在一个实时系统上,如果实时应用安排不当,可能会造成某些应用或全部应用达不到应有的实时性要求而失败。分时系统主要应用于科学计算和一般实时性要求不高的场合。实时系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
一般分时应用在实时系统上执行起来不会有什么问题,但实时应用却不能简单地由分时系统来完成。与分时系统相比,实时系统更具灵活性,更能适应各种不同场合的应用。
分时系统并不是不能处理实时性要求高的设备,实际上Windows 95能够很流畅地处理网络通讯多媒体等实时性要求很高的工作,许多智能网络设备(如路由器、ATM交换机等)的操作系统也都是用经过裁减的分时操作系统Unix实现的。但是这些实时性要求高的工作不能在应用程序层实现,必须作为核心的一部分才能保证其操作的实时性。在这些系统上设计实时应用是一件非常困难的事情。
实时操作系统专门为设计实时的应用而设计。实时操作系统下的实时操作可以完全由应用程序级实现,在实时操作系统下设计实时应用程序与设计普通应用程序一样方便。
Hopen OS的核心是针对实时应用开发的操作系统内核,它提供一个实时系统所需要的一切基本要素;多任务、由优先级驱动的急者优先式调度方法和快速现场切换。对各种实时性要求高低不同的应用,Hopen Kernel允许根据需要实施特定安排,使各种不同的应用有可能在同一台运行Hopen OS操作系统的计算机上得以理想地运行。
进程和线程
多任务系统可以是多进程系统、多线程系统和多进程、多线程系统。一个进程是一个程序运行的实例,它有自己的地址空间,拥有打开的文件,分配的私有内存和全局内存等系统资源。在以前的Unix系统中一个进程只有一条运行路线,没有线程的概念。而在OS/2、Windows 95 和 Windows NT 以及后来较新版本的Unix等系统允许一个进程具有多个并发的运行路线,一个独立的运行路线就称为一个线程。可以将进程看作是资源拥有的实体,将线程看作虚拟CPU拥有的实体。
多进程系统可以同时运行多个进程,但是每一个进程只能有一个线程。多线程系统允许运行多个线程,但是所有的线程共享相同的地址空间和系统资源。多进程、多线程系统允许运行多个进程、每一个进程又允许有多个线程。多进程系统一般都需要虚拟内存管理硬件(MMU)的支持。
Hopen Kernel在没有虚拟内存管理硬件(MMU)的系统中运行时是一个多线程的系统,在有虚拟内存管理硬件(MMU)的系统中运行时是一个多进程、多线程的系统。
可抢占式调度
如果一个线程一旦获得CPU就独占CPU运行,除非它因某种原因决定放弃CPU,系统才会调度别的线程,这种调度方式称为"不可抢占式调度"。如果在系统中一旦出现高优先级线程就立即中断当前运行的线程,调度高优先级的线程运行,这种调度方式称为"可抢占式调度"。
可抢占式内核的特点是处于核心态的任务也可以随时让位给比其优先级高的任务。由于可抢占式内核的实时性特点,使得对一些实时设备的操作可以通过"任务"完成,设备驱动程序的设计相对简单。最后将导致系统的简单化。
Hopen Kernel 是一个全程可抢占式调度的操作系统内核。
微内核结构
大多数操作系统至少被划分为内核层和应用层两个层次。内核提供基本功能部分,如建立和管理进程,提供文件系统,管理设备等---这些功能以系统调用方式提供给用户。系统调用是用户层使用内核层功能的唯一接口。应用程序可以在自己代码中使用系统调用,来实现对系统的访问或对内核功能的调用。系统调用在应用程序代码中,看上去就象一般的库函数一样,只是在编译连接时,系统调用不象库函数那样把自己的代码嵌入到应用程序的可执行代码中。
许多操作系统的内核不以进程方式工作。应用程序进程通过系统调用来请求内核的服务。系统调用的代码在内核态执行,并在系统调用返回后才继续执行应用程序的代码。在进程进行了系统调用,等待系统调用返回时,将暂时不参加进程调度,只有当它们从内核服务退出(既系统调用返回)后,进程才被调度程序调度。
在设计操作系统时,哪些功能放入内核是由设计者决定的。运行时,内核代码和应用程序代码的分界是由硬件提供的保护机制决定的。内核在应用进程不可访问的地址空间中运行。一些特权指令,只有在内核态下才可以被执行。这就保证了内核的安全。系统调用通常通过一个硬件自陷指令(trap)实现,它改变CPU的执行方式和地址空间的映射,进入内核态。
早期的UNIX内核是一个代码量很少的程序组,它只提供操作系统的其它服务所必须的最小功能。但这种传统在随后的许多版本中没有被继承下来,越来越多的功能被引入内核,操作系统的内核变得越来越大。造成UNIX内核增大的一个重要原因是UNIX内核不是一个实时内核,必须将实时性要求高的服务放在内核中才能实现。随着内核的增大,其所提供的系统调用也越来越多。对一般常用的功能,用户进程只要执行这些系统调用既可得到相映的服务支持。利用系统调用提供各种服务的好处是这种方法十分快捷和安全。但内核变大了,所占用的资源就多,剪裁起来也比较麻烦---每增加或删除一些成分时都必须重新构造内核,每修改一次系统设置都要重新起动一次计算机。
对任何一个操作系统来说,其内核就是它的心脏。在有些操作系统中,"内核"包含了如此之多的功能----可用于所有目的和所有用途,以至可以认为该内核本身便是一个完整的操作系统。例如 BSD Unix 系统的内核包括了进程管理、文件系统、设备管理、通讯等功能,而在用户层只提供命令语言(shell脚本语言)和实用程序。
Hopen Kernel则是一个真正的微内核。首先,它和其它实时操作系统的核心一样本身的代码很小;其次它只实现必须由内核实现的几种最基本的功能。Hopen Kernel的微内核负责:
进程间通讯:微内核负责邮件、信号灯、队列等信息的传送操作。
线程调度:微内核的调度程序决定下阶段执行哪一个线程。当一个消息、邮件或一个中断事件导致一个线程改变状态时就会引起内核的调度程序去决定哪一个线程应该获得CPU运行权。
中断入口:所有的硬件中断和软件中断首先由内核来确定应该由哪一个中断处理程序来处理,然后进行保护中断现场的操作后转入相应的中断处理程序。
内存管理:管理虚拟内存到物理内存的映射,管理内存的分配与释放,进行内存废料收集等操作。
文件管理:负责对文件的基本操作;外围设备作为文件看待。
电源管理:Hopen操作系统将电源管理放在了核心中,可以与具有动态电源管理功能的CPU协同操作实现最优化的电源管理方法。
调试接口:为调试用户程序提供支持。
设备驱动程序接口
HOPEN 操作系统将设备划分为字符设备、图形设备和块设备三大类,相应的设备驱动程序为字符设备驱动程序、图形设备驱动程序和块设备驱动程序。字符设备包括串口、远红外线收发设备、网络通讯接口设备(Ethernet、xDSL、Cable)等;图形设备包括LCD显示器、键盘、鼠标和触摸屏等。块设备包括ROM、RAM、Flash、Disk-on-chip、CF、SD、MMC、硬盘、光盘等存储设备。
HOPEN 操作系统的设备驱动程序运行在用户态,可以使用系统提供的所有API函数。编写设备驱动程序与编写普通应用程序一样方便。HOPEN 操作系统 定义了《字符设备驱动程序接口规范》。HOPEN 操作系统按照这些规范调用设备驱动程序,设备驱动程序可以由用户自己编写。
字符设备驱动程序 HOPEN 操作系统中的字符设备都是通过文件系统来抽象的,应用程序通过文件系统访问字符设备。文件系统与字符设备之间的I/O 请求和中断请求通过统一的设备驱动接口 (HOPEN DDI) 实现。
字符设备驱动程序除了中断响应部分工作在系统状态之外,其余部分均工作在用户态,可以使用HOPEN操作系统的所有系统调用。
图形设备驱动程序 HOPEN 操作系统的图形设备驱动程序都通过GUI系统抽象,应用系统通过GUI系统访问图形设备,如显示器、鼠标、键盘等。
Hopen 的图形设备驱动程序工作在用户状态,GUI系统通过标准的"图形设备驱动程序接口"访问图形设备,而图形设备驱动程序则可以通过Hopen API访问HOPEN 操作系统提供的所有功能。比如显示设备驱动程序可以通过文件系统访问字库工作,打印设备驱动程序可以通过文件系统访问打印机端口等。
块设备驱动程序 块设备包括 ROM、RAM、Flash、Disk-on-chip、CF、SD、MMC、硬盘、光盘等存储设备。 HOPEN 操作系统中的所有块设备都是通过文件系统来管理的。和字符设备不同,对于不同类型的块设备,一般有与之相对应的文件系统。
文件系统与块设备之间的接口是通过设备驱动接口 (HOPEN DDI) 实现的。
系统服务程序
除了由微内核提供的基本服务外,所有的Hopen Kernel服务都是通过服务程序实现的。服务程序在应用程序看来是操作系统的一部分,而实际上它们和应用程序一样都运行在应用层。
Hopen Kernel的服务程序有的以系统进程方式工作,有的则以函数调用的方式工作。
文件系统服务程序
网络通讯服务程序
GUI系统服务程序
|