多核、虚拟化、多操作系统的软件趋势
将原本分散的多处理器系统整合为单一多核系统并不能通过简单地将多个系统简单地压缩在一个多核系统中来实现。系统架构的变化使多个系统之间的并行运行和通信协调方式发生了不小的变化。
本文引用地址:https://www.eepw.com.cn/article/105985.htm在采用多核技术的时候,操作系统管理内核的基本方式有两种:第一种是对称多处理(SMP),这是由一个操作系统来控制多个内核。只要有一个内核空闲可用,操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。第二种是非对称多处理(AMP),每个内核上都运行各自的操作系统。
因此,多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。实际上,多核系统和多处理器系统之间存在着许多重要的区别,导致不能把多处理器系统上的软件直接移植到多核系统上来。
多处理器系统和多核系统的主要区别之一就是,在多处理器系统中,CPU之间的界线是比较清晰的。在典型的多处理器情况下,多个CPU通过总线连接起来,即便是共享外部存储器,这些CPU基本上都是独立运行的。在多核系统中,情况就有所不同。不论采用何种架构,在多核系统中,被共享的东西非常多,例如中断控制器、外设以及Cache(高速缓存)等。
多操作系统下的Supervisor或Hypervisor
当你希望运行SMP(同构核)环境时,多核系统的这种特征通常表现为一种优势,因为所有的内核都由同一个操作系统来管理。但是,当你要在多核系统中同时运行两种以上的操作系统时,例如同时运行一套RTOS(嵌入式实时操作系统)和一套通用操作系统,就会遇到较多的困难。在这种情况下,会有两种选择:第一,在两个操作系统之间进行频繁的沟通,例如在它们之间建立主、从关系;第二,更简便的方法是采用Supervisor或者Hypervisor,这是一些少量的代码,负责管理协调多个操作系统。显然,第二种方式是更彻底、灵活、具有扩展性的多核软件架构。
Hypervisor 之所以能够有效地管理运行在其上的多个操作系统,得益于分区和虚拟化的方法。总的来说,系统中有三类资源可以被虚拟化:执行单元(CPU)、内存和设备。执行单元虚拟化是基于时间片来进行。内存虚拟化是把物理内存划分成许多区域。设备虚拟化则是通过给设备定义接口和API调用来提高使用灵活性和利用率。
Hypervisor并不是一个全新的概念,在服务器中早已得到广泛而且成功的应用。不过,嵌入式系统中经常用到的Hypervisor主要是对内存和设备进行虚拟化,以便在操作系统之间的资源共享得到完全的保证,而不是对执行单元进行虚拟化。这种专用的Hypervisor比较小,而且直接运行在硬件上,不像服务器中用到的Hypervisor主要运行在完整的操作系统之上并且使用宿主操作系统的资源。
在嵌入式Hypervisor中,性能和独立性是两大最重要的需求,而后向兼容性(可以让从属操作系统不经修改即可运行在宿主操作系统之上)是服务器Hypervisor中非常重要的需求。为了满足嵌入式系统的特殊需求,这类Hypervisor应当采用以下特殊设计:
•设备尽可能直接映射给从属操作系统,以便获得最高的性能,以及实现最佳的隔离性。
•应当具有更强的可伸缩性,可以自主选择对哪些部分进行虚拟化,也可以自主选择虚拟化的目的是提高性能还是提高隔离性。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论