• [架构之路-221]:鸿蒙系统和安卓系统的比较:微内核VS宏内核, 分布式VS单体式


    目录

    一、鸿蒙系统和安卓系统的系统架构

    1.1 鸿蒙系统的分层架构

    1.2 安卓系统的分层架构

    1.3 鸿蒙系统和安卓系统是操作系统吗?

    二、鸿蒙系统和安卓系统的系统架构比较

    2.1 它们与Linux操作系统的关系

    2.2 架构比较

    三、操作系统基础

    3.1 微内核架构

    3.2 宏内核架构

    3.3 传统的Linux是微内核还是宏内核

    3.4 微内核还是宏内核的比较


    一、鸿蒙系统和安卓系统的系统架构

    1.1 鸿蒙系统的分层架构

    鸿蒙系统(HarmonyOS)采用了一种分层架构,以实现系统的模块化、可复用和可扩展性。

    它的分层架构包括以下几个主要层:

    1. 应用框架层(Application Framework Layer):这是鸿蒙系统的最高层,提供了各种应用程序的开发框架和运行环境。它包括图形用户界面(GUI)库、多媒体库、网络通信库、存储管理库等,为应用程序的开发和运行提供支持

    2. 界面服务层(Interface Service Layer):这一层提供了一系列的服务接口,用于应用程序和系统的交互。它包括了窗口管理器、输入管理器、通知管理器等,为应用程序提供了统一的调用接口,实现了应用程序之间的隔离与协同。

    3. OS系统服务层(System Service Layer):这一层提供了系统级的服务功能,包括设备管理、权限管理、文件系统、进程管理等。它是整个系统的核心部分,为上层的应用框架层和界面服务层提供支持,保证系统的正常运行。

    4. 驱动层(Driver Layer):这一层负责设备的驱动和硬件支持,包括显示驱动、输入设备驱动、存储设备驱动等。它与底层硬件交互,提供对硬件资源的访问能力。

    5. 内核层(Kernel Layer):这是鸿蒙系统的最底层,实现了核心的操作系统功能,包括内存管理、进程管理、系统调度等。它与硬件之间进行直接的交互,并提供了各种系统服务接口给上层的各个层级使用。

    通过这种分层架构,鸿蒙系统实现了各个层级的解耦和模块化,使得各个层级可以独立发展、灵活定制和扩展。这种架构提高了系统的可维护性、可移植性和可扩展性,并提供了更好的用户体验和性能表现。

    1.2 安卓系统的分层架构

    安卓系统(Android)采用了一种基于Linux内核的分层架构,这个分层架构被称为"Android系统堆栈",主要分为以下几个层次:

    1. 应用层(Applications Layer):这是安卓系统的最上层,包含了各种应用程序,如浏览器、联系人、短信、日历等。这些应用程序是由开发者或用户安装的,利用底层的服务和功能,实现各自的功能和交互。

    2. 应用框架层(Application Framework Layer):这是安卓系统的核心层之一,提供了丰富的API和服务,用于应用程序的开发。它包括了各种管理应用生命周期、界面绘制、数据存储、通信等功能的组件和管理器。

    3. 系统运行库层(System Runtime Libraries):这一层提供了许多在应用程序开发中常用的运行时库,包括C/C++库、媒体库、图形库等。它们提供了一些基本的功能和服务,供上层应用程序调用。

    4. Linux内核层(Linux Kernel):这是安卓系统的最底层,包括设备驱动、进程管理、内存管理、网络协议栈等。Linux内核层提供了底层的硬件抽象接口,用于与硬件设备进行交互。

    通过这种分层架构,安卓系统保持了各个层次的独立性和松耦合性,使得开发人员能够专注于特定层次的开发,同时保证了系统的灵活性、可扩展性和可移植性。此外,这种架构也帮助实现了应用程序的良好隔离和系统资源管理,提供了流畅的用户体验。

    1.3 鸿蒙系统和安卓系统是操作系统吗?

    (1)狭义上讲

    鸿蒙系统和安卓系统都不是传统意义上的操作系统,他们是建立在Linux操作系统内核之上的手机应用程序的通用运行环境。

    (2)广义上讲

    鸿蒙系统(HarmonyOS)和安卓系统(Android)都是操作系统。操作系统是一种控制计算机或移动设备硬件和软件资源的软件程序。它提供了基本的功能和服务,如任务管理、内存管理、设备驱动、文件系统等,以便其他应用程序能够运行和与硬件设备进行交互。

    鸿蒙系统是华为开发的一种基Linux微内核架构的分布式操作系统,旨在实现多设备之间的无缝连接与共享,提供统一的操作体验。它支持各种设备,包括智能手机、平板电脑、智能穿戴设备、智能电视等。

    安卓系统是由Google开发的一种基于Linux内核的移动操作系统,广泛应用于智能手机、平板电脑和其他移动设备。安卓系统支持丰富的应用生态系统,具有灵活的定制性和广泛的应用开发支持。

    尽管鸿蒙系统和安卓系统有不同的设计理念和架构,但它们都是用于管理设备资源和应用程序的操作系统。它们提供了基本的功能和服务,使得设备能够正常运行和满足用户的需求。

    站在应用程序的角度看,鸿蒙系统(HarmonyOS)和安卓系统(Android)都是操作系统。

    二、鸿蒙系统和安卓系统的系统架构比较

    2.1 它们与Linux操作系统的关系

    鸿蒙系统(HarmonyOS)和安卓系统(Android)与Linux之间存在一定的关系,但它们之间也有一些区别。下面是它们与Linux的关系的概述:

    1. 鸿蒙系统与Linux的关系:

      • 鸿蒙系统的内核部分是基于Linux内核开发的,它继承了Linux的稳定性、安全性和开放性。然而,鸿蒙系统采用了自己的微内核架构,在其基础上进行了大量的改进和优化。
      • 鸿蒙系统在内核之上构建了自己的系统架构,包括了独立的应用框架层、界面服务层等。这使得鸿蒙系统具备了更灵活的分布式能力和统一的操作体验。
    2. 安卓系统与Linux的关系:

      • 安卓系统的内核部分也是基于Linux内核开发的。这使得安卓系统能够利用Linux的广泛硬件支持和成熟的驱动库。安卓系统并没有对Linux进行大量的改进和优化。
      • 安卓系统在Linux内核之上构建了自己的应用框架和服务层,实现了对移动设备的管理和应用程序的运行。安卓系统的应用生态系统也是基于Linux的开放性设计和开发。

    总的来说,鸿蒙系统和安卓系统都有借鉴和基于Linux内核开发的历史,但它们在架构和设计上有所不同。鸿蒙系统通过微内核架构分布式能力的强化,以及跨设备的统一操作体验,试图解决多设备之间的无缝连接和共享问题。安卓系统在移动设备领域具有广泛的应用,其开放性和丰富的应用生态系统是其独特的特点。

    2.2 架构比较

    鸿蒙系统(HarmonyOS)和安卓系统(Android)在系统架构上有一些不同之处。

    下面是它们系统架构的比较:

    1. 鸿蒙系统的系统架构:

      • 鸿蒙系统采用了微内核架构,将核心功能和服务放在了内核中,而将其他的功能和服务划分成模块并以独立的方式运行。这种架构有利于系统的稳定性和可扩展性,同时也使得系统更加灵活,能够平滑地适应不同设备类型和需求。
    2. 安卓系统的系统架构:

      • 安卓系统采用了基于Linux内核的单内核架构。整个系统功能和服务都运行在同一个内核空间中。这种架构使得安卓系统能够利用Linux的广泛硬件支持和成熟的驱动库,但也可能带来一些安全和稳定性的挑战。
    3. 分布式能力比较:

      • 鸿蒙系统注重分布式能力,在系统架构中强调了多设备之间的无缝连接和共享。它通过分布式数据管理、分布式任务调度等能力,实现了跨设备的统一操作体验
      • 安卓系统在设计上更加偏向于单设备的操作系统,尽管它也提供了一些针对多设备的解决方案(如Android Things),但跨设备的统一操作体验相对较弱。
    4. 应用开发模型比较:

      • 鸿蒙系统提供了高级的分布式应用框架,使得开发者能够更轻松地编写跨设备的应用程序。鸿蒙系统的分布式能力使得开发者可以更方便地进行设备间的通信和数据交互。
      • 安卓系统有广泛的开发支持和庞大的应用生态系统。它提供了基于Java的应用开发框架,开发者能够使用Android SDK进行应用程序的开发。

    综上所述,鸿蒙系统和安卓系统在系统架构上有一些差异。鸿蒙系统通过微内核架构和分布式能力,致力于实现多设备之间的无缝连接和共享;而安卓系统则更加侧重于单设备的操作系统,并且拥有广泛的应用生态系统

    三、操作系统基础

    3.1 微内核架构

    微内核架构(Microkernel Architecture)是一种操作系统设计的范式,在这种架构中,操作系统的核心功能被精简成一个最小化的内核,只提供了最基本的功能和服务,如进程管理、内存管理和线程调度等。而其他的功能和服务则通过与内核分离的独立进程或服务的形式运行。

    微内核架构的设计思想是通过将核心功能放在内核中,并将其他功能作为服务运行,来实现操作系统的灵活性、可靠性以及可扩展性。以下是微内核架构的一些特点:

    1. 精简内核:微内核中只包含最基本的功能和服务,将其他的功能放在独立的服务或进程中运行。这样可以减小内核的复杂性和规模,提高内核的稳定性和安全性。

    2. 通信机制:微内核架构通过进程间的消息传递或远程过程调用(RPC)等通信机制来实现内核和服务之间的交互。这种设计可以保持核心内核的纯净性,同时提供了较高的灵活性和可扩展性。

    3. 动态可配置:微内核架构允许根据需求动态地加载或卸载服务,以适应不同系统配置和应用需求。这种动态可配置的特性使得系统更加灵活和可定制。

    4. 可靠性和安全性:由于微内核架构将核心功能精简到内核中,并将其他服务隔离运行,减小了内核的攻击面和故障引起的影响。这提高了系统的可靠性和安全性。

    微内核架构的一个主要优势是系统的模块化,这使得系统更容易进行扩展和维护。然而,由于微内核架构需要频繁的进程间通信,可能导致性能上的一些开销。因此,在实际应用中,微内核架构需要权衡可靠性、灵活性和性能等因素。

    3.2 宏内核架构

    与微内核架构对应的架构是宏内核架构(Monolithic Kernel Architecture)。在宏内核架构中,操作系统的核心功能和服务被实现为一个单一的内核,这个内核包含了所有的系统功能和服务。相比于微内核架构,宏内核架构将更多的功能放在内核空间中执行,而不是将其作为独立的应用空间的服务运行

    宏内核架构的特点如下:

    1. 集中化:它将所有的核心功能服务集中在一个单一的内核中,包括进程管理、内存管理、设备驱动等。这样可以获得更高的性能,因为所有的功能在内核中共享数据结构和内存空间

    2. 通信和接口:在宏内核架构中,不同的子系统和服务之间通过函数调用和共享数据访问来进行通信和协作。这种直接的调用和共享机制能够提供高效的资源访问和数据传递。

    3. 扩展性:宏内核架构在设计上允许新增功能和服务并将其编译到内核中,从而方便了系统的扩展和定制。不过这也可能导致内核的复杂性和臃肿性,对系统的可维护性和可靠性造成一定的挑战。

    4. 性能:宏内核架构通过将功能和服务集中在内核中,减少了进程间通信的开销,从而提高了系统的性能。系统中的功能模块之间无需通过消息传递进行通信,而是直接调用内核函数。

    宏内核与微内核架构相比,在性能方面可能更有优势,但随着系统的复杂和功能的增加,它也可能变得更加庞大和不灵活。微内核架构通过分离和隔离不同的功能和服务,提供了更好的可靠性和灵活性,但相应地会带来一些额外的开销。因此,在实际应用中,选择适合的系统架构需要考虑具体的场景和需求。

    3.3 传统的Linux是微内核还是宏内核

    Linux 是一个宏内核架构(Monolithic Kernel Architecture)的操作系统。在 Linux 内核中,核心功能和服务被实现为一个单一的内核,包括进程调度、内存管理、设备驱动、文件系统等。这些功能模块共享相同的内核地址空间和数据结构,通过直接的函数调用和共享数据来进行通信和调度。

    虽然 Linux 内核是宏内核架构,但它也具有一些微内核架构的特性。例如,Linux 内核提供了动态加载的模块机制,允许在运行时加载和卸载特定的功能模块,以实现系统的灵活性和可扩展性。此外,Linux 内核还拥有丰富的设备驱动程序支持,支持多种硬件平台和外设。

    需要注意的是,虽然 Linux 是宏内核架构,但它也支持一些微内核架构的概念和特性,如进程间通信(IPC)和分离用户空间和内核空间。例如,Linux 内核通过系统调用和内核模块提供了与用户空间的接口,使用户程序可以访问内核提供的功能和服务。

    总结起来,Linux 是一个宏内核架构的操作系统,具有丰富的功能和服务。它通过内核的可扩展性、模块化和支持多种硬件平台等特性,成为广泛应用的操作系统。

    3.4 微内核还是宏内核的比较

    微内核架构和宏内核架构是两种不同的操作系统设计范式,它们在设计思想、架构特点和适用场景等方面有着不同的特点和优势。

    微内核架构(Microkernel Architecture)的特点:

    1. 精简内核:微内核将核心功能和服务精简到最小化的内核中,只提供基本的操作系统功能,如进程管理、内存管理和线程调度等。其他的功能和服务则以独立的进程或服务的形式运行,与内核进行通信。
    2. 模块化和可扩展性:微内核架构将不同的功能和服务拆分为模块,并以独立的方式运行。这种模块化的设计提供了系统的可扩展性,能够根据需求动态加载或卸载相应的模块。
    3. 灵活性和可靠性:微内核架构的可靠性较高,因为内核只包含最基本的功能,减少了内核代码的规模和复杂性。同时,由于功能被设计为独立的服务运行,系统更加灵活,能够适应不同的设备类型和需求。

    宏内核架构(Monolithic Kernel Architecture)的特点:

    1. 集中化和高性能:宏内核将所有的核心功能和服务集中在一个内核中,提供高性能的资源访问和数据传递。功能模块之间通过直接的函数调用和共享数据来通信和协作,减少了进程间通信的开销。
    2. 适应性和灵活性:宏内核架构设计上更注重对不同硬件和外设的支持,具有更高的适应性。宏内核可以直接访问底层硬件,提供了更灵活的底层操作和资源管理能力。
    3. 性能优化:由于功能和服务集中在内核中执行,宏内核架构可以通过共享数据结构和内存空间,实现更高效的系统资源利用和调度。

    在比较微内核架构和宏内核架构时,需要考虑具体的场景和需求:

    • 微内核架构通常更适合大型系统、需要高可靠性和灵活性的场景,如分布式系统和桌面操作系统。
    • 宏内核架构通常更适合性能要求较高、对硬件支持要求较高的场景,如桌面操作系统和嵌入式设备。

    需要指出的是,在实际应用中,存在一些混合型内核架构(如宏内核中加入部分微内核的特性)及其他的变种架构,以平衡不同架构的优缺点,以满足特定的需求和约束。因此,选择适合的内核架构应根据具体情况综合考虑。

  • 相关阅读:
    五月集训(第二十三日)字典树
    【EI会议征稿】第五届大数据与信息化教育国际学术会议(ICBDIE 2024)
    TensorRT+Yolov7-tiny:基于TensorRT+API部署YoloV7-tiny模型
    2023.9.7 关于 TCP / IP 的基本认知
    深度学习——(2)几种常见的损失函数
    Golang标准库 container/list(双向链表) 的图文解说
    如何隐藏自己的代码(很酷)
    [U3D ShaderGraph] 全面学习ShaderGraph节点 | 第三课 | Input/Gradient
    MySQL事务及其特性与锁机制
    【Linux编程基础】
  • 原文地址:https://blog.csdn.net/HiWangWenBing/article/details/133217972