微内核操作系统结构.pdf

合集下载

了解电脑操作系统的内核和架构

了解电脑操作系统的内核和架构

了解电脑操作系统的内核和架构电脑操作系统是我们日常使用电脑时接触最多的软件之一。

它的内核和架构决定了操作系统的功能和性能。

了解电脑操作系统的内核和架构对于使用电脑和解决问题都非常有帮助。

本文将介绍电脑操作系统的内核和架构,并探讨其重要性。

一、电脑操作系统的内核内核是操作系统的核心部分,负责管理各种硬件设备、提供基本的系统服务和资源分配。

电脑操作系统的内核通常分为微内核和宏内核两种类型。

1. 微内核微内核是将操作系统的核心功能尽量精简化的设计思想。

它将大部分操作系统功能移出内核,只保留最基本的功能,如进程管理、内存管理和设备驱动等。

微内核的设计使得操作系统的可扩展性更好,同时也提高了系统的稳定性和安全性。

2. 宏内核宏内核则相对于微内核来说更加庞大,完整的操作系统功能都包含在内核中。

宏内核的设计思想是尽量在内核中实现多样化的功能和服务,减少用户态和内核态的切换开销。

由于其内核较大,宏内核的可靠性和安全性相对较差,但在性能方面则有一定的优势。

不同类型的内核在实际应用中都有各自的优缺点,选用何种类型的内核取决于具体的需求和平台。

二、电脑操作系统的架构除了内核,电脑操作系统还有各种子系统和服务构成。

1. 进程管理进程管理是操作系统的核心功能之一,负责管理和调度各个进程的执行,并为进程提供必要的资源。

操作系统通过进程管理来实现多任务的功能,使得多个程序可以同时运行,提高了系统的效率和利用率。

2. 内存管理内存管理是指操作系统对计算机内存资源的分配和回收。

通过内存管理,操作系统可以为每个程序分配足够的内存空间,确保程序能够正常运行。

同时,内存管理还负责内存的保护和共享,保证不同程序之间的数据不会相互干扰。

3. 文件系统文件系统是操作系统中的一个重要组成部分,负责管理和组织计算机中的文件和文件夹。

文件系统提供了对文件的读写操作,并通过目录结构来组织文件和文件夹。

不同的文件系统有不同的实现方式和特点,如FAT、NTFS等。

picokernel体系结构

picokernel体系结构

Picokernel体系结构一、介绍1.1 Picokernel概述Picokernel是一种微内核操作系统结构,它旨在提供最基本的功能,同时尽可能减少内核的规模和复杂性。

Picokernel内核只包含最基本的操作系统功能,如线程调度、内存管理和进程通信。

其他功能,如文件系统、网络协议和设备驱动程序,则在用户空间中以服务器的形式运行。

1.2 Picokernel优势Picokernel结构的优势在于其简洁性和灵活性。

由于内核功能被限制在最基本的操作系统功能,Picokernel的内核规模较小,可以更容易理解和维护。

由于其他功能被移至用户空间,Picokernel也更容易定制和扩展。

1.3 Picokernel的历史Picokernel最早由瑞典计算机科学家Jochen Liedtke于1996年提出。

他设计了一种称为L4的微内核,作为Picokernel结构的具体实现。

L4微内核以其精简的设计和卓越的性能而闻名,成为Picokernel结构的代表。

二、Picokernel结构2.1 内核功能Picokernel的内核功能主要包括:- 线程调度:管理和调度进程和线程的运行- 内存管理:分配和管理内存资源- 进程通信:提供进程间通信的机制,如消息传递或共享内存2.2 用户空间服务器除了内核功能外,Picokernel还通过用户空间服务器提供其他系统功能,例如:- 文件系统服务器:负责管理文件和目录的访问- 网络协议服务器:负责处理网络通信- 设备驱动服务器:负责管理硬件设备的访问2.3 进程间通信Picokernel的进程间通信通过消息传递或共享内存来实现。

用户空间服务器可以通过内核提供的基本机制来进行进程间通信,从而实现系统功能的协作。

三、Picokernel的应用3.1 嵌入式系统由于Picokernel结构具有精简和高性能的特点,它在嵌入式系统中得到了广泛的应用。

嵌入式系统通常对内存和处理器资源有着严格的限制,使用Picokernel可以提供更高效的系统性能。

操作系统内核

操作系统内核
单内核模型以提高系统执行效率为设计理念,因为
整个系统是一个统一的内核,所以其内部调用效率 很高。
单内核特点
单内核的缺点也正是由于其源代码是一个整
体而造成的,通常各模块之间的界限并不特 别清晰,模块间的调用比较随意,所以进行 系统修改或升级时,往往“牵一发而动全 身”,导致工作量加大,使其难于维护。
内核
严格地说,内核并不是计算机系统中必要的组成部分。
程序可以直接地被调入计算机中执行,这样的设计说 明了设计者不希望提供任何硬件抽象和操作系统的支 持,它常见于早期计算机系统的设计中。最终,一些 辅助性程序,例如程序加载器和调试器,被设计到机 器核心当中,或者固化在只读存储器里。这些变化发 生时,操作系统内核的概念就渐渐明晰起来了。
可靠性:单内核操作系统的设计特点决定了当某一
服务出错时,可能会造成整个系统的崩溃的结果。 所以,微内核的可靠性较单内核高。
性能:微内核操作系统调用系统服务时需通过发送
消息给相关程序才能完成,所以开销较大。
小结
内核在操作系统中占有什么的地位、有什么结构? 单内核与微内核各有什么特点? 在嵌入式系统中,选择哪种类型的内核更好?
Linux内核组成
这些子系统虽然实现的功能相对独立,但存在着较
强的依赖性(调用依赖模块中相应的函数),所以说 linux内核是单块结构(monolithic)的,而windows体系 结构是微内核(microkernel)的。
什么是单内核
单内核也叫集中式操作系统。整个系统是一个大模
块,可以被分为若干逻辑模块,即处理器管理、存 储器管理、设备管理和文件管理,其模块间的交互 是通过直接调用其他模块中的函数实现的。
操作系统的内核
学习目标
掌握内核的组成 了解Linux内核结构 了解单内核操作系与微内核操作系统的特点

深入理解微内核与宏内核操作系统

深入理解微内核与宏内核操作系统

深入理解微内核与宏内核操作系统微内核与宏内核是两种不同类型的操作系统内核结构,它们有着各自独特的设计理念与特点。

在深入理解微内核与宏内核操作系统之前,首先需要了解操作系统内核的基本概念。

操作系统内核是操作系统的核心部分,它负责管理系统的资源,提供各种系统调用接口,协调系统中各个组件的工作。

一、微内核操作系统微内核操作系统是一种将核心功能模块化的操作系统设计理念。

微内核将操作系统的核心功能划分为若干个独立的模块,每个模块负责不同的功能,如进程管理、内存管理、文件系统等。

这些模块通过消息传递的方式进行通信和交互,相互之间独立运行,各自管理自己的资源。

微内核操作系统的优点:1.可靠性高:由于微内核结构简单清晰,模块之间的隔离性好,因此出错的概率较小,系统稳定性高。

2.灵活性强:微内核可以轻松地通过添加或替换模块来扩展或修改系统的功能,开发和维护成本较低。

3.可移植性好:由于内核结构简单,与硬件无关,因此微内核操作系统具有很好的可移植性。

微内核操作系统的缺点:1.性能问题:由于模块之间需要通过消息传递进行通信,这会导致系统的性能较低。

2.复杂性高:微内核操作系统的设计和实现较为复杂,需要较高水平的技术和经验。

3.上下文切换开销大:由于模块之间需要频繁地进行消息传递,导致上下文切换开销较大。

二、宏内核操作系统宏内核操作系统是一种将所有核心功能模块集成在一起的操作系统设计理念。

宏内核将操作系统的所有功能模块放在一个单独的内核空间中,所有功能模块共享相同的地址空间,直接调用内核函数来实现各种功能。

宏内核操作系统的优点:1.性能优越:由于所有功能模块在同一内核空间中运行,直接调用内核函数,因此系统性能较高。

2.简单易用:宏内核操作系统整体设计和实现较为简单,易于理解和使用。

3.内核操作方便:由于所有功能模块在同一内核空间中,因此内核操作方便快捷。

宏内核操作系统的缺点:1.可靠性较低:由于所有功能模块在同一内核空间中运行,相互之间会存在一定的耦合性,因此系统的可靠性较低。

QNX – 微内核结构的实时操作系统

QNX – 微内核结构的实时操作系统

• 清除资源
• 重新启动程序
• CPM提供心跳服务检测软件事故 – 允许系统自我检测
2009年3月16日星期一
QNX Confidential. All content copyright QNX Software Systems.
6
五九(99.999%)可靠性
可靠性=
连续运行时间(MTBF) 连续运行时间(MTBF)+出错恢复时间(MTTR)
9
QNX限定型多重处理
同时拥有两种模式的优点
Î这是拥有限定型多重处理和非对称 型多重处理双方的优点
Î可以同时支持现行的代码,以及针对 多CPU执行优化过的用户程序
> 进程和线程可以选择在限定型或是对称 型下运行
Î设计人员可以控制整个用户程序
> 可以“限定”线程在特定的CPU上执行
Î平衡运行
> 可以由OS动态管理,也可以由设计人员 管理
> QNX提供工具可以优化平衡运行 > 由OS管理共享的资源
Î高性能运行
> 消息传递或是线程同步由内核支持
A1
A2
A3
A4
A5
OS
CPU 缓存
CPU 缓存
系统间连接
I/O I/O I/O
内存控制器
内存
2009年3月16日星期一
QNX Confidential. All content copyright QNX Software Systems.
事事件件
扩扩大大到到特特定定的的 时时间间区区域域,,选选 择择感感兴兴趣趣的的进进
程程。。
事事件件的的详详细细,, 包包括括长长度度,,类类
型型等等
2009年3月16日星期一

操作系统结构

操作系统结构

层次结构
所谓的层次结构,就是把操作系统所有的功能模块按照功能调用次序分别排成若干层,各层之间的模块只有 单向调用关系(例如,只允许上层或外层模块调用下层或内层模块)。分层的优点是:
(1)把功能实现的无序性改成有序性,可显著提高设计的准确性。 (2)把模块间的复杂依赖关系改为单向依赖关系,即高层软件依赖于低层软件。 tra于1968年发表的THE多道程序设计系统第一次提出了操作系统的分层结构方法。整个THE系统分为6层。
整体式结构
整体式结构也叫简单结构或无结构,在早期设计开发操作系统时,设计者只是把注意力放在功能的实现和获 得高的效率上。整个操作系统的功能由一个一个的过程来实现,这些过程之间又可以相互调用,导致操作系统变 为一堆过程的集合,其内部结构复杂又混乱。因此这种操作系统没有结构可言。
这种早期的整体式结构的最大优点就是接口简单直接,系统效率高但是却有很多的缺点:没有可读性,也不 具备可维护性,一旦某一个过程出了问题,凡是与之存在调用关系的过程都要修改,所以给调试和维护人员带来 许多麻烦,有时为了修改系统中的错误还不如重新设计开发一个操作系统。因此,这种早期的整体式结构已经淘 汰不用了。
操作系统结构
操作系统的构成结构
目录
01 整体式结构
03 层次结构
02 模块化结构 04 微内核结构
操作系统结构是指操作系统的构成结构。在操作系统的发展过程中,产生了多种多样的系统结构,几乎每一 个操作系统在结构上都有自己的特点,从总体上看,根据出现的时间,操作系统结构依次可以分为整体式结构、 模块化结构、层次式结构和微内核结构。
感谢观看
模块化结构
模块化结构是指将整个操作系统按功能划分为若干个模块,每个模块实现一个特定的功能。模块之间的通信 只能通过预先定义的接口进行。或者说模块之间的相互关系仅限于接口参数的传递。

操作系统基本概念

操作系统基本概念

操作系统基本概念操作系统基本概念1:引言- 定义:操作系统是计算机系统中的核心软件,负责协调和管理计算机硬件和其他软件的资源,为用户提供接口和服务。

- 作用:实现计算机资源的有效管理和利用,提供良好的用户界面和服务,保证计算机系统的稳定运行。

2:操作系统结构- 单体结构:操作系统的各个组件全部包含在一个单独的程序中。

- 分层结构:操作系统分为多个层次,每个层次都提供不同的功能和服务。

- 微内核结构:将操作系统的核心功能放在微内核中,其他功能通过进程间通信与微内核交互。

3:进程管理- 进程:是指一个正在运行的程序的实例,是操作系统分配资源的基本单位。

- 进程调度:操作系统根据一定的算法决定哪些进程可以执行。

- 进程同步:操作系统提供机制确保多个进程之间的正确交互和数据共享。

- 进程通信:多个进程之间进行信息的传递和共享。

4:内存管理- 内存分配:操作系统负责管理计算机内存的分配和回收。

- 内存保护:操作系统通过访问权限设置和虚拟内存技术保护进程间的内存空间。

- 内存交换:将部分不常用的程序或数据从内存交换到磁盘,以提供更多的可用内存空间。

5:文件系统- 文件组织:操作系统将文件组织为层次化的目录结构,以便用户存储和管理文件。

- 文件存储:操作系统负责将文件存储在磁盘或其他存储介质上,并提供文件访问接口。

- 文件保护:操作系统通过权限设置和加密技术保护文件的机密性和完整性。

6:输入输出系统- 设备管理:操作系统管理各种输入输出设备,负责控制数据的传输和设备的访问。

- 设备驱动程序:操作系统提供与设备通信的接口,驱动程序负责具体的设备控制。

- 缓冲区管理:操作系统通过缓冲区来提高输入输出的效率。

附件:附件1:操作系统基本概念详解:pdf附件2:操作系统概念图表:png法律名词及注释:1:版权:法律规定的对创作作品的独占权,保护原作者的权益。

2:许可证:机关颁发的允许某个实体从事特定活动的文件。

3:商标:与特定商品或服务相关联的标识,用于区分不同商家的产品或服务。

微内核操作系统

微内核操作系统

4) 提供了对分布式系统的支持

由于在微内核OS中,客户和服务器之间以 及服务器和服务器之间的通信,是采用消息传递 通信机制进行的,致使微内核OS能很好地支持分 布式系统和网络系统。事实上,只要在分布式系 统中赋予所有进程和服务器惟一的标识符,在微 内核中再配置一张系统映射表(即进程和服务器的 标识符与它们所驻留的机器之间的对应表),在进 行客户与服务器通信时,只需在所发送的消息中 标上发送进程和接收进程的标识符,微内核便可 利用系统映射表,将消息发往目标,而无论目标 是驻留在哪台机器上。
• •
微内核 提供必要服务的操作系 统内核;其中这些必要的服务 包括任务,线程,交互进程通 信(IPC,Inter-Process Communication)以及内存管 理等等。所有服务(包括设备 驱动)在用户模式下运行,而 处理这些服务同处理其他的任 何一个程序一样。因为每个服 务只是在自己的地址空间运行。 所以这些服务之间彼此之间都 受到了保护。
(3) 中断和陷入处理
• 大多数微内核操作系统都是将与硬件紧密相关的一小部分

放入微内核中处理。此时微内核的主要功能,是捕获所发 生的中断和陷入事件,并进行相应的前期处理。如进行中 断现场保护,识别中断和陷入的类型,然后将有关事件的 信息转换成消息后,把它发送给相关的服务器。由服务器 根据中断或陷入的类型,调用相应的处理程序来进行后期 处理。 在微内核OS中是将进程管理、存储器管理以及I/O 管理这些功能一分为二,属于机制的很小一部分放入微内 核中,另外绝大部分放在微内核外的各种服务器中来实现。 事实上,其中大多数服务器都比微内核大。这进一步说明 了为什么能在采用客户/服务器模式后,还能把微内核做 得很小的原因。
(1)足够小的内核

操作系统的体系结构(微内核宏内核)

操作系统的体系结构(微内核宏内核)

操作系统的体系结构分类:【OS】2013-02-05 21:27 494人阅读评论(0) 收藏举报看了几遍,始终没看懂,网上搜集的资料整理一下,再看点东西再回头看吧~Linux大部分都是单内核的操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。

按照类似封装的形式,这些术语定义如下:微内核(Microkernelkernel)――在微内核中,大部分内核都作为单独的进程在特权状态下运行,他们通过消息传递进行通讯。

在典型情况下,每个概念模块都有一个进程。

因此,假如在设计中有一个系统调用模块,那么就必然有一个相应的进程来接收系统调用,并和能够执行系统调用的其他进程(或模块)通讯以完成所需任务。

在这些设计中,微内核部分经常只但是是个消息转发站:当系统调用模块要给文档系统模块发送消息时,消息直接通过内核转发。

这种方式有助于实现模块间的隔离。

(某些时候,模块也能够直接给其他模块传递消息。

)在一些微内核的设计中,更多的功能,如I/O等,也都被封装在内核中了。

但是最根本的思想还是要保持微内核尽量小,这样只需要把微内核本身进行移植就能够完成将整个内核移植到新的平台上。

其他模块都只依赖于微内核或其他模块,并不直接直接依赖硬件。

微内核设计的一个长处是在不影响系统其他部分的情况下,用更高效的实现代替现有文档系统模块的工作将会更加容易。

我们甚至能够在系统运行时将研发出的新系统模块或需要替换现有模块的模块直接而且迅速的加入系统。

另外一个长处是无需的模块将不会被加载到内存中,因此微内核就能够更有效的利用内存。

单内核(Monolithic kernel)――单内核是个很大的进程。

他的内部又能够被分为若干模块(或是层次或其他)。

但是在运行的时候,他是个单独的二进制大映象。

其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。

单内核的支持者声称微内核的消息传递开销引起了效率的损失。

微内核体系结构

微内核体系结构

微内核体系结构微内核体系结构是一种操作系统设计的范式,它以最小化的内核功能为核心,将其他系统功能以外围服务的形式实现。

微内核体系结构的设计理念是将操作系统的核心功能尽可能的精简,将其他功能模块以服务的方式运行在内核之外,以提高系统的可靠性、安全性和可维护性。

在微内核体系结构中,内核只提供最基本的操作系统功能,如进程管理、内存管理、线程调度和基本的设备驱动程序等。

而其他功能模块,如文件系统、网络协议栈、图形界面等,都以外围服务的形式运行在内核之外。

这些外围服务通过与内核进行通信,提供各种高级功能,使得系统具备更丰富的功能和更高的性能。

微内核体系结构的设计有以下几个优点:由于内核功能的精简,微内核体系结构具有更高的可靠性。

内核作为系统的核心,其代码量较小,功能简单,因此出现问题的概率也相对较低。

同时,外围服务的运行在用户空间,可以使用更高级的编程语言进行开发,减少了错误的可能性。

微内核体系结构有更好的安全性。

由于内核功能的最小化,内核代码的复杂性降低,从而减少了系统受攻击的风险。

同时,外围服务运行在用户空间,相互之间采用进程间通信的方式进行交互,可以实现更细粒度的权限控制,提高了系统的安全性。

微内核体系结构还具有更好的可维护性。

由于内核功能的精简,内核的代码量相对较小,易于理解和维护。

而其他功能模块以外围服务的形式存在,可以独立开发和更新,不需要修改内核代码。

这样,在系统更新或功能扩展时可以更加灵活和高效。

然而,微内核体系结构也存在一些挑战和限制。

首先,由于外围服务运行在用户空间,相互之间的通信会引入一定的开销,可能降低系统的性能。

其次,由于外围服务的增加,系统的复杂性也相应增加,对系统设计和开发的要求更高。

另外,微内核体系结构的设计需要精确地划分内核和外围服务的功能边界,这需要对系统进行全面的分析和评估。

微内核体系结构以最小化的内核功能为核心,将其他系统功能以外围服务的形式实现,具有更高的可靠性、安全性和可维护性。

第3-4课时 操作系统架构及微内核结构

第3-4课时 操作系统架构及微内核结构

配置 文件
运行时所需的二进制文件 包括: 包括:.DB、 reginit.ini、 .DAT。 、 、
O E M 层 的 组 成
LOGO

WinCE5.0的系统架构 的系统架构
补充说明
OAL层硬件初始化和驱动中硬件操作的关系 层硬件初始化和驱动中硬件操作的关系
优点
减少进程间通信和 状态切换的系统开 销,获得较高的运 行效率。 行效率。
缺点
●内核庞大,占用资 内核庞大, 源较多且不易剪裁。 源较多且不易剪裁。 ●系统的稳定性和安 全性不好。 全性不好。
代表
UNIX
微内核
只实现基本功能, 只实现基本功能, 将图形系统、 将图形系统、文件 系统、 系统、设备驱动及 通信功能放在内核 之外。
●内核精练,便于 内核精练, 剪裁和移植。 剪裁和移植。 ●系统服务程序运 行在用户地址空间, 行在用户地址空间, 系统的稳定性和安 全性较高。 全性较高。
用户状态和内核状态 需要频繁切换, 需要频繁切换,从而 导致系统效率不如单 体内核。 体内核。
WinCE5.0


LOGO
WinCE5.0的系统架构 的系统架构
OEM适配层 适配层 (OAL)
(OEM adaptation layer)内核抽象出来的与硬件交互 内核抽象出来的与硬件交互 的接口;代码通常是与硬件高度相关; 的接口;代码通常是与硬件高度相关;负责内核与 硬件的通信。 硬件的通信。

LOGO
WinCE5.0的系统架构 的系统架构
5
应用层
应用层位于WinCE层次结构的最顶层。每个应用程 层次结构的最顶层。 应用层位于 层次结构的最顶层
序都是WinCE中的一个单独的进程。 中的一个单独的进程。 序都是 中的一个单独的进程 应用层主要包括以下模块: 应用层主要包括以下模块: 应用程序( ●WinCE应用程序(文件编辑、图象查看等) 应用程序 文件编辑、图象查看等) 客户服务( 浏览器 浏览器) ●Internet客户服务(IE浏览器) 客户服务 ●用户接口(触摸、电池、语言等) 用户接口(触摸、电池、语言等) ●客户应用程序(第三方软件) 客户应用程序(第三方软件)

操作系统的内核结构与功能模块

操作系统的内核结构与功能模块

操作系统的内核结构与功能模块概述:操作系统是计算机系统中的核心组成部分,它负责管理和协调计算机硬件和软件资源,并提供友好的接口供用户和应用程序调用。

而操作系统的内核结构和功能模块,则是实现这些功能的关键。

一、内核结构内核是操作系统的核心部分,它位于操作系统的最底层,负责直接管理硬件资源并提供基本的系统服务。

1. 单体内核结构在单体内核结构中,所有的内核模块都放在一个内核空间中。

这种结构简单易懂,适合针对单处理器和小型系统,但它的缺点是耦合度高、可扩展性差。

2. 分层内核结构在分层内核结构中,内核被分成若干个层次,每个层次负责处理特定的功能。

这种结构使得内核的各个模块能够更好地隔离,提高了系统的可扩展性和可维护性。

3. 微内核结构微内核结构是一种将内核的功能尽可能地精简,将大部分的服务功能“剥离”成独立的进程运行的结构。

这种结构减少了内核的复杂性,提高了系统的可靠性和可扩展性。

二、功能模块内核除了具有基本的系统管理功能外,还有一些常见的功能模块,下面将介绍其中的几个。

1. 进程管理模块进程管理模块负责管理系统中的进程。

它通过调度算法控制进程的运行顺序,提供进程间的通信机制,确保进程的正常运行。

同时,进程管理模块也负责进程的创建、撤销、阻塞和唤醒等操作。

2. 内存管理模块内存管理模块负责管理系统的内存资源。

它通过分配和回收内存,确保每个进程能够得到足够的内存空间。

同时,内存管理模块还可以实现虚拟内存技术,将磁盘上的部分内容映射到内存中,提高内存利用率。

3. 文件系统模块文件系统模块负责管理系统中的文件和目录。

它提供了文件的创建、读写、删除等操作,同时还提供了文件的权限管理和数据的备份与恢复功能。

文件系统模块可以将文件存储在硬盘上或者网络上,提供对文件的访问和共享。

4. 设备驱动模块设备驱动模块负责管理计算机系统中的外部设备,如打印机、键盘、鼠标等。

它提供了对设备的控制和访问接口,使得应用程序能够方便地使用设备。

RT-Thread Smart 微内核操作系统概述

RT-Thread Smart 微内核操作系统概述

R T T h r e a d S m a r t微内核操作系统概述熊谱翔,全召(上海睿赛德电子科技有限公司,上海071000)摘要:R T T h r e a d S m a r t采用微内核的设计思想,将操作系统自身的服务组件从内核中剥离出来,在用户态以进程的形式运行,避免服务组件的错误造成内核崩溃,提高系统整体的稳定性和可靠性㊂另一方面,依据用户配置选项,R T T h r e a d S m a r t继续支持将组件编译进内核中,以获得更佳的性能和向下兼容性㊂为了支持这些特性,R T T h r e a d S m a r t实现了对MMU和进程管理的支持,并通过通道机制来完成内核和用户态进程间的数据交换㊂关键词:微内核;R T T h r e a d;R T T h r e a d S m a r t;MMU;进程管理;共享页面中图分类号:T P316文献标识码:AO v e r v i e w o f R T T h r e a d S m a r t M i c r o k e r n e l S y s t e mB e r n a r d X i o n g,Q u a n Z h a o(S h a n g h a i R e a l T h r e a d E l e c t r o n i c T e c h n o l o g y C o.,L t d.,S h a n g h a i071000,C h i n a)A b s t r a c t:D e s i g n e d w i t h t h e m i c r o k e r n e l p r i n c i p l e,t h e s e r v i c e c o m p o n e n t s o f r t-s m a r t a r e s e p a r a t e d f r o m t h e k e r n e l a n d r u n a s p r o c e s s e s i n t h e u s e r m o d e,w h i c h m a k e s t h e k e r n e l i mm u n e t o t h e r u n t i m e e r r o r s o c c u r r i n g i n t h e s e r v i c e s.I n t h e w a y,t h e w h o l e s y s t e m b e c o m e s s t a b l e a n d r o b u s t.O n t h e o t h e r h a n d,a c c o r d i n g t o t h e c o n f i g u r a t i o n o p t i o n s s e l e c t e d b y u s e r s,t h e s e s e r v i c e c o m p o n e n t s a r e s t i l l p e r m i t-t e d t o b e c o m p i l e d i n t o t h e k e r n e l i n r t-s m a r t,i n o r d e r t o g e t b e t t e r p e r f o r m a n c e a n d b a c k w a r d c o m p a t i b i l i t y.T o s u p p o r t t h e s e f e a t u r e s, r t-s m a r t t a k e s a d v a n t a g e o f t h e s u p p o r t o f MMU a n d p r o c e s s m a n a g e m e n t,c o m p l e t e s t h e d a t a e x c h a n g e b e t w e e n t h e k e r n e l a n d u s e r-m o d e p r o c e s s e s t h r o u g h t h e c h a n n e l m e c h a n i s m.K e y w o r d s:m i c r o k e r n e l;R T T h r e a d;R T T h r e a d S m a r t;MMU;p r o g r e s s m a n a g e m e n t;s h a r e d p a g e s0引言R T T h r e a d S m a r t(简称r t-s m a r t)是基于R T T h r e a d操作系统衍生的新分支,面向带MMU的中高端应用芯片㊂它采用微内核的设计思想,将系统的服务组件设计成一个个独立的可执行程序,以进程的形式在用户态运行,相互之间通过内核提供的通道机制完成数据交换㊂通过这种方式,系统将服务组件与内核本身隔离开,使得内核自身更加简洁和稳定,确保了服务组件的异常不会导致内核的崩溃,整体系统运行更加可靠[1]㊂为了支持上述特性,r t-s m a r t充分利用硬件MMU提供的地址映射功能,实现了用户态和内核态地址空间的分离,以及不同用户态地址空间的隔离㊂一方面,整个线性地址被划分为用户空间和内核空间,内核的代码和数据与用户进程的代码和数据分别存放到不同的区域㊂所有用户进程共享相同的内核地址空间,但只能通过内核提供的系统调用进行访问,防止对内核数据的破坏㊂另一方面,每个用户进程拥有自己独立的地址空间,既可以加载执行从内核中剥离出来的服务组件,也可以执行普通的用户程序㊂服务进程与内核之间以通道机制进行通信,通过修改共享页面映射的方式与内核完成数据交换㊂为了方便开发和调试用户态程序,r t-s m a r t还在内核中加入可选的G D B s t u b和c o r e d u m p模块,允许用户通过额外的串口在上位机使用G D B进行s e m i-h o s t i n g调试㊂除此之外,系统还移植了开源的m u s l l i b c库,提供与P O S I X兼容的C语言接口,方便用户将程序移植到r t-s m a r t平台㊂除此之外,r t-s m a r t仍然允许将服务组件编译进内核,内核直接调用这些组件提供的接口,因而具有更好的性能㊂通过这种方式,r t-s m a r t可以直接运行原R T T h r e a d操作系统的组件,具有极高的灵活性㊂1系统架构在原来的宏内核R T T h r e a d中,操作系统的服务组件和内核共同运行在内核态,相互之间可以直接进行访问㊂这样做的好处是系统运行效率高,内核和组件紧密耦合在一起,无需仔细考虑服务组件的接口设计[2]㊂R TT h r e a d 系统结构如图1所示㊂图1 宏内核R T T h r e a d 系统结构图如前所述,r t s m a r t 依然支持这种工作方式,以获得更佳的性能和向下兼容性㊂在此基础上,r t -s m a r t 增加了地址空间管理和用户态进程的支持,将内核中的服务组件分离为一个个独立的模块,允许它们作为单独的进程在用户态运行,内核通过通道机制和共享页面与其进行交互㊂将服务组件分割放置到用户态运行的方式,降低了各个组件与内核的耦合度,使得内核自身更加简洁㊁错误更少㊂同时,由于进程间的资源相互隔离,个别服务发生故障并不会影响内核和其他服务的正常功能,系统运行更加安全可靠㊂r t -s m a r t 系统结构如图2所示㊂图2 微内核r t -s m a r t 系统结构图r t -s m a r t 充分利用了硬件MMU 提供的地址转换功能,通过进程管理模块和通道机制来实现上述灵活性㊂它提供的新特性主要包括:基于MMU 的虚拟内存管理和地址空间转换;用户态进程的创建㊁调度和管理;面向用户态请求的系统调用接口;E L F 可执行应用程序加载器;进程间的通道通信机制及共享内存机制㊂除此之外,为了让这些组件在用户态依然能够提供正常的服务,r t -s m a r t 对原R T T h r e a d 操作系统的内核模块接口作了扩充和加强,以支持和用户态的服务进程进行交互㊂1.1 文件系统接口(D F S )r t -s m a r t 继承了原来宏内核R T T h r e a d 系统的文件系统接口D F S ,并在其中注册虚拟文件系统U F S ,后者作为用户态文件系统服务在内核的代理㊂实际运行时,文件相关的系统调用将用户请求通过D F S 传递给U F S ,U F S 进一步将这些请求通过通道机制和共享页面转发到对应的用户态文件系统服务进程;用户态文件系统服务完成请求的动作,再将结果返回到U F S ,最终通过D F S 机制返回给用户㊂1.2 B S D s o c k e t 抽象套接字接口(S A L)与文件系统接口类似,r t -s m a r t 同样沿用了宏内核的套接字接口S A L ,并在其中注册虚拟网络接口层U N -E T ,作为用户态网络协议栈服务的代理㊂U N E T 也是通过通道机制和共享页面与用户服务进行交互㊂只是由于网络协议的复杂性,U N E T 和用户态网络服务需要各自建立通道来实现双向通信;而且为了防止死锁,U N E T 在内核中按s o c k e t 建立等待队列,以便不能被及时响应的任务在内核中挂起,而不是阻塞在用户态服务㊁影响其他网络请求的响应㊂1.3 设备驱动框架接口由于开启了MMU 的地址转换机制,驱动程序在访问设备前,需要将设备的地址统一映射到内核地址空间,以阻止用户态进程的直接访问;同时映射时要设置正确的缓冲和共享机制,防止硬件改变驱动代码对设备访问的顺序和范围㊂为方便设备驱动代码完成上述操作,r t -s m a r t 提供了设备寄存器地址的映射函数㊂2 核心模块r t -s m a r t 的组件既可以编译进内核直接调用,又可以作为用户态进程独立运行㊂这种工作方式依赖于内核中3个核心模块支持:MMU 提供地址隔离和映射;进程管理模块管理用户态进程;通道机制和共享页面实现信息交换㊂2.1 地址空间管理模块M M Ur t -s m a r t 依赖于硬件提供的地址映射和权限检查功能,通过地址管理单元MMU 实现内核态和用户态地址空间的隔离,以及地址空间的动态映射[3]㊂该模块是其他两个模块的基础,主要包括以下特性:用户和内核地址空间隔离,系统更安全;每个进程有自己独立的地址空间,方便用户态程序的加载和执行;严格的权限检查,更容易探测非法地址访问㊁定位问题;更方便的内存分配和回收,防止用户程序造成的内存泄露㊂对于32位芯片来说,每个用户态进程拥有自己独立的3G B 地址空间,而高1G B 地址空间则留给了内核㊂典型的r t -s m a r t 应用程序运行时,用户及内核空间的内存分布如图3所示㊂不同的用户态进程拥有各自不同的用户地址空间,但是它们共享相同的内核地址空间㊂除了映射内核的代码和数据外,内核地址空间还划分出一个动态映射区(地址图3 r t -s m a r t 线性地址空间分布范围为0x F 000_0000~0x F F F F _F F F F ),方便对进程共享资源的访问,例如设备寄存器和用户线程T L S 映射㊂系统在初始化时,内核空间被初始化为图4所示的样式㊂初始化完成之后,只有内核动态映射区和用户地址空间的映射可以改变,相关的映射和解映射操作只能由内核态代码完成㊂r t -s m a r t 提供相应的系统调用来改变这些映射,以支持用户态驱动和共享页面的实现㊂图4 内核地址空间分布2.2 用户态进程管理模块在原R T T h r e a d 内核实现中,由于缺乏MMU 支持,内核代码和服务组件共享同一个地址空间,对于任何部分的修改都需要全部编译,以重新确定内核和组件的加载地址㊂在r t -s m a r t 中,服务组件可以和普通用户程序一样被单独加载执行,其地址空间与内核地址空间相隔离,同时各个用户进程拥有自己的地址空间,服务组件和内核可以在编译前确定加载的地址㊂因此,只需要重新编译被修改的组件或内核即可,而不必全部进行编译㊂系统运行时,内核和用户态进程所使用的地址空间如图5所示㊂图5 多用户进程和内核的线性地址空间分布对于每个进程来说,内核空间都是共享的,表现为对内核地址空间的访问是访问的同一块物理空间;而用户空间的部分是隔离的,表现为每个进程都认为自己的用户空间是独占的,两个不同进程的同一用户态地址其实指向的是不同的物理空间[4]㊂例如,在r t -s m a r t 中,用户态进程固定从地址0x 100000处开始执行,该线性地址在不同的进程中映射到不同的物理地址,因此多个进程可以同时加载运行,而相互之间不会破坏其他进程的数据㊂除了上述用户地址空间管理,进程管理模块还提供E LF (E x e c u t a b l e L i n k a b l e F o r m a t)文件的加载和解析支持㊂用户程序或者分离出的内核组件可由G N U G C C 工具编译,生成独立的E L F 文件㊂这种编译和加载的方式大大降低了系统内部各组件的耦合度,同时降低了命名空间冲突,使得服务组件和用户程序的设计更加方便㊂2.3 通道机制和共享页面地址空间隔离和进程管理带来了系统的安全性和灵活性,但同时也阻断了进程和内核间㊁进程和进程间的直接交互,它们之间的通信需要通过其他方式进行㊂在r t -s m a r t 中,该问题通过通道机制和共享页面相结合的方式解决㊂一方面,通道机制允许创建系统中名称唯一的通道,客户端向通道发送请求并等待回应,而服务端从通道接收请求并返回响应㊂在通道创建之后,作为一个双向数据传递的软件抽象,r t -s m a r t 提供允许服务端和客户端通信的接口列在表1中㊂表1 r t -s m a r t 通道机制接口函数名功能说明r t _c h a n n e l _s e n d 向指定的通道发送消息,不等待回复直接返回r t _c h a n n e l _s e n d _r e c v 向指定的通道发送消息,等待收到回复后返回r t _c h a n n e l _r e c v 从指定的通道接收消息r t _c h a n n e l _r e p l y向指定的通道发送回复另一方面,每个共享页面拥有全局唯一的I D 编号,通过相关系统调用共享页面可以被同时映射到内核和用户地址空间,或者不同进程的用户地址空间㊂r t -s m a r t 提供的共享页面映射和解映射操作接口如表2所列㊂表2 r t -s m a r t 共享页面接口函数名功能说明l w p _s h m i n f o 获取指定I D 的共享页面在内核中的映射地址l w p _s h m a t 将指定I D 的共享页面映射到当前进程的用户地址空间l w p_s h m d t 将共享页面从当前进程的用户地址空间解除映射通道机制本身仅能传递一个整型或者指针数据,为了满足大量数据的传输需求,将它和共享页面配合完成通信过程㊂典型的做法是:发送端创建共享页面,填充数据后将其I D 编号通过通道发送给接收端,接收端将接收到的共享页面映射到自身的地址空间,之后即可按照映射后的地址访问其中的数据㊂3 系统服务组件得益于上述三个核心模块的设计,服务组件可以从内核中独立出来,作为单独的进程运行在用户态,以提高系统的稳定性和可靠性㊂目前,已有两个服务组件移动到用户态执行,下面对它们进行简要介绍㊂3.1 e l m F A T 组件在原R T T h r e a d 系统中,所有的文件系统通过D F S 统一管理,而e l m F A T 组件为系统提供F A T 文件系统访问支持㊂当访问位于F A T 分区上的文件时,D F S 将系统调用转换为对e l m F A T 接口的调用㊂以r e a d()操作为例,整体的消息流如图6所示㊂图6 宏内核读文件操作流程当e l m F A T 组件运行在用户态时,D F S 不能再直接调用e l m F A T 提供的接口,而是要通过通道机制加共享页面的方式与其进行交互㊂首先,e l m F A T 组件被编译成单独的E L F 文件,在用户态运行时创建服务通道,等待内核传递的文件访问请求并响应;其次,内核在D F S 中注册虚拟文件系统U F S ,作为用户态文件系统服务的代理㊂D F S将系统调用交由U F S 处理,后者将文件访问请求转换为约定的格式存放到共享页面中,发送到服务通道并等待回应㊂以r e a d()操作为例,整体的消息流图如图7所示㊂3.2 L w I P 组件服务组件L w I P 为系统提供T C P /I P 网络协议栈支持㊂当移动到用户态时,它和内核的交互也要改为和e l m F A T 类似的方式㊂同样地,内核中注册一个虚拟的网络服务代理,用来和在用户态网络服务进程通信㊂图7 微内核读文件操作流程实际上,由于网络协议栈的复杂性,单个通道并不能满足通信需求,需要在内核和用户态服务各自建立多个通道㊂4 用户态程序支持基于核心模块和服务组件的接口,r t -s m a r t 提供了一个类U n i x 的运行环境,许多G N U 软件可以在r t -s m a r t上直接编译运行㊂为了方便用户开发和使用,r t -s m a r t 已经移植了标准C 库和常用的命令行工具㊂4.1 C 语言运行环境r t -s m a r t 的用户态程序可以直接通过系统调用的方式请求内核服务,也可以调用用户态C 语言库接口来实现所需要的功能㊂这两者共同构成了系统的C 语言运行环境:①r t -s m a r t 的系统调用在原R T T h r e a d 接口的基础上进行了扩充,保证良好的向下兼容性,这些系统调用集合构成了r t -s m a r t 的C R T 环境㊂除去新增的系统调用接口,r t -s m a r t 的系统调用和原R T T h r e a d 的同名接口用法和功能完全一致,使得原有系统的软件包和应用程序能够非常方便地移植到r t -s m a r t 用户态环境中执行㊂②通过移植开源的m u s l l i b c ,r t -s m a r t 提供了遵循P O S I X 标准的用户接口函数及C 运行环境㊂该C 语言库实现提供与L i n u x 用户态环境一致的接口,方便将L i n u x程序直接移植到r t -s m a r t 上运行㊂4.2 常用命令行工具原R T T h r e a d 提供了运行在内核的命令行解释工具m s h ㊂r t -s m a r t 继承了原R T T h r e a d 提供的命令行解释工具m s h ,并允许加载和执行用户E L F 文件㊂为了提供与L i n u x 相一致的用户态工具集,r t -s m a r t 已经移植了B u s y B o x 工具箱,支持其中大约80%命令行工具的执行,包括l s ㊁m k d i r ㊁c a t 等常用命令㊂5 结 语遵循微内核的设计思想,将服务组件站[11]来实现,其支持E t h e r C A T 协议函数接口,用于实现实时内核㊁调度管理以及逻辑空间映射㊂图8 E t h e r C A T 主站系统S O E M 软主站包含:作为用户层的用户应用程序;作为内核层的主站S O E M 模块,与主站S O E M 模块连接的程序接口模块㊁与程序接口模块连接的网卡设备驱动模块;作为网卡硬件的受网卡设备驱动模块驱动的网卡芯片㊂应用程序接口模块包括字符设备接口㊁网卡设备接口,字符设备接口与用户应用程序连接,网卡设备接口与网卡设备驱动模块连接㊂E t h e r C A T 通信函数接口应用程序定义一个缓冲区,通常e c _c o n f i g _m a p 函数对该缓冲区进行初始化,内部过程是将E t h e r C A T 从站系统I /O 的值实时映射到该缓冲区中㊂因此,应用程序通过修改缓冲区对应的变量即可改变E t h e r C A T 从站系统I /O 端口的值㊂4 结 语本文基于i .M X 6Q A R M v 7a 处理器平台,在天脉1实时操作系统上对机器人中间件的移植适配方法进行了研究,对在R T O S 嵌入式实时操作系统上移植适配机器人中间件的软件研发人员有一定参考价值㊂参考文献[1]中国电子学会.2019年中国机器人产业发展报告[R ].中国:中国电子学会,2019.[2]I n t e l 公司.机器人4.0白皮书:云边端融合的机器人系统和架构,2019.[3]J o h n K e r r ,K e v i n N i c k e l s .R o b o t O p e r a t i n g S y s t e m s :B r i d g-i n g t h e G a p b e t w e e n H u m a n a n d R o b o t [C ]//P r o c e e d i n gs 44t h I E E E S o u t h e a s t e r n S y m p o s i u m o n S y s t e m T h e o r y(S S S T ).U S A :I E E E ,2012.[4]A r a v i n d S u n d a r e s a n ,L e o n a r d G e r a r d .S e c u r e R O S I m p o s i n g S e c u r e C o mm u n i c a t i o n i n a R O S s ys t e m [C ]//R O S C o n 2017,U S A :S R I I n t e r n a t i o n a l ,2017.[5]J a c k i e K a y ,A d o l f o R o d r i g u e z T s o u r o u k d i s s i a n .R e a l -t i m e c o n t r o l i n R O S a n d R O S 2.0[R ].U S A :O pe n S o u r c e R o b o t -i c s F o u n d a t i o n ,2017.[6]A d a m D a b r o w s k i ,R a f a łK o z i k .E V A L U A T I O N o f R O S 2C OMMU N I C A T I O N L A Y E R [R ].P o l a n d :I n d u s t r i a l R e s e a r c hI n s t i t u t e f o r A u t o m a t i o n a n d M e a s u r e m e n t s P I A P ,2017.[7]D i r k T h o m a s ,E s t e v e F e r n a n d e z .S t a t e o f R O S 2D e m o s a n dt h e t e c h n o l o g y b e h i n d [C ]//R O S C o n 2015,G e r m a n y :O pe n S o u r c e R o b o t i c s F o u n d a t i o n ,2015.[8]O S R F .w h y R O S ?[E B /O L ].[202012].h t t ps ://w w w.r o s .o r g /c o r e -c o m po n e n t s /.[9]E n r i q u e F e r n án d e z ,L u i s S án c h e z C r e s p o .L e a r n i n g RO S f o r R o b o t i c s P r o g r a mm i n g Se c o n d E d i t i o n [M ].U K :P a c k t P u b -l i s h i n g L t d ,2015.[10]J i n g q i J i a n g ,X u e t a o Z h a n g ,J i n g Yu a n ,e t a l .E x t e n d a b l e F l i g h t S ys t e m f o r C o mm e r c i a l U A V s o n R O S [C ]//P r o -c e e d i n gs o f t h e 37t h C h i n e s e C o n t r o l C o n f e r e n c e ,2018:53985403.[11]郝继锋,叶宏,吕广喆.机器人操作系统E t h e r C A T 技术研究[J ].航空计算技术,2020,20(3):7781.郝继锋(高级工程师),主要研究方向为嵌入式实时操作系统㊁软件形式化方法㊁U N I X /L i n u x 环境高性能服务器开发㊁T C P /I P 网络协议栈㊁网络优化方法㊂(责任编辑:薛士然 收稿日期:2020-12-03) 从内核中分离,作为独立的用户进程在用户地址空间运行,内核与不同进程间通过通道机制和共享页面进行通信㊂内核本身更加简洁,用户态服务进程的失败也不会导致内核的崩溃,系统整体运行更加安全可靠㊂另一方面,r t -s m a r t 还允许这些服务组件编译作为内核的一部分运行,以兼容原R T T h r e a d 系统中丰富的功能组件,因而具有极大的灵活性㊂参考文献[1]塔嫩鲍姆.操作系统设计与实现[M ].陈渝,等译.北京:电子工业出版社,2007.[2]邱祎,熊谱翔,朱天龙.嵌入式实时操作系统:R T T h r e a d 设计与实现[M ].北京:机械工业出版社,2019.[3]A n d r e w S T a n e n b a u m ,H e r b e r t B o s .现代操作系统[M ].4版.陈向群,译.北京:机械工业出版社,2017.[4]博韦,西斯特.深入理解L I N U X 内核[M ].陈莉君,等译.北京:中国电力出版社,2008.熊谱翔,主要研究方向为嵌入式系统及开源社区;全召(工程师),主要研究方向为计算机操作系统㊂(责任编辑:芦潇静 收稿日期:2021-01-14)。

微内核操作系统

微内核操作系统

微内核操作系统在当今科技飞速发展的时代,操作系统作为计算机系统的核心,其重要性不言而喻。

而在众多操作系统的架构中,微内核操作系统正逐渐崭露头角,成为备受关注的研究领域和应用方向。

要理解微内核操作系统,首先得从操作系统的基本概念说起。

操作系统就像是一个大管家,负责管理计算机的硬件资源和软件资源,让各种程序能够有序、高效地运行。

传统的操作系统内核通常是一个庞大而复杂的整体,包含了许多功能模块,比如内存管理、进程调度、文件系统等等。

然而,微内核操作系统则采取了一种截然不同的设计理念。

微内核操作系统的核心思想是“内核极小化”。

也就是说,它只保留了操作系统最基本、最核心的功能,比如进程间通信、少量的内存管理和进程调度等。

而其他的功能,如文件系统、设备驱动程序、网络协议栈等,则被从内核中剥离出来,作为一个个独立的服务进程运行在用户空间。

这种设计带来了诸多好处。

其一,由于内核变得非常小,其代码量减少,复杂度降低,从而提高了系统的可靠性和稳定性。

想象一下,如果内核中只有很少的代码,那么出现错误和漏洞的可能性也就大大降低了。

其二,微内核的可扩展性更强。

当需要添加新的功能时,只需要开发新的服务进程,而不会影响到内核的核心部分。

这就像是给房子添砖加瓦,不会动摇房子的根基。

其三,微内核操作系统的安全性也得到了提升。

因为大部分功能都运行在用户空间,即使某个服务进程出现问题,也不会导致整个系统崩溃。

然而,微内核操作系统也并非完美无缺。

由于功能模块被剥离到用户空间,进程间通信的开销增加了。

在传统内核中,这些功能模块可以直接调用内核提供的函数,效率较高。

而在微内核中,不同的服务进程之间需要通过消息传递来进行通信,这就会带来一定的性能损失。

为了解决这个问题,微内核操作系统的开发者们采用了各种优化技术,比如优化消息传递机制、使用共享内存等。

让我们通过一个具体的例子来看看微内核操作系统的工作原理。

假设有一个文件操作请求,在传统操作系统中,内核会直接处理这个请求,完成文件的读取或写入。

第二讲 微型机体系结构

第二讲 微型机体系结构

8个16位的通用寄存器
AX:Accumulator,累加器 BX:Base,基址寄存器 CX:Count,计数器 DX:Data,数据寄存器 SP:Stack Pointer,堆栈指针寄存器 BP:Base Pointer,基址指针寄存器 SI:Source Index,源变址寄存器 DI:Destination Index,目的变址寄存器
4. 8086/8088 CPU的存储器管理
8086/8088CPU有20位地址信号线,可直接寻址1MB的内存 空间,但8086/8008 CPU内部的所有通用寄存器都是16位的, 16位的寄存器只能寻址64KB的内存空间,所以为了寻址1MB的内 存空间,8086/8088 CPU采用了存储器分段管理技术 存储器分段管理技术。 存储器分段管理技术
例1-14 判断两个数相加之后,各个 状态标志位的设置。
MOV AX,0A365H ADD AX,7259H 1010 0011 0110 0101 + 0111 0010 0101 1001 10001 0101 1011 1110 各个状态标志位的设置如下: SF=0、ZF=0、PF=1、CF=1、AF=0、OF =0
3)总线控制电路 :产生总线控制信号。例如:产 )
生对存储器的读/写控制信号和I/O端口的读/写控制信号等
2.执行部件EU .执行部件
EU负责指令的执行。 从BIU的指令队列中取出指令、分析指 令并执行指令,而执行指令过程中所需要 的数据和执行的结果,也都由EU向BIU发 出请求,再由BIU对存储器或外设进行存 取操作来完成。 EU部件主要由算术逻辑单元 标志寄 算术逻辑单元、标志寄 算术逻辑单元 存器、通用寄存器 指针寄存器、暂存寄 通用寄存器、指针寄存器 存器 通用寄存器 指针寄存器 暂存寄 存器、指令译码器 指令译码器和控制电路组成。 存器 指令译码器 • 1)算术逻辑单元ALU )算术逻辑单元 ALU是一个16位的算术逻辑运算部件, 用来对操作数进行算术运算和逻辑运算, 也可以按指令的寻址方式计算出CPU要访 问的内存单元的16位偏移地址。 2)数据暂存寄存器 ) 数据暂存寄存器是一个16位的寄存器, 它的主要功能是暂时保存数据,并向ALU 提供参与运算的操作数。 3)EU控制电路 ) 控制电路 EU控制电路接收从BIU指令队列中取 出的指令代码,经过分析、译码后形成各 种实时控制信号,对各个部件进行实时操 作。 4)寄存器组→寻址、计算 )寄存器组

ARM平台微内核嵌入式Unix类操作系统设计与实现说明书

ARM平台微内核嵌入式Unix类操作系统设计与实现说明书

Design of Mini Multi-Process Micro-Kernel Embedded OS on ARMBo QuSchool of Mathematics and Information Technology Nanjing Xiaozhuang UniversityNanjing, ChinaZhaozhi WuSchool of Mathematics and Information Technology Nanjing Xiaozhuang UniversityNanjing, ChinaAbstract—This paper describes the design and implementation of a mini multi-process micro-kernel embedded Unix-like operating system on ARM platform in technical details, including MMU and memory space mapping, init process, inter-process communication, process management, TTY and tiny shell, multi-level priority-queue schedule, and signaling. The mini OS is developed on Linux platform with GNU tool chain by the author of this paper. The architecture of the mini OS is analogous to that of Minix. Based on it, other operating system components such as file system, network management, and copy-on-write can be appended to form a full-featured embedded operating system. The mini OS can be used for both embedded system application development and related curriculum teaching.Keywords-embedded operating system; multi-process; micro-kernel; inter-process communication; ARMI.I NTRODUCTIONWith the rapid developments of electronic and computer technologies, embedded systems have already become more and more popular in the wide variety of fields. As the core component of computer system as well as embedded system, operating system has been playing a very important role.For the purpose of technical research and curriculum teaching, a mini multi-process micro-kernel embedded Unix-like operating system [4] on ARM platform [6] is developed by the author of this paper. The advantage of the system is described in the following.•Multi-process micro-kernel architecture. Unlike uC/OS [9], which can only create tasks but noprocess, the mini OS is designed as multi-processmicro kernel analogous to the famous Minix [1].With such kind of architecture, the portability andscalability of the system can be improvedsignificantly therefore is suitable for embeddedsystems. The mini OS consists of several system-level tasks and various user-level processes, ofwhich system-level tasks perform the core operationsall in the kernel address space, while each of user-level processes running in its own independentaddress space.•For both embedded development and curriculum teaching. On one hand, the essential techniquesrelated to operating systems [2] and ARM machines[7] are involved, e.g., kernel boot, MMU, exceptions,task creation, process forking, multi-processschedule, inter-process communications, etc. All ofthese are obviously helpful for development onARM based embedded systems as well as forstudents to learn and study. On the other hand, themini OS is designed more readable, of which thesource codes can be provided to students, guidingthem to design tiny embedded operating system onARM platform from scratch.•Simple and extensible. The mini OS accomplishes the essential part of an embedded operating system,while the amount of source codes is only about 4,100lines, small enough. Based on it, other components,such as copy-on-write, file system, networkmanagement, etc., can be appended to form a full-featured multi-process micro-kernel embeddedoperating system on ARM platform.This paper firstly gives a brief overview of this ARM based mini multi-process micro-kernel OS, then describes the key techniques of its design and implementation, and finally gives an example to show the performance of it.II.O VERVIEW OF THE M INI M ULTI-P ROCESS M ICRO-K ERNEL E MBEDDED OSA.Architecture of the Mini OSThe architecture of the mini OS resembles that of Minix. The entire system is divided in to four layers: kernel layer, driver layer, server layer and user layer, as shown in Fig. 1.Figure 1. Architecture of the mini micro-kernel embedded OSThe kernel in the bottom layer schedules tasks and processes, and manages the transitions between the ready, running, and blocked states of them. The kernel also handles all messages between tasks and processes with inter-process communication (IPC) routines. In addition to the kernel itself,this layer contains two modules that function similarly to driver tasks. The clock task is an I/O device driver in the sense that it interacts with the hardware that generates timing signals, but it is not user-accessible like SD-card or NIC drivers – it interfaces only with the kernel and tasks. The system task is to provide a set of privileged kernel calls to the drivers and servers above it. Although the clock task and system task are compiled into the kernel’s address space, they are scheduled as separate processes and have their own call stacks.The three layers above the kernel are all limited to user mode. Each task or process in these layers is scheduled to run by the kernel and none of them can access I/O ports directly. However, the tasks and processes have different privileges. The tasks in layer 2 have the most privilege, those in layer 3 have some privilege, and the processes in layer 4 have no special privilege.B.MMU and Memory Space MappingFor default, the process spaces on ARM architecture [5] are designated from the lower end of address 0, one for 32M. While for most NAND FLASH based ARM machine, the lower part of the address space is designated to FLASH memory except the lowest 4K, and the program space is designated from address 0x30000000. Therefore MMU must be used to map the entire address space to accommodate the requirement of the kernel. The address space mapping for the mini OS described in this paper is shown in Fig. 2.Figure 2. Memory space mapping of the mini OS After mapping, the physical addresses for program codes are mapped to 0xC0000000 through 0xC4000000, and the physical addresses for special function registers are mapped to 0xD8000000 through 0xF0000000. The lower part of memory spaces is designated to 64 processes, each for 32M, while the physical address space of each is in fact only 1M within 0xC0000000 to 0xC4000000.C.Development EnvironmentThe mini OS is developed on Linux platform with well-known GNU [10] tool chain in C [8] and ARM assembly [12] programming language.The advantage of using such kind of development environment is that, firstly, the tools are free and open sources, secondly, Linux platform is just a well-known programming environment never becomes outdated, and finally, convenient for development and research.Considering the conventions of development and porting, boot loader is not included into the mini OS. In the development environment formed by the author of this paper, the destination host is an embedded development board equipped with a multi-function boot loader.III.D RIVER AND S ERVER T ASKSFor the mini OS described in this paper, five system-level tasks are designed, which are task_clk, task_sys, task_tty, task_pm, and task_fs.Task_clk performs the operations related to system clock, such as “alarm”, or invoke the scheduler periodically.Task_sys manipulate system calls related directly to the kernel, e.g. signaling functions.Task_tty is to implement a simple TTY terminal, based on which a tiny shell is designed to show the performance of the TTY, e.g. simple shell command and CTRL-C.Task_pm plays a very important role in the kernel, which accomplishes the essential functions for multi-process management such as fork(), exit(), and wait(), etc.Task_fs is to perform file system management. By now, however, only a basic frame is designed to implement system call functions read() and write(). A whole and entire file system will be designed on next stage.IV.I NIT P ROCESSFor a multi-process kernel [3], init process is the foundation. Firstly, it is the first process of the entire process space; secondly, all other processes in the system are spawned by it or its children while it own is created directly by the kernel when booting; thirdly, when any process loses its parent, the init process becomes its new parent. For ARM architecture [11], the default size of the address space designated to each process is 32M, from 0 to 32M – 1. That means the code of a process should be allocated at the bottom space (that is started from address 0). For ordinary ARM development boards, however, the lower address space is designated to SRAM FLASH memory while the code space starts at 0x30000000. Based on such a space it is not convenient to design a lower address space process, e.g. starting from address 0.To resolve the problem, a dedicated way is designed to create and load a process starting at 0. By this way, two files are designed, i.e. an assembly program and a C program to implement the init process itself. The former in essential is the frame of the init process program which invokes the C program to fulfill the performance of the init process. The code size of the init process program is saved in the beginning of the assembly program which will be used when the init process is loaded into kernel. The latter implements the real function of the init process. Both programs are compiled and linked to form a binary image, which is attached to the tail of the kernel image. With such a way, the binary image of the init process can be loaded into SDRAMmemory together with the real kernel image from FLASH memory during booting. After that, the init process is loaded into the virtual process space with process id 1. Other user-level processes will be forked by this process.V.M ULTI-L EVEL P RIORITY-Q UEUE S CHEDULE Obviously, schedule is the core role for multi-process operating systems. The schedule routine of the mini OS is designed in such a way that the tasks and processes be scheduled all together. To ensure the priority of all the system-level tasks over user-level processes, multi-level priority-queue schedule strategy [1, 2] is used.Five priority queues are designed, of which the highest priority queue is for kernel tasks task_clk and task_sys, the secondary for driver tasks, the third for server tasks, the fourth for init process and all other user level processes, and obviously, the lowest is task_idle which is the only user-level task located in kernel space and can only be scheduled when no any task or process is ready. By this way, all the tasks can be scheduled as soon as possible. Only when no any task is running can a user-level process be scheduled. Fig. 3 shows the allocation of the five queues.Figure 3. Five queues for multi-level priority-queue scheduleVI.I NTER-P ROCESS C OMMUNICATION There are several techniques to accomplish inter-process communications, such as message passing, signaling, and pipes, etc. The mini OS described in this paper implements the first two, i.e. message passing and signaling.The foundation of the inter-process communication is software interrupt. The SWI (SoftWare Interrupt) on ARM is just such a mechanism. Since the message passing is the core way to accomplish the communications and system calls, there only one type of calls to SWI, i.e. message passing, named as IPC (Inter-Process Communication) by which all other system call functions are implemented, e.g. fork(), read(), write(), and signaling functions.IPC is the core routine in the mini OS, which manipulates the sending, receiving, notifying of the messages among tasks and processes. The algorithm and the code of IPC are designed analogous to that of Minix with the strategy known as “rendezvous” [1].In such a way, if the send operation is done before receive, the sending process is blocked until receive happens, at which time the message can be copied directly from the sender to the receiver, with no intermediate buffering. Similarly, if the receive is done first, the receiver is blocked until a send happens.VII.P ROCESS M ANAGEMENTAccording to Unix [4] specification, all the processes in an operating system must be forked by another one, as its parent, except for init process just mentioned above. The mini OS described in this paper follows this kind of specification. To realize the creation of a new process based on an existing process, function fork() is designed. The algorithm [1] of the function is shown in Fig. 4.Figure 4. Algorithm of the function fork()When a process has exited or been killed but whose parent has not done a wait for it, the process enters a kind of suspended animation with the state set as M_HANGING. It is prevented from being scheduled and has its alarm timer turned off, but it is not removed from the PCB table. When the parent finally does the wait, the PCB table slot of the suspended process is freed and the kernel is informed.VIII.TTY AND T INY S HELLA brief TTY terminal is designed for the mini OS, on which a tiny shell is designed to perform several simple internal shell commands such as hello, echo, exit, etc.The TTY maintains two queues, one for TTY reading and another for writing. The input and output of the TTY terminal are designated to super terminal of the remote host via UART (serial port). To get the key strokes from the super terminal, the receiving of the UART is designed in interrupt mode by which an UART interrupt will occur when a key is pressed in the remote host super terminal. The sending mode of the UART is, however, designed as polling mode. Due to the limit of the paper space, the code of UART interrupt and tiny shell routines is not described in detail further.IX.S IGNALINGBesides message passing, which forms the foundation of the inter-process communications (IPC) in this mini OS, another important communication mechanism is signaling which are popularly used in Unix and Linux. Some essential signaling functions are implemented in the mini OS andsome commonly used standard signals are supported, e.g. SIGALRM, SIGHUP and SIGCHLD, etc. Signal registration function, signal(), is also designed which is used to set the handler of a signal. The right time to perform the signal handler is when IRQ or SWI finished. This can be done by inserting a signal process routine at the end of IRQ or SWI.Firstly, the original return address of the IRQ or SWI is saved onto the stack of user process, and then a manipulate function, named build_sig(), is invoked, which checks the signal setting of the currently running user process and saves the corresponding parameter (signal number) and the signal handler onto the stack of the process.Secondly, when the IRQ or SWI handler exits, returning to user process space, the system jumps to a wrap function, sig_action(), which will invoke the real signal handler set by build_sig(). After that, all the register values are restored from the stack of user space and the program counter is set to the original return address of the IRQ or SWI.X.D EMO OF THE M INI OSTo show the effects of this mini multi-process micro-kernel embedded OS, several internal shell commands for test are designed in the init process, by which some useful system call and signaling functions are tested. Fig. 5 shows the result of command forktest.Figure 5. A demonstration of the mini OSThe system call functions used by the command are fork(), wait(), exit(), getpid(), gets(), signal(), alarm(), and pause(), in which alarm() and pause() are invoked by function sleep().When command is executed, it prompts user to enter the number of sub-processes. After that, some sub-processes are created by fork(), and then sleeping 3 times, once a second. When the three times sleeping finished, each of them exits. The parent process uses function wait() waiting for the exit of each sub-process and then return.Before exit of the sub-processes, user can press CTRL-C to quit all the sub-processes. In such case, signal SIGINT is captured by TTY and a message is sent to system task, which installs the default signal handler for SIGINT, exit(), as mentioned previously. After IRQ or SWI, this default signal handler will cause all the sub-processes to exit.XI.C ONCLUSIONThe purpose of the mini OS described in this paper is to design a multi-process micro-kernel embedded operating system. Some further improvements will be developed on next stage, including following main components:•File system. A file system will be added to this mini OS, including the corresponding root file system.The function of loading and running executable files,of course, should be implemented as well since it isthe foundation of shell commands.•Network process routines. A light weight TCP/IP routine is going to be added. By which, somenetwork related functions can be implemented, e.g.,for network sniffer, simple Web service, etc.•Copy-on-write. With the paging mechanism of ARM, copy-on-write way can used to realize a simplevirtual memory space which not only can break thelimit of 1M byte process space but also reduce thetime cost of process creation.In view of limited space, some technical details, such as UART, IRQ, SWI, process switch, real time clock and time management, etc., are omitted.As mentioned above, the mini OS can be not only suitable for practical embedded systems development but also beneficial to the related curriculum teaching for under graduate computer majors. It can be improved further to form a full-featured multi-process micro-kernel embedded operating system. To research on it is of great value.R EFERENCES[1] A. S. Tanenbaum and A. S. Wookhull, Operating Systems: Designand Implementation, 3E, Prentice Hall, Inc., 2008[2] A. Silberschatz and P. B. Galvin, Operating System Concepts (6thEdition), John Wiley & Sons, Inc., 2002.[3]L. F. Bic and A. C. Shaw, Operating System Principles, Prentice Hall.Inc., 2003.[4]M. J. Bash: The Design of the UNIX Operating System, Prentice Hall,Inc. (2006)[5] A. N. Sloss, D. Symes and C. Wright, ARM System Developer’sGuide: Designing and Optimizing System Software, Elsevier Inc, 2004[6]T. Noergaard, Embedded Systems Architecture: A ComprehensiveGuide for Engineers and Programmers, Elsevier Inc, 2005[7]W. Wolf, Computers as Components: Principles of EmbeddedComputing System Design, Morgan Kaufmann pub, 2005[8]M. Barr and A. Massa, Programming Embedded Systems, SecondEdition, O’Reilly Media, Inc., 2006[9]J. J. Labrosse, Micro C/OS-II the Real-Rime Kernel, 2e, CMP MediaLLC, 2002[10]Stallman R M, Using the GNU Compiler Collection, 2002(/pdf/gcc.pdf)[11]ARM limited, ARM Architecture Reference Manual, 2005[12]ARM limited, ARM Developer Suite Assembler Guide, 2001。

微内核的结构

微内核的结构

微内核的结构
通用操作系统要满足各种不同用户的要求,因此对它在功能上的要求是通用,所以其功能是越多越好。

而嵌入式操作系统就有所不同,因为嵌入式操作系统的用户群以及对功能的要求有某种程度的专用性,所以在一个特定的应用中,嵌入式操作系统需要哪些功能、不需要哪些功能基本上是固定的。

因此,这就给设计小内核创造了条件。

相对于通用计算机系统而言,内存在嵌人式系统中是更为稀缺珍贵的资源。

因此,作为需要常驻内存的操作系统的内核,在满足应用的前提下越小越好。

另外,为了满足不同的应用需要,嵌人式实时操作系统作为嵌人式系统重要的软件,应支持可裁剪性。

换句话说,嵌人式实时操作系统的设计在结构上应高度模块化,并要提供非常灵活的手段,让系统开发者能根据实际需要进行选用。

当然,也应允许用户根据需要编写自己的功能模块,并可以很方便地集成到系统中。

目前,从操作系统现有的结构来看,对于嵌入式实时操作系统来说,使用微内核结构应该是一个较好的选择。

在这里需要强调的是,微内核并不是通过减少内核的服务功能模块而变小的,而是把内核中应提供的部分服务功能模块移动到内核外来实现的。

这一点看起来有些费解,其实也很简单。

还是拿到饭店吃饭为例,如果你按菜单点的某道菜肴,等了一会儿,你可能是吃到了这道菜,你作为一个顾客享受了这道菜肴,但是这道菜真的是这个饭店做的吗?不一定,有可能就是其他饭店做的菜,只
不过这个饭店在接收你的要求之后,它把消息发到另外一家饭店并让他们把菜做出来,再拿到你的餐桌上罢了。

如果一个饭店的大部分菜肴都可以这样来提供,那么这个饭店所占用的土地面积一定会小得多。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微内核操作系统结构
北京交通大学 计算机学院
翟高寿
第1页共4页
微内核操作系统结构客户/服务器模型
客户 进程
作业 网络 终端 服务器 服务器 服务器
……
文件 服务器
用户态
核心态
消息传递机制(客户进程与服务器之间通信)
硬件第2页共4页
微内核操作系统结构要领及评价
机制与策略分离、客户/服务器模式 内核仅实现硬件相关及最基本功能:进程调度与控制、 进程同步与通信、地址转换机制、中断/陷入处理、 设备驱动 其余更多系统功能放在内核之外:用户进程分类及优 先级计算、页面淘汰算法、分配策略
结构评价 可扩充性、正确性、可靠性 便于网络服务和实现分布式处理 系统效率受到影响
北京交通大学计算机学院 翟高寿 第3页共4页
知行合一, 开拓进取!
微内核操作系统结构■
北京交通大学计算机学院 翟高寿 第4页共4页
相关文档
最新文档