• 浅谈鸿蒙操作系统的微内核,来看看?

    浅谈鸿蒙操作系统的微内核,来看看?

    华为在此前的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 —— 微内核。华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可获取用户所有权限的做法,在安全性上大大提升。 什么是微内核呢? 微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和进程间通信等。 微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分 微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为‘胖微内核’,它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的内核,可以说,蒸蒸日上。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS. 采用微内核设计的操作系统 微内核并非一个新的概念,它已经存在很长的历史,下列的操作系统都是基于微内核结构设计的: AⅨ BeOS L4微内核系列 Mach,用于GNU Hurd和Mac OS X Minix MorphOS QNX RadiOS VSTa RT-Thread 知乎上有人对微内核下了一个结论: Micro-kernel 已经失败。在商业级操作系统中(包括可以用于 mission critical 的 open source 操作系统),除了 L4 还在苦苦留有少量份额,没有任何 micro-kernel 的市场。 第一代 micro-kernel 是以一个错误的方式解决了一个错误的问题。而第二代 micro-kernel 不过是以正确的方式解决了错误的问题。 Linux 究竟是单内核的还是微内核的 Linux 是一个单内核结构,同时又吸收了微内核的优点:模块化设计,支持动态装载内核模块。Linux 还避免了微内核设计上的缺陷,让一切都运行在内核态,直接调用函数,无需消息传递。 早在 1992 年,Linus 曾经与 Tanenbaum 进行一场关于操作系统内核选择的著名争论。Tanenbaum 认为,以微内核架构设计的操作系统,在理论上,比宏内核架构更加优越,主张Linux应该以微内核架构来进行重新设计。但是 Linus 以开发实务上的观点展开反击,陈述 Linux 选择宏内核架构进行开发的理由,并比较Minix与Linux的性能差异。你可以通过维基百科了解此次争论的完整细节。 Tanenbaum —— 著名的技术作家、教育家和研究者,IEEE高级会员、ACM高级会员、荷兰皇家艺术和科学院院士、1994年ACM Karl V. Karlstrom杰出教育奖、1997年ACM计算机科学教育杰出贡献奖、2002年Texty卓越教材奖、第10届ACM操作系统原理研讨会杰出论文奖、被列入“Who‘s Who in the World”人物目录。 下图是宏内核(左)和微内核(右)两种结构的简单架构图: 当然对最终用户而言,我们并不在意采用何种方案。从现实情况来看,微内核似乎还有很长的路要走。 华为鸿蒙OS就快要应用到终端了,我们非常期待鸿蒙系统早日能给最终用户提供服务。

    时间:2020-10-23 关键词: 鸿蒙 华为 鸿蒙os

  • Linux技术中Cgroup的原理和实践,你知道吗?

    Linux技术中Cgroup的原理和实践,你知道吗?

    这里主要简介什么是Cgroup,使用场景以及其原理和实践。 一、什么是Cgroup,使用场景? 容器本质上是进程,既然是进程就会消耗掉系统资源,比如:CPU、内存、磁盘、网络带宽等,如果不加以限制,容器在某些情况下就会无限制地吃掉宿主机的系统资源,显然这不是我们期望发生的,另外当我们的环境中运行了很多容器,且系统资源一定的情况下,我们有优先保证主要容器应用的需求,如何既能够解决此问题同时又能够满足我们的需求呢?答案就是:Linux Cgroup(全程Linux Control Group),在前面的文章中,介绍了namespace为容器这类进程提供了隔离,而Cgroup可以为容器这类进程提供资源使用上限,两者黄金搭档,共同为容器应用保驾护航。 二、Cgroup的原理和实践 CPU的周期控制 Cgroup可以为容器进程使用的CPU、内存、磁盘、网络带宽资源进行限制,具体是如何实现的呢?接下来我们一起来实操下,在 Linux 中,Cgroups 给用户暴露出来的操作接口是文件系统,即它以文件和目录的方式组织在操作系统的 /sys/fs/cgroup 这个路径下,我们先去此目录查看下 [root@k8s-master /]# cd sys/fs/cgroup/ [root@k8s-master cgroup]# ls blkio cpuacct cpuset freezer memory net_cls,net_prio perf_event rdma cpu cpu,cpuacct devices hugetlb net_cls net_prio pids systemd 可以看到在cgroup的这个目录下存在很多子目录,这些都是cgroup可以限制地资源种类,我们在进一步进入到CPU的子目录查看下,里面有限制资源种类的详细的限制地指标,比如 1、cpu.cfs_period_us:指定容器对CPU的使用多长时间重新做一次分配 2、cpu.cfs_quota_us:指在cpu.cfs_period_us周期内给分配多少时间给容器 这两个指标需要一起配合使用来实现CPU的周期控制,我们先手动模拟容器创建的时候,如何完成利用cgroup来实现资源限制,以CPU周期控制为例子,先在/sys/fs/cgroup/cpu目录下创建1个container_ test的目录,如下所示我已经创建好(红色字体)。 [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) [root@k8s-master cgroup]# cd cpu [root@k8s-master cpu]# ls cgroup.clone_children cpuacct.usage_all cpu.cfs_period_us docker cgroup.procs cpuacct.usage_percpu cpu.cfs_quota_us kubepods cgroup.sane_behavior cpuacct.usage_percpu_sys cpu.rt_period_us notify_on_release container_test cpuacct.usage_percpu_user cpu.rt_runtime_us release_agent cpuacct.stat cpuacct.usage_sys cpu.shares system.slice cpuacct.usage cpuacct.usage_user cpu.stat tasks [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) 然后进入到此目录下,ls查看下,这里出现了一个神奇的形象,此目录下自动生成了很多CPU子系统控制的指标,这些指标我们并未进行新增,也就是说在/sys/fs/cgroup/cpu目录下会给新建的目默认配置CPU子系统资源限制的指标 [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) [root@k8s-master cpu]# cd container_test/ [root@k8s-master container_test]# ls cgroup.clone_children cpuacct.usage_percpu cpu.cfs_period_us cpu.stat cgroup.procs cpuacct.usage_percpu_sys cpu.cfs_quota_us notify_on_release cpuacct.stat cpuacct.usage_percpu_user cpu.rt_period_us tasks cpuacct.usage cpuacct.usage_sys cpu.rt_runtime_us cpuacct.usage_all cpuacct.usage_user cpu.shares [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) 这些指标如何作用呢?为了体现资源的使用情况,我们先写一个程序来模拟来吃掉系统资源的情况,然后再来查看指标 [root@k8s-master sh]# cat while.sh #!/bin/bash while : ; do : ; done & [root@k8s-master sh]# sh while.sh 通过如上程序,写了一个while无限循环的shell脚本,默认情况下,这个程序之后的进程会占据掉系统所剩集群的所有资源,可通过top命令查看下 [root@k8s-master sh]# ps -ef |grep while root 14975 1 97 20:29 pts/1 00:02:48 sh while.sh 如上图所示,while循环的进程占据掉了96.3%的CPU资源,在实际的应用中若进程这样无限制的使用资源,将会给操作系统带来很大的负担,那么如何控制进程资源的使用呢?回到我们之前创建在container_test目录下 [root@k8s-master container_test]# cat cpu.cfs_quota_us -1 [root@k8s-master container_test]# cat cpu.cfs_period_us 100000 默认创建的目录下cfs_quota_us 若为-1,则表示还未启用quota,即还未实行资源限制,cfs_period_us默认为100000us=100ms=0.1s(秒),接下来我们向cpu.cfs_quota_us 输入30ms=30000us,cfs_period_us值维持不变还是为100ms,在前面关于这2个概念有介绍,cpu.cfs_quota_us表示的是cfs_period_us的周期内,分配30/100的时间,即30%,接下来验证下 [root@k8s-master container_test]# echo 30000 》 /sys/fs/cgroup/cpu/container_test/cpu.cfs_quota_us [root@k8s-master container_test]# cat cpu.cfs_quota_us 30000 设置已完成,但是此时还不会立即生效,还需要将进程ID输入到资源限制地task里 [root@k8s-master container_test]# echo 14975 》 /sys/fs/cgroup/cpu/container_test/tasks 接下来我们在通过top查看下资源使用情况,如下图所示,可以看到CPU的资源使用上限由原来的96.3%已经降到29.9%了,表明此while进程的CPU的资源使用上限已经设置成功。 以上整个过程为手动设置模拟容器创建的过程中CPU份额控制的过程,实际上在容器创建的过程中,并不需要上面这般步骤,我们只需要在run容器的时候指定指标参数即可,如下所示 [root@k8s-master container_test]# docker run -it -d --cpu-period=100000 --cpu-quota=30000 nginx /bin/bash 上面的命令是后台守护进程的方式运行了1个nginx的容器,且指定CPU的每隔100000us=100ms做一次分配,且每次分配给容器的时间为30ms,可以看到这个分配和前面手动分配是一致的,值得注意的是这里需要加上-d来创建容器,若不加上的话会进入到终端交互界面,一旦提出终端交互界面后,容器这个进程也将会退出,而我们希望容器进程保持后台运行,因此需要加上-d,容器运行成功后,将会在docker目录下新建一个以容器ID命名的目录,这个目录和前面手动创建的目录以上,系统会默认配置资源限制的参数,我们可以如下看下: [root@k8s-master container_test]# docker run -it -d --cpu-period=100000 --cpu-quota=30000 nginx /bin/bash 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) [root@k8s-master docker]# ls 01a0fd62d2110e54b0c3635b2897e7c18e6b78f026fa57b4214d7662dd3b38ba cpuacct.usage_sys 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a cpuacct.usage_user cgroup.clone_children cpu.cfs_period_us cgroup.procs cpu.cfs_quota_us cpuacct.stat cpu.rt_period_us cpuacct.usage cpu.rt_runtime_us cpuacct.usage_all cpu.shares cpuacct.usage_percpu cpu.stat cpuacct.usage_percpu_sys notify_on_release cpuacct.usage_percpu_user tasks [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); “复制代码”) 如上红色部分为docker目录下依据容器的名称默认创建的目录,我们进入到这个目录,然后输出下之前我们在创建的时候指定的cpu.cfs_quota_us和cfs_period_us值 [root@k8s-master 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a]# cat cpu.cfs_period_us 100000 [root@k8s-master 16f51f6780685be9c83b1684515005f30aed91916fdd6573b28eaf56be201e4a]# cat cpu.cfs_quota_us 30000 可以看到我们之前设置的值已经生效了,也就是说这个nginx的容器最多可以支持使用到30%左右的CPU带宽。 相类似的我们可以对容器获取CPU的资源的优先级进行设置,通过--cpu-share这个参数,其指定的值并非是给容器具体的份额,其实是个权重,在需要对容器资源进行限制时才会生效,权重大的,可以优先得到CPU的资源;另外还可以对使用的核数进行限制,针对多核的服务器,可以控制容器运行限定使用哪些CPU内核和内存节点,即使用-cpuset-cpus和-cpuset-mens参数,比如:我们可以指定创建的容器只能用0、1、2三核。 三、总结 本文以CPU中周期控制限制某进程的CPU资源使用为例子,介绍了其手动设置参数和容器自动设置参数,每新建1个容器,在/sys/fs/cgroup/cpu/docker目录下都会自动以容器的ID为名字创建1个目录,且在此目录下支持对CPU、内存、网络带宽、磁盘的资源使用进行限制,而其限制地处理与CPU的周期控制是类似的,这里就未做过多介绍

    时间:2020-10-23 关键词: Linux linux技术 cgroup

  • 鸿蒙系统为什么要基于linux来开发研发

    鸿蒙系统为什么要基于linux来开发研发

    华为的鸿蒙系统终于来了,而且是基于linux系统开发的,但不知道为什么,一说起某系统是基于linux而来,很多网友就瞧不起,并且会觉得这不算国产系统,就算是linux。 但其实我们真没这么看,源自于linux其实很正常的,比如安卓也是源自linux,iOS也是源自于unix,而近日大家津津乐道的华为自研操作系统鸿蒙也是源自于linux。 但你能说,安卓也是linux,不算是谷歌拥有自主知识产权的产品么?你能说华为的自研系统,也不算是国产系统,是linux么? 可见,源自于linux并不是其是不是自主操作系统,或者说算不算国产系统的判断标准。甚至可以说以后的大部分的操作系统,均会是以linux为基础的。 至于为什么华为要基于linux来开发自研操作系统,其实很容易理解,一是可以很好的兼容安卓的APP,毕竟安卓也是基于linux来开发的,这样在生态的问题解决了很大一部分了。 另外,鸿蒙是一个集电脑、手机、汽车等设备于一体的大一统的系统,目前linux在电脑领域的应用生态也不错的,基于linux来开发,在电脑领域的应用生态,也解决了很大一部分了。 毕竟对于一个全新的系统来讲,生态才是成功的关键因素,一旦生态已经有现成的了,自然就容易成功了。 另外linux是开源的,不存在授权问题,另外大家对linux的理解已经很深了,这样基于linux来开发也相对容易些。 当然,基于linux并不意外着就容易了,安卓开发容易么?谷歌这么多人,开发了这么多年,才做到现在的成就。 华为的鸿蒙也是如此,别看是基于linux开发的,但难度一样非常大,并不是谁都可以开发出来的。 现在鸿蒙出来了,你对他还满意吗?

    时间:2020-10-23 关键词: Linux 鸿蒙os

  • 嵌入式技术中C语言的诞生及其C++40年的相爱相杀

    嵌入式技术中C语言的诞生及其C++40年的相爱相杀

    70年代初,贝尔实验室创建了C语言,它是开发UNIX的副产品。很快C就成为了最受欢迎的编程语言之一。但是对于BjarneStroustrup来说,C的表达能力还不够。于是,他在1983年的博士论文中扩展了C语言。 于是,支持类的C语言诞生了。 当时,BjarneStroustrup明白编程语言有许多组成部分,除了语言本身,还有编译器、链接器和各种库。提供熟悉的工具有助于语言被广泛接受。在这种历史背景下,在C++语言的基础上开发C++也是有道理的。 40年后,C和C++都在行业中得到了广泛使用。但是,互联网上的C开发人员认为C++是有史以来最糟糕的人类发明,而许多C++开发人员则希望有朝一日C语言灰飞烟灭。 1、究竟发生了什么事? 从表面上看,C和C++都可以满足相同的用例:高性能、确定性、原生但可移植的代码,可用于最广泛的硬件和应用程序。 但是,更让C自豪的是它是一门低级语言,更接近汇编。 而C++,从诞生第一天开始就充斥了各种奇怪的东西。例如析构函数这个黑魔法。自作主张的编译器。尽管很早C++就有了类型推断功能,但是80年代中期的开发人员还无法接受这个概念,因此BjarneStroustrup不得不删除了auto,直到C++11又重新添加回来。 从那以后,C++就不断加入各种工具来实现抽象。很难说C++是一种低级语言还是高级语言。从设计目的上来说,C++两者都是。但是在不牺牲性能的情况下,建立高级抽象是很困难的。于是C++引入了各种工具来实现constexpr、move语义、模板和不断增长的标准库。 从根本上讲,我认为C信任开发人员,而C++信任编译器。这是一个巨大的差异,单凭“两者的原生类型相同”、“while循环的语法相同”等简单一致是无法掩盖的。 C++开发人员将有这些问题归咎于C,而C开发人员则认为C++过于疯狂。我觉得站在C的角度看C++,这种说法也很正确。作为C的超集,C++确实很疯狂。一个经验丰富的C开发人员面对C++可能没有熟悉的感觉。C++不是C,这就足以引发互联网上的激烈争论。 然而,虽然我不喜欢C,但也没有权利取笑C。尽管我有一定的C++经验,但用C编写过的代码少之又少,而且肯定是很糟糕的代码。好的编程语言包括良好的实践、模式、惯用写法,这些都需要多年的学习。如果你尝试用编写C++的方式写C的代码,或者用C的方式编写C++的代码,那感觉一定很糟糕。即便你懂C,也不一定会C++,反之亦然,懂C++也不一定会用C编程。 那么,我们是否应该停止说C/C++,为这两个不幸的命名而感到悲哀吗?也不至于。 尽管C++的设计理念与C不一样,但是C++仍然是C的超集。也就是说,你可以在C++转换单元中包含C的头文件,这样依然可以通过编译。而这正是造成混乱的地方。 C++不是C的扩展,它是由不同的委员会、不同的人独立设计的标准。从逻辑上讲,喜欢C++理念的人会参与C++社区以及C++标准化的过程,而其他人可能会尝试参与C。无论是C的委员会还是C++委员会,他们表达意图和方向的方式只能通过各自的最终产品:标准;而标准是众多投票的成果。 然而,编译器很难知道它正在处理的是C头文件还是C++头文件。 extern“C”标记并没有得到广泛一致的使用,而且它只能影响修饰,而不会影响语法或语义。头文件仅对预处理器有影响,对于C++编译器而言,所有内容都是C++转换单元,因此也就是C++。然而,人们依然会在C++中包含C头文件,并期望它“正常工作”,而大多数时候也确实可以正常工作。 那么,我们不禁想问: 2、由不同地方的、不同的人开发的C++代码如何保持C的兼容性? 恐怕很难。 最近,一位同事让我想起了康威定律: "设计系统的架构受制于产生这些设计的组织的沟通结构。" 根据这个逻辑,如果两个委员不互相合作,则他们创造的语言也不会互通。 C++维护了一个与C及其标准库的不兼容列表。然而该列表似乎并未反映出许多C11和C18中添加、但在C++中不合法的功能。更清晰的介绍请参见这个维基本科页面(https://en.wikipedia.org/wiki/CompaTIbility_of_C_and_C%2B%2B)。 然而,仅仅列出两种语言之间的不兼容性,并不足以衡量二者的不兼容性。 那些存在于C++标准库中但主要声明来自C的函数,很难声明成constexpr,更难声明成noexcept。C的兼容性会导致性能成本,而C函数是优化的障碍。 许多C的结构在C++中都是有效的,但无法通过代码审查(如NULL、longjmp、malloc、构造/析构函数、free、C风格的类型强制转换等)。 在C看来,这些惯用写法可能问题不大,但在C++中可不行。C++具有更强大的类型系统,不幸的是,C的惯用写法在这个类型系统中凿了一个洞,因此实现C的兼容性需要在安全性方面付出代价。 别误会,C++仍然关心C的兼容性,某种程度上。然而,有趣的是C也很关心C++,某种程度上。实话实说,C对C++的关心程度可能高于C++对C的关心。看来,每个委员会还是在乎另一个委员会的工作。但我们很不情愿。 C++知道,许多基础库都是用C编写的,不仅包括libc,而且还有zip、png、curl、openssl(!)以及许多其他库,无数的C++项目都在使用这些库。C++不能破坏这些兼容性。 但是最近,尤其是在过去的十年中,C++的规模已远远超过C。C++拥有更多的用户,并且社区更加活跃。也许这就是为什么如今C++委员会的规模是C委员会的10倍以上。 C++是不可忽视的力量,因此C委员会必须考虑不破坏C++兼容性。如果非要说一个标准追随另一个标准对话,那么如今C++是领头者,而C是追随者。 现在,C++处于稳定的三年周期中,无论是风雨还是烈日,抑或是致命的新疫情。而C每十年左右才发布一次主版本。不过这也很合理,因为作为一种较低级的语言,C不需要发展得那么快。 C语言的环境也与C++完全不同。C多用于平台,更多地用于编译器。每个人(甚至他们的狗狗)都会编写C编译器,因为该语言的特性集很小,所以任何人都可以编写C编译器。而C++委员会真正考虑的实现只有四种,而且在每次会议上这四种实现都会出现。所以,C语言中的许多功能都是与实现有关的,或者是可选支持的,这样各种编译器不需要做太多努力就可以声称自己遵从了标准,据说这样委员会的人会比较高兴。 如今,C++更加侧重于可移植性,而不是实现的自由。这又是一个理念的不同。 3、因此,你的提议破坏了C的兼容性 我提议的P2178的一部分理论上会影响与C的兼容性。这样的话所有方案都不会令人满意。 有人可能会说,你可以先向C委员会提议你的新特性。这意味着需要召开更多会议。C会议的严格出席规则可能导致你无法参加会议,这就将那些不愿意花上数千美元成为ISO会员的个人拒之门外。这是因为C委员会必须遵守ISO的规则。 而且,如果新的标准刚刚发布,那么可能还需要等待十年时间,你的提案才会被考虑。最重要的是,如果C委员不理解或不在乎你正在努力解决的问题,那么你的提案就石沉大海了。或者他们可能没有精力来处理这个问题。而且,可能你也没有精力来处理C。毕竟,你的本意是要改进C++。实际上,哪怕会议上无人反对你的提议(尽管不太可能发生),如果有人让你先去跟C委员会的人讨论,就等于给你的提议判了死刑。 另一种可能的情况是,C委员会接受与C++中存在的版本略有不同的版本。true只能做一个宏来实现。char16_t需要通过typedef。char32_t不一定是UTF-32。staTIc_assert对应的是_StaTIc_assert。 这类的情况还有很多,我们应该责备C吗?可能不应该。他们的委员会只是在尽力将C语言做好。反之亦然。在C++20中,指定的初始化器就受到了C的启发,但采取了略微不同的规则,因为如果完全一样的话就不符合C++的初始化规则。 对于这个问题,我也有责任。C有VLA。如果当时我在,我一定会反对在标准C++中采用它,因为它导致了太多安全性问题。我也会坚决反对将_Generic添加到C++中的提议。也许_Generic的目的是减少由于缺乏模板或缺乏重载而导致的问题,但是C++有这两个功能,从我的角度来看,_Generic并不适合我想象中的C++。 这两个委员会似乎对于对方语言的关心程度也不一样。有时我们会遇到兼容性非常好的情况(std::complex),有时完全不在乎兼容性(静态数组参数)。 这没有办法。别忘了每个委员会都是一群人,他们在不同的时间、不同的地点投票,而试图控制结果会导致投票毫无意义。将这些人放在同一个房间也不现实。ISO可能会反对,参与者的不平衡会导致C的人处于极大的劣势。 4、C的兼容性不重要 如果你是C开发人员,那么肯定会把C视为一种简洁的编程语言。但对于我们其他人而言,C的印象完全不同。 C是通用的、跨语言的胶水,可以将一切紧密地结合在一起。 对于C++用户而言,C就是他们的API。从这一点来看,C的价值在于其简单性。请记住,C++关心的那一部分C是出现在接口(头文件)中的C。我们关心的是声明,而不是定义。C++需要调用C库中的函数(Python、Fortran、Rust、D、Java等语言也一样,在所有情况下都可以在接口边界使用C)。 因此,C是一种接口定义语言。向C添加的内容越多,定义接口就越困难。这些接口随着时间的推移保持稳定的可能性较小。 那么,C++中缺少是否重要?可能并不重要,因为这不太可能出现在公共接口中。 5、如今大家都在谈论C 过去,C的兼容性是C++的一大卖点。但如今,每个人(甚至他们的金鱼)都懂C。Rust可以调用C函数,Python、Java、一切语言都可以!甚至怪异的Javascript都可以在WebAssemby中调用C函数。 但是在这些语言中,接口是显式的。该语言提供的工具可以公开特定的C声明。当然,这比较麻烦。但这可以让接口非常非常清晰。而且还是有界的。例如,在rust中,调用C函数并不会迫使Rust牺牲某些设计来容纳C子集。实际上C是被包含进去的。 modconfinment{usestd::os::raw::{c_char};extern"C"{pubfnputs(txt:*constc_char);}}pubfnmain(){unsafe{confinment::puts(std::ffi::CString::new("Hello,world!").expect("failed!").as_ptr());}} 6、编译器资源管理器 除非C的ABI发生变化,否则这段代码可以一直正常运行。而且Rust/C的边界非常清晰、不言自明。 因此,C++可能是为C兼容性付出最多的语言。 更糟糕的是,打开任何C的头文件,你很快就会发现一堆#ifdef__cplusplus。没错,C++的兼容性往往需要大量C开发人员的工作。兼容性一直是海市蜃楼。很多人都知道我的这条推文: 7、我们该何去何从? 我认为两个委员会都在尝试更多地沟通。他们计划明年在波特兰召开会议(尽管这个计划可能会变)。沟通是一件好事。 但是鸡同鸭讲的沟通效果会非常有限。两种语言的设计支柱可能都不协调。我会努力建议提供一个模板。但是首先我得吐槽C语言没有模块、没有命名空间,以及整个宏是什么玩意儿。 也许可以将C++能接受的C子集约束在C99上?也许两种语言都需要找到一个共同的子集并独立地发展?也许externC需要影响解析。如果C++经历了多个时代,那么C可能是其中之一。 也许我们需要接受将C作为C++的子集,但唯一的方法是将WG14融入到WG21中。 现状可能不会改变。C++可能永远也无法从自己的起源中解脱,而C可能永远都要与那些顶着C语言之名的肮脏特性战斗。

    时间:2020-10-23 关键词: C语言 嵌入式技术

  • 嵌入式系统简析及相关晶振推荐

    嵌入式系统简析及相关晶振推荐

    嵌入式系统是现在非常火爆的东西,嵌入式系统,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。 以应用为中心,以计算机技术为基础,可以根据用户的需求,例如功能,可靠性,成本,体积,功耗等方面的专用计算机系统。嵌入系统设计到很多领域:例如交通管理,信息家电,家庭智能管理系统,汽车电子,医疗仪器(远程医疗),电子商务,环境监测,机器人等。只有细分产品规格才能满足系统要求。 随着微电子技术的发展,嵌入式系统的宏观方面有 · 经济型:性能越来越高,而价格越来越便宜; · 小型化:嵌入式系统模块化发展可以实现小型化,并缩短设计周期,减少互连导线的寄生参数等; · 可靠性:一般环境或者苛刻条件下使用,在快速移动的交通工具上也可以进行高速的无线数据通信; · 高速度:系统可以快速的完成数据传输; · 智能型:让人们使用起来更舒服,方便; 嵌入式系统包括:专用计算机系统,交通信息监测,家庭水电气安保智能化管理,环保监控网络化管理,液晶终端,数据采集设备,网络防火墙,安防监控系统等。 晶振推荐: 1. 体积小型化 SMD 2.0x1.6mm尺寸: CMOS输出时钟振荡器(KS20/KS20W); SMD 2.5x2.0mm尺寸: · LVDS输出时钟振荡器 (KD256D); · HCSL输出时钟振荡器 (KD256C); · CMOS输出压控振荡器(KV25); · Clipped Sine输出(压控)温补振荡器(KT25CS). 2. 高稳定性, 低相噪抖动。 晶振的短期频率稳定度取决于输出信号的信噪比。从频域角度,相应的参数是相位噪声Phase Noise;从时域角度,相应的参数是抖动Jitter。KOAN推出低相噪抖动(J)的特种晶振可满足对高稳定的需求。 3. 低功耗 低功耗(P)的特种晶振。 · 1.2V低电压MHz晶体振荡器, 尺寸可选2.5x2.0mm, 3.2x2.5mm, 5.0x3.2mm, 7.0x5.0mm,型号分别为KS25/KS32/KS50/KS70; · 1.5μA低电流温补振荡器(+3.3V电压,32.768KHz,SMD 3.2x2.5mm), 型号为KT3225; · 100μA最大KHz晶体振荡器, 尺寸可选3.2x2.5mm, 5.0x3.2mm, 7.0x5.0mm, 型号分别为KS3225/KS5032/KS7050. 4. 差分输出 (P)ECL是高速领域内一个非常重要的逻辑电路。它电路速度快,驱动能力小,噪声小,高频。但是功耗大,只能特定电压驱动。广泛应用于高速计算机,数字通信系统,雷达,测量仪器,频率合成器等。LVDS为低电压差分信号; HCSL为高速电流驱动逻辑。 大家在选择晶振的时候,可以参照以上哦

    时间:2020-10-23 关键词: 嵌入式 嵌入式系统 晶振

  • 浅谈嵌入式以及嵌入式系统的入门和提高

    浅谈嵌入式以及嵌入式系统的入门和提高

    本文主要做科普,给小白看,因为首先,嵌入式有不少组合名词,例如嵌入式系统,嵌入式软件,Linux嵌入式,Android嵌入式,嵌入式Web,等等。 通常对嵌入式的定义其实是对“嵌入式系统”的定义。 网上对嵌入式系统的中文定义实在是不好理解,比较官方的中文定义是: 嵌入式系统是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 当然了,这段定义是正确的,不过就是有点学究味,不够形象,不够“接地气”。 那么如何来给嵌入式系统一个接地气的定义呢? 我可以先列举目前用到嵌入式系统的IT领域: Android嵌入式开发。 Linux嵌入式开发。 智能手机,平板,智能手表。 可穿戴设备,例如Google眼镜,小米手环。 微软的Xbox和Kinect。 无人机。 VR头盔。 无线路由器。 还有很多~ 嵌入式正在渗透到我们生活的方方面面,而且会越来越多地被使用。 但是,例如Android,iOS纯app开发的话一般就不能算是嵌入式了吧,只能算软件开发。未来,也许我们可以有一身轻便的可穿戴设备,衣食住行都用得到。甚至未来可以穿一身轻薄的“飞行衣”,想去哪都行。 嵌入式编程,最近几年越来越火,虽然入门门槛比较高,但是学好了薪资水平不错哦。例如Linux嵌入式的高级工程师。而且如果你能啃下嵌入式这个“硬柿子”,学了很多方面的知识,那么其他一些编程领域,也许就能比较轻松地掌握了。就好比你如果熟练掌握了C++语言和C++,那么其他一些编程语言一般都可以轻松驾驭了。 在嵌入式编程中还有一个交叉编译的概念:什么是交叉编译呢? 简单来说,就是“在一个平台上生成另一个平台上的可执行代码”。 普通的软件开发过程中,如果是编译型的编程语言,例如C语言,C++,Java,等等,你想要运行你写的程序,需要用编译器将代码编译成可执行程序(当然,中间还有几个步骤,比如汇编,链接,在此就不提了)。 但是嵌入式系统的计算能力有限,内存有限,储存空间有限,因此无法完成比较需要资源和速度的编译过程。 比如在Android嵌入式开发中,你不可能在Android手机里直接让它编译自己的系统或软件吧。 因此,我们会先在普通电脑(比Android手机的计算能力更强,内存更大,储存空间更大)里将程序编译(需要不同于我们编译普通软件的编译器,称为“交叉编译器/软件”,比较常见的有arm-linux-gcc一族)成适配Android手机的特定可执行文件(一般会打包成镜像文件),然后通过专门的工具“烧录”到Android手机里。 入门和提高嵌入式 1、嵌入式软件的话不一定需要学很多硬件知识的(有的话当然是多多益善)。会用一些烧写工具,编译,调试工具(比如JTAG)就可以了,到时候要用了现学。开发工具也没什么固定的,一般也不一定要IDE,用文本编辑器就可以写代码(比如Vim,Emacs,nano,Sublime)了。编译一般用GCC的变种。 2、嵌入式一般要学C语言 3、C++不一定会用到,但也可以学一下。 4、Linux是要学习的。因为交叉编译经常要用到Linux系统,即使在Windows下也要用到Cygwin这类的。 5、最好花点时间学一下汇编,对理解计算机的原理,特别是内存,指针,二进制,十六进制都有很好帮助,不需要学很深。 6、嵌入式目前主流的处理器架构是ARM(以前是ARM7,ARM9,ARM11,现在都Cortex系列了)。手机,平板,大部分开发板都是ARM的天下。所以需要学一下ARM架构,有个了解。一开始对ARM不需要太深入,视以后情况而定。ARM的集成开发环境有ADS(ARMDeveloperSuite),是ARM处理器下主要的开发工具。 7、可以去买一块便宜的开发板来开始学习。

    时间:2020-10-23 关键词: 嵌入式 嵌入式系统

  • 八个最主流的基于Debian的Linux发行版,你知道吗?

    八个最主流的基于Debian的Linux发行版,你知道吗?

    众所周知,Debian是最受欢迎的发行版之一,尤其是在桌面发烧友和专业人士中。这里主要介绍了一些最流行和使用最广泛的基于Debian的Linux发行版。 1. MX Linux 当前在发行版中排名第一的是MX Linux,它是一个简单而稳定的桌面操作系统,结合了优雅和出色的性能。MX Linux最初是随XFCE桌面一起提供的,但后来扩展到包括分别于2020年8月和2020年9月提供的KDE(MX 19.2 KDE)Linux和MX Linux Fluxbox(MX-Fluxbox 19.2)环境。 MX Linux 19.2 KDE提供64位版本,具有多种MX Linux工具、AntiX的快照技术以及AntiX live USB系统。此外,KDE版本还提供了高级硬件支持(AHS),其主要重点是支持最新的硬件,如AMD GPU和最新的Intel图形驱动程序。 此外,您还将获得最新的现成的日常应用程序,如LibreOffice 6.1.5、Firefox79、Thunderbird 68.11和VLC 3.0.11等等。 作为一个中等规模的发行版,MX-Linux由于其低资源消耗,同时为用户提供了一个流畅的用户界面和用户友好的体验,因此被强烈推荐为老化PC的发行版。你可以从1GB RAM,10GB硬盘,Intel或AMD处理器开始。 相关:https://www.linuxmi.com/mx-linux-19-2-kde.html 2. Ubuntu Ubuntu可以说是最广泛使用的免费和开源Linux发行版之一,尤其是对桌面发烧友来说,Ubuntu不需要介绍。自从Canonical在2004年首次发布Ubuntu以来,Ubuntu在扩展其对服务器、物联网设备和云技术的支持方面取得了巨大的飞跃。 最新版本,Ubuntu 20.04 LTS,被称为Focal Fossa,是其最新的长期发行版(LTS),并将在2025年4月之前得到支持。Ubuntu 20.04发布了一个全新的Yaru主题,它有3个版本(暗、亮和标准),GNOME 3.36有新外观的光亮图标,改进的ZFS支持,用于增强显示的分步缩放,以及多种默认应用程序,如Firefox、Thunderbird和LibreOffice套件。 最值得注意的是Ubuntu对传统APT包管理器的推广。snap是一个软件包,它附带了按预期运行所需的所有库和依赖项。虽然snaps并不是要完全取代deb,但它已经通过软件的可用性解决了这个问题。 与Debian包需要依赖外部资源不同,snap包预先打包了所有依赖项,并且可以安装在每个支持snap的Ubuntu发行版(Ubuntu 16.04及后续版本)上。 相关阅读:https://www.linuxmi.com/ubuntu-20-04-1-lts-focal-fossa.html 3. AntiX AntiX是一个相对轻量级,适用于低规格或旧的PC机的发行版。无论您是Linux初学者还是经验丰富的用户,AntiX都致力于提供一个轻巧、灵活、功能齐全的操作系统。 你可以从一台有512 BM RAM和至少5GB硬盘空间的旧PC开始。此外,您可以将其作为“live”系统运行在闪存驱动器上,作为救援光盘。 4. PureOS PureOS是一个现代的、功能齐全的发行版,它以自己是一个尊重隐私、安全和用户友好的操作系统而自豪。默认情况下,它附带一个GNOME环境和一个基于隐私的FireFox,称为PureBrowser。默认的搜索引擎是DuckduckGo,它允许用户掌握他们的在线隐私。 PureOS为我们提供了一种简单的方法来搜索所需的应用程序,安装它们并使用GNOME软件进行更新。PureOS开发者改进了这个软件中心,只提供自由软件(没有任何专有软件)。 下载地址:https://pureos.net/download.html 5. Kali Linux 由进攻性安全维护和资助,Kali Linux是一个Debian衍生版,旨在渗透测试和数字取证。它预先构建了用于渗透测试的多种工具,如Metasploit框架、Nmap、Wireshark、Maltego、Ettercap、Burp套件等。 由于其普及渗透测试,Kali有它自己的著名认证- Kali Linux认证专业课程。此外,开发人员提供了一个 面向Raspberry Pi 的ARM 映像,从而使渗透测试爱好者进行笔测试更方便。 相关链接:https://www.linuxmi.com/kali-linux-2020-3.html 6. Parrot OS Parrot OS是另一种面向安全的Debian变体,它打包了一组用于执行渗透测试、数字取证、逆向工程和加密的工具(这里只提几个用例)。它可在MATE和KDE桌面版本以及ova文件-虚拟机文件中使用。当前版本是Parrot 4.10。 Parrot Xfce 版是Parrot安全操作系统的第一个Xfce风格版本,默认配置了最新最好的Xfce 4.14桌面环境,现在ParrotSecurity在其存储库中正式支持该版本。 相关阅读:https://www.linuxmi.com/parrot-4-10.html 7. Devuan 如果你仍然是旧的sysvinit的粉丝,那么Devuan可能会帮你完成这个把戏。Devuan是Debian的一个分支,它被设计得尽可能接近Debian。它的最新版本是基于Debian 10的Beowulf 3.0.0。除了支持32位和64位之外,嵌入式镜像还允许用户在树莓派、树莓派2、树莓派3、Acer Chromebook、Veyron/Rockchip Chromebook, Nokia N900, Odroid XU, 以及一系列使用sunxi处理器的其他设备上进行安装。 Devuan 是使用 SysV init 软件代替 Debian systemd 包的 Debian 分支。依赖于初始化系统 systemd 的服务已经被提供等效功能的其他软件所替代。因为选择初始化系统 systemd 引发的争议,一群不满的开发者创建了不使用 systemd 的 Debian 分支 Devuan。systemd 最受争议的地方是违背了 Unix 哲学,被认为太过于复杂,而 Devuan 提供了多种初始化系统供用户选择,其中包括 SysV init、sinit、openrc、runit、s6 和 shepherd。 8. AV Linux AV Linux也是一个基于Debian的发行版,它的目标是多媒体内容创建者,可以在32位和64位架构中下载。它附带了预装的音频和视频编辑软件,对于内容创建者来说,它是Ubuntu Studio的另一个合适选择。 下载见 :http://www.bandshed.net/avlinux/ 特别提及这绝不是整个列表,而且,我们要承认其他的风格,比如Dog Linux,它是Puppy操作系统的一个很好的替代品,SolydXK 和 BunsenLabs Linux,后者是一个轻量级的发行版。 这样你对这八个发行版有了解了吗?

    时间:2020-10-23 关键词: Linux debian

  • 浅谈Linux在移动嵌入式领域的发展趋势和前景

    浅谈Linux在移动嵌入式领域的发展趋势和前景

    这里主要谈linux的发展现状与趋势,常见的Linux版本以及如何养成良好的Linux操作习惯。 一、Linux在各领域发展的现状与趋势 很多新手都有一个很疑惑的问题:“Linux我听过,但是学习linux系统,能在上面干什么呢,或者说linux系统具体能做什么”,带着这个疑问,在本书的开篇,我们先来了解下Linux与开源软件的关系以及Linux的应用领域和未来的发展趋势。 1.1 Linux与开源软件 Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯•托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。 GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德•斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码, Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。 1.2 Linux在服务器领域的发展 随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力度,Linux服务器产品一定能够冲击更大的服务器市场。 据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。 1.3 Linux在桌面领域的发展 近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。 1.4 Linux在移动嵌入式领域的发展 Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系统,据2015年权威部门最新统计,Android操作系统的全球市场份额已达84.6%。 此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都在逐渐采用定制版本的Linux来实现,而这一切均归功与Linux与开源的力量。 1.5 Linux在云计算/大数据领域的发展 互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。 二、选择适合自己的Linux发行版 谈到Linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,Linux正在变得越来越流行。面对这么多的Linux发行版,打算从其他系统转到Linux系统来的初学者可能会感到困惑,即便是忠实的Linux用户也没有时间和精力去挨个尝试,因此初学者在学习Linux之前,需要有一个明确的方向,选择一个适合自己的Linux系统至关重要。下面我们就分类介绍。 2.1 常见的Linux发行版 1.Red Hat Linux Red Hat Linux是Red Hat最早发行的个人版本的Linux,其1.0版本于1994年11月3日发行。虽然其历史不及其他Linux发行版本悠久,但比起很多的Linux发行套件,Red Hat的历史要悠久得多。自从Red Hat 9.0版本发布后,Red Hat公司就不再开发桌面版的Linux发行套件,Red Hat Linux停止了开发,而将全部力量集中在服务器版的开发上,也就是Red Hat Enterprise Linux版。2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支援,标志着Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行套件则与来自开源社区的Fedora进行合并,成为Fedora Core发行版本。 目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。 2.Fedora Core Fedora Core(缩写为FC)被Red Hat公司定位为新技术的测试平台,许多新的技术都会在FC中检验。如果稳定的话Red Hat公司则会考虑加入到Red Hat Enterprise Linux中。 Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时它的版本更新周期也非常短,仅有6个月。由于版本更新频繁,性能和稳定性得不到保证,因此一般在服务器上不推荐采用Fedora Core。 Fedora对于用户而言,是一套功能完备、更新迅速的免费操作系统,因此,个人领域的应用,例如开发、体验新功能等可选择此发行版本。 3.Red Hat Enterprise Linux Red Hat Enterprise Linux(缩写为RHEL,Red Hat的企业版Linux)。Red Hat现在主要做服务器版的Linux开发,在版本上注重了性能和稳定性,以及对硬件的支持。由于企业版操作系统的开发周期较长,注重性能、稳定性和服务端软件支持,因此版本更新相对较缓慢。 RHEL的版本都是基于Fedora。大约每六个版本的Fedora会有一个新版本的RHEL发布,因此,RHEL大约3年发布一个新版本。其最新版本是2015年3月6日发布的RHEL 7.1。本书就是以此版本展开讲述的。 4.Centos CentOS全名为“社区企业操作系统”(Community Enterprise Operating System)。它是来自于RHEL依照开放源代码规定发布的源代码所编译而成,由于RHEL是商业产品,因此必须将所有Red Hat的Logo标识改成自己的CentOS标识,这就产生了CentOS操作系统,两者的不同在于,CentOS并不包含封闭源代码软件。因此,CentOS不但可以自由使用,而且还能享受CentOS提供的免费长期升级和更新服务。这是CentOS的一个很大优势。 CentOS采取从RHEL的源代码包来构建,它的版本号有两个部分:一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,例如CentOS6.5构建在RHEL6.0更新的第5版。但是从RHEL7.0版本以后,CentOS版本命名格式又稍有变化:主要版本仍然对应于RHEL的主要版本,次要版本以RHEL更新包发布日期为准,例如RHEL7.1对应的CentOS版本为CentOS 7.1.1503,这表示RHEL7.1版本是2015年3月份发布的。 在2014年CentOS宣布与Red Hat合作,但CentOS将会在新的委员会下继续运作,并不受RHEL的影响。这个策略表明CentOS后续发展将有Red Hat作为强有力的支持。 5、SuSE Linux SUSE是德国最著名的Linux发行版,也享有很高的声誉,不过命运相当坎坷;2003年11月4日,Novell公司对外宣布将收购SUSE。2004年1月该收购顺利完成,Novell同时将SUSE正式命名为SUSE Linux。Novell公司收购SUSE,加速了SUSE Linux的发展,将免费SUSE Linux改为openSUSE社区项目,但在2010年,Attachmate公司收购了Novell,在被收购后,SUSE Linux发展受阻,而就在3年后,SUSE再次易主,2014年9月Attachmate公司被上市公司Micro Focus收购,但幸运的是:SUSE官方宣布开源作为SUSE的发展之本,仍将持续贡献开源,SUSE仍将全力投入对openSUSE的支持。 虽然SUSE多次易主,但并不影响它的专业性,据不完全统计,SUSE Linux现在欧洲Linux市场占有将近80%的份额,大部分关键性应用都是建立在SUSE Linux下的。而由于SUSE多次易主,再加上SUSE在中国的营销模式问题,现在SUSE在中国的Linux市场份额并不大,但是这些并不影响SUSE Linux高可靠性与稳定性的事实。随着SUSE的发展,相信SUSE Linux在中国的应用会越来越多。 6、Ubuntu Linux Ubuntu(中文谐音为友帮拓、优般图、乌班图)是一个以桌面应用为主的Linux操作系统,基于Debian GNU/Linux,Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。 7、发行版总结 上面主要介绍了几种最常见的Linux发行版本,其实Linux的发行版本还有很多,比较常见的还有Debian GNU/Linux、Mandriva、Gentoo、Slackware、Knoppix、MEPIS和Xandros,以及国产的红旗Redflag、深度deepin Linux和中标麒麟Linux等,这里不再一一介绍。其实纵观Linux的各个发行版,Linux发行版本无非是朝着这两个方面而来,一是服务器市场,二是桌面市场。 以Ubuntu Linux为代表的Linux发行版走的是桌面市场路线,虽然它们给用户带来很多惊喜,更新也很快,但是由于桌面市场有着Windows这样强劲的对手,因此Linux桌面发展不容乐观,目前Ubuntu Linux也开始向企业级服务器市场发力。 以Red Hat系列版本为代表的Linux发行版现在主要面向企业级Linux的服务器市场,重点开发Linux的企业版本,其他的(例如国产Redflag、中标麒麟Linux等)都重点投入在了Linux服务器市场。Linux两大发布厂商现在都走了Linux服务器市场的路线,可见Linux作为企业级服务器有着巨大的发展前途。据权威部门统计,Linux在服务器市场的占有率每年都在持续上升。 其实很多Linux的应用都是针对Linux服务器的,本书的讲述也是主要针对Linux在服务器下的各种应用展开的。 2.2初学者入门首选——Centos系列 在了解了Linux几个主要发行版本后,我们就找到了为何选择CentOS作为初学者入门学习的理由了。  CentOS现在拥有庞大的网络用户群体,网络Linux资源基本80%都是基于CentOS发行版的,如果在学习过程中遇到任何问题,在网络中可以较容易地搜索到解决方案。  CentOS系列版本可以轻松获得。可以从CentOS官网或者163开源、sohu开源、阿里云开源站下载CentOS各个版本的安装介质,如果是第一次接触Linux,那么建议先安装Fedora Core。Fedora Core的安装简单,对硬件支持很好,界面也很华丽,同时也可以体验Linux的最新功能。如果对Linux有一定的了解,需要深入学习,建议使用CentOS发行版系统。  CentOS应用范围广,具有典型性和代表性,现在基本所有的互联网公司后台服务器都采用CentOS作为操作系统,可以说学会了CentOS,不但能迅速融入企业的工作环境,还能触类旁通,其它类似的Linux发行版也能很快掌握。同时,现在周围学习Linux的用户一般也都是以CentOS为主的,这样交流方便,学习中出现问题,更容易得到解决。最主要的是CentOS的安装和使用上也是最简单的,因此基本上不会在“装系统”上浪费过多时间。 2.3 桌面平台首选——Ubuntu Linux 说到Linux桌面市场,Ubuntu Linux几乎占据了桌面Linux的半壁江山,Ubuntu Linux主打Linux桌面之最,界面美观,简洁而不失华丽,如果想在Linux下进行娱乐休闲,Ubuntu Linux绝对是首选。 Ubuntu的安装非常人性化,只需按照提示一步一步进行。Ubuntu被誉为对硬件支持最好最全面的Linux发行版之一,许多在其他发行版上无法使用的,或者在默认配置时无法使用的硬件,在Ubuntu上都能轻松安装使用。因此用户可以像安装Windows一样轻松地安装Ubuntu,尽情体验Ubuntu Linux带来的乐趣。 2.4 企业级应用首选——RHEL/Centos系列 企业级的应用追求的是可靠性和稳定性,这就要求构建企业级应用的系统平台具有高可靠性和高稳定性。企业级Linux的发行版本就是解决的这个问题。 RHEL与Centos两个Linux发现版本,并没有太大差别,所不同的是RHEL属于商业Linux发行版本,如果要使用RHEL版本,则需要购买商业授权和咨询服务,Red Hat提供系统的技术支持并提供系统的免费升级。目前Red Hat官网已经不再提供可免费下载的光盘介质,如果需要试用,可通过官网下载有试用时间的评估版Linux。而CentOS属于非商业发行版,可以从网上免费下载CentOS各个版本的安装介质,但CentOS并不提供商业支持,当然使用者也不用负上任何商业责任。 那么,到底是选择CentOS还是RHEL呢,这取决于你所在公司是否拥有相应的技术力量,如果是单纯的业务型企业,那么建议选购RHEL发行版并购买相应服务,这样可以节省企业的IT管理费用,并可得到专业的技术支持服务。相反,如果企业技术力量比较强大,并且有多年Linux使用经验的话,那么CentOS发行版将是最好的选择。 三、 养成良好的Linux操作习惯 开始Linux的学习之后,请不要用Windows的工作方式来思考问题,因为它们之间确实有很大的不同,比如它们之间的内存管理机制、进程运行机制等都有很大不同,因此抛开Windows的那种思维,用全新的理念尝试去挖掘Linux身上特有的潜质,对初学者是至关重要的。 3.1 一定要习惯命令行方式 Linux是由命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的。Linux命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。虽然Linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。 因此,可以说命令是学习Linux系统的基础,在很大程度上学习Linux就是学习命令,很多Linux高手其实都是玩儿命令很熟练的人。 也许对于刚刚从Windows系统进入Linux学习的初学者来说,立刻进入枯燥的命令学习实在太难,但是一旦学会就爱不释手。因为它的功能实在太强大了。 3.2 理论结合实践 有很多初学者都会遇到这么一个问题,自己对系统的每个命令都很熟悉,但是在系统出现故障的时候,就无从下手了,甚至不知道在什么时候用什么命令去检查系统,这是很多Linux新手最无奈的事情了。说到底,就是学习的理论知识没有很好地与系统实际操作相结合。 很多Linux知识,例如每个命令的参数含义,在书本上说得很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不那么容易,没有多次的动手练习,其中的技巧是无法完全掌握的。 人类大脑不像计算机的硬盘,除非硬盘坏掉或者硬盘被格式化,否则储存的资料将永远记忆在硬盘中,而且时刻可以调用。而在人类记忆的曲线中,必须要不断地重复练习才会将一件事情记得比较牢。学习Linux也一样,如果无法坚持学习的话,就会学了后面的,忘记了前面的。还有些Linux初学者也学了很多Linux知识,但是由于长期不用,导致学过的东西在很短的时间内又忘记了,久而久之,失去了学习的信心。 可见,要培养自己的实战技能,只有勤于动手,肯于实践,这也是学好Linux的根本。 3.3 学会使用Linux联机帮助 各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者来说往往是不够的,其实当安装了完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现它,或者还没有掌握使用它的技巧。例如,对于tar命令的使用不是很熟悉,那么只要在命令行输入“man tar”,就会得到tar的详细说明和用法。 主流的Linux发行版都自带了非常详细的帮助文档,包括使用说明和FAQ,从系统的安装到系统的维护,再到系统安全,针对不同层次用户的详尽文档。仔细阅读文档后,60%的问题都可在这里得到解决。 3.4 学会独立思考问题,独立解决问题 遇到问题,首先想到的应该是如何自己去解决这个问题,解决方式有很多,比如看书查资料、网络搜索引擎搜索和浏览技术论坛等,通过这几种方式,90%的问题都能得到解决 独立思考并解决问题,不但锻炼了自己独立解决问题的能力,在技术上也能得到快速提高。如果通过以上方式实在解决不了的话,可以向人询问,得到答案后要思考为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。 3.5 学习专业英语 如果想深入学习Linux,一定要尝试去看英文文档。因为,技术性的东西写的最好的,最全面的文档都是英语写的,最先发布的高新技术也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看Readme文档,再看Install文档,然后看FAQ文档,最后才动手安装,这样遇到问题就知道原因了。因此,学习一点专业的英语是很有必要的。

    时间:2020-10-23 关键词: Linux 移动嵌入式

  • Intel第三季度营收净利同比下降29%,遭到AMD强势反击!

    Intel第三季度营收净利同比下降29%,遭到AMD强势反击!

    北京时间10月23日,Intel发布了2020财年第三季度的财报,其中营收为183.33亿美元,与去年同期的191.90亿美元相比下降4%;净利润为42.76亿美元,与去年同期的59.90亿美元相比下降29%。 按照部门划分,Intel客户计算集团第三季度净营收为98.47亿美元,相比之下去年同期为97.09亿美元;运营利润为35.54亿美元,相比之下去年同期为43.05亿美元。其中,平台业务营收为87.62亿美元,相比之下去年同期为83.79亿美元;其他业务营收为10.85亿美元,相比之下去年同期为13.30亿美元。 Intel数据中心集团第三季度营收为59.05亿美元,相比之下去年同期为63.83亿美元,;运营利润为19.03亿美元,相比之下去年同期为31.15亿美元。 此外,Intel第三季度非可变存储解决方案集团营收为11.53亿美元,相比之下去年同期为12.90亿美元,而物联网集团第三季度营收为9.11亿美元,相比之下去年同期为12.34亿美元 Intel预计2020财年第四季度营收约为174亿美元,而2020财年营收约为753亿美元。 对于Intel的这份财报,有行业人士表示,随着AMD狂势追击,这让他们陷入了非常被动的状态,当然对于他们来说,真正的大头还是服务器市场,而这块AMD也是在蓄能准备更大的动作。 这意味着芯片处理器市场不在intel一家独大了,AMD已经追上intel

    时间:2020-10-23 关键词: Intel AMD

  • 浅谈微信 Android 版 7.0.20 内测版支持平板手机同时登录

    浅谈微信 Android 版 7.0.20 内测版支持平板手机同时登录

    今天,在10月21日的计算机大楼里,Androd微信版赞助了内窥镜7.0.20的更新。新版本支持在参数中打开青年模型,在会议仪表板上查找表达式,并添加“不显示”选项。 除此之外,据IT之家网友投稿,新的测试版还支持安卓平板手机同时登录,平板版应用的界面也重新进行了设计。 微信 Android 版 7.0.20 内测版(内部版本:654316560):点此下载 文件 MD5: f41206ab2796ad58bf9654789a78566a 64 位版本(内部版本:654316561):点此下载 文件 MD5: fa59a243b89cfb118443efb30a290f3f IT之家官方微信公众账号 爱科技,爱这里。 “扫一扫”二维码来关注IT之家,或者微信搜索“IT之家”并关注。 移动客户端:点击一个二维编码的图像并在手机上注册,然后选择一个可以扫描的相册。

    时间:2020-10-22 关键词: 手机 平板 微信 android7.0.20

  • 浅谈 Chromium 版 Edge 浏览器 Linux 预览版

    浅谈 Chromium 版 Edge 浏览器 Linux 预览版

    微软今天宣布,它为Linux提供了微软edge的预发布版本,现在所有主要的办公室和平台都可以使用。动机。动机他们使用Ubuntu、Debian、Fedora和openSUSE的版本。现在就可以下载Microsoft edge浏览器了。 IT之家获悉,从下周开始,微软将与其他支持的平台一起发布Edge Dev Channel构建版本。 如何下载Microsoft Edge for Linux预览版? 最简单的方法是直接从Microsoft Edge网站下载并安装.deb或.rpm包。 你也可以通过以下步骤从微软的Linux软件仓库下载并安装Microsoft Edge。 在 Debian/Ubuntu 上安装 要安装Microsoft Edge,你首先需要在终端中运行这些命令,在设备上设置微软的存储库。 完成后,安装Microsoft Edge Dev。 一旦安装了Microsoft Edge,您可以通过运行sudo apt update手动更新,然后sudo apt upgrade(更新所有包),或sudo apt install microsoft-edge-dev(仅更新Microsoft Edge Dev)。 要卸载Microsoft Edge, 在终端运行以下命令: 在Fedora上安装 首先,设置微软的仓库。 接下来,安装Microsoft Edge: 要卸载,运行: 安装在openSUSE上 首先,设置微软的仓库。 接下来,安装Microsoft Edge。 卸载:

    时间:2020-10-22 关键词: edge Linux chromium

  • iPhone 12电池续航比Android手机差

    iPhone 12电池续航比Android手机差

    最近看来iPhone12系列电池的容量比上一代要低,而且支持5g,虽然“智能数据模式”可以根据情况打开,如果用户继续打开5g电池,因为电池是连续的。-它能工作吗? Tom's Guide 针对 iPhone 12、iPhone 12 Pro 在 5G 网络下的续航表现,与其他品牌智能手机进行了对比。 参与比较的其他手机包括 iPhone 11、iPhone 11 Pro、三星 Galaxy S20 5G、Galaxy S20 Plus 5G、OnePlus 8T 5G 和 Google Pixel 5。其中,iPhone 11 系列支持 4G 网络,所以也只能测试它的 4G 作为参照。 测试人员先使这些手机处于充满电的状态,锁定上网使用,将屏幕亮度设为 150,然后连续浏览网页,每 30 秒钟开启一个新页面,直到电池耗尽,观察每一部手机可以持续使用多久。 从结果来看,iPhone 12 的 5G 网络续航时间 8 小时 25 分钟,比 iPhone 11 的 4G 网络下的使用时间减少近 3 小时,而且即便切换到 4G 网络下,iPhone 12 依然比 iPhone 11 的续航时间少了近 1 小时,为 10 小时 23 分钟。 相比之下,iPhone 12 Pro 的表现要好一些,5G 网络下续航时间 9 小时 6 分钟,比 iPhone 11 Pro 的 4G 网络少 1 小时 18 分钟。iPhone 12 Pro 改用 4G 测试后,续航便多了 1 个小时,可使用 11 小时 24 分钟。 不过与另外几款 Android 手机相比,采用 60Hz 屏幕刷新率的状态下,在 5G 网路续航力部分 iPhone 12 与 iPhone 12 Pro 都比 Android 手机差。其中,与 OnePlus 8T 5G 差距最大,One Plus 8T 5G 在这样的状态下,至少比 iPhone 12 多使用 1 小时 30 分钟以上。 - THE END - #电池#续航#iPhone 12 作者:万楠

    时间:2020-10-22 关键词: Android 电池 iphone12

  • iOS 14.2全新壁纸让人耳目一新

    iOS 14.2全新壁纸让人耳目一新

    iOS14.1和iOS14.14今天发布。 在iOS 14.2最新的测试版中,苹果添加了多个Emoji 13的表情符号,其中包括带眼泪的笑脸、忍者、捏手指、解剖的心脏图、黑猫、长毛象、北极熊,渡渡鸟,苍蝇,甜椒,玉米粉蒸肉,泡沫茶,盆栽植物,Piñata,柱塞,魔杖,羽毛,小屋等。 另外,对于那些存在视力障碍的用户,苹果在放大镜应用中新增了“People Detection”,该功能能通过iPhone的相机告知用户和其他人有多远距离,这在疫情期间非常有用。 对于Apple Card用户,iOS 14.2增加了“年度支出历史记录”选项,以便“ Apple Card”持有人可以查看他们在当前日历年中的支出以及每日的收入。在iOS 14.2之前,“ Apple Card”以每周或每月的摘要提供消费活动信息。 除了日常错误修复和性能提升外,iOS 14.2 增加了许多新墙纸,这些墙纸提供真实照片版和艺术绘制版,同时还有浅色和深色两种版本,而这次的壁纸跟之前的风格不太一样,让人耳目一新。 - THE END - 转载请注明出处:快科技 #苹果#iPhone手机#智能手机 编辑:雪花

    时间:2020-10-22 关键词: 手机 壁纸 ios14.2

  • 浅谈OnePlus8T动态壁纸可在任何Android智能手机上使用

    浅谈OnePlus8T动态壁纸可在任何Android智能手机上使用

    10月15日,由oneplus 8t出版的中国新闻发布会举行是电子的测试后函数,XDA@LinoxctDie动态壁纸应用onepulus-8t提取出来的研究小组发现,几乎所有Androder-8.0手机都可以使用该应用程序是的。然而,似乎,漆纸只用于游轮和中型小吃碎布。 OnePlus 8T将配备高通Snapdragon 865+ SoC。在背面,它将具有48MP + MP + 5MP + 2MP四摄像头设置。该智能手机还将使用支持120Hz刷新率和8192级亮度调节的 2.5D柔性直屏。该显示器具有DisplayMate A +认证,其JNCD平均值为0.3。它还使用支持65W超级闪光充电的 4500 mAh电池。据该公司称,它可以在20分钟内充电70%,还配备了双Type-C数据线,兼容45W PD快速充电。 OnePlus 8T新闻发布会将于15日下午2:00在北京举行。这次会议的口号是“视力强大”。此外,OnePlus 8T将于10月14日正式到达中国境外。 除Snapdragon 865旗舰处理器外,该设备还使用高达12GB的RAM。该设备还将与Google最新的Android 11一同提供。这将是业界首款预装的Android 11中文旗舰智能手机。值得注意的是,轻薄的机身是OnePlus 8T的另一个亮点。它的重量仅为188g,厚度为8.4mm。OnePlus创始人兼首席执行官刘作虎表示,该设备应该是今年市场上为数不多的轻薄旗舰产品之一。根据OnePlus的说法,每增加一个新的旗舰产品,它就会减轻手机的重量。 制造商似乎没有与今年的大企业竞争可能是最后一款智能手机使用了过时的imx586传感器。

    时间:2020-10-22 关键词: Android oneplus8t 动态壁纸

  • 安卓小屏手机成本太高

    安卓小屏手机成本太高

    10月21日,电脑公司宣布,苹果公司于10月中旬推出iPhone12系列,其中iPhone12 mini是小屏幕派对的一部分因此,除了短屏幕,大多数用户不会等待三星和索尼的产品。 靠谱的数码博主 @数码闲聊站 今日表示,“目前没有听说国内哪家主流厂商有小屏机要上市”,至于原因么,则归咎为成本和市场的不匹配,导致厂商无法摊平售价和成本。 就目前看来,该博主与华为、小米、荣耀、Redmi、OPPO、vivo、魅族等厂商均有一定的联系渠道,因此该博主消息可信度较高。 IT之家了解到,本月早些时候,@常程 在微博询问用户关于小屏手机的想法和需求,因此部分小米手机用户纷纷推测小米将推出小屏手机。 且 @卢伟冰 也曾暗示 Redmi 考虑推出一款 mini 机型,但续航会牺牲很大。部分用户视其为考察用户接受度而决定是否开发。 电脑公司已经了解到,更小的手机对电池的影响较小,这也是为什么iPhone se 2020、Pixel 4A和索尼等老式紧凑型手机电池容量相对较低的原因这是电话通常使用优化软件来获得更多的更新。

    时间:2020-10-22 关键词: iPhone 安卓 小屏手机

发布文章