当前位置:首页 > 操作系统
  • RT-Thread商业网站发布,将以自主操作系统及核心软件技术服务于行业

    RT-Thread商业网站发布,将以自主操作系统及核心软件技术服务于行业

    2021年4月28日,睿赛德科技正式上线RT-Thread商业网站。上海睿赛德电子科技有限公司成立于2011年,是RT-Thread的实际拥有者和发展方向控制人,公司以“操作系统运营商和核心软件技术服务商”为定位,致力于开发运营生态繁荣社区活跃的AIoT操作系统,并在此基础上为行业提供专业可靠的软件技术产品和服务,包括面向特定行业领域的专业操作系统发行版、专业中间件、板级支持包软件、集成开发环境及技术服务。 RT-Thread商业版源自于睿赛德科技10多年间深厚的技术积累及对产业需求的深挖与聚焦,“专业可靠,精简高效”早已深深镌刻在我们的基因之中。未来,我们将基于实时操作系统领域为客户提供专业的软件综合解决方案,缩短产品研发周期,降低产品研发成本,保障产品的实时可靠,加速企业产品上市和自主化进程。 标准认证 RT-Thread商业网站围绕“产品”和“服务”这两大主线展开,紧扣军工、航天、大工业等对可靠性要求苛刻的特种行业需求,为客户清晰明了的展示了RT-Thread部分商业产品以及服务规范。 标准化产品主要包含:专业操作系统 、专业中间件、集成开发环境、评估硬件平台等。 部分产品一览 后续将有更多针对不同领域,专业高品质的商业产品上线,敬请期待! 除标准产品外我们还将针对不同客户需求提供专业服务,包括24小时远程答疑、标准版或定制化专业培训、个性化解决方案的咨询与定制、专业人员现场支持、关键技术联合研发等。 全方位服务 RT-Thread COO 邹诚先生:睿赛德科技作为拥有系列操作系统自主知识产权的高科技企业,将持续以自主操作系统及核心软件技术,服务行业客户,提高产品竞争力,创造市场价值,为产业科技升级贡献一臂之力!

    时间:2021-05-07 关键词: RT-Thread 操作系统 软件

  • 详谈Linux系统之实时监控相关技术

    详谈Linux系统之实时监控相关技术

    万物互联和大数据技术的发展,让我们的生活更加活色生香,其背后离不开安全、稳定可靠的服务器系统。 这里我们主要是从系统日常行为安全的角度分享一种能满足线上部署、能够将进程或文件创建、网络连接、网络I/O、文件I/O、shell操作、数据库操作、telnet操作、http访问、系统调用(syscall)和系统资源信息等系统相关的行为信息实时采集和存储的Linux行为监控技术。 传统监控技术 现有系统行为监控的实现技术主要采用以下方法: 1.LinuxKprobes调试技术 Kprobes调试技术是一种专为Linux内核跟踪和调试而设计的特定API。Kprobes允许内核开发人员为任何内核指令以及函数入口和函数返回处理程序安装预处理程序和后处理程序,这些处理程序可以访问并更改寄存器。这样一来,内核开发者们就可以监控系统调用相关工作流程并簿记。利用Kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态地插入探测点来收集所需的调试状态信息;关于“调用了哪些系统”、“系统何时被调用”、“执行是否正确以及函数的入参和返回值是什么”等疑惑都可以轻松解决。此外,还能将这些信息屏幕输出或转储日志文件。 2.Linux内核的tracepoints(跟踪点)技术 内核的tracepoint是一种轻量级的hooks技术,使用高效的系统调用行为跟踪及相关性能计算,对系统本身的性能只有微小的时间损失和空间损失。通过注册syscall_enter_probe等定制的probe函数,在发生系统调用相关行为后,内核找到probe函数,并将参数等信息传递给probe函数。只要将probe函数中记录的相关行为信息输出,即可达到监控目的。 在现有的Linux系统行为监控工具中,采用LinuxKprobes调试技术、Linux内核的tracepoints(跟踪点)技术的工具有:strace、ftrace、tcpdump、lsof、htop、iftop、systemTap、perf…… 以上的工具通常只能作为日常内核开发调试或日常运维分析工具来使用,主要用于开发调试或问题定位等简单的信息输出。然而,这些工具存在一些使用缺陷,可以总结为以下几点: 1、仅适用于内核开发人员调试使用或是运维人员在现场开启使用,各工具特点不一,难以满足系统全面监控的需求。 2、没有提供行为数据的良好存储能力,只提供简单的输出或是日志存储。由于没有数据缓存功能,容易造成行为数据的丢包,不能很好地支撑事后数据回放或分析。 3、不能进行线上运行的实时部署,只能在事后或事中开启,无法满足运维或安全监控的自动化要求。在高吞吐、高并发的服务器上,增加了服务器运行的负担。 新型实时监控缓存技术方案 针对现有技术无法满足线上实时部署、影响服务器性能、行为数据不具备良好的存储和缓存功能等缺陷,我们给大家分享一种具备实时监控和缓存功能的技术方案。 该方案主要是采用分层结构的模型进行架构的,具体分为内核probe层、基于内存映射mmap技术的buffer层、基于本地数据库的用户态缓存层。具体结构如下图: 业务流程描述 下面通过一个具体的系统行为事件信息采集-缓存的例子,来说明这三层之间的业务流关系: 首先,当用户发起网络连接服务主机操作,在服务主机系统中将发生socketaccpet系统调用中断,服务进程陷入内核态,进入系统调用例程。 其次,通过Linux内核tracepoints机制,内核查找系统调用tracepoint的probe函数;此时,内核查到已经挂载的内核probe层的probe函数,并将相应accpet系统调用参数信息传入probe函数。 接下来,内核probe层的probe函数将传来的系统调用相关信息进行分类、序列化处理后,将相关参数信息转化为系统行为事件信息写入mmapbuffer层。 最后,用户态缓存层进程通过mmap映射技术,从mmapbuffer层读取具体的系统行为事件信息,将系统行为事件信息再次格式化为易于阅读和分析的字符串信息,并选择一种本地或分布式的缓存技术,持久化存储系统行为事件信息。 通过上述业务流程的分析,可以概括出上述三层主体功能分别为:内核probe层采集系统调用信息、mmapbuffer层转化系统行为事件信息、用户态缓存层持久化系统行为事件信息。如下图所示: 通过上文可以得知,本方案与目前现有工具或方案的主要区别在于本方案体现了以下两方面:实时性、缓存持久化。 实时性 “实时性”就是指系统操作行为(系统调用)信息能够实时感知,“零损耗”地对信息进行采集。 我们知道系统行为信息的采集是由“内核probe层”完成的,在该层中主要也是采用了Linux内核字符设备驱动技术+Linuxtracepoints机制。通过开发Linux内核字符设备驱动来驱动probe模块,在probe模块中挂载tracepoint函数,采集各系统调用的相关信息。 为了实现系统调用信息从内核probe层到用户态缓存层的“Zerocopy”高效传递,在probe层与用户态缓存层采用了Linux内核驱动与用户态进程实现地址共享的mmapbuffer技术方案。 缓存持久化 经过内核probe层采集的系统行为事件信息存放在mmapbuffer层中,为了实时高效地将这些事件信息持久化存储,本方案采用了一种开源高效的本地文件数据库引擎,该引擎占用资源少、无需安装和管理配置、数据吞吐率每秒可达上万条记录。这样轻型的持久化模块,可以通过“零损耗”的方式部署到线上服务器,而不占用服务器资源。 从mmapbuffer层中读取到系统行为事件信息,在用户态缓存层还可以根据具体业务的要求,做一些数据处理分析,如格式化、过滤等。最终存放到文件数据库中,从而实现系统行为事件信息的持久化缓存。

    时间:2021-04-15 关键词: 监控 Linux 操作系统

  • 基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    排爆机器人(EOD robot)是一种遥操作地面移动机器人,操作机主体一般是由一个机械手和一个可移动平台组成,主要用于拆除疑似爆炸物品,以减少作业现场人员伤亡,是军警部门必须装备的设施。目前国际上主要流行美国Remotec公司的Andros系列排爆机器人、法国Cybernetics公司研制的TRS200中型排爆机器人等。但是国外的排爆机器人价格过高,出现故障后维修特别不方便。因此国家863专家组已经将高性能排爆机器人的研发及国产化列入了重点支持的课题。 由于种种原因,目前的排爆机器人很多只采用PLC实现点动控制,功能有限且操作性较差。研究高性能控制器成为排爆、消防等各种遥操作地面移动机器人的共同课题。利用先进的嵌入式系统技术可以较好地解决这类问题。 本文概述了上海交通大学机器人研究所研制的新型遥控移动式排爆机器人PBJ-1的嵌入式控制系统(如图1所示),主要叙述基于RTX51嵌入式实时操作系统(RTOS)开发排爆机器人PBJ-1嵌入式控制系统固件的情况。利用嵌入式系统技术开发适合排爆等各类遥控地面移动机器人使用的嵌入式控制系统能够解决上述种种矛盾。 1 PBJ-1功能介绍 目前国际上比较流行的排爆机器人,都需要由经过专门培训的操作人员通过操作一组分别控制机械臂上各个关节驱动电机的按键控制,操作很不方便。操作人员需要根据现场的状况,判断出需要机械手执行的动作,再经过大脑的转换,手工控制机械臂各个关节顺序动作,使机械手爪拟合出一条空间轨迹以完成作业,大大降低了工作效率。这类排爆机器人一般都需要大量的摄像机,随时显示爆炸物相对机械手爪的位置,以便操作人员决定下一步动作。 新型排爆机器人PBJ-1为了使操作人员操作更加方便,在嵌入式控制器中嵌入了机器人运动学运算,能够实现机械臂的自主联动控制。操作者只要通过观看控制箱上面的显示器,直接操纵控制器命令机器人水平前、后或垂直上、下运动,机械臂可以实时进行机器人运动学运算和分解运动控制,控制机械手爪完成空间的直线拟合运动。这种操作方式略过了操作人员在大脑中进行动作转换的步骤,大大方便了排爆这一高危险性作业现场的作业。 为了方便现场操作,在其嵌入式控制器系统中还加入了机器人的一些半自主动作功能。例如当机器人完成作业后机械臂可以自动折叠归位;机械臂可以自动进入作业最佳操作姿态;当操作不当时,控制器可以自主取消操作人员发送的命令,以避免机械臂与车体之间的干涉碰撞等。 为防止爆炸物被恐怖分子遥控引爆,爆炸物品的拆除现场一般都要做电磁屏蔽处理,不能使用无线遥控型机器人,只能采用有缆遥操作移动机器人。由于爆炸物品的拆除作业危险性很大,所以对排爆机器人的有线通讯系统的可靠性要求很高。PBJ-1是通过RS-485协议实现相互之间远距离、高速、高可靠性通讯。 操作人员可以通过上位控制箱里的液晶显示器监视作业现场的状态;通过操作各种动作按钮及操纵杆控制机器人完成各种作业。控制箱有六组4位数显LED,分别显示机器人型号(PBJ1)、通讯状态(run或Err)、大小臂关节角、机器人及车体运动速度、机器人电源实时电压。这些都保证了操作人员可以全面了解机器人具体运行状态,顺利完成作业。 2 PBJ-1嵌入式控制系统设计 遥操作机器人由于工作于非结构环境中,实际期望运动轨迹未知,所以需要根据操作者的实时操作情况进行动态实时的目标位置生成及轨迹规划,并完成相应的运动控制。 由于这台新型排爆机器人功能增强,下位机微控制器需要实时完成机器人运动学及分解运动控制解算,并驱动各个接口器件实时控制机器人运动,还要保证上、下位机之间的正常通讯连接,及时、迅速、高可靠性地响应上位机经过处理的数据并且上传机器人本体的各种状态信息,负担很重。因此如何合理地进行系统固件程序设计成为决定该机器人实际运行效果的关键。 要实现上面所述的功能,微控制器的应用必须能够同时进行多任务或工作的执行。对此,传统的基于单任务顺序循环机制的程序设计方法难以胜任,如图2所示。因此,需要找到一种新的合适的控制器设计方法。由于微控制器系统功能通常可以分解为多个相对独立的模块,将这些模块理解为任务,从而可以引入多任务机制进行管理。引入多任务机制后,可以有效地改善程序结构,满足应用系统复杂的定时要求。在多任务机制下,CPU的运行时间被划分成许多小的时间片,由某种调度算法按不同的优先级别分配给不同的任务。多个任务分别在各自的时间片内访问CPU,从而产生了微观上轮流运行、宏观上并行运行的多任务效果,如图3所示。 在多任务嵌入式系统中,合理的任务调度必不可少。单纯通过提高处理器速度无法达到目的,这样就要求嵌入式系统的软件必须具有多任务调度能力。因此必须基于多任务实时操作系统进行嵌入式系统固件开发。 实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用效率。其重要特点是通过任务调度对重要事件在规定的时间内作出正确的响应。实时操作系统既能保证对外界的信息以足够快的速度进行相应处理,又能并行运行多个任务,具有实时性和并行性的特点,因此能很好地完成对多个信息的实时测量、处理并进行相应的多个实时控制。 PBJ-1上下位机嵌入式控制器都是以业界经典51内核增强型单片机AT89C55WD为核心;基于嵌入式实时操作系统RTX51Tiny开发固件程序。通过提供必不可少的系统服务,如信号量管理、消息队列、延时等,实时内核使CPU的利用更为有效。 2.1 RTX51简介 RTX51是德国Keil公司开发的一种应用于MCS51系列单片机功能强大的、可用于目前世界上所有由Intel 8051标准内核派生出的350多种增强微控制器的实时操作系统。使用RTX51可实现程序按时间片轮转和抢先的任务调度,并且支持事件和信号驱动。 RTX51有两个版本:RTX51Full和RTX51Tiny。RTX51Full允许4个优先权任务的循环和切换,并且能够并行地利用中断功能。RTX51Full可以从内存池中申请和释放内存,同时可以强制一个任务停止执行等待一个中断,或者是其它中断传来的信号量或者消息。RTX51Tiny短小精悍,是RTX51Full的一个子集,只占用900字节ROM、7字节DATA型及3倍于任务数量的IDATA型RAM空间,可以很容易地运行在没有扩展外部存储器的单片机系统上。使用RTX51Tiny的程序可以访问外部存储器,允许循环任务切换,并且支持信号传递,还能并行地利用中断功能。RTX51Tiny 允许“准并行”同时执行几个任务。每一个任务在预先定义好的时间片内得以执行。时间到使正在执行的任务挂起,并使另一个任务开始执行。最新的RTX51Tiny2.0重新调整了内核结构,使用更灵活、执行更快、占用的资源更少,另外还增加了几个新的特性。 RTX51Tiny内核完全集成在Keil C51编译器中,以系统函数调用的方式运行,因此可以很容易地使用Keil C51语言编写和编译一个多任务程序,并嵌入到实际应用系统中。内核主要提供以下函数供应用程序引用,见表1。 RTX51Tiny的用户任务具有表2所列的几个状态,它们如图4所示进行切换。 为了保证任务在执行顺序上的协调,必须采用同步机制。内核用以下事件进行任务间的通信和同步: (1)SIGNAL:用于任务之间通讯的位,可以用系统函数进行置位或清除。如果一个任务调用了os_wait函数等待SIGNAL而SIGNAL未置位,则该任务被挂起直到SIGNAL置位,才返回到READY状态,并可被再次执行。 (2)TIMEOUT:由os_wait函数开始的时间延时,其持续时间可由定时节拍数确定。带有TIMEOUT值调用os_wait函数的任务将被挂起,直到延时结束,才返回到READY状态,并可被再次执行。 (3)INTERVAL:由os_wait函数开始的时间间隔,其持续时间可由定时节拍数确定。带有INTERVAL值调用os_wait函数的任务将被挂起,直到间隔时间结束,才返回到READY状态,并可被再次执行。与TIMEOUT不同的是,任务的节拍计数器不复位。 RTX51Tiny采用微控制器(51)内部定时器T0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此各任务是并发执行的。RTX51Tiny调度程序定义这些任务按照下面的规则运行: (1)如果出现以下情况,当前运行任务中断: ①任务调用os_wait函数并且指定事件没有发生。 ②任务运行时间超过定义的时间片轮转超时时间。 (2)如果出现以下情况,则开始另一个任务: ①没有其他的任务运行。 ②将要开始的任务处READY或TIME-OUT状态。 图4 RTX51任务切换图 2.2 嵌入式操作系统的特殊问题处理 在RTX51 下进行多任务编程与传统的顺序循环单任务编程相比有以下几个值得注意的不同点: (1)多任务编程CPU 是轮流执行每个任务,可以将每个任务设计成死循环的模式,不断重复地进行数据计算或者访问硬件,不会影响别的任务的执行。当一个任务的数据计算完成后,可以通过os_wait 函数将CPU 交出执行别的任务。而单任务模式却独占了所有的CPU 资源,时常要担心是否执行时间太长而不能及时响应外部的异步事件。 (2)多任务编程有一个缺点,即资源冲突和重入问题。所谓资源冲突就是任务A在访问某个资源时,恰好发生了任务切换,任务B也访问这个资源,且改变了它的状态,这样当再次执行任务A时就可能发生冲突或带来不确定性。而所谓重入是指假设任务A在运行某个函数,发生任务切换后,任务B也运行这个函数,这样就会破坏任务A执行这个函数的现场,从而可能导致任务A执行函数时结果不正确。这种问题尤其容易出现在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。 在本嵌入式机器人控制器开发过程中,采用这种处理办法:将对每个独立的硬件(例如串行通讯)进行操作的驱动程序段放在一个任务中,也就是说要想对某个设备资源进行操作,只有依靠执行相应的任务来实现。这样无论何时切换任务,都不会对任何独立的“外设”造成影响。这样做彻底避免了资源冲突和重入问题而且利于系统维护与升级。各个任务之间要实现通信,可以调用os_send_signal函数及全局变量。 在嵌入式控制系统开发中借鉴了Windows消息驱动的思想,使部分不需要始终执行的任务处于等待信号状态,这样它们不会占用资源。只有当需要进行相应处理时通过需要它们运行的任务发送给它们SIGNAL,它们才会进入RUNNING任务队列中,得到执行。相关的系统函数为: os_wait (K_SIG, 0, 0); //等待信号 os_send_signal (Task_ID);//向Task_ID任务发送一个信号。 这样的处理,可以使微控制器在有限的资源下集中精力处理好耗时且重要的事情。 2.3 排爆机器人嵌入式控制系统固件开发 上位机嵌入式控制器固件结构如图5所示。根据控制器要完成作业的独立性分割成几个任务片。图5表示了各任务之间的关系、与外设连接关系。整个系统被区分成三个层次。 减少上、下位机之间数据交换的次数及数据量有利于减少下位控制器中断机器人的运动控制转入通讯协议处理的几率,可以提高运动控制的质量。所以PBJ-1的通讯部分固件程序设计没有采用传统的定时向下位机传送输入设备的状态这种高通讯负担的方法,而是基于消息驱动的思想。通讯任务依靠输入设备检测任务执行的结果来决定是否激活、进入消息队列以实现控制器之间的通讯。这样只有当操作者实际改变了输入设备的状态,上位机才向下位机发送相应的信息。利用消息驱动思想来开发通讯程序十分方便、可靠,并且大大减少了通讯线路的负担。为了保证数据传输的高可靠性,每次数据交换都先经过握手以确保无误。下位机嵌入式控制器固件结构如图6所示。 图5 上位机嵌入式控制系统固件结构 图6 下位机嵌入式控制系统固件结构 由于有些任务不需要一直执行,例如机器人需要响应上位机的指令完成继电器的切换等,也将利用os_wait函数处理,使它们平时不进入RUNNING任务队列中,减少资源浪费。在下位机串口中断中利用isr_send_signal向该任务发送信号激活该任务,使得该要求得到执行。具体调用方法如下: isr_send_signal(Task_ID); //从一个中断发送一个信号到Task_ID任务。 通过Windows消息驱动的思想和RTX51 Tiny实时操作系统的配合,合理分配了系统的资源。下位机控制器“集中精力” 完成机器人运动学解算及分解运动控制运算这些相当耗时的任务,实时控制机械臂运动。 在微控制器固件开发中嵌入操作系统还大大提高了系统的稳定性。即使某个外设或任务出现故障,与之无关的任务一般不会受到影响,不像传统的顺序循环机制的程序设计方法中如果某一环节出现问题会立刻造成整个系统的崩溃。 实际整个系统的上下位机微控制器都是仅仅利用运行于22.1184MHz频率下的AT89C55WD 就很好地达到了预期目标。该系统在随意频繁地分别开关上下位机电源、受到较强电磁干扰、大功率电机频繁启动、制动造成系统电源电压波动较大等苛刻的运行测试中均表现出了非常高的稳定性与数据传输准确性。整个系统在运行中即使出现了通讯失败(人为切断通讯线路或部分电源),当故障排除后,上、下位机可以迅速自动恢复正常的通讯状态没有出现误动作。 为新型排爆机器人PBJ-1先后开发了两套控制器固件程序,采用完全一样的硬件平台。一套是基于传统的顺序循环机制,开始效果不理想,后来借鉴消息驱动思想改进程序架构才满足了要求。开发过程中花费了不少时间来调试。另一套就是本文所述的基于RTX51 Tiny嵌入式实时操作系统开发的,实际运行效果相当好,但是花费的时间很少,而且很容易增加新的功能。 实践表明, 在系统复杂、对实时性和精度要求比较严格,并且需要并行处理的任务较多的运动控制系统中,使用RTX51Tiny是一个较好的解决办法。此外,使用RTX51Tiny实时操作系统,会加快嵌入式控制系统的开发速度,降低软件编写的复杂度,提高产品的开发效率。维护和功能扩展都非常方便。

    时间:2021-04-15 关键词: 嵌入式 控制系统 上位机 下位机 操作系统

  • 中兴智能手机操作系统MyOS 11正式发布:全新设计更年轻化

    中兴智能手机操作系统MyOS 11正式发布:全新设计更年轻化

    3月30日,中兴召开S30系列线上发布会暨新品成团之夜,全新智能手机操作系统MyOS 11也正式同步发布。据悉,中兴全新个性化定制系统MyOS 11将在S30系列产品首发搭载,并将在中兴手机其他机型陆续推送。 作为中兴前代智能手机操作系统MiFavorUI的继承和优化版本,全新推出的MyOS定位于独一无二的全新个性化系统,将通过更智能化、个性化的界面及功能设计,为用户带来倾心、贴心、安心的使用体验。 MiFavor诞生十周年,更个性化的MyOS正式接棒 中兴手机的定制系统MiFavorUI诞生于2011年,今年将正式迎来十周年。在过去十年中,MiFavorUI以轻快为核心,聚焦设计创新,深耕智能化理念,专注每一处细节,努力呈现给用户最好用最贴心的使用体验。在5G移动互联互通时代,面对新生主力的Z世代用户,中兴手机定制系统MyOS也迎来个性化定制升级。 首先是倾慕色彩、彰显个性的全新UI设计,让用户可根据个人喜好设置更加个性化的手机界面。中兴MyOS独有的情感色彩体系,让色彩与用户使用场景相结合,系统级别的全系色彩提升,从视觉和情感两方面,为用户带来光彩、年轻、个性的界面体验。同时,MyOS还带来了全新国风系列壁纸:“至扇至美”系列和“如约绽放”系列,前者汲取中国传统折扇设计,结合艺术的空间、构成手法,凝聚了国粹文化与现代艺术;后者形似绽开的花瓣、放飞的羽翼,充满力感、动感的视觉艺术表现力,时尚气息扑面而来。 此外,MyOS还提供了多样化的系统主题、可个性化定制的熄屏显示、6套13种动态熄屏,以及极具年轻、鲜活属性的联系人头像设置,用户可随心情自由选择,彰显自我表达的同时,也能体验到DIY专属于自己的手机界面时的别样乐趣。而在字体设计上,MyOS11也搭载了全新的中兴正圆系统字体,更加适合屏幕阅读的无衬线字体,细微之处见匠心。 全新MyOS突出智能化设计,玩转智能手机更便捷操作 除了为用户提供更加个性化的屏幕视觉定制,全新MyOS在功能设计上,也有着更智能化的迭代升级。独特的系统级别界面下沉,在任一列表界面,用户可通过直接下拉,将全屏内容下沉到单手触控的半屏位置,单手握持时全屏内容的操作也能更加灵活方便。 MyOS还搭载有智能化的灵犀小窗,将侧边栏和小窗结合在一起,任何场景下都可以通过侧边栏快捷触发应用小窗,在全屏时代让用户享受到“一心两用”的顺畅体验。 在手机桌面的视觉及功能设计上,也能体味到MyOS的年轻化、个性化属性。其中,可玩性极高的流光桌面,是MyOS带来的最大变化,用户可将应用以自己喜欢的方式,在桌面进行个性化排列组合,还可将通知作为独立组件在桌面呈现,并为它设置提醒项,美观又便捷。此外,还有流光屏、聚光应用集等,为用户提供智能小秘书、个性化智能桌面定制等贴心功能,只要有创意,你的手机就能独一无二、巧思无穷。 用户信息的更私密呈现,全新MyOS让手机智能且安心 在快速发展的信息时代,每个人都被个人信息泄露所困扰,一次应用授权、一次密码输入,都有可能让我们的个人隐私被他人窥见。对此,全新MyOS也更加重视用户安全、隐私方面的保护,打造全方位的安全、隐私保护系统,为用户提供了更安心的解决方案。 MyOS专门针对第三方应用的授权环节,提供了一次性授权、空权限授权、集中授权三种灵活的选择,用户可根据自身需要,选择是否对应用开放权限、何时开放权限,以及开放何种权限,并对每个危险权限设置单独许可控制,提供第三方应用的更安全管控。此外,MyOS还提供有安全键盘、剪切板权限管控,让用户切实地把个人信息完全掌握在自己手中,在畅享智能手机的方便、快捷时,也能多一份安心。 十年前,中兴手机将操作系统命名为MiFavorUI,本意是My favorite UI,我最喜欢的UI。十年后,中兴手机以个性无限为主题进行了大胆探索,将无拘无束的创造灵感融入设计中,带来了独一无二的全新个性化系统:MyOS。从MiFavor到MyOS,改变的不只是名字,更是中兴手机定制系统向更智能化、年轻化、个性化的华丽转变,努力生长,如约绽放。

    时间:2021-03-31 关键词: 中兴通讯 智能手机 操作系统

  • RTOS操作系统中HOOK函数的用途

    作者 | strongerHuang 微信公众号 | 嵌入式专栏 在很多操作系统中,都存在这样一类API(函数接口):HOOK函数,也叫钩子函数。 比如:Windows桌面系统、µC/OS、 FreeRTOS等RTOS中,都可以看见HOOK函数的存在。 下面结合µC/OS来讲讲什么是HOOK函数,它的用途是什么。 嵌入式专栏 1 什么是HOOK函数? HOOK函数,也叫钩子函数,是一种会被操作系统内部的回调的函数。 如果使能了HOOK,操作系统就会在特定的事件到来之际,调用对应Hook函数(回调函数,也是你写的hook应用程序)。 比如:在RTOS中删除了一个Task,就会调用对应的App_TaskIdleHook函数。(这个“App_TaskIdleHook”是需要你自己写的函数) 网上搜索大多已windows为例,描述钩子函数的作用、例子,比如百度百科: 钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。 为什么叫“钩子”? 网上有很多说法,比如:被操作系统“钩”住了。感兴趣的读者可以上网了解。 嵌入式专栏 2 HOOK函数的用途和用法 我们熟悉的µC/OS、 FreeRTOS等RTOS实时操作系统中都有Hook函数,在config配置文件中使能对应的开关即可使用。 下面结合µC/OS来讲讲HOOK函数的用途和用法: 1.配置HOOK 在很多RTOS中都有一个(或多个)配置文件,来配置(裁剪)系统。 比如在µC/OS中,就有os_cfg.h系统配置文件。其实就是一些使能开关,需要的功能开启,不需要的关系,以达到裁剪系统的作用。 /* ---------------------- MISCELLANEOUS ----------------------- */#define OS_APP_HOOKS_EN 1 /* Application-defined hooks are called from the uC/OS-II hooks */#define OS_ARG_CHK_EN 0 /* Enable (1) or Disable (0) argument checking */#define OS_CPU_HOOKS_EN 1 /* uC/OS-II hooks are found in the processor port files */ #define OS_DEBUG_EN 1 /* Enable(1) debug variables */ 同样,HOOK函数也是通过cfg配置文件进行使能,比如: #define OS_APP_HOOKS_EN 1#define OS_CPU_HOOKS_EN 1 0:关闭; 1:开启; 同理,在FreeRTOS中一样也有类似配置: 我们开启需要使用HOOK即可。 2.使用TaskIdleHook TaskIdleHook,即任务空闲钩子函数,在任务空闲的时候,会调用该钩子函数。 这个钩子函数,在很多操作系统中都有,在任务空闲(其他所有任务都挂起)的时候,会调用该Hook函数。 比如:我们所说的CPU利用率,就是在空闲任务中进行统计的,拿µC/OS来说: void OS_TaskIdle (void *p_arg){#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr = 0u;#endif p_arg = p_arg; /* Prevent compiler warning for not using 'p_arg' */ for (;;) { OS_ENTER_CRITICAL(); OSIdleCtr++; OS_EXIT_CRITICAL(); OSTaskIdleHook(); /* Call user definable HOOK */ }} 系统空闲钩子函数OSTaskIdleHook: #if OS_CPU_HOOKS_EN > 0uvoid OSTaskIdleHook (void){#if OS_APP_HOOKS_EN > 0u App_TaskIdleHook();#endif}#endif 应用空闲钩子函数App_TaskIdleHook: 如果使能了怎会执行该函数,需要我们自己实现,比如:空闲统计数值超过50次,我们打印一段信息: void App_TaskIdleHook (void){ UserIdleCtr++; //¿ÕÏмÆÊý if(50 < UserIdleCtr) { UserIdleCtr = 0; printf("SYS_IDLE"); }} 看到这里,大家明白了HOOK函数原来了吗?从系统内部一步一步分析,其实很简单。 因为操作系统大多数时候都处于空闲状态,IDLE空闲函数会比较频繁执行,可能很多人怎么理解。 HOOK函数就上面说的,会在特定的事件到来之际,被回调执行,IDLE空闲任务比较频繁,像 删除Task任务 这种事件就很少,该类HOOK 函数就很少产生。 好了,大家明白了吗? 若不明白,欢迎大家留言! 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-03-25 关键词: RTOS HOOK 操作系统

  • 中兴新支点嵌入式操作系统出货2亿套

    在OS系统领域,国产厂商终于有所突破——中兴高管吕钱浩表示中兴新支点嵌入式操作系统出货量已经超过两亿套。 据他所说,新支点嵌入式操作系统出货量每年的发货量在两千万套左右,目前已经在350公里时速的复兴号高铁上规模商用了。 据介绍,新支点是一款多场景、分布式、多协同、高效能、高可靠的嵌入式操作系统,符合欧标CGL5.0标准认证、荣获中国工业大奖、申请国内外上百项发明专利。 中兴表示,其支持嵌入式底层虚拟化、支持容器技术。提供高实时性、高稳定性、高安全性、高易用等特性,支持多核、多架构、多驱动。提供高度定制的技术服务,包括系统性能优化,驱动定制开发,驱动调优等。 目前广泛应用于通信行业、智能电力行业、智能汽车电子行业、高速轨道交通行业等。 官网信息显示,中兴的新支点系统是由广东中兴新支点技术有限公司开发的,该公司成立于2004年,是中兴通讯的全资子公司,是广东省Linux公共服务技术支持中心的运营实体,是一家专注于操作系统为基础的基础软件研发及CPI宽带物联网解决方案提供的专业技术型公司。

    时间:2021-03-22 关键词: 中兴通讯 嵌入式 操作系统

  • 硬核操作系统讲解

    1 冯诺伊曼体系 1.1 冯诺伊曼体系简介 现代计算机之父冯诺伊曼最先提出程序存储的思想,并成功将其运用在计算机的设计之中,该思想约定了用二进制进行计算和存储,还定义计算机基本结构为 5 个部分,分别是中央处理器(CPU)、内存、输入设备、输出设备、总线。 存储器:代码跟数据在RAM跟ROM中是线性存储, 数据存储的单位是一个二进制位。最小的存储单位是字节。 总线:总线是用于 CPU 和内存以及其他设备之间的通信,总线主要有三种: 地址总线:用于指定 CPU 将要操作的内存地址。 数据总线:用于读写内存的数据。 控制总线:用于发送和接收信号,比如中断、设备复位等信号,CPU 收到信号后响应,这时也需要控制总线。 输入/输出设备:输入设备向计算机输入数据,计算机经过计算后,把数据输出给输出设备。比如键盘按键时需要和 CPU 进行交互,这时就需要用到控制总线。 CPU:中央处理器,类比人脑,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU用寄存器存储计算时所需数据,寄存器一般有三种: 通用寄存器:用来存放需要进行运算的数据,比如需进行加法运算的两个数据。 程序计数器:用来存储 CPU 要执行下一条指令所在的内存地址。 指令寄存器:用来存放程序计数器指向的指令本身。 在冯诺伊曼体系下电脑指令执行的过程: CPU读取程序计数器获得指令内存地址,CPU控制单元操作地址总线从内存地址拿到数据,数据通过数据总线到达CPU被存入指令寄存器。 CPU分析指令寄存器中的指令,如果是计算类型的指令交给逻辑运算单元,如果是存储类型的指令交给控制单元执行。 CPU 执行完指令后程序计数器的值通过自增指向下个指令,比如32位CPU会自增4。 自增后开始顺序执行下一条指令,不断循环执行直到程序结束。 CPU位宽:32位CPU一次可操作计算4个字节,64位CPU一次可操作计算8个字节,这个是硬件级别的。平常我们说的32位或64位操作系统指的是软件级别的,指的是程序中指令多少位。 线路位宽:CPU操作指令数据通过高低电压变化进行数据传输,传输时候可以串行传输,也可以并行传输,多少个并行等于多少个位宽。 1.2 CPU 简介 Central Processing Unit 中央处理器,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。 CPU CPU核心:一般一个CPU会有多个CPU核心,平常说的多核是指在一枚处理器中集成两个或多个完整的计算引擎。核跟CPU的关系是:核属于CPU的一部分。 寄存器:最靠近CPU对存储单元,32位CPU寄存器可存储4字节,64位寄存器可存储8字节。寄存器访问速度一般是半个CPU时钟周期,属于纳秒级别, L1缓存:每个CPU核心都有,用来缓存数据跟指令,访问空间大小一般在32~256KB,访问速度一般是2~4个CPU时钟周期。 int socket(int domain, int type, int protocal) 上面是socket编程的核心函数,可以指定IPV4或IPV6类型,TCP或UDP类型。比如TCP协议通信的 socket 编程模型如下: Socket编程 服务端和客户端初始化socket,得到文件描述符。 服务端调用bind,将绑定在 IP 地址和端口。 服务端调用listen,进行监听。 服务端调用accept,等待客户端连接。 客户端调用connect,向服务器端的地址和端口发起连接请求。 服务端accept返回用于传输的socket的文件描述符。 客户端调用write写入数据,服务端调用read读取数据。 客户端断开连接时,会调用close,那么服务端read读取数据的时候,就会读取到了EOF,待处理完数据后,服务端调用 close,表示连接关闭。 服务端调用accept时,连接成功会返回一个已完成连接的socket,后续用来传输数据。服务端有俩socket,一个叫作监听socket,一个叫作已完成连接socket。 成功连接建立之后双方开始通过 read 和 write 函数来读写数据。 UDP传输 UDP比较简单,属于类似广播性质的传输,不需要维护连接。但也需要 bind,每次通信时调用 sendto 和 recvfrom 都要传入目标主机的 IP 地址和端口。 3.7 多线程编程 既然多进程开销过大,那平常我们经常使用到的就是多线程编程了。期间可能涉及到内存模型、JMM、Volatile、临界区等等。这些在Java并发编程专栏有讲。 4 文件管理 4.1 VFS 虚拟文件系统 文件系统在操作系统中主要负责将文件数据信息存储到磁盘中,起到持久化文件的作用。文件系统的基本组成单元就是文件,文件组成方式不同就会形成不同的文件系统。 文件系统有很多种而不同的文件系统应用到操作系统后需要提供统一的对外接口,此时用到了一个设计理念没有什么是加一层解决不了的,在用户层跟不同的文件系统之间加入一个虚拟文件系统层Virtual File System。 虚拟文件系统层定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解 VFS 提供的统一接口即可。 虚拟文件系统 日常的文件系统一般有如下三种: 磁盘文件系统:就是我们常见的EXT 2/3/4系列。 内存文件系统:数据没存储到磁盘,占用内存数据,比如/sys、/proc。进程中的一些数据映射到/proc中了。 网络文件系统:常见的网盘挂载NFS等,通过访问其他主机数据实现。 4.2 文件组成 以Linux系统为例,在Linux系统中一切皆文件,Linux文件系统会为每个文件分配索引节点 inode跟目录项directory entry来记录文件内容跟目录层次结构。 4.2.1 inode 要理解inode要从文件储存说起。文件存储在硬盘上,硬盘的最小存储单位叫做扇区。每个扇区储存512字节。操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,一般一次性连续读取8个扇区(4KB)来当做一块,这种由多个扇区组成的块,是文件存取的最小单位。 文件数据都储存在块中,我们还必须找到一个地方储存文件的元信息,比如inode编号、文件大小、创建时间、修改时间、磁盘位置、访问权限等。几乎除了文件名以为的所有文件元数据信息都存储在一个叫叫索引节点inode的地方。可通过stat 文件名查看 inode 信息 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件,用户可通过ls -i查看每个文件对应编号。对于系统来说文件名只是inode号码便于识别的别称或者绰号。特殊名字的文件不好删除时可以尝试用inode号删除,移动跟重命名不会导致文件inode变化,当用户尝试根据文件名打开文件时,实际上系统内部将这个过程分成三步: 系统找到这个文件名对应的inode号码。 通过inode号码,获取inode信息,进行权限验证等操作。 根据inode信息,找到文件数据所在的block,读出数据。 需注意 inode也会消耗硬盘空间,硬盘格式化后会被分成超级块、索引节点区和数据块区三个区域: 超级块区:用来存储文件系统的详细信息,比如块大小,块个数等信息。一般文件系统挂载后就会将数据信息同步到内存。 索引节点区:用来存储索引节点 inode  table。每个inode一般为128字节或256字节,一般每1KB或2KB数据就需设置一个inode。一般为了加速查询会把索引数据缓存到内存。 数据块区:真正存储磁盘数据的地方。 buf = mmap(file, len); write(sockfd, buf, len); 5.2.4.3 sendfile Linux 内核版本 2.1版本提供了函数 sendfile()。

    时间:2021-03-17 关键词: 计算机 冯诺伊曼体系 操作系统

  • 突发!这个操作系统竟比macOS还火

    Chrome OS 市场份额首次超过 Mac 升至第二。 市场分析公司 IDC 提供的数据显示,Chromebook 在 2020 年的市场份额获得大幅增长,首次突破 10%,超过了苹果的 Mac,它所搭载的 Chrome OS 也顺势成为第二大流行的操作系统,仅次于 Windows。 ▲Chrome OS 年度市场份额首次超越 MacOS 距离谷歌发布并商业化运作 Chrome OS 已经超过十年,与如今的 Windows 10、Mac OS 以及各种 Linux 的发行版相比,Chrome OS 的知名度依然十分有限,尤其是在国内。由于众所周知的原因,Chrome OS 引以为傲的“谷歌全家桶”在国内无法使用,以致于市场上鲜有 Chrome OS 设备的身影。 商业化的 Chrome OS 与谷歌浏览器 Chrome 一脉相承,延续了 Chrome 的一些优良特性。在推出的早期,谷歌曾将 Chrome OS 描述为: 这个理念现在来看依然相当惊艳。Ubuntu 创始人 Mark Shuttleworth 曾称赞 Chrome OS 将 Web 扩展到桌面领域非常有前瞻性,这是此前从未有过的产品。这款被设计成为最快和最轻量的操作系统,只需几秒钟的时间便可启动 PC 并接入互联网,能使用上万个基于 Web 的谷歌应用程序,同时对机器硬件的要求极低。轻便、快捷、省电、低成本,对轻办公人群来说几乎没有缺点。 然而,无论是 Chrome OS 还是 Firefox OS,在当时都没有取得预想中的成功。 在以性能取胜的 Windows 系列与 Mac OS 的双重夹击下,Chrome OS 似乎并没有掀起任何波澜,仅仅依靠对性能要求不高的教育市场勉强存续,市场份额长年不超过 1%;Firefox OS 则是在 Android 和 iOS 称霸的移动端市场中日渐式微,并最终于 2016 年停止维护。 意识到了“All in Web”的操作系统以现有的技术仍很难建成理想的生态,Chrome OS 的推广策略开始改变,不再宣传其“整个操作系统只有一个 Chrome 浏览器”。 Chrome OS 的转型为其在低成本 PC 市场站稳了脚跟,市场占有率也逐年攀升。有网友说,当初谷歌推出 Chrome OS 就像微软推出 Windows Phone ,二者都想要在自己不擅长的领域分一杯羹。如今后者几乎已经绝迹,而 Chrome OS 仍在持续更新,依靠教育市场的营收蓬勃发展。 那一年,微信正式推出了小程序功能。这种下拉即用、无需等待下载的应用模式让人眼前一亮,很快在国内市场引起了剧烈反响。相比之下,传统 APP 繁琐、笨重的缺点被无限放大。此后,各大平台的小程序如雨后春笋般陆续涌现。轻量、快捷的用户体验成为了软件开发市场的潮流。 开源办公套件项目 LibreOffice 官方团队成员、文档基金会董事会成员 Thorsten Behrens 表示,“所有渲染,与文档的所有交互,所有编辑”都在云服务器上进行,“这就是行业的发展方向”。据悉,LibreOffice 团队一直在努力开发一个基于浏览器的 WebAssembly 端口,计划于 2021 年夏季之前开放相关示例。 面对这种趋势,业内的其他人也开始有所动作。 去年,Ubuntu 社区开发人员 Rudra Saraswat 宣布计划创建一个基于 Firefox 浏览器的类 Chrome OS 操作系统,名为 Ubuntu Web Remix。目前该系统的首个稳定版 20.04.1 已正式发布,Rudra Saraswat 称 Ubuntu Web Remix 是谷歌 Chrome OS/Chromium OS 的一个注重隐私的开源替代品,采用 Firefox 代替谷歌 Chrome/Chromium。 其中一个就是不可避免的安全问题。云存档的安全问题一直以来都受到关注,当所有的数据存储在云端,用户的隐私是否能得到妥善的保障?去年闹得沸沸扬扬的 ZOOM 用户会议数据泄露事件就是一个反例,当然还有更早之前的苹果 iCloud 用户隐私泄露事件。 ▲谷歌推出的云游戏平台 Stadia (图片来源网络) 但 Chrome OS 市场份额连年增长也是一个不争的事实,这很大程度上说明了目前的 Chrome OS 已经能够满足人们日常基本的轻办公需求,并且有越来越多的人青睐这种便捷的用户体验。 待将来的网络技术能够支撑人们流畅地使用更多更复杂的应用时,“All in Web”的云操作系统们或将迎来真正的黄金时代。 感谢 Fyde OS @guxiaoxian 对本文提供的专业支持。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-03-15 关键词: macOS Chrome 操作系统

  • 你怎样选择开源免费RTOS?

    RTOS(实时操作系统)是嵌入式的必修课之一,随着国产化的发展,免费的RTOS发展越来越快,嵌入式工程师可选择的面也越来越宽。 资深21ic网友从头到脚表示,现在RTOS真的非常多,有开源的、有封闭的、有免费的、有收费的,如此繁杂的市场之下,他发表了自己如何选择免费RTOS的看法: 1、选择RTOS,应遵循够用为王,不要贪图功能强大。 功能强大的RTOS,占用资源也必然多,也更复杂。简洁的东西,出问题的概率自然会低点。 2、不要太看重人气。 人气是可以炒作的,有些低调的RTOS,开发团队往往也低调,代码质量可能会更高,更可靠更稳定。 3、看历史,开源项目最大的问题,就是难于坚持下去。 选择一个RTOS,如果没有开发团队持续维护的话,简直是个噩耗。一般来说,能坚持10年的项目,就有理由相信他能坚持20、30年。而且,OS需要持续迭代改进,没时间作为沉淀,也不太靠谱。 4、看开发团队构成。 如果没有一个实力强大的公司主持,太依赖社会开源爱好者的话,特别是在中国,这个项目一般不太靠谱。要知道,国外的著名开源项目,背后都站着至少一个靠谱的公司的。建议多看看作者发表的文章,其观念往往会渗透到RTOS的方方面面。 5、不要被十分钟hello world迷惑。 上手快虽然好,但好东西上手不一定快,例如rtems、VxWorks,上手都不快。也不要为官方花哨的demo迷惑,这些demo说明不了什么,说句不客气的,汇编我也能做出这些demo来。 6、那不看helloworld,看什么呢? rtos是个开发平台,花点时间上手不会损失什么,对于一个项目的开发周期来说,花几天时间,深入了解其特性,实在太有必要了。好的RTOS,会随着项目深入,越发左右逢源,随心所欲;欠妥的RTOS,却会越发左支右绌。 7、优先选择系统原生功能。 例如网络协议栈,A系统有原生协议栈,B系统则是集成开源协议栈,则原生的肯定大大加分。任何开源软件,移植时,或多或少会有些水土不服的现象,深入使用时,往往会致命。 之前,21ic家也曾为大家盘点过主流的RTOS,开源的RTOS主要包括RT-Thread、Huawei LiteOS、AliOS Things、TencentOS-tiny、FreeRTOS、Arm Mbed OS、MS-RTOS、Zephyr、Contiki-NG、NuttX、RIOT、Apache Mynewt、Drone、eCos、F9 Microkernel、Tock、Mark3、Atomthreads、Trampoline等。 (不完整之处可在评论区内补充) 据调查,目前开源操作系统的使用效率为42%,商业操作系统使用率为24%,比例持续下降之中。 而调查显示,35%的在选择操作系统时看重完整的代码支持,31%的选择更好的技术支持,29%的选择软件、系统、工具支持最好的,29%倾向选择免费的,26%倾向选择即时性强的,26%倾向选择可供用户自由更改的,24%倾向选择开源的。 那么,在免费开源爆炸的时代之下,你如何选择一款RTOS?

    时间:2021-03-11 关键词: 嵌入式 RTOS 操作系统

  • 沉寂多年的十大物联网操作系统之一Fuchsia频曝新消息

    本文来源:物联传媒 本文作者:市大妈 近日,Chrome OS欢迎页面似乎隐含了谷歌将要取代 Android 移动操作系统的 Fuchsia 项目的一些新线索。在Chrome Unboxed 的新爆料,也嗅探到了谷歌有意在多种类型的设备上运行同一操作系统的期望。 Chrome OS开箱即用体验(OOBE)初始设置页面中全新的欢迎页面: 首行文字已从“欢迎使用 Chromebook”改成了“欢迎使用 Chrome 设备”; 宣传口号也悄然换成了:Fast. Secure. Effortless.; 配图中的三个人,似乎只有其中一位在使用 Chrome OS 笔记本电脑,而另两位都在使用手持式便携设备。 关于Fuchsia,在沉寂了四年之后浮出水面,近期可为消息不断: 就在前不久,作为垄断手机操作系统的谷歌公司在开源博客对外公开,Fuchsia是建立通用开放源代码操作系统的长期项目,并承认公司近年来一直致力于Fuchsia的研发,同时宣布向外部开发者开放全新操作系统Fuchsia,并扩大Fuchsia的开源模式,并向团队外部寻求更多开发者。从谷歌公布的Fuchsia源码信息看,这款全新的系统支持跨平台运行,完全是针对未来的物联网时代打造,比如在智能手机、汽车、智能家居、智能出行、智慧城市等领域。 随后,针对 Fuchsia OS 的最新建议,表明这款“非 Linux”操作系统仍考虑如何在上层运行“未经特殊修改”的 Android / Linux 应用程序,并称已经找到了在 Fuchsia 上运行 Android / Android 应用的新方法。 谷歌“三儿子”现世的这几年里…… 早在2016年8月,外媒就曝光了谷歌这个叫Fuchsia的“神秘项目”,这是Google继Android和Chrome OS之后的第三个系统,被戏称为是谷歌的“三儿子”。只不过,当时该项目只是被悄悄的托管在GitHub上。很长一段时间,谷歌对Fuchsia的公开谈论非常少,只在背地里持续不断的做版本、代码的更新。 2017年,谷歌的GitHub存储库进行了一项更新,该更新显示谷歌公司使用了Swift 语言,也就是说谷歌为Fuchsia拓展了对Swift语言提供初始支持的功能。目前可支持的语言包括了C++/C++、Dart、Go、Rust和Python,此外还有一种名为FIDL的接口定义语言。 2018年初,谷歌允许开发者以Google Pixelbook为目标设备,下载Fuchsia OS进行开发与测试。 2018年12月,Fuchsia1.0正式发布。 2019年5月,谷歌开发者大会上,谷歌Android和Chrome掌门人希罗史·洛克海默透露,Fuchsia OS将仍然会是一个开源的系统,但是将会是一个全平台的操作系统。 2019年6月,谷歌上线了开发者网站 Fuchsia.dev ,该网站采用了全新的外观设计,并提供了大量Fuchsia官方文档。 而今,Fuchsia时不时就有新消息传出,或许谷歌已经做好了准备,预计接下来Fuchsia也将会越来越多地被提及。 谷歌的物联网版图:从操作系统到通讯协议全面布局 2011年,谷歌首次提出了Android@Home智能家居计划。通过 Android@Home,用户在一部安卓手机或平板上就能控制家中的电灯、空调、音响播放器等一系列的智能家居产品。 一年之后,谷歌又基于Android@Home发布了一款名为Nexus Q的球状流媒体播放器,该产品被外界视为谷歌凭借Android@Home进入智能家居的标杆。但不幸的是因为高昂的定价和只能支持谷歌的内置服务,Nexus Q并没有受到消费者的欢迎,在2013年年初就匆匆下架。至此,谷歌以自身产品进军智能家居的努力宣告失败,而在随后接近一年的时间中,Android@Home也逐渐淡出了人们的视野。 作为一家主打软件产品的公司,谷歌在打造物联网软件平台的努力自然不会随着Android@Home的失败而消失。 2014年,谷歌公布The Physical Web项目源码,希望通过统一资源定位符(URL)的方式建立起一套智能硬件之间的互联互通标准。 过了一年,谷歌针对物联网应用正式发布了名为Brillo的物联网RTOS实时操作系统,和基于json的物联网通讯语言Weave。前者是一个极简化的Android操作系统,拿掉了所有复杂的上层界面,只留下操作系统底层的核心,使得Brillo可以被方便地嵌入门铃、监控摄像头、烤箱等各种型号的智能硬件之中。而后者是智能硬件通信语言,谷歌意在创建智能硬件间通用的通信、指令收发方案,让智能设备之间通过Weave实现自主化的互动和沟通。 随后谷歌又在7月份发布了一款开源的低功耗蓝牙通信平台Eddystone,目的是为了抗衡苹果的iBeacon,在物联网近场通讯技术上保留自己的话语权。 而2016年之后对于Fuchsia投入,使得Fuchsia不仅可以继承Google原有的生态,同时基于自身架构,还能快速布局未来各类物联网市场,实现全面而快速布局。 至此,更进一步地表明了,谷歌在物联网软件方面形成了从操作系统到通讯协议的全面布局。 Fuchsia与鸿蒙系统之争 得操作系统者得天下,这句话无论在PC行业还是手机行业,都是公认的定律。我们有理由相信,在浪潮奔涌的物联网时代,这句话仍然成立,操作系统仍然作为物联网应用的“大脑”发挥了不可或缺的作用。 对于物联网发展而言,“碎片化”是主要的问题,其中芯片、传感器、通信协议、应用场景千差万别,技术方案不统一、体系结构不一致,一定程度上阻碍了物联网的发展,也限制了互联互通的范围。然而,各种操作系统可以支持不同的硬件、通信标准、应用场景。开源的系统有利于打破技术障碍和壁垒,提高互操作性和可移植性,减小开发成本,同时也适合开源社区的开发人员参与进来。 操作系统是物联网中一个十分关键的环节,而开源更加助推了物联网的开放和发展。目前,开源操作系统在物联网中的应用已经十分广泛,以后也必将在物联网中扮演越来越重要的角色。在一众开源物联网操作系统中,华为的鸿蒙一直被视为是Fuchsia最有力的竞争对手。 对于鸿蒙,很多人更为熟悉。随着华为被美国制裁,华为在2019年8月份正式推出鸿蒙系统,华为也很明确地表示,鸿蒙是针对物联网产业所推出的操作系统。在华为的布局中,特别是其“1+8+N”的物联网战略中,鸿蒙已经成为其中最为核心的布局。 根据当下双方透露的资料来看,两者针对的目标都是网络技术升级后的5G市场,旨在实现万物万联,为物联网提供核心软支撑。因此,在主要技术特点上,两者可以说是没有什么区别,都采取的是微内核以及分布式技术。此外,两者还有一个共性,即都是开源操作系。所以从这两点来看的话,两者互为竞争对手也就不足为奇了。 但是鸿蒙与Fuchsia OS相比,其起步更早。早在2012年的时候,华为海思就正式启动了鸿蒙项目,并且截止目前为止,已经经过了几次升级改善。而Fuchsia OS作为谷歌仓促迎战的选择,其项目启动时间也相对较晚,2016年才正式被谷歌立项而投入研究。而且在当时谷歌有着安卓系统撑着,没有多大的危机意识,其进度也可想而知。所以就目前来看的话,鸿蒙系统俨然更加完善。 不过,关于Fuchsia与鸿蒙谁能在未来物联网战争中取得胜利的争论,虽然现阶段无法给出结论,但两者之间的市场竞争是必然的,也会是很精彩的。 参考资料: 谷歌物联网布局从软件到硬件做了些什么?雷锋网 「鸿蒙OS」与「Fuchsia」,谁才是物联网操作系统的未来?OFweek ~END~ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-03-02 关键词: 物联网 Fuchsia 操作系统

  • 余承东官宣!鸿蒙系统正式登陆奔驰S级

    近日,华为消费者业务 CEO 余承东官宣了一条好消息,那就是华为鸿蒙 OS 系统生态 HMS For Car 即将登入梅赛德斯奔驰 S 级豪华轿车。 众所周知,因为芯片的原因,手机业务受阻之后,华为现在正式进军汽车行业了。 不过华为不造整车,只聚焦 ICT 技术,帮助车企造好车。而从华为公布的产品和业务来看,就是除了不造整车、不造轮胎之外,其他的智能化的设备,基本上都有涉及到。 比如自动驾驶方案、激光雷达、座舱 SoC、鸿蒙车载系统、七合一电驱系统、充电模组等等,包含有 30 多个智能化部件,3 大操作系统…… 20 日,关于华为的车载系统方面,传出了好消息,那就是百万级的奔驰轿车,也就是奔驰的 S 级轿车,正式接入了华为的 HMS for Car 服务。 按照余承东的说法,全新的梅赛德斯奔驰 S 级轿车的车友们能体验 HMS for Car 快应用服务了。 可以理解为在奔驰 S 级轿车上可以使用鸿蒙系统服务,也就是华为手机可以和车机系统互动,同时奔驰车机系统可能与 HMS 其他硬件产品进行互动。 通过 HMS for Car 服务,车友们可以在 S 级轿车的中控大屏上使用多款第三方 App,无需安装,即可在车载中控屏上运行,即点即用。 大家在驾驶休息之余可以享受到读新闻、听故事、看视频、玩游戏等多种车内休闲娱乐功能。 HMS for Car 服务是华为打造的智慧车载云服务解决方案,由 HMS Apps for Car 和 HMS Core for Car 两部分组成,也是华为车载系统中非常重要的一部分,目标在于让汽车从交通工具向智能终端进化具有交互和服务的能力。 HMS for Car 作为智慧车载云服务解决方案,基于华为终端云服务和丰富的应用生态,将持续为大家提供高品质的出行生活! 奔驰汽车是高端品牌的象征,而 S 级更是奔驰品牌中最顶级的轿车型号,能够让 S 级轿车使用华为的 HMS for Car 的服务,说明华为已经得到了顶级汽车厂商的认可,这对于华为而言也是意义重大。 有网友表示:华为鸿蒙真的牛逼,奔驰 S 级也支持华为 HiCar 了,应该是目前鸿蒙支持的最贵的一款设备了,接下来搞上飞机吧!又多了一个买奔驰 S 级的理由了! 还有网友说:华为 HMS For Car 和奔驰合作了!余总这动作确实挺大,不过希望余总能催催比亚迪,汉等这么久也不推送支持 HiCar,害! 不过近日就有网友爆料比亚迪汽车鸿蒙应用开发工程师的招聘: 在有了 S 级轿车的使用后,我们可以预见未来使用华为 HMS for Car 服务的汽车会越来越多,毕竟奔驰这样的顶级品牌,S 级这样的顶级轿车都认可了,其它品牌自然也就没有理由拒绝了,你觉得呢? 很有趣的一点是,前几天传出小米可能要造车,现在华为官宣与奔驰合作。两种思路开始产生了差别:一个是自己造车,一个是与车厂合作,你们会支持谁呢? END 来源:鸿蒙技术社区 版权归原作者所有,如有侵权,请联系删除。 ▍ 推荐阅读 缺芯少货、华为跌落……2021年智能手机市场或将迎来大变化! 突发!中芯国际被移除美国金融市场 中国构建全球首个星地量子通信网! 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-02-24 关键词: 华为 奔驰 鸿蒙 操作系统

  • 新应用 新交互 软通动力助鸿蒙打造AIoT新生态

    新应用 新交互 软通动力助鸿蒙打造AIoT新生态

    近日,软通动力鸿蒙生态研发团队在智能终端新交互体验、智能设备应用场景、操作系统第三方组件的研究和开发方面,有了突破性的进展。 软通动力鸿蒙生态研发团队,由多名具有20多年开发经验的高级专家带队,上百名擅长C/C++、JAVA、安卓、UX等各类研发工程师共同组成,并设置了项目管理、架构设计、技术创新及质量管理等专项小组确保从鸿蒙生态和技术发展共同发力。 传统的操作系统在设计之初仅考虑手机、平板等有限的使用场景,但随着人们对智能化体验的要求不断提升,新的交互式操作和设备不断涌现,现有传统交互系统难以满足用户要求。软通动力鸿蒙生态研发团队基于HarmonyOS架构,深入分析用户交互式使用场景,在保证现有功能平滑迁移的基础上,着重在新交互、新服务方面进行创新,并已实现代码跨平台(HarmonyOS、Linux、Windows)的新交互,在用户体验和效率提升上有明显改善。同时,团队在IoT产品的研发能力,能满足快速承接HarmonyOS扩展功能端到端的交付。 目前,软通动力鸿蒙生态研发团队基于HarmonyOS的统一驱动开发框架和驱动开发技术,分布式总线、分布式数据技术以及上层Hap的开发技术已形成专题课程。通过在“智能小车”等创新项目的应用,积极探索智能化设备新服务、新应用场景,打造基于AIoT的极致服务,为用户带来方便快捷的场景体验。 为更好地促进HarmonyOS生态的发展,软通动力鸿蒙生态研发团队积极探索第三方组件领域,紧跟华为步伐,深入研究第三方组件应用场景。目前,团队已完成数十个重量级第三方组件的开发移植工作,且已开源。团队发布的第三方组件主要归类为:自定义组件、音视频播放、数据库访问、网络通讯以及常用的开发框架等。为广大开发爱好者快速融入鸿蒙生态,贡献了软通动力的技术力量。软通动力鸿蒙生态研发团队在开发过程中不断完善对鸿蒙SDK的支撑和适配能力,同时注重技术经验分享,共输出了数十篇第三方组件开发指导文档,以及近百条SDK切换指导手册。在51CTO、华为开发者联盟等技术论坛中对所有开发者免费开放,打造了软通动力在HarmonyOS的技术影响力,彰显了软通动力在鸿蒙领域拥抱开源、携手共建、共创未来的开放心态。 未来,软通动力将持续在HarmonyOS领域不断学习和探索,打造万物互联的多场景服务和体验 ,坚持开源开放,为数字经济时代带来新思想、新方案和新生活。

    时间:2021-02-23 关键词: 华为 鸿蒙 软通动力 AIoT 操作系统

  • 超长干货教你:轻松搞定Unix/Linux环境使用

    1 Unix/Linux操作系统介绍 1.1 操作系统的作用 1.1.1 操作系统的目标 方便:使计算机系统易于使用 有效:以更有效的方式使用计算机系统资源 扩展:方便用户有效开发、测试和引进新功能 1.1.2 操作系统的地位 操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。 1.2 Unix/Linux操作系统介绍 1.2.1 Unix家族 1965:贝尔实验室(Bell Labs)加入一项由通用电气和麻省理工学院合作的计划,该计划要建立一套多使用者、多任务、多层次的MULTICS操作系统。后来因为项目太为复杂失败。 1969:其主要开发者Thompson(后被称为UNIX之父)和Ritchie领导一组开发者,开发了一个新的多任务操作系统—UNICS,后来被改名为Unix,最初的Unix是用B语言和汇编语言混合编写而成。 1971:两人在贝尔实验室共同发明了C语言,并于1973用C语言重写了Unix。 1974:UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。 1980:有两个最主要的Unix的版本线,一个是Berkeley的BSD UNIX,另一个是AT&T的Unix,两者的竞争最终引发了Unix的战争,最终导致Unix出现各种各样的变种。 1982:AT&T基于版本7开发了UNIX System Ⅲ的第一个商业版本,并不再开源。 1992~2001:由于版权问题,AT&T公司与BSD开发组开始了一场将近10年的版权官司。UNIX由于其昂贵的费用,仅局限于大型机的应用;BSD因为版权问题,失去了宝贵的发展时期。 1.2.2 Linux家族 Minix(mini-UNIX)最初是由Andrew Tanenbaum教授,仿照4.3BSD的源代码,白手起家完成了12000行C语言的编写工作这个系统只是一个教学工具,没有什么实际应用价值。 1990年,Linus Torvalds决定编写一个自己的Minix内核,初名为Linus' Minix,意为Linus的Minix内核,后来改名为Linux,此内核于1991年正式发布,并逐渐引起人们的注意。 Linux操作系统的诞生、发展、和成长过程依赖于五个重要支柱:unix操作系统、minix操作系统、GNU计划、POSIX标准和互联网。 GNU计划:GNU是“GNU is Not Unix”的递归缩写,由Richard M.Stallman于1984年创办,旨在开发一个免费、类unix的操作系统-GNU系统及其开发工具;Emacs编辑系统、BASH shell程序、GCC、GDB等开发工具都是GNU组织的产品。 1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。 POSIX标准:POSIX标准定义了操作系统应该为应用程序提供的接口标准,POSIX标准用来统一Unix、Linux各分支编程接口,以提高其通用型和可移植性。 1.2.3 Linux的两类用户 1.2.4 Linux的远亲 1.2.5 Linux和Unix的联系 UNIX系统是工作站上最常用的操作系统,它是一个多用户、多任务的实时操作系统,允许多人同时访问计算机, 并同时运行多个任务。UNIX系统具有稳定、高效、安全、方便、功能强大等诸多优点,自20世纪70年代开始便运行在许多大型和小型计算机上。 UNIX虽然是一个安全、稳定且功能强大的操作系统,但它也一直是一种大型的而且对运行平台要求很高的操作系统,只能在工作站或小型机上才能发挥全部功能,并且价格昂贵,对普通用户来说是可望而不可及的,这为后来Linux的崛起提供了机会,Linux是一个类UNIX操作系统。 Linux是免费的、不受版权制约、与UNIX兼容的操作系统。 Linux在x86架构上实现了UNIX系统的全部特性,具有多用户多任务的能力,同时保持了高效性和稳定性,Linux具有如下的优秀的特点: 开放性; 完全免费; 多用户; 多任务; 良好的用户界面; 设备独立性; 提供了丰富的网络功能; 可靠的系统安全性; 良好的可移植性。 1.2.6 Linux内核及发行版介绍 「1) Linux内核版本」 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。 Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环: 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。 开发版:由于要试验各种解决方案,所以变化很快。 内核源码网址:http://www.kernel.org,所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。 「2)Linux发行版本」 Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。 这些操作系统通常由Linux内核、以及来自GNU计划的大量的函式库,和基于X Window的图形界面,在X Window中用户同样可以通过使用鼠标对窗口、菜单等进行操作来完成相应的工作。 X Window系统是一个非常出色的图形窗口系统,是类UNIX系统的图形用户界面的工业标准。X Window系统最重要的特征之一就是它的结构与设备无关。 X Window系统的主要特点有如下几点: X Window系统是客户机/服务器结构的。X Window的实现是与操作系统内核分开的,其主要由X Server和X Client两部分组成。 X Window系统不是Unix/Linux操作系统的必须的构成部分,而只是一个可选的应用程序组件。 1.2.7 Unix/Linux开发应用领域介绍 Unix/Linux服务器 是目前Unix/Linux应用最多的一个领域,可以提供Web、FTP、Gopher、SMTP/POP3、Proxy/Cache、DNS等服务器,支持服务器集群,支持虚拟主机、虚拟服务、VPN等。 嵌入式Linux系统 嵌入式Linux是将流行的Linux操作系统进行剪裁修改,能够在嵌入式计算机系统上运行的一种操作系统。Linux嵌入式系统能够支持多种CPU和硬件平台,性能稳定,剪裁性好,开发和使用容易。其中包括Embedix、uCLinux、muLinux等。 桌面应用 近年来,Linux系统特别强调在桌面应用方面的改进,并且已达到相当的水平,完全可以作为一种集办公应用、多媒体应用、网络应用等多方面功能于一体的图形界面操作系统,在办公应用方面,Unix/Linux集成了openOffice、SUN公司的StarOffice以及KOffice等工具。 电子政务 随着Linux的快速发展,Linux已逐渐成为Windows系统重要的竞争力量。尤其是Linux在安全性方面的独特优势,又使得Linux在政府应用领域得到很大的发展。目前一些国家正将其电子政务系统向Linux平台迁移。中国政府也对Linux给予极大的支持。 2 文件系统 2.1 目录和路径 2.1.1 目录 目录是一组相关文件的集合。 一个目录下面除了可以存放文件之外还可以存放其他目录,即可包含子目录。 在确定文件、目录位置时,DOS和Unix/Linux都采用“路径名+文件名”的方式。路径反映的是目录与目录之间的关系。 2.1.2 路径 Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。 路径分为绝对路径和相对路径: 「绝对路径」 绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。 下级目录接在上级目录后面用“/”隔开。 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。 「相对路径」 相对路径是指目标目录相对于当前目录的位置。 如果不在当前目录下,则需要使用两个特殊目录“.”和“”了。目录“.”指向当前目录,而目录“..”。 2.2 文件系统 2.2.1 Windows和Linux文件系统区别 在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符: 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示: 在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录): RedHat Ubuntu 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。 和Windows操作系统类似,所有Unix/Linux的数据都是由文件系统按照树型目录结构管理的。而且Unix/Linux操作系统同样要区分文件的类型,判断文件的存取属性和可执行属性。 Unix/Linux也采用了树状结构的文件系统,它由目录和目录下的文件一起构成。但Unix/Linux文件系统不使用驱动器这个概念,而是使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上,其结构示意图如图所示: 无论何种版本的 Linux 发行版,桌面、应用是 Linux 的外衣,文件组织、目录结构才是Linux的内心。 2.2.2 Linux目录结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。 /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。 /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。 /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。 /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。 /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。 /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。 /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。 /opt:给主机额外安装软件所摆放的目录。 /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。 /root:系统管理员root的家目录。 /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。 /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。 /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。 /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man:  程序说明文件存放目录。 /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。 2.3 一切皆文件 2.3.1 一切皆文件 Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。 2.3.2 文件分类 通常,Unix/Linux系统中常用的文件类型有5种:普通文件、目录文件、设备文件、管道文件和链接文件。 「普通文件」 普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。 在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。 「目录文件」 Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。 目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。 每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。 「设备文件」 Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。 字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。 「管道文件」 管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。 「链接文件」 似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。 2.4 文件权限 文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。 Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。 在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。 2.4.1 访问用户 通过设定权限可以从以下三种访问方式限制访问权限: 「只允许用户自己访问(所有者)」 所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。 「允许一个预先指定的用户组中的用户访问(用户组)」 用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。 「允许系统中的任何用户访问(其他用户)」 用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类 这有点类似于 QQ 空间的访问权限: 这个 QQ 空间是属于我的,我相当于管理者(也就是“所有者”),我想怎么访问就怎么访问。 同时,我可以设置允许 QQ 好友访问,而这些 QQ 好友则类似于“用户组”。 当然,我可以允许所有人访问,这里的所有人则类似于“其他用户”。 2.4.2 访问权限 用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限: 「读权限(r)」 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。 「写权限(w)」 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。 「可执行权限(x)」 对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。 注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。 2.4.3 示例说明 第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。 每一个用户都有它自身的读、写和执行权限。 第一组权限控制访问自己的文件权限,即所有者权限。 第二组权限控制用户组访问其中一个用户的文件的权限。 第三组权限控制其他所有用户访问一个用户的文件的权限。 这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有 9 种类型的权限组。 3 常用命令 3.1 概述 很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。 Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。 近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。 Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。Linux 发行版本最少的命令也有 200 多个,这里只介绍比较重要和使用频率最多的命令。 3.2 命令使用方法 3.2.1 Linux 命令格式 command  [-options]  [parameter1]  … 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选 parameter1 …:传给命令的参数,可以是零个一个或多个 3.2.2 查看帮助文档 「--help」 一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。 如我们想查看命令 ls 的用法:ls --help 「man」 man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。 该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览不同的内容。 man 中各个 section 意义如下: Standard commands(标准命令) System calls(系统调用,如open,write) Library functions(库函数,如printf,fopen) Special devices(设备文件的说明,/dev下各种设备) File formats(文件格式,如passwd) Games and toys(游戏和娱乐) Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量) Administrative Commands(管理员命令,如ifconfig) man使用格式如下: man [选项]  命令名 man设置了如下的功能键: 如,我们想查看 ls 的用法:man 1 ls ( 1:为数字“1”,代表第 1 个 section,标准命令 ) 实际上,我们不用指定第几个章节也用查看,如,man ls。但是,有这个一种情况,假如,命令的名字和函数的名字刚好重名(如:printf),它既是命令,也可以是库函数,如果,我们不指定章节号,man printf,它只查看命令的用法,不会查询函数的用法,因为 man 是按照手册的章节号的顺序进行搜索的。 所以,使用 man 手册时,最好指定章节号: 3.2.3 使用技巧 「自动补全」 在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令。 「历史命令」 当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来。 3.3 常用命令 3.3.1 文件管理 「1 查看文件信息:ls」 ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。 Linux文件或者目录名称最长可以有256个字符,“.”代表当前目录,“..”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。 ls常用参数: 图中列出的信息含义如下图所示: 与DOS下的文件操作类似,在Unix/Linux系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。 「2 输出重定向命令:>」 Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。 如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 ) >输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。 「3 分屏显示:more」 查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,每次只显示一页,按下空格键可以显示下一页,按下q键退出显示,按下h键可以获取帮助。 「4 管道:|」 管道:一个命令的输出可以通过管道做为另一个命令的输入。 管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。 「5 清屏:clear」 clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + l ( “l” 为字母 )。 「6 切换工作目录:cd」 在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感。 cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。 注意:如果路径是从根路径开始的,则路径的前面需要加上 “ / ”,如 “ /mnt ”,通常进入某个目录里的文件夹,前面不用加  “ / ”。 「7 显示当前路径:pwd」 使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。 「8 创建目录:mkdir」 通过mkdir命令可以创建一个新的目录。参数-p可递归创建目录。 需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。 「8 删除目录:rmdir」 可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。 「10 删除文件:rm」 可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。 常用参数及含义如下表所示: 「11 建立链接文件:ln」 Linux链接文件类似于Windows下的快捷方式。 链接文件分为软链接和硬链接。 软链接:软链接不占用磁盘空间,源文件删除则软链接失效。 硬链接:硬链接只能链接普通文件,不能链接目录。 使用格式: ln 源文件 链接文件 ln -s 源文件 链接文件 如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。 注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。 「12 查看或者合并文件内容:cat」 「13 文本搜索:grep」 Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。 grep一般格式为: grep [-选项] ‘搜索内容串’文件名 在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep‘a ’1.txt。 常用选项说明: grep搜索内容串可以是正则表达式。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 grep常用正则表达式: 「14 计算文件行数或字数:wc」 常用选项说明: 「15 查找文件:find」 find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。 常用用法: 「16 拷贝文件:cp」 cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。 常用选项说明: cp vim_configure/ code/ -ivr 把文件夹 vim_configure 拷贝到 code 目录里: 「17 移动文件:mv」 用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。 常用选项说明: 「18 获取文件类型:file」 Linux系统文件类型不是根据文件扩展名分类的,通过file命令可以确认文件具体类型。 「19 归档管理:tar」 计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。 tar使用格式 tar  [参数]  打包文件名  文件 tar命令很特殊,其参数前面可以使用“-”,也可以不使用。 常用参数: 注意:除了f需要放在参数的最后,其它参数的顺序任意。 「20 文件压缩解压:gzip」 tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。 gzip使用格式如下: gzip  [选项]  被压缩文件 常用选项: tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。 「压缩用法」:tar cvzf 压缩包包名 文件1 文件2 ... -z 指定压缩包的格式为:file.tar.gz 例如:tar zcvf test.tar.gz 1.c 2.c 3.c 4.c把 1.c 2.c 3.c 4.c 压缩成 test.tar.gz 「解压用法」:tar zxvf 压缩包包名 「解压到指定目录」:-C (大写字母“C”) 例子:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下: 「21 文件压缩解压:bzip2」 tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。 tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.bz2。 在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。 压缩用法:tar cjvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c) 解压用法:tar xjvf 压缩包包名 (tar jxvf bk.tar.bz2) 「22 文件压缩解压:zip、unzip」 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。 压缩文件:zip  [-r] 目标文件(没有扩展名) 源文件 解压文件:unzip -d 解压后目录文件 压缩文件 「23 查看命令位置:which」 3.3.2 用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。 在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。 Unix/Linux系统中的root账号通常用于系统的维护和管理,它对Unix/Linux操作系统的所有部分具有不受限制的访问权限。 在Unix/Linux安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为“标准用户”。 在大多数版本的Unix/Linux中,都不推荐直接使用root账号登录系统。 「1) 查看当前用户:whoami」 whoami该命令用户查看当前系统当前账号的用户名。可通过cat /etc/passwd查看系统用户信息。 由于系统管理员通常需要使用多种身份登录系统,例如通常使用普通用户登录系统,然后再以su命令切换到root身份对传统进行管理。这时候就可以使用whoami来查看当前用户的身份。 「2) 查看登录用户:who」 who命令用于查看当前所有登录系统的用户信息。 常用选项: 「3) 查看登录用户:w」 w命令也可以查看登录当前系统的用户信息。与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。 w命令的格式如下: w  [选项]  [用户名] 如果w命令携带用户名,则只显示指定用户的信息,否则显示当前所有登录用户的信息。 常用选项: 「4) 退出登录账户:exit」 如果是图形界面,退出当前终端; 如果是使用ssh远程登录,退出登陆账户; 如果是切换后的登陆用户,退出则返回上一个登陆账号。 「5) 切换用户:su」 可以通过su命令切换用户,su后面可以加“-”。su和su –命令不同之处在于,su -切换到对应的用户时会将当前的工作目录自动转换到切换后的用户主目录: 「注意」:如果是ubuntu平台,需要在命令前加“sudo”,如果在某些操作需要管理员才能操作,ubuntu无需切换到root用户即可操作,只需加“sudo”即可。sudo是ubuntu平台下允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root 用户的登陆和管理时间,提高了安全性。 「6) 添加、删除组账号:groupadd、groupdel」 groupadd 新建组账号 groupdel 组账号 cat /etc/group 查看用户组 「7) 修改用户所在组:usermod」 使用方法:usermod -g 用户组 用户名 「8) 添加用户账号:useradd」 在Unix/Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令的使用格式完全一样。 useradd命令的使用格式如下: useradd  [参数]  新建用户账号 相关说明: Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户); 每一个用户必须有一个主目录,所以用useradd创建用户的时候,一定给用户指定一个主目录; 用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的; 如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。 「9) 设置用户密码:passwd」 在Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。用户也可以直接使用该命令来修改自己的口令,而无需在命令后面使用用户名。 「10) 删除用户:userdel」 「11) 查询用户登录情况:last」 不管是哪位用户从哪里登录,管理员都可以通过last命令查出,以及是否有人非法登录。 「12) 修改文件权限:chmod」 chmod 修改文件权限有两种使用格式:字母法与数字法。 字母法:chmod u/g/o/a  +/-/=  rwx  文件 chmod o+w file 给文件file的其它用户增加写权限: chmod u-r file 给文件file的拥有者减去读的权限: chmod g=x file设置文件file的同组用户的权限为可执行,同时去除读、写权限: 数字法:“rwx” 这些权限也可以用数字来代替 如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename chmod 751 file: 文件所有者:读、写、执行权限 同组用户:读、执行的权限 其它用户:执行的权限 chmod 777 file:所有用户拥有读、写、执行权限 注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。 「13) 修改文件所有者:chown」 使用方法:chown  用户名  文件或目录名 「14) 修改文件所属组:chgrp」 使用方法:chgrp  用户组名  文件或目录名 3.3.3 系统管理 「1) 查看当前日历:cal」 cal命令用于查看当前日历,-y显示整年日历: 「2) 显示或设置时间:date」 设置时间格式(需要管理员权限): date  [MMDDhhmm[[CC]YY][.ss]] +format CC为年前两位yy为年的后两位,前两位的mm为月,后两位的mm为分钟,dd为天,hh为小时,ss为秒。如:date 010203042016.55。 显示时间格式(date '+%y,%m,%d,%H,%M,%S'). 「3) 查看进程信息:ps」 进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。 ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下: 「4) 动态显示进程:top」 top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命令时加上-d 来指定显示信息更新的时间间隔。 在top命令执行后,可以按下按键得到对显示的结果进行排序: 「5) 终止进程:kill」 kill命令指定进程号的进程,需要配合 ps 使用。 使用格式: kill [-signal] pid 信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。 kill  9133 :9133 为应用程序所对应的进程号 有些进程不能直接杀死,这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束: 「6) 后台程序:&、jobs、fg」 用户可以将一个前台执行的程序调入后台执行,方法为:命令 & 如果程序已经在执行,ctrl+z可以将程序调入后台 jobs查看后台运行程序 fg编号(编号为通过jobs查看的编号),将后台运行程序调出到前台 「7) 关机重启:reboot、shutdown、init」 「8) 字符界面和图形界面切换」 在redhat平台下,可通过命令进行切换: init 3 切换到字符界面 init 5 切换到图形界面 通过快捷键切换(适用大部分平台): Ctrl + Alt + F2 切换到字符界面 Ctrl + Alt + F7 切换到图形界面 「9) 检测磁盘空间:df」 df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。 「10) 检测目录所占磁盘空间:du」 du命令用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况。 du命令的使用格式如下: du  [选项]  目录或文件名 「11) 格式化:mkfs」 mkfs命令相当于DOS/Windows系统中的格式化命令,用于创建指定的文件系统。 使用格式如下: mkfs  [选项]  设备文件名  [blocks] 「12) 应用软件安装和卸载」 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat公司提出的,用于管理Linux下软件包的软件。它是一种软件打包发行并且实现自动安装的程序,需要用rpm程序安装的软件包,其后缀是.rpm,并可以对这种程序包进行安装、卸装和维护。 rpm命令的使用格式如下: rpm   [选项]  [软件包名] 如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷: 「13) 查看或配置网卡信息:ifconfig」 如果,我们只是敲:ifconfig,它会显示所有网卡的信息: 我们可以通过ifconfig配置网络参数: 只有root才能用ifconfig配置参数,其他用户只能查看网络配置 ifconfig 网络接口名称 [地址协议类型] [address] [参数] 地址协议类型如:inet(IPv4),inet6(IPv6)等 如:ifconfig eth0 inet 192.168.10.254 netmask 255.255.255.0 up 常用参数: ifconfig配置的网络参数在内存中,计算机重新启动之后就失效了,如果需要持久有效就需要修改网络接口的配置文件: redhat修改/etc/sysconfig/network-scripts/ifcfg-eth0文件 IPADDR=IP地址 GATEWAY=默认网关 ubuntu修改/etc/NetworkManager/system-connections/Wired connection 1文件 [ipv4] method=manual addresses1=IP地址;24;默认网关; 「14) 测试远程主机连通性:ping」 ping通过ICMP协议向远程主机发送ECHO_REQUEST请求,期望主机回复ECHO_REPLY消息 通过ping命令可以检查是否与远程主机建立了TCP/IP连接 使用方法:ping [参数] 远程主机IP地址 「15) 网络路由设置:route」 route可以增加,修改,显示路由信息,使用格式如下: route [-v] [-A family] add default [gw 默认网关地址] [[dev interface]] 示例:route add default gw 192.168.1.1 dev eth0 「16) 监控网络状态:netstat」 netstat命令监控网络状态,包括接口设置,IP路由,各种网络协议的统计,netstat输出信息说明如下: netstat常用命令参数: 4 编辑器 4.1 gedit编辑器 gedit是一个Linux环境下的文本编辑器,类似windows下的写字板程序,在不需要特别复杂的编程环境下,作为基本的文本编辑器比较合适。 4.2 vi编辑器 4.2.1 vi介绍 vi 编辑器是 Linux 系统中最常用的文本编辑器,vi 在Linux界有编辑器之神的美誉,几乎所有的 Linux 发行版中都包含 vi 程序。 vi 工作在字符模式下,不需要图形界面,非常适合远程及嵌入式工作,是效率很高的文本编辑器,尽管在 Linux 上也有很多图形界面的编辑器可用,但vi的功能是那些图形编辑器所无法比拟的。 vim 是 vi 的升级版,它不仅兼容 vi 的所有指令,而且还有一些新的特性,例如 vim 可以撤消无限次、支持关键词自动完成、可以用不同的颜色来高亮你的代码。vim 普遍被推崇为类 vi 编辑器中最好的一个。 vi有输入和命令两种工作模式。输入模式(也叫插入模式)用于输入字符。命令模式则是用来运行一些编排文件、存档以及离开vi等操作命令。当执行vi后,首先进入命令模式,此时输入的任何字符都被视为命令。 4.2.2 vi最基本操作 「1) 打开文件」 vi filename:打开或新建文件,并将光标置于第一行行首,如果文件不存在,则会新建文件。 「2) 编辑文件」 如果通过vi打开一个已经存在的文件,首先进入命令模式,此时输入的任何字符都被视为命令,不能输入内容。 「3) 保存文件」 一定要先退出插入模式(按Esc进入命令模式),然后,shift + zz (按住 “shift” + 按两下“z”键) 即可保存退出当前文件。 4.2.3 vi实用命令 「1) vi的插入模式」 「2) vi的退出」 「3) vi的删除和修改功能」 「4) vi的行定位功能」 「5) vi的文本查找功能」 「6) vi的替换功能」 「7) vi的set指令」 5 远程操作 5.1 SSH介绍 SSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。 利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是 UNIX 系统上的一个程序,后来又迅速扩展到其他操作平台。SSH 在正确使用时可弥补网络中的漏洞。SSH 客户端适用于多种平台。几乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。 使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。 5.2 远程登录 5.2.1 Linux平台相互远程 操作命令:ssh -l username hostip 注意:远程登录的两台机器必须要能ping通(平通)。 首先,查看需要被远程机器的ip: 远程登录(这里是用户 wencong ( A 机器 ) 远程登录 edu ( B 机器 ) ), 可以不用sudo : SSH 告知用户,这个主机不能识别,这时键入"yes",SSH 就会将相关信息,写入" ~/.ssh/know_hosts" 中,再次访问,就不会有这些信息了。然后输入完口令,就可以登录到主机了。 接着,提示输入登陆密码: 登陆成功: 5.2.2 Windows远程登录Linux 如果想在 Windows 平台下远程登录 Linux,这时候,Windows 需要安装 安装相应软件包。这里介绍是Xmanager。 Xmanager是一款小巧、便捷的浏览远端X窗口系统的工具。它包含Xshell、Xftp等软件: Xshell:是一个Windows平台下的SSH、TELNET和RLOGIN终端软件。它使得用户能轻松和安全地在Windows平台上访问Unix/Linux 主机。 Xftp:是一个应用于 Windows 平台的 FTP 和 SFTP 文件传输程序。Xftp能安全地在Unix/Linux 和 Windows 平台之间传输文件。 配置Xshell,远程登录: Linux默认采用的编码格式是UTF-8,Windows默认采用的编码格式是ANSI(GB2312、GBK),所以需要设置一下相应编码: 5.3 远程传输文件 5.3.1 Linux平台相互传输 SSH 提供了一些命令和shell用来登录远程服务器。在默认情况下,不允许用户拷贝文件,但还是提供了一个“scp”命令。 本地文件复制到远程: scp FileName RemoteUserName@RemoteHostIp:RemoteFile scp FileName RemoteHostIp:RemoteFolder scp FileName RemoteHostIp:RemoteFile 本地目录复制到远程: scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder scp -r FolderName RemoteHostIp:RemoteFolder 远程文件复制到本地: scp RemoteUserName@RemoteHostIp:RemoteFile FileName scp RemoteHostIp:RemoteFolder FileName scp RemoteHostIp:RemoteFile FileName 远程目录复制到本地: scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName scp -r RemoteHostIp:RemoteFolder FolderName 拷贝远程的文件: 拷贝远程的文件可以任意修改其名字: 拷贝远程的文件可以指定存放路径: 5.3.2 Windows和Linux相互传输文件 6 webserver环境搭建 6.1 webserver环境搭建 http.tar.gz是用C语言编程的一个简单版webserver。 1)把http.tar.gz拷贝到Linux环境中: 2)解压压缩包: 3)进入解压后的目录,终端敲make编译代码: 4)如果是RedHat环境,需要额外配置一下防火墙: 5)root用户启动或关闭web服务: 6)环境测试 a)必须root用户先启动web服务: b)查看web服务器所在机器的ip: c)打开能ping通web服务器的浏览器: 6.2 网页版HelloWorld 1)重新打开一个终端,进入web服务器所在目录: 2)通过vi新建hello.c文件,内容写如下代码: #include int main(){ printf("hello world\n"); return 0;} 3)退出保存hello.c后,通过gcc编译代码,可执行程序的后缀名(扩展名)一定是cgi: gcc是编译命令,放最开始位置 -o参数后面一定是可执行程序名字 4)测试网页版helloworld,在浏览器输入:192.168.31.143/hello.cgi 5)显示中文乱码解决方法 Linux默认采用的编码格式是UTF-8,浏览器显示默认采用的编码格式是GBK,在浏览器中直接设置utf-8编码或者通过代码指定浏览器为utf-8编码。 a) 直接设置浏览器编码 b) 通过代码指定浏览器为utf-8编码,代码中加上头部元素信息: #include int main(){ printf(""); printf(""); printf(""); printf(""); printf("测试\n"); printf(""); return 0;} 若觉得文章对你有帮助,随手转发分享,也是我们继续更新的动力。 END 来源:程序员编程指南,作者:不二 版权归原作者所有,如有侵权,请联系删除。 ▍ 推荐阅读 树莓派Pico:仅4美元的MCU 嵌入式Linux开发板裸机程序烧写方法总结 国产16位MCU的痛点,可以用这款物美价廉产品 →点关注,不迷路← 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-02-20 关键词: Linux Unix 操作系统

  • 中国首个量子计算机操作系统发布

    中国首个量子计算机操作系统发布

    2月8日,中国首个量子计算机操作系统——“本源司南”在合肥正式发布。 该系统由合肥本源量子计算科技有限责任公司自主研发,主要特点包括多量子计算任务并行执行、量子比特自动化校准、量子计算资源统一管理等。 本源量子表示,该系统全面超越国外现有产品,能够数倍提升现有量子计算机系统的运行效率,未来将支持国产量子计算机落地。 据了解,本源量子研发团队利用量子卷积神经网络模型开发出的量子图像识别应用,可将图像识别任务转化为多个量子线路,在经过量子态数据编码之后,这些量子线路就处于排队等待运行状态。 通过“本源司南”的统一调度管理,这些量子线路在单个量子芯片上可以被并行执行,不仅大大减少了整体线路运行时间,还有效提高了量子芯片的整体利用率,使得当前有限的量子计算资源得到最大化利用。 下一步,本源量子团队将基于具备完全自主知识产权的本源量子计算机集群、本源司南量子计算机操作系统、本源量子云平台以及丰富的量子软件与应用,打造完善且开放的量子计算服务生态,与量子计算产业链企业共同实现量子计算应用的广泛应用。 根据公开资料显示,本源量子成立于2017年9月,由中国量子计算行业领军人物——中科院院士郭光灿、中科大教授郭国平领衔创立,是国内量子计算龙头企业;团队技术起源于中国量子信息领域第一个省部级重点实验室——中科大中科院量子信息重点实验室,主要以量子计算机的研发、推广和应用为核心,专注量子计算全栈开发,各种软硬件产品、技术指标国内领先,拥有各项知识产权成果四百余项。值得一提的是,2021年1月,本源量子刚刚完成数亿元A轮融资。

    时间:2021-02-10 关键词: 计算机 量子 操作系统

  • “国民钉钉”遥身一变“云钉一体”操作系统

    作者:王海伦

    时间:2021-02-01 关键词: 阿里云 钉钉 操作系统

  • 华为王成录:今年搭载鸿蒙OS的设备将达3-4亿台

    华为王成录:今年搭载鸿蒙OS的设备将达3-4亿台

    “鸿蒙OS不是安卓的拷贝,也不是iOS的拷贝,它是真正面向未来IoT时代的一个全景操作系统。”在1月12日举办的“2020科技风云榜”大会上,华为消费者BG软件部总裁王成录在演讲中再次强调道。 同时,王成录还多次表示,鸿蒙OS的出现,不是为了应对美国制裁而做的替代系统。这一系统早在2016年5月就已立项,在思考华为的终端生态根基时已经萌生做鸿蒙OS的想法。 2019年8月,华为在开发者大会上正式推出了面向全场景的分布式操作系统HarmonyOS,各种智能终端从此实现了快速发现、极速连接、硬件互助以及资源共享。 而后过了一年,华为如期推出了HarmonyOS2.0,带来了分布式软总线、分布式数据管理、分布式安全等分布式能力的全面升级;同时发布了自适应的UX框架,让开发者能够快速触达千万级新设备和用户。 虽然在短短一年便实现了升级迭代,但对华为而言,这才刚刚开始。 王成录表示,华为希望达到的目标是,用一套系统满足所有大大小小各种各样硬件的系统装载要求。对消费者来说,在使用各种各样的硬件时,可以像使用一台智能手机一样的简单;对于开发者来说,在这个系统里开发一次业务逻辑代码,就可以在多个设备上部署。 做系统不是一蹴而就的事情,而是需要长期的技术更新迭代升级,以及越来越多合作伙伴的加入,对于鸿蒙系统在2021年的发展,王成录也公开透露道:“在华为自有的设备上,我们的装机量保守估计是2亿台,但我们的目标还在挑战,希望能够超过2亿台,或者远超2亿台······开放给第三方设备的保守装机量会达到1亿台。” 这样加起来,华为在2021年,鸿蒙系统富设备的硬件基础就有3-4亿台。 华为,还在前进的路上。 以下为王成录演讲全文,进行不改变原意的编译: 各位朋友,大家好,非常高兴有机会跟大家分享鸿蒙OS的进展和未来发展我们的一些思考。今天,我想从整个产业发展的大背景先开始介绍我们对未来的一些考虑。 行业在谈论IoT的发展已经有十多年了,我们各行各业、各个企业,包括学术界都做了很多尝试,想让IoT真正地走到人们的生活中。 从目前来看,虽然IoT的设备量增长得比较大,但是给人的生活带来的改变还处在初始阶段。现在整个行业处在了非常好的关键的转折时期,因为智能手机从2004年第一代的iPhone出现,才真正让整个行业进入到了移动互联网的时代。 过去十几年,我们整个产业的发展是基于智能手机这个硬件平台而进行的。今天我们再来看这个行业,有三个非常重要的信息供大家来参考这个行业的发展阶段: 第一个信息:全球智能手机的出货量,从2018年开始就已经微微下降,2019年大概整体下降3%多。2020年由于疫情的影响,我们整体下降得会更大一些,但是整个智能手机的发货量的不增长,已经成为一个非常确定的事实。 第二个信息:过去的这几年,无论是安卓生态,还是苹果生态,真正的新的App可能没有几个,除了抖音以外,可能我们整个行业不再有新的App的出现。 第三个非常重要的指标:消费者使用手机的时长,从2018年开始也基本上稳定在4到5个小时。 这三个信息表明,我们整个基于智能手机的移动互联网产业的发展已经到了一个非常非常重要的转型期;再加上IoT硬件不断地出现,我想这个行业就处在了一个非常关键的转换期。 在过去很多年,虽然智能手机为载体的移动产业发生了非常大的变化,但是只有在智能手机这个平台上,整个生态才是非常繁荣的,全球整个基于智能手机的App加起来大概400多万。 但是,除了手机之外,智能手表、电视、车机上面的应用是非常少的。应用少,消费者使用这个设备的动力就会变小,因为用这个设备没有服务。 原因到底是什么?核心就在于我们每个硬件设备上跑的系统是完全碎片化的。 大家耳熟能详的或者是稍微熟悉一点的,我们列在这上面就有20、30个之多,这样的一个状态就造成了开发者实际上要想做一个基于其它硬件平台的应用就会非常麻烦,要不同地去换平台,不同地做适配,不同地做各种各样的新设备上的应用,对他们来讲是一个非常大的工作量。 另外一个非常有挑战的问题是大大小小的设备,如果有屏幕,尺寸差异非常大。不论是苹果的AppStore上的应用,还是安卓上的应用,真正让开发者工作量占大头的是UI部分的适配。这么多不同的、大大小小的尺寸和分辨率,使得开发工作量倍增。 另外,从消费者来看,在手机以外,其它智能设备的应用很少,给生活带来的便利非常有限,并且每一种设备有不同的系统、不同的操作方式,对消费者来讲,学习成本是非常高的。这也是目前阻碍整个由智能手机为载体的移动产业向IoT产业发展的一个非常重要的瓶颈——系统的碎片化。 华为鸿蒙OS的诞生,我们的目标就是能不能用一套系统来解决所有的大大小小的IoT硬件设备的问题。 外界可能有猜测,华为是不是因为美国制裁去开发了鸿蒙这套系统,我告诉大家“不是这样的”。这套系统我们真正立项开发是在2016年的5月份,那时我们就在思考未来智能手机这个产业的发展,它总有一天会到顶。一旦智能手机的发展到顶了以后,未来这个行业该怎么办? 我们不断地问自己这样的问题,华为这么大的终端生意,我们不可能把所有生态的根基构置在别人的系统。所以,这两个问题促使我们去思考我们未来要做什么样的系统,这就是鸿蒙OS诞生的最核心的初始背景。 当时,我们做这个系统,设定了几个目标: 第一,希望用一套系统去满足所有的硬件设备的装载要求,不再需要不同的硬件去定制不同的系统。 第二是非常重要的也是非常创新的一点,这套系统不再把一个一个IoT硬件当作孤立的设备来看,在这套系统里,所有的IoT硬件是融为一体的。 第三,针对开发者目前面临的问题,我们瞄的点就是解决开发者的问题,希望开发者写一次的业务逻辑代码就可以在不同的设备上跑起来。 这就是整个鸿蒙OS设计的最开始的三个目标方向,我们过去这几年也是沿着这个方向逐步往下发展的。 我们希望达到的目标是,用一套系统满足所有大大小小各种各样硬件的系统装载要求。 我们希望消费者在使用这么多硬件的时候,就像今天使用一台智能手机一样的简单;我们也希望开发者在这个系统里面开发一次的业务逻辑代码,就可以在多个设备上部署起来。这就是整个鸿蒙系统要达到的目标,我相信这个目标一旦达成,我们可能真正地去推动整个IoT产业的快速发展。 这里有一个点,我刚刚已经跟大家讲了,是非常重要的创新点,就是我们鸿蒙系统是把多设备当作一个逻辑设备来看的。 它具体的实现原理是什么样子呢?今天其它厂家的手机也做了手机跟大屏之间的投屏,华为也有类似于投屏这样的体验,两者到底有什么不一样?今天我也想利用这个机会跟大家讲一下。 其它厂家做投屏仍然是把电视机、手机、车机包括摄像头当作四个独立的设备,它是通过上层的应用层把它连接起来,这种连接有一个非常大的问题——就是它的通用性和它的扩展性都不行,需要针对不同的应用要去做适配,这种技术再往下发展,给整个行业会带来非常大的挑战,每个应用都去适配,这个工作量是难以承受的。 鸿蒙本身想怎么做呢?我们希望将来通过整个软总线的连接方式,把单个设备的物理连接通过无线连接的方式实现,这就相当于我们把一个一个孤立的物理设备的边界打破了,用无线的方式把多个设备融为一体,这种融为一体跟上层的应用是无关的。由此,它的通用性就非常好。 第二,只要在软总线上持续去投资、去攻克整个软总线的技术,它的扩展性会非常好,我们希望将来软总线的连接就像在一台设备上PCB(PrintedCircuitBoard,印制电路板)的连接一样。 今天告诉大家,我们已经做到了,我们整个带宽达到1.8个G,时延小于20毫秒,丢包的耐受度超过了30%。我们仍然会在软总线上持续投资,这样整个鸿蒙所倡导的多设备融合就有了一个非常非常好的基础。有了这个基础,将来应用开发者就不用再关注应用跑在哪个孤立的硬件设备上,而是可以调用所有的跟这个设备连接在一起的一个超级终端设备。 “超级终端”的含义就是通过鸿蒙系统,把多个孤立的IoT的设备融为一体。融为一体以后,整个终端在逻辑上看是一个新的终端,就相当于消费者自己可以根据自己的场景诉求去定义自己的终端。比如办公,我可以把PC、Pad、手机融在一起。如果出行,我可以把手表、车机、手机融在一起,等等。当然这种场景会有很多,消费者自己都可以根据自己对这个设备的需求来决定哪些设备融在一起。 有了这个以后对上层的应用开发者来讲是一个巨大的机会,因为今天包括手机、手表、车机等所有的应用,仍然是受限于单个设备本身的硬件能力和约束。一旦通过鸿蒙系统构成超级终端,上层的应用开发者就有机会去脱离单个设备的物理硬件能力的限制,它就可以调用更多的硬件,就会做出来如今单设备所无法企及到的一种体验。 这个体验到底是什么样子的?下面我用几个例子来给大家做一个简单的介绍,通过例子大家可能会更好地理解。 第一,游戏。将手机和大屏组成一个新的超级终端,用手机的陀螺仪这种体感的传感器传递的信息,在晃动的时候就相当于操作了这个游戏,也可以用手机扫码实现多个人同时打,整个游戏就跟单设备上有非常不一样的体验。 第二,家居领域。家居智能化是非常重要的,有几个需要注意的点:一是联网;二是设备与人的交互;三是操作不受限于单设备。这三个东西如果说做不到,消费者是体验不到智能化的体验。 第三,出行。出行最重要的就是便捷和安全,如果你在手机上订了一辆车,在出差的时候可能不太方便拿手机,就可以将信息转到手表上,通过手表去看到车辆要到达的时间、车牌号、以及上了车后的运行状态、支付等,这是我们和滴滴一起做的一个项目。另外,还有一个出行的例子,是跟百度一起做的。如果用户在野外骑车需要导航的时候,可以利用手表和手机之间的联动,把导航关键的信息转向手表即可。 这几个例子,我们既从南向,又从北向,给大家解释了一下鸿蒙到底是什么。南向就是我们不论是在办公的场景,在家庭的场景,在出行的场景,我们都是多设备重在一起;北向是用应用可以去跨多个设备的使用,体验不同。 最后一个例子:办公。如果参加会议的人处于异地开会的状态,发表言论的人可以将其材料投到一个大屏上以后,同时放上一个二维码,通过二维码即可加入会议,并同步信息,这就相当于我们手机、Pad和大屏都成了远程开会的办公终端,大幅提升了办公效率和质量。 去年9月10号,我们在松山湖发布鸿蒙2.0的时候曾公开表示过,我们迈出了重要的一步,鸿蒙不但使能于华为自己的设备,我们同样开放给合作伙伴,无论是从SDK还是源代码,还是开发的模组,开发工具等。 更重要是DevEco工具,它是把整个从系统的加载到整个系统的烧录,到最后的测试,我们完全是一体化的。 我们后续会持续在SDK、源代码的开发、开发板块和模组上持续地投入,会有更多的模组不断地发布给大家,大家可以根据自己的业务需要去做选择。 北向对应用开发者来讲是非常重要,不论是编程框架,还是DevEco工具、编译器,在此前中国是没有一个系统是有这样完整的东西提供给开发者的,所有的开发者都是基于欧美的这些系统的软件来做自己的应用,带来的问题就是非常碎片化。我们希望鸿蒙起步的这一天,就把我们编程的框架,包括我们的工具,包括编译器都去开放给大家,让大家基于华为鸿蒙系统,或者说中国整个移动操作系统的基础上去开发自己的应用。 随着时间的沉淀,相信我们的框架也好,工具也好,会越做越好。这个基础有了以后,对于未来移动产业的发展,我觉得后劲是非常足的。 我们的目标是在2021年,在华为自有的设备上,我们的装机量保守估计是2亿台,但我们的目标还在挑战,希望能够超过2亿台,或者远超2亿台。更重要的是,我们开放给第三方设备。目前我们跟第三方合作伙伴的沟通来看,保守的装机量会达到1亿台。我想跟大家强调的是,这一亿台的设备全是强交互的富设备,比如说白板,投影仪,电视机,电子本等等,这些设备保守的装机量会有1亿台。 这样加起来,我们在2021年,鸿蒙系统富设备的硬件基础就有3到4亿台。我想这对应用开发者来讲,是一个非常好的基础,起步是非常好的。 我想着重谈一点开源,这也是业界都非常关注的。去年9月10号,在发布鸿蒙2.0的同时,当天晚上8点钟,我们的开源代码也正式向业界开放了。 我们第一步的开源是把128KRAM到128MRAM的小设备的前瞻代码开源;今年的4月份,第二阶段的开源会如期进行;10月份的开源也一定会如期进行,如果大家有比较强烈诉求的时候,我们甚至可以把第三阶段的开源再稍微提前一点。 鸿蒙这套系统本身的出现,不是华为为了应对美国的制裁做了一个替代的系统。鸿蒙系统不是安卓的拷贝,也不是iOS的拷贝,它是真正面向未来IoT时代的一个全景操作系统。这个操作系统跟今天仅仅基于手机的安卓和iOS是不同的。 在未来真正的IoT到来的时候,是需要这样一个系统把底层充分地打通,鸿蒙迈出了第一步,这是非常非常重要的第一步。 我非常有信心,中国的产业界、学术界和咱们开发者等等,大家力量集中在一起,我们一定能够把整个基于鸿蒙未来的IoT的移动互联网产业做好,根扎在中国,我相信会对咱们各行各业来讲都是一个巨大的机会!

    时间:2021-01-13 关键词: 华为 鸿蒙 操作系统

  • 漫画:一场大会,秀出了中国人自己的操作系统!

    openEuler究竟是什么? openEuler是一个开源、免费的Linux发行版平台,通过开放的社区形式,与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。 至于openEuler这个名字,取自一位天才数学家 Leonhard Euler。 有一位著名的校长曾经说过: 一所优秀的大学之所以优秀,并不是因为大学里有大楼,而是因为大学里有“大师”。 同样的,一场精彩的大会之所以精彩,也并不是因为大会的会场布置的有多么金碧辉煌,而是因为会场上有大师。 这一次的openEuler Summit 2020 ,都来了哪些大师呢? 华为计算产品线副总裁    张熙伟 openEuler社区理事长    江大勇 openEuler社区副理事长    邱成锋 openEuler社区技术委员会主席    胡欣蔚 上海交通大学特聘教授/博士生导师    陈海波 建信金融科技信用卡及开放银行总经理    彭云 中国移动信息技术中心研发创新中心副总经理    张春 中国银联技术部总监    祖立军 openEuler社区技术委员会委员    熊伟 开放原子基金会TOC主席    堵俊平 华为副总裁 / 计算产品线总裁    邓泰华 openEuler 社区技术委员会委员    马全一 ........ 此外还有许许多多的IT行业大咖。 华为计算产品线副总裁 张熙伟 上海交通大学特聘教授/博士生导师 陈海波 openEuler社区技术委员会主席 胡欣蔚 开放原子基金会TOC主席 堵俊平 (照片仅部分展示) 主题一:《全产业链共享操作系统创新价值》 在12月25日上午的主会场,openEuler社区理事长江大勇老师为大家讲解了全产业链共享操作系统创新价值。 首先,江大勇老师通过几组数据,报告了openEuler社区的发展情况:openEuler从2019年12月31日开源正式上线,经过一年的努力,超越了预期,版本迭代速度很快,陆续扩展了许多强大功能;社区贡献者越来越多,非常积极活跃;产品销量可观,被越来越多的用户所认可。 此外,江大勇老师表示,截止今天已经有60多个厂商、高校和研究机构加入openEuler社区开始对社区做贡献,openEuler大家庭已经覆盖了全产业链中操作系统所有的环节。     回顾过去二十年,整个计算产业在发生非常大的变化,对于操作系统来说,创新的机会来了。传统单一的处理器架构已经不能满足需求,也出现了CPU、GPU、DPU各种各样的处理器,计算产业已经进入了多样性计算的新时代。面向这种变化的核心是OS操作系统,操作系统承载了软硬件结合特别重要的一环,是计算产业核心的技术。同时也是计算产业技术和商业生态的核心。 openEuler社区从成立以来就探索以开源协作的方式让产业界的技术、生态、商业能够相互协作起来,希望它能够产生一个良性的循环,相互协作起来,形成一个繁荣的生态。而整个产业生态中,技术创新是最重要。     最后说到商业,数字经济已经是现在全球经济的主旋律,预计到2024年中国区服务器的市场份额将占到全球33%,并且还拥有巨大的增长空间,这是所有从业者的机会,操作系统产业的机会。操作系统支撑了整个数字经济的底座,它会撬动万亿级的技术软件的市场。      在过去一年,openEuler已经初步构建了一个完整的生态价值链,从碎片式的生态变成了从硬件到基础软件到应用完整的生态链、价值链。openEuler社区继续秉承共建共享共治的原则,通过社区连接技术、生态和商业,让openEuler生态更加丰富和强大。 主题二:《飞行中换引擎:建行信用卡核心系统创新实践》 在12月25日上午的主会场,来自建信金融科技的技术大神彭云老师,为大家分享了建行信用卡核心业务系统应用软硬件平台的实践。 建信金融科技原来是建行的研发部门。信用卡业务的客户基数特别大,作为对私业务需要面向超过一亿的用户,涉及到还款、利息费用计算、免息、滞纳金等等具体业务,对一致性的要求非常高。 最初在2002年,建行信用卡业务使用的是IBM  Mainframe,操作系统是ZOS,它是集中式的平台,资源是很集约,可扩展性比较差,计算能力也是有限的。 随着业务的发展,建行信用卡业务的架构不断演进,技术栈越来越复杂,模块设计也越来越复杂。在对新技术的不断探索当中,建信金融科技认识到了鲲鹏技术栈的巨大优势。但是,如何把这个庞大的信用卡系统进行稳定迁移呢? 聪明的他们采用了并轨运行的方式,让建行的信用卡核心系统运行在两个平台上,其中一边是传统的X86技术栈,另一边用的是麒麟技术栈,操作系统内核正是openEuler。 经过平滑迁移之后,新的麒麟技术栈交易响应速度提高了13%,稳定性高可用也不错的。 主题三:《openEuler社区开发者颁奖》 在12月25日上午主会场的尾声,由openEuler社区技术委员会委员马全一老师,为openEuler社区开发者颁奖。 这次组委会准备了两个奖项感谢这些开发者的贡献,第一个奖项是优秀贡献者奖,奖励的是openEuler社区的中坚力量。在他们的积极贡献下,openEuler版本,包括很多企业级的特性,都得到了比较全面的扩展和完善。 优秀贡献者奖的名单如下: 郑宇航 侯建 谢秀奇 方亚芬 李峰 另外一个奖项是最活跃的SIG奖,获奖的小组如下: base Service  SIG组 Desktop  SIG组 iSula  SIG组 Programming  Language  SIG Infrastructure  SIG 在这个信息过载的时代,酒香也怕巷子深。openEuler是一个伟大的开源社区,但并不是所有的从业人员都了解它。通过这次的大会,openEuler扩大了自身的行业影响力,让更多的开发者认识了openEuler,喜欢上openEuler。 这次的openEuler Summit 2020,是一场具有划时代意义的峰会,它标志着openEuler社区理事会、openEuler技术委员会的正式成立,也标志着openEuler社区正在从青涩走向成熟、正在一步一步获得全行业全产业链的认可。 中国的操作系统产业,拥有着巨大的市场空间,openEuler社区本着“共建共享共治”的原则,注定会成为中国操作系统产业生态的领头羊,让国人自己的操作系统走进更多的企业,占据更大的市场。于此同时,将会有更多的国内开发者对操作系统产生了兴趣,吸引到更多的人才加入到操作系统的探索之路,使得整个产业逐渐兴盛起来。 此外,对于广大开发者同胞来说,大会也向他们展示了一片全新的蓝海。机会永远留给有准备的人,openEuler社区给了开发者们学习的机会、交流的机会、展示的机会。在将来,一定会有更多的开发者能在社区中挖掘自身潜力,获取宝贵经验,在IT技术领域更上一层楼。 关于12月25日 openEuler Summit 的直播回放,已经在官网上线了,欢迎感兴趣的朋友点击左下角阅读原文进行观看~ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-12-30 关键词: openEuler 操作系统

  • 华为 "鸿蒙" 操作系统关键特性解读

    1、计算机为什么需要操作系统? 大部分人认为,操作系统本来就是与计算机(IT设备)一体的。究竟计算机为什么需要操作系统?可能我们并不会去特意想这个问题。 其实,对于IT产品而言,操作系统的角色,就像我们人类身体中,大脑的角色一样。我们每天面对大量的或大或小、或简单或复杂、或紧迫或宽松的事情。大脑如何处理这些事情的处理的先后顺序和逻辑关系。 鸿蒙OS,具备四大技术特性: 鸿蒙OS技术特性一:分布式架构首次用于终端OS,实现跨终端无缝协同体验 这里有个关键词,就是“分布式架构”,什么是操作系统的分布式架构? 华为在介绍这一部分内容时,特别提到了两个专业术语“分布式OS架构”和“分布式软总线技术”。对于以上这种“分布式”的作用,华为的描述是“通过公共通信平台,分布式数据管理,分布式能力调度和虚拟外设四大能力,将相应分布式应用的底层技术实现难度对应用开发者屏蔽,使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也使最终消费者享受到强大的跨终端业务协同能力为各使用场景带来的无缝体验。” 那我们先了解下,操作系统的分布式架构是怎样的架构? 分布式操作系统架构,是相对于集中式操作系统架构而言的。根据以上,我们知道,操作系统分别经历了从CP/M系统、DOC系统、集中式操作系统,到现在的分布式操作系统。 分布式架构操作系统,能够对计算机的资源进行动态分配,并有效控制和协调操作系统中各任务的并行执行。分布式架构的操作系统,除了具备传统操作系统功能之外,还提供分布式进程通信、分布式文件系统、分布式进程迁移、分布式进程同步和分布式进程死锁等功能。 分布式操作系统的特点是:分布性和稳定性。分布式操作系统中的微内核和其他应用程序,可以以多副本的方式运行,一旦系统中某一个部分发生故障,该分布式操作系统仍能够正常运行,保障了系统的稳定性。 另外一个就是“分布式软总线技术” 要了解分布式软件总线技术,我们需要一层一层的剥开。要知道分布式软件总线,需要了解软件总线,进而需要了解软插件,进而需要了解软件复用的概念。 软件复用,是利用现有的软件成分(资源)来构造新的软件系统。该软件成分可以是已有的软件,也可以是专门开发的可以复用的软件构件。 软件复用技术分为组装技术和生产技术。 生成技术,是利用程序编译器来完成对软件结构模式的复用。例如V c++等。 软插件模型,软插件技术从本质来讲是一种软件集成技术。对于一个新的软件系统,其中有大部分的工作量是用在重复编写已有软件部分。软插件是一种具有一组外接插头。如果构造一个软件系统的软插件都已存在,那开发者只需要对整个系统的构造策略和原则进行制定即可,从而提升软件生产效率。软件插件的特征包括:模块化好、独立性强、高可靠性、链接简单、封装功能等。 软件总线,解决的是软插件的交互问题,以支持软件工厂总装期间和运行阶段的高级通信问题。并解决软件系统内部各个软插件的互操作问题。 分布式软件总线。在分布式操作系统下,大量易购网络以及各个厂商推出的软硬件产品,带来分布式系统各个层次都存在互操作问题。如果将软件总线与操作系统、网络通信机制结合起来,就能够比较好的处理分布式系统的互操作问题。 华为给出的关于分布式软总线的关键指标,这将有利于我们对其的理解。主要包括:1)低时延:端到端时延小于20毫秒。2)高吞吐:有效图吞吐高达1.2Gbps。3)高可靠:抗丢包率高达25%。 2)资源共享:多个进程间共享同样的资源。 4)进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。 而对于华为鸿蒙OS而言,其进程间通信(IPC)性能大幅提升,我们可以理解为不同进程之间的对话和沟通效率大幅提升。 鸿蒙OS技术特性三:基于微内核架构,重塑终端设备可信安全 华为对该功能的描述为:“鸿蒙OS采用全新的微内核设计,拥有更强的安全特性和低时延等特点。微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。微内核只提供最基础的服务,比如多进程调度和多进程通信等。” 这其中的一个关键词是:微内核。这也是鸿蒙OS的关键特性之一。 在上面,我们提到了分布式操作系统与微内核的关系。一般分布式操作系统通过微内核的方式来实现。 在理解微内核之前,我们先理解下,什么是内核? 操作系统中的“内核”,内核是操作系统的核心部分,它管理着系统的各种资源,我们可以把他比作连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。 微内核的概念,是由Richard Rashid在卡内基梅隆(Carnegie-Mellon)大学开发Mach操作系统时提出的,目标是建立一个基于消息传送(message passing)机制的最小内核,以便在此基础上建造对其它操作系统的模拟层来模拟其它操作系统的特性。 微内核(Microkernel),是一种内核的设计架构,由一组尽可能将数量最小化的软件程序组成,它们负责提供、实现一个操作系统所需要的各种机制与功能。这些最基础的机制,包括了底层地址空间管理,线程管理,与行程间通信(IPC)。 而以上鸿蒙OS的这一性能的核心意思是:通过华为提供的集成开发环境,和支持多语言统一编译的方舟编译器,应用程序开发人员,可以大幅提高软件开发效率,包括缩短应用程序开发周期、语言模块调用、应用程序的自动调优等。而且,通过华为提供的开发环境和编译器开发的应用程序,可以适应于多种不同类型的终端,包括手机、PC、汽车以及其他各种智能终端。 鸿蒙OS之所以要要想尽一切办法,来给软件开发人员带来便利和效率,核心还是打造基于鸿蒙OS的IT生态。因为最终这些应用软件都要在鸿蒙OS上来运行。 3、方舟编译器 通过以上,我们看到鸿蒙OS之所以能够为软件开发者提供支持多语言统一编译的极大便利,核心还是基于方舟编译器的应用。 首先,我们解释一下,什么是编译器? 编译器,是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。 之所以需要编译器,只因为计算机是一个二级制单位,是通过0和1的组合来实现不同的操作。而人类的编程语言,从较早的汇编语言,到C、C++,再到我们现在看到的Java语言等。 说的简单通俗点:编译器就是想一个翻译官一样,将人类的逻辑语言,翻译为机器可识别可理解可执行的机器语言。翻译的快慢可以影响沟通交流的效率,同样,编译器的效率也就影响了程序运行的效率。 关于方舟编译器的发展历程 2019年4月,在华为P30系列国内发布会上,华为首次发布了方舟编译器。方舟编译器是基于GCC开发的交叉编译器套件,它包括了C、C++、Fortran的前端,也包括了这些语言的库(如libstdc++、libgcc等)。 3)方舟编译器提供高效的内存回收机制 早期C、C++需要开发人员自己管理程序,对系统内存的实用和释放,影响开发效率。Java的虚拟机模式提供了内存GC(垃圾回收)机制,但需要短暂中断应用,成为随机卡顿的根因之一。 方舟编译器,可以对内存进行随时回收,而是回收时,并不需要暂停应用,保证了系统和应用程序运行的流畅性和高效性。 我们认为,鸿蒙OS只是华为建立自身IT生态体系的冰山一角。我们在之前的文章中分析了华为产品发展的逻辑。从IT产品形态角度来讲,华为经历了从早期的硬件产品向软件产品的演进。而在软件领域的不断突破,逐步奠定了华为在IT产业的核心地位。特别是在基础软件领域,华为的默默进取,在基础软件核心环节不断取得新的成就。 目前我们看到的是鸿蒙OS和方舟编译器,都只是华为自身IT生态底层软件的一小部分。在芯片、数据库等领域,华为同样取得了一些突破性进展。我们知道,如果在一套新的IT生态中,让基础软件都能充分发挥其最高性能,需要各个基础软件不断适配和完善,最终达到完美耦合。这也是我们在PC时代看到的Wintel以及移动时代看到Android+ARM坚不可破的原因。因此,我们可以想象,华为自身开发的这些基础软件,从一开始就是高度耦合的。 2、技术变革,带来产业格局变化 硬件企业逐步向软件方向延伸,在IT领域我们经常看到这样的例子。这也是硬件企业发展到一定阶段的必然选择。而在这个演化方向上,往往只有行业的领导者才有可能取得一定成功。至于从硬件到软件转化的原因,我们的理解: 1)硬件发展到一定阶段,技术和架构逐步成熟,不同企业的硬件产品逐步趋同。对于IT产品而言,只有差异化(有价值的差异化)才能获取高额利润。趋同带来的利润降低迫使行业领导者不断加快新技术的应用,即通过软件来增加硬件的功能或者提升硬件的性能。即硬件发展到一定阶段,可能决定硬件竞争力的倒不是硬件本身,而是软件。 2)从技术角度来看,硬件产品的迭代速度较慢,迭代慢带来的结果是,客户采购新产品的动力和需求降低。通过软件的应用来加快硬件产品的迭代速度,缩短客户的采购周期。 3)在原来IT产业分工下,硬件和软件可以由不同的公司来提供,彼此发挥相对比较优势。但在现有的IT阶段下,硬件和软件的适配要求明显提高;在某些领域,硬件与软件只有做到相互定制、相互融合,其整体性能才能得到最大化释放。 1、操作系统与芯片的耦合度 微内核本身不是新鲜事物,相比安卓系统,华为鸿蒙OS将各种硬件驱动拿到核外进行处理,这在一定程度上带来了架构的灵活性。但凡事都是有利有弊,灵活性和扩展性增加的同时,对核内与核外之间的通信要求更高。未来鸿蒙OS在对全场景跨终端的适用方面,可能也需要与硬件厂商的产品不断进行适配。 3、鸿蒙OS全场景的适配,也需要不断迭代过程 核心底层基础软件的开发和应用,一方面是开发难度较大,更重要的是能否建立起以该基础软件为核心的一套完整的产业链,形成正向循环的产业生态体系。在全球IT发展历史上,我们既看到过封闭生态体系,比如苹果的产品;也看到开放生态体系,比如谷歌、微软的产品等。而对于未来的IT产业发展而言,只有不断开放,更加开放,才能与生态伙伴一起成长。 而从PC历史发展来看,目前还没有看到通过封闭系统,来持续获得不断扩大的业务规模的。对于华为而言,目前正在逐步建立自己的核心底层生态体现,从芯片、算法到操作系统、数据库,更不用说早期发展起来的服务器、存储和网络设备。而对于未来5G产业,只有不断开放、开源,才能获得人生的“开挂”。 -END- | 整理文章为传播相关技术,版权归原作者所有 | 往期好文合集 华为天才少年,竟然要我用充电宝打游戏!  砰的一声,实验室又炸鸡了  卧槽,柠檬也能做汽车??? 若觉得文章不错,,也是我们继续更新的动力。 包括但不限于: 在公众号内回复「更多资源」,即可免费获取,期待你的关注~   免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-12-25 关键词: 华为 操作系统 软件

  • 不只有鸿蒙,物联网操作系统产业意义有多大?

    本文来源:物联传媒 本文作者:飞鸟 无论承载多少民族期望,与时下一些新兴科技领域相比,芯片、操作系统始终无法成为产出周期快的领域。或许是从0到1,或许是从1到N,眼前的挑战从来没有想象中的简单。 尤其是面向物联网的操作系统,即便打开了新的赛道,就连谷歌也与我们站在了同一起跑线,甚至对方因为缺乏硬件经验反而处在落后身位,这条路走起来也是不容易的。 但我们一定得认识到,物联网操作系统其实是一条长期被低估的赛道,开局的几年更是尤为关键。本文主要简单回顾两家典型IoT OS在2020年的战略和打法,抛出为什么物联网操作系统值得去做。 鸿蒙OS的2020 海思"备胎转正",荣耀品牌独立,还有鸿蒙操作系统…… 大约从2019年5月美国商务部将华为及70家关联企业列入实体清单,用禁入与断供手段打压中国企业开始,华为所开展的各种行动,总是能获得社会大众和产业媒体的最大关注。尤其是鸿蒙OS,2019年8月快速面世最主要的原因是谷歌停止向华为手机提供GMS服务,选择自研属于无奈;但在另一层次,随着5G物联网时代的到来,极力倡导连接万物互联的智能世界的华为公司,希望借助鸿蒙强化自家在物联网的优势和资源,在长期产业占据有利位置。 2020年来,被无数或看好或质疑的声音包围,鸿蒙OS始终在逐步演进,有2大重要节点值得记录: 9月,推出HarmonyOS 2.0版本,并正式开放源代码,搭载的设备从智慧屏扩展到大屏、手表、车机三大类,发布了面向这些领域的SDK/工具/文档/模拟器; 12月,面向开发者发布HarmonyOS 2.0手机开发者版本,预计明年将推出搭载HarmonyOS 的手机。 从具体的实践可知,包括选择荣耀智慧屏作为首个搭载鸿蒙系统的智能设备,以及今年9月公开了美的、九阳、老板电器等主流家电厂商在内的首批生态合作伙伴,鸿蒙OS从智能家居切入是关键战略。 在这领域中,传统家电厂商都希望从卖产品转向卖服务,以往都是独立开发APP,增加了设备联网的功能,但在业界的观察了解中,现阶段智能设备联网率不理想,家居APP下载率、安装率不到10%,智能设备的真正使用率低于5%。这样的数据导致了厂商智能化转型的效果大多不及预期,企业能获取的仍然只是一次硬件销售收入,而不能输出持续性的连接服务。 或许最关键的原因是,忽略了消费者在选择传统单品家电时往往有较强品牌倾向性,倘若不同品牌设备需要下载不同APP,这不仅占用手机空间,以及除了下载APP,连接一次需要的步骤多,耗时长,较高的操作门槛会将大部分消费者挡在体验设备智能的门外。 另外,在开发者层面,国内大多数中部或中腰部以下的企业往往没有足够的资金或精力投入到长期的产品研发迭代中,帮助他们降低开发成本,缩短开发周期是推动产业生态繁荣的必要。 所以,鸿蒙OS强调降低开发成本、一次开发多端部署、多端适配的能力,以及在应用场景,打通各品牌间的壁垒,使用户仅需"碰一碰"的简单操作即可实现IoT设备的快速连接,降低设备联网的操作门槛,提升设备的联网率和活跃率。 2020年,根据"1+8+N"的整体战略——以手机为核心,以其他智慧终端为入口构建全场景智慧生活,华为立下了"一年内搭载HarmonyOS 的华为自研设备数量过亿,生态合作伙伴里 HarmonyOS 的装机率也过亿"的小目标。 加起来"2亿"的计划量,让人联系起在开发者圈子内拥有众多拥趸的RT-Thread,截止2019年底RT-Thread操作系统的累积装机量超过2亿台,创始人熊谱翔当时对未来做出预估:"从五到十年的周期来看,我们比较有信心的是,RT-Thread会成为主流的甚至主导型的IoT OS,装机量可以达到20亿台以上。" RT-Thread的2020 RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,2006年由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。 与2019年2亿的装机量相比,根据官网最新数据,RT-Thread处在一个良性的正向循环快速发展的阶段,装机量已经接近8亿(更早前的媒体说法称为"装机量超过6亿"),广泛应用于能源、车载、医疗、消费电子等行业,成为现国内装机量最大的开源RTOS。 2020年,RT-Thread同样动作频频: 9月, RT-Thread Smart微内核操作系统上线开源——定位于成为一个专业的面向实时应用场合的高性能混合微内核操作系统,填补传统 RTOS 和大型操作系统 Linux 之间的空白,在实时性、成本、安全性、启动速度等方面取得最佳的平衡,场景上主要针对安防、工业、军工、车载等行业领域,也适用于特定的消费电子类设备。 12月,推出主打智能穿戴的"轻应用"操作系统:湃心OS。湃心OS底层是 RT-Thread 的内核,使用的是 RT-Thread 开源的版本,提供从设计到开发和测试的完整的工具支持。中间层的模块包括 GUI 引擎、通讯组件、NFC、存储类工具,中间件比 RT-Thread 要高级。中上层是 JS 搭建的应用程序框架。最上层则是应用开发层。据悉,睿赛德预计在明年 Q1 推出湃心 Studio IDE 和 PX1 DIY 手表,Q2 启动在线应用商店,Q3 增加对移动支付、视频通话等功能的支持,最终实现穿戴设备「进一步取代手机功能」的目标。 不仅如此,根据最新数据,RT-Thread在无线SoC,MPU/AP、MCU等方面的芯片厂家支持超过了80家,原生搭载RTT OS的厂家已经超过30家。同时,RT-Thread在大学竞赛、高效开课、人才培养、联合实验室上也有持续性成果。 IoT OS的长期主义 即便有HarmonyOS、RT-Thread 、AliOS Things、中移OneOS、TecentOS tiny、Xiaomi Vela、FreeRTOS、mbedOS等丰富的玩家参与,相比于其他新兴软件技术,物联网操作系统其实不算是一个产出周期快的领域,其特点主要体现在4个方面: 1. 从技术角度,今天的物联网设备对操作系统提出新的要求:更小巧、代码更简洁、功耗更低,针对不同物联产品的需求做开发等,这导致上一代操作系统的技术优势,不一定能延续到物联网产业。 2、从应用角度,不同应用场景的设备,比如分成轻量级的和高性能的,往往需要对应不同的操作系统才能发挥最优效果,而眼下还没有一款IoT OS可以支持所有跨场景应用。 3. 操作系统不是一款简单的产品,而是一个生态体系。IoT OS玩家们不断与芯片、模组、解决方案商、应用厂商合作,体现出操作系统的难点不仅在于软件基础能力的构建,更多的是生态的发展和团结,甚至生态之中利益的协调分配要比技术带来的挑战难度更高。 4. 现阶段规模增长比盈利更加重要。IoT OS市场初起,洗牌未现,率先获取更大的市场规模,将有利于后期的持续深耕。 虽然挑战诸多,但如同安卓对于移动互联网的重要意义,物联网操作系统将拥抱的是万亿规模的物联网整体市场,是促进产业生态繁荣的必由之路。 数据来源:statista.com; IoT Analytics; IDC 数据为2024年年预测值 通信技术史的趋势表明,实现更有广度、深度的连接是人类内心深切的需求和渴望,包括人与人的连接,人与物、物与物的连接。家里的电视机、冰箱、洗衣机;小区中的电梯、门禁、停车道闸;城市中的车辆、路灯、摄像头;工厂中的人员、设备、产线……当它们都有了产生并传输数据的能力,万物互联成为现实,更大的商业空间就已经打开。 按照IDC等机构的预测,未来全球智能手机的发货数量将保持在稳定水平,表面上并未展现值得大型巨头斥资进入的市场潜力,但全球物联网设备发货数量将不断攀升,到2024年将创造万亿美元市场空间,由连接、应用、平台与服务等共同组成。 长期以来,直到移动互联网取得了空前的繁荣,直到云计算发展出了3A(亚马逊AWS、微软Azure、阿里云)那样季度营收过百亿人民币甚至百亿美元的头部玩家,享受政策驱动与机构鼓舞的物联网,虽然因为通信协议复杂,标准难以统一,需求分散多样等原因,透露出"发展不及预期"的尴尬,但近来像开放智联联盟(OLA联盟)的建立,各大巨头间开始联合共建标准的信息终于显现,势必会进一步推动整个产业的成长。 参考近期阿里云物联网操作系统AliOS Things正式通过了国家重点研发计划重点专项2020年度立项,只从一个很小的方面释放了国家对物联网操作系统的支持信号,那么即便未来道阻且长,也不必害怕这条路上独自前行。 参考资料: InfoQ,蔡芳芳,《十问华为HarmonyOS:开源一个月,开发者生态建设进度如何?》 集微网,《轻智能时代,国产开源OS平台RT-Thread 崛起》 RT-Thread官网,《RT-Thread Smart微内核操作系统重磅发布!开源!》 物联网智库,彭昭,《物联网操作系统,一条九死一生的“不归路”?》 EDN,Challey,《那个曾是华为鸿蒙的最强对手,现在怎么样了?》 ~END~ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-12-25 关键词: 物联网 操作系统

  • 线程间到底共享了哪些进程资源?

    进程和线程这两个话题是程序员绕不开的,操作系统提供的这两个抽象概念实在是太重要了。 关于进程和线程有一个极其经典的问题,那就是进程和线程的区别是什么?相信很多同学对答案似懂非懂。 记住了不一定真懂 关于这个问题有的同学可能已经“背得”滚瓜烂熟了:“进程是操作系统分配资源的单位,线程是调度的基本单位,线程之间共享进程资源”。 可是你真的理解了上面最后一句话吗?到底线程之间共享了哪些进程资源,共享资源意味着什么?共享资源这种机制是如何实现的?对此如果你没有答案的话,那么这意味着你几乎很难写出能正确工作的多线程程序,同时也意味着这篇文章就是为你准备的。 逆向思考 查理芒格经常说这样一句话:“反过来想,总是反过来想”,如果你对线程之间共享了哪些进程资源这个问题想不清楚的话那么也可以反过来思考,那就是有哪些资源是线程私有的。   线程私有资源 线程运行的本质其实就是函数的执行,函数的执行总会有一个源头,这个源头就是所谓的入口函数,CPU从入口函数开始执行从而形成一个执行流,只不过我们人为的给执行流起一个名字,这个名字就叫线程。 既然线程运行的本质就是函数的执行,那么函数执行都有哪些信息呢? 在《函数运行时在内存中是什么样子》这篇文章中我们说过,函数运行时的信息保存在栈帧中,栈帧中保存了函数的返回值、调用其它函数的参数、该函数使用的局部变量以及该函数使用的寄存器信息,如图所示,假设函数A调用函数B: 此外,CPU执行指令的信息保存在一个叫做程序计数器的寄存器中,通过这个寄存器我们就知道接下来要执行哪一条指令。由于操作系统随时可以暂停线程的运行,因此我们保存以及恢复程序计数器中的值就能知道线程是从哪里暂停的以及该从哪里继续运行了。 由于线程运行的本质就是函数运行,函数运行时信息是保存在栈帧中的,因此每个线程都有自己独立的、私有的栈区。 同时函数运行时需要额外的寄存器来保存一些信息,像部分局部变量之类,这些寄存器也是线程私有的,一个线程不可能访问到另一个线程的这类寄存器信息。 从上面的讨论中我们知道,到目前为止,所属线程的栈区、程序计数器、栈指针以及函数运行使用的寄存器是线程私有的。 以上这些信息有一个统一的名字,就是线程上下文,thread context。 我们也说过操作系统调度线程需要随时中断线程的运行并且需要线程被暂停后可以继续运行,操作系统之所以能实现这一点,依靠的就是线程上下文信息。 现在你应该知道哪些是线程私有的了吧。 除此之外,剩下的都是线程间共享资源。 那么剩下的还有什么呢?还有图中的这些。 这其实就是进程地址空间的样子,也就是说线程共享进程地址空间中除线程上下文信息中的所有内容,意思就是说线程可以直接读取这些内容。 接下来我们分别来看一下这些区域。   代码区 进程地址空间中的代码区,这里保存的是什么呢?从名字中有的同学可能已经猜到了,没错,这里保存的就是我们写的代码,更准确的是编译后的可执行机器指令。 那么这些机器指令又是从哪里来的呢?答案是从可执行文件中加载到内存的,可执行程序中的代码区就是用来初始化进程地址空间中的代码区的。 线程之间共享代码区,这就意味着程序中的任何一个函数都可以放到线程中去执行,不存在某个函数只能被特定线程执行的情况。    数据区 进程地址空间中的数据区,这里存放的就是所谓的全局变量。 什么是全局变量?所谓全局变量就是那些你定义在函数之外的变量,在C语言中就像这样: char c; // 全局变量 void func() { } 其中字符c就是全局变量,存放在进程地址空间中的数据区。 在程序员运行期间,也就是run time,数据区中的全局变量有且仅有一个实例,所有的线程都可以访问到该全局变量。 值得注意的是,在C语言中还有一类特殊的“全局变量”,那就是用static关键词修饰过的变量,就像这样: void func(){ static int a = 10; } 注意到, 虽然变量a定义在函数内部,但变量a依然具有全局变量的特性 ,也就是说变量a放在了进程地址空间的数据区域, 即使函数执行完后该变量依然存在 ,而普通的局部变量随着函数调用结束和函数栈帧一起被回收掉了,但这里的变量a不会被回收,因为其被放到了数据区。 这样的变量对每个线程来说也是可见的,也就是说每个线程都可以访问到该变量。   堆区 堆区是程序员比较熟悉的,我们在C/C++中用malloc或者new出来的数据就存放在这个区域,很显然,只要知道变量的地址,也就是指针,任何一个线程都可以访问指针指向的数据,因此堆区也是线程共享的属于进程的资源。   栈区 唉,等等!刚不是说栈区是线程私有资源吗,怎么这会儿又说起栈区了? 确实,从线程这个抽象的概念上来说,栈区是线程私有的,然而从实际的实现上看,栈区属于线程私有这一规则并没有严格遵守,这句话是什么意思? 通常来说,注意这里的用词是通常,通常来说栈区是线程私有,既然有通常就有不通常的时候。 不通常是因为不像进程地址空间之间的严格隔离,线程的栈区没有严格的隔离机制来保护,因此如果一个线程能拿到来自另一个线程栈帧上的指针,那么该线程就可以改变另一个线程的栈区,也就是说这些线程可以任意修改本属于另一个线程栈区中的变量。 这从某种程度上给了程序员极大的便利,但同时,这也会导致极其难以排查到的bug。 试想一下你的程序运行的好好的,结果某个时刻突然出问题,定位到出问题代码行后根本就排查不到原因,你当然是排查不到问题原因的,因为你的程序本来就没有任何问题,是别人的问题导致你的函数栈帧数据被写坏从而产生bug,这样的问题通常很难排查到原因,需要对整体的项目代码非常熟悉,常用的一些debug工具这时可能已经没有多大作用了。 说了这么多,那么同学可能会问,一个线程是怎样修改本属于其它线程的数据呢? 接下来我们用一个代码示例讲解一下。   修改线程私有数据 不要担心,以下代码足够简单: void thread(void* var) { int* p = (int*)var; *p = 2;}int main() {    int a = 1; pthread_t tid; pthread_create(&tid, NULL, thread, (void*)&a); return 0;} 这段代码是什么意思呢? 首先我们在主线程的栈区定义了一个局部变量,也就是 int a= 1这行代码,现在我们已经知道了,局部变量a属于主线程私有数据,但是,接下来我们创建了另外一个线程。 在新创建的这个线程中,我们将变量a的地址以参数的形式传给了新创建的线程,然后我来看一下thread函数。 在新创建的线程中,我们获取到了变量a的指针,然后将其修改为了2,也就是这行代码,我们在新创建的线程中修改了本属于主线程的私有数据。 现在你应该看明白了吧,尽管栈区是线程的私有数据,但由于栈区没有添加任何保护机制,一个线程的栈区对其它线程是可以见的,也就是说我们可以修改属于任何一个线程的栈区。 就像我们上文说得到的,这给程序员带来了极大便利的同时也带来了无尽的麻烦,试想上面这段代码,如果确实是项目需要那么这样写代码无可厚非,但如果上述新创建线程是因bug修改了属于其它线程的私有数据的话,那么产生问题就很难定位了,因为bug可能距离问题暴露的这行代码已经很远了,这样的问题通常难以排查。   动态链接库 进程地址空间中除了以上讨论的这些实际上还有其它内容,还有什么呢? 这就要从可执行程序说起了。 什么是可执行程序呢?在Windows中就是我们熟悉的exe文件,在Linux世界中就是ELF文件,这些可以被操作系统直接运行的程序就是我们所说的可执行程序。 那么可执行程序是怎么来的呢? 有的同学可能会说,废话,不就是编译器生成的吗? 实际上这个答案只答对了一半。 假设我们的项目比较简单只有几个源码文件,编译器是怎么把这几个源代码文件转换为最终的一个可执行程序呢? 原来,编译器在将可执行程序翻译成机器指令后,接下来还有一个重要的步骤,这就是链接,链接完成后生成的才是可执行程序。 完成链接这一过程的就是链接器。 其中链接器可以有两种链接方式,这就是静态链接和动态链接。 静态链接的意思是说把所有的机器指令一股脑全部打包到可执行程序中,动态链接的意思是我们不把动态链接的部分打包到可执行程序,而是在可执行程序运行起来后去内存中找动态链接的那部分代码,这就是所谓的静态链接和动态链接。 动态链接一个显而易见的好处就是可执行程序的大小会很小,就像我们在Windows下看一个exe文件可能很小,那么该exe很可能是动态链接的方式生成的。 而动态链接的部分生成的库就是我们熟悉的动态链接库,在Windows下是以DLL结尾的文件,在Linux下是以so结尾的文件。 说了这么多,这和线程共享资源有什么关系呢? 原来如果一个程序是动态链接生成的,那么其地址空间中有一部分包含的就是动态链接库,否则程序就运行不起来了,这一部分的地址空间也是被所有线程所共享的。 也就是说进程中的所有线程都可以使用动态链接库中的代码。 以上其实是关于链接这一主题的极简介绍,关于链接这一话题的详细讨论可以参考《彻底理解链接器》系列文章。   文件 最后,如果程序在运行过程中打开了一些文件,那么进程地址空间中还保存有打开的文件信息,进程打开的文件也可以被所有的线程使用,这也属于线程间的共享资源。    One More Thing:TLS 本文就这些了吗? 实际上关于线程私有数据还有一项没有详细讲解,因为再讲下去本篇就撑爆了,而且本篇已经讲解的部分足够用了,剩下的这一点仅仅作为补充,也就是选学部分,如果你对此不感兴趣的话完全可以跳过,没有问题。 关于线程私有数据还有一项技术,那就是线程局部存储,Thread Local Storage,TLS。 这是什么意思呢? 其实从名字上也可以看出,所谓线程局部存储,是指存放在该区域中的变量有两个含义: 存放在该区域中的变量是全局变量,所有线程都可以访问 虽然看上去所有线程访问的都是同一个变量,但该全局变量独属于一个线程,一个线程对此变量的修改对其他线程不可见。 说了这么多还是没懂有没有?没关系,接下来看完这两段代码还不懂你来打我。 我们先来看第一段代码,不用担心,这段代码非常非常的简单: int a = 1; // 全局变量void print_a() { cout

    时间:2020-12-24 关键词: 操作系统 软件

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站