OpenHarmony、Linux、Liteosd对比
openharmony
技术架构
OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开
特征
硬件互助,资源共享
通过优秀的分布式系统完成这一操作
一次开发,多端部署
这个应该就是这个系统最大的优点之一,统一的api确保各个终端之间达到完美的兼容,目前华为的那些类似碰一碰投屏等等多端之间的共享正是基于这一基础上进行的
统一OS,弹性部署
统一的OS,针对不同的硬件环境做出不同的系统方面的调度,例如内存方面的
面向系统
轻量系统(mini system)
支持设备的内存最低128KiB,应用于如智能家居领域的连接类模组、传感器设备、穿戴类设备等。
小型系统(small system)
支持的设备最小内存为1MiB,应用于如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。
标准系统(standard system)
支持的设备最小内存为128MiB,应用于如高端的冰箱显示屏。
liteos
技术架构
Huawei LiteOS基础内核是最精简的Huawei LiteOS操作系统代码,包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器、异常管理等操作系统基础组件,可以单独运行。
特征
高实时性,高稳定性。
超小内核,基础内核体积可以裁剪至不到10K。
低功耗。
支持动态加载、分散加载。
支持功能静态裁剪。
功能
任务
提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度。支持任务按优先级高低抢占调度及同优先级时间片轮转调度。
任务同步
信号量:支持信号量的创建、删除、申请和释放等功能。
互斥锁:支持互斥锁的创建、删除、申请和释放等功能。
硬件相关
中断:提供中断的创建、删除、使能、禁止、请求位的清除等功能。
定时器:提供定时器的创建、删除、启动、停止等功能。
IPC通信
提供事件、消息队列功能。
事件:支持读事件和写事件功能
消息队列:支持消息队列的创建、删除、发送和接收功能
时间管理
系统时间:系统时间是由定时器/计数器产生的输出脉冲触发中断而产生的。
Tick时间:Tick是操作系统调度的基本时间单位,对应的时长由系统主频及每秒的Tick数决定,由用户配置
软件定时器:以Tick为单位的定时器功能,软件定时器的超时处理函数在系统创建的Tick软中断中被调用
内存管理
提供静态内存和动态内存两种算法,支持内存申请、释放。目前支持的内存管理算法有固定大小的BOX算法、动态申请DLINK算法。
提供内存统计、内存越界检测功能。
异常接管
异常接管是指在系统运行过程中发生异常后,跳转到异常处理信息的钩子函数,打印当前发生异常函数调用栈信息,或者保存当前系统状态的一系列动作。
Huawei LiteOS的异常接管,会在异常后打印发生异常的任务ID号、栈大小,以及LR、PC等寄存器信息;
动态加载
动态加载是一种软件加载链接技术,不对组成程序的目标文件进行一次性链接加载,等到程序要运行时才进行链接加载。
Huawei LiteOS提供支持OBJ目标文件和SO共享目标文件的动态加载机制。
分散加载
分散加载是通过重排镜像等手段,把关键业务优先加载,从而缩短启动时间。
linux
架构
Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核抽象出一层系统调用接口,用于用户的调用访问。
总结一下,用户态的应用程序可以通过三种方式来访问内核态的资源:系统调用、库函数、shell脚本
内核
内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能。Linux内核的模块分为以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、系统的初始化和系统调用等。
应用领域
Linux系统运用在服务器领域、嵌入式领域和个人桌面领域。
服务器领域
Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题。
嵌入式领域
Linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件 裁剪,内核最小可以达到几百KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高。
主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、等都是其应用领域,得到了 Google、三星等公司的大力推广。
个人桌面领域
所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如:Windows xp、windows 7、Mac等。Linux系统在这方面的支持也已经非常好了,但此领域仍是传统 Linux 应用最薄弱的环节。传统 Linux 由于界面简单、操作复杂、图形界面应用软件少的缺点,一直普及率不如服务器领域。
主要目录结构
主要目录说明
目录名 | 说明 |
/ | 根目录,一般根目录下只存放目录,Linux只有一个根目录 |
/bin /usr/bin | 可执行二进制文件的目录,如常用命令ls、tar、cat、mv等 |
/boot | 启动Linux的核心文件 |
/etc | 系统配置文件的存放目录,如磁盘、网络、服务等 |
/etc/rc.d | 启动的配置文件和脚本 |
/home | 系统默认用户的主目录,新增用户时,所有用户的主目录都放在此目录下,比如用户user的主目录就是/home/user,可以用~user表示 |
~ | 表示当前用户的主目录 |
/lib usr/lib | 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 |
/media | 媒体文件 |
/mnt | 光驱或移动设备的挂载目录 |
/opt | 安装系统后用户本身安装的其余应用软件,是一些大型软件的安装目录或一些服务程序的安装目录,默认是空的,我们安装额外软件可以放在这个里面 |
/proc | 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息 |
root | root用户的主目录 |
/run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果系统上有 /var/run 目录,应该让它指向 run |
/sbin usr/sbin | 系统管理命令,这里存放的是系统管理员使用的管理程序 |
/srv | 存放服务启动后需要提取的数据(不用服务器就是空) |
/usr | 要用到的应用程序和文件几乎都在这个目录 |
/usr/doc | linux文档 |
/usr/include | linux下开发和编译应用程序所需要的头文件 |
/usr/lib | 常用的动态链接库和软件包的配置文件 |
/usr/man | 帮助文档 |
/usr/src | 源代码,linux内核的源代码就放在/usr/src/linux里 |
/usr/local/bin | 本地增加的命令 |
/usr/local/lib | 本地增加的库 |
/dev | 设备特殊文件 |
/tmp | 公用的临时文件存储点 |
/lost+found | 系统非正常关机而留下“无家可归”的文件 |
/var | 某些大文件的溢出区,比方说各种服务的日志文件 |