支持多核架构的微内核操作系统设计

合集下载

CPU的多核心架构及计算单元详解

CPU的多核心架构及计算单元详解

CPU的多核心架构及计算单元详解中央处理器(CPU)是计算机系统中的核心组件之一,它承担着执行计算和控制操作的任务。

随着计算机的快速发展,人们对于性能的要求也越来越高。

为了满足用户对于多任务处理和高性能计算的需求,CPU的多核心架构逐渐兴起。

本文将详细介绍CPU的多核心架构以及其中的计算单元。

一、CPU的多核心架构1.1 多核心概念及发展多核心是指在一个CPU芯片上集成多个独立的处理器核心。

与传统的单核心CPU相比,多核心架构能够同时处理多个线程或任务,提升计算机的整体性能。

多核心架构的发展源于摩尔定律的进展。

根据摩尔定律,集成电路中的晶体管数量每18个月翻倍,这意味着CPU的计算能力也在同期间不断提升。

然而,到了一定程度,提升频率并不能显著增加CPU的性能,因为频率增加会导致功耗和发热的问题。

因此,为了进一步提升性能,多核心架构成为了解决方案。

1.2 多核心的优势多核心架构具有如下几个优势:1.2.1 提升系统性能:多核心能够同时处理多个任务或线程,有效提高了系统的整体性能。

特别是对于多线程应用程序或者同时执行多个任务的场景,多核心能够更好地满足用户需求。

1.2.2 节能降耗:与提升频率相比,多核心架构能更好地平衡性能和功耗。

通过将任务分配到多个核心上执行,每个核心的工作频率可以降低,从而减少功耗和发热,延长电池续航时间。

1.2.3 增强并行计算能力:多核心为并行计算提供了强大的支持。

对于需要大量计算的应用程序,多个核心可以同时进行计算,加速处理过程。

1.3 多核心架构的实现方式多核心架构的实现方式主要有对称多处理(SMP)和复杂指令集计算(CISC)。

对称多处理(SMP)是指每个核心拥有相同的访问权限和权力,可以独立运行不同的任务。

SMP架构中,每个核心可以共享同一份操作系统,从而实现大部分应用程序的并行执行。

复杂指令集计算(CISC)则是在一个CPU芯片上,集成多个核心以及专用的计算单元,每个计算单元负责执行特定类型的计算任务。

高性能微处理器结构设计与优化研究

高性能微处理器结构设计与优化研究

高性能微处理器结构设计与优化研究在当今数字化的时代,微处理器已经成为了一个非常重要的基础设施。

微处理器广泛应用在各种电子产品中,如手机、电脑、服务器等等,作为CPU的核心部件,其性能直接影响着整个系统的工作效率和稳定性。

在这样的背景下,高性能微处理器的研究和优化也变得越来越重要。

从最初的微处理器出现至今,性能的发展已经取得了巨大的进步。

英特尔公司的X86系列处理器已经发展成为了全球性能最快的产品之一。

例如,最近发布的英特尔酷睿i9-11900K处理器拥有8个核心、16个线程,最高主频可达到5.3GHz,配合高速内存和大容量存储,可以提供前所未有的运行速度和快速响应。

高性能微处理器的构成一般由多个部分组成,其中最为核心的部分就是计算单元。

计算单元可以分为算术逻辑单元(ALU)和浮点逻辑单元(FPU)两种。

ALU主要完成整数运算,如加减乘除等,而FPU则主要用于浮点运算,如加减乘除、开根、三角函数等。

同时,高性能微处理器还包括缓存、穿透缓存、磁盘控制器等模块,以及一些特殊用途的协处理器和图像加速器等。

高性能微处理器的设计和优化是一个非常复杂的任务,需要多个专业领域的知识和技术结合才能完成。

优化技术非常多,如:1. 指令优化技术指令优化技术主要是通过改变指令执行的顺序和方式来提高微处理器的性能。

例如,采用超标量设计和预测分支等方式可以提高处理器的吞吐量和效率。

2. 缓存优化技术缓存优化技术主要是通过调整缓存大小和级别,改善缓存访问策略,以及采用智能预取等方法来提高缓存的利用率和效率。

3. 浮点运算优化技术浮点运算优化技术主要是通过改善浮点运算单元的设计和实现方式,如使用超标量技术和硬件浮点加速器等,来提高浮点运算的速度和精度。

近年来,随着人工智能、深度学习、云计算等领域的快速发展,高性能微处理器也面临巨大的挑战。

为了满足这些新应用的需求,微处理器的设计和优化技术需要不断地更新和升级。

同时,新的硬件架构和虚拟化技术也在不断涌现。

微内核操作系统

微内核操作系统

微内核操作系统在当今科技飞速发展的时代,操作系统作为计算机系统的核心软件,其性能和架构直接影响着计算机的整体运行效率和稳定性。

其中,微内核操作系统作为一种新兴的操作系统架构,正逐渐引起人们的关注和研究。

要理解微内核操作系统,首先得知道什么是内核。

内核是操作系统的核心部分,负责管理系统的资源,如处理器、内存、输入输出设备等,并为应用程序提供基本的服务。

传统的操作系统通常采用宏内核架构,也就是说,内核包含了操作系统的大部分功能,例如文件系统、设备驱动程序、网络协议栈等。

这种架构虽然在一定程度上能够提高系统的性能,但也存在一些缺点。

比如,内核代码规模庞大,结构复杂,导致其维护和扩展变得困难,而且一个部分的错误可能会影响整个系统的稳定性。

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

它将内核的功能尽可能地精简,只保留了最基本的部分,如进程管理、内存管理和消息传递机制等。

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

这些服务进程通过内核提供的消息传递机制与内核进行通信和交互。

这种设计带来了许多显著的优点。

首先,由于微内核的规模较小,代码相对简单,因此其可靠性和稳定性更高。

即使某个服务进程出现故障,也不会影响到内核的正常运行,从而大大提高了系统的容错能力。

其次,微内核操作系统的可扩展性更强。

新的服务可以方便地添加到系统中,而不需要对内核进行修改,这使得系统能够更好地适应不断变化的需求。

此外,微内核架构还提高了系统的安全性。

因为服务进程运行在用户空间,它们的权限受到严格限制,从而降低了系统受到恶意攻击的风险。

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

由于服务进程与内核之间的通信需要通过消息传递机制进行,这会带来一定的性能开销。

相比之下,宏内核架构中,由于许多功能都在内核中直接实现,不需要频繁的消息传递,因此在性能上可能会更有优势。

不过,随着计算机硬件性能的不断提升,以及优化技术的不断发展,微内核操作系统在性能方面的劣势正在逐渐减小。

操作系统设计方案

操作系统设计方案

操作系统设计方案摘要:本文旨在探讨操作系统的设计方案,以提供一个高效可靠的操作系统。

操作系统是计算机系统中的核心软件之一,负责管理计算机的硬件和软件资源,为用户和应用程序提供一个友好和可靠的环境。

通过本文的设计方案,我们将详细介绍操作系统的组成部分、功能和关键设计原则,旨在帮助开发人员构建出一个高性能和可靠的操作系统。

1. 引言操作系统是计算机系统中的重要组成部分,其主要目标是管理和控制计算机系统的各种资源,以提供一个友好和高效的工作环境。

操作系统设计与开发涉及多个方面,如资源管理、进程调度、内存管理、文件系统等。

在设计操作系统时,需要考虑到系统的可靠性、性能、安全性和可扩展性等方面的需求。

2. 操作系统的组成部分- 内核(Kernel):操作系统的核心部分,负责管理硬件资源和提供系统调用接口。

内核通常分为微内核和宏核两种类型,微内核将核心功能模块化,以提高系统的可靠性和扩展性,而宏核则将所有功能都集成在一个内核中,以提高系统的性能。

- 设备驱动程序:负责管理计算机系统的各类硬件设备,包括输入设备、输出设备、存储设备等。

设备驱动程序通过与硬件设备进行交互,实现对硬件设备的控制和管理。

- 文件系统:提供对文件和目录的管理和访问,包括文件的创建、删除、读取和写入。

文件系统还需要提供文件的共享和保护机制,以确保多个用户或应用程序可以安全地访问文件。

- 进程管理:负责进程的创建、撤销和调度。

进程管理还需要提供进程间通信的机制,以实现进程之间的数据交换和共享。

- 内存管理:负责对计算机系统的内存资源进行管理和分配。

内存管理需要实现虚拟内存和物理内存的映射,以提高内存的利用率和系统的性能。

- 网络协议栈:负责计算机系统中网络通信的协议栈,包括网络传输协议、网络路由协议、网络安全协议等。

3. 操作系统的功能- 资源管理:操作系统负责管理计算机系统的各类资源,包括处理器、内存、硬盘、网络等。

资源管理需要实现资源的分配和回收,以满足不同用户或应用程序的需求。

Intewell系统简介-特点

Intewell系统简介-特点

Intewell特点1-微内核设计,双态运行模式软总线微内核故障记录工业总线协议栈块设备驱动字符设备驱动TCP/IP协议栈应用程序Shell 命令用户态文件系统微内核•核心系统精简,满足资源有限型设备场景(极简系统代码<10000行)•系统按需扩展,各功能可灵活配置•组件服务化,实现设备共享•架构清晰,降低功能安全认证难度背景介绍产品数据解决方案产品特点系统形态服务组件/应用国电信集团工业操作系统专用背景介绍产品数据解决方案产品特点系统形态分区管理虚中断管理时空隔离中断/异常管理分区通信管理对象管理时钟管理任务管理中断管理同步/互斥文件系统TSN 协议栈USB 协议栈TCP/IP 协议栈C库数学库POSIX(PSE51)源自飞控系统的确定性调度算法:支持双时钟方式,主时钟和窗口时钟式进行调度,减小时间漂移。

•支持分区隔离机制,为应用软件提供高安全和高可靠的运行平台,提供安全应用和非安全应用混合运行。

分区,即虚拟机或实时容器•空间确定性:内存空间采用全静态化配置机制,为系统提供最好的可靠性与实时性•时间确定性:为分区提供时间表和优先级混合调度能力,确保系统内多业务运行的时间确定性和实时性,实时响应时间达微秒级•支持多核运行,支持BMP模式的分区核绑定•提供安全可靠的分区间通信机制,虚拟机内外消息延迟微秒级•支持实时容器技术,可通过云管软件实现云边协同•微内核通过IEC 61508 SIL3、EN50128 SIL4、ISO26262 ASIL D 功能安全认证特点Intewell特点2-分时分区(单机/云)国电信集团工业操作系统专用计算资源confidentialIntewell车载子系统1(实时/关键)GPOSAPP1APPn …Core1Core2Core3Core4车载子系统2(非实时/非关键)RTOSAPP1APPn …外设资源车载子系统3(非实时/非关键)RTOSAPP1APPn…独占共享Intewell特点3-混合架构满足集成在同一业务系统中应用间的不同实时性需求:•独占:保障集成到系统中的实时或关键业务应用得到资源的独占、优先使用,确保该业务的实时性;•共享:多个虚拟机在单个物理设备资源的共享使用,提高资源利用率提升,降低硬件成本投入实时/非实时、关键/非关键业务的集成…背景介绍产品数据解决方案产品特点系统形态国电信集团工业操作系统专用背景介绍产品数据解决方案产品特点系统形态实时应用非实时应用数据库图形仿真语音识别机器视觉…NC 控制CNC 控制…Intewell特点4-多态融合数据采集PLC 控制智能设备边缘控制器IPC车载域控制器边缘网关……Intewell…l 多业务安全隔离运行l 强实时保障l 实时与非实时高效互通l多场景的多种构型支持支持实时与非实时多业务融合技术②通用异构融合构型①嵌入式全实时构型③高可靠虚拟化构型Intewell RTOSIEC61131-3环境EtherCAT 总线 运动控制库ARM\MIPS\PowerPC\X86Linux\Windows HMI 视觉Intewell RTOSIEC61131-3环境EtherCAT总线运动控制库ARM\X86Intewell RTextentionX86Intewell HypervisorLinuxAPP APP Intewell RTOSIEC61131-3环境Intewell RTOSIEC61131-3环境Windows数控系统机器人控制器国电信集团工业操作系统专用confidentialIntewell实时系统RTOS虚拟网卡APP1APPn…实时系统通信通道RTOS虚拟网卡APP1APPn…Intewell特点5-跨系统通信非实时系统GOS虚拟网卡APP1APPn…通信通道SHM通信通道SHMSMIPCSHMSMIPC•SMIPC通信•自定义接口的共享内存通信•虚拟网卡的SOCKET通信保障:实时与非实时高效互通系统间通信技术背景介绍产品数据解决方案产品特点系统形态•为应用提供丰富的组件服务和标准通信接口支持 POSIX、Socket国电信集团工业操作系统专用Intewell特点6-提供高度集成开发环境背景介绍产品数据解决方案产品特点系统形态集成开发环境嵌入式软件自动测试环境基于消息的软件验证工具自动系统试验平台多通道系统综合工具(国内独家)系统监控工具事件分析工具系统异常分析工具多余度仿真计算机提供覆盖“编码-调试-测试-集成验证“多个标准软件开发过程并已成功应用在已列装的关键装备和大量工程项目开发研制过程中。

动手编写一个操作系统的内核

动手编写一个操作系统的内核

动手编写一个操作系统的内核引言操作系统是计算机系统中最底层、最核心的软件之一,它负责管理计算机的硬件和软件资源,并提供各种服务和接口供其他应用程序使用。

编写一个操作系统的内核,可以帮助我们深入理解计算机系统的工作原理,并提升我们的系统编程能力。

本文将介绍如何动手编写一个简单的操作系统内核。

准备工作在开始编写内核之前,我们需要确保准备工作完成。

首先,我们需要一台能够安装和运行开发工具的计算机。

其次,我们需要一些开发工具,比如C/C++编译器、汇编器、链接器等。

最后,我们需要一些用于测试和调试的工具,比如模拟器或者虚拟机等。

这里我们推荐使用具备调试功能的模拟器,比如QEMU。

QEMU是一个开源的虚拟机和模拟器,它支持多种处理器架构和操作系统。

通过使用QEMU,我们可以在一个虚拟环境中运行我们的内核,并进行调试。

设计内核的基本架构在开始编写内核之前,我们需要设计内核的基本架构。

一个简单的内核通常由以下几个模块组成:1.引导模块:负责启动内核的加载过程。

2.中断处理模块:负责处理硬件中断。

3.内存管理模块:负责管理计算机的内存资源。

4.进程管理模块:负责管理和调度进程。

5.文件系统模块:负责管理和操作文件。

不同的操作系统内核可能还包括其他模块,比如设备驱动程序模块、网络模块等,这里我们只介绍一个简单的内核架构。

编写引导模块引导模块负责启动内核的加载过程。

在x86架构的计算机上,引导模块通常被存储在计算机的启动扇区或者硬盘主引导记录中。

我们可以使用汇编语言编写引导模块。

以下是一个简单的引导模块示例:section .textglobal _start_start:; 这里编写引导模块的代码逻辑引导模块的具体实现方式和功能取决于操作系统的需求和目标。

编写中断处理模块中断处理模块负责处理硬件中断。

在x86架构的计算机上,中断处理程序通常由汇编语言编写,以便与硬件交互。

以下是一个简单的中断处理程序示例:section .textglobal interrupt_handlerinterrupt_handler:; 这里编写中断处理程序的代码逻辑中断处理程序的具体实现方式和功能取决于操作系统的需求和目标。

微内核体系结构的特点

微内核体系结构的特点

微内核体系结构的特点
微内核体系结构是一种操作系统设计的范例,与传统的宏内核相对应。

它的主要特点包括:
1.小而简单的内核:微内核将操作系统的核心功能限制在最小的实现范围内,只提供基本的调度、进程管理、内存管理和进程间通信等核心服务。

其他功能如文件系统、设备驱动等则被实现为用户空间的服务。

2.高度模块化:微内核采用模块化的设计,将操作系统的不同组件实现为独立的用户空间服务,使得系统的各个功能模块之间可以独立开发、测试和部署。

这样可以提高系统的可维护性和可扩展性。

3.强调安全性和可靠性:微内核通过将功能模块移出内核空间,限制内核代码的规模和复杂性,以降低系统中出现错误和漏洞的可能性。

同时,通过进程间通信机制提供安全的交互方式,实现了更高的隔离性和可靠性。

4.可定制性:微内核体系结构允许系统根据需求进行灵活的定制和配置。

各个组件可以相对独立地进行替换、更新或升级,而不会影响其他模块的正常运行。

5.性能折衷:微内核的设计中,由于每个功能模块都需要通过进程间通信与其他模块进行交互,因此涉及系统调用的开销较大,可能对性能产生些许影响。

但随着硬件技术和操作系统设计的不断进步,这个差距正在逐渐缩小。

微内核体系结构的设计理念可以提供更灵活、安全、可靠和可拓展的操作系统环境,但也存在挑战,如设计复杂性、性能问题和兼容性等。

因此,在选择使用微内核体系结构时,需要综合考虑具体的应用场景和需求。

微内核技术的概念和功能

微内核技术的概念和功能

微内核技术的概念和功能微内核技术是一种操作系统内核设计思想,主要目的是将操作系统内核划分为若干个独立的、功能单一的模块,每个模块运行在用户空间,通过消息传递进行通信和协作。

与传统的宏内核相比,微内核技术具有更好的可扩展性、可靠性和安全性等优势。

它能够实现操作系统的高效运行,提供良好的系统可维护性和灵活性,同时适应多种计算机硬件平台和应用场景。

在微内核技术中,内核被分为多个独立的模块,每个模块负责一个特定的功能,例如进程管理、文件系统、设备驱动等。

这些模块通过消息传递进行通信,而不是直接的函数调用。

这种设计使得每个模块只需要关注自身的功能而不需要知道其他模块的具体实现细节,提高了代码的可维护性和可重用性。

微内核技术的主要功能包括:1. 进程管理:微内核负责管理系统中的进程,包括进程的创建、调度、挂起、恢复等。

通过消息传递,不同的进程可以进行通信和协作,提高了系统的可扩展性和灵活性。

2. 内存管理:微内核负责对系统内存的分配和管理,包括虚拟内存的映射、页面置换、内存保护等。

通过独立的内存管理模块,可以灵活地适应不同的内存需求和硬件平台。

3. 文件系统:微内核提供文件系统的管理功能,包括文件的打开、读写、关闭等操作。

通过消息传递,不同的文件系统模块可以提供不同的文件系统服务,满足不同应用的需求。

4. 设备驱动:微内核负责管理系统中的设备驱动,包括设备的初始化、中断处理、数据传输等。

通过独立的设备驱动模块,可以方便地支持不同的设备类型和硬件平台。

5. 安全性:微内核技术可以提供更好的系统安全性,通过模块化的设计,可以对不同的功能模块进行隔离,减少系统的攻击面。

同时,微内核还提供了权限管理和访问控制等安全机制,保护系统和用户数据的安全。

6. 可靠性和可扩展性:由于微内核设计将操作系统内核拆分为多个独立的模块,每个模块运行在用户空间,通过消息传递进行通信,模块之间的故障不会影响整个系统的稳定性。

同时,由于模块的独立性,可以方便地进行模块的添加、删除和替换,提高了系统的可扩展性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

—249—支持多核架构的微内核操作系统设计张荫芾,应忍冬,周玲玲(上海交通大学电子信息与电气工程学院,上海 200240)摘 要:针对多核架构开始在嵌入式领域普及的趋势,设计一个基于多核处理器架构的微内核操作系统,描述系统中内存管理、线程调度、锁和中断、线程间通信以及应用程序等各部分的设计方案。

该设计充分利用多核架构和微内核操作系统的特点,不仅应用于与Intel 公司合作的L4微内核操作系统研究项目,也为其他微内核操作系统设计提供了参考。

关键词:微内核;多核架构;操作系统;嵌入式系统Multi-core Architecture Supported Micro-kernel Operating System DesignZHANG Yin-fei, YING Ren-dong, ZHOU Ling-ling(School of Electronic, Information and Electrical Engineering, Shanghai Jiaotong University, Shanghai 200240)【Abstract 】Based on the trend that multi-core architecture is more and more widely used in embedded-system field, this paper designs a micro-kernel operating system which supports multi-core architecture. It describes memory management, thread schedule, lock & interrupt,inter-thread communication as well as application design. The design fully utilizes the features of multi-core architecture and micro-kernel operating system. This paper not only provides the design for the L4 micro-kernel research project cooperated with Intel Co., but also benefits other developers as a reference design for the micro-kernel operating system.【Key words 】micro-kernel; multi-core architecture; operating system; embedded system计 算 机 工 程Computer Engineering 第35卷 第23期Vol.35 No.23 2009年12月December 2009·工程应用技术与实现·文章编号:1000—3428(2009)23—0249—03文献标识码:A中图分类号:N945.121 概述随着计算机技术的飞速发展,多核处理器已经在个人电脑上普及,并且开始进入嵌入式设备领域。

有了硬件的支持,还必须有操作系统。

传统的个人电脑上的Windows 和Linux 操作系统虽然可以通过裁剪移植到嵌入式设备上,但并非最佳选择。

基于微内核架构的操作系统因其在实时性、安全性和可靠性方面的出色性能,非常适合嵌入式领域。

微内核操作系统是指在内核中只保留最基本的进程调度、地址映射和进程间通信功能,而令其他功能都以用户态的服务程序的方式实现的操作系统。

在微内核操作系统中,由Jochen Liedtke 开发的L4微内核操作系统已经成为了第2代微内核的一个标准,在学术和工程领域都有广泛应用。

当前已经有不少国外学者提出了L4在多处理器架构上的设计方案[1-3],但尚无针对多核架构的设计。

本文正是填补了这个缺口,提出一种设计方案,基于L4最广泛的一个实现Fiasco 进行修改和增强,使之可以运行在多核架构上。

为避免混淆,对于多核的“核”(core),本文使用处理器“核心”或者“核”这个称呼,对于微内核操作系统的“核”(kernel),本文使用“内核”这个称呼。

2 多处理器架构和多核架构的比较如前文所述,已经有不少的国外学者研究了支持多处理器架构的L4操作系统的设计,但由于多核架构和多处理器架构上的一些不同点,两者之上的L4操作系统的设计理念有非常大的区别。

如图1所示,多核架构的2个核共享一些电路,比如二级缓存、前端总线等。

由于2个核在同一片芯片内部,互相之间的距离较近,这就允许缓存的同步电路运行在一个相当高的时钟频率上,这比多处理器架构需要信号在2片芯片之前传递的情况要快得多,而更高的时钟频率使单位时间里可以发送更多的数据[4-5]。

(a)多处理器架构 (b)多核架构图1 多处理器架构和多核架构的比较另一方面,多处理器架构也有自己的优点,正因为2个处理器不共享前端总线,当2个处理器同时访问内存中不同地址的时候不会相互影响,这就相当于多处理器架构在访问内存的时候带宽要比多核架构大得多。

但多核架构在2个核之间高速通信的优点在大多数情况下都能弥补它由于共享前基金项目:英特尔大学合作研究基金资助项目“微内核架构上的虚拟化技术研究”作者简介:张荫芾(1984-),男,硕士研究生,主研方向:嵌入式系统;应忍冬,讲师;周玲玲,副教授收稿日期:2009-06-30 E-mail :zhangyinfei@端总线而造成的访问内存的性能上的损失。

所以当前多核架构更加流行一些。

综上所述,本文在设计支持多核架构的L4操作系统时,会放宽对多核间IPC的限制,因为系统可以利用共享的L2 Cache存放消息来实现高速的多核间IPC。

但考虑到共享前端总线,在设计时会避免频繁地访问内存。

3 系统设计3.1 总体设计对于多核上的操作系统设计,最容易想到的设计方案是在某一个核(一般称为Bootstrap Core)上运行操作系统,然后这个操作系统管理所有的核。

但这种方案需要大量修改原有的L4代码,并且系统结构复杂,难以保证微内核操作系统应有的效率。

正因为L4是微内核架构的操作系统,本设计采用另一种选择,就是如图2所示的在每一个处理器核心(core)上运行一个L4操作系统的内核(kernel)。

各个内核之间互相独立,又有一定的同步机制。

而之上运行的服务程序如内存分配程序sigma0,资源管理器roottask,以及其他程序也都是运行在各个独立的内核上,通过多核间IPC来通信。

本文称之为离散模型。

ApplicationLayerServiceLayerKernelLayerHardwareLayer图2 总体架构设计的离散模型基于离散模型的架构设计的优点不仅是可以大量复用原有的L4代码,它还非常适用于嵌入式场景。

比如嵌入式设备需要高可靠性[6],本设计可以使用一个核运行所有的应用程序,而另一个核作为热备份。

由于2个核上都运行了操作系统,就算操作系统崩溃,也可以较为平滑地过渡到热备份的核上。

此外,L4是一个实时的操作系统,本设计可以指定一个核的资源完全用于实时的应用程序,而另一个核的资源留给非实时的程序,这样的隔离架构非常清晰,而实现方式只要指定一个操作系统内核运行在实时模式,而另一个运行在非实时即可[7]。

不仅如此,离散模型在安全性上也有应用,L4的一个著名的应用是在微内核上运行多个L4 Linux,密钥放在一个L4 Linux中,而执行程序运行在另一个中。

现在本设计把密钥放在某个核上运行的L4内,而程序执行在另一个核的L4之上,实现更加彻底的隔离[8]。

3.2 内存管理对内存管理的设计,其实也就是对地址空间共享程度的设计。

按照L4的设计,一个任务(相当于一般操作系统中的进程)中所有的线程共享一个地址空间。

如果想实现并行计算,即一个任务中的多个线程运行在不同的核上的话,必须让地址空间对所有的核都是可见的。

也就是说更改地址映射等工作必须通知其他核,这无疑增加了系统的复杂性。

当然,也可以让每个核上的线程对应一个地址空间,并对所有的地址空间同步,但这无疑成倍地增加了内存的开销,并且同步所有的页表开销也很大。

此外设计时还会遇到L4中存放内存分配映射关系的数据库MapDB是多个核共享还是每个核拥有一个的问题。

由于MapDB中保存了内存分配和映射的层次关系,而这种关系难以从一个核复制到另一个核上。

除非系统完全不允许线程的迁移,即线程永远都运行在同一个内核上,否则分离的MapDB架构难以实现。

综上所述,考虑到多核架构共享L2 Cache、多核之间通信较快的特点,本设计采用同一任务的多个线程运行在不同核上时共享同一地址空间和MapDB的设计。

这个架构允许并行计算,给整个系统带来了很大的灵活性。

此外由于本设计采用了离散的架构设计,并且多个操作系统内核之间共享MapDB,设计时需要对操作系统内核本身的地址空间做一下处理。

对于内核地址空间中非共享的部分,多个内核会分配到不同的物理地址。

而对于共享的部分,会使用相同的物理地址。

3.3 线程调度对于线程调度,最理想的情况自然是完全自由的全局调度,内核把线程分配到空闲的核上,并进行全局的负载平衡。

但全局的调度有诸多问题。

首先,L4的调度策略是最高优先级的线程占有CPU,如果多个线程有相同的优先级,则轮流被执行。

如果在多核架构下,这些最高优先级的线程数少于处理器核心的数量,则就算有核空闲也只能空跑,造成了资源的浪费。

其次,L4有所谓“捐赠”的机制,被阻塞的线程可以把自己的时间片贡献给依赖的线程,使自己需求的资源尽快释放或者自己想要的服务尽快被执行。

但对于多核架构,线程所拥有的时间片只是针对自己所在的核心,如果要把依赖的线程迁移到自己所在的核运行自己的时间片,然后再迁移回去,情况就变得很复杂。

此外,由于本设计使用了离散模型,同步全局的等待队列也是件开销很大的事情。

因此,本设计退而求其次,对于细粒度的调度,系统只支持在操作系统内核内部,即同一个处理器核心中进行,系统也支持同一个核内部的时间片捐赠。

但系统会提供一种称为线程迁移的方法,把线程从一个核转移到另一个核。

具体操作就是保存线程的状态并在当前的核上删除,然后在另一个核上重新创建线程。

对于多核之间的负载平衡,系统采用用户态的应用程序通过线程迁移实现。

3.4 锁和中断L4中提供的关中断和Helping Lock这2种机制都难以适应多核架构的环境。

关中断只能屏蔽来自当前处理器核心的中断,而Helping Lock是指被阻塞的线程贡献时间片给拥有锁的线程来加快资源释放,这在多核架构下需要线程在2个核间来回迁移,实现机制复杂。

相关文档
最新文档