android体系结构的组成

安卓系统架构主要分为四个层次,从高层到低层依次是:

  1. 应用程序层:这一层包含了Android系统预装的核心应用程序,如电子邮件客户端、短信程序、日历、地图、浏览器、联系人管理程序等。这些应用程序通常使用Java语言编写。

  2. 应用程序框架层:这一层为开发者提供了丰富的API和工具,使得开发者可以面向底层的应用程序框架进行开发。Android应用程序框架提供了大量的API供开发者使用,简化了组件的重用,允许应用程序发布其功能块供其他应用程序使用。

  3. 系统运行库层:这一层包含了Android系统运行所需的各种C/C++库,如SQLite(提供数据库支持)、OpenGL|ES库(提供3D绘图支持)、Webkit(提供浏览器内核支持)等。此外,Android运行时库(ART)和Dalvik虚拟(Android 5.0系统之前)也位于这一层,它们负责执行应用程序的字节码。

  4. Linux内核层:Android系统基于Linux 2.6内核,这一层为Android设备提供了底层的硬件驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。Linux内核层的存在为Android系统提供了基本的系统服务和安全性。

在Android系统中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序。此外,Android还支持使用SL4A等工具来使用其他各种脚本语言进行编程,如Python、Lua、Tcl、PHP等。这些特性使得Android成为一个真正意义上的开放式操作系统。

1.操作系统层(OS)

Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。

2.各种库(Libraries)和Android运行环境(RunTime)

本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分一个是各种库,另一个是Android运行环境。

3.应用程序框架(ApplicationFramework)

Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。

4.应用程序(Application)

Android的应用程序主要是用户界面(UserInterface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。

拓展:

AndroidThings是Google推出的平台,旨在帮助Android开发者打造物联网设备。这个平台还支持强大的应用,例如视频与音频处理以及通过TensorFlow进行板载机器学习。它继承Brillo的功能外,还增加了AndroidAPI和Google服务的支持,以及一些AndroidThings的支持库。

AndroidThings最早是在2015年谷歌全球开发大会上出现的,谷歌对外宣布将会开发一个面向物联网设备的安卓操作系统,一开始被命名为「Brillo」。它其实就类似安卓系统的一个分支版本,类似于面向智能手表和穿戴设备推出的AndroidWear等;2016年12月,谷歌第一次对外公布了AndroidThings的开发者预览版本。

根据谷歌的介绍,AndroidThings和手机版安卓系统一样,也会提供大量的安卓开发接口和谷歌基础服务,可以让物联网设备的开发者快速进行功能开发。据悉,谷歌围绕物联网设备提供的服务有「谷歌云平台」,「谷歌Play服务」、以及「AndroidStudio」开发工具。

鸿蒙系统和安卓系统的比较:

1.1 鸿蒙系统的分层架构

 


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

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

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

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

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

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

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

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

1.2 安卓系统的分层架构

 


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

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

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

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

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

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

1.3 鸿蒙系统和安卓系统是操作系统吗?
(1)狭义上讲

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

(2)广义上讲

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

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

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

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

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

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

鸿蒙系统与Linux的关系:

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

安卓系统的内核部分也是基于Linux内核开发的。这使得安卓系统能够利用Linux的广泛硬件支持和成熟的驱动库。安卓系统并没有对Linux进行大量的改进和优化。
安卓系统在Linux内核之上构建了自己的应用框架和服务层,实现了对移动设备的管理和应用程序的运行。安卓系统的应用生态系统也是基于Linux的开放性设计和开发。
总的来说,鸿蒙系统和安卓系统都有借鉴和基于Linux内核开发的历史,但它们在架构和设计上有所不同。鸿蒙系统通过微内核架构和分布式能力的强化,以及跨设备的统一操作体验,试图解决多设备之间的无缝连接和共享问题。安卓系统在移动设备领域具有广泛的应用,其开放性和丰富的应用生态系统是其独特的特点。

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

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

鸿蒙系统的系统架构:

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

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

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

鸿蒙系统提供了高级的分布式应用框架,使得开发者能够更轻松地编写跨设备的应用程序。鸿蒙系统的分布式能力使得开发者可以更方便地进行设备间的通信和数据交互。
安卓系统有广泛的开发支持和庞大的应用生态系统。它提供了基于Java的应用开发框架,开发者能够使用Android SDK进行应用程序的开发。
综上所述,鸿蒙系统和安卓系统在系统架构上有一些差异。鸿蒙系统通过微内核架构和分布式能力,致力于实现多设备之间的无缝连接和共享;而安卓系统则更加侧重于单设备的操作系统,并且拥有广泛的应用生态系统。

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

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

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

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

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

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

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

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

宏内核架构的特点如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微内核架构通常更适合大型系统、需要高可靠性和灵活性的场景,如分布式系统和桌面操作系统。
宏内核架构通常更适合性能要求较高、对硬件支持要求较高的场景,如桌面操作系统和嵌入式设备。
需要指出的是,在实际应用中,存在一些混合型内核架构(如宏内核中加入部分微内核的特性)及其他的变种架构,以平衡不同架构的优缺点,以满足特定的需求和约束。因此,选择适合的内核架构应根据具体情况综合考虑。

参考;https://blog.csdn.net/HiWangWenBing/article/details/133217972

 

posted @ 2024-05-26 21:03  konglingbin  阅读(573)  评论(0编辑  收藏  举报